From patchwork Tue Aug 9 19:55:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37207 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp463362pzi; Tue, 9 Aug 2022 12:56:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR79CW7IkAGI0gF3HY0efGKmpW3LCJVKiQZdgQpfd1YoEdmvcbjn++nOtjvtCaRitCXHd3C0 X-Received: by 2002:a05:6402:f0e:b0:43d:61d6:bff9 with SMTP id i14-20020a0564020f0e00b0043d61d6bff9mr22844529eda.78.1660074970339; Tue, 09 Aug 2022 12:56:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i5-20020a0564020f0500b0043bca9c457csi9055502eda.396.2022.08.09.12.56.10; Tue, 09 Aug 2022 12:56:10 -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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=g5kNltxo; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 125DC68B865; Tue, 9 Aug 2022 22:56:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070021.outbound.protection.outlook.com [40.92.70.21]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8EC0068B842 for ; Tue, 9 Aug 2022 22:56:01 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eT9YRHn+1dzadqopa8+N7j5z+y4LBX9OAmLbBTzwH4KRyvl7GtkmsiwBPWa52OHAFbKjyfGdLaVPQNecAZpyIKtBEsz6beCu2BS/keCAibS9axBtw3KS0sv0rBBOUM+KVSkDICsIrJoPsoOZiNvypPPGWm/etn2DW0vYv4nQ8k4Tt2R/jICRIckVKKcTsD/a++3i8Kn0Yc4Eb04nnjDAVIq3wlc92d5T3JCfvy/cWT6LyfHyWG4x7XJnpcPM2dUtFBKH5m5KnbeXLc5dV8hDjDu5tFlBr9tS/ui/SvYo2bIqLXfRP8vmibNxSGR81r1VfyhHXdwN+XDh2DqE8pkYAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=bKFwlv7HJjKwzYo9TeT1VZGdlwAF+iZMst30GPx1mfc=; b=SJPYvGvovCjC/EiaA4/KAOAHlCSh3xPeE2mWEI4qNJvDC7qShFqiRE7FgvX03QSEWGICHwIVJyO3kKzDRyyi4urUaURt/c1KtAAbPxbIP4vqnTIcp1o51adU1N6hl+9d8HN4mTAJOH5Gc33Euz6xtYb+zI0uSQKCJzWcmkGp74zGyVNn3AQhW9opfZ2rNhtX5zzzkeScEMLHoEZ07qnLe+Hy58tci73ejfRHqRuEaR31GxOfCgG+drSD7xvv0MdGSX3GyiwEpZJ8qDr81Z6ne3PWjmEuxuMDGjb4/5b7xkmHX3PIrfTcBW++YZzlyZUik8Vjok8X5U67eTqhsJ0arg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bKFwlv7HJjKwzYo9TeT1VZGdlwAF+iZMst30GPx1mfc=; b=g5kNltxo/zt63WHpixqUy54QyHNM4XA3n9djuagsydC8I7cnKNIRXLhU3KQMetEkmre3ZK5L9DSJpKeiNYEn7EMd31DA4UT6Wfw6dSfSYR9Qu6fiOTqmB/YTG1ojaggsolzvMG6hiIm7tyrp4hc/BwMaAU86PrqZW7U0smKDfYLOiKzHA9dRbAnhkMSAgS62lj4pHSdBwxVc1JsQza5jAmYHf0PAIZf9T+KcOsusw5eDnIYvcFjUgOcsoI/1SitZywrCRY8qGfOFkGzjf6gZ3M4EYQ23ixEvWfWEzEXS0P7ZgmWXtS32ycKlUIkfpbBdjIyFjrAKUn4becqu0F/lUw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS8PR01MB8276.eurprd01.prod.exchangelabs.com (2603:10a6:20b:343::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Tue, 9 Aug 2022 19:56:00 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5504.020; Tue, 9 Aug 2022 19:56:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 9 Aug 2022 21:55:33 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [KWzC+efZvgs97KLhZhYhgBo42xDEMa3M] X-ClientProxiedBy: ZR0P278CA0019.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1c::6) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220809195533.361307-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c72ff33b-a869-458a-cbdb-08da7a412ea9 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UIj0MyIIwJOZWCIBXLCCWNsflyGI7BGF/5nct7rO3je3cLSpe8VbdbwMDTLcBKPZGRf6upd4RCwnN2uvsCTyvsobP07Km1m7tRTolh4hGanbkqHoFilEest4TqHelglvHGGlAPfjd2/pNUBmNp6p0l+zpXZmwTAx69sU3V2aqMIJFcP6YT2N6ClvgeS6Se5GqpkGGHcME+PskuuwtXO7KAffh9/JLtOVET3BFgXr2i/ubq6Q+mQH3E+wbcPrIIuDjP8hAIfMB1uSawbnQhgu4OaVztRkFV91z1TE3AnAH6tPhcXIQBkkeMcm057XGHDhUAcfUGsFyDFvlRkQAoj5Uvtzf+DnGnFZ7XCfHGCFyM9XFgkQ2SZGOslewLZ7WQMlGs5SQTkaM1kJb/w1sGJYVxKKlIV8YRMa/6EFKDhA6zdTIBlscNUrSRUAEHR6ARaHNqJ0WhplBuyJkomcntRcdeAu2X6145px34J8DrPToxjHR0cCqi7tidQJjGpzN6FPMJVjFTRkajGzp51gV1H+NQdJ/vMbSPOMwwxASki4R8yxpbZ9dB0/wLsnack9kjiyV1HuAiHlE2QtaB9CombBlSIqo4QzaSSXNJCj8lEJZkC7LGUzauszcb3ajT+p8Gk+CrbR/VMOuH+2KKGHnMdS3D11BZqCp0pbtlbNiUeaLEW68ASY/B+iCcmNZywDNR/1LKnaaqd94DA7A== X-MS-TrafficTypeDiagnostic: AS8PR01MB8276:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kIUJG9Wdc6A4hro2fnAT5wDh5LnvS7tIj/6N966OIfBrombTB0E7OSfJdEymQXOyiKvK7EQkKOMq7hL+vw37VaFRXsSOSrWXZCzAXJKICuHH8fAqWtOsjHZj5EmBl2r9OM8hHwI6RrrRNEajNoNVboouYNm8k5zhvpcSt3Ut0xvgDwVgUY9tbXv8+55ml6lX8MIWb+c49Jyd4sE2QvYIVvRg/Y2+SxfJZ2pH5LOCPIo2dxFkzNNq144tAoft7PLq7inB0rli1WQBLZ5DMeusMMTycDpa6CrKqGv4+VHYt734PRFOrZL32j/BRvIdYY0DSwfDOl8s/pe+fHshKht0XlimzGTrDgXsw8r//YyLhKrfkruZfZrbHUfanI6nRPrgv4tYhNHFxabHbEhuaNVQP3WkuA1Fyd8E+ganAMZqL0jIV3E9kr2f9sCSuzdU0+KTcTiyhXabSR+tZq6eC8z6vni3nAKaCZ7wd32k85UdFwU8TDKhKaHBRvXt1s5ABVXrL2XDOkHNIQqzhhFoKUfHQJWWOdWPJP8sxixi9z5fmWjeeCn7jf45fyHxy32SsDdNi3JpsI4LZYQSSTx/Eru/OL1rXf9P4Utwikp/vIbVg+M/YZ7veXMYcxLAp7DP1kaECT7haC5x/wS9bti3QIHLgA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ap7Oo2WvYrbFxj9DVvTZFBvJspnMcdyaZ72TSwzCy1I1/sJ7NcovLb1vx3z4WJ6wrUnrS8+ToYi5ecwE4sC0j2NdqMGNltz/7QuoGVPAdZ+JHGrZ7a/ftqMyKry58HbrsemQcahjXCIq2psO3NzFasm/oF0Kk8RuonBaBtvcXbwJVylfrrRKfAWIJFqm7TKbJUC+DAnQ4aWPGakDh/b9uzlk2EhjmaJBRfeB6aKPETL8rDQdq725bWuYhdGKTMzntf8hButaDXDuQKYmgOJRIys3vCOyZZliWnwnozUts+vyMIXRbDZ2tuZU5fgvkgdwH4+01WuMERCydHpl5wcmCx/xKFDB20Vqhs+TNAK/8h3++Mu6PfNX5tzZ65aSAQBZlAd31E/v0AKGV8Hi+A84QqIRDyV+wT2/iJs/xpoQXT/owJOd5mnn667dowiWHsmcsAyhZhonbeLqUBMu48nVR/rQKvXQ+tDJYyX3PWs6CzBfitvyvEShKSfvhpToUaukkaTdrrRi9/DhlZXE+pOlHHxU18+UN6KB+WQrwYf5NtzanjRBvwlgzd7bseHVqqniJgkOTRXlGrMgc0aYimrW2OechxRh/HwgMZt7Whz2karS6mENA2FBQJzFk5ze6zsXGP3Vldt1ukBBLeDYvfZvXMrcK+uIEAykJUdHgJE7D/6avn+AHIdoxlxhIVikv31mZeH1zZL/9UXGBCtx5rkLJnZsZN8BzVU1dI7p4s1L+aBbUIVhGlWt7O4YdHmUHyrbiYa+LZXtPyr2eE+uUpuHdxTfTVyL2ZzxTne4y+mB1dCNOB/k4IPgzNAYW0GzrL7UlXXGrYtLYDAmYn2c4N3ARVLzwnE+C0sY5E/N/PzrVATitAlwJJe2K5zwtx+IltIWQQZ+5gxK/isLTsPmd5xTRT0j91367XtPpDKthxpJxC21y8g5A7w2Kg/PnN2BchmnOzEMCmArkRXFWpPryAId+iWlCqnx6E2C17YEt68J/KGa8jMJwWGiJnIncWZoJNhsHdU20kVIMjAgc89fYGZHEhtJDPxtmY3tXXv7Lee7eY3ITQ+Q+JSrSx/1le6Jr9kl3ekRtvWGfuQV5TM4qqR/DpEtisWPTKv8EjRLa60TWFLa6VFuIjN9aF3RUrp65FX8m/5+HORfvSPyUZnbbMkD2G5nmla9B8+K9RVi6CtqxiBwDm740XYsPyWSpPcRjzY7hlizAJhVwH8jPHsrYIh3SzW0928+pIoE2kg5fwE0fBIajGj5B1cgcbzs1maFPQNLAQ9bgq9evm3UiijqL4nH1wLkponuRWmaTVZnSKvWnKs= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c72ff33b-a869-458a-cbdb-08da7a412ea9 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2022 19:56:00.3188 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR01MB8276 Subject: [FFmpeg-devel] [PATCH 11/11] avcodec/mpegpicture: Always reset motion val buffer 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TEboM+0htfN4 Codecs call ff_find_unused_picture() to get the index of an unused picture; said picture may have buffers left from using it previously (these buffers are intentionally not unreferenced so that it might be possible to reuse them; this is mpegvideo's version of a bufferpool). They should not make any assumptions about which picture they get. Yet somehow this is not true when decoding OBMC: Returning random empty pictures (instead of the first one) leads to nondeterministic results; similarly, explicitly rezeroing the buffer before handing it over to the codec changes the outcome of the h263-obmc tests, but it makes it independent of the returned pictures. Therefore this commit does so. (No, this commit is not intended to be applied. I just hope to arouse the interest of people familiar with H.263 to look at this issue.) Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegpicture.c | 4 ++++ tests/ref/vsynth/vsynth1-h263-obmc | 4 ++-- tests/ref/vsynth/vsynth2-h263-obmc | 4 ++-- tests/ref/vsynth/vsynth_lena-h263-obmc | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libavcodec/mpegpicture.c b/libavcodec/mpegpicture.c index c57f149752..2192f74cea 100644 --- a/libavcodec/mpegpicture.c +++ b/libavcodec/mpegpicture.c @@ -280,6 +280,10 @@ int ff_alloc_picture(AVCodecContext *avctx, Picture *pic, MotionEstContext *me, for (i = 0; i < 2; i++) { pic->motion_val[i] = (int16_t (*)[2])pic->motion_val_buf[i]->data + 4; pic->ref_index[i] = pic->ref_index_buf[i]->data; + /* FIXME: The output of H.263 with OBMC depends upon + * the earlier content of the buffer; therefore we + * reset it here. */ + memset(pic->motion_val_buf[i]->data, 0, pic->motion_val_buf[i]->size); } } diff --git a/tests/ref/vsynth/vsynth1-h263-obmc b/tests/ref/vsynth/vsynth1-h263-obmc index b7a267a8cb..aed283ed53 100644 --- a/tests/ref/vsynth/vsynth1-h263-obmc +++ b/tests/ref/vsynth/vsynth1-h263-obmc @@ -1,4 +1,4 @@ 7dec64380f375e5118b66f3baaaa1e24 *tests/data/fate/vsynth1-h263-obmc.avi 657320 tests/data/fate/vsynth1-h263-obmc.avi -844f7ee27fa122e199fe20987b41a15c *tests/data/fate/vsynth1-h263-obmc.out.rawvideo -stddev: 8.16 PSNR: 29.89 MAXDIFF: 113 bytes: 7603200/ 7603200 +2a69f6b37378aa34418dfd04ec98c1c8 *tests/data/fate/vsynth1-h263-obmc.out.rawvideo +stddev: 8.38 PSNR: 29.66 MAXDIFF: 116 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-h263-obmc b/tests/ref/vsynth/vsynth2-h263-obmc index 2cef7f551b..c0dcc3239e 100644 --- a/tests/ref/vsynth/vsynth2-h263-obmc +++ b/tests/ref/vsynth/vsynth2-h263-obmc @@ -1,4 +1,4 @@ 2d8a58b295e03f94e6a41468b2d3909e *tests/data/fate/vsynth2-h263-obmc.avi 208522 tests/data/fate/vsynth2-h263-obmc.avi -4a939ef99fc759293f2e609bfcacd2a4 *tests/data/fate/vsynth2-h263-obmc.out.rawvideo -stddev: 6.10 PSNR: 32.41 MAXDIFF: 90 bytes: 7603200/ 7603200 +3500b4227c1e6309ca5213414599266f *tests/data/fate/vsynth2-h263-obmc.out.rawvideo +stddev: 6.19 PSNR: 32.29 MAXDIFF: 111 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth_lena-h263-obmc b/tests/ref/vsynth/vsynth_lena-h263-obmc index 5b963107f6..78d7cc7277 100644 --- a/tests/ref/vsynth/vsynth_lena-h263-obmc +++ b/tests/ref/vsynth/vsynth_lena-h263-obmc @@ -1,4 +1,4 @@ 3c6946f808412ac320be9e0c36051ea2 *tests/data/fate/vsynth_lena-h263-obmc.avi 154730 tests/data/fate/vsynth_lena-h263-obmc.avi -588d992d9d8096da8bdc5027268da914 *tests/data/fate/vsynth_lena-h263-obmc.out.rawvideo -stddev: 5.39 PSNR: 33.49 MAXDIFF: 82 bytes: 7603200/ 7603200 +737af7fb166e2260ba049ae6bc30673d *tests/data/fate/vsynth_lena-h263-obmc.out.rawvideo +stddev: 5.42 PSNR: 33.44 MAXDIFF: 77 bytes: 7603200/ 7603200