In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of the subject matter briefly described above will be rendered by reference to specific embodiments which are disclosed in the appended drawings. Understanding that these drawings depict only typical embodiments and are not therefore to be considered to be limiting in scope, embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
As noted above, example embodiments of the invention relate to methods for dynamically altering the timing associated with the sending of acknowledgment packets across a network. An acknowledgment packet is generally sent by a receiving computer to acknowledge that a data packet has been received. Acknowledgment packets can be used in conjunction with network protocols that provide a reliable delivery network layer, such as TCP/IP. However, in consequence of bandwidth limitations and other limiting network characteristics of various network technologies, the timing associated with sending acknowledgment packets can be crucial to the network performance. Among other things, the example methods disclosed herein provide dynamic criteria whereby the timing associated with sending acknowledgment packets can be dynamically optimized over a range of network performance conditions. This timing optimization can be used to efficiently stream time-dependent audio/video data using inefficient network technologies, such as WiFi. The term “time-dependent audio/video stream” as used herein is defined as a stream of data containing digital audio and/or video material that is capable of being at least partially presented to a user before the entire stream has been received.
WiFi networks are half-duplex packet-switched networks. Half-duplex packet-switched networks allow for alternating transmission of packets in two directions, but not in both directions simultaneously. Therefore, unlike fill-duplex packet switched networks, half-duplex packet-switched networks do not allow packets to be sent and received simultaneously. Compared to full-duplex networks, half-duplex networks consume more bandwidth. Therefore, decreasing the bandwidth consumed by sending acknowledgement packets has the effect of increasing the bandwidth available for receiving data packets. Increasing the bandwidth available for receiving data packets can improve the presentation of a time-dependant audio/video stream to an end user. For example, the display of a streaming DVD quality video may experience less skipping, glitching, pausing and other noticeable and unacceptable audio and/or video effects because of the increased bandwidth available for receiving data packets.
The example methods disclosed herein can be implemented in a dual processor system, where the dual processors are interconnected via an interface intended for connection to storage devices such as an IDE interface. IDE interfaces are typically used for storage communication as opposed to processor interconnection. A system may include a specialized media decoder processor which includes specialized hardware for decoding and displaying media data, such as audio, video and/or image data. The decoder processor may be connected via an IDE interface, or other storage based connection, to a network processor that includes functionality for sending and receiving data across a network. By connecting the network processor to the decoder processor through an IDE interface, the network processor can be treated by the decoder processor as an IDE storage device. The network processor can be used to convert storage operations to network operations and vice versa.
The network processor includes an interface for connecting to a network where data can be obtained. For example, the network processor may connect to a server which includes physical storage for storing data. To obtain video or other data, the video decoder processor may send storage device protocol messages across the IDE interface and to the network processor. This is done in a transparent fashion such that the decoder processor treats the network processor as a storage device. The network processor can then obtain data from a server across a network and provide the data to the decoder processor in a fashion similar to how a storage device provides data across an IDE interface. Because data is being obtained by the network processor across a network, network delays may be introduced into the architecture.
Referring now to
In the illustrated embodiment, the media server 102 is connected through a router 104 to various clients in the network. The clients on the network may include specialized media adapters configured to provide media to users. As will be discussed further, the media adapters may include specialized hardware optimized for providing the media to users. For example, the media adapters may include processors that are optimized for decoding compressed audio, video or image data. The media adaptors may be embodied in a number of forms. For example,
Each of the media adapters, whether embodied as an integrated unit or as a standalone unit, is connected, in this example, through the router 104 to the media server 102. The connections between the media server 102, router 104 and media adapters may be any suitable network connection including hardwired Ethernet connections, wireless WiFi connections, or any other suitable connection. Notably, some embodiments described herein optimize wireless network connections to maintain suitability for transmitting high bit rate media files.
Referring now to
Similar to the decoder processor 202, the illustrated network processor 204 has a flash memory 212 and a DRAM memory 214 connected to it. The flash memory 212 and DRAM memory 214 are computer readable media that may include computer executable instructions that can be executed by the network processor 204. In addition, the DRAM memory 214 may store data for delivery to the decoder processor 202. For example, the network processor 204 may receive data from a data store such as the media server 102. This data may be stored in the DRAM memory 214 for delivery to the decoder processor 202. Such data may include for example, media, file information, directory information, or other information. In this example, the network processor 204 may be connected to a media server through one or more different network connections.
Again, in the illustrated example the two processors, the decoder processor 202 and network processor 204, are connected through an IDE bus 206. Ordinarily such communications would take place on a PCI or other type of communication bus. Typically, an IDE bus is used for connecting storage to a processor. However, by using an IDE bus 206 to connect to the decoder processor 202 and network processor 204, several advantages can be realized. For example, typical decoder processors come equipped with a standard IDE bus interface for connecting storage to the decoder processor. However, some decoder processors may not come equipped with network connectivity, and as such may not be suitable on their own for use in a media adapter connectable in a network. By using the IDE bus interface (or similar storage connection-oriented bus interface) to connect through an IDE bus to a network processor, networking functionality can be added to virtually any media decoder processor.
This type of configuration allows for a number of other advantages as well, including: the ability to use a smaller operating system, easier selection of a specialized network processor, easy replacement of the network processor in subsequent designs when additional networking speeds and functionality become available, easy replacement of the decoder processor in subsequent designs, reduced memory requirements, etc.
Ordinarily, a storage device connected to a host processor through an IDE bus is somewhat passive in nature. In other words, an IDE device typically accepts commands from the host processor, and can be polled by the host processor for information, but does not usually provide data to the host processor without first being prompted. In the example shown in
For example, the network processor 204 may be able to detect various conditions such as a storage device not being connected to one of the network connections 218, 220, or the inoperability of the network. The network processor 204 can thus signal on the hardware line 228 that it has data for the decoder processor. When the decoder processor 202 polls the network processor 204, the network processor 204 can provide the diagnostic information.
In the illustrated example, the particular decoder processor 202 shown is an MPEG1/2/4 decoder, which may be implemented using part numbers ES6425FF, ES8381FCD, or ES6430FAA available from ESS Technology, Inc. located in Fremont Calif. While any one of a number of different devices/implementations could be used, these particular decoders include various hardware components including a central processing unit, a DMA state machine, an interrupt state machine and a media player state machine. The central processing unit coordinates interactions between the different state machines and generally manages data flow and decoding activities. The DMA state machine manages DMA data requests to perform DMA data handling. The interrupt state machine generally includes a number of registers and indicators indicating active interrupts for obtaining service from the central processing unit from other components including components included in the decoder processor 202. The media player state machine includes functionality for controlling how media is accessed and played for a user. For example, the media player state machine may include functionality for implementing play, pause, fast-forward, rewind, etc. This can be used to control what data is requested, and when the data is requested.
Some network protocols over which data is received by a media player require that the received data be acknowledged by the media player. For example, where a media player is connected to a WiFi network utilizing TCP/IP, each data packet received by the media player must be acknowledged by the media player. This acknowledgement of received data packets is accomplished by sending an acknowledgment packet to the sender of the data packets. As disclosed elsewhere herein, the timing of sending acknowledgement packets can impact the bandwidth available for receiving data packets in a WiFi network.
Turning now to
As disclosed in
As disclosed in
Turning now to
As disclosed in
As disclosed elsewhere herein, limited network bandwidth for receiving data packets can cause the display of a time-dependent digital audio/video stream to skip, glitch, pause or otherwise have noticeable and unacceptable audio and/or video effects. Decreasing the bandwidth used for sending acknowledgment packets can increase the bandwidth for receiving data packets. Therefore, the timing associated with sending acknowledgment packets can be crucial to network performance.
With continued reference to
Method 400 includes an act 402 of determining whether a receive data window contains unacknowledged data. If the receive data window does not contain unacknowledged data, the method 400 repeats the act 402 until it is determined that the receive data window does contain unacknowledged data. When it is finally determined that the received data window does contain unacknowledged data, then the method 400 proceeds to an act 404, described below.
For example, the network processor 204 of the television 106 can determine that the receive data window 302 contains at least one unacknowledged data packet. In either scenario 300 or scenario 350, the unacknowledged data in the receive data window 302 can be digital audio/video data that was streamed from the UPnP media server 102 by way of the wireless router 104.
Method 400 also includes an act 404 of determining whether the time since the time tE that the earliest unacknowledged data packet in the receive data window was received is less than a pre-determined deferred acknowledgment time tPD. In other words, the act 404 involves determining whether tPD<tC−tE, where tC is the current time.
For example, the pre-determined deferred acknowledgment time tPD for the processor 204 of television 106 may be 7 milliseconds. In the scenario 300 disclosed in
On the other hand, in the scenario 350 disclosed in
Method 400 also includes an act 406 of updating a dynamically-determined percentage PDD of the receive data window. This dynamically-determined percentage PDD is not constant and, therefore, may change any time before the performance of an act 408, as discussed below, based on a number of factors.
For example, the dynamically-determined percentage PDD updated in the act 406 can be dynamically determined, at least in part, proportional to the average amount of time between sending an acknowledgment packet and receiving the next data packet. For example, as the average amount of time between sending an acknowledgment packet and receiving the next data packet increases, the dynamically-determined percentage PDD updated in the act 406 can also be proportionally increased.
In addition, the dynamically-determined percentage PDD updated in the act 406 can be dynamically determined, at least in part, inversely proportional to the time that a time-dependent audio/video stream currently being received can continue to be presented uninterrupted without additional data. For example, the data packets A-E of
Furthermore, the dynamically-determined percentage PDD updated in the act 406 can also be dynamically determined, at least in part, inversely proportional to the number of bytes received in each data packet. For example, as the data packets received by the buffer 302 increase in size, the dynamically-determined percentage PDD updated in the act 406 can be proportionally decreased.
Method 400 also includes an act 408 of determining whether the portion PUD of the receive data window with unacknowledged data is less than a dynamically-determined percentage PDD. In other words, the act 408 involves determining whether PUD<PDD.
For example, in the scenario 300 disclosed in
If the conditions of the acts 404 and 408 are determined to be true, then the method 400 also includes an act 410 of delaying the sending of an acknowledgement packet. If, however, the conditions of either the acts 404 or the act 408 are determined to be false, then the method 400 includes an act 412 of sending an acknowledgement packet for all of the unacknowledged data packets in the receive data window.
For example, in the scenario 300 of
As disclosed in
The example method 400 can be implemented using computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.