[Ffmpeg-devel] [RFC] ratecontrol buffer size magic

Baptiste Coudurier baptiste.coudurier
Wed Apr 25 12:21:52 CEST 2007


Michael Niedermayer wrote:
> Hi
> 
> On Thu, Apr 12, 2007 at 11:07:10AM +0200, Baptiste Coudurier wrote:
>> Hi
>>
>> Michael Niedermayer wrote:
>>> Hi
>>>
>>> On Wed, Apr 11, 2007 at 01:47:55PM +0200, Baptiste Coudurier wrote:
>>>> Hi
>>>>
>>>> Michael Niedermayer wrote:
>>>>> Hi
>>>>>
>>>>> On Thu, Apr 05, 2007 at 06:51:00PM +0200, Baptiste Coudurier wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I stumbed accross a weird behaviour of the CBR ratecontrol lately,
>>>>>> basically doing:
>>>>>>
>>>>>>  ffmpeg -i file.mpg -vcodec mpeg2video -minrate 30000k -maxrate 30000k
>>>>>> -b 30000k -intra -flags +ildct+low_delay -dc 10 -flags2
>>>>>> +ivlc+non_linear_q -ps 1 -qmin 1 -qmax 12 -top 1 -vglobal 4 -acodec
>>>>>> pcm_s16be -f mov -bufsize 1200000 -rc_init_occupancy 1200000 cbr.mov
>>>>>>
>>>>>> Constraints are so in order to achieve vbv delay as 3600.
>>>>>> Now ffmpeg will only give me qp as 24. While tweaking I changed some
>>>>>> magic in ratecontrol.c (see patch attached) and now qp have decent/good
>>>>>> values.
>>>>>>
>>>>>> I dig into svn history and found out that r2601 bumped */2 to */3 to
>>>>>> improve CBR ratecontrol. Can anyone explain in detail why that magic
>>>>>> does improve behaviour ?
>>>>> yes, your vbv buf size is VERY significantly too small it can barely
>>>>> hold a single frame, increase it by a factor of 100 ...
>>>>>
>>>>> i hope theres no spec which mandates such nonsense parameters ...
>>>>>
>>>>>
>>>>>> Can that parameter be user setable ? 
>>>>> if you make it user settable ...
>>>> Is something like that ok ?
>>> yes except that name of the variable and the comment
>> +
>> +    /**
>> +     * Ratecontrol available buffer space coefficient applied when
>> choosing qp.
> 
> does anyone understand what this variable does based on this description?
> no?
> if no then patch rejected

Humm ok another try:

    /**
     * Coefficient applied to buffer space, by ratecontrol,
     * for limiting QP (bits2qp) when encoding with a buffer size.
     * - encoding: Set by user.
     * - decoding: unused
     */
    float rc_buffer_space_to_qp_coeff;

{"rc_buf_space_to_qp_coeff", "ratecontrol buffer space coefficient for
limiting qp", OFFSET(rc_avail_buffer_space_coeff), FF_OPT_TYPE_FLOAT,
3.0, FLT_MIN, FLT_MAX, V|E},

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
SMARTJOG S.A.                                    http://www.smartjog.com
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
Phone: +33 1 49966312




More information about the ffmpeg-devel mailing list