Systems and methods for data representation and transportation

Systems and methods reduce redundancy in a data representation. The data is divided into a plurality of data portions. The data portions are used to encode a plurality of compressed data portions, wherein the compressed data portions correspond to a subset of the data portions and comprise less redundant data than the subset of the data portions. The compressed data portions are also encoded in accordance with data in the remaining data portions. The compressed data portions are transmitted instead of the subset of the data portions with the remaining data portions according to a sequence of data portions. Each of the compressed data portions is transmitted upon receiving an acknowledgment message that indicates successful transmission of a previous data portion or compressed data portion in the sequence of data portions.

TECHNICAL FIELD

The present invention relates to the field of data transmissions, and, in particular embodiments, to systems and methods for content representation and transportation over the Internet or other networks.

BACKGROUND

Media streaming services, e.g., movies or music streaming services, are provided as over-the-top (OTT) content by media service providers (e.g., Netflix). The content is streamed from the providers' servers to end users through the Internet and/or one or more other networks. OTT content is typically delivered over the Internet without the Internet service provider's involvement in the control or distribution of the content itself. For example, media services are also provided to mobile devices via wireless core networks. The media transmission is controlled by networking protocols and technologies, such as Dynamic Adaptive Streaming over Hypertext Transfer Protocol (DASH). The DASH protocol provides multiple representations of the same media, e.g., with different data rates, to support varying network transmission bandwidth. Lower data rate representations have lower video quality, while transmitting higher data rate media with insufficient bandwidth can cause delays or interruptions in streamed media, which affects user quality of experience (QoE). Improving media representation to meet bandwidth and QoE requirements is desired.

SUMMARY

In one embodiment, a method for providing data content includes encoding a plurality of compressed data portions using a plurality of data portions for a data content, wherein the compressed data portions correspond to a subset of the data portions, comprise less redundant data than the subset of data portions, and are encoded in accordance with data in the remaining data portions, and transmitting the compressed data portions instead of the subset of data portions with the remaining data portions according to a sequence of data portions.

In another embodiment, a network component for providing data content includes a processor and a computer readable storage medium storing programming for execution by the processor, the programming including instructions to encode a plurality of compressed data portions using a plurality of data portions for a data content, wherein the compressed data portions correspond to a subset of the data portions, comprise less redundant data than the subset of data portions, and are encoded based on data in the remaining data portions, and transmit the compressed data portions instead of the subset of data portions with the remaining regular segments according to a sequence of data portions.

In another embodiment, a method for obtaining data content includes sending a request to download a data content and receiving a plurality of data portions and compressed data portions in a sequence of data portions, wherein the compressed data portions are encoded by removing redundant data included in the data portions.

In another embodiment, a network component for obtaining content data includes a processor and a computer readable storage medium storing programming for execution by the processor, the programming including instructions to send a request to download content data; and receive a plurality of data portions and compressed data portions in a sequence of data portions, wherein the compressed data portions are encoded by removing redundant data included in the data portions.

In another embodiment, a radio access node for transporting data content includes a processor and a computer readable storage medium storing programming for execution by the processor, the programming including instructions to receive a User Datagram Protocol (UDP) packet sent form a server and comprising a compressed data portion in a sequence of data portions, wherein the compressed data portion is encoded by removing redundant information included in the other data portions, forward the UDP packet to a client, and send an acknowledgement (ACK) message to the server upon successfully forwarding the UDP packet to the client.

In another embodiment, a radio access node for transporting data content includes a processor and a computer readable storage medium storing programming for execution by the processor, the programming including instructions to receive a plurality of compressed data portions for data content sent form a server in response to forwarding a plurality of ACK messages from a client, convert the compressed data portions into a plurality of corresponding data portions supported by a media player at the client, and transmit the corresponding data portions to the client, wherein the compressed data portions have less redundant data than the corresponding data portions and are encoded based on information in other transmitted data portions.

In yet another embodiment, a radio access node for transporting data content includes a processor and a computer readable storage medium storing programming for execution by the processor, the programming including instructions to receive a plurality of data portions in a sequence of data portions for data content sent form a server in response to forwarding a plurality of ACK messages from a client, convert the data portions into a plurality of corresponding compressed data portions, and transmit the corresponding compressed data portions to the client, wherein the compressed data portions have less redundant data than the corresponding data portions and are encoded based on information in other transmitted data portions.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

Disclosed herein are systems and methods that provide new data representation to improve transmission efficiency of content services (e.g., OTT content) or data in general and user quality of experience (QoE). The transmission efficiency and user QoE are improved by reducing the redundancy in the representation of content or data transmitted over one or more networks (e.g., the Internet and a mobile core network). The redundancy is reduced in the data representation without substantially reducing the content (e.g., video) quality or data integrity. For instance, data can be represented as one or a plurality of data portions that are transmitted separately (and consecutively) over the one or more networks. The redundancy in at least some of the data portions is reduced to improve transmission efficiency and QoE.

The systems and methods can be applied for different types of data or content traffic, like video streaming, audio streaming, web browsing, file downloading, and network transport protocols, including DASH and other protocols. The embodiments below are related to media services (e.g., video/audio streaming), where media representation is represented using a plurality of media segments that form a content (e.g., a video). However, the embodiments, systems, and methods herein can be extended and applied for any type of data or content representation to improve transmission efficiency (e.g., reduce bit rate or transmission bandwidth) and QoE (e.g., reduce delays or interruptions in service or download).

FIG. 1illustrates an example content distribution system100that comprises one or more networks. The system100comprises one or more OTT content servers101coupled to the Internet102, one or more mobile operator content servers103coupled to a mobile (or wireless) core network104, and one or more user equipments (UEs)110. The OTT content server101is configured to transmit media services (e.g., video and/or music services) using Real-Time Protocol (RTP) and DASH. The media content is transmitted via the Internet102and the mobile core network104to the UEs110. The mobile operator content server103is configured to transmit media services using enhanced Multimedia Broadcast Multicast Service (eMBMS) and DASH to the UEs110via the mobile core network104. In other embodiments, other technologies and protocols can be used to transmit the media content to the users.

The content can be transported between the Internet102and the mobile core network104via a gateway105, e.g., at the edge of the mobile core network104. The content is forwarded through the mobile core network104via one or more routers106, which are coupled to the mobile operator content server103and the gateway105. The routers106are also coupled to one or more radio access nodes107, also referred to as base stations or cell towers, e.g., at the edge of the mobile core network104. The radio access nodes107communicate with the UEs110to forward the media content to the UEs110. Additionally, at least some of the content forwarded through the mobile core network104is cached in one or more cache units108, e.g., at the gateway105and/or any of the radio access nodes107.

FIG. 2illustrates a typical client-server model200according to DASH, which can be implemented in the system100. A server201(e.g., an HTTP server) comprises a plurality of media files210, for example in one or more memory units or queues202. Each media file210is divided into a plurality of shorter segments212, which can be transferred through the network in few seconds, for example. Each media segment212may have multiple representations encoded with different bit rates. The segments212are transferred from the server201to a client250(e.g., a HTTP streaming client) using any appropriate protocol, such as Hypertext Transfer Protocol (HTTP), over the network. The client250is located at a UE, for example. The client250comprises a protocol interface251(e.g., a HTTP access client) that receives the segments212, a streaming control unit253(e.g., a HTTP streaming control) that receives media representation description from the server201and sends requests for segments (e.g., via a scheduler) to the protocol interface251. The segments are then forwarded to a media player252at the client250to decode the segments and play the media content.

The client250sends a GET command to the server201to download media segments212. Because the channel bandwidth may change from time to time, the client250may request different media representations at different rates, such that the media bit rate is not higher than the supported or available network bandwidth. The media segments212are exchanged between the server201and the client250, for instance using a Transport Control Protocol (TCP). The TCP allows the client250to send, after receiving a segment212, an acknowledge (ACK) message back to the server201so that the server201knows whether the media segment212was successfully received and decoded by the client250.

FIG. 3illustrates a typical media representation300that can be used in the typical client-server model200according to DASH. A media content, such as video content, can be stored in a memory301(e.g., at a content or media server) in multiple versions as different video representations encoded with different bit rates. For instance, the memory301includes a first video representation310with a low bit rate and a second video representation320for the same content with a high bit rate. Each video representation is saved as a combination of a plurality of segments (e.g., 10 segments) that can be transmitted and hence received separately and consecutively. Each segment comprises one or more group of pictures (GoPs). Typically, a media segment is about 2 to 10 seconds long and comprises one GoP. A client software uses a GET command (in HTTP) to download the segments from the memory301. In the case of a high capacity channel (with relatively high bandwidth), the client requests the second video representation320encoded with the high bit rate. In the case of a low capacity channel (with relatively low bandwidth), the client requests the first video representation310encoded with the low bit rate.

Although DASH offers many advantages, the redundancy is one of the issues that can reduce transmission efficiency of media services and/or reduce user QoS, e.g., when link bandwidth is limited. At least some of the segments or GoPs are independently encoded, which allows refreshing media quality and fast switching between encoded media streams. Encoding the media segments independently at the server allows decoding the segments independently at the client. However, this requires introducing data redundancy in the different segments. In some scenarios, e.g., to support Scalable Video Coding (SVC), some segments may be dependent on other segments for decoding. For example, one segment comprises base layer of media, while other segments comprise enhanced layers. However, the segments of the same media layer are still independently encoded. The information redundancy between two subsequent (or consecutive) media segments can be significant because GoPs between subsequent segments may be substantially correlated as they are in the same scene. This causes a waste of bandwidth to deliver independently encoded GoPs/segments.

To improve media coding efficiency, the size of GoPs in segments may be increased (e.g., more pictures are grouped in a segment). However, increasing the size of GoPs increases the size of files in one video segment for transfer, which presents challenges in transmission (this is the reason a media file is divided into smaller segments or files for transfer). Further, if a user stops watching, the remaining downloaded media bits in larger transferred files are wasted.

FIG. 4illustrates an embodiment media representation400with reduced redundancy. The media representation400is based on reducing or removing information redundancy between segments, e.g., subsequent video segments. This reduces the bandwidth requirement for video transmission, i.e., improves transmission efficiency, and further improves user QoE. A media content (e.g., video content) can be stored in a memory401(e.g., at a content server) with different bit rates, for instance a first video representation410with a low bit rate and a second video representation420with a high bit rate. Each of the video representations410and420is divided into a plurality of segments (e.g., 10 segments) that can be transmitted and hence received separately.

Additionally, an auxiliary media representation is encoded and stored for each of the video representations410and420. This includes a first auxiliary video representation412associated with the first video representation410, and a second auxiliary video representation422associated with the second video representation420. The auxiliary video representations412and422can be stored with the corresponding video representations412and422in the same memory401. Each of the auxiliary video representations412and422is also divided into an equal number of segments (e.g., 10 segments) that can be transmitted and hence received separately.

Some of the segments of the auxiliary video representation412, for example segments1and6, are identical to their corresponding segments of the first video representation410, respectively. The remaining segments of the auxiliary video representation412are compressed versions of their corresponding segments in the first video representation410. Similarly, the segments1and6of the auxiliary video representations422are identical to their corresponding segments of the video representation420and the remaining segments of the auxiliary video representation422are compressed versions of their corresponding segments in the video representation420. The segments in the auxiliary video representations412and422, also referred to herein as auxiliary segments, are created by removing redundant data in their corresponding regular segments in the video representations410and420, as described below. The compressed auxiliary segments may have lower bit rates than their respective regular segments.

In the auxiliary video representations412and422, the compressed auxiliary segments are dependent on the full size segments1and6. For example, segment2is dependent on segment1. This means that segment2is decoded at a receiver or client using some of the information in segment1. Thus, segment2can be decoded only if segment1is received and decoded successfully. Similarly, each of segments3,4, and5are dependent on segment1. In another embodiment, at least some subsequent auxiliary segments are also dependent on each other. This further removes data redundancy in the auxiliary segments. For example, segment3may be dependent on segment2, which in turn is dependent on segment1. Thus, segment3is dependent on both segments1and2. This means that segment3can be decoded only if both segments1and2are received and decoded successfully.

The auxiliary segments may be generated in any of the schemes below. For example, segments1and2comprise dependent GoPs, where segment1includes an I picture frame (I-frame) and where other picture frames of segments1and2are encoded based on this I-frame. To further remove data redundancy and achieve bandwidth saving, the I-frame in segment2is replaced by a more coding efficient picture frame, e.g., a P-frame or a B-frame. This scheme is referred to herein as inter-segment encoding. To save storage space, the auxiliary video segments can be created on-the-fly by a transcoding unit, for example the video key frames (e.g., I or IDR frames in H.264 standard) can be transcoded on-the-fly.

In another example, segments1and2comprise independent GoPs, where media compression is applied independently to the GoPs in the two segments. The encoded media bits of the GoPs in the two segments are then compressed by the same bit or symbol compression software program such that the decompression can be achieved on-the-fly (while the streamed segments are being received at the client). This ensures that segment1is independently decoded, and segment2that is dependent on segment1is subsequently decoded based on segment1. In this case, data redundancy removal and bandwidth saving is obtained by symbol-level or bit-level compression, which is applied jointly to the two segments. This scheme is referred to herein as inter-segment compression.

In yet another example, a combination of both schemes above can be used to generate two dependent segments1and2, where the dependency is achieved from both inter-segment encoding and inter-segment compression. In any of the schemes above, the media compression can be made on-the-fly (while the segments are being streamed at the server). For instance, once a media segment n is successfully received, the n+1 media segment (subsequent segment) could be compressed with reference to media segment n.

The compressed and dependent auxiliary segments can be transmitted instead of their corresponding regular segments to save bandwidth or in case of bandwidth reduction on the link. For example, when a user watches a streamed video, the segments of the corresponding media are transmitted form server to client. The client device (UE) sends ACK messages (using TCP) when the segments are received and decoded successfully. In return to receiving each ACK message, the server transmits a subsequent or next auxiliary segment that succeeds in the sequence of segments the last transmitted segment associated with the ACK message. The subsequent or next auxiliary segment may be dependent on the last previously sent and successfully received and decoded segment. If the server does not receive an ACK message after sending a segment, then the server sends a subsequent regular segment instead of the next auxiliary segment.

FIG. 5illustrates an embodiment method500for transmitting media with reduced redundancy. For instance, the method500is implemented in the content distribution system100to transmit or stream media from a server to a client (a UE). Specifically, the method500uses the media representation400that includes compressed/dependent auxiliary segments (e.g., for multiple media representations with different bit rates). The steps below of the method500may be implemented in the order described below or in any other appropriate order. At step510, a request to download or stream media is received. For example, the mobile operator content servers103or the OTT content servers101receives a request from a UE110to download media.

At step520, an initial segment of the media representation is transmitted. The initial segment belongs to a media representation with a data rate that is determined by the request from the client or according to available link bandwidth. The initial segment is a regular segment, such as segment1of the high bit rate video representation420. At decision block530, the method500determines whether an ACK message is received. The ACK message is returned from the client upon receiving and decoding segment1successfully, according to TCP. If the ACK message is received, then the method500proceeds to decision step540. Otherwise, the method500proceeds to step580.

At decision step540, the method500determines whether a subsequent (or consecutive) auxiliary segment is available, such as segment2in the media representation400. If the condition in step540is true, then the method500proceeds to step545. Otherwise, the method500proceeds to step550. At step545, a subsequent auxiliary segment is transmitted. The auxiliary segment is dependent on the previous transmitted segment, where redundancy between the two segments is removed. The auxiliary segment is then received by the client and decoded using information from the previous decoded segment. For example, the compressed auxiliary segment2of the high bit rate video representation422, which depends on information in segment1for encoding, is transmitted. Alternatively at step550, a subsequent regular segment is transmitted. The regular segment may comprise redundant information with the previous transmitted segment and can be decoded at the client independent from the previous segment. For example, the regular segment2of the high bit rate video representation420, which can be decoded at the client independent from segment1due to redundant data in both segments, is transmitted. After implementing step545or550, the method500returns to decision block530to complete transmitting auxiliary or regular segments until all media segments are transmitted.

At step580, the previous transmitted segment (e.g., a regular or auxiliary segment) is retransmitted. Alternatively, a codebook is transmitted. The codebook can be built on-the-fly and comprises codewords of the one or more lost or failed previous segments. The receiver at the client can use the retransmitted previous segment or the codebook to decode a subsequently transmitted auxiliary segment. After step580, the method500proceeds to step540. In another embodiment, the method500implements an alternative step580, where a subsequent regular segment is transmitted. After alternative step580, the method500returns to decision block530to complete transmitting auxiliary or regular segments until all media segments are transmitted.

FIGS. 6A and 6Billustrate visual quality using typical media representations and improved media representations with reduced redundancy.FIG. 6Ashows a sequence of streamed images or video frames over time versus transmission channel bandwidth using a typical media streaming scheme that adapts to bandwidth reduction. Accordingly, the segments of a high bit rate media representation are replaced by segments of a lower bit rate representation when channel bandwidth is reduced, which provides lower video quality (e.g., lower spatial resolution). In another scenario, the segments with lower bit rate comprise more coarse quantization of video information elements. For example, the typical scheme uses the typical media representation300with high and low bit rate representations.

FIG. 6Bshows a sequence of streamed frames over time versus the channel bandwidth using a media representation with reduced redundancy in the media segments. Accordingly, the auxiliary segments of a high bit media representation are transmitted (if available and ACK messages are received) instead of the regular segments, which maintains about similar video quality (about the same spatial resolution). A negligible or relatively small drop in objective or subjective quality can occur due to removing redundancy information in the auxiliary segments. For example, the segments of the second auxiliary video representation422are transmitted using the method500. When channel bandwidth is reduced, auxiliary segments with inter-segment compression (described above) can be transmitted to achieve more bandwidth savings. The auxiliary segments can meet the reduced channel bandwidth without substantially affecting video quality. Thus, spatial resolution and user QoE are improved in comparison to the scheme ofFIG. 6A.

FIGS. 7A and 7Billustrate bandwidth saving using improved media representations with reduced redundancy in comparison to typical media representations. Similar toFIG. 6A,FIG. 7Ashows a sequence of streamed images or video frames over time versus transmission channel bandwidth using a typical media streaming scheme that adapts to bandwidth reduction by transmitting segments with reduced bit rate.

FIG. 7Bshows a sequence of streamed frames over time versus the channel bandwidth using a media representation with reduced redundancy in the media segments. Accordingly, the compressed auxiliary segments of a high bit media representation are transmitted (as described forFIG. 6Babove) instead of the regular segments. When channel bandwidth is reduced, auxiliary segments with inter-segment compression, inter-segment encoding (described above), or a combination of both are transmitted to achieve varying levels of bandwidth savings. Subsequent segments with further increases in bandwidth savings can be transmitted. Thus, delays or interruptions in service can be avoided to provide better QoE. However, video quality or resolution can further decrease with further increases in bandwidth savings.

In an embodiment, the UE indicates to the media server a media encoding mode (for example the inter-segment encoding), a bit or symbol compression mode (e.g., inter-segment compression), or both via signaling. For example, a client software at the UE sends a message that indicates the media encoding mode and/or the bit or symbol compression mode to use for encoding and/or compressing the segments (statistically or on-the-fly) before sending the segments to the UE. The media encoding mode and/or the bit or symbol compression mode can be indicated in the request to download media or in a request to reduce transmission bandwidth.

FIG. 8illustrates an embodiment system800for sending ACK messages for User Datagram Protocol (UDP) packets. Typically, if the media content is delivered using RTP and UDP, e.g., in IPTV standard, the ACK message is unavailable. Therefore, the server may not be able to determine whether to select the auxiliary segments instead of regular segments (as in method500). To account for this, the system800is configured to exchange ACK messages between a media server810and a user terminal840(or UE) using UDP. The media server810and the user terminal840can communicate via a gateway820(e.g., mobile media gateway) and a radio access node (RAN)830. The components of the system800comprise multiple layers for processing data, as shown inFIG. 8.

The RAN830is configured to process the UDP packets (exchanged between the media server810and the user terminal840) to determine which media segments the packets belong to. For example, the RAN830comprises a function (software), a functional module (hardware), or a combination of both configured to access the UDP packets, e.g., at the IP layer. Thus, the RAN830is capable of determining if a segment is successfully transported (in the UDP packet) to the user terminal840, e.g., as a physical layer message. Upon verifying that the segment is successfully transported to the user terminal840, the RAN830sends an ACK message or a similar purpose message to the media server810(e.g., via the gateway820) to notify the media server810of the successfully transfer of the segment (e.g., in a UDP packet) to the user terminal840.

In an embodiment, when a segment (e.g., in a UDP or other protocol packet) is not successfully received and/or decoded by a client and the media server does not receive in return an ACK message, the media server resends the segment to allow the client to successfully decode or (or decompress) the segment. Alternatively, the server sends a codebook (e.g., on-the-fly) to the client to enable the client to successfully decode or decompress a new transmitted segment. The codebook comprises the codeword indices (of the segment) and their probabilities.

In another scenario, media segments of the same media content can be stored or distributed in multiple locations and components across the network, such as in a content distribution network (CDN). This allows users to download the same media content from different servers or caches. An original media server may comprise all the regular and corresponding auxiliary media segments or representations, while one or more caches across the CDN may only have the regular media representations, e.g., due to limited storage. In this case, if the download request from the client software is redirected to a cache, the cache is configured with transcoding and compression functions to create the auxiliary media segments or representations, e.g., statically or on-the-fly. The on-the-fly transcoding and compression is used to reduce the storage capacity requirement of the cache.

FIG. 9illustrates an embodiment system900for supporting a legacy media player (or encoder/decoder) at a media server910and a user terminal940. The legacy media player (or encoder/decoder) at an application layer of the media server910and similarly the user terminal940is not configured to generate, recognize, or process auxiliary media segments. To enable the transfer of auxiliary media segments between the media server910and the user terminal940, e.g., via a gateway920and a RAN930, a media conversion function can be added (via software and/or hardware) to each of the media server910and the user terminal940. The media conversion function is configured to convert between segments supported by the legacy media (e.g., regular segments) into auxiliary segments on both ends to enable the transfer of auxiliary segments on the link (via the gateway920and the RAN930) and thus achieve bandwidth saving.

The components of the system900comprise multiple layers for processing data, as shown inFIG. 9. Specifically, a first media conversion function912is added to the media server910between the application layer and the HTTP/RTP layers. The first media conversion function912converts segments (e.g., regular segments) supported by the legacy media player or encoder at the media server910into auxiliary segments that are then transmitted to the user terminal940. A second media conversion function941is added to the user terminal940between the HTTP/RTP layers and the application layer. The second media conversion function941converts the auxiliary segments received from the media server910into segments (e.g., regular segments) supported by the legacy media player or decoder at the user terminal940.

FIG. 10illustrates another embodiment system1000for supporting a legacy media player at an application layer of a media server1010and similarly at a user terminal1040to enable the transfer of auxiliary media segments. The auxiliary segments are transferred via a gateway1020and a RAN1030between the media server1010and the user terminal1040. The system1000comprises similar components as the system900. However, a media conversion function is added on both ends of the system1000at a different layer than the system900. Specifically, a first media conversion function1011is added to the media server1010between the TCP/UDP layers and the IP layer to convert segments (e.g., regular segments) supported by the legacy media player or encoder into auxiliary segments that are then transmitted to the user terminal1040. A second media conversion function1041is added to the user terminal1040between the IP layer and the TCP/UDP layers to convert the auxiliary segments received from the media server1010into segments (e.g., regular segments) supported by the legacy media player or decoder at the user terminal1040.

FIG. 11illustrates yet another embodiment system1100for supporting a legacy media player at an application layer of a user terminal1140to enable the transfer of auxiliary media segments generated and sent from a media server1110. The segments are transferred via a gateway1120and a RAN1130between the media server1110and the user terminal1140. The system1100comprises similar components as the systems900and1000. However, a media conversion function1131is added to the RAN1130instead of the media server1110and the user terminal1140. The media conversion function1131is added to an application layer above the HTTP/RTP layers of the RAN1130. The media conversion function1131is configured to convert auxiliary segments sent from the media server1110into segments (e.g., regular segments) supported by the legacy media player or decoder at the application layer of the user terminal1140. After conversion, the RAN1130sends the segments to the user terminal1140. In this case, bandwidth saving is achieved between the media server1110and the RAN1130.

In another scenario, auxiliary media segments or representations may not be added at the media server, such as due to memory or software limitations. In this case, a new module can be added at the RAN (between the media server and the user terminal) to perform transcoding and compression functions. The new module intercepts all the media packets or segments sent from the media server to the user terminal, store the regular media segments, create corresponding auxiliary media segments, and forward the auxiliary media segments to the user terminal. Depending on the latest wireless channel and air interface loading conditions, the RAN can select a suitable media representation to send to the user terminal.

FIG. 12is a block diagram of a processing system1200that can be used to implement various embodiments. Specific devices may utilize all of the components shown, or only a subset of the components, and levels of integration may vary from device to device. Furthermore, a device may contain multiple instances of a component, such as multiple processing units, processors, memories, transmitters, receivers, etc. The processing system1200may comprise a processing unit1201equipped with one or more input/output devices, such as a speaker, microphone, mouse, touchscreen, keypad, keyboard, printer, display, and the like. The processing unit1201may include a central processing unit (CPU)1210, a memory1220, a mass storage device1230, a video adapter1240, and an I/O interface1260connected to a bus. The bus may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, a video bus, or the like.

The CPU1210may comprise any type of electronic data processor. The memory1220may comprise any type of system memory such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), a combination thereof, or the like. In an embodiment, the memory1220may include ROM for use at boot-up, and DRAM for program and data storage for use while executing programs. In embodiments, the memory1220is non-transitory. The mass storage device1230may comprise any type of storage device configured to store data, programs, and other information and to make the data, programs, and other information accessible via the bus. The mass storage device1230may comprise, for example, one or more of a solid state drive, hard disk drive, a magnetic disk drive, an optical disk drive, or the like.

The video adapter1240and the I/O interface1260provide interfaces to couple external input and output devices to the processing unit. As illustrated, examples of input and output devices include a display1290coupled to the video adapter1240and any combination of mouse/keyboard/printer1270coupled to the I/O interface1260. Other devices may be coupled to the processing unit1201, and additional or fewer interface cards may be utilized. For example, a serial interface card (not shown) may be used to provide a serial interface for a printer.

The processing unit1201also includes one or more network interfaces1250, which may comprise wired links, such as an Ethernet cable or the like, and/or wireless links to access nodes or one or more networks1280. The network interface1250allows the processing unit1201to communicate with remote units via the networks1280. For example, the network interface1250may provide wireless communication via one or more transmitters/transmit antennas and one or more receivers/receive antennas. In an embodiment, the processing unit1201is coupled to a local-area network or a wide-area network for data processing and communications with remote devices, such as other processing units, the Internet, remote storage facilities, or the like.