From patchwork Thu Oct 20 01:29:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ross X-Patchwork-Id: 38829 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp659070pzb; Wed, 19 Oct 2022 18:30:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5Qs7GgSj1Rvyo0Gax71AT1EvdV8TQk+Dj215rRYgx5OZbxqJPe8IFx6Jgkcgx+6fFVdgo5 X-Received: by 2002:a17:907:72c3:b0:792:56d7:285a with SMTP id du3-20020a17090772c300b0079256d7285amr4263584ejc.597.1666229418708; Wed, 19 Oct 2022 18:30:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666229418; cv=none; d=google.com; s=arc-20160816; b=TOyCIkSdWo5bL2G9Eros3MCyvsj0i3clLL7t6QhRPquJbidWE22wXNhQ0NzeLFzdZc mUq5Z5q3niVw4a6qxa6AyoMi6LA1LywwaZiT2+rqXiW5345z4HOAfgKrCfvnrUagQY2x wYLBss6hzo9lB1jhg8zYlPaE8eDXRByesorGVY1VjOyKrXRcv9CDU04FoTiLFYm0JhlU ZiOjDkwP9K0238YWXD5tnei4vVsOZcbJuaE/xh78SSY/cFAvXN66+r3n3UPra9vP08mM voyhzuBN0J5/8ZyAVkYNzML/EwP73sx8R8e2fwYeZVMoU/FU9bs5e81uHeaHJTOe/pDI BKGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:message-id:to:from:date:delivered-to; bh=W+lEzCiIvOHNKr9gUx5CBqx6XPu+j84lTJ7jirrbA1c=; b=hNX3ftTXHmpBAnBN8dtPWAEsJ2GCPG/d23pzhY7GLA33DvMEvS/gPn09iX6JBiVlIG cz/mMhpSbgf7oE7GALa/f4QAK6ZMZqCFxtBxACrXziG1DCFUYDIVUJvUAB1AqDKGO0bJ fJSv2ZBXldrYntabcmqMQ9omF8HBjpk9+HlMlk9qOh04o1XKmp7lPujzSRmKy1YcrM1z 54lVMMqCfVkfWjPhVjwVTLRfKkwrIWkjA3Hj2wYVq3vm4xnoR6gQpLRMY9cYjGuV5RrT iAqUA6G1zRhU5Hy/OYFYzwLymDBt/kbJbgTyvcAFLyZNsc3coK5A4aXAHvto/C23nXFj SkiQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hc15-20020a170907168f00b0073d74bcac8dsi12943461ejc.513.2022.10.19.18.30.17; Wed, 19 Oct 2022 18:30:18 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F40E268BCB8; Thu, 20 Oct 2022 04:30:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.sdf.org (mx.sdf.org [205.166.94.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 982B668BC9E for ; Thu, 20 Oct 2022 04:30:06 +0300 (EEST) Received: from c6c3c1c4a4f35c1a432aecdc20090601 ([1.145.213.234]) (authenticated (0 bits)) by mx.sdf.org (8.15.2/8.14.5) with ESMTPSA id 29K1TvGe010408 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO) for ; Thu, 20 Oct 2022 01:30:00 GMT Date: Thu, 20 Oct 2022 12:29:53 +1100 From: Peter Ross To: ffmpeg-devel@ffmpeg.org Message-ID: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCHv2 1/4] avcodec/svq1: fix interframe mean VLC symbols X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: a48+ZC0PNWOn 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 From patchwork Thu Oct 20 01:30:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ross X-Patchwork-Id: 38830 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp659136pzb; Wed, 19 Oct 2022 18:30:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5oqeiVPJ9hTA2qSGXPA/liNGGbsIccsxyJzF2MANKuSgaVxj5rMtAxzECNNPTrnG04shTG X-Received: by 2002:a17:907:6087:b0:78d:ee99:a06a with SMTP id ht7-20020a170907608700b0078dee99a06amr9056566ejc.52.1666229431966; Wed, 19 Oct 2022 18:30:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666229431; cv=none; d=google.com; s=arc-20160816; b=HekaMVW8O5V6t5d3RlUrbymIMOdxcf1fWKYBveaXw/UyNyiVetGf1I7vpnFAZhdoPQ qETnumZQp5oPwqKe+NagrmE+H7zSUm1IEfXxysle6MmvU8kz1DZE0SNRrTAJEbWKlqM5 XBBYDtfmDIZV66Pby6ydw8ckLDHccu3I5e2zIE5H0bxjeL20do3raaPuroLnMkLW1uLE lHA93GfX1eaROMnGNHLd8CcYxpN+HeNm5msqHiXQp3Xk8cxPMz8YkFO4jo+GgHT9fwMq 9Q174ozLPhEdJZQXWgXBq6pNJcZ+FXQkodWwrmwIGit4Ip4hpQLNO8VXcR2es8rrU7t1 UFWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :in-reply-to:mime-version:references:message-id:to:from:date :delivered-to; bh=Og2bvyB9NhbqxqeQWmvfu9ONccuql0M0hxN1JkfsJfs=; b=dSBSkptqzYI+ZSjvJ2e5Aey1T26uSUzX9MZQh2juRNfYPb4X3NQHx6cyTsXWNFTBtb BcH0ickxfWCznNVSgJ3KXEeEeVeceEQnxOpDnRaCbZAtotP9z05WwM7pax4MSHhapt0b +Lw/0Gwss8L3i6OXlHrO4x3WlrrrpQ6AQRXINENKpuCtP18NXsHg9qow2qdCknNXwzHQ yMVw1Gi8UqiM3o8PbeccrWZhc0YxUGvo2uHxTYAknsDvw7kyovFviGOr7bHrgUjo9g8z 6mJ61IeCBWxr0t6tYAnqxa+8V4x9LTejcYHRe1XWxxASh2KQNklpxg/s0sg3uLwsOcij chrQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e12-20020a056402190c00b0045d9a3adf48si10538153edz.591.2022.10.19.18.30.31; Wed, 19 Oct 2022 18:30:31 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 38EDB68BDA4; Thu, 20 Oct 2022 04:30:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.sdf.org (mx.sdf.org [205.166.94.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F58968BC68 for ; Thu, 20 Oct 2022 04:30:22 +0300 (EEST) Received: from d0bc8d166857e96f6d916e78ee880a5f ([1.145.213.234]) (authenticated (0 bits)) by mx.sdf.org (8.15.2/8.14.5) with ESMTPSA id 29K1UG7E014553 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO) for ; Thu, 20 Oct 2022 01:30:20 GMT Date: Thu, 20 Oct 2022 12:30:12 +1100 From: Peter Ross To: ffmpeg-devel@ffmpeg.org Message-ID: References: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> MIME-Version: 1.0 In-Reply-To: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> Subject: [FFmpeg-devel] [PATCHv2 2/4] avcodec/svq1enc: do not use ambiguous interframe mean symbols X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: i5biWrLL5dKO Don't emit interframe mean symbols -128 and 128 to maintain compatibility with older versions of FFmpeg that incorrectly interpret these symbols. --- libavcodec/svq1enc.c | 5 +++++ tests/ref/seek/vsynth_lena-svq1 | 28 ++++++++++++++-------------- tests/ref/vsynth/vsynth1-svq1 | 8 ++++---- tests/ref/vsynth/vsynth2-svq1 | 6 +++--- tests/ref/vsynth/vsynth3-svq1 | 6 +++--- tests/ref/vsynth/vsynth_lena-svq1 | 6 +++--- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index 75adbe7ea0..9bd5a04368 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -234,6 +234,11 @@ static int encode_block(SVQ1EncContext *s, uint8_t *src, uint8_t *ref, } } + if (best_mean == -128) + best_mean = -127; + else if (best_mean == 128) + best_mean = 127; + split = 0; if (best_score > threshold && level) { int score = 0; diff --git a/tests/ref/seek/vsynth_lena-svq1 b/tests/ref/seek/vsynth_lena-svq1 index 33fe33e916..36c0fb7f4e 100644 --- a/tests/ref/seek/vsynth_lena-svq1 +++ b/tests/ref/seek/vsynth_lena-svq1 @@ -2,49 +2,49 @@ ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517568 size: 25636 +ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517672 size: 25636 ret: 0 st: 0 flags:0 ts: 0.788359 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326556 size: 23552 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326616 size: 23552 ret: 0 st: 0 flags:1 ts:-0.317500 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret:-1 st:-1 flags:0 ts: 2.576668 ret: 0 st:-1 flags:1 ts: 1.470835 -ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517568 size: 25636 +ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517672 size: 25636 ret: 0 st: 0 flags:0 ts: 0.365000 -ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157040 size: 21896 +ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157232 size: 21896 ret: 0 st: 0 flags:1 ts:-0.740859 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret:-1 st:-1 flags:0 ts: 2.153336 ret: 0 st:-1 flags:1 ts: 1.047503 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326556 size: 23552 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326616 size: 23552 ret: 0 st: 0 flags:0 ts:-0.058359 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st: 0 flags:1 ts: 2.835859 -ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722804 size: 25888 +ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722884 size: 25888 ret: 0 st:-1 flags:0 ts: 1.730004 -ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722804 size: 25888 +ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722884 size: 25888 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157040 size: 21896 +ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157232 size: 21896 ret: 0 st: 0 flags:0 ts:-0.481641 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st: 0 flags:1 ts: 2.412500 -ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722804 size: 25888 +ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722884 size: 25888 ret: 0 st:-1 flags:0 ts: 1.306672 -ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517568 size: 25636 +ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517672 size: 25636 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st: 0 flags:0 ts:-0.905000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret: 0 st: 0 flags:1 ts: 1.989141 -ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722804 size: 25888 +ret: 0 st: 0 flags:1 dts: 1.920000 pts: 1.920000 pos: 722884 size: 25888 ret: 0 st:-1 flags:0 ts: 0.883340 -ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326556 size: 23552 +ret: 0 st: 0 flags:1 dts: 0.960000 pts: 0.960000 pos: 326616 size: 23552 ret: 0 st:-1 flags:1 ts:-0.222493 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 ret:-1 st: 0 flags:0 ts: 2.671641 ret: 0 st: 0 flags:1 ts: 1.565859 -ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517568 size: 25636 +ret: 0 st: 0 flags:1 dts: 1.440000 pts: 1.440000 pos: 517672 size: 25636 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157040 size: 21896 +ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: 157232 size: 21896 ret: 0 st:-1 flags:1 ts:-0.645825 ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 36 size: 22300 diff --git a/tests/ref/vsynth/vsynth1-svq1 b/tests/ref/vsynth/vsynth1-svq1 index 1970f779fc..e91ef46f17 100644 --- a/tests/ref/vsynth/vsynth1-svq1 +++ b/tests/ref/vsynth/vsynth1-svq1 @@ -1,4 +1,4 @@ -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 +78cdca850b19faf3aac0b0682207451e *tests/data/fate/vsynth1-svq1.mov +1333541 tests/data/fate/vsynth1-svq1.mov +0b9ee47ee4bf735fe3697daad64fc409 *tests/data/fate/vsynth1-svq1.out.rawvideo +stddev: 9.57 PSNR: 28.50 MAXDIFF: 210 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-svq1 b/tests/ref/vsynth/vsynth2-svq1 index 32a0b80df2..b50ba45e20 100644 --- a/tests/ref/vsynth/vsynth2-svq1 +++ b/tests/ref/vsynth/vsynth2-svq1 @@ -1,4 +1,4 @@ -6ba5415d077304dc73ba8d8aaccb15eb *tests/data/fate/vsynth2-svq1.mov -940285 tests/data/fate/vsynth2-svq1.mov -a8cd3b833cd7f570ddbf1e6b3eb125b6 *tests/data/fate/vsynth2-svq1.out.rawvideo +42578021105a2f526179c5601e635312 *tests/data/fate/vsynth2-svq1.mov +940337 tests/data/fate/vsynth2-svq1.mov +ba8f6b721a8e19fe8a6ef92a8cff7479 *tests/data/fate/vsynth2-svq1.out.rawvideo stddev: 3.71 PSNR: 36.72 MAXDIFF: 210 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth3-svq1 b/tests/ref/vsynth/vsynth3-svq1 index e760abbdb4..ba1d3d5082 100644 --- a/tests/ref/vsynth/vsynth3-svq1 +++ b/tests/ref/vsynth/vsynth3-svq1 @@ -1,4 +1,4 @@ -1972e0df8be667443992e405cceec291 *tests/data/fate/vsynth3-svq1.mov -40773 tests/data/fate/vsynth3-svq1.mov -a1e5334cf67649bf8c7d95dc4d1bf148 *tests/data/fate/vsynth3-svq1.out.rawvideo +03805cb764c00c2162b2bed24b7f34bd *tests/data/fate/vsynth3-svq1.mov +40757 tests/data/fate/vsynth3-svq1.mov +a99efde992a2e3efcc085ecc6920a1e3 *tests/data/fate/vsynth3-svq1.out.rawvideo stddev: 14.49 PSNR: 24.91 MAXDIFF: 183 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth_lena-svq1 b/tests/ref/vsynth/vsynth_lena-svq1 index e0614df3f9..94f260865a 100644 --- a/tests/ref/vsynth/vsynth_lena-svq1 +++ b/tests/ref/vsynth/vsynth_lena-svq1 @@ -1,4 +1,4 @@ -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 +7534b2c6b7fc7201f193e9b4514cdb90 *tests/data/fate/vsynth_lena-svq1.mov +766817 tests/data/fate/vsynth_lena-svq1.mov +85261558fa744ef468fe77dbe4d91d8d *tests/data/fate/vsynth_lena-svq1.out.rawvideo stddev: 3.23 PSNR: 37.93 MAXDIFF: 61 bytes: 7603200/ 7603200 From patchwork Thu Oct 20 01:30:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ross X-Patchwork-Id: 38831 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp659253pzb; Wed, 19 Oct 2022 18:30:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6kIxEcOI4Xj7orZecGQiwUAtX+6MThN1nuo6wUX/Qmj4ntVRl94G2o/6mc/Zci0zerefBU X-Received: by 2002:a17:907:c03:b0:781:fd5a:c093 with SMTP id ga3-20020a1709070c0300b00781fd5ac093mr9048522ejc.89.1666229452084; Wed, 19 Oct 2022 18:30:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666229452; cv=none; d=google.com; s=arc-20160816; b=nLZ27FJtQsU0MjB56s9BxIU/h9xXuhE38d2o57UFvDTsDbqUiqpoIesN0hsTJcAjQ0 PGn4yF0/k8L9fdlvTvOnYR6frH5r9uun8Pg6m6vVwDA/U7xAt+NAXnBgu0FcEcqolWgV FAHrgUA3uZNQN5y5625xBjLPTHWAaEKRZOJjDnC7ydsRV7gTX9Drpf0YYD/A7RgQmjet 1wp3bQpnF6ls+p2zd5OGogLiHtFhmbsU133cG0A7dCr89T6rsqXhpEXizVxLtvPELIWs LI1nVOCQqPk7HqqAXaU6TQa9Rf9E0Y/nRNCiamQrWNYkfb920Nedftms3EPxUT96ymGP G82w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :in-reply-to:mime-version:references:message-id:to:from:date :delivered-to; bh=8FSj26Pi1aSHYuyTKPWyy2lvoBaPYRZcixPeAOFyZ1U=; b=hszfpizZ96QwPa8JEOCmUYmEapBegqH0PA3TeIdzfUxqp2jq2xDaJbD7umKep64Kwb UwXU+r0yzYi+eQ6E0EiQulkx1lIzYhJ82HEtYN/Q2QA86sy+STR1TRZTUX7WqgUyDtIq 1i8nWQvLpBJgWLY5UUFejnCQ0z+wepjIn6H9HyAiVcr/NUtXcGeCrrdVHFGEz5IctUsn FYUkwr+vTdxnjZYg+Ve6BkS6X/N6kKpgUdEF+8oFPCPW6DpGUdzg+cru8TFGTwo0SK1d mXszTGAkjwZRCujNbByckRkQd4aB+8dfv8zLa3Cjny8PqQ+THoiTHvlyTdqu515C7kfF 2tCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id cr17-20020a170906d55100b00791994dfb9esi7790040ejc.491.2022.10.19.18.30.51; Wed, 19 Oct 2022 18:30:52 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B75468BDB1; Thu, 20 Oct 2022 04:30:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.sdf.org (mx.sdf.org [205.166.94.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 872F868BBD2 for ; Thu, 20 Oct 2022 04:30:42 +0300 (EEST) Received: from b8bd93e02b7f3cc8eb447cfd70474c2e ([1.145.213.234]) (authenticated (0 bits)) by mx.sdf.org (8.15.2/8.14.5) with ESMTPSA id 29K1UaNm026331 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO) for ; Thu, 20 Oct 2022 01:30:40 GMT Date: Thu, 20 Oct 2022 12:30:33 +1100 From: Peter Ross To: ffmpeg-devel@ffmpeg.org Message-ID: <48a2b0b2ccefd79444b467e7d69527028ee5f3cb.1666229366.git.pross@xvid.org> References: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> MIME-Version: 1.0 In-Reply-To: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> Subject: [FFmpeg-devel] [PATCHv2 3/4] avcodec/svq1enc: output ident string in extradata field X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2Iqj9xPBm4N3 This will enable the acurate identification of FFmpeg produced SVQ1 streams, should there be new bugs found in the encoder. --- libavcodec/svq1enc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index 9bd5a04368..6aacaef88d 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -41,6 +41,7 @@ #include "svq1.h" #include "svq1encdsp.h" #include "svq1enc_cb.h" +#include "version.h" #include "libavutil/avassert.h" #include "libavutil/frame.h" @@ -628,6 +629,14 @@ static av_cold int svq1_encode_init(AVCodecContext *avctx) ff_h263_encode_init(&s->m); // mv_penalty + if (!(s->avctx->flags & AV_CODEC_FLAG_BITEXACT)) { + avctx->extradata = av_malloc(sizeof(LIBAVCODEC_IDENT)); + if (!avctx->extradata) + return AVERROR(ENOMEM); + memcpy(avctx->extradata, LIBAVCODEC_IDENT, sizeof(LIBAVCODEC_IDENT)); + avctx->extradata_size = sizeof(LIBAVCODEC_IDENT); + } + return 0; } From patchwork Thu Oct 20 01:30:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ross X-Patchwork-Id: 38832 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp659361pzb; Wed, 19 Oct 2022 18:31:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7xehNfzqFOYQGYXqtgrkgAAG9BF7u5VRoQzA09vjTu4TuRowI7R9lR6+UqjZc1+zrhcVxQ X-Received: by 2002:a17:907:b08:b0:78e:2f4c:882c with SMTP id h8-20020a1709070b0800b0078e2f4c882cmr8748524ejl.293.1666229471908; Wed, 19 Oct 2022 18:31:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666229471; cv=none; d=google.com; s=arc-20160816; b=jdKFozVfrM9mitYUfkcCAZiebKkfvmPaLEsKW4DeL/ZCjGuDakF8/CUKWB/1sFXtif CQJkS4adrFdtUpnc7hAVdCZcYI00zsxIQAttvyjFg/wVwKhEnJaEbixi/xOGxL7m6kgZ thMoOYKSlZU5ikLTufDKvvuVlhvrqj1A4i6SWYYlRbd6Eb6QDK/3CoKMIeuP9j/lzIHb rhPRgdfxci9S9feR4g7URRTzvIHnyXLL0rAEcQEe+UpSdwBLzr4buy6Vx0WDYpxtgciW R+HXYQYBW2VGPD9AbjYX4ROs7hG0zsyMrFNHiUSyYbvuDWWStxxT9HhkuvvJ9z6mmaJ6 t2Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :in-reply-to:mime-version:references:message-id:to:from:date :delivered-to; bh=u8oGBBMlgxBWunp6Bw2/7Pb4NPhkJ4sTtELjmKT4BhM=; b=daFhBGmjnTInfZ5mQHYwqILiKjL5RrwNBy3bvBXx4JdsY3iVDStm0jUtf3ISMNEZgj Dn0VWPhVKCZYYMfgyCKJuV1D+nHvLXmk/AV/QF8WatGYgvi9vPXwFapHYgumg50HOERv RaBd4Ho59c0H1trwHXD/3q/AxZWZgvSUNFjof+G7mkxODcU5DoLauDuZKhuse24ErVlR 3RUkKRg3xBbDGy1E/bF9bTJtYfOB9rC1nIBodQm2eaCk9OZUmbDbhIjj1kD1FWrwEnGU 0ysI3g+rEgD5zExUCErE9ONgGHrQtxRQL5SKgbVJeR5LfZa6KR4XAtSsv97wl7hvlU18 c2Fw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l5-20020a170906794500b0078e1d213831si18030928ejo.122.2022.10.19.18.31.11; Wed, 19 Oct 2022 18:31:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5A3D668BCB8; Thu, 20 Oct 2022 04:31:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.sdf.org (mx.sdf.org [205.166.94.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E259B68BCB8 for ; Thu, 20 Oct 2022 04:31:01 +0300 (EEST) Received: from aecf642c91546b177d47b7680ad3cd11 ([1.145.213.234]) (authenticated (0 bits)) by mx.sdf.org (8.15.2/8.14.5) with ESMTPSA id 29K1UuIm024248 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits) verified NO) for ; Thu, 20 Oct 2022 01:30:59 GMT Date: Thu, 20 Oct 2022 12:30:52 +1100 From: Peter Ross To: ffmpeg-devel@ffmpeg.org Message-ID: <126abbc4aacc11af5b20d140044ded762e954d08.1666229366.git.pross@xvid.org> References: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> MIME-Version: 1.0 In-Reply-To: <406d03fabf0bcf44fbfc894cf9960e3ad3947caf.1666229366.git.pross@xvid.org> Subject: [FFmpeg-devel] [PATCHv2 4/4] avcodec/svq1dec: detect buggy FFmpeg encoder and apply correction to interframe mean symbols X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Lb/9p0LRstdR --- libavcodec/svq1dec.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 828b38b93d..c7269456e2 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -73,6 +73,8 @@ typedef struct SVQ1Context { int height; int frame_code; int nonref; // 1 if the current frame won't be referenced + + int last_tempref; } SVQ1Context; static const uint8_t string_table[256] = { @@ -229,7 +231,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, } static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, - ptrdiff_t pitch) + ptrdiff_t pitch, int buggy) { uint32_t bit_cache; uint8_t *list[63]; @@ -270,6 +272,13 @@ static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, mean = get_vlc2(bitbuf, svq1_inter_mean.table, 9, 3) - 256; + if (buggy) { + if (mean == -128) + mean = 128; + else if (mean == 128) + mean = -128; + } + SVQ1_CALC_CODEBOOK_ENTRIES(ff_svq1_inter_codebooks); for (y = 0; y < height; y++) { @@ -455,7 +464,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, GetBitContext *bitbuf, uint8_t *current, uint8_t *previous, ptrdiff_t pitch, svq1_pmv *motion, int x, int y, - int width, int height) + int width, int height, int buggy) { uint32_t block_type; int result = 0; @@ -487,7 +496,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, ff_dlog(avctx, "Error in svq1_motion_inter_block %i\n", result); break; } - result = svq1_decode_block_non_intra(bitbuf, current, pitch); + result = svq1_decode_block_non_intra(bitbuf, current, pitch, buggy); break; case SVQ1_BLOCK_INTER_4V: @@ -498,7 +507,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, ff_dlog(avctx, "Error in svq1_motion_inter_4v_block %i\n", result); break; } - result = svq1_decode_block_non_intra(bitbuf, current, pitch); + result = svq1_decode_block_non_intra(bitbuf, current, pitch, buggy); break; case SVQ1_BLOCK_INTRA: @@ -524,15 +533,18 @@ static void svq1_parse_string(GetBitContext *bitbuf, uint8_t out[257]) out[i] = 0; } -static int svq1_decode_frame_header(AVCodecContext *avctx, AVFrame *frame) +static int svq1_decode_frame_header(AVCodecContext *avctx, AVFrame *frame, int * buggy) { SVQ1Context *s = avctx->priv_data; GetBitContext *bitbuf = &s->gb; int frame_size_code; int width = s->width; int height = s->height; + int tempref; - skip_bits(bitbuf, 8); /* temporal_reference */ + tempref = get_bits(bitbuf, 8); /* temporal_reference */ + *buggy = tempref == 0 && s->last_tempref == 0 && avctx->extradata_size == 0; + s->last_tempref = tempref; /* frame type */ s->nonref = 0; @@ -624,7 +636,7 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, int buf_size = avpkt->size; SVQ1Context *s = avctx->priv_data; uint8_t *current; - int result, i, x, y, width, height; + int result, i, x, y, width, height, buggy; int ret; /* initialize bit buffer */ @@ -664,7 +676,7 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, src[i] = ((src[i] << 16) | (src[i] >> 16)) ^ src[7 - i]; } - result = svq1_decode_frame_header(avctx, cur); + result = svq1_decode_frame_header(avctx, cur, &buggy); if (result != 0) { ff_dlog(avctx, "Error in svq1_decode_frame_header %i\n", result); return result; @@ -734,7 +746,7 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, result = svq1_decode_delta_block(avctx, &s->hdsp, &s->gb, ¤t[x], previous, linesize, - s->pmv, x, y, width, height); + s->pmv, x, y, width, height, buggy); if (result != 0) { ff_dlog(avctx, "Error in svq1_decode_delta_block %i\n", @@ -820,6 +832,8 @@ static av_cold int svq1_decode_init(AVCodecContext *avctx) ff_thread_once(&init_static_once, svq1_static_init); + s->last_tempref = 0xFF; + return 0; }