[FFmpeg-devel] avcodec/proresenc_aw improvements

Michael Niedermayer michael at niedermayer.cc
Sat Jul 21 21:01:15 EEST 2018


On Sat, Jul 21, 2018 at 02:33:24PM +0200, Martin Vignali wrote:
> Hello,
> 
> Patch in attach improve some part of the prores_aw encoder.
> 

> 001 : use scantable in prores_data instead of a duplicate one.

This could negativly affect the performance of the changed inner loop
have you checked that the changed function does not become slower ?


> 002 : use for the frame header, primaries, transfert, colorspace like in
> proresenc_ks
> avoid color shift on some software (update fate test)
> 003 : change qp start value for each profile based on official encoder
> output
> and update proxy qp end to a bigger value (also based on official encoder
> output)
> (update fate test)
> 004 : calculate dct part before the quantif search. Avoid to recalculate it
> each time
> On a basic test Prores decoding -> prores encoding, the global speed
> improvment is around 2%
> 
> This encoder is cover by 4 fate test, can be run with :
> make fate-vsynth3-prores;make fate-vsynth2-prores;make
> fate-vsynth1-prores;make fate-vsynth_lena-prores SAMPLES=fate-suite/
> 
> Plan to add later more part from the ks encoder to this one
> 
> Martin


[...]
>  libavcodec/proresenc_anatoliy.c     |    6 +++---
>  tests/ref/vsynth/vsynth1-prores     |    2 +-
>  tests/ref/vsynth/vsynth2-prores     |    2 +-
>  tests/ref/vsynth/vsynth3-prores     |    2 +-
>  tests/ref/vsynth/vsynth_lena-prores |    2 +-
>  5 files changed, 7 insertions(+), 7 deletions(-)
> f469d157875b5b92fd7053dde08c226296c0cf6b  0002-avcodec-proresenc_aw-use-AVframe-primaries-transfert.patch
> From 2891017d83b9a0e10c912d68bc64f67e960bff38 Mon Sep 17 00:00:00 2001
> From: Martin Vignali <martin.vignali at gmail.com>
> Date: Sat, 21 Jul 2018 14:10:07 +0200
> Subject: [PATCH 2/4] avcodec/proresenc_aw : use AVframe primaries, transfert, 
>  colorspace for frame header instead of default (unknown, unknown, Rec601)
> 
> avoid color shift, on some decoding software
> ---
>  libavcodec/proresenc_anatoliy.c     | 6 +++---
>  tests/ref/vsynth/vsynth1-prores     | 2 +-
>  tests/ref/vsynth/vsynth2-prores     | 2 +-
>  tests/ref/vsynth/vsynth3-prores     | 2 +-
>  tests/ref/vsynth/vsynth_lena-prores | 2 +-
>  5 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/libavcodec/proresenc_anatoliy.c b/libavcodec/proresenc_anatoliy.c
> index dd6b1dcfb1..91b9a17947 100644
> --- a/libavcodec/proresenc_anatoliy.c
> +++ b/libavcodec/proresenc_anatoliy.c
> @@ -501,9 +501,9 @@ static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
>      bytestream_put_be16(&buf, avctx->height);
>      *buf++ = 0x83; // {10}(422){00}{00}(frame){11}
>      *buf++ = 0;
> -    *buf++ = 2;
> -    *buf++ = 2;
> -    *buf++ = 6;
> +    *buf++ = pict->color_primaries;
> +    *buf++ = pict->color_trc;
> +    *buf++ = pict->colorspace;

Has someone confirmed that all values our enum contains or will
contain can just be written with no check ?

Thanks

[...]


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

While the State exists there can be no freedom; when there is freedom there
will be no State. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180721/b629b6cf/attachment.sig>


More information about the ffmpeg-devel mailing list