Abstract:
The decode rate of an MPEG decoder of streaming video is set to a relatively slow value at the start of a stream to permit playing, albeit at relatively low speeds, of the video until such time as an appropriate number of packets are in a receive buffer, at which time the decode rate is speeded up to normal.

Description:
I. FIELD OF THE INVENTION  
       [0001]     The present invention relates generally to streaming video such as streaming MPEG video.  
       II. BACKGROUND OF THE INVENTION  
       [0002]     Streaming video has been introduced in which video, typically in an MPEG format, is “streamed” in packets from a source such as an Internet site to a receiver such as a user&#39;s computer. The video is played as it is being received. Because streaming video networks can experience packet delivery jitter, meaning that the rate at which the packets is received can vary, packets ordinarily are buffered at a receiver until a sufficient number of packets have arrived to permit decoding and playing the packets in a relatively smooth, glitch-free manner.  
         [0003]     As recognized herein, this buffering of packets causes an undesirable delay in presentation at the start of the stream, as presentation is held in abeyance until sufficient packets exist in the buffer to more or less ensure a glitch-free, smooth decode and play process. The present invention understands that simply giving a user the option of establishing a relatively low amount of data that must be present in the buffer before presentation commences, while increasing system responsiveness, also increases the risk of glitches during display, since the buffer can empty during play in the presence of network latency relatively sooner than it otherwise would. In other words, allowing a user to make the responsiveness/glitch-free tradeoff, and then maintaining the user-defined buffer amount for all subsequent streaming operations until such time as the user might alter it, leads to less than optimum results. Having made these critical observations, the invention herein is provided.  
       SUMMARY OF THE INVENTION  
       [0004]     A streaming video receiver includes a decoder that decodes video packets at a decode rate. A receive buffer in the receiver stores video packets before sending the packets to the decoder. According to the present invention, the receiver executes logic to dynamically establish the decode rate based on an amount of data in the buffer.  
         [0005]     In some implementations the decoder may receive the decode rate from a phase-locked loop (PLL). The decoder can be an MPEG decoder. The logic that is executed by the receiver can establish a first decode rate if the amount of data in the buffer does not meet a threshold, and can establish a second decode rate faster than the first decode rate if the amount of data in the buffer meets the threshold. To do this, in some implementations the logic controls the PLL to output the decode rate to the decoder. The first decode rate may be established automatically upon initially receiving the video stream.  
         [0006]     In another aspect, a streaming video system includes a receiver buffer storing packets of a video stream, and an MPEG decoder receiving packets from the buffer at a decode rate. The system also includes a PLL that outputs a signal representing the decode rate to the decoder. Specifically, the PLL outputs a signal representative of a first decode rate at or near the beginning of receiving the video stream, with the PLL automatically being altered to output a second decode rate faster than the first decode rate based on an amount of data in the buffer.  
         [0007]     In still another aspect, a method for video decoding includes receiving a video stream, and establishing a slow decode rate at the beginning of the stream. Then, the method includes establishing a normal decode rate based on an amount of buffered data.  
         [0008]     The details of the present invention, both as to its structure and operation, can best be understood in reference to the accompanying drawings, in which like reference numerals refer to like parts, and in which: 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]      FIG. 1  is a block diagram of one non-limiting implementation of the system; and  
         [0010]      FIG. 2  is a flow chart of a non-limiting implementation of the logic.  
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0011]     Referring initially to  FIG. 1 , a streaming video system is shown, generally designated  10 , having one or more sources  12  of streaming video packets  14  and one or more receivers  16 . A streaming video source may be any suitable source such as a Web site, broadcast, or other source preferably of packetized video streams that may be encoded in an MPEG format. Broadcast transport streams may use PCR information sent with the packets, with the PCR information indicating the rate of encoding the video at the source  12 , although streaming video may not use PCR values owing to high jitter. While the present invention is directed (albeit not exclusively) to streaming video, PCR nonetheless is mentioned because the PLL that can be used in accordance with present principles can be the same PLL that otherwise would use PCR values in the decoding of broadcast transport streams.  
         [0012]      FIG. 1  shows that the receiver  16  includes front-end processing in accordance with principles known in the art which outputs video packets to a buffer  20  for temporary storage. Data from the buffer  20  is sent to a decoder  22  at a decode rate that is dictated by a clocking mechanism, such as a phase-locked loop (PLL)  24  that otherwise could use PCR values when they are provided for, e.g., decoding non-streaming video. In other words, the PLL  24  is used to decode broadcast transport streams in addition to streaming video, with the PLL receiving PCR values in broadcast transport (non-streaming video) streams. In any case, decoded video is displayed on a display  26 .  
         [0013]     The receiver  16  includes a logic mechanism  28  for controlling the clocking mechanism to dynamically establish the decode rate based on the amount of data in the buffer. The logic mechanism can be a processor in the receiver, such as a core processor associated with the decoder  22 , although the location and precise nature of the logic mechanism is not limiting beyond the logic it executes. The logic mechanism  28 , as the skilled artisan will readily understand, can include a processor proper and memory for storing executable code or circuitry embodying the logic shown in  FIG. 2 . Or, the logic mechanism  28  may not include a digital processing unit per se but may be an analog or digital circuit that embodies the logic of  FIG. 2 .  
         [0014]     Now referring to  FIG. 2 , the logic commences at state  30  every time a new video stream is received, the logic being undertaken for that video stream. As indicated at block  32 , when the stream is initially received, the decode rate used by the decoder  22  is set to a slow speed. While the “slow” speed is indeed slower than the normal rate, in practical implementations its “slowness” is virtually imperceptible to the viewer. The “slow” speed can be established by configuring the PLL  24  to output, e.g., its lowest decode rate to the decoder  22 . While in one implementation a PLL is used to set the decode rate, it is to be understood that other clock mechanisms related to decode rate can be used.  
         [0015]     Block  34  indicates that with the decode rate set to “slow” at the initiation of video stream reception, a video packet (or other unit of video) is received. Recognizing that decoding even at a slow rate cannot proceed until some minimum amount of data has been buffered, at decision diamond  36  it is determined whether this minimum amount, e.g., a few percent of the capacity of the buffer, has been met. It is to be understood that “amount” of data could refer to the size in bits or bytes of buffered data or to the number of packets in the buffer or to other relevant data amount metrics.  
         [0016]     If the minimum amount is not met, the logic loops back to block  34 , but when the minimum amount is met, decoding (and thus presentation) of the video commences at block  38  at the “slow” decode rate. The logic continues to block  40  to receive another packet in the stream.  
         [0017]     At decision diamond  42  another buffer level determination is made, this time to ascertain whether the amount of data in the buffer meets an amount threshold (referred to in  FIG. 2  as a “safe” threshold) that is higher than the “minimum” threshold of decision diamond  36 . The “safe” threshold may be, e.g., ten percent or higher of the total capacity of the buffer. Regardless of the numerical value of the threshold, which may be empirically determined and optimized, if the test at decision diamond  42  is negative the logic loops back to block  40 , but otherwise the logic proceeds to block  44  to increase the decode rate. When the PLL  24  is used as the mechanism for establishing the decode rate of the decoder  22 , the PLL is set to output a higher decode rate, e.g., the rate at which video normally is decoded for viewing. The remaining packets in the stream are then received at block  46 .  
         [0018]     It is to be understood that the shift from the slow decode rate to the normal decode rate may be instantaneous or it may be gradual. For instance, if the difference between the two rates is large, the decode rate can be increased incrementally over a short period. By way of non-limiting example, the operation at block  44  could be executed by incrementally raising the decode rate by ten percent of the increase every few milliseconds until the normal rate is attained.  
         [0019]     While for ease of exposition  FIG. 2  is shown in flow chart form, it is to be understood that the logic as implemented may be, e.g., state logic or other appropriate logic structure.  
         [0020]     While the particular SYSTEM AND METHOD FOR DYNAMICALLY ESTABLISHING PLL SPEED BASED ON RECEIVE BUFFER DATA ACCUMULATION FOR STREAMING VIDEO as herein shown and described in detail is fully capable of attaining the above-described objects of the invention, it is to be understood that it is the presently preferred embodiment of the present invention and is thus representative of the subject matter which is broadly contemplated by the present invention, that the scope of the present invention fully encompasses other embodiments which may become obvious to those skilled in the art, and that the scope of the present invention is accordingly to be limited by nothing other than the appended claims, in which reference to an element in the singular is not intended to mean “one and only one” unless explicitly so stated, but rather “one or more”. It is not necessary for a device or method to address each and every problem sought to be solved by the present invention, for it to be encompassed by the present claims. Furthermore, no element, component, or method step in the present disclosure is intended to be dedicated to the public regardless of whether the element, component, or method step is explicitly recited in the claims. Absent express definitions herein, claim terms are to be given all ordinary and accustomed meanings that are not irreconcilable with the present specification and file history.