The presently disclosed embodiments are directed to the field of data protection for network storage. In particular, the embodiments are directed to private access to media data on network storage using wavefront multiplexing (WFM) technology.
Advances in information, security, communication, and storage technologies have created demands for efficient communication and storage. Mobile computing, hand-held devices, network storage and cloud computing technologies have been developed to meet these demands for high capacity, secure, and fast data transmission, retrieval, and storage.
In addition to the above computing technologies, social media technologies have also been developed at a fast rate to accommodate demands in human communication and interactions. Social media are computer-mediated technologies that facilitate the creation and sharing of information, ideas, career interests and other forms of expression via virtual communities and networks. One of the most important personal information exists in form of media such as images, video, or audio. Facebook, YouTube, Instagram are examples of popular social media that allows sharing images, live streams, or video clips.
Communication of personal media has also been facilitated by advances in mobile computing. Mobile computing is humancomputer interaction by which a computer is expected to be transported during normal usage, which allows for transmission of data, voice and video. Mobile computing involves mobile communication, mobile hardware, and mobile software. The most common forms of mobile computing devices include hand-held devices such as smart phones, personal digital assistants (PDAs), portable computers (e.g., laptops, notebooks), tablets, wearable computers, etc. Due to their usage models, mobile computing requires low weight, low power consumption, and good interactive performance. Therefore, data storage is typically reduced within the mobile devices to satisfy weight, power, and cost constraints. For this reason, storage for mobile devices is typically performed through some form of storage via a network connectivity.
Two types of network storage are currently available: network-attached storage and cloud storage. Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a heterogeneous group of clients. NAS systems are networked appliances which contain one or more storage drives, often arranged into logical, redundant storage containers or redundant array of independent disks (RAIDs). NAS may be implemented as open-source servers or clustered systems. In contrast, cloud storage is a model of data storage in which the digital data is stored in logical pools, the physical storage spans multiple servers (and often locations), and the physical environment is typically owned and managed by a hosting company. Cloud storage is based on highly virtualized infrastructure and has many useful features such as easy accessible interfaces, near-instant elasticity and scalability, multi-tenancy, and metered resources. Cloud storage services can be utilized from an off-premises service, such as Amazon S3, or deployed on-premises such as ViON Capacity Services. A cloud storage system maintains copies of digital data across a unified architecture of servers and data centers. It is designed to back up files, databases and applications to a central location that can easily be accessed via standard network protocols and tools. Besides freeing up local storage space, cloud storage systems can copy data from a primary source to a secure data center or on-premises environment.
A NAS provides a space for the whole local network and usually finds its place in local sites. With the ability to store and share data, most NAS devices can also run as servers for a Web site for example. In contrast, cloud storage is renting up a space from a provider. Depending on the applications, budgets, security options, a user selects a NAS or cloud storage accordingly.
Security on data storage and transport are important concerns on network storage. Viruses, intrusions, malware, and threats have become pervasive at an alarming rate. Threats to network security come in the form of intrusions or attacks by people interested in information theft or destruction. These security attacks cause numerous damages including financial losses, information theft, service interruptions, invasion of privacy, etc.
One disclosed feature of the embodiments is a method and apparatus to generate a document file to be stored on a remote storage. A segmenter segments a media file or a plurality of media files into N media components using a data formatting scheme. A wavefront multiplexing (WFM) processor transforms the N media components to N transformed components on a sample basis or a block basis according to the data formatting scheme. Each of the N transformed components is a linear combination of the N media components. A network interface transmits the N transformed components to a server for storage as a document file on a remote storage via a network connectivity.
Another disclosed feature of the embodiments is a method and apparatus to recover a media file or a plurality of media files from a document file retrieved from a remote storage. A network interface receives a document file including N transformed components from a remote storage via a network connectivity. A wavefront de-multiplexing (WFD) processor transforms the N transformed components to N media components on a sample basis or a block basis according to a data formatting scheme. Each of the N media components is a linear combination of the N transformed components. A de-segmenter de-segments the N media components into a media file or a plurality of media files using the data formatting scheme.
Embodiments may best be understood by referring to the following description and accompanying drawings that are used to illustrate embodiments. In the drawings:
One disclosed feature of the embodiments is a technique to generate a document file to be stored on a remote storage. A segmenter segments a media file or a plurality of media files into N media components using a data formatting scheme. A wavefront multiplexing (WFM) processor transforms the N media components to N transformed components on a sample basis or a block basis according to the data formatting scheme. Each of the N transformed components is a linear combination of the N media components. A network interface transmits the N transformed components to a server for storage as a document file on a remote storage via a network connectivity.
Another disclosed feature of the embodiments is a method and apparatus to recover a media file or a plurality of media files from a document file retrieved from a remote storage. A network interface receives a document file including N transformed components from a remote storage via a network connectivity. A wavefront de-multiplexing (WFD) processor transforms the N transformed components to N media components on a sample basis or a block basis according to a data formatting scheme. Each of the N media components is a linear combination of the N transformed components. A de-segmenter de-segments the N media components into a media file or a plurality of media files using the data formatting scheme.
In the following description, numerous specific details are set forth. However, it is understood that embodiments may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown to avoid obscuring the understanding of this description. One disclosed feature of the embodiments may be described as a process which is usually depicted as a flowchart, a flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed. A process may correspond to a method, a program, a procedure, a method of manufacturing or fabrication, etc. One embodiment may be described by a schematic drawing depicting a physical structure. It is understood that the schematic drawing illustrates the basic concept and may not be scaled or depict the structure in exact proportions.
Wavefront multiplexing/demultiplexing (WF muxing/demuxing) process embodies an architecture that utilizes multi-dimensional waveforms in cloud data storage and transport. Multiple data sets are preprocessed by WF muxing before stored/transported. WF muxed data is aggregated data from multiple data sets that have been “customized processed” and disassembled into any scalable number of sets of processed data, with each set being stored on a storage site. The original data is reassembled via WF demuxing after retrieving a lesser but scalable number of WF muxed data sets. In short, the WF muxed data storage solution enhances data security and data redundancy by, respectively, creating a new dimension to existing security/privacy methods and significantly reducing the storage space needed for data redundancy. In addition, WF muxing/demuxing methods enable a monitoring capability on the integrity of stored data.
Terminologies: K-space is also a well understood term in solid state physics and Imaging processing. The k-space can refer to: (1) Another name for the frequency domain but referring to a spatial rather than temporal frequency; (2) Reciprocal space for the Fourier transform of a spatial function; (3) Momentum space for the vector space of possible values of momentum for a particle; and (4) The k-space in magnetic resonance imaging (MRI), a formalism of k-space widely used in magnetic resonance imaging (MRI). In addition, in MRI physics, k-space is the 2D or 3D Fourier transform of the MR image measured.
The terms K-mux, Kmux, or KMx are used for the Wavefront multiplex; and K-muxing, Kmuxing, or KMxing are used for the wavefront multiplexing. In electromagnetic (EM) theory, the letter K is often used to represent a directional vector and is a wave number in a propagation direction. The term (ωt -K.R) has been used extensively for propagation phase. K represents a directional (moving) surface and R a directional propagation displacement. Therefore, K is a “wavefront” mathematically. K-space will be used as wavefront domain or wavefront space.
One disclosed aspect of the embodiments addresses enhanced privacy, reliability, and survivability of stored data, and data transports on cloud via wavefront multiplexing (WF muxing) or demultiplexing (demuxing) or K-muxing/demuxing methods and techniques. Since stored data on multiple sites is preprocessed on client sides, each of the stored data on network or cloud is a multiplexed (muxed) data set individually which is unintelligible by itself. Therefore, the proposed approaches remove the concerns on integrity confidence of operators, and those on the right of stored data. Camouflaged (image) cloud data storage and transport is one highlight of this application. Embodiments of “writing” and “reading” processes will be presented. “Writing” features a process on multiple original images concurrently via WF muxing transformations, generating WF muxed (image) data to be stored on cloud. A “reading” process corresponds to a WF demuxing transformation on WF muxed (image) data stored on cloud, reconstituting original (image) data sets.
Wavefront multiplexing/de-multiplexing (WF muxing/de-muxing) process features an algorithm for satellite communications where transmissions demand a high degree of power combining, security, reliability, and optimization. WF muxing/demuxing, embodying an architecture that utilizes multi-dimensional transmissions, has found applications in fields beyond the satellite communication domain. One such application is data storage on cloud where privacy, data integrity, and redundancy are important for both data transports and data storage. User devices include fixed desktop personal computers (PC), relocatable notebooks, and portable devices, including smart phones and smart tablets such as iPhone, and iPad.
A method for storing data in network storage (e.g., cloud storage) includes: transforming multiple first data sets into multiple second data sets at a transmitting site, wherein one of said second data sets includes a linear combination or a weighted sum of the first data sets; storing said second data sets in a network storage such as Internet Protocol (IP) cloud via the Internet; and storing multiple links linking to the second data sets at the transmitting site. In accordance with an embodiment, the method may include storing said second data sets at a receiving site via Internet in accordance with the links. Further, the method may include transforming the second data sets into multiple third data sets at a receiving site, wherein one of the third data sets comprises a weighted sum of the second data sets.
One disclosed aspect of the embodiments relates to distributed data storages with built-in redundancy for a single stream data subdivided into M multiple data substreams or M independent data streams, converted into a WF muxed domain (or a K-muxed domain) with M+N output wavefront components (wfcs), these M+N wfc output data being stored into M+N separated data storage sets, where N and M are integers and N>0. We may refer to the M original data streams as original value-data sets or simply value-data sets. As a result, the M+N stored-data sets are wavefront components in forms of linear combinations of the M original value-data sets, which are derivable from the M value-data sets themselves.
From a linear algebra point of view, it is adequate to use M stored-data sets to represent M value-data sets. However, if we use M+N stored-data sets to represent only M value-data sets, then there are opportunities to have N redundant stored-data sets among the total M+N stored-data sets; creating a M for M+N redundancy structure. We only require any M of the M+N stored-data sets to recover embedded M value-data sets, or N redundant stored data sets. In the following, embodiments may be described using M=4 or 8 for illustrative purposes. As is known by one skilled in the art, any integer number may be used as long as the basic properties of the K-muxing or K-de-muxing function, such as the use of orthogonal matrix, is maintained.
The computing device 110 is any computing device including laptop, notebook, mobile devices, and specialized circuits that are capable of performing WF muxing/de-muxing or K muxing/de-muxing. The functionality 140 may be implemented as processing function in a computing element or a specialized circuit. It includes a segmenter 150 and a K-muxing function or device 160.
The media input 130 may be an image, a video clip, an audo clip, a graphic representation, a graphic sequence or animation, or any combination of the above. The media input 130 may belong to user U1. The segmenter segments the media input 130 into three inputs S1, S2, and S3. There are two other users U2 and U3 providing media inputs S4 and S5. The functionality 140 depicts a writing process to store 5 sets of data, S1, S2, S3, S4 and S5, in 8 physically separated data storage sites 171, 172, 173, 174, 175, 176, 177, and 178 connected through the network 120. The writing process features techniques of wavefront multiplexing (WF muxing or a K-muxing) performed by K muxing device 160. The 8-to-8 K-muxing function 160 features 8 inputs and 8 outputs. Three of the 8 inputs are grounded or are not used.
The network 120 may be any suitable network having wired or wireless connectivity. The network 120 may be a local area network (LAN), a wide area network (WAN), an intranet, or the Internet. The network 120 may also be configured for cloud networking which provides access of networking resources from a centralized third-party provider using WAN or Internet-based access technologies. The data storage sites 171, 172, 173, 174, 175, 176, 177, and 178 may include remote or network storages such as NAS storages or cloud storage. Cloud storage may be made up by many distributed resources. It is highly fault-tolerant through redundancy and distribution of data. Cloud storage may be provided by a cloud service such as OneDrive, iCloud, Google Drive, Dropbox and Box. Each of the data storage sites may include a server and a storage device. The storage device may be any suitable devices including hard disks, optical disks, etc.
In a pre-storage processing, the 8-to-8 K muxing device 160 may convert 5 sets of input data S1, S2, S3, S4 and S5, to 8 sets of output data, i.e. D1, D2, D3, D4, D5, D6, D7 and D8, where:
D1=S1+S2+S3+S4+S5 (1-1)
D2=S1−S2+S3−S4+S5 (1-2)
D3=S1+S2−S3−S4+S5 (1-3)
D4=S1−S2−S3+S4+S5 (1-4)
D5=S1+S2+S3+S4−S5 (1-5)
D6=S1−S2+S3−S4−S5 (1-6)
D7=S1+S2−S3−S4−S5 (1-7)
D8=S1−S2−S3+S4−S5 (1-8)
An 8-to-8 Hadamard matrix HM, in which all elements are “1” or “−1” was chosen for the 8-to-8 K-muxing. The 8-to-8 K-muxing may be implemented by other orthogonal matrix such as Fourier transform or any 8×8 full rank matrices with realizable inverse matrices.
The input ports of the K-muxing device 160 are referred to as slices, and its output ports are wavefront components (wfc's). In this example, the five input data sets, S1, S2, S3, S4 and S5 are connected to the input ports, i.e., slice 1, slice 2, slice 3, slice 4 and slice 5, of the K-muxing device 160, respectively. The 8 output data sets D1-D8 are connected to the output ports wfc1 to wfc8, of the K-muxing device 160, respectively.
To create effective redundancy for data storage on cloud, two of the three grounding inputs, say the inputs of the 6th and the 7th slices, may be assigned as weighted sums of “all other 6 inputs” for the Hadamard Matrices and many orthogonal matrices instead of a constant. In this case, the last input slice for the 8-to-8 is grounded or assigned a constant value of zero.
D1=S1+S2+S3+S4+S5+f1+f2+0 (2-1)
D2=S1−S2+S3−S4+S5−f1+f2−0 (2-2)
D3=S1+S2−S3−S4+S5+f1−f2−0 (2-3)
D4=S1−S2−S3+S4+S5−f1−f2+0 (2-4)
D5=S1+S2+S3+S4−S5−f1−f2−0 (2-5)
D6=S1−S2+S3−S4−S5+f1−f2+0 (2-6)
D7=S1+S2−S3−S4−S5−f1+f2+0 (2-7)
D8=S1−S2−S3+S4−S5+f1+f2−0 (2-8)
where f1=S1+2*S2+S3+S4+S5+0 (3)
f2=S1+S2+2*S3+S4−S5+0 (4)
Equations (2-1) to (2-8) may be written in matrix form as
When the K muxing is connected by a unity input data set only, e.g. S4=[1] through the input port of slice 4 and S1=S2=S3=S5=f1=f2=0, the corresponding outputs of the WF muxing device 160 are written as:
D1=S1+S2+S3+S4+S5+f1+f2+0=[1] (9-1)
D2=S1−S2+S3−S4+S5−f1+f2−0=[−1] (9-2)
D3=S1+S2−S3−S4+S5+f1−f2−0=[−1] (9-3)
D4=S1−S2−S3+S4+S5−f1−f2+0=[1] (9-4)
D5=S1+S2+S3+S4−S5−f1−f2−0=[1] (9-5)
D6=S1−S2+S3−S4−S5+f1−f2+0=[−1] (9-6)
D7=S1+S2−S3−S4−S5−f1+f2+0=[−1] (9-7)
D8=S1−S2−S3+S4−S5+f1+f2−0=[1] (9-8)
The 8 output data sets are represented as a column vector or an output column matrix. The elements of the output matrix D, under the condition, become identical to the 8 elements in the 4th column of the HM. In this case, the wavefront vector of the output data sets representing the matrix D is referred to as the 4thwavefront vector (WFV), or WFV4. Similarly, the wavefront vector associated with the kth input port, Slice k, is referred to as kth WFV or WFVk. A WF vector specifies the distribution of a set of input data among the 8-output ports or among 8 aggregated output data sets D1, D2, D3, D4, D5, D6, D7 and D8.
In general, an 8-to-8 WF muxer, such as the K-muxing device 160, features 8 orthogonal WFV's. Let us define a coefficient wjk of a Wavefront (WF) transform, or a K-transform performed by the K-muxing device 160 to be the coefficient at the jth row and kth column of the K-muxing device 160. A WF vector of the K-muxing device 160 featuring a distribution among the 8 outputs D1-D8 at the 8 wavefront component (wfc) ports wfc1-wfc8, is defined as an 8-dimensional vector.
With 8 wfc ports in the 8-to-8 K-muxing 130, there will be 8 mutually orthogonal WFVs. The first 5 WFVs are:
WFV1=[w11, w21, w31, w41, w51, w61, w71, w81]T (10-1)
WFV2=[w12, w22, w32, w42, w52, w62, w72, w82]T (10-2)
WFV3=[w13, w23, w33, w43, w53, w63, w73, w83]T (10-3)
WFV4=[w14, w24, w34, w44, w54, w64, w74, w84]T (10-4)
WFV5=[w15, w25, w35, w45, w55, w65, w75, w85]T (10-5)
S1, S2, S3, S4, and S5 are “attached” to 5 WF vectors by respectively connected to the first five input ports of the K-muxing device 160. Similarly, f1 and f2 are attached to the WFV6 and the WFV7. As a result, there is a remaining WFV, i.e., WFV8, which is not “utilized” in this illustration. All components of the 8 orthogonal WFVs are related to input and output port numbers or (spatial) sequences, but are independent from the input and output data sets.
Each of the 8 outputs D1-D8 of the K-muxing function 160 is a linear combination of the 8 inputs including S1-S5, f1 and f2. The linear combination with 8 inputs features a weighted sum with each input weighted by a corresponding weighting parameter. As a result, each of the 8 outputs D1-D8 contains information associated with all of the 8 inputs including S1-S5, f1 and f2. The data storage sites 171 through 178 may store all the 8 output data sets D1-D8, respectively.
The data arranger 220 operates on an input 212 to generate a sample arranged output 222 or a block arranged output 224. It may leave the input unchanged or re-arrange the input data using certain data formatting pattern. The pattern may be provided by a pre-defined structure or function such as permutation, interleaving. A permutation is a rearrangement of the elements of an ordered list L into a one-to-one correspondence with the ordered list L itself. An interleaving mixes or merges multiple lists in a certain order, for example in alternating order. The input 212 may be represented by a set of lists of pixels. The data steerer 250 steers the arranged output 222/224 into multiple data segments; for example, segments S1, S2, and S3.
For the block basis, similar operations as in the sample basis may be performed except that the operations are performed on a block basis where each block corresponds to a block of pixels. For example, the data arranger 220 arranges the image input 212 into a block arranged output 224. The block arranged output 224 may include rows of blocks A1 A2 A3 . . . B1 B2 B3 . . . where each block represents a block of pixels. The block of pixels may be represented by any known representation. For example, the block may be linearized rowwise. In this scheme, A1 may be represented by a1 a2 b1 b2. The output of the data steerer 250 is a set of data 254 or 264. In the data set 254, the segments S1, S2, and S3 correspond to the rows of the sample arranged output 222, such that S1=A1 A2 A3 . . . D1 D2 D3 . S2=B1 B2 B3 . . . E1 E2 E3, S3=C1 C2 C3 . . . F1 F2 F3 . . . In the data set 262, the segments S1, S2, and S3 correspond to the columns of the arranged output 222: S1=A1 B1 C1 . . . , S2=A2 B2 C2 . . . , S3=A3 B3 C3 . . .
The operations of the data arranger 220 and the data steerer 250 are based on the following criteria: (1) the data arrangement and steering are performed using procedures known by a user at the receiving side who will recover the media input after retrieving the data stored on the network storages; and (2) the data arrangement and steering are performed to convert a single media input or a plurality of media inputs into a suitable number of outputs based on the architecture of the K muxing device 160. In the example in
The multiplier 320 multiplies the Si data from the segmenter 150 with the matrix coefficients stored in the memory 325. The matrix coefficients are the HM coefficients in equation (7). As is known by one skilled in the art, other types of matrix coefficients may be used, as long as they are orthogonal. The adder 330 adds the resulting product with the partial sum previously computed to produce the output Dj. The register 340 stores the partial sum as the partial sum is accumulated to add the individual product terms from the multiplier 320. Initially, the register 340 is cleared to zero. It is reset or cleared to zero again at the beginning of each row. In the example shown in
In a pre-storage processing, the 4-to-4 K muxing device 160 is used to convert 3 sets of input data S1, S2, and S3 to 4 sets of output data D1, D2, D3, and D4, where:
D1=S1+S2+S3 (11-1)
D2=S1−S2+S3 (11-2)
D3=S1+S2−S3 (11-3)
D4=S1−S2−S3 (11-4)
Suppose D1, D2, D3, and D4 are known and S1, S2, S3 are unknown. As seen from the above equations (11-1) to (11-4), there are 4 equations having 3 unknowns. Therefore, one equation is extraneous or redundant. Any equation may be considered as redundant so that only the other three equations may be used to solve for the three unknowns. Regardless of what equation is used as the redundant equation, the solutions for the other three equations always give the same results for the three unknowns.
As a numerical example to illustrate this redundancy feature, suppose the three unknowns S1, S2, and S3 have the values 1, 2, and −1, respectively. The equations (11-1) to (11-3) will give the 4 values for D1, D2, D3, and D4 as 2, −2, 4, and 0, respectively.
Suppose equation (11-3) is considered redundant. Solving the three equations (11-1), (11-2), and (11-4) will give the solutions for S1, S2, and S3 as follows:
Now, suppose equation (11-4) is redundant. Solving the three equations (11-1), (11-2), and (11-3) will give the solutions for S1, S2, and S3 as follows:
In general, a K-muxing function having M inputs and N outputs where N≥M will have N-M redundant outputs. The redundant outputs may be used for data integrity, diagnostic, or any other security purposes.
A 4-to-4 Hadamard matrix HM, in which all elements are “1” or “−1” is chosen for the 4-to-4 K-muxing. As with the 8-to-8 K-muxing, the 4-to-4 K-muxing may be implemented by other orthogonal matrices such as Fourier transfer or any 4×4 full rank matrixes with realizable inverse matrices. Equations (11-1) to (11-4) may be written in a matrix form as
Similarly to
In general, a 4-to-4 WF muxer, such as the K muxing device 160, features 4 orthogonal WFV's. Define a coefficient wjk of a Wavefront (WF) transform, or a K-transform performed by the 4-to-4 K-muxing device 160 to be the coefficient at the ith row and kth column of the K-muxing device 160. A WF vector of the 4-to-4 K-muxing 160 featuring a distribution among the 4 outputs D1, D2, D3, and D4 at the 4 wavefront component (wfc) ports wfc1-wfc4, is defined as a 4-dimensional vector.
With 4 wfc ports in the 4-to-4 K-muxing 160, there shall be 4 mutually orthogonal WFVs. The first 3 WFVs are:
WFV1=[w11, w21, w31, w41]T (16-1)
WFV2=[w12, w22, w32, w42]T (16-2)
WFV3=[w13, w23, w33, w43]T (16-3)
S1, S2, and S3 are “attached” to the 3 WF vectors by respectively connected to the first three input ports of the K-muxing device 160. As a result, there is one remaining WFV, i.e. WFV4, which is not “utilized” in this illustration. All components of the 4 orthogonal WFVs are related to input and output port numbers or (spatial) sequences, but are independent from the input and output data sets.
After the 8-to-8 K-de-muxing 540, the first three data sets S1, S2, and S3 are de-segmented or combined into a large data set media output S(t) 530 by a de-segmentation processor or de-segmenter 550. The recovered data set media output S(t) 530 are substantially equivalent to the data set media input S(t) 130 in
When all 8 storage data sets become available, the 8-to-8 K-demuxing 560 may be efficiently implemented as a matrix inversion of the corresponding matrix for the 8-to-8 K-muxing 160 in
The multiplier 620 multiplies the D1 data retrieved from the network storages 171 through 178 with the matrix coefficients stored in the memory 625. The matrix coefficients are the inverse HM coefficients in equation (7). As is known by one skilled in the art, other types of matrix coefficients may be used, as long as they are orthogonal. The adder 630 adds the resulting product with the partial sum previously computed to produce the output Sj. The register 640 stores the partial sum as the partial sum is accumulated to add the individual product terms from the multiplier 620. Initially, the register 640 is cleared to zero. It is reset or cleared to zero again at the beginning of each row. In the example shown in
The de-segmenter 550 may operate on a sample basis or a block basis according to the basis used by the pre-processing shown in
The functionality 810 depicts a functional structure in the mobile device 805 of K-muxing a data file for storage over distributed network storages such as cloud storage without redundancy. The mobile device 805 may be a smart phone, or any other mobile device having some computational and communication capability. The functionality 810 includes an image sensor 820, an album 830, a display 840, a set of local buffers and files 850, a network interface 860, a pre-processing functionality 880, and a set 890 of files.
The image sensor 820 senses or captures real-time images or video as the media input 801 under the control of a sensor application 825. The captured image or video clip is stored in the local album 830 under the control of an album application 835. The display 840 displays the captured image or video clip as the media input 801. The local buffers or files 850 store individual files corresponding to various applications such as local file synchronization management of cloud storage such as Dropbox, Google drive, iCloud, OneDrive, and others. The network interface 860 provides network connectivity and other interfacing functions to the network 120 under the control of a network application 855. The network interface 860 provides wired or wireless connectivity to the network 120. Any other interfaces may be used including universal serial bus (USB) to local storages. The local buffers or files 850 may also interface directly to the network interface 860 to send the image, video clip, or files to the network 120.
An application program interface (API) 870 provides overall interface to all the individual applications 825, 835, 845, 855, and the display 840. The API 870 also provides interface to the pre-processing functionality 880. The API 870 may include a set of routines, protocols, and tools for building software applications. It may specify how software components should interact and provide graphical user interface (GUI) components. The API 870 makes it easier to develop a program by providing all the building blocks which may be used to tailor to a particular application.
The pre-processing functionality 880 is similar to the functionality 140 in
The functionality 910 includes a functional structure in a mobile device for recovering stored pictures or video clips by K-demuxing a set of muxed media files stored, without redundancy, over network storages such as distributed cloud storage. The functionality 910 is similar to the functionality 810 in
The post-processing functionality 980 is similar to the post-processing functionality 540 in
In essence, the system 1000 is the combination of the system 800 and the system 900. Since it uses the same components as in the systems 800 and 900, the description of the system 1000 is not repeated here. It should also be noted that the mobile devices 805 and 905 may be different devices or the same device.
The pre-processing functionality 880 includes the segmenting function 150 and the K-muxing 160 which are similar to the same components in
The segmenting function 150 and the K-muxing function 160 are similar to the same components in
The mobile device 805 in
Furthermore, it is notice that there are 24 connectivity combinations between 4 input ports and 4 input signals. For any 4-to-4 K-muxing processor with same set of the 4 input signals, every one of the 24 combinations will result to a unique set of Esi; where i=1, 2, 3, and 4. Without the information in a K-demuxing operation, it will be difficult to reconstruct the original data set S(t) even we have retrieved from the network storages all 4 stored K-muxed data sets (Esi; where i=1, 2, 3, and 4). The connectivity and other configuration information as well as configuration combinations shall be one of the important items in a registry for configuration management. Other configurations may include between 4 outputs of a K-muxing and accessible multiple storages on cloud including those on private cloud and other private local storages connected by IP networks.
The segmenter 150 in the computing device 110 may segment the three media files according to a pre-determined data formatting scheme or patter. This data formatting scheme or pattern is also known by the receiver side via the mobile device 905. The mobile device 905 may recover one of the media file or all three media files. It may store the recovered media files in appropriate local buffers 850 (in
The data format scheme using a sample basis or a block basis may be used in the system 1700. In the following, the data formatting scheme is further described.
Suppose S1, S2, and S3 are three 2-D photos; each featuring 1200×1800 pixels. The 3 complex input pixels to the K-Muxing 160 are formulated pixel-by-pixel in three pixel streams. The K-muxing 160 transforms these pictures pixel-by pixel or sample-by-sample. In a first scenario where processing samples is chosen to be photo pixels featuring 8-bit numbers. A stream of pixels for a picture with 1200×1800 pixels comprises 1800 lines and each line further comprising 1200 pixels each with an 8-bit byte. There are 1200 bytes per line at the 3 inputs. For a first pixel line, we shall perform 1200 transforms in series of K-muxing 160 from 3 input photos; generating 4 first lines on 4 different output files. Each of the 3 first input lines features 1200 8-bit samples while each of the 4 output first line 1201 8-bit samples. The extra sample is due to overflow from cascaded arithmetic operations. As a result, the 3 photos with 1200×1800 pixels each are transformed into 4 individual sets of 1201×1800 pixels by the K-muxing 160. There are 2,160,000 times K-muxing operations in converting the 3 pictures into a first group of 4 K-muxed data sets.
In similar scenarios, processing samples may be chosen to be different from photo pixels. We may use multiple (M) pixels as a processing sample where M is an integer and M>1. Suppose a pixel intensity of a photo under these scenarios is indicated by an 8-bit byte for a dynamic range of ˜48 dB. More specifically, a 2-D photo format of 1200×1800 pixels in a pixel-by-pixel stream can be converted to 2-D 600×900 samples in a sample-by-sample stream. A “sample” in the chosen format comprising an assembly of (2×2) pixels feature a 4-byte numerical number. Each input picture shall feature 900 lines and 600 samples per line at the 3 inputs. For a first “sample” line, we shall perform 600 transforms in series of K-muxing 130 from 3 input photos; generating 4 first lines on 4 different output files. Each of the 3 first input lines features 600 4-bit samples while each of the 4 output first line 601 4-byte samples. The extra sample is due to overflow from cascaded arithmetic operations. As a result, the 3 photos with 1200×1800 pixels each are converted into 600×900 samples first, and then transformed into 4 individual sets of 601×900 samples by the K-muxing 130. There are 540,000 times K-muxing operations in converting the 3 pictures into a second group of 4 K-muxed data sets.
In general, the first and the second groups of the K-muxed data sets shall be different even both originated from the same sets of original pictures, [S1, S2, and S3], and transform of the K-muxing 160 performs the same functions. This is mainly due to differences the numerical formats of chosen processing samples.
In a different embodiment using a block basis, refer to
A block-to-block transform comprises multiple sample-to sample transforms in sequence to minimize numbers of required overflow/underflow bytes or “overflow pixels” in the numerical operations in the transforms in outputs. These are a part of data size overhead in the K-muxing 160 operations. In this example, we use two types of blocks for this operation; A-blocks with 23 pixels each, and B-blocks with 47 pixels each. In a block-by-block operation, the types of blocks among the three inputs must be identical concurrently.
In other operation with the same inputs we may choose more than two types of block transforms, as long as they are parts of the agreed processing data formats known to the user community a priori. A source and corresponding destinations use a same and agreed “block sequence” or data format scheme in performing the K-muxing and the corresponding K-demuxing transforms.
Alternatively, the 23 pixel block in a pixel-by-pixel stream, say S1(t), are segmented into three samples, each with contiguous pixels; as follows; first 12 pixels are assigned as [a1, a2, a3, a4, a5, a6, a7, a8, b1, b2, b3, b4], while second 11 pixels are assigned as [b5, b6, b7, b8, c1, c2, c3, c4, c5, c6, c7].
In a 2nd alternative, each of the 23 pixel blocks for 3 consecutive 3-to-4 K-muxing 160 transforms will be assigned differently among the three inputs S1(t), S2(t), and S3(t) as followed; S1(t) in the three consecutive transforms featuring [7, 8, 8] pixels, S2(t) in [8, 7, 8] pixels, and S3(t) with [8, 8, 7] pixels. The 4 outputs shall feature 4 concurrent blocks each with 24 pixels.
Accordingly, the associated K-demuxing 560 use identical data formatting scheme for selected processing samples as those in the transforms of corresponding K-muxing 160.
The 3 original media inputs, S1, S2, and S3 are 3 independent short video clips 1722, 1724, and 1726. The data recording or writing process is identical to that in
There are three reading users using the mobile devices 905, 1805, and 1815. Each of the three mobile devices retrieves designated media files. For example, the mobile device 905 retrieves the media files 890 corresponding to the media file S3(t) 1726, the mobile device 1805 retrieves the media files 890 corresponding to the media file S1(t) 1722, and the mobile device 1815 retrieves the media files 890 corresponding to the media file S3(t) 1726.
K-Muxing via Erasure Code:
K-muxing of data storage techniques feature enhanced privacy and survivability via redundancy for stored data. For many applications with large data storage, data survivability is a key important criteria while data privacy is not as critical. Assume that a stored data set with a total of N files having N-P primary files and P redundant files or parity files. In these applications, the original inputs to a K-muxing transform will be used as primary files in a stored data set and corresponding outputs from the K-muxing may be selected as redundant files or parity files of the stored data set. As an example, a large data file S is segmented into 8 segments S1 to S8, which are connected to an 8-to-8 K-muxing transformation with 8 outputs Y1 to Y8. The segmented data files S1 to S8 will be used as primary files in a storage data set, while redundant or parity files of the stored data set may be selected from the 8 outputs Y1 to Y8. The 8-to-8 K-muxing provides 8 additional parity files, in which we may choose 2 only for some applications supporting a 1.25× total storage constraint but with limited survivability protection. For other applications with enhanced survivability which need a 2× storage, we may take all 8 outputs as a set of parity files.
Erasure coding (EC) is a method of data protection in which data is broken into fragments, expanded and encoded with redundant data pieces and stored across a set of different locations or storage media. In general, most of K-muxing transforms are linear processing while most of erasure coding (EC) are not. However, when keeping |X|=1 in EC polynomials, the selected EC process can be made to function as linear processing. The unique features in the overlapped domain of K-muxing and EC are explored in the following.
Redundant array of independent disks (RAID) uses checksums or mirroring to protect data, and spreads the data and checksums across a group of disks. Using available terabyte disk drives, it is common to manage data sets on a single, consistent logical RAID volume of 4-12 drives with a total usable capacity of about 30 terabytes. RAID slices data into a fixed number of data blocks and checksums, and writes each chunk or checksum onto an independent disk in the volume. However, higher capacity disks used to build these large RAID volumes for digital libraries with high-resolution content also dramatically lengthen the rebuild time when failures occur. In addition, dual and triple parity RAID can mitigate the risk of data corruption, but adding additional parity checks is costly and reduces RAID performance, so it is less and less attractive as the storage scales. Furthermore, without replication, RAID offers limited protection against node-level failures, and no protection against site-level disasters. But it is expensive. It doubles the amount of storage required, requires expensive high-bandwidth networking between the sites, and introduces new operational complexities to ensure the replication is performing properly or to keep both sites accurately synchronized.
On the other hand, erasure code algorithms were developed decades ago to ensure transmission integrity of streaming data for space communications. In information theory, an erasure code is a forward error correction (FEC) code for the binary erasure channel, which transforms a message of k symbols into a longer message (code word) with n symbols such that the original message can be recovered from a subset of the n symbols. The fraction r=k/n is called the code rate, the fraction k′/k, where k′ denotes the number of symbols required for recovery, is called reception efficiency.
Optimal erasure codes have the property that any k out of the n code word symbols are sufficient to recover the original message (i.e., they have optimal reception efficiency). Optimal erasure codes are maximum distance separable (MDS) codes. Optimal codes are often costly On terms of memory usage, CPU time, or both) when n is large. Except for very simple schemes, practical solutions usually have quadratic encoding and decoding complexity.
Erasure coding transforms data objects into a series of codes. Each code contains the equivalent of both data and checksum redundancy. The codes are then dispersed across a large pool of storage devices, which can be independent disks, independent network-attached storage nodes, or any other storage medium. While each of the codes is unique, a random subset of the codes can be used to retrieve the data. The erasure code algorithms that spread the data to protect it also make upgrading to new storage technologies simpler. When drives fail, the object storage redistributes the protection codes without having to replace disks and without degrading user performance. Administrators are now free to schedule drive replacement at their convenience, and are free to upgrade to larger disk sizes. Unlike RAID, codes can be spread across racks or geographically dispersed sites without replication, allowing erasure coding to protect from disk, node, rack, or even site failures all on the same scalable system. The algorithms can also apply different durability policies within the same object storage so that critical data can be given greater data protection without segregating it at the hardware level.
ReedSolomon (RS) codes are an important group of error-correcting codes. They have many important applications, the most prominent of which include consumer technologies such as CDs, DVDs, Blu-ray Discs, QR Codes, data transmission technologies such as DSL and WiMAX, broadcast systems such as DVB and ATSC, and storage systems such as RAID 6. They are also used in satellite communication. In coding theory, the ReedSolomon code belongs to the class of non-binary cyclic error-correcting codes. The ReedSolomon code is based on univariate polynomials over finite fields. It is able to detect and correct multiple symbol errors. By adding t check symbols to the data, a ReedSolomon code can detect any combination of up to t erroneous symbols, or correct up to [t/2] symbols. As an erasure code, it can correct up to t known erasures, or it can detect and correct combinations of errors and erasures. Furthermore, ReedSolomon codes are suitable as multiple-burst bit-error correcting codes, since a sequence of b+1 consecutive bit errors can affect at most two symbols of size b. The choice oft is up to the designer of the code, and may be selected within wide limits.
In large-data storage RS codes as optimum erasure codes have been used for better survivability via redundancy.
Y(X)=A0+A1X+A2X2+A3X3 (17)
where [A0] are inputs for pixels of S0 which are converted as a pixel stream S0(t), [A1] are inputs for pixels of S1 which are converted as a pixel stream S1(t), [A2] are inputs for pixels of S2 which are converted as a pixel stream S2(t), [A3] are inputs for pixels of S3 which are converted as a pixel stream S3(t), [A0, A1, A2, A3] are the 4 inputs 1920 of a K-muxing 1910.
In fact, over the finite field of selected X variables [X1, X2, X3, X4], X4 always equals to 1. Thus Equation (17) can be re-written as
Y(X)=A1X+A2X2+A3X3+A4X4 (18)
and A4=A0.
In addition, each of the four pictures with pixels in real number is segmented into two groups, S1=[S11, S12], S2=[S21, S22], S3=[S31, S32], S0=[S01, S02]. As an example, when S1 is a picture with 8 M-pixels; then each of S11 and S12 features 4 M pixels. A first input to the RS polynomial 128, [A1], mathematically features a stream of complex number with intensity of a pixel in S11 as the real part and intensity of a corresponding pixel in S12 as the imaginary part; or the nth sample of the A1 stream is represented as A1(n)=S11(n)+j S12(n); or simply
A
1
=S11+j S12 (19-1).
Similarly, A2=S21+j S22 (19-2)
A
3
=S31+j S32 (19-3)
A
0
=S01+j S02 (19-4)
Furthermore, we extend a finite field for the polynomial of variable X over a unity circle in a complex plane. X varies among the 4 points of a unity circle over a complex plane, and X1=1+j 0, X2=0+j 1, X3=−1+j 0, X4=0−j 1. Thus the outputs of the polynomial 1925 at the 4 different Xs (X=X1, X=X2, X=X3, and X=X4) are written as
Y(X1)=Y(1)=A0+A1+A2+A3 (20-1)
Y(X2)=Y(j)=A0+jA1−A2−jA3 (20-2)
Y(X3)=Y(1)=A0−A1+A2−A3 (20-3)
Y(X4)=Y(j)=A0−jA1−A2+jA3 (20-4).
Using the terminologies of wavefront multiplexing (WF muxing) for the K-muxing 1910, the 4 data streams A0, A1, A2, A3 of the 4 inputs 1920 are, respectively, distributed over the 4 selected output files 1930 with different sets of weighting components. Each distributed set over the four outputs 1930 corresponds to one of the 4 inputs 1920 is referred as a wavefront characterized by a wavefront vector (WFV). The 4 WFVs are WFV0 for input data stream A0, WFV1 for data stream A1, WFV2 for data stream A2, WFV3 for data stream A3, where
WFV0=[1, 1, 1, 1]T, (21-1)
WFV1=[1, j, 1, −j]T, (21-2)
WFV2=[1, −1,1, −1]T, (21-3)
WFV3=[1, −j, 1, j]T, (21-4)
It is noted that equations (20-1), (20-2), (20-3), and (20-4) are formulations for a 4-to-4 FFT. When the polynomial 1925 becomes a mechanism generating 4-point FFT between the domain of [A's] to the domain of [Y's] when the 4 sampling points of X in a complex plane (or a I-Q plane) are chosen to be at X=Xi where i=1 to 4; and X1=1+j 0, X2=0+j 1, X3=−1+j 0, and X4=0−j 1.
The four outputs 1930 feature 4 sample streams of complex number or 8 real sample streams;
Y(1)=Y1r+j Y1q (22-1)
Y(j)=Y2r+j Y2q (22-2)
Y(1)=Y3r+j Y3q (22-3)
Y(−j)=Y4r+j Y4q (22-4)
and
Y1r=S01+S11+S21+S31 (23-1)
Y1q=S02+S12+S22+S32 (23-2)
Y2r=S01−S12−S21+S32 (23-3)
Y2q=S02+S11−S22−S31 (23-4)
Y3r=S01−S11+S21−S31 (23-5)
Y3q=S02−S12+S22−S32 (23-6)
Y4r=S01+S12−S21−S32 (23-7)
Y4q=S02+S11−S22−S31 (23-8)
Equations (22-1) to (22-4) and equations (23-1) to (23-8) can be written in form of a matrix as that in equation (24).
In reconstructing S0 to S3, there are 8 unknowns (S01 to S32) with 8 equations relating 8 Y's (stored data files) and 8 S's (segmented substreams from an original information data). There is no redundancy in
It is noted that each output in the equations is a linear combination of 4 of the 8 S's only. More specifically as indicated in
In many other embodiments, the 8 segmented inputs (S01 to S32) will be used as storage data sets, and the 8 outputs (Y1r to Y4q) as redundancy or as parity files. The 8 inputs 1920 may be data sub-files segmented from a single large file, 8 independent files, combinations of multiple (N) sub-files from a first large file and multiple (8-N) sub-files from a second large file, or combinations of multiple (N) sub-files from a third large file and multiple (8-N) other independent files. The process of utilizing the polynomial 1925 in
In short, the K-muxing 1910 features 4 inputs 1920 and 4 outputs 1930. These inputs and outputs are complex data streams, each of which can be re-written as two real pixel substreams. Therefore, the K-muxing 1910 effectively performs a transformation with 8-real inputs and 8-real outputs.
Under these conditions, equations (23-1) to (23-8) become
Y1r=S11+S21+S31 (25-1)
Y1q=S12+S22+S32 (25-2)
Y2r=−S12−S21+S32 (25-3)
Y2q=S11−S22−S31 (25-4)
Y3r=−S11+S21−S31 (25-5)
Y3q=−S12+S22−S32 (25-6)
Y4r=S12−S21−S32 (25-7)
Y4q=S11−S22−S31 (25-8)
There are total 6 inputs (segmented inputs from 3 pictures) but with 8 outputs via 8 equations. It is certain that the 8 outputs are not independent. There may be as many as 2 redundant equations for operation using input formats in sample-by-sample in the pixel streams. In reconstructing S1 to S3, there are 6 unknown (S11 to S32) with 8 equations relating 8 Y's (stored data files) and 6 S's (segmented substreams from 3 original photo data). There are two redundancy in
Under these conditions, equations (23-1) to (23-8) become:
Y1r=C0+S11+S21+S31 (26-1)
Y1q=0+S12+S22+S32 (26-2)
Y2r=C0−S12−S21+S32 (26-3)
Y2q=0+S11−S22−S31 (26-4)
Y3r=C0−S11+S21−S31 (26-5)
Y3q=0−S12+S22−S32 (26-6)
Y4r=C0+S12−S21−S32 (26-7)
Y4q=0+S11−S22−S31 (26-8)
There are total 7 inputs (segmented inputs from 3 pictures) but with 8 outputs via 8 equations. It is certain that the 8 outputs are not independent. There may be a redundant equation for operation using input formats in sample-by-sample in the pixel streams. In reconstructing S1 to S3 to a user community where C0 is known to them, there are 6 unknowns (S11 to S32) with 8 equations relating 8 Y's (stored data files) and 6 S's (segmented substreams from 3 original photo data). There are two redundancy in
On the other hand, in reconstructing S1 to S3 to a user community where C0 is not known to them, there are 7 unknowns (C0 and S11 to S32) with 8 equations relating 8 Y's (stored data files) and C0 as well as 6 S's (segmented substreams from 3 original photo data). There is one redundancy in
In some scenarios where only 6 of the stored Ys are available in reconstructing S1 to S3 to a user community where C0 is known to them, there are 6 unknowns (S11 to S32) with 6 equations relating 6 available Y's (stored data files) to 6 S's (segmented substreams from 3 original photo data). The 6 S's can then be reconstructed.
For applications where privacy is not critical in a stored data set, we may use all the input files, the 6 S's (segmented substreams from an original information data), as the primary storage files while the redundancy or parity files may be selected from the 8 Y's.
Under these conditions, equations (23-1) to (23-8) become:
Y1r=S0+S1+S2+S3 (27-1)
Y1q=0+0+0+0=0 (27-2)
Y2r=S0−0−S2+0 (27-3)
Y2q=0+S1−0−S3 (27-4)
Y3r=S0−S1+S2−S3 (27-5)
Y3q=0−0+0−0=0 (27-6)
Y4r=S0+0−S2−0 (27-7)
Y4q=0+S1−0−S3 (27-8)
There are total 4 inputs (real number inputs from 4 pictures) but with 8 outputs via 8 equations. Two of them, (27-2) and (27-6) are zeros, and another two pairs [(27-3), (27-4)] and [(27-7), (27-8)] are identical. As a result, the remaining are 4 independent outputs. In reconstructing S1, S2, S3 and S0 to a user community where S0 is used as a file for diagnostic, authentications, or/and identification key and known to them, there are 3 unknowns (S1 to S3) with 4 equations relating 4 Y's (stored data files) and 3 S's (streams from 3 original photo data). There is a redundancy in
On the other hand, in reconstructing S1 to S3 to a user community where S0 is not known to them, there are 4 unknowns (S0 and S1 to S3) with 4 equations relating 4 Y's (stored data files) to S0 as well as 3 S's (streams from 3 original photo data). There is no redundancy in
In some scenarios where only 3 of the 4 stored Ys are available in reconstructing S1 to S3 to a user community where S0 is known to them, there are 3 unknowns (S1 to S3) with 3 equations relating 3 available Y's (stored data files) to 3 S's (streams from 3 original photo data). The 3 S's can then be reconstructed.
For applications where privacy is not critical in a stored data set, we may use all the input files, the 4 S's (streams from an original information data), as the primary storage files while the redundancy or parity files may be selected from the 4 Y's.
FFT, Butler Matrix and Array Radiation Patterns:
The polynomial 1925 in
For an array forming multiple beams, the corresponding geometries are shown in
The BFN 2410 is programmed or configured to generated four orthogonal wavefronts WFV0, WFV1, WFV2, and WFV3; where
WFV0=[1, 1, 1, 1]T, (21-1)
WFV1=[1, j, 1, −j]T, (21-2)
WFV2=[1, −1, 1, −1]T, (21-3)
WFV3=[1, −j, 1, j]T, (21-4)
and
¼WFVi,T×WFCj*=0 when i≠j (28-1)
¼WFVi,T×WFVj*=1 when i=j (28-2)
Their relative phases are tabulated in Table 2. Y(1) is riding the first wavefront WFV0 corresponding to a beam with a beam peak at the boresight or θ=0° indicated by the arrow direction of Y(1). We refer the direction of the beam peak as the pointing direction. The 2nd beam and the 4th beam generated by the BFN 2410 for the Y(j) and Y(−j) streams, respectively, feature a beam pointing direction at θ=30 degrees and θ=−30 degrees. The 3rd beam generated by the BFN 2410 for the Y(−1) stream features two beam pointing directions at θ=90 degrees and θ=−90 degrees. In fact, the peak at θ=−90 degrees is a grating lobe of the main beam at θ=90 degrees.
The simulated results array gain vs azimuthal angle θ for the four radiation patterns are depicted in
Furthermore, the four beams feature unique orthogonal beam (OB) radiation patterns. Among the 4 OB beams, a peak of one beam is always at a direction which is aligned exactly with nulls of radiation patterns of other 3 OB beams. An OB beam features a radiation pattern with nulls in the directions always aligned with the peaks of other 3 OB beams. As an example, the OB beam for Y(1) or Beam 1 features a peak at θ=0° which is also in the direction of a null of all 3 other beams, Beam 2 for Y(j), Beam 3 for Y(−1), and Beam 4 for Y(−j).
For the data storage applications, data at the outputs of the BFN 2410, which are wavefront multiplexed or K-muxed, is stored over distributed storage. Data retrievals are via “propagation via space” performing wavefront demultiplexing or K-demuxing. The propagation via space will be in forms of software emulations.
For antenna engineers, it is common to refer the pointing directions in a UV coordinates. For a one-dimension scan linear array, various pointing directions may be shown in different values of u; where u=sin θ. When θ is set to [−90°, −30°, 0°, 30°, 90°], the corresponding u shall become [−1, ¼, 0, ½, 1]. The difference in the “u” coordinate for the beam pointing directions between adjacent scanned beams generated by the array with the BFN 2410, or Δu, is ½. Since the element spacing among the 4 elements 2420 of the array is set at a half wavelength, the grating lobes will appear at directions with Δu=2. The grating lobes for beams pointed at various direction, their respective grating lobes are in imaginary space. Only beams pointed near end-fired directions θ=±90° as Beam 3 in
For an array forming multiple beams via Butler Matrixes, the corresponding geometries are shown in
The four beams feature OB radiation patterns; and 4 peaks at ±14.48°, and ±48.59°. The corresponding u shall become [¾, −¼, ¼, ¾]. The spacing in u between the pointing directions of two adjacent beams or Δu, is also ½; identical to that among the 4 OB radiation patterns from the configuration in
The Butler matrices are linear devices. Therefore, superposition principle is applicable for both the homogeneity and additivity properties.
The 4 inputs 2812 can be connected to 4 independent data flows. A first input stream connected to the 1R port will appear in all 4 output ports [A, B, C, D] featuring a unique phase progression with a phase difference Δφ of −45° or −π/4 among adjacent ports. The unique phase progression is referred to a wavefront; mathematically expressed in similar forms of equations (21-1) to (21-4). Similarly, a second input stream connected to the 2R port will appear in all 4 output ports [A, B, C, D] featuring a unique phase progression with a phase difference Δφ of −135° or −π/4 among adjacent ports. A third input stream connected to the 2L port will appear in all 4 output ports [A, B, C, D] featuring a unique phase progression with a phase difference Δφ of 135° or π/4 among adjacent ports. A fourth input stream connected to the 1L port will appear in all 4 output ports [A, B, C, D] featuring a unique phase progression with a phase difference Δφ of 45° or π/4 among adjacent ports. The phase distributions of the outputs 2814 according to ports of the inputs 2812 are summarized in Table 3. Each input port of the 4 inputs 2812 is associated with a unique wavefront. There are 4 wavefronts generated by the 4-to-4 Butler matrix, and they are orthogonal to one another.
When we add a section of phase biasing 2922 to 2928 in front the 4 inputs 2812 of the 4-to-4 Butler matrix 2810 as shown in
The pointing directions in
In many other embodiments, the EC polynomial can be programmed to functions as other K-muxing transforms.
Z(X, Y)=A0+A1X+A2Y+A3XY (29)
or
Z
1
=Z(1, 1)=A0+A1+A2+A3 (30-1)
Z
2
=Z(−1, 1)=A0−A1+A2−A3 (30-2)
Z
3
=Z(−1, −1)=A0−A1−A2+A3 (30-3)
Z
4
=Z(1, −1)=A0+A1−A2−A3 (30-4)
These equations between the 4 inputs [As] and the 4 outputs [Z] can be written in a matrix form;
It is clear that the EC polynomial 1925 can be programmed to functions as a Hadamard transform for K-muxing 1910.
Y(X)=A0+A1X+A2X2+A3X3 (17)
where the complex input [A0] comprising inputs for digital data of S013181 and S023182 which are converted as a stream S01+j S02, the complex input [A1] comprising inputs for digital data of S113151 and S123152 which are converted as a stream S11+j S12, the complex input [A2] comprising inputs for digital data of S213161 and S223162 which are converted as a stream S21+j S22, the complex input [A3] comprising inputs for digital data of S313171 and S323172 which are converted as a stream S31+j 532,[A0, A1, A2, A3] are the 4 inputs 1920 of a K-muxing 1910.
We will program the polynomial 1925 to function as 4-to-4 FFT. Corresponding 4 complex outputs 1930 of the K-muxing 1910 comprise the following 8 aggregated real number data flows;
Y1r=S01+S11+S21+S31 (23-1)
Y1q=S02+S12+S22+S32 (23-2)
Y2r=S01−S12−S21+S32 (23-3)
Y2q=S02+S11−S22−S31 (23-4)
Y3r=S01−S11+S21−S31 (23-5)
Y3q=S02−S12+S22−S32 (23-6)
Y4r=S01+S12−S21−S32 (23-7)
Y4q=S02+S11−S22−S31 (23-8)
Assuming any one of the 8 real inputs is unavailable, we only need 4 stored files for local repairs.
The system 3200 includes a central processing unit (CPU) or a processor 3210, a cache 3215, a platform controller hub (PCH) 3220, and a bus 3225. The PCH 3220 may include an input/output (I/0) controller 3230, a memory controller 3240, a graphic display controller (GDC) 3250, and a mass storage controller 3260. The system 3200 may include more or less than the above components. For mobile devices, the system 3200 includes only the basic elements and may not include bulky devices such as hard drive, etc. In addition, a component may be integrated into another component. As shown in
The CPU or processor 3210 is a programmable device that may execute a program or a collection of instructions to carry out a task. It may be a general-purpose processor, a digital signal processor, a microcontroller, or a specially designed processor such as one design from Applications Specific Integrated Circuit (ASIC). It may include a single core or multiple cores. Each core may have multi-way multi-threading. The CPU 3210 may have simultaneous multithreading feature to further exploit the parallelism due to multiple threads across the multiple cores. In addition, the CPU 3210 may have internal caches at multiple levels.
The cache 3215 is a first level (L1) external cache memory. It is typically implemented by fast static random access memory (RAM). Other cache levels may appear externally, such as the cache 3246. Some or all cache levels (L1, L2, and L3) may all be integrated inside the CPU 3210.
The bus 3225 may be any suitable bus connecting the CPU 3210 to other devices, including the PCH 3220. For example, the bus 3225 may be a Direct Media Interface (DMI).
The PCH 3220 in a highly integrated chipset that includes many functionalities to provide interface to several devices such as memory devices, input/output devices, storage devices, network devices, etc.
The I/O controller 3230 controls input devices (e.g., stylus, keyboard, and mouse, microphone, image sensor) and output devices (e.g., audio devices, speaker, scanner, printer). It also has interface to a network interface card 3270 which provides interface to a network 3274 and wireless controller 3272. The network 3274 may represent the network 120 shown in
The memory controller 3240 controls memory devices such as the random access memory (RAM) 3242, the read-only memory (ROM) 3244, the cache memory 3246, and the flash memory 3248. The RAM 3242 may store instructions or programs, loaded from a mass storage device, that, when executed by the CPU 3210, cause the CPU 3210 to perform operations as described above, such as WFM (K-muxing) or WFD (K-de-muxing) operations. It may also store data used in the operations, including the input data stream or the output data stream. The ROM 3244 may include instructions, programs, constants, or data that are maintained whether it is powered or not. This may include the matrix coefficients used in the K-muxing or K-demuxing process, a boot program, self-test programs, etc. The cache memory 3246 may store cache data at level L2 or L3. The cache memory 3246 is typically implemented by fast static RAM to allow fast access from the CPU 3210. The flash memory 3248 may store programs, instructions, constants, tables, coefficients, envelopes as in the ROM 3244. It may be erased and programmed as necessary.
The GDC 3250 controls the display monitor 3255 and provides graphical operations. It may be integrated inside the CPU 3210. It typically has a graphical user interface (GUI) to allow interactions with a user who may send a command or activate a function.
The mass storage controller 3260 controls the mass storage devices such as CD-ROM 3262 and hard disk 3264.
Additional devices or bus interfaces may be available for interconnections and/or expansion. Some examples may include the Peripheral Component Interconnect Express (PCIe) bus, the Universal Serial Bus (USB), etc.
Upon START, the process 3300 determines whether a sample basis or a block basis is desired (Block 3310). Then, the process 3300 selects a data formatting scheme according to the desired basis, sample or block (Block 3320). This data formatting scheme is known by a recovery process that recovers the original data.
Next, the process 3300 segments the media file input in accordance to the selected data formatting scheme (Block 3330). The media file input is segmented into N media components. Then, the process 3300 determines if more media files are needed (Block 3340). If so, the process 3300 returns to block 3310. Otherwise, the process 3300 performs the WFM transform on the N media components (Block 3350). Each of the N transfomed components is a linear combination of the N media components. Next, the process 3300 transmits the transformed components to the remote or network storages (Block 3360). The remote or network storage may include network-attached storages or cloud storages. The process 3300 is then terminated.
Upon START, the process 3400 receives a document file or document files from a remote or network storage (Block 3410). The document file includes N transformed components. Next, the process 3400 performs a WFD transform on the N transformed components (Block 3420). The WFD transform transforms the N transformed components into N media components on a sample basis or a block basis according to a data formatting scheme. Each of the N media components is a linear combination of the N transformed components.
Then, the process 3400 determines the data formatting scheme (Block 3430). The data formatting scheme is the scheme that is used to pre-process the document file prior to storing the document file in the remote or network storage. Next, the process 3400 de-segments the N media components into the media file using the data formatting scheme (Block 3440). The process 3400 is then terminated.
Elements of one embodiment may be implemented by hardware, firmware, software or any combination thereof. The term hardware generally refers to an element having a physical structure such as electronic, electromagnetic, optical, electro-optical, mechanical, electro-mechanical parts, etc. A hardware implementation may include analog or digital circuits, devices, processors, applications specific integrated circuits (ASICs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), or any electronic devices. The term software generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc. The term firmware generally refers to a logical structure, a method, a procedure, a program, a routine, a process, an algorithm, a formula, a function, an expression, etc., that is implemented or embodied in a hardware structure (e.g., flash memory, ROM, EROM). Examples of firmware may include microcode, writable control store, micro-programmed structure.
When implemented in software or firmware, the elements of an embodiment may be the code segments to perform the necessary tasks. The software/firmware may include the actual code to carry out the operations described in one embodiment, or code that emulates or simulates the operations. The program or code segments may be stored in a processor or machine accessible medium. The “processor readable or accessible medium” or “machine readable or accessible medium” may include any non-transitory medium that may store information. Examples of the processor readable or machine accessible medium that may store include a storage medium, an electronic circuit, a semiconductor memory device, a read only memory (ROM), a flash memory, an erasable programmable ROM (EPROM), a floppy diskette, a compact disk (CD) ROM, an optical disk, a hard disk, etc. The machine accessible medium may be embodied in an article of manufacture. The machine accessible medium may include information or data that, when accessed by a machine, cause the machine to perform the operations or actions described above. The machine accessible medium may also include program code, instruction or instructions embedded therein. The program code may include machine readable code, instruction or instructions to perform the operations or actions described above. The term “information” or “data” here refers to any type of information that is encoded for machine-readable purposes. Therefore, it may include program, code, data, file, etc.
All or part of an embodiment may be implemented by various means depending on applications according to particular features, functions. These means may include hardware, software, or firmware, or any combination thereof. A hardware, software, or firmware element may have several modules coupled to one another. A hardware module is coupled to another module by mechanical, electrical, optical, electromagnetic or any physical connections. A software module is coupled to another module by a function, procedure, method, subprogram, or subroutine call, a jump, a link, a parameter, variable, and argument passing, a function return, etc. A software module is coupled to another module to receive variables, parameters, arguments, pointers, etc. and/or to generate or pass results, updated variables, pointers, etc. A firmware module is coupled to another module by any combination of hardware and software coupling methods above. A hardware, software, or firmware module may be coupled to any one of another hardware, software, or firmware module. A module may also be a software driver or interface to interact with the operating system running on the platform. A module may also be a hardware driver to configure, set up, initialize, send and receive data to and from a hardware device. An apparatus may include any combination of hardware, software, and firmware modules.
It will be appreciated that various of the above-disclosed and other features and functions, or alternatives thereof, may be desirably combined into many other different systems or applications. Various presently unforeseen or unanticipated alternatives, modifications, variations, or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.
This application, as a continuation-in-part (CIP), claims priority to the U.S. non-provisional patent application No. 14/935,312 filed on Nov. 6, 2015, which claims priority to U.S. provisional application No.62,207,032 filed on Aug. 19, 2015. Both of which are incorporated herein by reference in their entireties.
Number | Date | Country | |
---|---|---|---|
62207032 | Aug 2015 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14935312 | Nov 2015 | US |
Child | 16133699 | US |