System, device and method for media data offload processing
Claim Score by NHIP
Abstract
Described are a system and method of forwarding data packets from a network interface controller (NIC) to one or more media decoding devices. The NIC may comprise an I/O interface to transmit to communicate with either a host processing system and the one or more media decoding devices. Data packets received at the NIC may be forwarded to the one or more media decoding devices independently of the host processing system.

Term
Term ended
Projected expiry passed 14 October 2022, 3.9 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
33 claims: 6 independent, 27 dependent
- 1A system comprising:a host processing system;one or more media decoding devices;and a network interface controller, the network interface controller comprising: a network interface to receive data packets from a data transmission medium;an I/O interface to communicate with the host processing system and the one or more media decoding devices;and a forwarding engine to forward media data in received data packets to the one or more media decoding devices independently of the host processing system.
- 6A network interface controller comprising:a network interface to receive data packets from a data transmission medium;a forwarding engine to: receive from a host processing system session information associated with a media event;and forward media data in data packets associated with the session information to a destination media decoding device independently of the host processing system.
- 14Broadest claimClaim Score 88, very broad(NHIP)A method comprising:detecting a media event;and transmitting session information associated with the media event to a network interface controller, the session information associating at least some data packets received at the network interface controller with one or more destination media decoding devices.
- 18An article comprising:a storage medium comprising machine-readable instructions stored thereon to: detect a media event;and initiate transmission of session information associated with the media event to a network interface controller, the session information associating at least some data packets received at the network interface controller with one or more destination media decoding devices.
- 22A method comprising:receiving session information from a host processing system;receiving data packets from a transmission medium;associating at least some of the received data packets with the session information;and forwarding portions of the associated data packets to one or more destination media decoding devices independently of the host processing system.
- 28An article comprising:a storage medium comprising machine-readable instructions stored thereon to: receive session information from a host processing system;associate at least some received data packets with the session information;and initiate forwarding portions of the associated data packets to one or more destination media decoding devices independently of the host processing system.
Independent claims6
56 paragraphs in 3 sections, as filed
BACKGROUND
[0001] 1. Field
[0002] The subject matter disclosed herein relates to computing platforms. In particular, the subject matter disclosed herein relates to computing platforms that transmit data to or receive data from a communication network.
[0003] 2. Information
[0004] Computing platforms typically include peripheral devices such as network interface controllers (NICs) that enable processes hosted on a host processing system to communicate with nodes in a communication network. Computing platforms also typically include devices such as audio or video decoders that can generate sounds or images under the control of device drivers hosted on a host processing system.
[0005] Prior art FIG. 1 shows a processing platform <b>10</b> comprising a system memory <b>12</b> coupled to a central processing unit (CPU) <b>14</b> to provide a host processing system. A NIC <b>20</b>, video output device <b>22</b> and audio output device <b>24</b> are coupled to the host processing system by a device bus <b>16</b>. The device bus <b>16</b> and front side bus <b>18</b> is typically provided in any one of several core logic motherboard chipsets such as core logic chipsets including memory controller hub (MCH) and input/output controller hub (ICH) devices sold by Intel® Corporation.
[0006] The NIC <b>20</b> typically receives data packets from a communication network which are encapsulated in data frames. The NIC <b>20</b> typically transmits received data packets to predefined buffer locations in the system memory <b>12</b> to be processed further by the host processing system. To generate sounds or images, device drivers hosted on the host processing system typically transmit data to either the video output device <b>22</b> or audio output device from predefined buffer locations in the system memory <b>12</b>. Upon receipt of data from these drivers, the video output device <b>22</b> or audio output device <b>24</b> typically decodes the received data into signals for driving media output devices such as displays or audio speakers.
BRIEF DESCRIPTION OF THE FIGURES
[0007] Non-limiting and non-exhaustive embodiments of the present invention will be described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various figures unless otherwise specified.
[0008]FIG. 1 shows a schematic diagram of a prior art processing platform.
[0009]FIG. 2 shows a system for transmitting media data to a processing platform form a communication network according to an embodiment of the present invention.
[0010]FIG. 3 shows a schematic diagram of a processing platform comprising a network interface controller (NIC) to transmit media data to one or more media decoding devices independently of a host processing system according to an embodiment of the system shown in FIG. 2.
[0011]FIG. 4 shows a schematic diagram of a processing platform comprising a switch to forward data from a NIC to one or more media decoding devices according to an embodiment of the processing platform shown in FIG. 3.
[0012]FIG. 5 shows a flow diagram illustrating a process to initiate the transfer of data from a NIC to one or more media decoding devices in response to a media event according to an embodiment of the processing platform shown in FIG. 3.
[0013]FIG. 6 shows a flow diagram illustrating a process of forwarding data packets received at a NIC to one or media devices according to an embodiment of the processing platform shown in FIG. 3.
DETAILED DESCRIPTION
[0014] Reference throughout this specification to “one embodiment” or “an emodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments.
[0015] “Machine-readable instructions” as referred to herein relates to expressions which may be understood by one or more machines for performing one or more logical operations. For example, machine-readable instructions may comprise instructions which are interpretable by a processor compiler for executing one or more operations on one or more data objects. However, this is merely an example of machine-readable instructions and embodiments of the present invention are not limited in this respect.
[0016] “Storage medium” as referred to herein relates to media capable of maintaining expressions which are perceivable by one or more machines. For example, a storage medium may comprise one or more storage devices for storing machine-readable instructions or data. Such storage devices may comprise storage media such as, for example, optical, magnetic or semiconductor storage media. However, this is merely an example of a storage medium and embodiments of the present invention are not limited in this respect.
[0017] “Logic” as referred to herein relates to structure for performing one or more logical operations. For example, logic may comprise circuitry which provides one or more output signals based upon one or more input signals. Such circuitry may comprise a finite state machine which receives a digital input and provides a digital output, or circuitry which provides one or more analog output signals in response to one or more analog input signals. Such circuitry may be provided in an application specific integrated circuit (ASIC) or field programmable gate array (FPGA). Also, logic may comprise machine-readable instructions stored in a memory in combination with processing circuitry to execute such machine-readable instructions. However, these are merely examples of structures which may provide logic and embodiments of the present invention are not limited in these respects.
[0018] A “processing system” as discussed herein relates to a combination of hardware and software resources for accomplishing computational tasks. However, this is merely an example of a processing system and embodiments of the present invention are not limited in this respect. A “host processing system” relates to a processing system which may be adapted to communicate with a “peripheral device.” For example, a peripheral device may provide inputs to or receive outputs from an application process hosted on the host processing system. However, these are merely examples of a host processing system and a peripheral device, and embodiments of the present invention are not limited in these respects.
[0019] A “data bus” as referred to herein relates to circuitry for transmitting data between devices. For example, a data bus may transmit data between a host processing system and a peripheral device. However, this is merely an example of a data bus and embodiments of the present invention are not limited in this respect. A “bus transaction” as referred to herein relates to an interaction between devices coupled in a bus structure wherein one device transmits data addressed to the other device through the bus structure.
[0020] A “network interface controller” (NIC) as referred to herein relates to a device to transmit data to or receive data from a communication network. A NIC may comprise a “network interface” adapted to be coupled to a transmission medium in the communication network. For example, a network interface may comprise one or more of physical communication circuitry to transmit data to or receive data from a particular transmission medium, and a media independent interface to transmit or receive data in a media independent format. However, these are merely examples of a NIC and a network interface, and embodiments of the present invention are not limited in these respects.
[0021] A NIC may also comprise an “input/output (I/O) interface” to communicate with other devices. For example, an I/O interface may couple the NIC to devices coupled to a data bus or a switch to transmit data to or receive data according to a protocol. However, this is merely an example of an I/O interface and embodiments of the present invention are not limited in this respect.
[0022] A “Data packet” as referred to herein relates to a quantity of data to be transmitted from a source to a destination. A data packet may comprise a “payload” portion comprising a message or portion of a message that is to be received at a destination. A data packet may also comprise a “header” portion comprising information such as a “destination address” to be associated with a packet destination. Such a destination address may be defined according to a network communication protocol. However, these are merely examples of a data packet, payload, header and destination address, and embodiments of the present invention are not limited in these respects.
[0023] “Media data” as referred to herein relates to encoded data that represents expressions. For example, media data may comprise encoded data that represents an audio signal or a visual image. Media data may be encoded in any one of several media encoding formats for transmission between a source and a destination. However, these are merely examples of media data and media encoding format, and embodiments of the present invention are not limited in these respects.
[0024] A “media decoding device” as referred to herein relates to device to process media data. For example, a media decoding device may process encoded media data to generate an audio signal or a video signal. However, this is merely an example of a media decoding device and embodiments of the present invention are not limited in these respects.
[0025] A “Media event” as referred to herein relates to a time period during which one or more media expressions are to be presented. For example, a media event may characterize a period during which sounds or images are generated in response to media data. However, this is merely an example of a media event and embodiments of the present invention are not limited in this respect.
[0026] A “forwarding engine” as referred to herein relates to logic to forward data toward a destination based upon destination information. For example, a forwarding engine may forward a received data packet or a portion of a received data packet toward a destination based upon information in a header of the received data packet. However, this is merely an example of a forwarding engine and embodiments of the present invention are not limited in these respects.
[0027] “Session information” as referred to herein relates to information that associates data packets with one or more aspects of a media event. For example, session information may be compared to a portion of a data packet to determine whether the data packet is associated with a media event. Also, session information may comprise information that associates a data packet with a component of a media event such as an audio component or a video component. However, these are merely examples of session information and embodiments of the present invention are not limited in these respects.
[0028] Briefly, embodiments of the present invention relate to a system and method of forwarding data packets from a NIC to one or more media decoding devices. The NIC may communicate with either a host processing system and the one or more media decoding devices. The NIC may forward media data in received data packets to the one or more media decoding devices independently of the host processing system. However, this is merely an example embodiment of the present invention and other embodiments are not limited in these respects.
[0029]FIG. 2 shows a system <b>100</b> for transmitting media data <b>104</b> to a processing platform <b>106</b> from a communication network <b>102</b> according to an embodiment of the present invention. The communication network <b>102</b> may comprise a source node to transmit data to a NIC <b>112</b> according to a network address associated with the NIC <b>112</b>. For example, an Internet service provider (ISP) (not shown) associated with the network <b>102</b> may transmit the media data <b>104</b> to the NIC <b>112</b> according to any one of several network communication protocols such as, for example, the Transmission Control Protocol/Internet Protocol (TCP/IP) or the User Datagram Protocol (UDP). However, these are merely examples of a network protocol that may be used to transmit media data between nodes in a communication network and other communication protocols may be used. A data packet received at the NIC <b>112</b> may comprise destination information (e.g., in a packet header) identifying the NIC <b>112</b>, a video controller <b>114</b> or audio controller <b>116</b> as a destination to receive the data packet. The data packet may also comprise information to associate the data packet a part of a stream of data packets in a session (e.g., session identifier or port numbers in a TCP/IP packet header).
[0030] The NIC <b>112</b> may be adapted to be coupled to the communication network <b>102</b> using any one of several types of data transmission media including, for example, twisted wire pair cabling, coaxial cabling or fiber optic cabling. Alternatively, the NIC <b>112</b> may be coupled to the communication network <b>102</b> by a wireless data link. However, these are merely examples of data transmission media that may be used to transmit data from a communication network to a NIC and embodiments of the present invention are not limited in these respects. The NIC <b>112</b> may also be adapted to receive data according to data link protocol such as versions of the Ethernet protocol according to IEEE Std. 802.3 or versions of the wireless local area network (WLAN) protocols according to IEEE Std. 802.11. However, these are merely examples of data link protocols that may be used to transmit data to a NIC from a communication network and embodiments of the present invention are not limited in these respects.
[0031] According to an embodiment, the media data <b>104</b> may comprise encoded audio data or video data that may be used for generating sounds or images. However, these are merely examples of types of media data and embodiments of the present invention are not limited in these respects. The media data <b>104</b> may be encoded using any one of several media encoding or compression techniques including standard based encoding techniques such as MPEG, JPEG, AVI, MP3, WMA, RealAudio, RealVideo, Divx, Ogg Vorbis and H.263. However, these are merely examples of techniques to encode and/or compress media data and other techniques (including proprietary encoding and compression techniques) may be used.
[0032] Upon receipt of data packets containing the media data <b>104</b>, the NIC <b>112</b> may forward the received media data to either the video controller <b>114</b> or the audio controller <b>116</b> based upon information in the data packet. Upon receipt of audio data from the NIC <b>116</b>, the audio controller <b>116</b> may decode and/or decompress the audio data according to a compression format to provide a signal to a speaker <b>110</b> to generate sound. Similarly, upon receipt of video data from the NIC <b>116</b>, the video controller may decode and/or decompress the video data to provide a signal to a display <b>108</b> to generate images.
[0033]FIG. 3 shows a schematic diagram of a processing platform <b>200</b> comprising a NIC <b>220</b> to transmit data to one or more media decoding devices independently of a host processing system according to an embodiment of the system shown in FIG. 2. A central processing unit (CPU) <b>214</b> and system memory <b>212</b> may be coupled by a front side bus <b>218</b> to form a host processing system for hosting an operating system, application programs and device drivers to communicate with peripheral devices. A device bus <b>216</b> may couple the NIC <b>220</b> and media decoding devices such as an audio output device <b>224</b> and video output device <b>222</b> to the host processing system. The device bus <b>216</b> and front side bus <b>218</b> may be formed in core logic of a motherboard chipset. In one embodiment, the video output device <b>222</b> may be coupled to the device bus <b>216</b> by an Advanced Graphics Port (AGP) (not shown) which is coupled to or formed in a memory controller hub of the motherboard chipset. However, this is merely an example of how a video output device may be coupled to a device bus and embodiments of the present invention are not limited in these respects.
[0034] The CPU <b>212</b> may comprise any one of several commercially available CPUs such as, for example, versions of the Celeron®, Pentium®, Xeon® or Itanium® processors sold by Intel Corporation. However, these are merely examples of a CPU that may be used in a host processing system and embodiments of the present invention are not limited in these respects. The system memory <b>212</b> may comprise any one of several types of storage media including, for example dynamic random access memory (DRAM), synchronous DRAM, or dual-rate DRAM. However, these are merely examples of storage media that may be used to form a system memory and embodiments of the present invention are not limited in these respects. The operating system hosted on the host processing system may comprise operating system modules from any one of several commercially available operating systems such as versions of Windows® sold by Microsoft Corp. or Solaris® sold by Sun Microsystems, Inc., or versions of Linux available in the open source community. However, these are merely examples of operating systems that may be hosted on a host processing system and embodiments of the present invention are not limited in these respects.
[0035] According to an embodiment, the NIC <b>220</b> may transmit data to either the video output device <b>222</b> or the audio output device <b>224</b> independently of the host processing system. Upon receipt of a data packet from a communication network, the NIC <b>220</b> may forward media data in received data packets to a destination media decoding device through the device bus <b>216</b> without storing the data packet or media data in the system memory <b>212</b>.
[0036] According to an embodiment, the NIC <b>220</b> may comprise logic to receive data packets in data frames received from a communication network according to a data link protocol. For example, the NIC <b>220</b> may comprise a physical layer device and a media access controller (MAC) to receive data frames from a data transmission medium. The NIC <b>220</b> may also comprise an off-load engine to process the received data packets according to a network protocol to determine a destination for the received data packets. In an embodiment in which the data packets are formatted according to the TCP/IP protocol, for example, the NIC <b>220</b> may comprise a TCP/IP offload engine (TOE) (not shown) to perform TCP/IP processing. The TOE may comprise a microcontroller or ASIC formed in or coupled to the NIC <b>220</b>. However, these are merely examples of how a TOE may be provided in a NIC and embodiments of the present invention are not limited in these respects.
[0037] According to an embodiment, a received data packet identified as a TCP/IP packet may comprise header information that may be provided to the TOE for TCP/IP processing to determine, for example, a destination for the data packet. The TOE may also associate the received data packet with a particular data stream in a session based upon, for example, a session identifier and/or information in the TCP/IP header such as source or destination port number, or packet sequence number. The data packet may then be associated with a particular media event or particular media decoding devices to receive the media data in the data packet. In addition to associating the destination with a media session, the NIC <b>220</b> may detect a particular media data type (e.g., video data or audio data) and/or media encoding format associated with media data in a payload portion of the data packet to determine a particular destination media decoding device corresponding to the detected media data type and/or media encoding format.
[0038] According to an embodiment, all or portions of the media data in a received data packet may be encrypted according to any one of several encryption formats such as, for example, IP Security (IPSec) or Secure Sockets Layer (SSL) encryption formats. However, these are merely examples of encryption formats that may be used to encrypt packetized media data and embodiments of the present invention are not limited in these respects. In addition to performing packet level processing (e.g., TCP/IP processing), the NIC <b>220</b> may comprise logic to decrypt media data prior to forwarding the media data to a destination media decoding device. Alternatively, the media decoding devices may comprise decryption logic to decrypt media data that is forwarded by the NIC <b>220</b>. However, these are merely examples of how media data may be decrypted and embodiments of the present invention are not limited in these respects.
[0039] In another alternative embodiment to the processing platform <b>200</b> shown in FIG. 3, the NIC <b>220</b> may comprise logic to decode media data in received data packets and provide decoded media signals (e.g., decoded video signals in an NTSC format) to drive an output device. In other alternatives, the NIC <b>220</b> may at least partially decode media data in received data packets and forward partially decoded media data to media decoding devices for additional decoding into media signals for driving an output device. However, these are merely examples of how a NIC may perform decoding of media data prior to forwarding to a destination and embodiments of the present invention are not limited in these respects.
[0040] According to an embodiment, the NIC <b>220</b> may forward media data from received data packets using data bus transactions including direct memory access (DMA) write transactions where the NIC <b>220</b> is acting as a bus master. The video output device <b>222</b> and audio output device <b>224</b> may each comprise memory (e.g., buffer memory) which is addressable through bus transactions on the device bus <b>216</b> addressed to the recipient media decoding device. Using techniques known to those of ordinary skill in the art, the video output device <b>222</b> and audio output device <b>224</b> may each be configured (e.g., during a bus enumeration procedure) to claim bus transactions addressed to one or more predetermined addresses. For example, an enumeration procedure controlled by the host processing system may set base address registers (BARs) associated with a media decoding device on a data bus to determine which bus transactions the media decoding device is to claim. Accordingly, the NIC <b>220</b> may forward media data from received data packets to a media decoding device (e.g., the video output device <b>222</b> or audio output device <b>224</b>) independently of the host processing system by initiating DMA write transactions addressed to the media decoding device.
[0041]FIG. 4 shows a schematic diagram of a processing platform <b>300</b> comprising a switch <b>316</b> to forward data from a NIC <b>320</b> to one or more media decoding devices according to an embodiment of the processing platform <b>200</b> shown in FIG. 3. A CPU <b>312</b> may be coupled to a system memory <b>314</b> by a root complex <b>318</b> to provide a host processing system. The root complex <b>318</b> and switch <b>316</b> may be included in a core logic motherboard chipset formed according to a Peripheral Components Interconnect (PCI) Express I/O architecture as described in the PCI Express Base Specification, Rev. 1.0, Jul. 16, 2002 (hereinafter “PCI Express Base Specification”). The switch <b>316</b> may comprise a plurality of ports including an upstream port <b>326</b> coupled to the root complex <b>318</b> and downstream ports <b>328</b> coupled to the NIC <b>320</b>, a video output device <b>322</b> and an audio output device <b>324</b>. The NIC <b>320</b>, video output device <b>322</b> and audio output device <b>324</b> may be configured as “endpoint” devices as provided in the PCI Express Base Specification, Chapter 1.
[0042] According to an embodiment, the NIC <b>320</b> may forward media data in received data packets to either the video output device <b>322</b> or audio output device <b>325</b> through the switch <b>316</b> and independently of processes hosted on the host processing system. Upon receipt of a data packet from a communication system, the NIC <b>320</b> may process the received data packet according to a network protocol (e.g., TCP/IP) to determine a destination. Based upon the destination, the NIC <b>320</b> may then forward media data from the data packet through the switch <b>316</b> to a media decoding device coupled to a downstream port <b>328</b> by, for example, initiating a DMA write transaction addressed to the media decoding device.
[0043] It should be understood that the NIC <b>320</b> may employ endpoint to endpoint routing protocols to forward media data to either the video output device <b>322</b> or audio output device <b>324</b> according to the PCI Express Base Specification. While FIG. 4 shows the NIC <b>320</b>, video output device <b>322</b> and audio output device <b>324</b> coupled to downstream ports <b>328</b> of a common switch <b>316</b>, it should be understood that more than one switch may be used to couple these devices through a root node. Additionally, one or more of the NIC <b>320</b>, video output device <b>322</b> and audio output device <b>324</b> may be coupled directly to a root complex while the other devices are coupled to downstream ports of a switch. However, these are merely examples of how a NIC may forward media data to endpoint devices independently of a host processing system and embodiments of the present invention are not limited in these respects.
[0044]FIG. 5 shows a flow diagram illustrating a process <b>400</b> initiate the transfer of data from a NIC to one or more media decoding devices in response to a media event according to an embodiment of the processing platform <b>200</b> shown in FIG. 3. The process <b>400</b> may be executed by a host processing system under the control of machine-readable instructions stored in a storage medium (e.g., the system memory <b>212</b>). At block <b>402</b>, a process on the host processing system may detect the start of a media event. The start of the media event may be detected by an application program by, for example, detecting a “play” command or the enqueuing of a media title (e.g., the enqueuing of a song or video clip). Alternatively, a media event may be detected by detecting a receipt of one or more data packets a media server as part of an acknowledgement to a request transmitted by the host processing system according to a “handshaking” protocol. However, these are merely examples of how the start of a media event may be detected and embodiments of the present invention are not limited in these respects.
[0045] The media event (detected at block <b>402</b>) may be characterized as a “session” during which data packets may be received from a media server and processed (e.g., for driving media output devices). The media data in the data packets received in a media event may be formatted according to any one of several media encoding formats or media types (e.g., MPEG, AVI, MP3, JPEG, WMA, H.263, RealAudio or RealVideo). The media type may be detected upon detection of the media event at block <b>402</b>. Diamond <b>404</b> determines whether the media offloading system is capable of processing the media data in the data packets based upon the associated media type.
[0046] Diamond <b>408</b> may determine the availability of media decoding devices to process the media data (to be received in data packets during the media event) based upon the media type associated with the media data. For example, diamond <b>408</b> may determine the availability of media decoding devices coupled to a data bus which are capable of decoding media data from a particular media encoding format. Diamond <b>408</b> may also determine whether any of these media decoding devices are capable of claiming DMA write transactions on a data bus (e.g., whether any media decoding device comprises sufficient addressable memory which is accessible by the data bus). According to an embodiment, diamond <b>408</b> may determine the availability of such media decoding devices from configuration tables formed by the host processing system during data bus enumeration and/or attempting to forward media data to one or more media decoding devices. However, these are merely examples of determining the availability of a media decoding device to decode media data encoded in a particular format, and embodiments of the present invention are not limited in these respects.
[0047] If media off-loading is supported as determined at diamonds <b>404</b> and <b>408</b>, block <b>410</b> may transmit session information to the NIC <b>220</b> and block <b>412</b> may transmit output information to one or more media decoding devices. Such session information may enable the NIC <b>220</b> to associate a received data packet with a media event and forward media data to a media decoding device. Such session information for use in associating an incoming data packet with the media event may include information to be compared with information in the data packet such as information of TCP/IP header (e.g., source or destination port number or packet sequence number). Alternatively, such session information may be compared with a session identifier encapsulated in a payload portion of the data packet. However, these are merely examples of information in a received data packet that may be associated with a media event and embodiments of the present invention are not limited in these respects.
[0048] Session information transmitted to the NIC <b>220</b> at block <b>410</b> may also include, for example, address information associated with each media decoding device (e.g., addresses to which DMA bus transactions may be addressed), a decryption format or key, and information to be used in associating incoming data packets with the media event. However, these are merely examples of session information that may be provided to a NIC to execute off-loaded processing and embodiments of the present invention are not limited in these respects.
[0049] The session information may enable the NIC <b>220</b> to associate the media data in each data packet with a destination media decoding device capable of processing the media data. For example, the NIC <b>220</b> may construct a look lip table in memory (not shown) to associate information in received data packets (e.g., session identifier and/or information in a TCP/IP header such as source or destination port numbers or packet sequence numbers) with address information associated with each destination media decoding device. The NIC <b>220</b> may subsequently forward media data from a received data packet toward a destination media decoding device based upon the address information associated with information in the data packet.
[0050] Output information transmitted to the media decoding devices at block <b>412</b> may include, for example, information identifying data encoding, compression or encryption formats, or encryption keys to be used in processing media data received from the NIC <b>220</b>. Output information may also include any data formats in which a media decoding device is to receive the forwarded media data from the NIC. However, these are merely examples of output information that may be provided to a media decoding device to process media data and embodiments of the present invention are not limited in these respects. Block <b>414</b> notifies the NIC <b>220</b> to commence forwarding media data to the media decoding devices.
[0051] While block <b>412</b> shows that output information is provided to the media decoding devices from the host processing system according to the embodiment of process <b>400</b>, in alternative embodiments the NIC <b>220</b> may provide output information to the media decoding device transparently to the host processing system following block <b>414</b>. In one embodiment, the host processing system may provide the output information to the NIC <b>220</b> and the NIC <b>220</b> subsequently forwards the output information to the media decoding devices. Alternatively, the NIC <b>220</b> may provide the output information to the media decoding devices from a memory device (not shown) independently of the host processing system.
[0052]FIG. 6 shows a flow diagram illustrating a process <b>500</b> of forwarding data packets received at the NIC <b>220</b> to one or media decoding devices according to an embodiment of the processing platform shown in FIG. 3. In one embodiment, the process <b>500</b> may be executed following, or in response to, the process <b>400</b> illustrated in FIG. 5. The process <b>500</b> may also be executed by logic in the NIC <b>220</b> such as an embedded microcontroller to execute machine-readable instructions stored in an embedded storage device. Alternatively, the process <b>500</b> may be controlled by logic in an ASIC or FPGA embedded in or coupled to the NIC <b>220</b>. However, these are merely examples of logic that may be implemented in conjunction with a NIC to process and forward media data to devices independently of a host processing system, and embodiments of the present invention are not limited in these respects.
[0053] At block <b>502</b>, the NIC <b>220</b> may receive a data packet from a communication network originating at, for example, a media server coupled to the communication network. Diamond <b>504</b> may determine whether information in the received data packet (e.g., session identifier and/or information in a TCP/IP header such as packet sequence number or source or destination port numbers) matches session information associated with a media event (e.g., session information provided to the NIC <b>220</b> at block <b>410</b>). For example, diamond <b>504</b> may associate information in the received data packet by accessing a TCP/IP offload cache table to obtain session information associated with the media event. If information in the received data packet is associated with the media event, then block <b>512</b> may perform off-load processing including, for example, processing packet header information according to a network communication protocol to associate an address of a destination media decoding device (e.g., TCP/IP header processing according to look up table) and any decrypting of payload contents. However, these are merely examples of off-load processing and embodiments of the present invention are not limited in these respects.
[0054] At block <b>512</b>, the NIC <b>220</b> may additionally process media data from a received data packet to be in a format which can be processed by the media decoding device that is to receive the data packet. For example, for data packets to be forwarded to one particular media decoding device, block <b>512</b> may strip header information from the data packet and combine payload media data with the media data from other data packets in a reassembled data structure to be forwarded. Additionally, the NIC <b>220</b> may decode all or a portion of media data in a data packet payload and forward decoded media data to a destination media decoding device. The media decoding device may then perform some additional decoding or no additional decoding on the decoded media data to generate a signal to drive a media output device. For another particular media decoding device capable of receiving media data in network protocol data packets (e.g., TCP/IP data packets), block <b>512</b> may merely enable forwarding the received data packet intact. However, these are merely examples of how a NIC may process a data packet based upon a particular destination device and embodiments of the present invention are not limited in these respects.
[0055] At block <b>514</b>, the NIC <b>220</b> may forward media data from received data packets (processed at blocks <b>510</b> and <b>512</b>) to a destination media decoding device (e.g., the video output device <b>222</b> or audio output device <b>224</b>) independently of the host processing system based upon the destination information determined at block <b>510</b>. For example, the NIC <b>220</b> may initiate a DMA write transaction addressed to the destination media decoding device (e.g., DMA write transaction addressed to an address that is claimed by the destination media decoding device). Block <b>516</b> may then provide an status update message to a process at the host processing system.
[0056] While there has been illustrated and described what are presently considered to be example embodiments of the present invention, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from the true scope of the invention. Additionally, many modifications may be made to adapt a particular situation to the teachings of the present invention without departing from the central inventive concept described herein. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the invention include all embodiments falling within the scope of the appended claims.
Contents3
5 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8605712B1 | Cited by | United States of America | Search report |
| US11429438B2 | Cited by | United States of America | Applicant |
| US8102843B2 | Cited by | United States of America | Search report |
| US2008256173A1 | Cited by | United States of America | Pre-grant |
| US2006018341A1 | Cited by | United States of America | Pre-grant |
| US7493416B2 | Cited by | United States of America | Applicant |
| US9794378B2 | Cited by | United States of America | Applicant |
| US2013145035A1 | Cited by | United States of America | Search report |
| US9674318B2 | Cited by | United States of America | Applicant |
| US9904481B2 | Cited by | United States of America | Applicant |
| US7536291B1 | Cited by | United States of America | Applicant |
| US7174413B2 | Cited by | United States of America | Applicant |
| US8644316B2 | Cited by | United States of America | Search report |
| US7188209B2 | Cited by | United States of America | Search report |
| US2004260842A1 | Cited by | United States of America | Pre-grant |
| US2015120799A1 | Cited by | United States of America | Pre-grant |
| US2009157881A1 | Cited by | United States of America | Pre-grant |
| US11394664B2 | Cited by | United States of America | Applicant |
| US9319353B2 | Cited by | United States of America | Applicant |
| US10838763B2 | Cited by | United States of America | Applicant |
| US2006184711A1 | Cited by | United States of America | Pre-grant |
| US9648081B2 | Cited by | United States of America | Applicant |
| US11134140B2 | Cited by | United States of America | Search report |
| US2004225834A1 | Cited by | United States of America | Pre-grant |
| US11928031B2 | Cited by | United States of America | Applicant |
| US2005172041A1 | Cited by | United States of America | Pre-grant |
| US2012087379A1 | Cited by | United States of America | Pre-grant |
| US2004156393A1 | Cited by | United States of America | Pre-grant |
| US11132317B2 | Cited by | United States of America | Applicant |
| US9667728B2 | Cited by | United States of America | Search report |
| US2008288664A1 | Cited by | United States of America | Pre-grant |
| US2009327693A1 | Cited by | United States of America | Pre-grant |
| US2005025119A1 | Cited by | United States of America | Pre-grant |
| US9996498B2 | Cited by | United States of America | Applicant |
| US10346069B2 | Cited by | United States of America | Applicant |
| US7512717B2 | Cited by | United States of America | Applicant |
| US10671472B2 | Cited by | United States of America | Applicant |
| US9898213B2 | Cited by | United States of America | Applicant |
| US11513696B2 | Cited by | United States of America | Applicant |
| US2007098012A1 | Cited by | United States of America | Pre-grant |
| US10686731B2 | Cited by | United States of America | Applicant |
| US2006253605A1 | Cited by | United States of America | Pre-grant |
| US11374777B2 | Cited by | United States of America | Applicant |
| US10749994B2 | Cited by | United States of America | Applicant |
| WO2008058254A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US7490207B2 | Cited by | United States of America | Search report |
| US11876880B2 | Cited by | United States of America | Applicant |
| US7219183B2 | Cited by | United States of America | Applicant |
| US2006224852A1 | Cited by | United States of America | Pre-grant |
| US2013145035A1 | Cited by | United States of America | Pre-grant |
| US2010322091A1 | Cited by | United States of America | Pre-grant |
| US2004268015A1 | Cited by | United States of America | Pre-grant |
| US2010287234A1 | Cited by | United States of America | Pre-grant |
| US2011238777A1 | Cited by | United States of America | Pre-grant |
| US2006040638A1 | Cited by | United States of America | Pre-grant |
| US2011087851A1 | Cited by | United States of America | Pre-grant |
| US2013145035A1 | Cited by | United States of America | Search report |
| US10572417B2 | Cited by | United States of America | Applicant |
| US2005157725A1 | Cited by | United States of America | Pre-grant |
| US2006230244A1 | Cited by | United States of America | Pre-grant |
| US2016283422A1 | Cited by | United States of America | Pre-grant |
| US10686872B2 | Cited by | United States of America | Applicant |
| US2006271968A1 | Cited by | United States of America | Pre-grant |
| US2005053060A1 | Cited by | United States of America | Pre-grant |
| US2008109562A1 | Cited by | United States of America | Pre-grant |
| US10469632B2 | Cited by | United States of America | Applicant |
| US7908555B2 | Cited by | United States of America | Applicant |
| US8767759B2 | Cited by | United States of America | Search report |
| US10515037B2 | Cited by | United States of America | Search report |
| US10425512B2 | Cited by | United States of America | Applicant |
| US10168931B2 | Cited by | United States of America | Applicant |
| US2007233663A1 | Cited by | United States of America | Pre-grant |
| US2011078295A1 | Cited by | United States of America | Pre-grant |
| US11615002B2 | Cited by | United States of America | Applicant |
| US9424214B2 | Cited by | United States of America | Search report |
| US10996866B2 | Cited by | United States of America | Applicant |
| US2011022814A1 | Cited by | United States of America | Pre-grant |
| US2011010440A1 | Cited by | United States of America | Pre-grant |
| US2005147117A1 | Cited by | United States of America | Pre-grant |
| US2010011432A1 | Cited by | United States of America | Pre-grant |
| WO2008058254A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2004210678A1 | Cited by | United States of America | Pre-grant |
| US7184445B2 | Cited by | United States of America | Search report |
| US2005172047A1 | Cited by | United States of America | Pre-grant |
| US10505747B2 | Cited by | United States of America | Applicant |
| CN103713542A | Cited by | China | Search report |
| US11394768B2 | Cited by | United States of America | Applicant |
| US2009164853A1 | Cited by | United States of America | Pre-grant |
| US2009125690A1 | Cited by | United States of America | Pre-grant |
| US11175982B2 | Cited by | United States of America | Applicant |
| US10191675B2 | Cited by | United States of America | Applicant |
| US7502370B2 | Cited by | United States of America | Applicant |
| TWI584124B | Cited by | Taiwan Province of China | Examiner |
| US2005102437A1 | Cited by | United States of America | Pre-grant |
| US2004172494A1 | Cited by | United States of America | Pre-grant |
| US10523402B1 | Cited by | United States of America | Search report |
| US2005027900A1 | Cited by | United States of America | Pre-grant |
| US10659555B2 | Cited by | United States of America | Applicant |
| JP2013097734A | Cited by | Japan | Search report |
| US11416328B2 | Cited by | United States of America | Applicant |
2 members in 2 offices
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 27070302 | United States of America | A | |
| US20020270703 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2004073716A1 | United States of America | A1 | |
| CN1503528A | China | A |
2 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2004073716
- Publication, EPODOC
- US2004073716
- Application
- 10270703
- Application, DOCDB
- 27070302
- Application, EPODOC
- US20020270703
Titles
- English
- System, device and method for media data offload processing
Classification
- CPC, 1
- H04L69/12
- IPC, 1
- H04L29 06
- USPC, 1
- 709250000