[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 00:46:37 CET 2013


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?
As far as I understood, v1.2 was never officially released, so no files
with v1.2 should actually exist in the wild. Wouldn't your patch now
cause v1.2 files to be generated in some cases? I thought v1.2 was
directly to be skipped and v1.3 be used instead.

Could be that I'm completely wrong, but I'm confused... :)
Would you please elaborate a bit the use cases for v1.2 vs v1.3?

Thank you very much in advance,
Pb


More information about the ffmpeg-devel mailing list