Abstract:
Picture level rate control systems, apparatuses and methods are described which indirectly control bit rate through peak signal to noise ratio (PSNR), thereby providing a stable PSNR while maintaining a given target average bit rate. In a preferred implementation, encoding is performed in conjunction with macroblock QP modulation. In this way, the picture level rate control provides stable temporal quality and the macroblock QP modulation provides stable spatial quality. By way of example, the number of bits generated in a group of pictures (GOP) is controlled by modulating the target bit allocation for a group of pictures (GOP) based on coded picture buffer (CPB) fullness. Macroblocks are encoded for each picture based on a rate-distortion model, which is modified in response to the relative fluctuation of PSNR of pictures within a group of pictures.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    Not Applicable 
       STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
       [0002]    Not Applicable 
       INCORPORATION-BY-REFERENCE OF MATERIAL SUBMITTED ON A COMPACT DISC 
       [0003]    Not Applicable 
       NOTICE OF MATERIAL SUBJECT TO COPYRIGHT PROTECTION 
       [0004]    A portion of the material in this patent document is subject to copyright protection under the copyright laws of the United States and of other countries. The owner of the copyright rights has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the United States Patent and Trademark Office publicly available file or records, but otherwise reserves all copyright rights whatsoever. The copyright owner does not hereby waive any of its rights to have this patent document maintained in secrecy, including without limitation its rights pursuant to 37 C.F.R. §1.14. 
       BACKGROUND OF THE INVENTION 
       [0005]    1. Field of the Invention 
         [0006]    This invention pertains generally to controlling picture quality and bit rate of compressed video, and more particularly to bit rate control during encoding. 
         [0007]    2. Description of Related Art 
         [0008]    Current state of the art digital video compression standards, such as MPEG-1, MPEG-2, MPEG-4, and AVC (H.264) describe several picture types, for example I, P, and B picture types. In general, for similar picture content to be encoded with similar picture quality, an I picture takes more bits to encode than a P picture, and a P picture takes more bits to encode than a B picture. 
         [0009]    As defined in recent standards such as MPEG-1/2/4 and/or AVC, the picture quality and the number of bits for each encoded picture are controlled by adjusting the quantization parameters of a picture. 
         [0010]    The conventional forms of rate control are configured for controlling bit rate directly in response to changing the quantization scale. Varying the coarseness of the quantization step in this manner directly affects the size of the output. However, this form of simple rate control is not optimal because requiring the use of coarse quantization reduces image quality. 
         [0011]    It is preferable to allocate proportionally more bits to encode I- and P-frames. The quality of frames used as references should be the highest, because any errors will propagate from reference frames to other frames within a GOP. Fewer bits are then allocated to B-frames because they do not act as reference frames and thus cannot spread errors to other frames. Furthermore, B-frames benefit from more extensive motion-compensation tactics and are therefore naturally the smallest frames. A typical ratio of frame sizes is 12:4:1 for I:P:B frames. 
         [0012]    As the frame is encoded by the classical forms of rate control, rate control information is updated at the end of each row of macroblocks to keep track of how well the actual number of bits used matches the predicted output. The quantization scale is updated and the new value is applied to the next row if adherence to the predictive model is outside certain boundaries. After an entire picture is coded, the parameters for the prediction model are updated so as to match the number of bits that were actually produced. In this form of rate control, the picture quality was not a part of the key considerations. 
         [0013]    Therefore, a need exists for a picture level rate control method that sufficiently controls buffer fullness without unduly compromising picture quality. The present invention satisfies those needs, as well as others, and overcomes the deficiencies of previously developed bit rate control mechanisms. 
       BRIEF SUMMARY OF THE INVENTION 
       [0014]    The system and methods described herein are a fundamental departure from conventional bit rate control configurations. The systems and methods described herein do not attempt to directly control the number of bits of a picture, as in conventional rate control, but instead control picture quality indirectly. 
         [0015]    In classical forms of rate control, the bit rate is controlled directly in response to changing the quantization scale, which results in reduced image quality. By contrast to classical bit rate control, the present invention seeks to intelligently distribute available bits amongst the frames and the macroblocks within those frames, thereby avoiding the generation of visible artifacts in the reconstructed image. 
         [0016]    In some embodiments systems and methods may be configured to provide a stable and controllable video quality, such as defined by peak signal to noise ratio (PSNR), while attempting to maintain a given target for average bit rate. Although stable PSNR does not necessary imply stable visual picture quality, unstable PSNR would likely lead to poor visual picture quality. In some embodiments, picture level rate control systems and methods herein would be typically utilized in conjunction with macroblock QP modulation to provide good visual quality, although it can be alternatively utilized with other bit rate variation means without departing from the teachings of the present invention. In a preferred embodiment, the picture level rate control provides stable temporal quality and the use of macroblock QP modulation provides stable spatial quality. The present invention can be configured as a system, apparatus, or method. For the sake of simplicity and not by way of limitation, the bulk of the discussion is directed at describing steps within a method or methods that would be implemented in systems and/or apparatuses. 
         [0017]    For a given target of average bit rate, the conventional method first determines the number of bits for encoding the current picture. Then based on the number of bits allocated to the picture, it determines the quantization parameters of the picture. Conventional methods, such as TM5 and JM10.1, are not able to provide stable picture quality over time, in particular at scene cut. This deficiency arises because these mechanisms do not control picture quality directly. The deficiency also arises since conventional rate control methods, such as TM5 and JM10.1, do not accurately predict the relationship between the number of bits and the quantization parameter, but instead rely on buffer feedback to adjust the quantization parameter for each of a multiple number of macroblocks to achieve the target bit allocation. 
         [0018]    Unlike TM5 and JM10.1 rate control, the present invention does not require adjusting the quantization parameter within a picture for the purpose of rate control. The use of rate-distortion for controlling the encoding rate, such as quantization, is particularly well-suited for MPEG/AVC video because rate-distortion feedback is available at picture boundaries. 
         [0019]    The rate control mechanisms described herein can be implemented within a number of video applications and equipment, including use within video communication systems, camcorders, personal video recorders, TV broadcasting, and so forth. 
         [0020]    The rate control methods described herein are preferably implemented within programming which is stored in memory that is accessed for execution by one or more computer processing devices/elements. The methods described herein are well-suited for use in multi-processing and multi-threading at slice or macroblock levels. Alternatively, the methods can be implemented in any desired manner without departing from the teachings herein, such as within digital signal processors, programmable logic, gate arrays, custom logic and the like. 
         [0021]    An embodiment of the invention may provide a method of controlling bit rates within an encoded (compressed) video stream, comprising: (a) translating the target bit rate to a reference picture quality among the I, P and B pictures for a given target average bit rate; (b) determining the target quality of the current picture from the reference picture quality; and (c) determining the quantization parameters of the picture in response to target picture quality, such as measured by peak signal-to-noise ratio (PSNR). The method is preferably implemented on an encoder, a decoder, or an encoder and decoder configured according to MPEG and/or AVC standards. 
         [0022]    Another embodiment of the invention may provide a method of controlling bit rates within an encoded video stream, comprising: (a) controlling the number of bits generated in a group of pictures (GOP) by modulating the target bit allocation for a group of pictures (GOP) based on coded picture buffer (CPB) fullness; (b) encoding macroblocks within each picture as compressed in response to a rate-distortion model; and (c) controlling the relative fluctuation of peak signal to noise ratio (PSNR) of pictures within a group of pictures by modifying the rate-distortion model. In this method the relative fluctuation of PSNR is preferably determined in relation to a reference PSNR. The step of encoding macroblocks is preferably performed by quantization according to a quantization parameter (QP) determined in response to said reference PSNR. 
         [0023]    Another embodiment of the invention may provide a method of controlling bit rates within an encoded video stream, comprising: (a) performing picture level rate control by translating a target bit allocation for a group of pictures (GOP) to a reference peak signal to noise ratio (PSNR), wherein target bit allocation is determined in response to coded picture buffer (CPB) fullness; (b) encoding macroblocks within each picture utilizing a quantization parameter (QP) determined in response to the reference PSNR; (c) modifying the rate distortion model in response to PSNR; (d) modifying target bit allocation in response to CPB fullness; and (e) continuing the above steps (a) through (d), until all pictures are encoded. 
         [0024]    Another embodiment of the invention may provide a method of controlling bit rates within an encoded video stream, comprising: (a) allocating a target number of bits within a target bit allocation to a current group of pictures (GOP) in response to CPB fullness; (b) translating the target bit allocation to a reference peak signal to noise ratio (PSNR); (c) mapping the target PSNR into a quantization parameter (QP) for encoding of the current picture; (d) encoding macroblocks within the current picture utilizing the QP; (e) modifying the rate distortion model based on actual PSNR which modulates QP; (f) updating the value of CPB fullness; and (g) repeating the above steps (a) through (f) until all pictures are encoded. 
         [0025]    Another embodiment of the invention may provide a method of estimating the relationship of PSNR and QP of a picture in a video sequence based on a fixed PSNR reference point and the PSNR and QP of a previously encoded picture. 
         [0026]    Another embodiment of the invention may provide an apparatus for controlling bit rates within an encoded video bitstream, comprising: (a) an encoder; (b) means associated with the encoder for carrying out the operations of, (b)(i) translating a target bit rate to a reference picture quality among I, P and B pictures for a given target average bit rate, (b)(ii) determining a target quality of a current picture from the reference picture quality, and (b)(iii) determining quantization parameters of the current picture in response to target picture quality. 
         [0027]    Another embodiment of the invention may provide an apparatus for controlling bit rates within an encoded video bitstream, comprising: (a) an encoder; and (b) means associated with the encoder for carrying out the operations of, (b)(i) controlling bit generation in which a number of bits are generated in a group of pictures (GOP) by modulating target bit allocation for a group of pictures (GOP) based on coded picture buffer (CPB) fullness, (b)(ii) encoding macroblocks within each picture of the group of pictures as compressed in response to a relationship between bit rate and distortion within a rate-distortion model, and in which the number of bits are distributed across the encoded macroblocks, and (b)(iii) controlling relative fluctuation of peak signal to noise ratio (PSNR) of pictures within the group of pictures (GOP) by modifying said rate-distortion model. 
         [0028]    Another embodiment of the invention may provide an apparatus for controlling bit rates within an encoded video bitstream, comprising: (a) an encoder; and (b) means associated with said encoder for carrying out the operations of, (b)(i) translating a target bit allocation for a group of pictures (GOP) into a reference peak signal to noise ratio (PSNR), (b)(ii) encoding macroblocks with quantization parameter (QP) modulation within each picture of the group of pictures, utilizing a QP that controls the number of bits encoded per macroblock based on a relationship between bit rate and distortion within a rate-distortion model, the QP determined in response to the reference PSNR, (b)(iii) modifying a rate distortion model based on actual PSNR, (b)(iv) modifying target bit allocation in response to coded picture buffer (CPB) fullness, and (b)(v) repeating the above steps until all pictures are encoded. 
         [0029]    Another embodiment of the invention may provide an apparatus for controlling bit rates within an encoded video bitstream, comprising: (a) an encoder; and (b) means associated with the encoder for carrying out the operations of, (b)(i) allocating a target number of bits within a target bit allocation for a group of pictures (GOP) in response to coded picture buffer (CPB) fullness, (b)(ii) translating said target bit allocation to a reference peak signal to noise ratio (PSNR), (b)(iii) mapping said target PSNR into a quantization parameter (QP), (b)(iv) encoding macroblocks within a current picture utilizing said QP to control the number of bits encoded per macroblock and bit rate of encoded video bitstream, said QP based on a relationship between bit rate and distortion within a rate-distortion model, (b)(v) modifying the rate distortion model based on actual PSNR, (b)(vi) updating the value of CPB fullness, and (b)(vii) repeating the above steps until all pictures are encoded. 
         [0030]    Another embodiment of the invention may provide a system for controlling bit rates of a video bitstream within an encoder, comprising: (a) a computer processor with memory, the computer configured for executing programming from said memory; and (b) programming executable on the computer processor for the following steps: (b)(i) allocating a target number of bits within a target bit allocation to a current group of pictures (GOP) in response to CPB fullness; (b)(ii) translating the target bit allocation to a reference peak signal to noise ratio (PSNR); (b)(iii) mapping the target PSNR into a quantization parameter (QP) for encoding of the current picture; (b)(iv) encoding macroblocks within the current picture utilizing the QP; (b)(v) modifying the rate distortion model based on actual PSNR which modulates QP; (b)(vi) updating the value of CPB fullness; and (b)(vii) repeating the above steps (b)(i) through (b)(vii) until all pictures are encoded. It will be appreciated that the system can be implemented within various video encoder and/or decoder systems and apparatus, or encoded as programming on an executable media for distribution and subsequent execution on systems or apparatus containing a video encoder and/or decoder. 
         [0031]    The present invention provides a number of beneficial aspects which can be implemented either separately or in any desired combination without departing from the present teachings. 
         [0032]    An aspect of the invention is to provide a rate control method which does not unduly restrict the quantization scale. 
         [0033]    Another aspect of the invention is to provide a rate control mechanism which can be implemented in a variety of video encoder and/or decoder systems or apparatus. 
         [0034]    Another aspect of the invention is to provide a rate control method which provides stable and controllable PSNR while maintaining a given target average bit rate. 
         [0035]    Another aspect of the invention is to provide a rate control method that can be utilized with macroblock QP modulation, or with other rate change mechanisms. 
         [0036]    Another aspect of the invention is to provide stable temporal quality while QP modulation provides stable spatial quality. 
         [0037]    Another aspect of the invention is to provide a rate control method that can be readily implemented on any desired encoders. 
         [0038]    Another aspect of the invention is to provide a method of controlling average bit rate toward a target average bit rate. 
         [0039]    Another aspect of the invention is to provide a method of controlling the relative fluctuation of PSNR of pictures within a group of pictures. 
         [0040]    Another aspect of the invention is to control average bit rate within an MPEG or AVC decoder. 
         [0041]    Another aspect of the invention is to provide a method of bit rate control which is particularly well-suited for use on constant bit rate communication channels. 
         [0042]    Another aspect of the invention is to control video bit rate to prevent coded picture buffer (CPB) overflow and underflow conditions. 
         [0043]    Another aspect of the invention is to prevent CPB overflow and underflow by controlling the number of bits generated in a group of pictures (GOP) within a sliding window. 
         [0044]    Another aspect of the invention is to control the bit rates based on the difference between actual PSNR and a reference PSNR. 
         [0045]    Another aspect of the invention is to control bit rates based on configuration parameters established separately for the I, P and B pictures. 
         [0046]    Another aspect of the invention is to provide a method of rate control that is based on a rate-distortion model which is periodically updated. 
         [0047]    Another aspect of the invention is to control bit rates in response to the allocation of a desired number of bits to the current group of pictures (GOP). 
         [0048]    Another aspect of the invention is to control bit rates by varying the allocation of bits to the GOP based on determinations of CPB fullness (emptiness). 
         [0049]    Another aspect of the invention is to map the target PSNR into the quantization parameter (QP) for encoding the current picture. 
         [0050]    Another aspect of the invention is to determine quantization QP for the picture based on PSNR allocated to the picture, instead of the conventional mechanism of determining a picture QP based on the number of bits allocated to a picture. 
         [0051]    Another aspect of the invention is to provide for converting a value of GOP bits to a distortion figure, such as a reference PSNR. 
         [0052]    A still further aspect of the invention is to provide a mechanism through which enhanced bit rate control at low distortion can be achieved. 
         [0053]    Further aspects of the invention will be brought out in the following portions of the specification, wherein the detailed description is for the purpose of fully disclosing preferred embodiments of the invention without placing limitations thereon. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S) 
         [0054]    The invention will be more fully understood by reference to the following drawings which are for illustrative purposes only: 
           [0055]      FIG. 1  is a block diagram of an encoder-decoder relationship for transmission over a constant bit rate channel according to an aspect of the present invention. 
           [0056]      FIG. 2  is a graph of relative distortion for field pictures according to an aspect of the present invention in which the PSNR measurements are made with respect to a reference PSNR. 
           [0057]      FIG. 3  is a flow diagram of a generalized picture level rate control implementation according to an aspect of the present invention. 
           [0058]      FIG. 4  is a graph of mapping PSNR into QP according to an aspect of the present invention for AVC encoder. 
           [0059]      FIG. 5  is a flow diagram of a rate control method implementation according to an aspect of the present invention. 
           [0060]      FIG. 6  is a graph of the allocation of GOP bits according to an aspect of the present invention. 
           [0061]      FIG. 7  is a graph of a rate-distortion model of log (R X ) as a function of log (D X ) according to an aspect of the present invention. 
           [0062]      FIG. 8  is a graph of rate vs. distortion for a number of example video sequences utilizing the rate-distortion model according to an aspect of the present invention. 
           [0063]      FIG. 9  is a graph of a distortion-QP model of log (D X ) with respect to QP x  according to an aspect of the present invention. 
           [0064]      FIG. 10  is a graph of distortion vs. QP for a number of example video sequences utilizing the distortion-QP model according to an aspect of the present invention. 
           [0065]      FIG. 11  is a graph of a rate-QP model according to an aspect of the present invention. 
           [0066]      FIG. 12  is a graph of rate vs. QP for a number of example video sequences utilizing the rate-QP model according to an aspect of the present invention. 
           [0067]      FIG. 13  is a graph of CPB fullness in a decoder in response to operation under a rate control method according to an aspect of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0068]    Referring more specifically to the drawings, for illustrative purposes the present invention is embodied in the systems, apparatuses, and methods generally described with reference to  FIG. 1  through  FIG. 13 . It will be appreciated that the systems, apparatuses, and methods may vary as to the specific structures, steps and sequence, without departing from the basic concepts as disclosed herein. 
         [0069]    In one exemplary embodiment, the present invention comprises a rate control method having the following two primary objectives: (1) to control the average bit rate to achieve a target average bit rate provided by a user, and (2) to control the relative fluctuation of PSNR of the pictures within a Group of Pictures (GOP). 
         [0070]    The first objective of this embodiment is to control the average bit rate of a compressed bitstream toward maintaining a target average bit rate. In order to understand what is meant by “controlling the average bit rate to achieve a target average bit rate”, it is important to understand certain basic operations of the AVC Hypothetical Reference Decoder (HRD). 
         [0071]      FIG. 1  illustrates a model  10  for an encoder-decoder relationship for constant bit rate control regulation having an encoder  12  whose output is received through connection  14  by a coded picture buffer (CPB) buffer  16 . In response to transmission over a constant bit rate channel  18 , data from an encoder CPB  16  is received in a decoder CPB  20  and passed through connection  22  to a decoder  24 . 
         [0072]    For fixed picture rate and constant bit rate encoding, the HRD specification infers that the encoder CPB  16  fullness is initially empty. Then on receiving picture  0 , encoder  12  encodes the picture and immediately generates a compressed representation of the picture. The compressed bits are immediately inserted into encoder CPB  16 . After a time delay from the encoding time of picture  0 , as specified by the initial_cpb_removal_delay offset, the encoder CPB starts transmitting the bitstream at a constant bit rate over channel  18  to decoder CPB  20 . 
         [0073]    After the encoding of picture  0 , encoder  12  encodes the other pictures at a fixed picture rate. At each picture, the compressed bits are immediately encoded and inserted in encoder CPB  16  and the bitstreams are continuously transmitted to decoder CPB  20  at a fixed bit rate. After a delay time, such as specified by the initial_cpb_removal_delay, after the first bit of the bitstream arrives at decoder CPB  20 , wherein decoder  24  immediately decodes the bitstream and generates decompressed picture  0 . After decoding of picture  0 , decoder  24  decodes the other pictures at a fixed picture rate. At each picture, the compressed bits are immediately removed from decoder CPB  20  and decoded by decoder  24  to generate the decoded pictures. 
         [0074]    A condition for meeting the HRD requirements for constant bit rate and constant frame rate encoding is that the decoder CPB fullness should not be allowed to overflow or underflow at any time. 
         [0075]    The objective of a rate control mechanism for achieving a constant bit rate is to control encoder operation so that it generates a bitstream at a rate at which proper filling of the receiving CPB buffer is maintained, preventing CPB overflows and underflows, in response to transmitting the bitstream through a constant bit rate channel as shown in  FIG. 1 . 
         [0076]    Theoretically, controlling the quantization parameter (QP) alone generally is not sufficient to avoid buffer overflow and underflow, and other means should be incorporated within the encoder to eliminate the possibility of CPB overflow and underflow. In general, CPB overflow can be eliminated by bit stuffing, and CPB underflow can be eliminated by scaling down the amplitude of the DCT coefficients or by selectively throwing away DCT coefficients of a macroblock in the encoder. 
         [0077]    An embodiment of an approach taken herein to avoid CPB overflow and underflow is to control the estimated number of bits generated in a group of pictures (GOP). Let N i , N p , N b , be the number of I, P, B pictures in a GOP, and let R i , R p , R b  be the number of bits to be generated for the I, P, B pictures and let R gop  be the number of bits for the current GOP. In order to control the number of bits in a GOP, it is desirable to have the following relation hold: 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       ∑ 
                       
                         x 
                         ∈ 
                         
                           ( 
                           
                             i 
                             , 
                             p 
                             , 
                             b 
                             , 
                           
                           ) 
                         
                       
                     
                      
                     
                       
                         N 
                         x 
                       
                        
                       
                         R 
                         x 
                       
                     
                   
                   = 
                   
                     R 
                     gop 
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0078]      FIG. 2  is a graph  30  of relative distortion wherein the reference PSNR S r    38  is shown together with the relative PSNR Δ i    32 , Δ b    34 , Δ p    36  showing the cyclic variations of PSNR of the I, P, B frames in a GOP. In this aspect of the invention, the PSNR is controlled in response to difference with respect to a floating reference PSNR, the differences being shown as Δ i , Δ b , Δ p . 
         [0079]    The second objective of the rate control method is to control the (PSNR) variation of the frames. As shown in the representative figure, the reference PSNR S r    38  in conjunction with the relative PSNR Δ i , Δ b  and Δ p  ( 32 ,  34 ,  36 ), respectively, between the I, B, and P frames is a means to control the PSNR fluctuation of the frames in a GOP to a specified level. In particular, it is desired to control the PSNR given by S i , S p , S b , of the I, P, and B pictures so that: 
         [0000]      S i ≈S r +Δ i    
         [0000]      S p ≈S r +Δ p    
         [0000]      S b ≈S r +Δ b    (2) 
         [0080]    The relative PSNR Δ i , Δ b  and Δ p  can be received as user-supplied configuration parameters, or set by alternative means. For example, if it is desirable to have the PSNR of the I picture to be 1 dB higher than the P pictures and the PSNR of the B pictures to be 1 dB lower than the P pictures, then one may select Δ i =1.0 dB, Δ p =0.0 dB and Δ b =−1.0 dB. With this particular selection, the reference PSNR S r  is the same as the target PSNR of the P pictures. 
         [0081]      FIG. 3  is a generalized synopsis of a frame level rate control system, apparatus or method  50  according to an implementation of the present invention. It will be appreciated that the method can be implemented within a system or apparatus, such as an encoding apparatus containing a computer processing element and memory, wherein programming from the memory is executable on said computer processor for carrying out the operations described below. In addition, the invention can be implemented as programming retained on a computer readable media configured for execution on a computer processing element within any compatible encoder. 
         [0082]    For the sake of simplicity, the invention is generally described in terms of method steps. Again, however, the method can and would be typically carried out in a system or apparatus (e.g., hardware with executable software). 
         [0083]    The exemplary method shown in  FIG. 3  determines a quantization parameter (QP) for encoding a frame to maintain a stable relative PSNR while achieving a given target bit rate. In particular, before the encoding of a frame, the rate control method determines a QP for the pictures in a frame based on the rate-distortion characteristics of the video sequence and the coded picture buffer (CPB) fullness of the AVC encoder. Then after the encoding of the pictures in a frame, the rate control programming updates the rate-distortion models of the video sequence and the CPB fullness. 
         [0084]    It will be appreciated that this rate control method is distinct and differs markedly from conventional mechanisms which determine the picture QP based on the number of bits allocated to a picture. Instead, this algorithm determines the picture QP based on PSNR allocated to the picture, such as in the following manner. 
         [0085]    As shown in  FIG. 3 , before the encoding of a frame, the rate control programming first allocates a number of bits to the current Group of Pictures (GOP), as represented in block  52 , in a sliding window based on CPB fullness. If the CPB fullness is higher than expected, additional bits are allocated to decrease the CPB fullness. If the CPB fullness is lower than expected, fewer bits are allocated to increase CPB fullness. 
         [0086]    Target GOP bit allocation is then translated to a reference PSNR S r  of the frames in a GOP based on the rate-distortion characteristics of the previously encoded frames, as per block  54 . 
         [0087]    After the reference PSNR S r  is determined, it is translated to the target PSNR of the current frame as per block  56 . If the current frame has the picture type xε{i,p,b} wherein Δx ε{Δi,Δp,Δb}, then the target PSNR of the current picture is given by: 
         [0000]        Ŝ   x   =S   r +Δ x    (3) 
         [0088]    The target PSNR is mapped into the quantization parameter (QP), thus modulating QP for encoding the current picture as shown in block  58 . Experimentally, for the present invention it has been determined that for QP≧10, the points of (QP,Ŝ x ) of the current picture lies approximately on a straight line with negative slope. By tracking the location of the straight line, QP is determined which corresponds to the target PSNR Ŝ x , and this QP is used to encode every macroblock in the pictures within the current frame as per block  60 . The programming then updates the rate distortion models based on distortion as shown in block  62  to modulate the operation of blocks  54 ,  58 ; and updates the CPB fullness value as per block  64  based on rate information, which in turn modulates GOP bit allocations represented by block  52 . 
         [0089]      FIG. 4  illustrates that the PSNR and QP relationship of the current picture lies approximately on a straight line through the actual PSNR and quantization step size of the previously encoded frame for a given picture type. A simple and effective algorithm for tracking the straight line of the current frame is to assume that the current straight line has a pre-determined slope with the point (QP n-1 ,Ŝ x,n-1 ), where QP n-1  is the quantization step size and Ŝ x,n-1  is the measured PSNR of the previously encoded frame of the same type x ε{i,p,b}. 
         [0090]    Another more effective method for tracking the straight line of the current frame is to assume that the current straight line has a pre-determined fixed point, (QP xf ,S xf ) and the point (QP x,n-1 ,Ŝ x,n-1 ), where QP x,n-1  is the quantization step size and Ŝ x,n-1  is the measured PSNR of the previously encoded frame of the same type x ε{i,p,b}. Experimentally, the fixed point is found to be located at QP if =QP pf =QP bf =0, and S if =57 dB, S pf =S bf =54 dB. 
         [0091]    After encoding of the pictures in the current frame, the bit count and the PSNR of the current frame is measured. The bit count and PSNR are used to keep track of the rate-distortion model and PSNR-QP model of the current frame. The bit count is also used to keep track of the coded picture buffer (CPB) fullness of the decoder. 
         [0092]      FIG. 5  through  FIG. 14  illustrate an exemplary implementation of the invention and depict further exemplary features and aspects. 
         [0093]      FIG. 5  depicts a flowchart of an implementation  70  of a rate control method according to the invention. Rate control is initialized as represented in block  72 , after which the GOP bits are allocated in block  74  and the frame QP is determined in block  76 . A picture is encoded as per block  78  and statistics, such as rate and distortion of the pictures in the current frame, is accumulated at block  80 . A check is made at block  82 , wherein if not all pictures in a frame have been encoded, then execution returns to block  78 . However, if all pictures in a frame are encoded, then the rate control model is updated as shown in block  84 , whereafter a check is performed on the frames in the video sequence. If all frames in the video sequence have been encoded, then execution is completed as per block  88 , otherwise execution returns to block  74  to advance the encoding to a subsequent frame. The operations performed by a number of these blocks is outlined below. 
         [0094]    The process of initializing rate control (init_rate_control) as represented by block  72  is preferably performed according to the following steps. 
         [0095]    Assume a bit ratio between I, P, B frames, as given by: 
         [0000]      (r i ,r p ,r b )=(12,4,1) 
         [0000]    where for this invention, an I frame is defined as a frame structured intra-coded picture or a field structured field pair containing one intra-coded field picture and one forwardly predicted field picture. 
         [0096]    Given R gop  the rate R x , x ε{i,p,b}, is based on allocating target bits to the first I, P, B frames. 
         [0000]    
       
         
           
             
               R 
               x 
             
             = 
             
               
                 r 
                 x 
               
               · 
               
                 
                   R 
                   gop 
                 
                 
                   ( 
                   
                     
                       
                         r 
                         i 
                       
                       · 
                       
                         N 
                         i 
                       
                     
                     + 
                     
                       
                         r 
                         p 
                       
                       · 
                       
                         N 
                         p 
                       
                     
                     + 
                     
                       
                         r 
                         b 
                       
                       · 
                       
                         N 
                         b 
                       
                     
                   
                   ) 
                 
               
             
           
         
       
     
         [0097]    Determine first QP x  based on the following equation, wherein b i =b p =b b =4.7, and a  i =24, a p =a b =19. 
         [0000]    
       
         
           
             
               QP 
               x 
             
             = 
             
               
                 a 
                 x 
               
               - 
               
                 
                   b 
                   x 
                 
                  
                 
                   
                     log 
                     2 
                   
                    
                   
                     ( 
                     
                       
                         R 
                         x 
                       
                       M 
                     
                     ) 
                   
                 
               
             
           
         
       
     
         [0000]    where M is the number of pixels in a frame. 
         [0098]      FIG. 6  illustrates aspects of allocating GOP bits (alloc_gop_bits), as represented by block  74  of  FIG. 5 , by adjusting GOP bits at each frame interval based on CPB fullness. It can be seen from the graph that fewer bits are allocated when the CPB is empty and more bits when CPB is full. The slope of the relation is equal to a value referred to cpb_feedback_gain. 
         [0099]    The determination of frame QP, as shown in block  76  of  FIG. 5 , is determined by target distortion of the current picture based on (a) target GOP bits; (b) rate-distortion models; and (c) relative distortion between I, P, B frames. The target distortion is then converted to QP, and each picture in a frame is encoded as was shown by block  78  of  FIG. 5 . 
         [0100]      FIG. 7  depicts a rate distortion model showing log(R X ) as a function of log(D X ) which is approximated as a straight line with slope equal to −λ X . 
         [0101]      FIG. 8  depicts a rate distortion model in response to a plurality of video sequences based on the rate method of the present invention. The graph illustrates that the straight line approximation of the relationship of log(R X ) and log(D X ) in  FIG. 7  is a reasonable one but not a highly accurate one. The accuracy or the approximation improves when the range of the rate value under consideration is made smaller. The graph also demonstrates that using a rate-distortion relationship to perform bit allocation is probably not a robust approach. 
         [0102]      FIG. 9  illustrates a distortion QP model of log(D X ) with respect to QP x  approximated by a straight line. An initial point (QP 0 , log(D x0 )) is shown on the distortion QP model line. 
         [0103]      FIG. 10  depicts examples of the distortion QP model for the I, P, B picture from four (4) video sequences, the data points being substantially overlapping. The graph illustrates that the straight line approximation of the relationship of log(D X ) and QP for QP≧10 is very accurate, and implies that rate control based on the distortion-QP relationship is robust. 
         [0104]      FIG. 11  is a rate QP model of log(R X ) with respect to QP x  approximated by a straight line. An initial point (QP x0 , log(R x0 )) is shown on the rate QP model line. 
         [0105]      FIG. 12  depicts examples of the rate-QP model executed for the I, P, B picture from four (4) different example video sequences. The graph illustrates that the straight line approximation of the relationship of log(R X ) and QP in  FIG. 11  is a reasonable one but not a highly accurate one. The accuracy or the approximation improves when the range of rate in consideration is made smaller. The graph also demonstrates that using rate-QP relationship to perform bit rate may not be robust. 
         [0106]    The process of converting GOP bits to distortion is preferably performed according to the following equations, in which D is the reference distortion, α X  is the relative distortion and the slope λ X , of the log(R X )−log(D X ) relationship depicted in  FIG. 7 , is assumed the same for I, P and B so that λ i =λ p =λ b =λ 
         [0000]    
       
         
           
             
               α 
               x 
             
             - 
             
               10 
               
                 
                   Δ 
                   x 
                 
                 / 
                 10 
               
             
           
         
       
       
         
           
             
               D 
               x 
             
             = 
             
               D 
               
                 α 
                 x 
               
             
           
         
       
       
         
           
             
               R 
               x 
             
             = 
             
               
                 
                   R 
                   
                     x 
                      
                     
                         
                     
                      
                     0 
                   
                 
                  
                 
                   ( 
                   
                     
                       D 
                       
                         x 
                          
                         
                             
                         
                          
                         0 
                       
                     
                     
                       D 
                       x 
                     
                   
                   ) 
                 
               
               λ 
             
           
         
       
       
         
           
             
               R 
               gop 
             
             = 
             
               
                 ∑ 
                 
                   x 
                   ∈ 
                   
                     ( 
                     
                       i 
                       , 
                       p 
                       , 
                       b 
                     
                     ) 
                   
                 
               
                
               
                 
                   N 
                   x 
                 
                  
                 
                   R 
                   x 
                 
               
             
           
         
       
     
         [0107]    It should be noted that the above GOP equation was already given as Eq. 1. The conversion of distortion to QP can be described according to the present invention by the following equations, with M pixels per frame, the slope s, of the log(D X )−QP x  relationship depicted in  FIG. 4 , and a pre-determined constant parameter t to reduce the fluctuation of QP x . 
         [0000]    
       
         
           
             
               D 
               λ 
             
             = 
             
               
                 
                   ∑ 
                   
                     x 
                     ∈ 
                     
                       ( 
                       
                         i 
                         , 
                         p 
                         , 
                         b 
                       
                       ) 
                     
                   
                 
                  
                 
                   
                     N 
                     x 
                   
                    
                   
                     
                       
                         R 
                         
                           x 
                            
                           
                               
                           
                            
                           0 
                         
                       
                        
                       
                         ( 
                         
                           
                             D 
                             
                               x 
                                
                               
                                   
                               
                                
                               0 
                             
                           
                            
                           
                             α 
                             x 
                           
                         
                         ) 
                       
                     
                     λ 
                   
                 
               
               
                 R 
                 GOP 
               
             
           
         
       
       
         
           
             
               S 
               r 
             
             = 
             
               
                 10 
                  
                 
                     
                 
                  
                 
                   
                     log 
                     10 
                   
                    
                   
                     ( 
                     
                       255 
                       · 
                       255 
                       · 
                       M 
                     
                     ) 
                   
                 
               
               - 
               
                 
                   10 
                   λ 
                 
                  
                 
                   
                     log 
                     10 
                   
                    
                   
                     ( 
                     
                       D 
                       λ 
                     
                     ) 
                   
                 
               
             
           
         
       
       
         
           
             
               QP 
               x 
             
             = 
             
               
                 QP 
                 
                   x 
                    
                   
                       
                   
                    
                   0 
                 
               
               + 
               
                 s 
                 · 
                 
                   log 
                    
                   
                     ( 
                     
                       
                         D 
                         x 
                       
                       
                         D 
                         
                           x 
                            
                           
                               
                           
                            
                           0 
                         
                       
                     
                     ) 
                   
                 
               
             
           
         
       
       
         
           
             
               QP 
               x 
             
             = 
             
               ⌊ 
               
                 
                   QP 
                   
                     x 
                      
                     
                         
                     
                      
                     0 
                   
                 
                 + 
                 
                   
                     s 
                     λ 
                   
                   · 
                   
                     log 
                      
                     
                       ( 
                       
                         
                           D 
                           λ 
                         
                         
                           
                             ( 
                             
                               
                                 α 
                                 x 
                               
                                
                               
                                 D 
                                 
                                   x 
                                    
                                   
                                       
                                   
                                    
                                   0 
                                 
                               
                             
                             ) 
                           
                           λ 
                         
                       
                       ) 
                     
                   
                 
                 + 
                 0.5 
               
               ⌋ 
             
           
         
       
     
         [0108]    The slope S x  is a picture dependent value which is assumed constant or estimated from the slope of the line between the point (QP x0 ,S x0 ) and the corresponding pre-determined fixed point (QP sf ,S xf ), so that: 
         [0000]    
       
         
           
             
               s 
               x 
             
             = 
             
               max 
                
               
                 ( 
                 
                   
                     min 
                      
                     
                       ( 
                       
                         
                           
                             
                               QP 
                               xf 
                             
                             - 
                             
                               QP 
                               
                                 x 
                                  
                                 
                                     
                                 
                                  
                                 0 
                               
                             
                           
                           
                             
                               S 
                               
                                 x 
                                  
                                 
                                     
                                 
                                  
                                 0 
                               
                             
                             - 
                             
                               S 
                               
                                 x 
                                  
                                 
                                     
                                 
                                  
                                 f 
                               
                             
                           
                         
                         , 
                         
                           S 
                           max 
                         
                       
                       ) 
                     
                   
                   , 
                   
                     S 
                     min 
                   
                 
                 ) 
               
             
           
         
       
     
         [0000]    with S min =1, S max= 3. 
         [0109]    The process of setting the picture final result (get_picture_statistics), as represented by block  80  of  FIG. 5 , is performed by (a) summing rate and distortion of all pictures in a frame; (b) updating the CPB fullness at t −  and t + . 
         [0110]      FIG. 13  illustrates an example of the CPB fullness in the decoder over time for encoding constant frame rate video. It should be noted that at location (a) within  FIG. 13 , CPB(t − )=CPB(0 − )+total_bits_transmitted(t + )−total_bits_encoded((t−1) + ), while at location (b) CPB(t + )=CPB(t − )−pic_bits(t). The CPB(t − ) is the CPB fullness as shown in  FIG. 6  for determining the target bits for GOP. 
         [0111]    Rate control models are updated (update_rate_control models) as shown in block  84  of  FIG. 5 , comprising the following steps. Based on the measured rate and distortion, the rate distortion models are updated for the I, P and B frames. Making the assumption that λ i =λ p =λ b =λ, the partial terms for allocation of picture bits (alloc_pic_bits) is determined and saved as: 
         [0000]      QP X , R X , (D x α x ) λ     x   , N X R X (D x α x ) λ     x      
         [0112]    The CPB fullness is then corrected in response to a desired time period or rate, for example every 1001 seconds according to CPB(t − )=CPB(0 − )+(bits_transmitted(t + )−1001*bit_rate)−(bits_encoded((t−1) + )−1001*bit 13 rate) to avoid drifting caused by finite precision arithmetic. 
         [0113]    The CPB fullness is corrected periodically (e.g., based on predetermined periods, variable periods, events, and so forth), for example as implemented in this case to correct CPB fullness every 1001 seconds. An assumption can be made that the scaled_frame_rate=1001*frame_rate is an integer quantity and that bit_rate is an integer. 
         [0114]    Then every 1001 seconds, update CPB((t+1) − )=bit_rate*1001−bits_encoded+CPB(0 − ), and then reset bits_encoded=bits_encoded−bit_rate*1001 and bits_transmitted=0.0. 
         [0115]    Although the description above contains many details, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the presently preferred embodiments of this invention. Therefore, it will be appreciated 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.” All structural and functional equivalents to the elements of the above-described preferred embodiment that are known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the present claims. Moreover, 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. No claim element herein is to be construed under the provisions of 35 U.S.C. 112, sixth paragraph, unless the element is expressly recited using the phrase “means for.”