throbber
United States Patent (19)
`Wang et al.
`
`54 SYSTEM, DEVICE, AND METHOD FOR
`STREAMING AMULTIMEDIA FILE
`ENCODED AT AWARIABLE BITRATE
`
`75 Inventors: Feng Chi Wang, Newton; Thomas
`Goetz, Attleboro; Krystyna
`Wieckiewicz, Plainville, all of Mass.
`73 Assignee: Motorola Inc., Schaumburg, Ill.
`
`21 Appl. No.: 885,271
`22 Filed:
`Jun. 30, 1997
`
`Related U.S. Application Data
`63 Continuation-in-part of Ser. No. 711,701, Sep. 6, 1996.
`51) Int. Cl. ............................... H04N 7/26; H04N 7/52;
`H04N 7/56; H04N 7/62
`... 348/845; 348/423
`-
`58 Field of Search ................................. 348/845, 845.2,
`348/845.3, 423, 12, 13; HO4N 7/26, 7/52,
`7/56, 7/62
`
`56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`1/1996 Cash ..................................... 348/845.2
`
`5,481,312
`
`USOO586723OA
`Patent Number:
`11
`(45) Date of Patent:
`
`5,867,230
`Feb. 2, 1999
`
`5,612,742 3/1997 Krause .................................... 348/385
`5,659,539 8/1997 Porter.
`... 348/13
`5,768,539 6/1998 Metz ....................................... 348/385
`5,790,543 8/1998 Cloutier .................................. 348/423
`
`Primary Examiner-Howard Britton
`Attorney, Agent, or Firm-Peter Dichiara
`57
`ABSTRACT
`System, Device, And Method For Streaming A Multimedia
`File Encoded at a Variable Bitrate. The data is encoded at a
`variable bit rate and formed into packets having a Server
`time Stamp. The Server time Stamps are constructed So that
`the Streaming of the packets will be Substantially constant,
`not variable, and equal to a desired, budgeted bandwidth,
`Such as one corresponding to fully utilizing a modem link.
`To Schedule the Sending of packets, the Server uses the Server
`time Stamp, rather than, for example, the play-back time
`Stamp. By having the data encoded at a variable bit rate, the
`otherwise-unused capacity, i.e., the capacity not used by the
`Server, can be used to Send packets needed in the future. This
`is accomplished by the Server time Stamps Scheduling pack
`ets for transmission that will not be needed until the future.
`
`2 Claims, 8 Drawing Sheets
`
`
`
`PACKET OFFSET
`
`TIME STAMP
`
`PACKET LENGTH
`
`IMPORTANCE
`
`RESERVED
`
`SEND TIME
`
`Petitioners' Exhibit 1009
`Page 0001
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 1 of 8
`
`5,867,230
`
`11O
`
`TO
`VIDEO
`MULTIPLEX
`CODER
`
`VIDEO
`IN
`
`
`
`PACKET LENGTH
`
`IMPORTANCE
`
`RESERVED
`
`SEND TIME
`
`A/VG.. 6
`
`Petitioners' Exhibit 1009
`Page 0002
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 2 of 8
`
`5,867,230
`
`OOZ
`
`L- - - - - - - - -
`
`TlOH.] NOOEl LV/H_LIE
`
`
`
`
`HETTIOHI NOO
`
`
`
`
`
`092
`
`OL
`
`XI}JONALEN
`
`HEAHES
`
`HETTIOHINOO
`
`NI OEC?IA
`
`Petitioners' Exhibit 1009
`Page 0003
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 3 of 8
`
`5,867,230
`
`START
`
`3OO
`
`NIT
`
`310
`
`399
`
`32O
`
`N
`
`MORE BLKS2
`
`
`
`Y
`
`33O
`
`INCREMENT FRAME
`NUMBER BY FRAMES
`SKIPPED
`
`
`
`
`
`
`
`ENCODE
`CURRENT FRAME
`(FRAMENUMBER)
`
`340
`
`INCREMENT
`BITBACKLOG
`
`350
`
`FRAMESSKIPPED =
`MIN FRAMES
`SKPPED
`
`360
`
`DECREMENT
`BTBACKLOG
`
`370
`
`AVG. 34 N/
`
`N/
`
`Petitioners' Exhibit 1009
`Page 0004
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 4 of 8
`
`5,867,230
`
`
`
`
`
`
`
`
`
`DOES FRAMES
`SKIPPED NEED
`ADJUSTMENT
`
`DECREMENT
`BTEBACKLOG
`
`INCREMENT FRAMES
`SKIPPED
`
`A/VG. 3A
`
`Petitioners' Exhibit 1009
`Page 0005
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 5 of 8
`
`5,867,230
`
`
`
`RECEIVE USER
`VALUE OF OUANT
`
`|MT OUANT WITHIN
`MAX AND MIN
`VALUES
`
`ADJUST
`MAX FRAMES
`SKPPED IN VIEW OF
`OUANT
`
`ADJUST
`MIN FRAMES
`SKIPPED IN VIEW OF
`CRUANT
`
`ADJUST VALUES FOR
`HIGH TARGET RATES
`
`A77G. 4
`
`Petitioners' Exhibit 1009
`Page 0006
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 6 of 8
`
`5,867,230
`
`STAR
`
`5OO
`
`INITIALIZE BIT
`COUNT &
`TIME STAMP
`
`51O
`
`
`
`
`
`515
`
`MORE
`FRAMESP
`
`599
`
`END
`
`GET NEXT
`FRAME
`
`520
`
`
`
`FILL PACKET
`
`53O
`
`
`
`
`
`INSERT SERVER 540
`TMESTAMP
`INTO PACKET
`
`Az7G. a 4.
`
`Petitioners' Exhibit 1009
`Page 0007
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 7 of 8
`
`5,867,230
`
`SAVE PACKET 550
`TO FILE
`
`UPDATE
`BIT COUNT BY
`PACKET SIZE
`
`56O
`
`
`
`UPDATE TIME
`STAMP VALUE
`
`570
`
`
`
`
`
`NEED ADDITIONAL
`PACKET FOR FRAME?
`
`AVG. A.A.
`
`Petitioners' Exhibit 1009
`Page 0008
`
`

`

`U.S. Patent
`
`Feb. 2, 1999
`
`Sheet 8 of 8
`
`5,867,230
`
`7OO
`
`START
`
`799
`
`END
`
`710
`
`CONTINUE
`STREAMNG?
`
`
`
`
`
`72O
`
`STREAM A TIME
`SLICE OF PACKETS
`
`735
`
`GO TO SLEEP
`
`Az7G. Z.
`
`Petitioners' Exhibit 1009
`Page 0009
`
`

`

`1
`SYSTEM, DEVICE, AND METHOD FOR
`STREAMING AMULTIMEDIA FILE
`ENCODED AT AWARIABLE BITRATE
`
`This application is a continuation-in-part of the following
`co-pending application, which is assigned to the assignee of
`this application and which is incorporated by reference
`herein
`System, Device, And Method For Streaming A Multime
`dia File (Ser. No. 08/711,701, to Tom Goetz, Manickam
`R. Sridhar, and Mukesh Prasad, filed on Sep. 9, 1996).
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`This application is related to the following U.S. patent
`applications, all of which are assigned to the assignee of this
`application and all of which are incorporated by reference
`herein:
`Improved Video Encoding System And Method (Ser. No.
`08/711,702, to Manickam R. Sridhar and Feng Chi
`Wang, filed on Sep. 9, 1996);
`Apparatus, System, and Method for Improved Error
`Recovery in a Video Encoding System (Ser. No.
`08/741,455, to Feng Chi Wang, filed on Oct. 31, 1996);
`and System and Device for, and Method of, Encoding
`Video Information for Improved Streaming Thereof,
`filed on even date herewith, having inventor Feng Chi
`Wang Ser. No. 08/885,076.
`BACKGROUND
`1. Field of the Invention
`The invention generally relates to multimedia applica
`tions and, more particularly, to the encoding and Streaming
`of Video information over a communication network.
`2. Discussion of Related Art
`Generally Speaking, there are two modern approaches to
`"playing-back’ multimedia information located at a remote
`location, Such as playing-back a “video clip' on the Internet.
`The first approach is to have a client node download a file
`having the Video information from a corresponding
`“website,” or server node, and to then play-back the
`information, once the file has been completely transferred.
`The second approach is to have the sever node “stream” the
`information to the client node So that the client may begin
`play-back Soon after the information Starts to arrive. Because
`the Streaming approach does not Suffer from the long Start-up
`delays inherent in the downloading approach, it is believed
`to be preferable in certain regards.
`It is believed that a Substantial number of remote access
`users, Such as Internet users, access the network via a
`Voiceband modem. To this end, various communication
`standards have been proposed. H.261 and H.263, for
`example, each Specify a coded representation that can be
`used for compressing video at low bitrates. (See ITU-T
`Recommendation H.263 of 2 May 1996, which is hereby
`incorporated by reference in its entirety.)
`Because typical voiceband modems have maximum data
`rates of less than 56 Kb/s, the quality of a streamed play
`back depends on how effectively the channel is used. Tru
`eStream TM Streaming Software, version 1.1, for example,
`keeps the channel at full utilization to improve the play
`back's appearance. (TrueStream TM Streaming Software, ver
`sion 1.1, is available from Motorola, Inc.)
`In short, with version 1.1 of the TrueStream TM Streaming
`Software, a target data rate is first Selected, for example, 20
`
`5
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5,867,230
`
`2
`Kb/sec for a 28.8 Kb/sec modem, the other 8.8 Kb/sec of
`bandwidth being Saved for audio information and packet
`overhead. If a Sequence of Video frames is to be encoded and
`because of its inherent informational content the Streaming
`of the encoded data would require a data rate higher than the
`target rate, then the TrueStreamTM system adjusts certain
`encoding parameters So that encoded frames require leSS
`bits. On the other hand, if a Sequence of Video frames is to
`be encoded such that the streaming of it would not fully
`utilize the channel, the TrueStreamTM system applies a “use
`it or lose it” approach and adjusts certain encoding param
`eters to improve the Video quality and So that the channel
`capacity is used. The consequence of the above is that in the
`former case the Sequence will be played-back with pictures
`having a relatively coarser level of detail and a relatively
`Smaller frame rate, and that in the latter case, the Sequence
`will be played-back with pictures having a finer level of
`detail and a higher frame rate.
`BRIEF DESCRIPTION OF THE DRAWINGS
`In the Drawing,
`FIG. 1 shows a standard source encoder 100 having a
`known architecture;
`FIG. 2 shows a System architecture of an exemplary
`embodiment of the invention;
`FIGS. 3A-B are a flowchart of bitrate controller logic of
`an exemplary embodiment of the invention;
`FIG. 4 is a flowchart of a portion of the bitrate controller
`logic of FIG. 3 in more detail;
`FIGS. 5A-B are a flowchart of packetizer logic of an
`exemplary embodiment of the invention;
`FIG. 6 shows an exemplary packet descriptor of an
`exemplary embodiment of the invention; and
`FIG. 7 shows exemplary server logic of an exemplary
`embodiment of the invention.
`
`DETAILED DESCRIPTION
`The invention involves a System and device for, and a
`method of, encoding information for improved Streaming
`thereof.
`Exemplary embodiments of the invention encode video
`information at variable bitrates and by doing So can utilize
`the channel in new and useful ways. For example, if the
`informational content of certain Video frames can be
`encoded at a relatively low bitrate, the otherwise-unused
`channel capacity can be used to transmit information that
`will be needed for future video frames. This might be helpful
`in that a future portion of a Video Stream might require So
`much data that it might otherwise have been Streamable only
`by Sacrificing the quality of its play-back.
`The exemplary embodiments are particularly concerned
`with video information encoded according to H.263. Thus,
`material aspects of H.263 are outlined below, followed by a
`description of the exemplary embodiments.
`I. Outline of H.263
`A video Sequence is encoded and decoded as a Sequence
`of frames or pictures. Each picture is organized as groups of
`blocks (GOBs), macroblocks, and blocks, and each picture
`may be of a variety of picture formats and Subformats. In
`addition, each picture may be of INTER type, also known as
`an “I” frame, or INTRA type, which includes entities known
`as “P” frames and “PB frames.
`An "I' frame is independent in that it represents a
`complete image, or portion of an image. Its encoding and
`decoding has no dependencies on prior frames. With “P” and
`“PB” frames, on the other hand, the encoding and decoding
`depends on prior frames. P and PB frames may be thought
`
`Petitioners' Exhibit 1009
`Page 0010
`
`

`

`5,867,230
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`15
`
`3
`of as an encoded representation of the difference between
`one picture and a prior picture.
`FIG. 1 shows a standard source encoder 100. Coding
`controller 110, among other things, controls Switches 120
`and 130 and quantizer Q. In short, the controller 110 controls
`the Sampling rate, or frame rate, of the Video Sequence by
`Selecting particular frames of Video In, and it controls the
`level of detail of each encoded picture by Supplying quan
`tization parameters qZ to quantizer Q. The output informa
`tion q is a compressed version of a picture: an I frame is
`a compressed version of a current picture, or portion thereof,
`and a P or PB frame is a compressed version of difference
`information, representing the difference between the current
`picture, or portion thereof, and the last.
`For I frame blocks, coding controller 110 connects Switch
`120 to input 121 and switch 130 to input 131. Thus, Video
`In is connected to the transform block T, which processes the
`data according to a known discrete cosine transform (DCT).
`The transformed data, known as transform coefficients, are
`then quantized by quantizer Q, and the quantized informa
`tion q is received by inverse quantizer Q. The inverse
`quantized information, in turn, is received by inverse trans
`form T, and the inverse transformed information is
`received by Summation node 140. Consequently, Summation
`node 140 adds unconnected input 131 and the reconstituted
`picture information from the inverse transform T, the
`reconstituted picture information being the picture Video In
`after it has been transformed, quantized, inverse quantized,
`and inverse transformed. The output of the Summation node
`140 is thus the reconstituted picture information, which is
`Stored in picture memory P.
`For P or PB type blocks, coding controller 110 controls
`Switches 120 and 130 to connect to inputs 122 and 132,
`respectively. Difference node 150 produces the difference
`between the current block, Video In, and the prior, recon
`stituted block, provided by picture memory P. This differ
`ence information is then transformed (T), quantized (Q),
`inverse quantized (Q'), and inverse transformed (T)
`analogously to that described above. The information pro
`vided by inverse transform (T), in this arrangement,
`however, is not the reconstituted picture, but rather the
`reconstituted difference information originally provided by
`difference node 150. Summation node 140 adds the recon
`stituted difference information to the prior block, provided
`by input 132, to yield a reconstituted version of the current
`picture, which is Stored in picture memory P.
`The compression gains achieved by the above arrange
`ment result from the Statistical nature of Video information
`and from the quantization rules. In particular, a given pixel
`in one frame is likely to be the same or nearly the Same as
`a corresponding pixel of a prior frame. Moreover, pixels
`having no difference from one picture to the next tend to run
`contiguously So that many adjacent pixels might be identical
`to the corresponding pixels of a prior frame. The H.263
`quantization rules address the above with a variety of
`techniques that can be Summarized by Stating that the more
`probable video information events require leSS encoded bits
`than the less probable events. (See ITU-T Recommendation
`H.263 of 2 May 1996, at 25–27, variable and fixed length
`codes for transform coefficients.)
`The amount of bits needed to represent a picture or block
`depends on three things: (a) whether the blocks are being
`encoded as INTER or INTRA type; (b) the informational
`nature of a block in relation to a prior block; and (c) the level
`of quantization used in the encoding. Typically, INTRA
`65
`based encoding requires less bits than INTER-based encod
`ing for a given frame, and coarser detail requires leSS
`
`4
`encoded bits than finer detail, everything else being equal.
`Thus, the selection of INTER or INTRA and the level of
`quantization are the only independent variables affecting the
`amount of data required to encode a given picture, Video In.
`II. Overview of a System and Device for, and Method of,
`Encoding Video Information for Improved Streaming
`Thereof
`FIG. 2 shows an exemplary system 200 for encoding and
`packetizing files of variable bitrate video data. Video. In is
`received by encoder 220, which encodes the information,
`under the control of coding control 225 and bitrate controller
`210. The encoded data 227 is received by packetizer 230,
`which is partially controlled by bitrate controller 210, and
`which packetizes the information into a Specified format to
`create a file 235. File 235 may then be used by server logic
`240 to stream the information over the network 250.
`
`a. Encoder and Controller
`Encoder 220 includes the elements of FIG. 1, except that
`the coding controller 110 of FIG. 1 is divided into controller
`225 and bitrate controller 210, discussed below. Controller
`225 includes control features known in the art as well as
`control features described in the related applications iden
`tified and incorporated above. (The application entitled
`Improved Video Encoding System And Method includes
`features that would control the bitrate of the data stream in
`a mutually-exclusive manner to that covered by the bitrate
`controller 210. Under one embodiment of the invention, a
`user input allows Selection between the two.)
`b. Bitrate Controller
`The bitrate controller 210 partially controls the encoding
`of Video. In so that it is encoded at an efficient, variable
`bitrate while also attempting to Satisfy Specified quality
`criteria. The actual amount of data needed to encode a
`picture, and thus the bitrate, will depend on the informa
`tional content of the Video frames. In an exemplary
`embodiment, the quality criteria are to keep the quantization
`level, or the level of detail, the same for all macroblocks
`within a picture and for all pictures in a Sequence.
`The instant approach implements a “use it or lose it”
`philosophy, but “uses” the otherwise-unused bandwidth in a
`novel way. In particular, when frames are encoded at a
`relatively low bitrate (i.e., less than the target rate or Encoder
`rate, e.g., 20 Kb/sec), the unused bandwidth is effectively
`conserved So that it may be used to transmit information
`corresponding to a future portion of the Video.
`Consequently, future portions of Video having a high infor
`mational content, and thus requiring a large amount of data
`for the encoding thereof, are more likely to be Streamable
`without Sacrificing quality of the picture and in any even if
`quality needs to be Sacrificed for the encoding leSS Sacrifice
`will be needed. (Quality in this sense refers to the quanti
`zation level, or the level of detail of the picture(s), and the
`frame rate, or the number of pictures eventually displayed
`per Second)
`FIGS. 3A-B are a flowchart describing an exemplary
`bitrate controller 210. An exemplary embodiment is imple
`mented as a modified version of Telenor H.263 encoder
`version 2.0. In this example, the variables are the ones used
`by the Telenor encoder.
`The logic begins at step 300 and proceeds to step 310,
`which initializes certain variables. In particular, Min
`Frames Skipped is set to 3; Max Frames Skipped is Set
`to 8; Frame Number is set to 0; Frames Skipped is set to
`0; BitBacklog is set to 0; and Delay Between Frames is
`
`Petitioners' Exhibit 1009
`Page 0011
`
`

`

`S
`set to /30. These variables and how they are used are
`discussed below. ASSume a target encoding rate (Encoding
`Rate) of 20 Kb/s, leaving extra bandwidth in a 28.8 Kb/s
`channel for audio data and for packet overhead.
`Besides the above, step 310 initializes a quantization
`parameter Quant and adjusts the frame rate limits Min and
`Max Frames Skipped as shown in FIG. 4. Quant refers to
`the pictures quantization level. A higher Quant means rela
`tively coarser detail; a lower Quant means relatively finer
`detail. The frame rate is adjusted dynamically in accordance
`with a variable Frames Skipped, but the amount of adjust
`ment is limited by Min and Max Frames Skipped, as
`will be described below.
`The Quant initialization and the frame rate limits adjust
`ment logic starts in step 400 and proceeds to step 410, which
`receives a user input indicating the level of quantization
`desired. This may be Supplied, for example, from Software
`that interprets a graphical user interface's slider bar control.
`The logic proceeds to Step 420, which limits the quantization
`variable Quant between a maximum and minimum value.
`For example, any received value greater than 30 may force
`Quant to 30, and any value less than 8 may force Quant to
`8. The logic proceeds to step 430 and 440, which analyze
`Quant and adjusts Max and Min Frames Skipped,
`accordingly. For example, in Step 430, relatively low values
`of Quant, in particular values less than 12, force Max
`Frames Skipped to 20. Thus, step 430 may be thought of
`forcing down the maximum frame rate for pictures having
`fine detail. Analogously, in Step 440, relatively high values
`of Quant, in particular values greater than 29, force Min
`Frames Skipped to 2. Thus, step 440 may be thought of
`forcing up the minimum frame rate for pictures having
`coarse detail. The above StepS use empirically determined
`values that were chosen to provide a relatively simple
`production environment. Obviously, many other values are
`applicable, and for environments, where increased user
`control makes Sense, these parameters may be set by the
`production user.
`Step 450 determines if the target rate is higher than 30
`Kb/s, as might be the case for PCM modems or ISDN
`connections or the like. If the target rate is higher, other
`adjustments are made. In particular, Min Frames Skipped
`is Set to 2, Min Frames Skipped is Set to 1, if Quant is
`higher than 28, and Max Frames Skipped is set to 17, if
`Quant is less than 12. Again this Step uses empirically
`determined values that were chosen to provide a relatively
`Simple production environment.
`The logic ends in step 499, which returns the flow back to
`the flowcharts of FIGS 3A-B.
`Referring back to FIGS. 3A-B, after step 310, the limits
`on the frame rate and the quantization parameters are Set.
`These values are used throughout the encoding. By main
`taining the quantization at a constant level, the amount of
`data necessary to encode the frame will depend on the
`informational content of the frame. Thus, the bitrate will
`vary as the informational content of frames vary. Moreover,
`perceptually the quality of the Video will remain Substan
`tially level, with Some fluctuation resulting from varying
`frame rates, as discussed below.
`The logic proceeds to step 320, which determines if more
`frames, or blocks, need to be encoded. If not, the logic
`proceeds to step 399, which ends the encoding process.
`If there are more frames and blocks to be encoded, the
`logic proceeds to step 330, which increments the Frame
`Number by a value equal to Frames Skipped. Frame
`Number identifies the frame of Video. In to be encoded, and
`Frames Skipped controls the frame rate.
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`5,867,230
`
`6
`The logic proceeds to step 340, which encodes the current
`block, identified by Frame Number.
`The logic proceeds to step 350, which increments the
`variable BitBacklog by the number of bits used to encode the
`frame. BitBacklog effectively keeps a running total of the
`number of bits used in encoding the Sequence in comparison
`to the number of bits that can be sent up to the current time,
`i.e., a budgeted amount. The budgeted amount is not a hard
`budget in that slightly exceeding the budget is not fatal. An
`exemplary Server includes logic for Sending an initial burst
`of data to compensate for network jitter and the like, slightly
`exceeding the budget is essentially indistinguishable from
`jitter.
`The logic proceeds to step 360, which sets Frames
`Skipped to Min Frames Skipped. This is done as an initial
`attempt to encode the Video at a maximum frame rate. Thus,
`for a Min Frames Skipped of 2, the frame rate is 15
`(30/2); for a Min Frames Skipped of 3, the frame rate is
`10 (30/3). The numerator “30” in the preceding parenthetical
`Statements refers to the absolute maximum frame rate of
`H.263, which is about 30 frames per second.
`The logic proceeds to step 370, which adjusts BitBacklog
`in a manner to reflect the increment in time associated with
`the Streaming of the new frame corresponding to Frames
`Skipped. Namely, BitBacklog is adjusted to represent that
`the corresponding encoded data will not be Sent until Some
`time in the future as reflected by Frames Skipped. In
`particular, the BitBacklog decrements by an amount equal to
`the following:
`Frames Skipped target rate Delay Between Frames
`The logic proceeds to step 380, which determines whether
`Frames Skipped needs adjustment in view of BitBacklog.
`In particular, step 380 compares the BitBacklog to determine
`whether the encoding proceSS would be over a budgeted
`amount if a frame were encoded at the currently Set frame
`rate. In brief, if the encoding would be over budget,
`Frames Skipped is adjusted to decrease the frame rate until
`the minimum frame rate is reached or until the encoding
`process is within budget. In either case, the next frame is
`encoded and the process is repeated. If the above iteration is
`Stopped because the minimum frame rate is reached and the
`encoding proceSS is Still over budget, it is not necessarily
`fatal. This is So, because, as described above, the System can
`Slightly exceed budget due to the Server's logic for address
`ing network jitter and the like. In Such case, the next
`iterations of encoding frames may cause the encoding to
`catch up to the budget by continuing to minimize the frame
`rate.
`More specifically, the BitBacklog is compared to see if it
`is greater than or equal to the Encoder Rate multiplied by the
`Delay Between Frames, i.e., the highest possible amount of
`data that can be sent in the time Delay Between Frames.
`If BitBacklog is greater than or equal to that amount, the
`encoding would be over budget.
`If the encoding is under budget or if Frames Skipped is
`equal (or greater than) Max Frames Skipped then the
`logic proceeds to Step 320 to encode the next frame, as
`outlined above.
`If the encoding is over budget and if Frames Skipped can
`be adjusted higher without equaling or exceeding Max
`Frames Skipped, then the logic proceeds to step 385. In
`step 385, the BitBacklog decrements, this time however by
`an amount equal to the Delay Between Frames multiplied
`by the Encoder Rate. This decrement corresponds to holding
`off the encoding for another frame time slot, and is done in
`view of the following step 390.
`
`Petitioners' Exhibit 1009
`Page 0012
`
`

`

`7
`In step 390, Frames Skipped is incremented by one.
`Thus, the encoding of a frame is held off for one frame time
`slot. Thus the adjustment of BitBacklog by one Delay
`Between Frames. The logic loops back to step 380 to
`determine whether this dynamic adjustment of Frames
`Skipped (and thus the frame rate) has helped the encoding
`process fall within budget or if the minimum frame rate has
`been attained. The loop between 380 and 390 continues as
`necessary to adjust Frames Skipped, thereby decreasing the
`frame rate, and to adjust BitBacklog correspondingly until
`BitBacklog indicates the encoding proceSS is within budget
`or until Max Frames Skipped (or conversely the mini
`mum frame rate) is reached.
`c. Packetizer
`The packetizer 230 packetizes the encoded frames 227
`into a specified format to form a file 235 that may be used
`by server 240 to stream the contents thereof. Much of the
`details of the packetizer are discussed in the related
`applications, identified and incorporated above.
`In short, a new aspect of the packetizer is that it time
`Stamps the packets with a Server time Stamp. This Stamp may
`eventually be used by an exemplary Server to Schedule the
`Sending of packets containing the encoded data. The Server
`time Stamps are constructed Such that, if used by the Server
`240 to schedule the delivery of the packets, the channel will
`be used efficiently, and in a manner in which for a given time
`quanta the Video that is Sent may correspond not only to the
`data needed currently but also for data that will be needed in
`the future. All packets, in an exemplary embodiment, are
`Sent in order, but Some packets may be sent Sooner than
`needed.
`More specifically, the encoded video frames 227 are
`applied to packetizers 230. In Short, the packetizer arranges
`the encoded data in pre-packetized form with the necessary
`packet information, See for example, U.S. application Ser.
`Nos. 08/711,701 and 08/711,702, identified and incorpo
`rated above. For the most part, each video frame will have
`its own corresponding packet, Such as a UDP packet, but
`Some large frames may be divided up into Several packets.
`FIGS. 5A-B are a flowchart of exemplary packetizing
`logic. The logic begins at step 500 and proceeds to step 410,
`which initializes a server time stamp and Bit Count variable,
`each to Zero.
`The logic proceeds to step 515, which determines if more
`frames need to be packetized. If not, the logic proceeds to
`step 599, which ends the flow.
`If more frames need to be packetized, the logic proceeds
`to step 520, which gets the next encoded video frame 227,
`along with control information indicating the Encoder Rate,
`or target rate, for which the data is encoded.
`The logic proceeds to step 530 which constructs a UDP
`packet, filling it with the encoded Video and other informa
`tion. In this regard, the construction is analogous to that
`described in the above co-pending application U.S. patent
`applications.
`The logic proceeds to step 540, which inserts the server
`time Stamp within the packet, in particular, within a portion
`of the packet known as the packet descriptor. The packet
`descriptor is an entity used by an exemplary Server 240 to
`control Streaming. The time Stamp is Set to the following:
`BitCount/(1.1* Encoder Rate)
`The factor 1.1, which is empirically determined, is used to
`keep the modem at full capacity.
`The logic proceeds to step 550, which writes the video
`packet in a specified format to a file 235.
`
`8
`The logic proceeds to step 560, which increments the Bit
`Count by the size of the packet written to the file.
`The logic proceeds to step 570, which updates the server
`time Stamp. In particular, the Server time Stamp is updated by
`an amount equal to the Bit Count divided by the Encoder
`Rate.
`The logic proceeds to step 580, which determines if more
`packets are needed for the current frame. If So, the logic
`proceeds back to step 530. If not, the logic loops back to step
`515.
`(Other encoders, not shown, for example, an audio
`encoder, may encode and packetize information to be for
`matted into the eventual file 235.)
`d. File Format
`The related applications, identified and incorporated
`above, describe a multimedia file and method for forming
`Same. The same arrangement may be used in an exemplary
`embodiment, except that the packet descriptorS Should now
`include a separate field for holding the Server time Stamp.
`FIG. 6 shows an exemplary descriptor having Send time
`stamp 610. (The other fields are discussed in the co-pending
`applications.)
`
`e. Server
`Analogously, the related applications, identified and
`incorporated above, describe an exemplary System for Send
`ing multimedia files of the above type. Though the same
`arrangement may be used in an exemplary embodiment with
`the exception that the Server would use a Server time Stamp
`for the Scheduling of packets, an exemplary embodiment
`includes certain modifications to the embodiment described
`in the related applications.
`First, unlike the embodiments described in the related
`applications, an exemplary embodiment does not use
`retransmit logic (steps 1240-1260 of FIG. 12 and corre
`sponding text of the related applications). Second, an exem
`plary embodiment does not include the “throttle-up' and
`“throttle-down” logic of the related applications (FIG. 13
`and corresponding text of the related applications). Third, an
`exemplary embodiment does not include the calculation of
`“round-trip delay' as part of channel characterization.
`FIG. 7 is a flowchart of the exemplary server logic and is
`Somewhat similar to the flowchart of FIG. 12 of the related
`applications. Step 710 determines whether the server needs
`to send more packets. If not, the logic ends in step 799; if so,
`the logic proceeds to Step 720, which sends a time Slice's
`worth of packets. A time slice's worth is determined from
`looking at the server time stamp 610 in relation to the server
`Scheduling clock. (This step is analogous to the logic of the
`related applications, except the related application used the
`Same time Stamp for Server Scheduling and for play-back
`Scheduling) After sending a time slice's worth of packets,
`the logic goes to Sleep 730, informing the Scheduler of a
`corresponding wake-up time.
`An exemplary Server is able to Support file formats of the
`current type and of the type described in the related appli
`cations. In particular, the directory preamble, described in
`the related applications, is modified to include a descriptor
`Size field. The values Stored therein uniquiely distinguish
`between the two formats, informing the server which time
`Stamp should be used for Scheduling.
`III. Other Embodiments
`The above embodiment was primarily focused on video
`data according to H.263. Skilled artisans will appreciate that
`the above prin

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket