[FFmpeg-devel] [PATCH 1/3] avcodec/rangecoder: factorize termination version code

Jerome Martinez jerome at mediaarea.net
Wed Dec 19 11:35:25 EET 2018


On 19/12/2018 02:40, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>   libavcodec/ffv1enc.c          | 10 +++-------
>   libavcodec/rangecoder.c       |  4 +++-
>   libavcodec/rangecoder.h       |  2 +-
>   libavcodec/snowenc.c          |  2 +-
>   libavcodec/sonic.c            |  2 +-
>   libavcodec/tests/rangecoder.c |  2 +-
>   6 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c
> index f5eb0feb4e..796d81f7c6 100644
> --- a/libavcodec/ffv1enc.c
> +++ b/libavcodec/ffv1enc.c
> @@ -449,7 +449,7 @@ static int write_extradata(FFV1Context *f)
>           put_symbol(c, state, f->intra = (f->avctx->gop_size < 2), 0);
>       }
>   
> -    f->avctx->extradata_size = ff_rac_terminate(c);
> +    f->avctx->extradata_size = ff_rac_terminate(c, 0);
>       v = av_crc(av_crc_get_table(AV_CRC_32_IEEE), 0, f->avctx->extradata, f->avctx->extradata_size);
>       AV_WL32(f->avctx->extradata + f->avctx->extradata_size, v);
>       f->avctx->extradata_size += 4;
> @@ -1065,9 +1065,7 @@ retry:
>           encode_slice_header(f, fs);
>       }
>       if (fs->ac == AC_GOLOMB_RICE) {
> -        if (f->version > 2)
> -            put_rac(&fs->c, (uint8_t[]) { 129 }, 0);
> -        fs->ac_byte_count = f->version > 2 || (!x && !y) ? ff_rac_terminate(&fs->c) : 0;
> +        fs->ac_byte_count = f->version > 2 || (!x && !y) ? ff_rac_terminate(&fs->c, f->version > 2) : 0;

Moving the "129" stuff from FFV1 encoder code to rangecoder encoding 
part is good for factorization, but there is no more mirroring of FFV1 
encoding and FFV1 decoding in that case ("129" stuff is still present in 
FFV1 decoder code, not rangecoder decoding part), IMO this makes the 
FFV1 code more difficult to understand.

Isn't it possible to have the same kind of modification for the decoding 
part?


More information about the ffmpeg-devel mailing list