[FFmpeg-devel] [PATCH] avcodec/ffv1enc: choose 1.2 by default for higher resolutions to ensure multi-threaded decodability

Peter B. pb at das-werkstatt.com
Mon Dec 9 10:55:53 CET 2013


Quoting Michael Niedermayer <michaelni at gmx.at>:

> On Mon, Dec 09, 2013 at 12:46:37AM +0100, Peter B. wrote:
>> On 12/08/2013 06:25 PM, Michael Niedermayer wrote:
>> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
>> > ---
>> >  libavcodec/ffv1enc.c |    4 ++++
>> >  1 file changed, 4 insertions(+)
>> >
>> > diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
>> > index 2c87d7a..4856be5 100644
>> > --- a/libavcodec/ffv1enc.c
>> > +++ b/libavcodec/ffv1enc.c
>> > @@ -672,6 +672,10 @@ static av_cold int encode_init(AVCodecContext *avctx)
>> >      if ((avctx->flags & (CODEC_FLAG_PASS1|CODEC_FLAG_PASS2)) ||  
>> avctx->slices>1)
>> >          s->version = FFMAX(s->version, 2);
>> >
>> > +    // Unspecified level & slices, we choose version 1.2+ to  
>> ensure multithreaded decodability
>> > +    if (avctx->slices == 0 && avctx->level < 0 && avctx->width *  
>> avctx->height > 720*576)
>> > +        s->version = FFMAX(s->version, 2);
>> > +
>> >      if (avctx->level == 3 || (avctx->level <= 0 && s->version == 2)) {
>> >          s->version = 3;
>> >      }
>>
>> Do I understand this correctly to set the bitstream version to "2" if
>> the resolution is greater than SD?
>>
>> If so, I wanted to ask why not set the version to 1.3 directly?
>
> there is no reason, its equivalent, the next line will change it to
> 3

Oh, now I see.
Thanks for clearing that up for me.

This auto-level setting is actually a nice thing for applications  
which do not yet offer a switch for choosing FFV1-version, by allowing  
to use them to generate FFV1.3 files.


Thanks,
Pb



More information about the ffmpeg-devel mailing list