Patent ID: 7630612

Claim:
A method for adaptively adjusting a playback frame rate at which frames of a video stream are displayed on a playback device, the method comprising: receiving frames of the video stream at an incoming frame rate; loading the frames into a playback buffer at the incoming frame rate; reading frames from the playback buffer at the playback frame rate; computing a fill level parameter associated with the playback buffer, based on the incoming frame rate as compared to the playback frame rate, wherein the fill level parameter represents how much of the playback buffer is filled with the frames; comparing the fill level parameter to a designated level range for the playback buffer; determining an offset frame rate by which to adapt the playback frame rate so as to achieve the designated level range for the playback buffer, wherein determining an offset frame rate comprises: determining a current playback buffer level associated with the video source by determining a difference between a first location associated with the playback buffer from which the video stream was last read and a second location associated with the playback buffer from which the video stream was last written; and comparing the current playback buffer level with the designated level range to determine the offset frame rate; adapting the playback frame rate by combining the determined offset frame rate with the incoming frame rate so as to increase or decrease the playback frame rate to adjust the fill level parameter into the designated level range, the playback frame rate being increased or decreased in a graduated manner to prevent perceptible degradation during the playback, wherein the video stream does not encode clocking information, wherein the video stream does not encode frame rate information, and wherein adapting the playback frame rate includes: reading a video sample associated with the video stream from the playback buffer at a faster rate when the fill level parameter is higher than the designated level range, and reading the video sample from the playback buffer at a slower rate when the fill level parameter is lower than the designated level range; playing the video stream at a display device; capturing the video stream at a video source device, including filling a video buffer with the video stream; packetizing the video stream into at least one corresponding video sample; sending the video sample over a network to the playback buffer; establishing the designated level range of 40-60% of capacity of the playback buffer; establishing the designated target range level such that video played from a display device associated with the playback buffer plays the video without degradation of the video displayed; determining whether more of the video source remains in the playback buffer, and continuing to read the video source from the playback buffer as long as more of the video source remains in the playback buffer; and maintaining at least 200 ms of the video source in the playback buffer at all times.