[FFmpeg-devel] [PATCH] avcodec/svq1: fix interframe mean VLC symbols

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Mon Oct 17 06:04:29 EEST 2022


Peter Ross:
> Fixes ticket #128.
> 
> The SVQ1 interframe mean VLC symbols -128 and 128 are incorrectly swapped
> in our SVQ1 implementation, resulting in visible artifacts for some videos.
> This patch unswaps the order of these two symbols.
> 
> The most noticable example of the artiacts caused by this error can be observed in
> https://trac.ffmpeg.org/attachment/ticket/128/svq1_set.7z '352_288_k_50.mov'.
> The artifacts are not observed when using the reference decoder
> (QuickTime 7.7.9 x86 binary).
> 
> As a result of this patch, the reference data for the fate-svq1 test
> ($SAMPLES/svq1/marymary-shackles.mov) must be modified. For this file, our
> decoder output is now bitwise identical to the reference decoder. I have
> tested patch with various other samples and they are all now bitwise identical.

Seems like this is not the only test whose reference needs to be
updated. There are also the fate-vsynth%-svq1 tests.

> ---
>  libavcodec/svq1_vlc.h |  4 ++--
>  tests/ref/fate/svq1   | 22 +++++++++++-----------
>  2 files changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/libavcodec/svq1_vlc.h b/libavcodec/svq1_vlc.h
> index 06e3509e4d..5c27928c2a 100644
> --- a/libavcodec/svq1_vlc.h
> +++ b/libavcodec/svq1_vlc.h
> @@ -167,7 +167,7 @@ const uint16_t ff_svq1_inter_mean_vlc[512][2] = {
>      { 0xA0, 22 },  { 0xA1, 22 },  { 0xA2, 22 },  { 0xA3, 22 },
>      { 0xA4, 22 },  { 0xA5, 22 },  { 0xA6, 22 },  { 0xA7, 22 },
>      { 0xA8, 22 },  { 0xA9, 22 },  { 0xAA, 22 },  { 0xAB, 22 },
> -    { 0x7F, 22 },  { 0x8F, 21 },  { 0xAC, 22 },  { 0xAD, 22 },
> +    { 0x8E, 21 },  { 0x8F, 21 },  { 0xAC, 22 },  { 0xAD, 22 },
>      { 0xAE, 22 },  { 0xAF, 22 },  { 0xB0, 22 },  { 0xB1, 22 },
>      { 0x53, 20 },  { 0x90, 21 },  { 0xB2, 22 },  { 0x91, 21 },
>      { 0xB3, 22 },  { 0xB4, 22 },  { 0x54, 20 },  { 0xB5, 22 },
> @@ -231,7 +231,7 @@ const uint16_t ff_svq1_inter_mean_vlc[512][2] = {
>      { 0x87, 21 },  { 0x4F, 20 },  { 0x35, 19 },  { 0x4E, 20 },
>      { 0x33, 19 },  { 0x32, 19 },  { 0x4D, 20 },  { 0x4C, 20 },
>      { 0x83, 22 },  { 0x4B, 20 },  { 0x81, 22 },  { 0x80, 22 },
> -    { 0x8E, 21 },  { 0x7E, 22 },  { 0x7D, 22 },  { 0x84, 21 },
> +    { 0x7F, 22 },  { 0x7E, 22 },  { 0x7D, 22 },  { 0x84, 21 },
>      { 0x8D, 21 },  { 0x7A, 22 },  { 0x79, 22 },  { 0x4A, 20 },
>      { 0x77, 22 },  { 0x76, 22 },  { 0x89, 21 },  { 0x74, 22 },
>      { 0x73, 22 },  { 0x72, 22 },  { 0x49, 20 },  { 0x70, 22 },
> diff --git a/tests/ref/fate/svq1 b/tests/ref/fate/svq1
> index d53e2952e4..0b0948cce6 100644
> --- a/tests/ref/fate/svq1
> +++ b/tests/ref/fate/svq1
> @@ -24,19 +24,19 @@
>  0,         18,         18,        1,    21600, 0x8d5b2ad0
>  0,         19,         19,        1,    21600, 0xe67128e6
>  0,         20,         20,        1,    21600, 0xb7bf613e
> -0,         21,         21,        1,    21600, 0xefd0f51b
> -0,         22,         22,        1,    21600, 0x31b7da59
> +0,         21,         21,        1,    21600, 0xf697fa3e
> +0,         22,         22,        1,    21600, 0x5b6ede88
>  0,         23,         23,        1,    21600, 0x7a84a8f7
>  0,         24,         24,        1,    21600, 0x0351ad27
> -0,         25,         25,        1,    21600, 0xed6f434d
> -0,         26,         26,        1,    21600, 0x0e771127
> -0,         27,         27,        1,    21600, 0x37bf0b95
> -0,         28,         28,        1,    21600, 0x30e10a77
> -0,         29,         29,        1,    21600, 0x1a48288a
> -0,         30,         30,        1,    21600, 0xf43c6770
> -0,         31,         31,        1,    21600, 0x3c43ae68
> -0,         32,         32,        1,    21600, 0x04dc0949
> -0,         33,         33,        1,    21600, 0x7920758d
> +0,         25,         25,        1,    21600, 0x57b547c2
> +0,         26,         26,        1,    21600, 0xbb9e1558
> +0,         27,         27,        1,    21600, 0xcb470f6b
> +0,         28,         28,        1,    21600, 0xeb100de0
> +0,         29,         29,        1,    21600, 0x089c2bf0
> +0,         30,         30,        1,    21600, 0xe27b6a42
> +0,         31,         31,        1,    21600, 0xbfe2b11b
> +0,         32,         32,        1,    21600, 0xd9ca0bb5
> +0,         33,         33,        1,    21600, 0x12fe783c
>  0,         34,         34,        1,    21600, 0x6c12bab5
>  0,         35,         35,        1,    21600, 0x1ac23706
>  0,         36,         36,        1,    21600, 0x7a95cb5f
> 
> 



More information about the ffmpeg-devel mailing list