The present invention relates to multimedia streaming over a network More particularly, the present invention relates to adapting the transmission rate of streamed multimedia to changing network conditions. Most particularly, the present invention introduces the concept of a “Virtual Clock” as a mechanism for a streaming server to perform dynamic transmission rate adaptation in a way that balances the bandwidth requirement of the content to be transmitted with the bandwidth available of the Internet.
The design and implementation of state-of-the-art streaming servers generally includes a constant-frequency clock that is essentially the same as the computer clock of the computer hosting the server application. Packet scheduling and transmission are carried out according to the constant rate of this clock. The transmission rate is pre-determined only by the encoded content. This is evidenced in the implementation of Darwin Streaming Server, that was developed by Apple and its source code that is openly available to public, see, for example, http://developer.apple.com/darwin/projects/streaming/.
Since the available bandwidth of packet switching networks is time-varying, it is necessary for a streaming application to be able to adjust its transmission rate according to network conditions. Currently available techniques for rate adaptation include layer switching and selective layer subscription.
In layer switching, the server maintains multiple copies of the same content but encoded with different qualities and therefore different bit rates. The server can dynamically switch between these copies (or layers) to achieve rate adaptation.
In selective layer subscription, the server only store one copy of the content encoded by a scalable coding scheme such as Fine-Granular Scalability (FGS) or other similar scheme. A scalable coding scheme generates multiple accumulative layers that can be sequentially added up at the receiver side to get better and better decoded quality. In real time, the server only transmits the sub-set of the layers that have been explicitly requested, i.e., subscribed to, by the receiver. When the receiver changes its layer subscriptions according to perceived network conditions, the rate adaptation is achieved. The latter scheme is widely proposed for multicast and commonly referred to as receiver-driven layer multicasting.
The limitation of the above techniques is their adaptation granularity. Both schemes can only achieve coarse-grained rate adaptation. In other words, they can only adapt rates to a level that is not frequent enough. However, experiments have shown that network conditions can change dramatically over relatively small time scales due to dynamic background traffic or temporary degradation of a wireless link.
An adaptive playout technique has been proposed. In this technique, the receiver dynamically changes video playout speed to avoid buffer starvation or overflow in the event of network congestion. However, this technique is proposed only for the receiver side, and has no effect on packet transmission over the network. In fact, a combination of the present invention with this proposed adaptive playout strategy may result in a more efficient and robust streaming technique.
Thus, a method that can achieve fine-grained rate adaptation in streaming applications is highly desirable. The present invention provides a “Virtual Clock” having variable frequency that can be used by a multimedia streaming server to dynamically adapt its transmission rate to changing network conditions. This “Virtual Clock” compensates for a potential limitation of the Internet Real-time Transmission Protocol (RTP), that stamps every packet it delivers with a timestamp and expects the server using this timestamp to schedule the transmission of this particular packet. Consequently, the transmission rate is pre-determined by the encoded multimedia content when RTP is used. By providing a “Virtual Clock” according to the present invention, the multimedia streaming server has a mechanism to overcome this RTP limitation and perform transmission rate adaptation in a way that balances the bandwidth requirement of the content and the bandwidth availability of the network.
The “Virtual Clock” of the present invention addresses the issue of fine-grained rate adaptation. A streaming server needs a clock to schedule the transmission of time-stamped RTP packets. If the clock moves forward at a constant rate, then the transmission rate will be pre-determined by the RTP timestamps that are normally generated at coding stage.
By contrast, a “Virtual Clock” according to the present invention, adopts a time-varying frequency. When such a clock is used by a server to schedule transmissions, it provides a variable to be added to the transmission rate that was pre-determined by the encoder. In this way, the transmission rate can be elastic in its response to changing network conditions.
For example, assume the frequency for a real clock is 1 100, as illustrated in
Since the adjustment of the frequency of the “Virtual Clock” can be carried out over any time scale, particularly over small time scales, the “Virtual Clock” of the present invention can be used to achieve fine-grained rate adaptation and is the most important characteristic of “Virtual Clock”. By combining the “Virtual Clock” with other methods, such as in the example presented above, a streaming server is able to adapt its transmission rate over both large and small time scales, achieving better responsiveness to dynamic network conditions. Improved responsiveness leads to better network resource utilization and better video quality.
a illustrates packet arrival time at the network interface for a real clock.
b illustrates packet arrival time at the network interface for a “Virtual Clock” according to the present invention having a frequency greater than that of the real clock illustrated in
c illustrates packet arrival time at the network interface for a “Virtual Clock” according to the present invention having a frequency less than that of the real clock illustrated in
Assume f(t) is the frequency of the “Virtual Clock”, R0(t) is the predetermined RTP packet rate, RL(t) is the network bandwidth that is available to this streaming application, and the frequency of a real clock is 1. Also assume T is a time period in which both the real clock and the “Virtual Clock” advance the same distance in time space. That is
In a preferred embodiment, the frequency of the “Virtual Clock” is configured as follows
The formula (1) prescribes a general principle about how to configure the frequency of the “Virtual Clock” such that after every T time the two clocks re-synchronize, which is necessary for real-time streaming applications.
R0(t) is obtained from the encoded contents that are stored in the server. RL(t) 5 is measured by either the network interface driver at the server, or some dedicated network components residing in the network or at the receiver, and that calculates available bandwidth for the streaming application.
For example, in the instance of in-home 200 streaming over wireless illustrated in
In another preferred embodiment, in order to provide “Virtual Clock” service in parallel with real clock service to streaming applications by a host computer, a kernel function is implemented that has the form
void getvirtualclockfrequency(double demandbandwidth, double*virtualfequency).
When invoked, this function interacts with the network card driver or lower layer protocols to return a virtual frequency to the server. The server then maps the real clock to the “Virtual Clock”.
As illustrated in
The systems and methods of the present invention, as described above and shown in the drawings, provide for a ‘virtual ‘clock’ base on changing network conditions. It will be apparent to those skilled in the art that various modifications and variations can be made in the methods and systems of the present invention without departing from the spirit or scope of the invention. Thus, it is intended that the present invention include modifications and variations that are within the scope of the appended claims and their equivalents.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/IB03/05855 | 12/10/2003 | WO | 6/8/2005 |
Number | Date | Country | |
---|---|---|---|
60432974 | Dec 2002 | US |