Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Peter Ross <pross@xvid.org>
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCHv2 1/4] avcodec/svq1: fix interframe mean VLC symbols
Date: Thu, 20 Oct 2022 12:29:53 +1100
Message-ID: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 6285 bytes --]

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.

The SVQ1 encoder also produces different output because of this change, so
the the vsynth test reference data has also been updated.
---
 libavcodec/svq1_vlc.h             |  4 ++--
 tests/ref/fate/svq1               | 22 +++++++++++-----------
 tests/ref/vsynth/vsynth1-svq1     |  2 +-
 tests/ref/vsynth/vsynth2-svq1     |  4 ++--
 tests/ref/vsynth/vsynth_lena-svq1 |  2 +-
 5 files changed, 17 insertions(+), 17 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
diff --git a/tests/ref/vsynth/vsynth1-svq1 b/tests/ref/vsynth/vsynth1-svq1
index cb89915d22..1970f779fc 100644
--- a/tests/ref/vsynth/vsynth1-svq1
+++ b/tests/ref/vsynth/vsynth1-svq1
@@ -1,4 +1,4 @@
-39ec74da265e3ef27756618108641181 *tests/data/fate/vsynth1-svq1.mov
+66933a2b34e123a9fc612cbc4dbbe353 *tests/data/fate/vsynth1-svq1.mov
 1334233 tests/data/fate/vsynth1-svq1.mov
 9cc35c54b2c77d36bd7e308b393c1f81 *tests/data/fate/vsynth1-svq1.out.rawvideo
 stddev:    9.58 PSNR: 28.50 MAXDIFF:  210 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth2-svq1 b/tests/ref/vsynth/vsynth2-svq1
index 4a50775501..32a0b80df2 100644
--- a/tests/ref/vsynth/vsynth2-svq1
+++ b/tests/ref/vsynth/vsynth2-svq1
@@ -1,4 +1,4 @@
-1c12440c323bc8ace5464587b5369c4a *tests/data/fate/vsynth2-svq1.mov
-940289 tests/data/fate/vsynth2-svq1.mov
+6ba5415d077304dc73ba8d8aaccb15eb *tests/data/fate/vsynth2-svq1.mov
+940285 tests/data/fate/vsynth2-svq1.mov
 a8cd3b833cd7f570ddbf1e6b3eb125b6 *tests/data/fate/vsynth2-svq1.out.rawvideo
 stddev:    3.71 PSNR: 36.72 MAXDIFF:  210 bytes:  7603200/  7603200
diff --git a/tests/ref/vsynth/vsynth_lena-svq1 b/tests/ref/vsynth/vsynth_lena-svq1
index 01c1b06c74..e0614df3f9 100644
--- a/tests/ref/vsynth/vsynth_lena-svq1
+++ b/tests/ref/vsynth/vsynth_lena-svq1
@@ -1,4 +1,4 @@
-a6398d8fd306cfe96dc41060335e67e8 *tests/data/fate/vsynth_lena-svq1.mov
+bbe2b28fcef16aa088d29984931eea6a *tests/data/fate/vsynth_lena-svq1.mov
 766701 tests/data/fate/vsynth_lena-svq1.mov
 aa03471dac3f49455a33a2b19fda1098 *tests/data/fate/vsynth_lena-svq1.out.rawvideo
 stddev:    3.23 PSNR: 37.93 MAXDIFF:   61 bytes:  7603200/  7603200
-- 
2.35.1

-- Peter
(A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B)

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

             reply	other threads:[~2022-10-20  1:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-20  1:29 Peter Ross [this message]
2022-10-20  1:30 ` [FFmpeg-devel] [PATCHv2 2/4] avcodec/svq1enc: do not use ambiguous interframe mean symbols Peter Ross
2022-10-20  1:30 ` [FFmpeg-devel] [PATCHv2 3/4] avcodec/svq1enc: output ident string in extradata field Peter Ross
2022-10-20  1:42   ` James Almer
2022-10-20  7:46     ` Peter Ross
2022-10-20 19:26   ` Michael Niedermayer
2022-10-20  1:30 ` [FFmpeg-devel] [PATCHv2 4/4] avcodec/svq1dec: detect buggy FFmpeg encoder and apply correction to interframe mean symbols Peter Ross
2022-10-20 19:33 ` [FFmpeg-devel] [PATCHv2 1/4] avcodec/svq1: fix interframe mean VLC symbols Michael Niedermayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org \
    --to=pross@xvid.org \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git