From patchwork Thu Mar 24 20:20:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34953 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:ab0:5fda:0:0:0:0:0 with SMTP id g26csp1216190uaj; Thu, 24 Mar 2022 13:20:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzEaGbdZY/654/iZr7wXQ43Zo0LJ+rWiuSmjgeKH7kBR3bGW1RJBI8RRLdBPyiQlZF5+1KW X-Received: by 2002:aa7:d70e:0:b0:419:1e2c:e1ea with SMTP id t14-20020aa7d70e000000b004191e2ce1eamr8850755edq.202.1648153230879; Thu, 24 Mar 2022 13:20:30 -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 jl22-20020a17090775d600b006dfbc3ceb1asi382676ejc.157.2022.03.24.13.20.29; Thu, 24 Mar 2022 13:20:30 -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="Rp0bCa/o"; 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 C75E968B1AC; Thu, 24 Mar 2022 22:20:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2064.outbound.protection.outlook.com [40.92.90.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DD996680AC0 for ; Thu, 24 Mar 2022 22:20:19 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QYtk2oTa57nUTokrNGiIFjojkQpWSETHdwjBZzrHsR6LyZNEQPpo0Not0USMlLdFVE5Erk0mOc3vD4icejRx0rHMbFQMfirZGlxM7Iq3dQzDJKao5L+Vn5aJBQUh/GY6CtL7zVPUj1A61BRCzyreG2RccNbht2Xdv9X3tjTVpdZJatEhsG3nNGTF2AUhFV2iRUyx4Yf4ZCCLPGdMy++GsZ+eRfI8hsdBhab3TW8qjv/mjGBde+B7nKRIHEcvlWxh063B3ZcraofSoViB2eeQ0DFBJmp2y8HDM39SPlqy/7vD1PZzVmyQ7HpnsZ2LiSw264pOt0vq5+pOWnmvRl9YCw== 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=qajpU0ZQ+i/qWIgqAWYkc3/SCwwHDSyqYhThuM5uOlI=; b=C3UvVQOtvxWoGDkzpGqR8AtGWkPjy9exAe0o4GzvzkR3f15MGTMNyHLfWykDo+mcFMxTvIyjpY7pUsFXIHrxSYGh4wU8psb5BFlPuljK7q7rzApbfx87nEggATBFCPKEbG8zuAkOPpUrmDBkHaGBhJWNFvUWlJNLanuyDOaxWx+HhtpiIFlBszZlLZx1g0KK9q3kMklfqpSHZOkjTgaYVpDRenQaEslJwqi5xaqSXl6YaOPLVbRB7RmVfZ4mTASAoWBhkozfWUCx0aVmncSP2rKHQNypbz377MYUFjSKwEQCjqPlpLpXXf66O/a9rR80DZNJlcw3lqGswlq9C5TLkQ== 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=qajpU0ZQ+i/qWIgqAWYkc3/SCwwHDSyqYhThuM5uOlI=; b=Rp0bCa/oEYO3DUj0D36fGOZOX1YV4IspRnKGTd+cA8MoQpGvgpiDARHxu2ucKphZoWV0rwpjuD0nrWblfBDNhPt1OQn5/y3P2Cd8lxSTSfiKIiw9yqjLZ+MK+AozOZTDXUN9A8mom88j+38YQtvSrr5Qe9x16z4KUVI4GSnpQGptOUiJrTI0vk3Hs8J9rI3mPH6XrBCm4Z00gUHxafYunpQ5ahejN9TwyRUzM6iAspy+PAUu+0qbcmCqWh2nyrrKMReyrnRSdvBinteX0Qzb+zIafKYKWSuoY9l9jiDtLhbgAJAqbtHpHOol8TDYeyLLfjMki/TKu3YMwJu21yYKdw== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by AS8PR01MB8586.eurprd01.prod.exchangelabs.com (2603:10a6:20b:449::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.16; Thu, 24 Mar 2022 20:20:17 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5081.022; Thu, 24 Mar 2022 20:20:17 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Mar 2022 21:20:06 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [1cSLbTl2D6kzF0tdaZ5IU1/cxs7FKz5r] X-ClientProxiedBy: AM6P192CA0074.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:8d::15) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220324202008.943418-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f54676f0-929f-41da-facd-08da0dd3b5f0 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRPXK2pYrYpBDVwwV2vfGTGxF6ojaLpdJ7OdOAfQqx/xUEy0Eq0Mri1HRPSYF5+kJ1zZyPACTiDl0OMXQtVRcTWujG8YWY9Oz1wiik/EAvAnvOeK4Iua0B7jWmCTNZx6I/9CyMOIhKam5s2FSBOdiU22J+zZTKdQg3jvubpHrBLe5zZXo2ebVQ9irYqKQQ2pdvimkKvI5IXLjTEuirkKeyOGpYzc35B7eEM/yOgcp+/EQGJ+Xv+DlMDX7LF1CF9mLvWt4lczrHAfBbz+FsFJUiJaw/l1/uGx7+9k9evDbcgmTy6sQYkQ/NvuY+Zg5mpRAVzGs9jeqxVjyWkXp8FEEcI6xIu4F4WEO4Fk2bq4zD7Np2sZ8o9JzAfARs422+kNB/yczJ0GFlUSS31uylWcIbTh6PQ2tJlIq2d9hQDA9y99sJOgXhiRi9jnmXWwgtml/HHkCY7xfiAqKxm+MoR1o4smNO0u7I11zL7HfCqw3QshB6R6nJEmDT/BeUrCVOGdRT6HKfPGL0MMdfwR10TA2JXB4VBQweFUvxMzIVh9EFscbbsNN1iXFPJwunMSj2MWk3kX6ZPlH//1nQWbHKK7OvBd13mZk1tVgI4W+0LcbcyqUtMdrRb1n6mBTLmVIunWvjXFR4IXb74Dr1Lyb19LYUf/Pdd8t0F28ZkJqxeNMh5QRGK7/ioUM/+rigAY9NjKjTspBLyzpEpFsRZ/yLWu72dbm3J3TdgvSPaH5QRysuzs4vHYqbQTIms2ufi9u9IH4c= X-MS-TrafficTypeDiagnostic: AS8PR01MB8586:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oedkXoqJtlnEan84l2iE1AaE5egkUztvzHBpJ6l+u+M7Mhjc1HwZlZeQnmT52+CjpdciuJjONeJ2HYyBI15/Yz3/gkQ4BM+KcIEGmMnDUOpqlJPO00sKpNpfcU8r5fENGH75GZNxLLwmtGmftQRxgNbdMD0/CsfAMhy2Vv4EeeNorhz5H392iEcMWR4zheM79FyyWi4BeTrBRK1mFrSsML3xqW+XXozQcWrdYF3RA0RgWiuFawHI+BshELQmFvmpakbhec0jnHaW8jCMgCDQiTJq33dNaiUaA3CPSxBG9DQvuMn+LqMkrosFQQ2vFJPAdhDxG7Y+qtM2FwseBKwJ+PUwBVMw8Krq4qwX1O0ew1K1/91fD0rVG34ls2l2dcFP2oQKJxi2IJRXCa06K+Icezoji/fTJCUAin37FOrl2nyLRIRTpENt74+I81AqlwKlagGLLCk7K4z8bL9USr42+NcotV9dS3HlQ+gTMvqmP51AlVNmJGTvJ0GEOLaEHFCBFyWiMniHuNafrPWAdlwUWqDGbsBwnZ3EkmrXtFlu/7+9XUe0a6XUAgGs30R8sKw49wvazLbcYnJ1fw0hs0nPqA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /f4CSACHrJVqnf16PrHHwvs+Yhl+WdnkNB5VT88VOQiarJ+nOpsq9DrPSnfBVWlEbu5RHhM2uNK6ZKHbY5qMRHTmlU13lyuA1ZzX9KjY60rQD6cjk/oTyxA9OqG334U0QJo4PjV4Ytjyp9dLpanstgcu8vgkfyujcBliYnoZxqK2b4w6oy0d7xsG6eDS8nPudZV/X/FjlyeYQC5balxQn27MdQzaHqHcg2M25LDwGTLEIodBQ4V7Tyfivam8UKB23nPVNFDtK65LG+XsU5qPc/14JSgvp5V1hfm+xUkwjQwkl0qYKMmO2f6wDRLD3pc8LUGvXSEKMl/9d7k3Vm6jy6uITTsodk26o4REi6F7xdXKHZOAj7nNwlsxgnV62/AZf10FtKZ6MQxXy3Soxg8IGMPkEEYpDMHp7BK/yIJB6CW0ialZdvgVOBpZvzXV7yqNNqa+pHtQyF6F3akI3BpG49wpsli74fWtH8wRbNJBhuoxv0JvYZ/+e3ikKvTZDeSEeqs6nEP/3pLztJxEaSKaYFyp6oGTxGt/0b7KbfwbnQFVAmHkXIzuDVMdl71PSAkzwCgpmgwmYjthOArv4mr4NnsX7IbrwDN/kEf8cuJYIlx2ORjmvqzagtKJ5XJ1+FEiZgv0ABCIpjt4LgvY4/q4tXo6jG84TqknKnDMD2nxAW5M3YByeNclqk3k0qsv5pjhATR3PSCGnrJ+NNWLoLRGlL6uObRMlOPqHyDyfo8/OcUPCy8sz8A8d9tLxDdGykg46z9C0cHfQNsQbNS7qOBrIFvxkm0JUU46kFZGqB5bG7p+rmDNVFTWn2Ww85VChRx0Ai5SDh8vkM7Q+TazUckwcVy79bxSTjPtDF8PNW4Q+NXKiJ6Jg76NLQXUrWTSjo/8p3SdbmZKSHg7s62rQcK2pP+I4MCT2eMJ/89PNEZPzT8IBoU4rqSg07RPBQuvjP8Sfw4jLfnLitOoYL1sLJLnSffdvYBDpH9kkCgI8j0aDqsBM4Q+cfI9h0buMD6fQDdXw5QckiLL8e6A4kpdDvqfrmGV2q7tCgDTdZOp4UlqvEufIcf3uvAkoRaZqK/yn9TSx61eh8P9ZaogBKQivjYRasB8EPvdvU7VK8b96luZ6TwNPHmBrd8Y3ro1yUzHxOVYyicydDPtXQBMdeyJziMKFr/GbjgHcGtjTIIB+2lp3F+bzfG2s/UfNtF0JDsDB/mXOA+MYdGrM0l1JqUajmOGOGE1aVah4HMKb5lkWZjttFMcwzLtjQxT4KwAme16sVAr0TXLjQGFtd9wGGe9Y10J7tt7HGKhIVSNVt5UyfSpkgZm3x3Q/fYH+I03sc8rFqU9OhQoHv4fH3rDX1woyFW4WV4Vwu8x6SJJwr+LnbHfyaRqWJWZX68Z/LQkkHKC0iHt4p5PHO4QNDWF/uTfOESqED+mA+F5lwYJogvYNqmTHM96VkdmwRgLjwbrrNhd+Kv0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f54676f0-929f-41da-facd-08da0dd3b5f0 X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 20:20:17.3856 (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: AS8PR01MB8586 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/h264_slice: Fix decoding undamaged input with slices 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: HntRFVW0ckAs ff_er_frame_start() initializes ERContext.error_count to three times the number of macroblocks to decode. Later ff_er_add_slice() reduces this number by the amount of macroblocks whose AC resp. DC resp. MV have been finished (so every correctly decoded MB counts three times). So the frame has been decoded correctly if error_count is zero at the end. The H.264 decoder uses multiple ERContexts when using slice threading and therefore combines these error counts: The first slice's ERContext is intended to be initialized by ff_er_frame_start(), error_count of all the other slice contexts is intended to be zeroed initially and all afterwards all the error_counts are summed. Yet commit 43b434210e597d484aef57c4139c3126d22b7e2b (probably unintentionally) changed the code to set the first slice's error_count to zero as well. This leads to bogus error messages in case one decodes an input video using multiple slices with slice threading with error concealment enabled (which is not the default) ("concealing 0 DC, 0 AC, 0 MV errors in [IPB] frame"); furthermore the returned frame is marked as corrupt as well (ffmpeg reports "corrupt decoded frame in stream %d" for this). This can be fixed easily given that only the first ERContext is really used since 7be2d2a70cd20d88fd826a83f87037d14681a579: Don't reset the error_count; and don't sum the error counts as well. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_slice.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index ee84b3764d..f6104dde89 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -2931,9 +2931,6 @@ int ff_h264_execute_decode_slices(H264Context *h) int slice_idx; sl = &h->slice_ctx[i]; - if (CONFIG_ERROR_RESILIENCE) { - sl->er.error_count = 0; - } /* make sure none of those slices overlap */ slice_idx = sl->mb_y * h->mb_width + sl->mb_x; @@ -2954,10 +2951,6 @@ int ff_h264_execute_decode_slices(H264Context *h) /* pull back stuff from slices to master context */ sl = &h->slice_ctx[context_count - 1]; h->mb_y = sl->mb_y; - if (CONFIG_ERROR_RESILIENCE) { - for (i = 1; i < context_count; i++) - h->slice_ctx[0].er.error_count += h->slice_ctx[i].er.error_count; - } if (h->postpone_filter) { h->postpone_filter = 0;