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

Peter Ross git at videolan.org
Tue Nov 1 01:15:20 EET 2022


ffmpeg | branch: master | Peter Ross <pross at xvid.org> | Tue Nov  1 09:24:29 2022 +1100| [6fe8556a19c4494d4312f81c2fb7d4402b31b2eb] | committer: Peter Ross

avcodec/svq1: fix interframe mean VLC symbols

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6fe8556a19c4494d4312f81c2fb7d4402b31b2eb
---

 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-cvslog mailing list