From patchwork Mon Jul 1 12:01:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50241 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1729135vqv; Mon, 1 Jul 2024 05:02:30 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWbwiqRyzTXhzpPFtC8VGs4sxDtBkQtUxene+G24lybET0Nk9ze4oIBnqhtkFKyfO+muAo37StnJ9EMeCXW4T2+FqoV6ewx1qoyqg== X-Google-Smtp-Source: AGHT+IH+r3hB6ikJNo4qhQi0D+CvfDuzVKbhkS2wYinyUXxOca59rZbcZBiloHur46lZmueoysyp X-Received: by 2002:a05:6512:3b91:b0:52e:7f87:4e66 with SMTP id 2adb3069b0e04-52e826ee70amr4174524e87.49.1719835350129; Mon, 01 Jul 2024 05:02: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 2adb3069b0e04-52e7ab3d5bdsi2263487e87.646.2024.07.01.05.02.29; Mon, 01 Jul 2024 05:02: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=dJAp5Vfh; 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 403DD68D759; Mon, 1 Jul 2024 15:02:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2056.outbound.protection.outlook.com [40.92.49.56]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 730DD68D6BA for ; Mon, 1 Jul 2024 15:02:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mwjE8EJS5vDGzGvsERbDBQgmbh4h3JdZuSZ+fP2TAavy52Ue27KDWV2UMbqqYCV+aHFWVPudfqU3L+7Vcf/6VBzkM3W+oXTaZ3oMpAlSLYixIXTXgGa1FoI/EAdsbmV3ucEyDR+dcxNLSfCDEMoRYrC60cAD0cSK1o0LKC2QVdbheOWs4j2GXtcJbAPSOPzriznZb+/LVcMP42ZPGXSKh2dMR24su+XwkShCURICAYn11d4+Ymmo9l7FFrX6AwTBEY3AsKkRpJMWpJ20SG7jC8IO8A6lbADnppeV32IeszJzD9/BoIo4pGLcY30p7IvrOHsapBLm3IlEOtUWjMZlzQ== 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=JnjkD4oHuzkcwrScPVamE3Y1qvQjCtwOzjKgdJ0iJgQ=; b=AJ4TWa+vknM+YFoZJNIE10ahyNNzkJioHUbQhJmy4p2E1TJp8skBiAIMw5McDn4On2RMjwOsaDyiiEK9Y5bbtxpc45vpx4j3Px++Ih7Zofs/85I2fsbKxDEp9gBq6Ca60lNMPKxSOC1e0E55Zw5KSSQv2lw4Aw1yJbN4aHfs3Hc4u9MJPORSH0qR1+fWcCXOKHYMJcCkA2Lwos6M5ciH+Ti6ciL9njZAYvQlHN550ngpa/wFNKr812rzXjYscXPBWAruRkkUjcofn6iLpohfVP3Vr30EWvxZN8eUWpoOjl+TTYl84PHDHZMN9IgO8OTpwPfWtMAKhjhmX18LrMVuFA== 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=JnjkD4oHuzkcwrScPVamE3Y1qvQjCtwOzjKgdJ0iJgQ=; b=dJAp5Vfhxk4tUqPCvVO3Y+LIThj6jdy2lUygmAb2622F/eLawxkGGCEJD6VmtzJFeYmbz6ZJXCxjUBRL9bi1h0+km1nEHlxeZsgMisBkVmPoZGL70FjdF+AsXU4PzZRrqAoYev42mVJrMJn7wjp9NiV44hXRgfP36PDcZ1vxq6Ecy3Z+qUvBnV33UjD7qHZlaHwsalVoS4vVUAgXCXgyw/C39NI4ugeS9l19Ejy/gGXxYyP8ZDzcHJ/oLK7DmzamfT/Brh69KrpI+a9GbtEqwd9AEYRF6wy0N5Z8JABzqEACbdBBAC5rVudNXZZx/TrZYpLLfAyLkvU1vzm2flb6ow== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0257.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.29; Mon, 1 Jul 2024 12:02:16 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:02:15 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:01:55 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [S4XXNVqaK8ZP4Myt8LRtT3SLN3t//LaF3pQUx2BOgOQ=] X-ClientProxiedBy: ZR0P278CA0150.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701120207.3560793-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0257:EE_ X-MS-Office365-Filtering-Correlation-Id: c3d6d11f-e2ce-4e33-2440-08dc99c5a62e X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|3412199025|440099028|1710799026; X-Microsoft-Antispam-Message-Info: ovnzKr5/1OSXx2BzYOQ4/sHpfyKLebWxK2zDeIn9j0MJOzscKWFEnMfpQFSXdcLZeACzOymauUtTZXj7JfJZH02PJhSVooa4ARS15VdDGiD4RF10FMoe/5mcj/rmn8ovZ4VnhBv0W1yBYF8AZKGsXshiYG6B13huXqGOKVIVQzSN9AtMe/rt3WW243Q+nU2F0TqjPl7vXNcXxXtrEISZOY/abUZANbNdxOPiG/G9lAunKMaPCHs1kLHlFybODb5hFEfd5soaOQDC28UhppMizIEPknGDBT3trPgfmvdggDjL2MGEyvDbAIXNFbRcD6OZvhdYaN0WyG7aCx4kOmzIHYXJsFMvcjyVRX2cdMWliA75K+l3PTkSrnzs3wHDryhgot2FYysQpWp6o3kyiXo2JF4CfUS3RFWvKrgDUWjR5TbD6ecgeXiKbI0FgmPbiJxkBAc9qndoQ57L9FzsE9OPjxvg8uUaicDoMk4IJzqt914NhRVCUFT9/324yaIYxBKyIg4jxwdiYolrplqx6JUOWkA33eIQPWIVqlTquMvt/yutjaTKubijqzGrhNcfZJsW3oNf5MGmhWpsLbUbiG19x216ZXABXn4URKCJZJIofbyaMZOu0qsCIQ2DmVJoP8nKatFX2nW41ZveYydKv96Gxg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JNAG1olFHCDtSt1xQO2gp+s/JNHu7GziMPAHPMzAkdEbami4FuWxbr5OgKBKXfod3oyQHu4BmjDikCkqTXvb19f0VKckY65hSb8xzkeqbPB3zfC15FvzOWpykx+AZa8tJXxA7N0KDwiLvHU/V2gdmo3lcvuu07gTwKRhnKrIpikHO3rjdbCyFeRfC8Qd8plVG/3AGaoyYy8iFhbVpF5UJiM3TZb/TPQSsAQQGlBt61GSClB/KkEnaFhuDut6+g0DI5mdINO8izZH85Fz5wB3FdYjnKoYMdMQiL+qt1hz++IA+ZasQc3ztbRdazQ8kpbxiq1q1AOz8Sh/D0enlTdXEisBe64l08AOhxDVsRWqVbEbrjefkliUL7Giey3MJPqnj2RGbv5uvb4apOy73QmQvwTkGQWwYHicr6Alqo1fniz9vIBx1R5Pt1D9v2s2W6uKZwmZQySfIk5Q1gGEwYaxoi4m4s5vtFHx7kdG7rp6VpKpZoy+l/tuvnl3ANf2/KmnvnfsBdHRp+SsQfPoPEO7sf2E60FJOnE8EekR7y9fTbXVzUMW+A5yZxzT3qJUXb5wD9vPi1/mGgUMsBuISBPXr5wLbyvJHIku31H3umTlnRFPs7pop3vQ1vdDNkVy1OB9qnYxaizL90Ribv62papNtMPk9b6wP6vGkNsiFIPF86EqLvMWOVDBb1vzk6ijS2Q/1NYBJbrPNGFZa8/2wA4iS6+Bsn7GWYKQiow8aKfHSqIUJAc2nDjgrEPqwElA3Ha1m9OZseQ9VW+Aqk2Ws4vfd4QizXFxdKlKrtdgaoyyV/fwx8GlUMbupeuiuojHB+jTCuUmessYP1HffSC3o4CJWQLS6LfAe2jBlB+QZV8wAl92NA3rLN7k5Er2aPAyjXYoQScathMelq3Z2GuKS8PwKIDwJ30ZA+5vravr8umSnRcf/IqVT66KikJD76EgeW6nCgPo/hTlcDkqahM2HVCfOdeph6yDC9DRDbjKMZbzmu198rLo1WHJO4xvQDc0QTZQmJL+/hbdTepTuszYsrThl69+/U3XDvB6I6wQ9rOa02T1SEU9jOkNu/NHlwBu6wGIAGg9Gayiq0XSvJdbn82zfpgU9l+1nkcS8cQw99n7z5dCKop1RL84V28wgIRSjU5y5Fp0Fq9An3+zrG06nEpnNo3iDxm0A6JidN4X9jK60lA/DAnLgz9FLJADQkOpuEVjQAaRigP81eZZ1FC8/fcojljIgDJ3j3jKLaeSK79rYd0qgEfeXBxqwhdzpeh2ZGD8I1X7jvWH5xAIWHZCoV0urQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3d6d11f-e2ce-4e33-2440-08dc99c5a62e X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:02:15.9276 (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: PR3P250MB0257 Subject: [FFmpeg-devel] [PATCH 01/13] avcodec/h261enc: Use LUT to write motion vector differences 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: g7iXAgjyujz9 Signed-off-by: Andreas Rheinhardt --- libavcodec/h261enc.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c index a901c32e42..d3d724bef6 100644 --- a/libavcodec/h261enc.c +++ b/libavcodec/h261enc.c @@ -39,6 +39,7 @@ #define H261_MAX_RUN 26 #define H261_MAX_LEVEL 15 #define H261_ESC_LEN (6 + 6 + 8) +#define MV_TAB_OFFSET 32 static struct VLCLUT { uint8_t len; @@ -47,6 +48,7 @@ static struct VLCLUT { static uint8_t uni_h261_rl_len [64 * 128]; static uint8_t uni_h261_rl_len_last[64 * 128]; +static uint8_t h261_mv_codes[64][2]; typedef struct H261EncContext { MpegEncContext s; @@ -140,20 +142,8 @@ void ff_h261_reorder_mb_index(MpegEncContext *s) static void h261_encode_motion(PutBitContext *pb, int val) { - int sign, code; - if (val == 0) { - // Corresponds to ff_h261_mv_tab[0] - put_bits(pb, 1, 1); - } else { - if (val > 15) - val -= 32; - if (val < -16) - val += 32; - sign = val < 0; - code = sign ? -val : val; - put_bits(pb, ff_h261_mv_tab[code][1], ff_h261_mv_tab[code][0]); - put_bits(pb, 1, sign); - } + put_bits(pb, h261_mv_codes[MV_TAB_OFFSET + val][1], + h261_mv_codes[MV_TAB_OFFSET + val][0]); } static inline int get_cbp(MpegEncContext *s, int16_t block[6][64]) @@ -323,6 +313,7 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], static av_cold void h261_encode_init_static(void) { + uint8_t (*const mv_codes)[2] = h261_mv_codes + MV_TAB_OFFSET; memset(uni_h261_rl_len, H261_ESC_LEN, sizeof(uni_h261_rl_len)); memset(uni_h261_rl_len_last, H261_ESC_LEN + 2 /* EOB */, sizeof(uni_h261_rl_len_last)); @@ -341,6 +332,20 @@ static av_cold void h261_encode_init_static(void) uni_h261_rl_len_last[UNI_AC_ENC_INDEX(run, 64 + level)] = len + 2; uni_h261_rl_len_last[UNI_AC_ENC_INDEX(run, 64 - level)] = len + 2; } + + for (size_t i = 1;; i++) { + // sign-one MV codes; diff -16..-1, 16..31 + mv_codes[32 - i][0] = mv_codes[-i][0] = (ff_h261_mv_tab[i][0] << 1) | 1 /* sign */; + mv_codes[32 - i][1] = mv_codes[-i][1] = ff_h261_mv_tab[i][1] + 1; + if (i == 16) + break; + // sign-zero MV codes: diff -31..-17, 1..15 + mv_codes[i][0] = mv_codes[i - 32][0] = ff_h261_mv_tab[i][0] << 1; + mv_codes[i][1] = mv_codes[i - 32][1] = ff_h261_mv_tab[i][1] + 1; + } + // MV code for difference zero; has no sign + mv_codes[0][0] = 1; + mv_codes[0][1] = 1; } av_cold int ff_h261_encode_init(MpegEncContext *s) From patchwork Mon Jul 1 12:15:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50244 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1738839vqv; Mon, 1 Jul 2024 05:16:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXv0+ZyyxZpNlv85Qrl5s2PsZ69op1LPx0xZ0nKNMiwbnbfB8UiqZ2zmoeFC5rY6r+95zkhybHGNY0YmVLwOBIByYuqZfdh7OlpqA== X-Google-Smtp-Source: AGHT+IGq58xKmwiSCySCsr3KQqJ4TiyiiCu0gxfI6WY7kfR19hQD2SGr9TBPXl6uqWSDJfgPeDjf X-Received: by 2002:a17:907:1c21:b0:a6f:96ac:3436 with SMTP id a640c23a62f3a-a751440238amr408953766b.11.1719836196167; Mon, 01 Jul 2024 05:16:36 -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 a640c23a62f3a-a72ab0bcf32si350687266b.1054.2024.07.01.05.16.35; Mon, 01 Jul 2024 05:16:36 -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=RPlOAJcO; 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 1AD5068D6B4; Mon, 1 Jul 2024 15:16:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2092.outbound.protection.outlook.com [40.92.50.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7BC4D68D154 for ; Mon, 1 Jul 2024 15:16:25 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kmtdUs+6XRJMMX9uNZt1g83Us2ORvw9KWMrIgC/e6I9vaXvi42qVQBMN49R93bQIqHRG+FINLN3lm4n/pXUJmLXD/UWfJeOXZLtcq9Z8DK7iATQQn/iYNNmTetg9kkydf/XzZKiFFN06I87icXEEoYUnlw3MOx0HiyhmIsWWja2UhAZkGqqWhYdoyaAmdMJ7E01TglDze9YBbG3I8euxAGa+Y1K2TPUt7ELWG/nvvjnrR6Gri5MqSD/vXfUs0+BzB1+N2+dCfzhYbVsFTy7oS5sZmImuPnI6MYHBg0NdC1+KhYv/6GjHi7k3nSZDI7SX6K+k9TQ2SRm0BPholfoUKw== 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=PvXzSyE9uYpCz1dmXRZua8Zx7GVvnItaTJ92JLHlPog=; b=U+a859LFDPvfbLjo/+UHNPMsetfS2uoRELM2MzuKcFIlynA32jQOEgBs2rUM20XRrALGxt3Mb31612eBS6QZVjAqoOb1HN818j/qqT9jTZAMaOE0/3LJKiieod7DKYIfD+lsqjpK9LjON32VN7I/yM8W3WgolUvWSrdydwkGfXIFPjp7ovuSjAKfrlnt6SRm1js8EVmzUMgt0PbPocFKvP7XWg5tbz8slrBYGXnZgqlldtj7C6f9w6JQk+NlEKI707GIKmaZ1DsiKcZYTHfQ9h5RIi+nyzvcH8+iEDov7l1tvyxaCTblsiyx5rfManB2JcFZoslS3rI+CWIL7Jew5w== 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=PvXzSyE9uYpCz1dmXRZua8Zx7GVvnItaTJ92JLHlPog=; b=RPlOAJcO6ocpUE7t201SpvHYVoN1TlDNH3TtSnNcxSDsktUvaGJcLY+hLj5rOX2AlRQJXhkYtmrUD7pf7Lfi76wncFQT0w3rA0X8uND34Hj5oD5gVlCtW2MFVz1/KJNdHPkYP81VLeHeYKCSjRg6pdAPBaHdvFhCkghO20QUiz+VO+RBTWRPsFMX6B9I0Z8X4Awmec5an/2EAFWkkb5NA3RYZFzcMpghIbhIXqYSo7hKuqEgCcw3YCaw4h29zlgGtg0X/CfSlVY0eLemVTMIsQx82a8hQOeLNcI2Nyd7sAQw8HiSpWOP8dZZkNQwF67Rv9SGyxnlmvDyA9Y7wHXDOg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:16:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:16:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:15:59 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [ZHUu2CJJQFHG/gGnGCkqz+w0fUt79KUFzTt6RwBSO/k=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: b3f20fd4-124d-4a9c-a3ea-08dc99c79ed6 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: 2o8TXwUsRDUdKNrpQmuDVqKO+3DsJR+6cDvyuxrQoqS8ChBxEqcladtqosvHVvgn4KjymqBD8qz/9t7oz71D2gpPkIFx8zUD7VNMKoyj+E4HL/LzEVoyvUDIUkKb6OheG8r3oWEuHRkqjdquyH0T/xB6AUR0SSfpTsLpH0AWeL9oLkOQ2AgVu4/daHijQBsP08hZ4+vhrPt5qMRcc3N9aQbnsw/0VAkh2AOhiZP6AZg3f76BUfNBgs7/ccVBCeEI5FDOibi91ZbQCGlz61D8/7sG+RKWJ3XLUpddHCwsAKB8xVYolUSrq/nDVwkOdvfVRNyO0Avt2hJwqTlpDvO7iwj88jtEi3aEhqXtFeEwHGBRZRGR5jg2lAgnl9heAD4WhqwiWOaGwD12t6uJqGXXoNcJxk41ku0lq4ndm1BwNwKegSZA3WOKoTtv2r3Ux9DeihpQUHseF44+e+/UfvM7tfOdif8npVTBuRCSD3D08XIjEbLhR/9ChouRxW0JwwFqTtuuhvmtfCe943xVBSH9D4njYi0k7fd4d815WrPNmePI7VznPJBGKMuSOnG/ecEEarKJv9e9/zm6rictp9TKudsquqQUx3sMHsfhiQTWYbagyFkN0QRtiU5h9PYnf8lXAGlUIUm+tjMBFlhWKt67zg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wMa89u4pyK7wNoL9NqLWo2JsG27uXETZnKC+Jm5Bf93NGpYsKcnsy5Nys/xvEyaLyteK5PWAW2mZieU6LiYUBkYOGlgB+ia6uyCmrr8K4SOhVbQTvhZMyj3VhqEbSYOTnZtpDA3mlpYQNecrweKL9zd/zsszpvbbCvSV+uELlGogZNU4XO5d+dK6RXy1n7wNFcT08wpGRzF7me4zjyAZoX3bh9FiwYs9OP2n7D1SHTW875TcBhPhlNwXlgHJhLwiFEXyhqEqy+7rbaCulEkG04MnYDs9w3BgJ6V3Gy4S3YuSo7buMOSpD+85w/0sMKbKEYkunnICOJkw8ZIFsZCw03/w5dR1eATaHEw5i48cfDj4RuGZsrGL4/xWslsXNzMFW2hEJbjSVLCpdN9vM72kiGzGUW6l+IHAdogoRkCrsqL7qE3w5RwqFKkbUQEEDKCeM+9XT/MemanYFCwAesgwrDqDzB9Phj4tn8MXlDlL6kxpEdqVD/J0fG6YSrGqEYWGNBl3ioNi4kkfZ5Vq9aPm8FDcSR77pCOZBz+TZ3VXUWLoyCUKx0ilo4WjCUNc/a9B94C1cWIjjhHXvPv+0frXWFJS8Eb5aZoWbOIv5jqIgtV1/B8p1slaixCUjfWtCSJBktmILuIKeZUrARDtNi3h8o0fNOMUJvz1Be1UmV8yhxxB7AiujDVSNIkAF1XTNGxCEb4yfOTuCxAT2l7e8hIoVgeWFuSZ5qlnKjlyocQVGZ5RmaCZe4m+QeXDEx2dH82DQoiFTRV+pgopwvLPYaeDuRnuDZI6Oo+U7JHUJs2QF2k6rD8O9LdZzY3o2K84mBvbq61bb1HlF70F5irZif2sidvX/yel6FcF6Qwi2Kq753hFEyd6zsRup/DyfWx6uNqdFUzO4g2PVlNQxeWJUeo4f1uxtJ26mlcLI0HFfadW/WNAA99Ky0wcGINE/4XngPfaby1uJuU9QbLmJYLJcdvQ/MPpEOgyKWva5zFGX/7LKlzldbn9ipEFSh8p/dkY9rh3MblJKRib9lctPKoHqdbWzJCZWx6sCpvq/AQQatPwZsELszHMJzRcul6WcNBddc9PYXSjkBnfUhbscYJy5Pk1sVZCAxz1YV7bbGGc6hgBk0WykS95hDrO/4I6QCO4GXIQcMWAa86kimCjnLG6hprT0txP6y0nDmpuAicWVnGIciePXOwH4/Dgxk7DWYTvLH5XYhs4mViqJtltJbb2UGakOTnJMtoJ0XWMrjhp6UzoXNWWmaIMuL/OlCzEkfVv45g5rQpDL+R2h46VU/2R/4d4hw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3f20fd4-124d-4a9c-a3ea-08dc99c79ed6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:16:22.8433 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 02/13] avcodec/mpeg12dec: Move resetting last_dc to decoder 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: cr99xTtiBSjz Only the MPEG-1/2, MSMPEG4V1, MPEG-4 and RV.10 decoders use last_dc at all. Of these, RV.10 only uses it for intra frames; it does not need these predictors reset in ff_mpv_reconstruct_mb(). MSMPEG4V1 has h263_pred set, so that last_dc is already not reset in ff_mpv_reconstruct_mb() (instead it is reset at the beginning of every line). MPEG-4 also has h263_pred set (and uses last_dc only for the intra-only studio profile and needs them reset to sligthly different values anyway). So only the MPEG-1/2 decoders need these values reset. So move resetting them there. This avoids resetting them unnecessarily for FLV1, H.261, H.263I, RV.10, RV.20 and H.263(+) (for the latter it depends upon whether h263_aic is in use). Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12dec.c | 2 ++ libavcodec/mpv_reconstruct_mb_template.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index bb0a769e49..a15318e1bc 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -712,6 +712,7 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) } s->mb_intra = 0; + s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 128 << s->intra_dc_precision; if (HAS_CBP(mb_type)) { s->bdsp.clear_blocks(s->block[0]); @@ -1630,6 +1631,7 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, s->mb_intra = 0; for (i = 0; i < 12; i++) s->block_last_index[i] = -1; + s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 128 << s->intra_dc_precision; if (s->picture_structure == PICT_FRAME) s->mv_type = MV_TYPE_16X16; else diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c index dca982ae0f..4db85afef6 100644 --- a/libavcodec/mpv_reconstruct_mb_template.c +++ b/libavcodec/mpv_reconstruct_mb_template.c @@ -66,7 +66,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) { if (s->mbintra_table[mb_xy]) ff_clean_intra_table_entries(s); - } else { + } else if (IS_ENCODER) { s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 128 << s->intra_dc_precision; From patchwork Mon Jul 1 12:16:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50245 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739065vqv; Mon, 1 Jul 2024 05:16:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVIDp77TS5agKwbGpel9MoyH+9UoVT+b9/lGKMiA7jz+G8USAYWymxumlbrI6P072IBHeJDx621p3qowEmapYE2YyaHa2lVn0LkBw== X-Google-Smtp-Source: AGHT+IHcGRDRcEdYY3sRlP1mmwT6csqQE91t1CVMsj2JeGBb24qcAuC8jQn5LNqHWbGWinySfQ94 X-Received: by 2002:a05:6512:acd:b0:52e:7674:b51d with SMTP id 2adb3069b0e04-52e8264bf35mr3434402e87.12.1719836216937; Mon, 01 Jul 2024 05:16:56 -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 2adb3069b0e04-52e7ab25a80si2262793e87.321.2024.07.01.05.16.56; Mon, 01 Jul 2024 05:16:56 -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=hOxGk9ou; 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 49DFC68D787; Mon, 1 Jul 2024 15:16:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2064.outbound.protection.outlook.com [40.92.50.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 696B868D154 for ; Mon, 1 Jul 2024 15:16:51 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QBZVzX8C+eGXHpWicYHCQUckmWGbAKCy9vueClZFSGWG1lGSeVHvuWiAMR5dlsipxoLyfTgwio7hK6xE+sjlsplZHT0onhSnSPYXodNsv6oaNg3wdUJiaJ4hI4gWqT/NGNB7liv+tOsKlBy3uJAbCgRAXDOsANCB1bEWphPyi0zq2BjbQkZR97JiPKiWbotMnsQFCvuFHgw3XH3mXKEalYe2l00Hy8siNnT3DzsUtqd6+fhTBmVpLdKAl9FsgyBgjNDHUnkRAvsXCWohzLhAqGMUREQsRaSO2BLpyJECuI2SKfbSN5pC2mPiRwYHJA9bv3K0I+gvY+koCSQGRmDggA== 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=z5XYNQq8qeZo5qv2Ai1N7VT6TfErLSdQZqmujxFG+7M=; b=i/8NHXggMW+hFCq6hLQTB42BvFCSJEjiimfjKbFe3CTJy23ZgtFNmrEQUlSSRW9+UrdDNJCgid3Up/Vf8uFlYUoS+d7VLlfkYQw78qR17PcPzXX7SAbUmp4ptTxwiyItz/vlhw+Gl/3TIO9qLHQfiB0OPv73NIx1axWyKmZplcEATcPGhcO1LZ4VzWMfuRtaHlUhgoBu5v5SRZg2CSEIU+kS+j2pgbeHNKikX3loKgqIeLeGMlEI9Zn1rl9KF410QlUy48KetDGy3qn+Qr9C+qteNtEG6zfvKz+1UHKaGzNZfglbou+yvs+RpkBE7kyKtJx01UWCihcQSsYzWFW+IQ== 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=z5XYNQq8qeZo5qv2Ai1N7VT6TfErLSdQZqmujxFG+7M=; b=hOxGk9ouwTeKuj8FRXNBcHmuAcqUGreWscNPvRyzCU9mBwdzac9ZJLhu8Sj3MI/paX8MIImjRXK3UgcLH5uILLT8PHsGETnRUVi6SDprsusMd/Ko0hiEvMhgwhbdbQGRHIiu5XYcWuzm6Apx65904B6cX7nKEWmtfiOPlqSwnOhapdshPPD9ZGTzymiXXB44K0T75vJ3yaBOLU+EWenXDQqS+CpdkHtMHfYa5KDJGud5p6/zQtVx/wR9npm1LTf+KRd0NkfzHLUFQdD+IlnKOaktBW/YihAuX4PBIkuTJY9VbDsUAfyuaHBgMUJQk3KEtviZ22tCl26n5yL7UtE+xg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:16:48 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:16:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:00 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [QgM6zr0tZAIb2akF1/Su+J3D3DvdBzR0rCc57tfTBEY=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: ae7624cc-e765-4a87-bbdc-08dc99c7ac94 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: 9OZ9GM9urPJLvs0Xy1JQP36pt9gU6nVpXISr+5WP1r4DfiY+2xTsoJZ2K7ZouuFE+V6XklCTjrVrN03OagRgSE6beYraHHEY5q+WmMhcSRPRlSkb0qcTYyONVvSrfp4NtJXx1z0k3HERdGHdLRoUwhqbH4MuiXDJwt1AWyj4L1cTyj1pEQm9Ep0UkxIOE7hiUOKbfpq1n9xw7QJK+weSz6uMSOOoKIZSqbU9eK0823grS43+Oh/vwXjnWX/keOssXCOb32cCsiHRH5ihrGuclLIxKm0EcARG+htmbQh09sEnNGPDdFLe55kIfkLP9jTQIn2aAuOzAjPOcrv5HhxOgrJj/azU8uk6rOyo9MSaaCHbB7sxpT00HppGlpzYbUOK1DQ4/2yeNORGC/Xn8BxNYtYESZnlThktOSMrArwcl52mIpc/8EU7Bpfz318OswmP6UphRiuEcm22c+eeHi6xNEO+D8WggSZRHY4cWlBWGWhcW90P8+OcxvzWmJM2yFdfEvj66QGBJ4UXd30FAr4duY7B2FU0l4qGHaSVsDuzPSWLLFArfohhG/9RJQNvnKl8bM5psXMll5NyVspjreOq7HJau8c85dLQQ4yvAGEyi2lRP4o/2I6lqldHzcJHwWRvbh+FGCEuGvABeFAfYrisCA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pXelOew3OmPS1K/qPseri8OMvIx4R2/yWhnYM7gosM+VkzEMTTnCcc7hI01gzs30RVivVTJR+bPXZ/7sVLmBN/4WneH9QUNzYPVgOJ5QL0k8+3PmNRtB1Plc9WHa7yJJKtBmVUcoEQ/WXu4nbGKkpKmKy4U1ECuwGNKF10cLDbOFY4BitMjOxlX9QiYnVcqywC5H5kgmywIcIvjKMuqQDUqTxZXndUeFJx6HlpBzlofS9gtsbV3hDLn3/eihaduo1EHTqV3sMN53FFHhNnf3LKfcjlC/k59YjSk4P3Aots+/QWdYJS4888/LTi3ke0FoYDtOv98LcvuYoHYTQlVrwXoRAoODNY0FloIPpXxvPmCh7PNgRIXLKYNt05zccMSGdekeyOiy/wfjtUo4zduFTAVRHFCIHfClQqBo5ZNvWlMRkCO0AkT50db1HZvCMIoWYLYTTdw2EnSiznq2ea35w4A2+qgFmy1nb67NZ3tFra4Upjc2SDEaSPL2S6i9wiqoUexzcLt17FI9iQ0y+semy0RjwKynr3LF8j4vDLDPkDVqQJzJEDCWijcxOGw3mDD9qYOMz3qhkOXXJqU+u9slToJ2EnutVVOK3cuxeHoixqMcSpC4T2V+bZSuqrbrenKi2vHr9vCM39qUaLmjcXMWUf5rX9hnBJG2a4Ue2pDtpFBI9QItj1rbfE7Ye8JAgoGVvsoLm7zti1HwXsN/mDhel68P5/7Jt1RRd1ZzMjzh+QLT1fFRGr4ZrUB+04v/u6d5wJVQDXARWZlE+lEctZ+S2ROz8E6fj4XOm1n/97zf+zltcNi/0i+haYTHLnf89NykgSlcW+Dze3vaslY05tmnSKrveH4c4G+G5bwexg/ILoWAguy0IHg84hi3DB5Ttu4S73OyZZSAq6UIW8rw5rd35BaAx9Z2pqcM48xGTAobM3fOs1Lr4iCntQx2mq+3V4X2duBqlh0emvxFCErRukLa2aHVrJ3ppxvczlwR0YgPSx6BAvZMgyfRe7AubG0IyGZRcUsInScswenC0XEQkE6nK0laDWGelptAOIoQMu0Pbo7mt6qm4FftvBt5oEBR/LwRSsrKPVJ8GCoxDAq4NYtdAyTp1pqXz7oAVt5CRz0QCRjssNi2/LGU7yNBTwQ0N9DcupQJuNHyBN90dweNtroUoNUqQ4SlX8q14eL7fxtbfxcbZc91qnZQLpCcaW5v47aqLmf8Zck5lJJDcyZcvN9JBD20+SMmH10oedDrA/3H2E3AxddHFWt0ZlZSza2xHCjCbir0gkVgYiVNLMv+wKsT9g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae7624cc-e765-4a87-bbdc-08dc99c7ac94 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:16:45.4356 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 03/13] avcodec/mpeg12enc: Move resetting last_dc to encoder 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: UvuRealIQNLh The MPEG-1/2 encoders are the only non-intra-only mpegvideo encoders that want last_dc reset when encoding non-intra macroblocks. Therefore move resetting it to mpeg12enc.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 2 ++ libavcodec/mpv_reconstruct_mb_template.c | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index e35c916b61..72b2caab7e 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1067,6 +1067,8 @@ static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s, void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64], int motion_x, int motion_y) { + if (!s->mb_intra) + s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 128 << s->intra_dc_precision; if (s->chroma_format == CHROMA_420) mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 6, 1); else diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c index 4db85afef6..f1cb0d7989 100644 --- a/libavcodec/mpv_reconstruct_mb_template.c +++ b/libavcodec/mpv_reconstruct_mb_template.c @@ -66,10 +66,6 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) { if (s->mbintra_table[mb_xy]) ff_clean_intra_table_entries(s); - } else if (IS_ENCODER) { - s->last_dc[0] = - s->last_dc[1] = - s->last_dc[2] = 128 << s->intra_dc_precision; } } else if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) s->mbintra_table[mb_xy] = 1; From patchwork Mon Jul 1 12:16:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50246 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739133vqv; Mon, 1 Jul 2024 05:17:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW0o9qHo0RmRmI3aAXlyj1NP6IZMgckCTpUwXZaQJ6U7bB0n7GJOLpEcacjIplgKuLcBx7P80plmpYdyUh1mNe8ZrHJ3iGabhklLw== X-Google-Smtp-Source: AGHT+IEJSB0F4pbCmAMx2CVLexUFOyEDUyMODTCbBvfMPVgncykLVbeoaLE2YcpDTUyRGSbEfnXf X-Received: by 2002:a05:6512:32ba:b0:52d:215c:4111 with SMTP id 2adb3069b0e04-52e826679b8mr3865317e87.24.1719836225811; Mon, 01 Jul 2024 05:17:05 -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 a640c23a62f3a-a72aaef5c93si396080266b.192.2024.07.01.05.17.05; Mon, 01 Jul 2024 05:17:05 -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=Nqq+iS1F; 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 185E368D79C; Mon, 1 Jul 2024 15:16:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2026.outbound.protection.outlook.com [40.92.50.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 67A9C68D794 for ; Mon, 1 Jul 2024 15:16:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n7pjp6zNNvBcCI2UIB/NgYP0QOxFlafznJySxoiInYuG9/YEaB20loauAInB5VQJFTHhnIYC7s9mgmUYSV9fjSCo4L+gJH8CJ5Pl6z6I0XVhLXcDckZ7Nh7CMBI8BJEqlU1D2pBbAvQmi+XmO0ZOcAv0awmIHjMeZOslc6v5+DCN+b1OwU5TzUl83RtYVtfyG0S6gM+BimBx/jGvaTuuCVWTBeeDW6UBWGt4P2aXdmb6ojYb5740wPu+X5bVUuNI8EqWNIxdi4GgaSEc+VOkpu1T6oHDlPPNR+SJMokUZgcj/avBSPfAdKgvqe4R1QY1mRvXVolBWbe2h/MDwsbzyw== 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=OpIxh/7fozJm2/q265LTe1wdtLK9AM1wBnNL5yGFii8=; b=nZOSaIQbxMlticNDnDnMoaZ7x0PUB6Q2aTaqtpKhHm0XjFE5EtjaB72QpOmGFe9ZVSDldogEYKjTqYlWvnAJtAnE5PSNZ2fh2uhZJSdPLDG/nE6VctowtTu3vkPCMBg76O3PICE8fkFt2pVO6KgmyzyVl3s3MjuF5JPWb9LXGonII/WPhJ3ITuIgafjLNBmE37MtNa6OkXIt4RJPcU5q85ar+0Ww9f6HN7sBmsWQma8/rVeiHI4566oyg2gMEPMG0+pjqETDTJ2XXIgdRqfYvKRi9WxlR1IJhI43etbxPzNt9qZSB6GA2++PaBN0JHd6/4oRSQ2zwKwuz/h6bbK9Gw== 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=OpIxh/7fozJm2/q265LTe1wdtLK9AM1wBnNL5yGFii8=; b=Nqq+iS1FbmLQG+ZgU4eGI9pJ8hRD/d15JoM3C6VaSlmk4I62dW19kyEqcIf7GwvxbtLX64o9vMz159VrvpXttlOts922qMrawzLIrWMijLtfpz4h11beTvSnDDhhIrFDTmcGr2O5JotlFmvs7SURrcwUvytpuqgOSecJmzfwafsg4fKr+ckd1OYiJR/HxermN+Y2XPea0FF4MX260L2Dxs/eNJTGQNpHLtQ3i2ia5f2kvSkkTaEo0eDg6eukcSu83V5Ws9CQ+Egebn2pPuAlLN5WVX0DxxXgiAQajRqC/lUc5ujQd5uADCaw5V2LwMj3STy8BdxEtr6RHaJOcKCr9A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:16:52 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:16:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:01 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [cnQg98OJGaQdpqxPpSrYUYG7zFDk6R9AuDrxTKHdWQM=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: e4db7f32-74a7-4ecb-742e-08dc99c7b090 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: DfSwelBAo1EIpyg7va1vOBSwk+ZKzJKGYmaQ1xDdDyn08dXAIb72Uogk+hPP1yIo7hbn3vjCZj8RLB0nQr63rNbwCCEd/uDSPBQK4TpuFgUraaHmEGu8AQTt2yoH0D4wgayTJ0QUtYxXT/raX8WWmThEmpH1UphceQgqc7gxvYodnS7cbBPj+iwWsOCLF+oz9Wb0rga96zjfZO5BooFWDRTP1GH0N+SpyHXMqnYpmCSOZ9YP3edtZ0tAAR8fPwid1YXFsUQC5Z3ckyvHj9jJ3k9LOiL1zczbNQ8TZ3HZU3xaCSQqPxGX5h567l2ePRlxnYORoHHhCGwIw+g3TXRdwkHaWrQW1TVpzuqYehTMXLBBFYGOGNbTQQc7JMOfSfDrSBRuuRebm4ruGTENvoAEXRhQh1hMBtWJ11uu1GjCaw3tWO1LHDRem1RA9s57EgB5SVgIXw3BzV0CNcC8Wldy/NLwKNsHEhyFBtQ4glszrmNpZCYk3BIozeWArNTap1ehqcU2Uu/UulYmSaN/zEsbI/gxoizzuaAalVQbBL56/xqnHz6UH4KGGzp1gRSETwXS1hzqQgF+uYQuywEecOcIyiKmEgw4hAtH1q2OEhHoYEO1g1BL2QYu0f7iVKUGF7PpQyFB/Fz7gOeMQ2/p2JKiFw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Tbo+5StZOA7HfFbW6S9pp5vMBOMI7OGSZYzOF+wOHjyaCFhD57JgA5XYP4Tp02n+LFN4sggz3WJt2nY3MO9MU9Mc8QLe9BUa7bpDhWk4S7pqvSoZzWd751PfaBBHrfdlvuFxrDZqIZUGDMITaETtRc3oUXttzsNY8oEExHQhjAaf+61XfcSKV2viDdX4swq1+N0XUG3pD8m99VmoLBJzYd52pa7vSOmQZbFOkcmEdT1W6Klg2U5R8pypFXTyMZIINZqb7SslpIQBaGgJLhdM9jbsEYg9jaaDVWYTmi7IcnHwIMAyAGMhGwIuIS8wICBB7/nPyrYD5CsmscK9EbC9NkkRKyQaXrUNI5ewRNviZh1OJbqivnZhU9xQU3rJDN+zIQ3vyHsSdf5G7DexVcOJUh+Ol9PaqwmdjbBuWKLlbvYZPLegtXRy8mAKDncZoX0l3VH5hgolk1QS2KW4PLJq3UbcyxDNki9hWCwX0pryrp3XiX/PmlM4q1Ng9SuD8dEzEo61+zAmXPFV4GfbFV/FXM//BEwFRR2dD5FuQY+Bl1GVyHaLlbuzAvudZkm4bcqUB0FUrpSu55RwzSkia8ENvQWxqucHI2DBxt2BFMwXtH71SsVoxuX2hGhOJ/64k2azGRsOSz6qMaomsIFA68lnAbVh2aG3S9ssw8CEbm5J0czlST2LQ9gXTvUnIp068qpzbvDuf3ttD7sJmCXKqtTjBL+Qf6XnR0MoUPj2mgZSvzwrd7HnfkU5JPiyEYZwVO0WLP+mBQxI/44Kk3hc+zpBZ7XH8kzUKioKVCB2QeGz3Rorv8gXMJwj0c9s2MwSt4fUD2fDks39IPZoKkBt9+9s+Fldjb9YPwaiEEh2EkRhTCwdAPrM9SoyR8DznKGkGcre4LhzWeYZyLIGdv0ZvcTlIBLXFEPXJnWYWYuaef16MWJtuFWWJMvgW8JCFld6TZMAgPwY04XQ1W10kZChlkR9mCHJ7n4rrg2VKuBUr5RFkRgvsKY8Zjov9eC72vsFoSKLvmjrTddXK9JA6L2qYMh/Ft9wEl3qH+DSxexDDfKk7vO4CjkyyJs+U1MmcZ7d/Vo+Pk5AylsWKl9eB5YB4ssJas6xJ55Xs2EzH/PmscFbLe0omCawQzFzkYTF+jlMsZBJ94v5f6psJT6KX2H4lew3XrKsetuw/nlFXWkXuMuj6m4oLvhYulB9G0BdxYGdX7dyGSBhE3OLywT576+2yDsrBQTbALLfu/U3YJPknJtqj5+82nQjWfra8+uZpb1KAphOD3AZPxCR9riA62/rR0bjog== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4db7f32-74a7-4ecb-742e-08dc99c7b090 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:16:52.3349 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 04/13] avcodec/h263dec: Clean intra tables in decoder, not ff_mpv_reconstruct_mb 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: PKlL7jP7Sfsn This is a more appropriate place than a function designed to reconstruct a macroblock. It furthermore limits these checks to the codecs that actually need it (and removes it from e.g. RV10 and RV20 -- the latter actually uses these buffers, but only for intra-frames, so they don't need to be cleaned manually). This furthermore means that ff_mpv_reconstruct_mb() and therefore also the error-resilience code no longer needs block_index set. This fixes a crash caused by 65d5ccb808ec93de46a2458ea8cc082ce4460f34 when ff_mpv_reconstruct_mb() is called by VC-1 code without block_index being initialized properly (VC-1 uses and initializes block_index itself normally). Fixes: 69814/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1_fuzzer-4868081575329792 Fixes: heap-buffer-overflow Signed-off-by: Andreas Rheinhardt --- libavcodec/h263dec.c | 9 +++++++++ libavcodec/mpv_reconstruct_mb_template.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 0c23012584..3e9da23d3a 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -271,6 +271,15 @@ static int decode_slice(MpegEncContext *s) ff_tlog(NULL, "Decoding MB at %dx%d\n", s->mb_x, s->mb_y); ret = s->decode_mb(s, s->block); + if (s->h263_pred || s->h263_aic) { + int mb_xy = s->mb_y * s->mb_stride + s->mb_x; + if (!s->mb_intra) { + if (s->mbintra_table[mb_xy]) + ff_clean_intra_table_entries(s); + } else + s->mbintra_table[mb_xy] = 1; + } + if (s->pict_type != AV_PICTURE_TYPE_B) ff_h263_update_motion_val(s); diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c index f1cb0d7989..981c837642 100644 --- a/libavcodec/mpv_reconstruct_mb_template.c +++ b/libavcodec/mpv_reconstruct_mb_template.c @@ -61,6 +61,7 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], s->cur_pic.qscale_table[mb_xy] = s->qscale; +#if IS_ENCODER /* update DC predictors for P macroblocks */ if (!s->mb_intra) { if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) { @@ -70,7 +71,6 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], } else if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) s->mbintra_table[mb_xy] = 1; -#if IS_ENCODER if ((s->avctx->flags & AV_CODEC_FLAG_PSNR) || s->frame_skip_threshold || s->frame_skip_factor || !((s->intra_only || s->pict_type == AV_PICTURE_TYPE_B) && s->avctx->mb_decision != FF_MB_DECISION_RD)) // FIXME precalc From patchwork Mon Jul 1 12:16:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50247 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739450vqv; Mon, 1 Jul 2024 05:17:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXz0EwKBHpKAPrMARlWMSsahuHkKVwsL3So0dZoKG5aeigNYO2UGZFy2R2VohdyGV3GD2IqHtgaxuyxqCJLDOZZ4mUWe2C8zznxsQ== X-Google-Smtp-Source: AGHT+IFE5q0oKK5N7CF3tGrAbssOsLmfbada/PAEY1pM+443zlzQvrKKbsKIiICkUwgK3FmKrFcf X-Received: by 2002:a17:907:72c2:b0:a69:13a2:4f6e with SMTP id a640c23a62f3a-a7514512d6fmr420924066b.74.1719836257298; Mon, 01 Jul 2024 05:17:37 -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 a640c23a62f3a-a72aaef5f07si349188266b.175.2024.07.01.05.17.36; Mon, 01 Jul 2024 05:17:37 -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=fHrvaBRr; 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 4850B68D6B4; Mon, 1 Jul 2024 15:17:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2029.outbound.protection.outlook.com [40.92.50.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8E46768D34E for ; Mon, 1 Jul 2024 15:17:26 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j7Bu56oLDnFMhpq3smA1MDlTp9kDesEFa/jM4GFCCxzm4Q+uadkDpoCA7OoaOGfZ/gCGFgFvalM5mU/AD2EPzVIW6PN2U+RzUNJO1itks9rXr+aAgdkg4riAK02Sv3HL74Nm2XaM0MGSvkuITtt95hR+4qSDtagrl2F55tgJlk68Gbzql9/OZpTFqdSKxaQ5nwS2A8rC0hkjH26PjYBx2rP5ou2j29hUjAqr0vUZJeUFtmKDhlx8aEKGLm8ZHD6s1QgtkQhNRoBPB4C55VDKZUUnqufT+F/l21s6ENh65/lIHBRX0fx3qFGyxZiD57SrIo/ASx+LaCBJJ0m2PbQb6A== 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=Y46LnJBRJkM3aIR1XFThIB3f0rluu4L6f+nyJ5JLiBo=; b=dWR6rYOSnEGhtpHfwgA/dHG9qXrd5v5twsQySH3iTWayk+vz2cQr3rPiaV9FMBe3iB9176OFqGlTZEPE5+E4dHmNugtWNmUXfV5yIaxWJXzIroeCXGXclfOrEGd+CZLmF4wvvSRJDtcFRJf2Op/2Iso4dmsQxED9ixAAK+Pl9OSd6rMf0y7Kjl/zyh8XVG7hE9hSFBeAxvoqDIXnxzWY6lec5BS9jZlo7WVGMv9xb69b+LEnBRWsxWtAhldenIchrur9Xstm5FOcy9lcIStP4uHX854WFSjjiaFEGu9ZvWkX735xwaZ306Z9WNrb/Z6DdxQxpj00MV8yVawn1sUqnQ== 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=Y46LnJBRJkM3aIR1XFThIB3f0rluu4L6f+nyJ5JLiBo=; b=fHrvaBRrzqc/cr3ffoPHtcir12TTjQox/dHHT5xWS3WjTE2ghscI+WQS99e4bpON4UHIDKjIlqtXPhu+TT+dzGRBCN7I34SFzlKS+AXksoNFAxW351t2UOhmHOJ9U1NiQG4IxXYPkj6BcoWE/a7mSyw3oVNpax3D+7if/l4Z9ELdyDtNZgEmOruA+9YWQ23O4JtnP3LdLuIPtxN5U8ROinGQpcLUjsr/G8xyWDM5LyIti5X1FspCLLxZhvvramXpnwuXon4JzkHeUBZFXM5bVZrnMyA8phKcEphjcyGbiR/iN+wm5ZKlKX+co0cOBiN2uFIBEcMfkyxLFkHHAYsW1A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:18 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:02 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [LDlyp7v56s45DrTIi770pqRzghdUaf6BRuwk6tRfUJM=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bfd1ebd-90e0-4ff2-3e6b-08dc99c7c02d X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: sV/FUjILBzMo1Ff4Za3+GVSxxYxN9XWCe8FvC0vtoP5jO6i5s0Vvlb9mHKtokQoAmDp9KRmBn3eGVgKCz6eAj6wAn9mdGvR5syidPNDyxnGrkeviSxzq2VQMY71gjy4LT67pDZFCvpITPlGzAdKpYLwpxHxrBKr6W8iP6Ow2hB3flMtEvAi0IBieoQrixsKEjCQQFy7MbMw+jV9NSdPINutgE6wI3SChVt4njFMoE8JdGZ7gGYI9AgUTBBSjXrB+IIYvL2eJQUnjEDR3+zrOUh8Q5ZIooFruGMXz7pVynjjRTY0lSfpxwRNLG2sFH5etVdQSSQxmL3FC+G9QPKdMB6gY78FrD0e9vJsbXE6EGHeSLshHfN1KDT2g0CaPSIjB3NNBSXGQeM62fmd4qJl0Q/YDz4H+fZeuT4xVhPDP4fzZ/Rw+7Sxrv5xE0FEFTI/z/9DzuprBrZ8gpMqT64VUUw0kgnH+Jsn5tAD29PvLUcU7rNM2cAq2F/Xth9Ys8eMJ4OjXFcZDEg/TabbIv5lcl1a3CYbguhLI8pTb3TkLLST9rAdNVC9iz82Ja7KBOpjqOnmrxhGmmASCwtrRAE8oAJJLb9EobR94il0AyAhHzZ4Bq90RbJICXApSrkRyERkVc8Nex4sdl97evwGRinMyjw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kUq1z2S0j7p7OlnV7kEc3oSOozExgR4SfD5aY7rLoGWqHgjdLPjWv+R6vKaH3WdKFskWtDCbQTtA6PpTC2An6sidvF9pZJZ4Yg/WZmfeCHw8GOemaVvSawdUg4SBXZ0q9kn2wjIDvw4HX9WiB4Svd5k8Kq9JPTX5aiGQe9EEcv0E+JVWMEmezIGJ6P9q1nMfkGKM44wd47DjDOdtgMmWfJX6XJw/py34mlNhdUkGWlzXqbLBZYTPrnQx5I2w6QWvwMvOFpIMwuPH7YSPTV/Zf+TONU+GD630sCwQAL+/2gfOnPz3TH5Wt5gsbJy5BWvmk016jcukGjODW6KbsuSPApSROZ4aMZC31IBUcSrvUb27LaJ6KJJd3x0XP1JsFt046g754r0mSdGl2EVtITn9fYOcN4hTj0/WoayMLb6G/rlrBfejzC6EXNdZwn/plYtNvTQI9lrcCWjUJ6x4lgV/w8KDdL6rJVcC/UmSROUW/1OneKCSXLS+hl3YCy5q76GSAQUNrhte5ylwFzyW/ov1Jaqn/6LlhWZ5QdMXtlL6Rd6TRgLUUf6lk+KKA2RbIiMtt89LcI8FYMjKO0QK4IfCKtue5JTlZRvK+/4FMYhh8iORRstetARfcY3G1vcrHrzmDBY9ZCbUCINuS9H17Nq7gIaQoluM8gpOwUJugVOGV8lm+XBzyud4B9cr91XDRngHCHYBTIc+LILCiYfZkMrq3Pti5IOAoIOGcSEnafPrem+fiU1dZy/1VghLBa3CjwAZpO2bZYTX8tMJhS798VaQ7MuiRk59FQW89TO1JL2ev26+sj5nKG1TK1V9lHeOqWBcn8zRTGJkDNzETmTW/W3QKjgzBJsEaZtMYbzTHMPfMuK5OKPOf4HCIh5lMGeD8N9HAKgoYaw5Z3elB3uwkejmfGAifHAdHnHZeC1yQFtCCwuF0K3coMimWqTiPeaOy3vYkzrLursJFNO3JL3huXEw9bVQKXQyw85mBkjYv49rabtFXXxl6vLTbC85uZwkIM0aRmyhXG9jbypkd03qTVOyeTgDT5cOfpp6mpe37b0J3Zxk3SGAKgzyJTUivaec1JGpzHwkLadK/9h9srVxe69ReoMU5pzH+ojLSTUNugu95vjQEVs78lDUAB0y+hvRn6vT47vUNRdRVVxOKKRFGbDE+baxP1Moi3Y0WbrgLI9SDQRYs5E/2pAt4TenpY9J6v5LOiV2h+a8jdnjDUOBgYn6k1Yi2+KSplsNqgf4Z2zeo6naDKZWfswurfSZxmri64lFarc3QL5KfeT11kY0zThlGw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bfd1ebd-90e0-4ff2-3e6b-08dc99c7c02d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:18.3398 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 05/13] avcodec/mpegvideo_enc: Don't reset intra buffers in mpv_reconstruct_mb() 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: 1UpDiIIcYTGk It is not part of reconstructing the macroblock. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 11 ++++------- libavcodec/mpv_reconstruct_mb_template.c | 9 --------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 620ca08869..31c5dd4736 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -3188,12 +3188,7 @@ static int encode_thread(AVCodecContext *c, void *arg){ s->mv[0][0][1] = 0; encode_mb_hq(s, &backup_s, &best_s, pb, pb2, tex_pb, &dmin, &next_block, 0, 0); - if(s->h263_pred || s->h263_aic){ - if(best_s.mb_intra) - s->mbintra_table[mb_x + mb_y*s->mb_stride]=1; - else - ff_clean_intra_table_entries(s); //old mode? - } + s->mbintra_table[xy] = 1; } if ((s->mpv_flags & FF_MPV_FLAG_QP_RD) && dmin < INT_MAX) { @@ -3340,6 +3335,7 @@ static int encode_thread(AVCodecContext *c, void *arg){ s->mb_intra= 1; motion_x= s->mv[0][0][0] = 0; motion_y= s->mv[0][0][1] = 0; + s->mbintra_table[xy] = 1; break; case CANDIDATE_MB_TYPE_INTER: s->mv_dir = MV_DIR_FORWARD; @@ -3454,7 +3450,8 @@ static int encode_thread(AVCodecContext *c, void *arg){ if(s->mb_intra /* && I,P,S_TYPE */){ s->p_mv_table[xy][0]=0; s->p_mv_table[xy][1]=0; - } + } else if ((s->h263_pred || s->h263_aic) && s->mbintra_table[xy]) + ff_clean_intra_table_entries(s); if (s->avctx->flags & AV_CODEC_FLAG_PSNR) { int w= 16; diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c index 981c837642..ae7a9e34ce 100644 --- a/libavcodec/mpv_reconstruct_mb_template.c +++ b/libavcodec/mpv_reconstruct_mb_template.c @@ -62,15 +62,6 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], s->cur_pic.qscale_table[mb_xy] = s->qscale; #if IS_ENCODER - /* update DC predictors for P macroblocks */ - if (!s->mb_intra) { - if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) { - if (s->mbintra_table[mb_xy]) - ff_clean_intra_table_entries(s); - } - } else if (is_mpeg12 != DEFINITELY_MPEG12_H261 && (s->h263_pred || s->h263_aic)) - s->mbintra_table[mb_xy] = 1; - if ((s->avctx->flags & AV_CODEC_FLAG_PSNR) || s->frame_skip_threshold || s->frame_skip_factor || !((s->intra_only || s->pict_type == AV_PICTURE_TYPE_B) && s->avctx->mb_decision != FF_MB_DECISION_RD)) // FIXME precalc From patchwork Mon Jul 1 12:16:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50243 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739550vqv; Mon, 1 Jul 2024 05:17:46 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW986ukWR7MrLfOwJ/rmaOZjIyS+4Qz3Tp2oa3+rzHJt50lWDvpGFQmpsC7azhjO2/0zZceA+YZLsnThrRsfO/AlKj0zqrgiNsw/Q== X-Google-Smtp-Source: AGHT+IHx2ru9cPyfJfKvqW7b/U350Ehf9N64ocRo5wRDJkt5RH33U03SpldfCI8X2m8EeCt7nm0+ X-Received: by 2002:a17:907:970e:b0:a72:b3e3:c04 with SMTP id a640c23a62f3a-a7514438ab2mr485236366b.42.1719836266415; Mon, 01 Jul 2024 05:17:46 -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 a640c23a62f3a-a72ab0bbe44si359735666b.988.2024.07.01.05.17.46; Mon, 01 Jul 2024 05:17:46 -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="JW/L7xbU"; 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 BCC8E68D34E; Mon, 1 Jul 2024 15:17:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2029.outbound.protection.outlook.com [40.92.50.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2880068D7A3 for ; Mon, 1 Jul 2024 15:17:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UfbOkxzQoO1+uoMBXpn9NaR+NJQH6hd3NdBbPjKWZrAfvHM3o/tCtPdrMbAWZU1CCO1WYJWw596XZwAUCRwZIsR0xhRtWts3D9cY6D27SLqrbQ30YPrhktvluefFdcjritfjiGTfnnvOUmSiSY9ac195cmIxFnVeYj8yoUBI6jtpEANYGldc+qDHLBBjsDp6sBthJNTiEgj2fW9m9bf2EdCklp/fnL16VRh7hFC2mNenDC4MOCm1KCTue8U7cYxGF0a0wOk+CpzxUrYT2kow60IEly3VMbrqhTTx8PSTOFolWFbyc0Of037XqogHlD5o3Ys2N7grKl9cyS+ck8LkxQ== 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=cg2j9VGVxNWYqMZNu4coAL9oceE9gLi+bABF4/536tQ=; b=YI7rtImfQs9he6al4ZEz+spH9bBg8DoMLIYEz4y31sRdQXJQpJsZnQX/Xk2NKgaIQHZFjPGWRRkzX5Vcbj+Gn1Ga1OCVChQGBIKLw1Wc8oFp9ajJFMiKPXO5+Wd/bopuogwXYmEoeKEzyFqAUN+nHChznm4yy4UbP5NVIT4qeba8Zd3R5ZjQ04umZzhgC/ASemvtkdx9tmoLSGgnBDBtDHkHCBQfPvdKyBWLceC+nFEZ0tBdyjni8bRR2HuGPyhZ1CSYsy9lSEhuL/5UoLpNgTB+bPf3jkLAFuk6lb9FY1+TU6JPITP8nUT1EVuLmPdFvoG3EsRq+c0s3PNA1thy5Q== 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=cg2j9VGVxNWYqMZNu4coAL9oceE9gLi+bABF4/536tQ=; b=JW/L7xbUzr3Y7HnKlz4mLloSwf3TaTIu/MAYZyKUpIZLtYDxM9JwZFNlTg93JinLJjt0kotj3mgKLaIvLzaWNoEG18hD0+obQSVO9j4DoCBB/NKtzFd7CH2dRln3QGPjudscXK85Q21qXbkR3mOfuEbqc2JZkYI4n7UpRmPqppTSqqCKvc9Ta6os3BMQ5JZifL0LbkyRKw44xui+/HoxP0rd3kCP7cQXcEK5UMf3feShAMZjKnt9iAnwHhRxFwo4N3HomALXrOviUVq5YE4vUwPX+TzH9ttXRbJKZOPbnpMPKqre4dEnZje9NMajqNcCl3zGhBLtPla+dDQuqwe4/A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:23 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:23 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:03 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [rT1IJfr0R/7nYxJaGuca1ZmGaVauRUN1jVNBlrNPExg=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: ae4e8ed3-0d46-4e23-ea02-08dc99c7c302 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: sGkIL8mY3tN/uzqJKiTiGmNTySi3r7cRbvIS9mzOmWuG+WPxGv/Mu29kVBYj6ZlP5Nr7BIZ5+rsuRF5wuueOTKtQas/dkyl7g7wxpJ2Ij2DPJsKj3GHkceJK77HFeqQBKZPF9N2vFeGS+S3fahf6n6WLyVpxo6kvpPWBnUzdhznBEoJWwDTINHHkyQviNXFXM0aC2dwl5r7aTS4fnsBBCdZklt0l3menMayXw9jlUB4E+Iz2FoFhevhaqawNqBrEUd4jgGx0l6fCOMrAJEucu0ZHPvR5PGxDhUKKWtsAfWYRRzgT0513xaeaeGDqQTG8R2BO2IWzJ+Ba2urBRycmowvRy2ooySBH5XC7bgUAk/R+fxl0bXDM8p+zDPpcAvFESVsJ/meOSWo1185i4H1coETncRCfruMLR6xBNSw1xpwcIpXDT4a5iIlGP65IfXB9Vfkml1azJgjBvU6xyHbe4g8HJ6zM9TIgG1XEe1qOgHLvHUM5F7Pq9a64zUUiYZIY2SXZ5M/pAlNQxGfKHzgY3N53bIdA0WKoq9vzzhlz+IBB2lu0dWovt7obwfFUmQQONzW3yUwReTVfV6pgJKNaUMKXlKzzDshKs+c8OkWQo9WKXUp9pHbN2AxpH/5OEHE2D3+QMPskeYRvgcTW+Egycg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: F/2KulASXAfJhMfBlms4hP983ZbSPKfop22luVB/hBNXigXxmfI9DtpA/m3wk97sqNWBKY7LhrxM9/hXFm49OIb4g2iOKDfyfGq7JuyoDYMUESbPTyai4IFRyxQj6aYUj7oK7AhfL1uER8JNM+QfgTkC2XkesmNAXZZHDIzDM79zUTv9pPa2uLdxdBD80TzEbGsQPct4zzCnxydJF6Z6DNtlpSQ3onhWondfGYhhqhWYSHxQCZpj04kon/OMpa9mkSebPZhDCEwt1ok88UMGCNW6RbC9z2p7h+0AP6ucARbykTLSHVOD/ZpNtdRxV2Z8sxQDlLsuJpAoCA35agp3eAfBBBKdrIpIWkLV8hdao3+9jAi5gzT9F7BLm2gP07NoNUrMTI3CMbMfQlYN1ny4+tH2DKbaEQgIIlSSTxEiJ45oWmBd5MfNNX8xfFWlTMxNOB/j9Jjb8kJlIuz98kVxGLDLQcHswJH7b64sZDsuyo60AHHHxlEO6i58IsrlYgNSM3yoaBmBrUBhxPFDiE+QL3ZlObAHKbWIVwu5ytyuIPajgyOE9AvtDkF5ytaoqNFA+bfHLUY06h5bH/V208jlBnkoKcEbsC3LNk2nK3OAlceCHxA07YL6Aj8UUlvK2ol0TCylANfFL5jaNlgH5W9UKSuPPEbyLKlL7bQHAF+D+LPk5S+nDMhztygk+IZFtkZa8Y5hFEksUAvkGcx47VpStLZbdBxj06R+p4QRn+vZA8t/3SDoN7x9PTK8QpzeyUQRfHC75j1tBTvcCxk+pePSdW9HSIUNe3ycZoocWVEx4p2WU0yn8tqgxxKDX13v9JxyIfgWx/N8RFguJ33/3Fqk342sa2qloAeM5agSudOtDGORSr6gmeips2gQFbg0iWfkUnRHl4JYipvZ6Qj/Q76V6KkhG4ZNnpDABIdRXRsrNFIqlMPnjXXIwVCvQd834X+V/xCHa0J9wgSalyvj2CpxfDFP6zAbiWoWsGaV3fMnc9nMgNCagVHuQANIDl+bUyJ4RQ8lXLBuXnrOO9NGMzGXnwgYT5OkVy4KNjiOPIRr4iXTPBdLWb3rb1YvESphRh6BPwatB012GCeClaDPDlMvvTupQVnngGRa7clPlI1XQv9Yo2EosziqBd1QUAZZ0YN06C1V42VGeRSsV3tT0dMOESV8zj7ShCql9+iWW7DMz4hnAdAL3khI6yQUROboLEb+5wSc2cj2XJqlaJPQ6BEQE5Msa9ZepcQHDw0Ueo7hdtQn02WK6npi7QsHTSr3jPDmp6qlImoGzHySZTBgHrUpdg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae4e8ed3-0d46-4e23-ea02-08dc99c7c302 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:23.1235 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 06/13] avcodec/mpv_reconstruct_mb_template: Merge template into its users 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: u7CCGaE3j3IP A large part of this template is decoder-only. This makes the complexity of the IS_ENCODER-checks not worth it. So simply merge the template into both its users. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_dec.c | 218 +++++++++++++++++- libavcodec/mpegvideo_enc.c | 81 ++++++- libavcodec/mpv_reconstruct_mb_template.c | 272 ----------------------- 3 files changed, 294 insertions(+), 277 deletions(-) delete mode 100644 libavcodec/mpv_reconstruct_mb_template.c diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index 1cab108935..2222d50283 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -904,11 +904,225 @@ static inline void add_dct(MpegEncContext *s, } } -#define IS_ENCODER 0 -#include "mpv_reconstruct_mb_template.c" +/* put block[] to dest[] */ +static inline void put_dct(MpegEncContext *s, + int16_t *block, int i, uint8_t *dest, int line_size, int qscale) +{ + s->dct_unquantize_intra(s, block, i, qscale); + s->idsp.idct_put(dest, line_size, block); +} + +static inline void add_dequant_dct(MpegEncContext *s, + int16_t *block, int i, uint8_t *dest, int line_size, int qscale) +{ + if (s->block_last_index[i] >= 0) { + s->dct_unquantize_inter(s, block, i, qscale); + + s->idsp.idct_add(dest, line_size, block); + } +} + +#define NOT_MPEG12_H261 0 +#define MAY_BE_MPEG12_H261 1 +#define DEFINITELY_MPEG12_H261 2 + +/* generic function called after a macroblock has been parsed by the decoder. + + Important variables used: + s->mb_intra : true if intra macroblock + s->mv_dir : motion vector direction + s->mv_type : motion vector type + s->mv : motion vector + s->interlaced_dct : true if interlaced dct used (mpeg2) + */ +static av_always_inline +void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], + int lowres_flag, int is_mpeg12) +{ +#define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) + { + uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; + int dct_linesize, dct_offset; + const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics + const int uvlinesize = s->cur_pic.linesize[1]; + const int block_size = lowres_flag ? 8 >> s->avctx->lowres : 8; + + dct_linesize = linesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? linesize : linesize * block_size; + + if (!s->mb_intra) { + /* motion handling */ + if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12_H261 && + s->avctx->active_thread_type & FF_THREAD_FRAME) { + if (s->mv_dir & MV_DIR_FORWARD) { + ff_thread_progress_await(&s->last_pic.ptr->progress, + lowest_referenced_row(s, 0)); + } + if (s->mv_dir & MV_DIR_BACKWARD) { + ff_thread_progress_await(&s->next_pic.ptr->progress, + lowest_referenced_row(s, 1)); + } + } + + if (lowres_flag) { + const h264_chroma_mc_func *op_pix = s->h264chroma.put_h264_chroma_pixels_tab; + + if (s->mv_dir & MV_DIR_FORWARD) { + MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix); + op_pix = s->h264chroma.avg_h264_chroma_pixels_tab; + } + if (s->mv_dir & MV_DIR_BACKWARD) { + MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix); + } + } else { + const op_pixels_func (*op_pix)[4]; + const qpel_mc_func (*op_qpix)[16]; + + if ((is_mpeg12 == DEFINITELY_MPEG12_H261 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) { + op_pix = s->hdsp.put_pixels_tab; + op_qpix = s->qdsp.put_qpel_pixels_tab; + } else { + op_pix = s->hdsp.put_no_rnd_pixels_tab; + op_qpix = s->qdsp.put_no_rnd_qpel_pixels_tab; + } + if (s->mv_dir & MV_DIR_FORWARD) { + ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix, op_qpix); + op_pix = s->hdsp.avg_pixels_tab; + op_qpix = s->qdsp.avg_qpel_pixels_tab; + } + if (s->mv_dir & MV_DIR_BACKWARD) { + ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix, op_qpix); + } + } + + /* skip dequant / idct if we are really late ;) */ + if (s->avctx->skip_idct) { + if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) + ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) + || s->avctx->skip_idct >= AVDISCARD_ALL) + return; + } + + /* add dct residue */ + if (!(IS_MPEG12_H261(s) || s->msmpeg4_version != MSMP4_UNUSED || + (s->codec_id == AV_CODEC_ID_MPEG4 && !s->mpeg_quant))) { + add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + av_assert2(s->chroma_y_shift); + add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } + } else if (is_mpeg12 == DEFINITELY_MPEG12_H261 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) { + add_dct(s, block[0], 0, dest_y , dct_linesize); + add_dct(s, block[1], 1, dest_y + block_size, dct_linesize); + add_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize); + add_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) {//Chroma420 + add_dct(s, block[4], 4, dest_cb, uvlinesize); + add_dct(s, block[5], 5, dest_cr, uvlinesize); + } else { + //chroma422 + dct_linesize = uvlinesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; + + add_dct(s, block[4], 4, dest_cb, dct_linesize); + add_dct(s, block[5], 5, dest_cr, dct_linesize); + add_dct(s, block[6], 6, dest_cb+dct_offset, dct_linesize); + add_dct(s, block[7], 7, dest_cr+dct_offset, dct_linesize); + if (!s->chroma_x_shift) {//Chroma444 + add_dct(s, block[8], 8, dest_cb+block_size, dct_linesize); + add_dct(s, block[9], 9, dest_cr+block_size, dct_linesize); + add_dct(s, block[10], 10, dest_cb+block_size+dct_offset, dct_linesize); + add_dct(s, block[11], 11, dest_cr+block_size+dct_offset, dct_linesize); + } + } + } //fi gray + } else if (CONFIG_WMV2_DECODER) { + ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); + } + } else { + /* Only MPEG-4 Simple Studio Profile is supported in > 8-bit mode. + TODO: Integrate 10-bit properly into mpegvideo.c so that ER works properly */ + if (is_mpeg12 != DEFINITELY_MPEG12_H261 && CONFIG_MPEG4_DECODER && + /* s->codec_id == AV_CODEC_ID_MPEG4 && */ + s->avctx->bits_per_raw_sample > 8) { + ff_mpeg4_decode_studio(s, dest_y, dest_cb, dest_cr, block_size, + uvlinesize, dct_linesize, dct_offset); + } else if (!IS_MPEG12_H261(s)) { + /* dct only in intra block */ + put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_offset >>=1; + dct_linesize >>=1; + put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); + } + } + } else { + s->idsp.idct_put(dest_y, dct_linesize, block[0]); + s->idsp.idct_put(dest_y + block_size, dct_linesize, block[1]); + s->idsp.idct_put(dest_y + dct_offset, dct_linesize, block[2]); + s->idsp.idct_put(dest_y + dct_offset + block_size, dct_linesize, block[3]); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + s->idsp.idct_put(dest_cb, uvlinesize, block[4]); + s->idsp.idct_put(dest_cr, uvlinesize, block[5]); + } else { + dct_linesize = uvlinesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; + + s->idsp.idct_put(dest_cb, dct_linesize, block[4]); + s->idsp.idct_put(dest_cr, dct_linesize, block[5]); + s->idsp.idct_put(dest_cb + dct_offset, dct_linesize, block[6]); + s->idsp.idct_put(dest_cr + dct_offset, dct_linesize, block[7]); + if (!s->chroma_x_shift) { //Chroma444 + s->idsp.idct_put(dest_cb + block_size, dct_linesize, block[8]); + s->idsp.idct_put(dest_cr + block_size, dct_linesize, block[9]); + s->idsp.idct_put(dest_cb + block_size + dct_offset, dct_linesize, block[10]); + s->idsp.idct_put(dest_cr + block_size + dct_offset, dct_linesize, block[11]); + } + } + } //gray + } + } + } +} void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) { + const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; + uint8_t *mbskip_ptr = &s->mbskip_table[mb_xy]; + + s->cur_pic.qscale_table[mb_xy] = s->qscale; + + /* avoid copy if macroblock skipped in last frame too */ + if (s->mb_skipped) { + s->mb_skipped = 0; + av_assert2(s->pict_type!=AV_PICTURE_TYPE_I); + *mbskip_ptr = 1; + } else if (!s->cur_pic.reference) { + *mbskip_ptr = 1; + } else{ + *mbskip_ptr = 0; /* not skipped */ + } + if (s->avctx->debug & FF_DEBUG_DCT_COEFF) { /* print DCT coefficients */ av_log(s->avctx, AV_LOG_DEBUG, "DCT coeffs of MB at %dx%d:\n", s->mb_x, s->mb_y); diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 31c5dd4736..774d16edad 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1082,11 +1082,33 @@ av_cold int ff_mpv_encode_end(AVCodecContext *avctx) return 0; } -#define IS_ENCODER 1 -#include "mpv_reconstruct_mb_template.c" +/* put block[] to dest[] */ +static inline void put_dct(MpegEncContext *s, + int16_t *block, int i, uint8_t *dest, int line_size, int qscale) +{ + s->dct_unquantize_intra(s, block, i, qscale); + s->idsp.idct_put(dest, line_size, block); +} +static inline void add_dequant_dct(MpegEncContext *s, + int16_t *block, int i, uint8_t *dest, int line_size, int qscale) +{ + if (s->block_last_index[i] >= 0) { + s->dct_unquantize_inter(s, block, i, qscale); + + s->idsp.idct_add(dest, line_size, block); + } +} + +/** + * Performs dequantization and IDCT (if necessary) + */ static void mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) { + const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; + + s->cur_pic.qscale_table[mb_xy] = s->qscale; + if (s->avctx->debug & FF_DEBUG_DCT_COEFF) { /* print DCT coefficients */ av_log(s->avctx, AV_LOG_DEBUG, "DCT coeffs of MB at %dx%d:\n", s->mb_x, s->mb_y); @@ -1099,7 +1121,60 @@ static void mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) } } - mpv_reconstruct_mb_internal(s, block, 0, MAY_BE_MPEG12_H261); + if ((s->avctx->flags & AV_CODEC_FLAG_PSNR) || s->frame_skip_threshold || s->frame_skip_factor || + !((s->intra_only || s->pict_type == AV_PICTURE_TYPE_B) && + s->avctx->mb_decision != FF_MB_DECISION_RD)) { // FIXME precalc + uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; + int dct_linesize, dct_offset; + const int linesize = s->cur_pic.linesize[0]; + const int uvlinesize = s->cur_pic.linesize[1]; + const int block_size = 8; + + dct_linesize = linesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? linesize : linesize * block_size; + + if (!s->mb_intra) { + /* No MC, as that was already done otherwise */ + add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_linesize >>= 1; + dct_offset >>= 1; + add_dequant_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); + } + } + } else { + /* dct only in intra block */ + put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_offset >>=1; + dct_linesize >>=1; + put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); + } + } + } + } } static int get_sae(const uint8_t *src, int ref, int stride) diff --git a/libavcodec/mpv_reconstruct_mb_template.c b/libavcodec/mpv_reconstruct_mb_template.c deleted file mode 100644 index ae7a9e34ce..0000000000 --- a/libavcodec/mpv_reconstruct_mb_template.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * MPEG macroblock reconstruction - * Copyright (c) 2000,2001 Fabrice Bellard - * Copyright (c) 2002-2004 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define NOT_MPEG12_H261 0 -#define MAY_BE_MPEG12_H261 1 -#define DEFINITELY_MPEG12_H261 2 - -/* put block[] to dest[] */ -static inline void put_dct(MpegEncContext *s, - int16_t *block, int i, uint8_t *dest, int line_size, int qscale) -{ - s->dct_unquantize_intra(s, block, i, qscale); - s->idsp.idct_put(dest, line_size, block); -} - -static inline void add_dequant_dct(MpegEncContext *s, - int16_t *block, int i, uint8_t *dest, int line_size, int qscale) -{ - if (s->block_last_index[i] >= 0) { - s->dct_unquantize_inter(s, block, i, qscale); - - s->idsp.idct_add(dest, line_size, block); - } -} - -/* generic function called after a macroblock has been parsed by the - decoder or after it has been encoded by the encoder. - - Important variables used: - s->mb_intra : true if intra macroblock - s->mv_dir : motion vector direction - s->mv_type : motion vector type - s->mv : motion vector - s->interlaced_dct : true if interlaced dct used (mpeg2) - */ -static av_always_inline -void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], - int lowres_flag, int is_mpeg12) -{ -#define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) - const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; - - s->cur_pic.qscale_table[mb_xy] = s->qscale; - -#if IS_ENCODER - if ((s->avctx->flags & AV_CODEC_FLAG_PSNR) || s->frame_skip_threshold || s->frame_skip_factor || - !((s->intra_only || s->pict_type == AV_PICTURE_TYPE_B) && - s->avctx->mb_decision != FF_MB_DECISION_RD)) // FIXME precalc -#endif /* IS_ENCODER */ - { - uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; - int dct_linesize, dct_offset; - const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics - const int uvlinesize = s->cur_pic.linesize[1]; - const int block_size = lowres_flag ? 8 >> s->avctx->lowres : 8; - - /* avoid copy if macroblock skipped in last frame too */ - /* skip only during decoding as we might trash the buffers during encoding a bit */ - if (!IS_ENCODER) { - uint8_t *mbskip_ptr = &s->mbskip_table[mb_xy]; - - if (s->mb_skipped) { - s->mb_skipped = 0; - av_assert2(s->pict_type!=AV_PICTURE_TYPE_I); - *mbskip_ptr = 1; - } else if (!s->cur_pic.reference) { - *mbskip_ptr = 1; - } else{ - *mbskip_ptr = 0; /* not skipped */ - } - } - - dct_linesize = linesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? linesize : linesize * block_size; - - if (!s->mb_intra) { - /* motion handling */ - /* decoding or more than one mb_type (MC was already done otherwise) */ - -#if !IS_ENCODER - if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12_H261 && - s->avctx->active_thread_type & FF_THREAD_FRAME) { - if (s->mv_dir & MV_DIR_FORWARD) { - ff_thread_progress_await(&s->last_pic.ptr->progress, - lowest_referenced_row(s, 0)); - } - if (s->mv_dir & MV_DIR_BACKWARD) { - ff_thread_progress_await(&s->next_pic.ptr->progress, - lowest_referenced_row(s, 1)); - } - } - - if (lowres_flag) { - const h264_chroma_mc_func *op_pix = s->h264chroma.put_h264_chroma_pixels_tab; - - if (s->mv_dir & MV_DIR_FORWARD) { - MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix); - op_pix = s->h264chroma.avg_h264_chroma_pixels_tab; - } - if (s->mv_dir & MV_DIR_BACKWARD) { - MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix); - } - } else { - const op_pixels_func (*op_pix)[4]; - const qpel_mc_func (*op_qpix)[16]; - - if ((is_mpeg12 == DEFINITELY_MPEG12_H261 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) { - op_pix = s->hdsp.put_pixels_tab; - op_qpix = s->qdsp.put_qpel_pixels_tab; - } else { - op_pix = s->hdsp.put_no_rnd_pixels_tab; - op_qpix = s->qdsp.put_no_rnd_qpel_pixels_tab; - } - if (s->mv_dir & MV_DIR_FORWARD) { - ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix, op_qpix); - op_pix = s->hdsp.avg_pixels_tab; - op_qpix = s->qdsp.avg_qpel_pixels_tab; - } - if (s->mv_dir & MV_DIR_BACKWARD) { - ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix, op_qpix); - } - } - - /* skip dequant / idct if we are really late ;) */ - if (s->avctx->skip_idct) { - if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) - ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) - || s->avctx->skip_idct >= AVDISCARD_ALL) - return; - } - - /* add dct residue */ - if (!(IS_MPEG12_H261(s) || s->msmpeg4_version != MSMP4_UNUSED || - (s->codec_id == AV_CODEC_ID_MPEG4 && !s->mpeg_quant))) -#endif /* !IS_ENCODER */ - { - add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - av_assert2(IS_ENCODER || s->chroma_y_shift); - if (!IS_ENCODER || s->chroma_y_shift) { - add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } else { - dct_linesize >>= 1; - dct_offset >>= 1; - add_dequant_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); - } - } - } -#if !IS_ENCODER - else if (is_mpeg12 == DEFINITELY_MPEG12_H261 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) { - add_dct(s, block[0], 0, dest_y , dct_linesize); - add_dct(s, block[1], 1, dest_y + block_size, dct_linesize); - add_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize); - add_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) {//Chroma420 - add_dct(s, block[4], 4, dest_cb, uvlinesize); - add_dct(s, block[5], 5, dest_cr, uvlinesize); - } else { - //chroma422 - dct_linesize = uvlinesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; - - add_dct(s, block[4], 4, dest_cb, dct_linesize); - add_dct(s, block[5], 5, dest_cr, dct_linesize); - add_dct(s, block[6], 6, dest_cb+dct_offset, dct_linesize); - add_dct(s, block[7], 7, dest_cr+dct_offset, dct_linesize); - if (!s->chroma_x_shift) {//Chroma444 - add_dct(s, block[8], 8, dest_cb+block_size, dct_linesize); - add_dct(s, block[9], 9, dest_cr+block_size, dct_linesize); - add_dct(s, block[10], 10, dest_cb+block_size+dct_offset, dct_linesize); - add_dct(s, block[11], 11, dest_cr+block_size+dct_offset, dct_linesize); - } - } - } //fi gray - } else if (CONFIG_WMV2_DECODER) { - ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); - } -#endif /* !IS_ENCODER */ - } else { -#if !IS_ENCODER - /* Only MPEG-4 Simple Studio Profile is supported in > 8-bit mode. - TODO: Integrate 10-bit properly into mpegvideo.c so that ER works properly */ - if (is_mpeg12 != DEFINITELY_MPEG12_H261 && CONFIG_MPEG4_DECODER && - /* s->codec_id == AV_CODEC_ID_MPEG4 && */ - s->avctx->bits_per_raw_sample > 8) { - ff_mpeg4_decode_studio(s, dest_y, dest_cb, dest_cr, block_size, - uvlinesize, dct_linesize, dct_offset); - } else if (!IS_MPEG12_H261(s)) -#endif /* !IS_ENCODER */ - { - /* dct only in intra block */ - put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } else { - dct_offset >>=1; - dct_linesize >>=1; - put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); - put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); - put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); - } - } - } -#if !IS_ENCODER - else { - s->idsp.idct_put(dest_y, dct_linesize, block[0]); - s->idsp.idct_put(dest_y + block_size, dct_linesize, block[1]); - s->idsp.idct_put(dest_y + dct_offset, dct_linesize, block[2]); - s->idsp.idct_put(dest_y + dct_offset + block_size, dct_linesize, block[3]); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - s->idsp.idct_put(dest_cb, uvlinesize, block[4]); - s->idsp.idct_put(dest_cr, uvlinesize, block[5]); - } else { - dct_linesize = uvlinesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; - - s->idsp.idct_put(dest_cb, dct_linesize, block[4]); - s->idsp.idct_put(dest_cr, dct_linesize, block[5]); - s->idsp.idct_put(dest_cb + dct_offset, dct_linesize, block[6]); - s->idsp.idct_put(dest_cr + dct_offset, dct_linesize, block[7]); - if (!s->chroma_x_shift) { //Chroma444 - s->idsp.idct_put(dest_cb + block_size, dct_linesize, block[8]); - s->idsp.idct_put(dest_cr + block_size, dct_linesize, block[9]); - s->idsp.idct_put(dest_cb + block_size + dct_offset, dct_linesize, block[10]); - s->idsp.idct_put(dest_cr + block_size + dct_offset, dct_linesize, block[11]); - } - } - } //gray - } -#endif /* !IS_ENCODER */ - } - } -} - From patchwork Mon Jul 1 12:16:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50248 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739668vqv; Mon, 1 Jul 2024 05:17:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUh2UCmLg2mPIYxrr8kyrgfOv+FANguxA/Mue/vbDS+R9TSf+RQAtlblVSLKX5iSCIndJXc7IxUs40ek9TSwBsHUk3Dg1F46NmfLA== X-Google-Smtp-Source: AGHT+IFt2Uxa98tRsGSRFcDdf0b7A+tKFvCbTGYK+kqL7yyLVnehNgR7CDF37DTcynGDMi0b7Jlz X-Received: by 2002:a17:906:360f:b0:a72:7736:9e14 with SMTP id a640c23a62f3a-a75138b7d85mr415888466b.20.1719836277059; Mon, 01 Jul 2024 05:17:57 -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 a640c23a62f3a-a72aaf24420si344979866b.242.2024.07.01.05.17.56; Mon, 01 Jul 2024 05:17:57 -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=fSBMq8RS; 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 29A0668D7BC; Mon, 1 Jul 2024 15:17:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2029.outbound.protection.outlook.com [40.92.50.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4182168D7A6 for ; Mon, 1 Jul 2024 15:17:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AyW0Gta6lVveRwyltVIJMNcE9rfvM7rIk+rshuLYlaZtQcjVsDMSvn/enMsQcabNJphx1/4FQQcdUfeDo8B7HAbUzy1/jUjq0rZDhdoiCKnG4FA5rUU8tmv7GAXPqBQ1bRwU2VTEnf2c/hCZUTyHfXty/1CJM900a/W/RHS9nrZ4mX+z/HyrDnbsU8Rl74oXSPLJIwIUfNnCndcRhrJMz/Qk6KImpyd+mEljZYDAzP7bQ/BO32FmcbqIuiPFsQAmiv153oXXhxYtphZUhVaZh6AZy9AynSpdCyEpxcpHq8WQIccN3ojvSgbta0OPIw3tdDZxCDqfz1JAWe8fbymryQ== 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=TL5hEKVTfaMWvUhlCc8A+fgMxAUF9xISIhAmw/uwNnE=; b=GhF3rm6kraVu3YFNtW3NpaBnZQtXMkKpGQfXxqmSONWL63qH2CGofAMzWe2TIGmKakpD2rb71R3gNahxnGeUSLnqckuYYK3rOqKMszg1qnyQyFqSDmBgvD+vokpWDmvkbdkKNc6NCGiPwU0CX7afgrTCOZbf+QISGS1XFkrWfeA9Nuqt5gf7OmfEUhMWGjXLjw7N7VM1M/Z8gPxTOzYE5KtIfDhSV49npadFUP6woGubfVwhBAbHJHlee+ivr5cf+jFAhFBPnZpRl78y3Bu0fZMHjk1NGsi7EgXH9T3cLfS0yxEirtD3cssL1UtzliItOAYrovbH/L9US4Yc6Vol4A== 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=TL5hEKVTfaMWvUhlCc8A+fgMxAUF9xISIhAmw/uwNnE=; b=fSBMq8RSsORlRV4YOwCHcVxb9K7G8NoOaca2hsWubrdzmLOSYS7hPjIbMhElFhC0gzdUCaDvz4s5tX4Wl8lza8OpsxV1/cTMxzAQHSVsJmasedmipDtdMm2vvIF5YOihAU7FnEpsv+YIeJVa+NQ/RtHUJamgAr7qkYO6++M/fIgdKvhzL2DFD0acuC/vDNSsyGeqXYUTf9qz4LwO14JOeBoGo9n9K7AW5KwVW22Hhr01nY220jAehwMWcvR5iW9rDfdpTnem9XHloyOCmeqkB6nUWYv3iBpEsHp8duI8I21F0x+ldsSquwyae2VfZ6/0QUDcHrbhBNGJyjZ9oi3mNQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:26 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:04 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [T/DGGL1huCmhTEO+09/Ga7rgxRsogCeTp2ARZQRf2mk=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 2e75b275-2226-4d3e-b02e-08dc99c7c4cd X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: Kh4J9LlUK6A6Ma99fb0BKuTBL52Mk5R8G89vEBDZ7KRG2ctgVyRFLHb/n432lWNoXH320X1a2XtMfEB7Hq8YtXEsY1FLqptdpFl5+3ADdrFUFI0oN6KDYBgeWs3uSgz0EaOOVtAbze2ckb/MMMe8mbAPhUE8mQlzriNM//UlFwfaANLod1JFD5UoWYdvx7JBXScmRI1lX1C3bhA4q3+/FiGLh6qR8mBdPUh3Dl6frKZACYoaL1HFzFnXgA9PVJ2sWDHMsbkRYkeRoRzYwtTXbpVGUtesxsTtXAfxG4zTvHvZ6Rbq9W2rgXOZ3UM4HESi2Xu9wHiFsuupLOBrdSuCjNxVrmFJL1Ur/gN2ym1XPyqy2C1SCzRAmVNBknaPM4Jkely7a4Dr8K8xdjTFa1yGf5eOKouthkpN/vssXp8jAIYXJfa9+dCz9VnfYub3lYTv0CuHslm4J+9yAoELq74NsgsTKYdC72MB1VNwpALP0Web7L/78soW/IvrHigDY3F6TRcE0WZzbqyLdDZN1QjtmHNTnKH+rxAAr5rqp8SnTtX1we3S3rjHt4vYWWI1naOYKzCtwcnvjXdJkFjHOQbCfpYIkRGbhDnfoldDG/R6w5inLX9R/Hop+tiUKbLDOpeJNt2zJmvFavwcOEP/BtT1jw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5g18ZC5fdvROqdBdCpTzUny/0hw8tCPPMJ8fr1Ec1hJAiBiBJcEtVkkuyUq4Qfm0v0WFkR1bqlAdWvO9SfawPf9XcKcEnR3jvQBVGdMAdVGfrlk0/H7SuS/RSi/AAriKMASDzMYt0MF35SIudKa4iCXD3nsEEqfUeHb0BpODmSQmVddPDdwDwoNZFy+jnuT3DvMWN/3k97zMnfpZ1g+50PLg2x8hklvjcMSel+T2uHvAdclcgCSpAoGRuOWCPIiKDLp9jQ3gOEDC4jy8vrjxgUwq4kRS61RHQSARsbz/CcQ0FHmzuEiFf73xrCGQf+aerCAx3GaI1JcFOmt5+H2WeWvG/TSt6jWihPZ+EqfxB75LvNmty3Id2By/APF6HFN5162bIrnbgFaisLzHFNwRm/gSp+ZUWlSxe+0i9ju+fJPQnMfd5rabdQ74eW8Y9NhA8a46Zr/g4AOksxGqv+Huv3ELbPrnPl0vtvhK4ah5zORg07bnZoZftqavBpGKBS8VTmh1okMxwnpiPtczQquim4xaZiFuGFApkZn3/VAo0Q25huBnnVqATGMCOdMz7dmDGwud/dujpgYRU4876C8roOdvdeNwbbKQV7bJNhO36sUVXd+kqP7NSc6cJYY5i5XW/22a7nrsCRRYQazUkbz8gujo3udomKexzr7F/P2M+khfXLPUlGiaAFRpXo6UpLcMk5DXQySkoRFy0pemlZsodK9qK6t9n3HoTknt2i3cKfEt1G/uoFUiExAV9oX1aqo683xTDhtML0UVrm3yOI6oFqF6Ot1vrukir/cWOEdbyJLoB76HRj34iwZQwAJNk5SKvWP6ja1fQ4lO7GBZCNEWQrVhHpsjwQTbvVurDy4HV8+kJs+dkJWJ/HYAJ2WI5YCzv9qgTBHVeaq+9C3Lqu+SOo+NlSBP2k2858F1cz8WqaIUNxt17DcbfkMBmcNU7PTfDclv5DxpivPqkv3Io8hRsPwrXpYA+P7a9kKDZjdCOZsaAI1lsGOlttUJsthgunaDOEVwn8Blu4durk0/96FmYEkWkMPlbaTwtsmomrw34/ZBFtx96zVyZ1BVizUjrMAy/0L4qhghAxWgdYlulGsTzSB/mtSj6LWKBdrCj7B3bw3L1z8yZqnmMeWgUWppnS+UmFCQzgvudh/KKM1pyKNnbx8CcDQCLXyeu+PXl1Nb0QXzNhKSAJGtbyvZMisiz7omQ4F5zgWJmbZJp2ou1EBFWh2Oroy1wQlxh6Fm8GGVI1cVCoA3odNSkXIr9w0ykdtYnpZEsFI37D3VZ2YP/Gl6Ww== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2e75b275-2226-4d3e-b02e-08dc99c7c4cd X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:26.1111 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 07/13] avcodec/mpegvideo_{dec, enc}: Reindent after the previous commit 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: Y2M2BpKU+PrS Signed-off-by: Andreas Rheinhardt --- Could be squashed into the preceding commit. libavcodec/mpegvideo_dec.c | 318 ++++++++++++++++++------------------- libavcodec/mpegvideo_enc.c | 70 ++++---- 2 files changed, 193 insertions(+), 195 deletions(-) diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index 2222d50283..78fa10c11d 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -940,167 +940,165 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], int lowres_flag, int is_mpeg12) { #define IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) - { - uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; - int dct_linesize, dct_offset; - const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics - const int uvlinesize = s->cur_pic.linesize[1]; - const int block_size = lowres_flag ? 8 >> s->avctx->lowres : 8; - - dct_linesize = linesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? linesize : linesize * block_size; - - if (!s->mb_intra) { - /* motion handling */ - if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12_H261 && - s->avctx->active_thread_type & FF_THREAD_FRAME) { - if (s->mv_dir & MV_DIR_FORWARD) { - ff_thread_progress_await(&s->last_pic.ptr->progress, - lowest_referenced_row(s, 0)); - } - if (s->mv_dir & MV_DIR_BACKWARD) { - ff_thread_progress_await(&s->next_pic.ptr->progress, - lowest_referenced_row(s, 1)); - } + uint8_t *dest_y = s->dest[0], *dest_cb = s->dest[1], *dest_cr = s->dest[2]; + int dct_linesize, dct_offset; + const int linesize = s->cur_pic.linesize[0]; //not s->linesize as this would be wrong for field pics + const int uvlinesize = s->cur_pic.linesize[1]; + const int block_size = lowres_flag ? 8 >> s->avctx->lowres : 8; + + dct_linesize = linesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? linesize : linesize * block_size; + + if (!s->mb_intra) { + /* motion handling */ + if (HAVE_THREADS && is_mpeg12 != DEFINITELY_MPEG12_H261 && + s->avctx->active_thread_type & FF_THREAD_FRAME) { + if (s->mv_dir & MV_DIR_FORWARD) { + ff_thread_progress_await(&s->last_pic.ptr->progress, + lowest_referenced_row(s, 0)); + } + if (s->mv_dir & MV_DIR_BACKWARD) { + ff_thread_progress_await(&s->next_pic.ptr->progress, + lowest_referenced_row(s, 1)); } + } - if (lowres_flag) { - const h264_chroma_mc_func *op_pix = s->h264chroma.put_h264_chroma_pixels_tab; + if (lowres_flag) { + const h264_chroma_mc_func *op_pix = s->h264chroma.put_h264_chroma_pixels_tab; - if (s->mv_dir & MV_DIR_FORWARD) { - MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix); - op_pix = s->h264chroma.avg_h264_chroma_pixels_tab; - } - if (s->mv_dir & MV_DIR_BACKWARD) { - MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix); - } - } else { - const op_pixels_func (*op_pix)[4]; - const qpel_mc_func (*op_qpix)[16]; - - if ((is_mpeg12 == DEFINITELY_MPEG12_H261 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) { - op_pix = s->hdsp.put_pixels_tab; - op_qpix = s->qdsp.put_qpel_pixels_tab; - } else { - op_pix = s->hdsp.put_no_rnd_pixels_tab; - op_qpix = s->qdsp.put_no_rnd_qpel_pixels_tab; - } - if (s->mv_dir & MV_DIR_FORWARD) { - ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix, op_qpix); - op_pix = s->hdsp.avg_pixels_tab; - op_qpix = s->qdsp.avg_qpel_pixels_tab; - } - if (s->mv_dir & MV_DIR_BACKWARD) { - ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix, op_qpix); - } + if (s->mv_dir & MV_DIR_FORWARD) { + MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix); + op_pix = s->h264chroma.avg_h264_chroma_pixels_tab; + } + if (s->mv_dir & MV_DIR_BACKWARD) { + MPV_motion_lowres(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix); } + } else { + const op_pixels_func (*op_pix)[4]; + const qpel_mc_func (*op_qpix)[16]; - /* skip dequant / idct if we are really late ;) */ - if (s->avctx->skip_idct) { - if( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) - ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) - || s->avctx->skip_idct >= AVDISCARD_ALL) - return; + if ((is_mpeg12 == DEFINITELY_MPEG12_H261 || !s->no_rounding) || s->pict_type == AV_PICTURE_TYPE_B) { + op_pix = s->hdsp.put_pixels_tab; + op_qpix = s->qdsp.put_qpel_pixels_tab; + } else { + op_pix = s->hdsp.put_no_rnd_pixels_tab; + op_qpix = s->qdsp.put_no_rnd_qpel_pixels_tab; + } + if (s->mv_dir & MV_DIR_FORWARD) { + ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 0, s->last_pic.data, op_pix, op_qpix); + op_pix = s->hdsp.avg_pixels_tab; + op_qpix = s->qdsp.avg_qpel_pixels_tab; + } + if (s->mv_dir & MV_DIR_BACKWARD) { + ff_mpv_motion(s, dest_y, dest_cb, dest_cr, 1, s->next_pic.data, op_pix, op_qpix); } + } - /* add dct residue */ - if (!(IS_MPEG12_H261(s) || s->msmpeg4_version != MSMP4_UNUSED || - (s->codec_id == AV_CODEC_ID_MPEG4 && !s->mpeg_quant))) { - add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - av_assert2(s->chroma_y_shift); - add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } - } else if (is_mpeg12 == DEFINITELY_MPEG12_H261 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) { - add_dct(s, block[0], 0, dest_y , dct_linesize); - add_dct(s, block[1], 1, dest_y + block_size, dct_linesize); - add_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize); - add_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) {//Chroma420 - add_dct(s, block[4], 4, dest_cb, uvlinesize); - add_dct(s, block[5], 5, dest_cr, uvlinesize); - } else { - //chroma422 - dct_linesize = uvlinesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; - - add_dct(s, block[4], 4, dest_cb, dct_linesize); - add_dct(s, block[5], 5, dest_cr, dct_linesize); - add_dct(s, block[6], 6, dest_cb+dct_offset, dct_linesize); - add_dct(s, block[7], 7, dest_cr+dct_offset, dct_linesize); - if (!s->chroma_x_shift) {//Chroma444 - add_dct(s, block[8], 8, dest_cb+block_size, dct_linesize); - add_dct(s, block[9], 9, dest_cr+block_size, dct_linesize); - add_dct(s, block[10], 10, dest_cb+block_size+dct_offset, dct_linesize); - add_dct(s, block[11], 11, dest_cr+block_size+dct_offset, dct_linesize); - } + /* skip dequant / idct if we are really late ;) */ + if (s->avctx->skip_idct) { + if ( (s->avctx->skip_idct >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) + ||(s->avctx->skip_idct >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) + || s->avctx->skip_idct >= AVDISCARD_ALL) + return; + } + + /* add dct residue */ + if (!(IS_MPEG12_H261(s) || s->msmpeg4_version != MSMP4_UNUSED || + (s->codec_id == AV_CODEC_ID_MPEG4 && !s->mpeg_quant))) { + add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + av_assert2(s->chroma_y_shift); + add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } + } else if (is_mpeg12 == DEFINITELY_MPEG12_H261 || lowres_flag || (s->codec_id != AV_CODEC_ID_WMV2)) { + add_dct(s, block[0], 0, dest_y , dct_linesize); + add_dct(s, block[1], 1, dest_y + block_size, dct_linesize); + add_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize); + add_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) {//Chroma420 + add_dct(s, block[4], 4, dest_cb, uvlinesize); + add_dct(s, block[5], 5, dest_cr, uvlinesize); + } else { + //chroma422 + dct_linesize = uvlinesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; + + add_dct(s, block[4], 4, dest_cb, dct_linesize); + add_dct(s, block[5], 5, dest_cr, dct_linesize); + add_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize); + add_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize); + if (!s->chroma_x_shift) {//Chroma444 + add_dct(s, block[8], 8, dest_cb + block_size, dct_linesize); + add_dct(s, block[9], 9, dest_cr + block_size, dct_linesize); + add_dct(s, block[10], 10, dest_cb + block_size + dct_offset, dct_linesize); + add_dct(s, block[11], 11, dest_cr + block_size + dct_offset, dct_linesize); } - } //fi gray - } else if (CONFIG_WMV2_DECODER) { - ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); + } + } //fi gray + } else if (CONFIG_WMV2_DECODER) { + ff_wmv2_add_mb(s, block, dest_y, dest_cb, dest_cr); + } + } else { + /* Only MPEG-4 Simple Studio Profile is supported in > 8-bit mode. + TODO: Integrate 10-bit properly into mpegvideo.c so that ER works properly */ + if (is_mpeg12 != DEFINITELY_MPEG12_H261 && CONFIG_MPEG4_DECODER && + /* s->codec_id == AV_CODEC_ID_MPEG4 && */ + s->avctx->bits_per_raw_sample > 8) { + ff_mpeg4_decode_studio(s, dest_y, dest_cb, dest_cr, block_size, + uvlinesize, dct_linesize, dct_offset); + } else if (!IS_MPEG12_H261(s)) { + /* dct only in intra block */ + put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_offset >>= 1; + dct_linesize >>= 1; + put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); + } } } else { - /* Only MPEG-4 Simple Studio Profile is supported in > 8-bit mode. - TODO: Integrate 10-bit properly into mpegvideo.c so that ER works properly */ - if (is_mpeg12 != DEFINITELY_MPEG12_H261 && CONFIG_MPEG4_DECODER && - /* s->codec_id == AV_CODEC_ID_MPEG4 && */ - s->avctx->bits_per_raw_sample > 8) { - ff_mpeg4_decode_studio(s, dest_y, dest_cb, dest_cr, block_size, - uvlinesize, dct_linesize, dct_offset); - } else if (!IS_MPEG12_H261(s)) { - /* dct only in intra block */ - put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } else { - dct_offset >>=1; - dct_linesize >>=1; - put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); - put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); - put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); + s->idsp.idct_put(dest_y, dct_linesize, block[0]); + s->idsp.idct_put(dest_y + block_size, dct_linesize, block[1]); + s->idsp.idct_put(dest_y + dct_offset, dct_linesize, block[2]); + s->idsp.idct_put(dest_y + dct_offset + block_size, dct_linesize, block[3]); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + s->idsp.idct_put(dest_cb, uvlinesize, block[4]); + s->idsp.idct_put(dest_cr, uvlinesize, block[5]); + } else { + dct_linesize = uvlinesize << s->interlaced_dct; + dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; + + s->idsp.idct_put(dest_cb, dct_linesize, block[4]); + s->idsp.idct_put(dest_cr, dct_linesize, block[5]); + s->idsp.idct_put(dest_cb + dct_offset, dct_linesize, block[6]); + s->idsp.idct_put(dest_cr + dct_offset, dct_linesize, block[7]); + if (!s->chroma_x_shift) { //Chroma444 + s->idsp.idct_put(dest_cb + block_size, dct_linesize, block[8]); + s->idsp.idct_put(dest_cr + block_size, dct_linesize, block[9]); + s->idsp.idct_put(dest_cb + block_size + dct_offset, dct_linesize, block[10]); + s->idsp.idct_put(dest_cr + block_size + dct_offset, dct_linesize, block[11]); } } - } else { - s->idsp.idct_put(dest_y, dct_linesize, block[0]); - s->idsp.idct_put(dest_y + block_size, dct_linesize, block[1]); - s->idsp.idct_put(dest_y + dct_offset, dct_linesize, block[2]); - s->idsp.idct_put(dest_y + dct_offset + block_size, dct_linesize, block[3]); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - s->idsp.idct_put(dest_cb, uvlinesize, block[4]); - s->idsp.idct_put(dest_cr, uvlinesize, block[5]); - } else { - dct_linesize = uvlinesize << s->interlaced_dct; - dct_offset = s->interlaced_dct ? uvlinesize : uvlinesize*block_size; - - s->idsp.idct_put(dest_cb, dct_linesize, block[4]); - s->idsp.idct_put(dest_cr, dct_linesize, block[5]); - s->idsp.idct_put(dest_cb + dct_offset, dct_linesize, block[6]); - s->idsp.idct_put(dest_cr + dct_offset, dct_linesize, block[7]); - if (!s->chroma_x_shift) { //Chroma444 - s->idsp.idct_put(dest_cb + block_size, dct_linesize, block[8]); - s->idsp.idct_put(dest_cr + block_size, dct_linesize, block[9]); - s->idsp.idct_put(dest_cb + block_size + dct_offset, dct_linesize, block[10]); - s->idsp.idct_put(dest_cr + block_size + dct_offset, dct_linesize, block[11]); - } - } - } //gray - } + } //gray } } } @@ -1108,20 +1106,20 @@ void mpv_reconstruct_mb_internal(MpegEncContext *s, int16_t block[12][64], void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) { const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; - uint8_t *mbskip_ptr = &s->mbskip_table[mb_xy]; + uint8_t *mbskip_ptr = &s->mbskip_table[mb_xy]; s->cur_pic.qscale_table[mb_xy] = s->qscale; - /* avoid copy if macroblock skipped in last frame too */ - if (s->mb_skipped) { - s->mb_skipped = 0; - av_assert2(s->pict_type!=AV_PICTURE_TYPE_I); - *mbskip_ptr = 1; - } else if (!s->cur_pic.reference) { - *mbskip_ptr = 1; - } else{ - *mbskip_ptr = 0; /* not skipped */ - } + /* avoid copy if macroblock skipped in last frame too */ + if (s->mb_skipped) { + s->mb_skipped = 0; + av_assert2(s->pict_type != AV_PICTURE_TYPE_I); + *mbskip_ptr = 1; + } else if (!s->cur_pic.reference) { + *mbskip_ptr = 1; + } else{ + *mbskip_ptr = 0; /* not skipped */ + } if (s->avctx->debug & FF_DEBUG_DCT_COEFF) { /* print DCT coefficients */ diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 774d16edad..99e31be463 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1135,44 +1135,44 @@ static void mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) if (!s->mb_intra) { /* No MC, as that was already done otherwise */ - add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } else { - dct_linesize >>= 1; - dct_offset >>= 1; - add_dequant_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); - add_dequant_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); - } + add_dequant_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + add_dequant_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + add_dequant_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + add_dequant_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + add_dequant_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_linesize >>= 1; + dct_offset >>= 1; + add_dequant_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + add_dequant_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); } + } } else { - /* dct only in intra block */ - put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); - put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); - put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); - put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); - - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - if (s->chroma_y_shift) { - put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); - } else { - dct_offset >>=1; - dct_linesize >>=1; - put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); - put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); - put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); - put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); - } + /* dct only in intra block */ + put_dct(s, block[0], 0, dest_y , dct_linesize, s->qscale); + put_dct(s, block[1], 1, dest_y + block_size, dct_linesize, s->qscale); + put_dct(s, block[2], 2, dest_y + dct_offset , dct_linesize, s->qscale); + put_dct(s, block[3], 3, dest_y + dct_offset + block_size, dct_linesize, s->qscale); + + if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { + if (s->chroma_y_shift) { + put_dct(s, block[4], 4, dest_cb, uvlinesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, uvlinesize, s->chroma_qscale); + } else { + dct_offset >>= 1; + dct_linesize >>= 1; + put_dct(s, block[4], 4, dest_cb, dct_linesize, s->chroma_qscale); + put_dct(s, block[5], 5, dest_cr, dct_linesize, s->chroma_qscale); + put_dct(s, block[6], 6, dest_cb + dct_offset, dct_linesize, s->chroma_qscale); + put_dct(s, block[7], 7, dest_cr + dct_offset, dct_linesize, s->chroma_qscale); } + } } } } From patchwork Mon Jul 1 12:16:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50249 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1739757vqv; Mon, 1 Jul 2024 05:18:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXbX62ZywvLMd7aeNe57twM9rv1ljcP4INlikt78xSlvLu8L56h4qJIA3bygJf3uzqzejvYt2JBK1wedCQx7m4zbU2oZ0DRp2uq2w== X-Google-Smtp-Source: AGHT+IE3l/qyT8IM5eDKLxVlZ90dmiQAZ11zD19XZ/eBQdM6uYbZPdDahHwmG3AK/ZIDao7rx1G2 X-Received: by 2002:a05:6402:35d2:b0:57c:671d:8455 with SMTP id 4fb4d7f45d1cf-5879f2b807fmr5471779a12.14.1719836286772; Mon, 01 Jul 2024 05:18:06 -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 a640c23a62f3a-a72ab07530csi360541466b.538.2024.07.01.05.18.06; Mon, 01 Jul 2024 05:18:06 -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=Tk4xI4cD; 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 28BB468D7D2; Mon, 1 Jul 2024 15:17:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2029.outbound.protection.outlook.com [40.92.50.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6EC7A68D785 for ; Mon, 1 Jul 2024 15:17:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YkwxEFV8rERGTcEWS1hTn6YrxH2ZgmDgBxgkTgs1u5DEjFUvsRowKQ5KV3Ujp3xGSC0u64y5TftsHR4pa4F/mYtH1zbpXX1anTNP3JB5WeWb9MUIB40KgTaiA/MJOJD+5pzBnusMoWpV1ezXV9V7jo72JTUvfrx7T1x+GRYebmMUl01zZ3JlVox+0e6bK+OqVfVQSwh68yy1EcFAdhNT55k2Y0iPZqFOPv4FH2tO+Gj9lp9zoTuvfwIhubR08d2QPcYNXXEyPksyeTNdceUA4dTxJY1vdFrN2OMuo3j3hfAA+IMgnrA2yzOs5cw/0jrbUl3YH5cNLzjpMBlyDSTPCQ== 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=mlvFGV8lewBnu+3LGn5WBSsbl64Foo9NK37AXtcxbr8=; b=YSz6boqEDNnjfr+834C+ApThLfH23X8wDnyRj0TY12Hp1f37gOZyLI5mDj/9TkXCzLqdJ+2h8EkPwVZJfaNrLpHCYprmWvQiZOZgxLqHYfA4mlVcQwtQQv2DW5F5ZhfRzTPFnfaCFSNVPpkprXd93Ylik/uioz9lCaZ/tzOdb2uQKb9udheXpBwMRg0vWVVlHIohg5HJbLz2kO03k0N23asPQX3a5CQCqMlZp1BolISLVbF0/pdcihlst2CKGiv9wgY/q0rjhtHN5UyO9j2YNAqkDOdC2ASeaE1VPtKw/EmHNMtW5I3lxia25CbGxzqUIogxkqzMqlDtg8OGL0sHOQ== 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=mlvFGV8lewBnu+3LGn5WBSsbl64Foo9NK37AXtcxbr8=; b=Tk4xI4cDiFyPV2psT7ZGACYQFI44mJ/nQINL7G+E0cYp7Hump75roDpcFiv8QG+Vcb1ZLmHVa8/cX0VTw4Nley08AnYvlHbEzWJJWtaILeJ0d6LDFcKHRBHKWIWPoTScXpNQlhWJNaE/MO8E4b730OblAVstdv+UWPo+tOjSSJRjEgHlvwthx4ULGmeVyvywaTv0/vQItQk2SlmKP7Yme1TnvC2uyDFuqEo9atyUr9nYTj5u2ovwqqMax8c0dSvIqw8SZHeaKnpqJY0OJHrLb0ppkjYCNVsup9YDzD1UjacUsW94yIKFmdUzP7eDUFhRkk6xmhuTi4JXsUtZR1nfBQ== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:27 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:05 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [17A45VaqP/pxYeS56zLmr2d+4XSdvMkj7hGNAzql4Bw=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 78a0bb76-1a40-40e1-0d5b-08dc99c7c59b X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: imr9GJ4KLPdI705pH8iyJIWpBtLMSjOm23KcMqO7b0roco4JVUFk72SchaUgfu/XS2i/zbDKFHTqrDUTN/4NMu6YtxQT+UU66WQIoHPjFTf7zjMeQWHCOTHkIJbPuAQctuEOgLteHdvq5mDhryKZF2hhZyh5s1SW2Kk2ERUM/3iMDEaCZGD5/H7SXwtPDPDEAAAr3p8gL8D2AKuNzsgxAC0dqytU2QtPncdVBhg3l1g0hHxLvZNAh880Ew0D3mjIScbRfLAOkDgx8AiNqUdP80KGelv30F/HoWOCuSxbRrcx9QjnjNYKcNaa+DjlhvDOsBWWk0RwteNUDFbU1eZeuXFM1YJMVDz64/q3qADeV3X6AdSVoIhHXePYPi0PpoU7sZsJdBiRGxYOfi6IHEkDZhXrobDf6XC4xwnG1jHV76OEauqD/z+XJgPhmTOnpLQ8P98qsf5YRdB6xkI/bA6UeJ2t66jqKeqo706LF0pt+/39SVutooWvL1dc9GZh74tpEnkO7XM/hfuAeCCjLiIJNhR6H2+3p5pXYVXBe/8g2vKlR8HbSJaJZ4WyWW5rFE+9CVGDYdBMFA2JLRZRFRrJM5koS/zA72Q9WwdTtnTbjb0GLl16Q/tqsWNh8cLD5HKS8u2jio+jL6GAoaeMjgZtJA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: jjEP0N3hNgYVLkYbLw36n0VHbQ/8nDAUV3A59vHJg6J+wS7DXJTT8qWPM6OS+lbIn2Yt94G29gKqwJzDAGK1eNF4L0MVhs6CxkOHXyoc7Guuhl91dF7K6e3FKTvw3Nz3I6amJ+Ubv3pzuxdtRkbM+fcoIfaaAJyG4Kgf1risZ3qXNUUiHNCi3/S2w21yw1BzKaBIsPCeLNZ1xUvvQlZfQGKaEENs3fMqt3S+WOo3LZ63YvfB5O+4xsFGP4rJ0inH3BCiu1yB5Cv4yHuPaSamW2AfKAS2v8BUZB+BOcfqD82MXwv8E4WJ0ZDx7gSsu87bau2+MfgVYviFgAYjCt/b6gjMkjj3SdT/bD6Wtnb2x/ZNK6jrVr1PiK/m7reAUTwEF4y/RzHXj+V/k8uTd2mcZoGx3QoiXabAji2CZny4EMUWHrXFQYeQwbQAfbgXGbSEurGPtvWGUoi8yz/ZaLrt6zcs3DcMrO4Lb2j7hQ5AMCKrAvHlSJb0Ou+YhU+waL584cIhdTcGI/eSlBA0aCvXEzgGSAeZwz02FOP7bjofpsSr0Wyluy4Dr8Acuzu/FmKltNAC/gTERnjpTTTzfka7ZTJyKTmM6Chxftxxl02Hr+up8M/f6iVRH8JDPfNOgyo9HIxOPUgmokDEYGXIlyCr/l4sarZaGCLfZIrQLEDKX5Ij3EKVo2wuiuEluQWIhXpMHwznsnxFUt8SVIkm4+d6I+K+9ddcCUR2i3ttBxQpQIjyv/UZmNhjuzcT5VVoWS6ZhquyAe0m3d+u/QRDAPr8Gzqqj64mVsNa07NfodFDkxIU/CZPXsQK35JJVpSRhmk3Cizqv0RZgDNm/xnBTMbOknohxGP9ut4H5wCOZMjdIHMtEsT5FqINVJ1b4sdTX5Sfd1Iuv63iGcQRkWIfyO/IATKwOxieorZbwTgqvp/nck80semwwbFQnVbwCM/FutAh5tavQQ25oyW4eF6YNtyKCMXHiNHkL3MMAnOnK6uMzrgqAOroJiN/aYPVHXcoewPZ3PqMJ5Z6a5jddkVWfJf0bK+gkhIMVVKCxWVX36AXM0TAAofKGDibcCjeR4Nr+EDHtuHfyLHgLUfdCqKBm5wduEtfetg4zbvblS+G9r+kP5zphgFDv4lpdeOx4SE8ZOXeV0Uc/vjKw3gpjzr2ytvA9EzhLJf8teuhoEZciSiPM0Q+21HfpgLCuxZD64FXCeVpS5PWTrUbs/WGSnqsbgD8s2OvSMlZx8EDTUS4y+vKnmbA3sXl0hYtTRk2jMS5yDPDdBJAHhSm4QtcjH0csoTBKg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78a0bb76-1a40-40e1-0d5b-08dc99c7c59b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:27.4335 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 08/13] avcodec/mpegvideo_enc: Don't set qscale_table value prematurely 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: vct0c8t8CVTH When there are multiple candidates for macroblock type, the encoder tries them all. In order to do so, it copies the keeps several sets of states containing the variables that get modified when encoding the macroblock and in the end uses the best of these. Yet one variable was set, but not included in this state: The current macroblock's qscale value in the current picture's qscale_table. This may currently be set multiple times in mpv_reconstruct_mb(), yet it is read when adaptive_quant is true. Currently, the value read can be the value set by the last attempt to write the current macroblock and not the initial value. Fix this by only setting the qscale_table value in one place outside of mpv_reconstruct_mb() (where it does not belong at all). Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 8 ++----- tests/ref/seek/vsynth_lena-mpeg4-adap | 28 ++++++++++++------------- tests/ref/vsynth/vsynth1-mpeg4-adap | 8 +++---- tests/ref/vsynth/vsynth2-mpeg4-adap | 8 +++---- tests/ref/vsynth/vsynth3-mpeg4-adap | 8 +++---- tests/ref/vsynth/vsynth_lena-mpeg4-adap | 8 +++---- 6 files changed, 32 insertions(+), 36 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 99e31be463..48d26f37cd 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1105,10 +1105,6 @@ static inline void add_dequant_dct(MpegEncContext *s, */ static void mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]) { - const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; - - s->cur_pic.qscale_table[mb_xy] = s->qscale; - if (s->avctx->debug & FF_DEBUG_DCT_COEFF) { /* print DCT coefficients */ av_log(s->avctx, AV_LOG_DEBUG, "DCT coeffs of MB at %dx%d:\n", s->mb_x, s->mb_y); @@ -3365,8 +3361,6 @@ static int encode_thread(AVCodecContext *c, void *arg){ } } - s->cur_pic.qscale_table[xy] = best_s.qscale; - copy_context_after_encode(s, &best_s); pb_bits_count= put_bits_count(&s->pb); @@ -3521,6 +3515,8 @@ static int encode_thread(AVCodecContext *c, void *arg){ mpv_reconstruct_mb(s, s->block); } + s->cur_pic.qscale_table[xy] = s->qscale; + /* clean the MV table in IPS frames for direct mode in B-frames */ if(s->mb_intra /* && I,P,S_TYPE */){ s->p_mv_table[xy][0]=0; diff --git a/tests/ref/seek/vsynth_lena-mpeg4-adap b/tests/ref/seek/vsynth_lena-mpeg4-adap index fe841ef973..7777491651 100644 --- a/tests/ref/seek/vsynth_lena-mpeg4-adap +++ b/tests/ref/seek/vsynth_lena-mpeg4-adap @@ -2,45 +2,45 @@ ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st:-1 flags:0 ts:-1.000000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161318 size: 19176 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161352 size: 19191 ret: 0 st: 0 flags:0 ts: 0.800000 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75056 size: 19178 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75104 size: 19178 ret:-1 st: 0 flags:1 ts:-0.320000 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.360000 pts: NOPTS pos: 118696 size: 20018 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 118586 size: 20060 ret: 0 st: 0 flags:0 ts: 0.360000 -ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 35800 size: 17261 +ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 35840 size: 17261 ret:-1 st: 0 flags:1 ts:-0.760000 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.880000 pts: NOPTS pos: 75056 size: 19178 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75104 size: 19178 ret: 0 st: 0 flags:0 ts:-0.040000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st: 0 flags:1 ts: 2.840000 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161318 size: 19176 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161352 size: 19191 ret: 0 st:-1 flags:0 ts: 1.730004 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161318 size: 19176 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161352 size: 19191 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 35800 size: 17261 +ret: 0 st: 0 flags:1 dts: 0.400000 pts: NOPTS pos: 35840 size: 17261 ret: 0 st: 0 flags:0 ts:-0.480000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st: 0 flags:1 ts: 2.400000 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161318 size: 19176 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161352 size: 19191 ret: 0 st:-1 flags:0 ts: 1.306672 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 118696 size: 20018 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 118586 size: 20060 ret: 0 st:-1 flags:1 ts: 0.200839 ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st: 0 flags:0 ts:-0.920000 ret: 0 st: 0 flags:1 dts: 0.000000 pts: NOPTS pos: 5652 size: 6855 ret: 0 st: 0 flags:1 ts: 2.000000 -ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161318 size: 19176 +ret: 0 st: 0 flags:1 dts: 1.840000 pts: NOPTS pos: 161352 size: 19191 ret: 0 st:-1 flags:0 ts: 0.883340 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75056 size: 19178 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75104 size: 19178 ret:-1 st:-1 flags:1 ts:-0.222493 ret:-1 st: 0 flags:0 ts: 2.680000 ret: 0 st: 0 flags:1 ts: 1.560000 -ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 118696 size: 20018 +ret: 0 st: 0 flags:1 dts: 1.360000 pts: NOPTS pos: 118586 size: 20060 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75056 size: 19178 +ret: 0 st: 0 flags:1 dts: 0.880000 pts: NOPTS pos: 75104 size: 19178 ret:-1 st:-1 flags:1 ts:-0.645825 diff --git a/tests/ref/vsynth/vsynth1-mpeg4-adap b/tests/ref/vsynth/vsynth1-mpeg4-adap index 67705f0f43..d3ad12e921 100644 --- a/tests/ref/vsynth/vsynth1-mpeg4-adap +++ b/tests/ref/vsynth/vsynth1-mpeg4-adap @@ -1,4 +1,4 @@ -0f1cbbdc3f9b91f2d9ac3d1fc2cf7d4e *tests/data/fate/vsynth1-mpeg4-adap.avi -325518 tests/data/fate/vsynth1-mpeg4-adap.avi -1e6c596f9f491fbf15920ef1bace7fb8 *tests/data/fate/vsynth1-mpeg4-adap.out.rawvideo -stddev: 14.12 PSNR: 25.13 MAXDIFF: 184 bytes: 7603200/ 7603200 +3b4fe7ad106cb112364d062b20ad80a8 *tests/data/fate/vsynth1-mpeg4-adap.avi +325594 tests/data/fate/vsynth1-mpeg4-adap.avi +96c5a7759413ab24afaa926abb3c5fe0 *tests/data/fate/vsynth1-mpeg4-adap.out.rawvideo +stddev: 14.11 PSNR: 25.13 MAXDIFF: 184 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mpeg4-adap b/tests/ref/vsynth/vsynth2-mpeg4-adap index e058cd1ce3..140b17649c 100644 --- a/tests/ref/vsynth/vsynth2-mpeg4-adap +++ b/tests/ref/vsynth/vsynth2-mpeg4-adap @@ -1,4 +1,4 @@ -9465ef120d560537d8fcfb5564782e01 *tests/data/fate/vsynth2-mpeg4-adap.avi -203004 tests/data/fate/vsynth2-mpeg4-adap.avi -d7851ab1ca9744f8e618a24193e5ef76 *tests/data/fate/vsynth2-mpeg4-adap.out.rawvideo -stddev: 4.56 PSNR: 34.95 MAXDIFF: 84 bytes: 7603200/ 7603200 +21d205e0f42ce613481b202d52593225 *tests/data/fate/vsynth2-mpeg4-adap.avi +202870 tests/data/fate/vsynth2-mpeg4-adap.avi +1c45877fe27fb5fbfcdaff4a1da94de4 *tests/data/fate/vsynth2-mpeg4-adap.out.rawvideo +stddev: 4.55 PSNR: 34.95 MAXDIFF: 84 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth3-mpeg4-adap b/tests/ref/vsynth/vsynth3-mpeg4-adap index 6386f13466..70a25831d9 100644 --- a/tests/ref/vsynth/vsynth3-mpeg4-adap +++ b/tests/ref/vsynth/vsynth3-mpeg4-adap @@ -1,4 +1,4 @@ -6b2f641f2e68b11b992fd6ba1ed66a21 *tests/data/fate/vsynth3-mpeg4-adap.avi -41012 tests/data/fate/vsynth3-mpeg4-adap.avi -3483a2032cb02c3a37f5e43b128e59ed *tests/data/fate/vsynth3-mpeg4-adap.out.rawvideo -stddev: 5.79 PSNR: 32.87 MAXDIFF: 49 bytes: 86700/ 86700 +10512ee1a666ed95643557e1cf699363 *tests/data/fate/vsynth3-mpeg4-adap.avi +41100 tests/data/fate/vsynth3-mpeg4-adap.avi +9ba2c3cab3f08d2a345b849d0b30e3e1 *tests/data/fate/vsynth3-mpeg4-adap.out.rawvideo +stddev: 5.79 PSNR: 32.88 MAXDIFF: 49 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth_lena-mpeg4-adap b/tests/ref/vsynth/vsynth_lena-mpeg4-adap index 91edafe9b0..912b9b2efa 100644 --- a/tests/ref/vsynth/vsynth_lena-mpeg4-adap +++ b/tests/ref/vsynth/vsynth_lena-mpeg4-adap @@ -1,4 +1,4 @@ -633da125f46391eef33bb031cd728f4b *tests/data/fate/vsynth_lena-mpeg4-adap.avi -187598 tests/data/fate/vsynth_lena-mpeg4-adap.avi -21312bfcb28c40299fb27a5b03477f8c *tests/data/fate/vsynth_lena-mpeg4-adap.out.rawvideo -stddev: 3.63 PSNR: 36.92 MAXDIFF: 71 bytes: 7603200/ 7603200 +5af033cfe87bc2abf688b602e5a1a35c *tests/data/fate/vsynth_lena-mpeg4-adap.avi +187652 tests/data/fate/vsynth_lena-mpeg4-adap.avi +515efcfb456cf7b460f356fe0dc7c808 *tests/data/fate/vsynth_lena-mpeg4-adap.out.rawvideo +stddev: 3.63 PSNR: 36.93 MAXDIFF: 71 bytes: 7603200/ 7603200 From patchwork Mon Jul 1 12:16:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50253 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1745318vqv; Mon, 1 Jul 2024 05:27:55 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWoPN3+y0RBts2Pzv10Zh0T9Hj3HsxuD52vkLeE2/lKX56dmTCs184vFeSzjmZQ8cnmj1oSb3ysjcupCu//5CUL79yKHF6VTGlVCg== X-Google-Smtp-Source: AGHT+IH/uCmo/I5B0REYWmNeSZF+Vw1thNE4tN1eE3FePzy3hFEdETDOLeyBZwP1ORmYPvZPL7aQ X-Received: by 2002:a17:906:c141:b0:a6f:bbfd:39d1 with SMTP id a640c23a62f3a-a75143fdcffmr402029266b.2.1719836875500; Mon, 01 Jul 2024 05:27:55 -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 a640c23a62f3a-a72ab075428si376104366b.599.2024.07.01.05.27.54; Mon, 01 Jul 2024 05:27:55 -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=tAFvehV4; 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 44B6A68D7CC; Mon, 1 Jul 2024 15:17:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2037.outbound.protection.outlook.com [40.92.50.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2C5768D7B1 for ; Mon, 1 Jul 2024 15:17:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ni3vAnPKZnF+BrY80sMNLquGDhoTgdhRyzRKFidTS6Xtto7Y078NWraLI3zlHtOgil3DZ9hHiFWBX5hRBnO2nXmWIc0VLo/6tPXIFwjV3YdomqaLHa2gGEC/Hf3Ag4oPIrcfPveFR2Jaj/tg4QFhCYVP8FrPmGffbBhj5bnGHZnSFztxxOqFdFOivXO731fXAAHPcAMLZbT4lmkwQEKoofwEfhccnkRjjwbDmOZB5UV41cBXR818qbO8d2+nWRXDnTkGWUL5tyV9Ga9uHjFu6i6xl+utv3Riz3mhi5305qL7eGSdGlZC7HaJAW8IRA9O8eTOmMUWnPd0AgHZu5srwA== 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=0p+InTodNRBkCl7qwrhk4bI0w+/gf38/9SIw24Adld4=; b=JjQN3uC60cjqZMzlJ0bsgjyBX5mecVqPSeFBdAEn7w3PA9HN2UmcDXf0UaNW31NRDvWoiYbnt44WH7xiUryRocITY+vNQJgheRbCtaI3rXRwQYJJBQAgUlgXyc/Bmby3GRn2qmq5Pv4yhzBniMo1gHpqq8YbJQ2iVc44zG10rtqVszAc8tIw1Xm2hVAov6/llfuTwqi4yfCV6JZqMg4aA7I6Yk7UdHP/Fhku8TPL4GvSyT85kLuw6jvcIHfW5Qqxg78mnaX7TKwONmo3GmcKOUS5WZQg6qm6ZwP7JJpX7hfI7oeMrDwpNTy1EUTqSkqT7dKGw4MbwVaHtNcAAmW9Rg== 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=0p+InTodNRBkCl7qwrhk4bI0w+/gf38/9SIw24Adld4=; b=tAFvehV44bqCpC4yPZCD5dkWo+Z6KUbMg5JsGxyl5QJlD5+PrN+mK4PxxlUxtkdtR57YTa76wnEg3xbVYSr6N5gcOsip6ARviDM7BwhvQ/LH25B2OIyfb5K6XAoEoFqZlpcaqGpvOCz9CJD7i99j/HKVho5qG7TTUgjQ8RNS2CUcYVUX5eq3Mw0poW9328X6YRl+hgrRuKp0VfyXMPSNDsnZOn81TlXemSZZ7nZb5OMIibgMZU4FQPqLu5HOEJfbe2KLTNKxb++A363+2ENMnmAjJ8WcXFPdGcAUD9zGAJEw4gXMTk5eMj4JA1I8wdgEozQngcYNvDg+p28zY0Or/g== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:30 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:30 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:06 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [PEKI9XUz28ebNkO4BOx73F4CHRlKYPe/OIXDZAzb9/o=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d17a634-eee9-4808-2f4b-08dc99c7c753 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: gVAE/xc7h9TWxupIXGUHd610rjwyZ/NWlwvziosVLepc5XN/KKHqI/m8saf9vHCTJHUxv3Llh5e7BxCmpq6qyqUd39yCpUY2w8Do5ujt9OlhW/Rn1dj5FMrOkVAe51MiH97Tp40Se/mlEQ4qTy9SfFUwheJtuCdUlEfpvrmhudB7OYNf/P25CIUskIpHkh39XVX3WNmht1SQRQkY8I7C+qtvNPH4wsYEFM/c3LozX1KsLWzkXGp7m5hNSlrhwMGPqlbahu/UOwl6eTbPFiJ2mAnpvjRdUC+df5QDy/tf+7dflMS7uFHqk2zfJNs2jxbd5vgQ980XDPR8xeC2sT5LDxDMi6ssiYkqwDggHtRA0o3uo67bAVzzAl72qQqATTM3JT4jr60JyiW3FIDnHGFaiArs66uWHTYVOa9ajHBti1Q94dOSAjDetRMHQ94EKK9R3LPVaHRmDJoqg24rQWNkqC5FAeLKyAoOjFms+ItNOoPI1iwg7njsZjzD5ixpUvs5sqXcX7E6tsawyzhONkXIXjSEgpd59NV9uAg7ATaJ670ni5TAvNdzicZRIqPh2hwFgob9YtI7yLflBnmzer5I+l/C57noo/wEat1etSrh0oMn/Ob9KGTm6VFNlJm37cqDCitlT8UWYQsMwtbDIWvMFg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QQQ4BWc2x9SUN9cq/PK3rZZH0IGxHv5ZfZoODmefNdfO6sMkh7+9WKz1xus5OytbdDWU6BnWqurZZC0Com3LMIIsufXld1/RtBZiiHQvGsQN6CCTSDGzaZxn7R6DHsPb3U4txrgUzP4oanB2lM82PK5URv7QbG+GMAUoPMc2+b5RYarmxntp1LoK3U3OQbjJfY1cDgiKO+jPRnil3811UC0pLvNyLhR9UxDKkO2TCg02mwuPBfcHBN7Hi9VRNz755pUxeyhscRaWLrneph86V1w8Y2NebO+SWF312TA6M49yQjRTP6f4DhfX9PP3bJqe6GbB9MSFgCH73Z6QQxnLWe3Ncu3kMUE5nKjd0/2YMQTOXdkExwD6jIjW3ZPWttdZgJW96xm5OsysFDXWxzR7XI0IrT8dtWIpT7yhMuhpWtJJTSCapkgAcfuVgPy/kjRlogrqW6sKneDtypvAas0fR2jvTrDTWrfgbQW5lrDvcJSPBxW4qDRFTzH7X7q/DxhlzSSuvFh9pr8qrBJsnug3ObtW6qqAu32WSzGZqfUepriBWwP6FuQLq911W4r/CgTzxCd1lsm39rLw8R6lNOn4UMmDnCY7sxBMIBTaQFedl1OAxFhWVguGwYNmtdtnQNecbrLT9PkDd3mPd8xaNk9yn4c3l0VFdgIsTvpRna04VtYQ/OyV4EcvBnfGhqvfcNGvnDsirACUJIflDA0afwRNH+A/pt7wwZVmy20Zkv/4efBHrkrsolE+yhiAZd4ptK84rUYpooUkOgeQ+nWV41UPnsfjeF2XWp/pZg0231iYUXNmoI/vNpjl8kHXB37+pvsw5fSnkhCNMtbkDlzC+vxIHF3F9bB43GJ6+NBmx7EQkmYsvFnP/tjp+njfTH3fOevzSoF1oKTcE+jNWSxTCXgfCY7rzJjgdhV1NbYWhvQkAlxhLrC9WIVzvAkdtGUV1LcfRyvbVZhIVo7JRKNS+yXqEEHULOgu1siBKVPYDB+wE/7Bo4M5wFTwR7iP2Lprt9Cwe00PmxnoutMsiRaa219SfnfnnhN9/HpLAy2KRSBFPPUo9ewGs4n4viJICexVR/csM/rlari+27vOGM7ZlySmJRlg1pvYJNN4bCZcFDrMaiBYr6RiL8QO11nG75776lrR6CGjX92h+RikadvLsfBDncx7KkhUMw7QL7JoxOHSEZ8Ew24yOBJD7jMmxPJT+fmJ3WEF9+Tne7ZlmTaRq25RbS3o7lPJ6jhZV8rPX0fId/cJeeSBZfIkC3jt0O+4xRhXkT/qH/hdYf3/99inJ7WU3g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d17a634-eee9-4808-2f4b-08dc99c7c753 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:30.3548 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 09/13] avcodec/mpegvideo_enc: Add AV_CODEC_CAP_DR1 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: Wr3dBtxm5OxX The mpegvideo-based encoders do one uncommon thing with the packet's data given by ff_alloc_packet(): They potentially reallocate it. But this only affects the internal buffer and is not user-facing at all, so one can nevertheless use the AV_CODEC_CAP_DR1 for them. Signed-off-by: Andreas Rheinhardt --- libavcodec/flvenc.c | 2 +- libavcodec/h261enc.c | 2 +- libavcodec/ituh263enc.c | 5 +++-- libavcodec/mjpegenc.c | 5 +++-- libavcodec/mpeg12enc.c | 6 ++++-- libavcodec/mpeg4videoenc.c | 3 ++- libavcodec/msmpeg4enc.c | 6 +++--- libavcodec/rv10enc.c | 2 +- libavcodec/rv20enc.c | 2 +- libavcodec/speedhqenc.c | 2 +- libavcodec/wmv2enc.c | 2 +- 11 files changed, 21 insertions(+), 16 deletions(-) diff --git a/libavcodec/flvenc.c b/libavcodec/flvenc.c index 6a96cb0f2f..97323ac655 100644 --- a/libavcodec/flvenc.c +++ b/libavcodec/flvenc.c @@ -98,6 +98,7 @@ const FFCodec ff_flv_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_FLV1, .p.priv_class = &ff_mpv_enc_class, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), @@ -105,5 +106,4 @@ const FFCodec ff_flv_encoder = { .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE}, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, }; diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c index d3d724bef6..e0ff1a03da 100644 --- a/libavcodec/h261enc.c +++ b/libavcodec/h261enc.c @@ -383,6 +383,7 @@ const FFCodec ff_h261_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_H261, .p.priv_class = &ff_mpv_enc_class, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(H261EncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), @@ -390,5 +391,4 @@ const FFCodec ff_h261_encoder = { .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, }; diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c index 3982b1e675..ad2d1a044f 100644 --- a/libavcodec/ituh263enc.c +++ b/libavcodec/ituh263enc.c @@ -921,7 +921,7 @@ const FFCodec ff_h263_encoder = { .p.id = AV_CODEC_ID_H263, .p.pix_fmts = (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE}, .p.priv_class = &h263_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, @@ -952,7 +952,8 @@ const FFCodec ff_h263p_encoder = { .p.id = AV_CODEC_ID_H263P, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .p.priv_class = &h263p_class, - .p.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_SLICE_THREADS | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index 9d4c3a4f41..c4f72743ca 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -649,7 +649,8 @@ const FFCodec ff_mjpeg_encoder = { .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), .close = mjpeg_encode_close, - .p.capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS | + .p.capabilities = AV_CODEC_CAP_DR1 | + AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_ICC_PROFILES, .p.pix_fmts = (const enum AVPixelFormat[]) { @@ -675,6 +676,7 @@ const FFCodec ff_amv_encoder = { CODEC_LONG_NAME("AMV Video"), .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_AMV, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(MJPEGEncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(amv_encode_picture), @@ -684,6 +686,5 @@ const FFCodec ff_amv_encoder = { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE }, .p.priv_class = &amv_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, }; #endif diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 72b2caab7e..6b156772df 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1243,7 +1243,8 @@ const FFCodec ff_mpeg1video_encoder = { .p.supported_framerates = ff_mpeg12_frame_rate_tab + 1, .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, - .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS | + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | + AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.priv_class = &mpeg1_class, @@ -1262,7 +1263,8 @@ const FFCodec ff_mpeg2video_encoder = { .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_NONE }, - .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS | + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | + AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.priv_class = &mpeg2_class, diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index 0b18776497..abbf4180e9 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -1393,7 +1393,8 @@ const FFCodec ff_mpeg4_encoder = { FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), .close = ff_mpv_encode_end, .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, - .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS | + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | + AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .p.priv_class = &mpeg4enc_class, diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c index 3103a73663..a78ab7b2d8 100644 --- a/libavcodec/msmpeg4enc.c +++ b/libavcodec/msmpeg4enc.c @@ -682,7 +682,7 @@ const FFCodec ff_msmpeg4v2_encoder = { .p.id = AV_CODEC_ID_MSMPEG4V2, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_data_size = sizeof(MSMPEG4EncContext), .init = ff_mpv_encode_init, @@ -697,7 +697,7 @@ const FFCodec ff_msmpeg4v3_encoder = { .p.id = AV_CODEC_ID_MSMPEG4V3, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_data_size = sizeof(MSMPEG4EncContext), .init = ff_mpv_encode_init, @@ -712,7 +712,7 @@ const FFCodec ff_wmv1_encoder = { .p.id = AV_CODEC_ID_WMV1, .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, .priv_data_size = sizeof(MSMPEG4EncContext), .init = ff_mpv_encode_init, diff --git a/libavcodec/rv10enc.c b/libavcodec/rv10enc.c index 8a405b8686..b12248636d 100644 --- a/libavcodec/rv10enc.c +++ b/libavcodec/rv10enc.c @@ -71,7 +71,7 @@ const FFCodec ff_rv10_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_RV10, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), diff --git a/libavcodec/rv20enc.c b/libavcodec/rv20enc.c index dc26877d5e..4f90182b76 100644 --- a/libavcodec/rv20enc.c +++ b/libavcodec/rv20enc.c @@ -68,7 +68,7 @@ const FFCodec ff_rv20_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_RV20, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(MpegEncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index 4995b19f3b..93b249497b 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -294,7 +294,7 @@ const FFCodec ff_speedhq_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_SPEEDHQ, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(SpeedHQEncContext), .init = ff_mpv_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), diff --git a/libavcodec/wmv2enc.c b/libavcodec/wmv2enc.c index 13ec2bf6ff..57bf931cc6 100644 --- a/libavcodec/wmv2enc.c +++ b/libavcodec/wmv2enc.c @@ -243,7 +243,7 @@ const FFCodec ff_wmv2_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_WMV2, .p.priv_class = &ff_mpv_enc_class, - .p.capabilities = AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(WMV2EncContext), .init = wmv2_encode_init, FF_CODEC_ENCODE_CB(ff_mpv_encode_picture), From patchwork Mon Jul 1 12:16:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50242 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1745286vqv; Mon, 1 Jul 2024 05:27:53 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWN3ytI9keAeNJ3BYAc9UFBQnHiUMWiVn7k1+DszVxnaZIRn0caccXaE9YZ5F4mkf8r+HKdGRl4XZmkWk41QYIwHUvjh3quymtEkw== X-Google-Smtp-Source: AGHT+IHcHfIVQKDK8YECBf6Uui/drRjcwAU4f4KPHi/cDgjackIARdkVpmKBrBNivUplLcl1ftXU X-Received: by 2002:a05:6402:42ca:b0:574:f27a:b3ec with SMTP id 4fb4d7f45d1cf-5879f3ac927mr5148277a12.16.1719836872784; Mon, 01 Jul 2024 05:27:52 -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 4fb4d7f45d1cf-58613720922si3700554a12.134.2024.07.01.05.27.51; Mon, 01 Jul 2024 05:27: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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=lPyrjhIW; 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 1293968D7E2; Mon, 1 Jul 2024 15:17:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2037.outbound.protection.outlook.com [40.92.50.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C229068D34E for ; Mon, 1 Jul 2024 15:17:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VCyy0yZjA7Oy3TiZZRQzbfEZXR7cdzIpPvsfurTmcyhqLnXqDUkXe7pj4QJkYw9lhLjTgpmXOuML10LZ9eDE4pWONZxXw/pttNP/Tpc/NDTJ6+ezmalWIEiEV6HJu25z+uA3plVHLtxayvaTKX6L+wZ2HZsFCCL7j1qe6HBD+kZJW/dS3U3h73+5SbGvLRe8736ecAaYNglh/FZ1BhGTNNwP0KLkcMVdZphUGbjbV3nS4HiFQ37mMxKxYs4nOi4CJYuC4amH7DAzBZ+1NKxUZN2/Hrvf4e3+3e5vDm+b5JbaAzMssOsji2bKNxji2TUfzmZ/STVKY8JNHvb5OCzicw== 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=aDxQ8rZkinqFEqzeKe/VB56PY0RHbXsFTJ4VJMtDbtQ=; b=a2QJwTM8JlAfy7+3LAgRNsETVmWNiCNMB35agPKqk6rfW1lHmhKSTiqjy04vh7E7mdnlzAS0J0cF70Ix6sMgRh1M3jklKAg+LUT9ERBLfr2PNN7l03KYvZMpJ1CXG5lZ97J6F88U0eB1A78Oa3x+rk8JvVTWeaaha8cqc9psbUlCt3tCR9dlX5UHvoQuGM3wVME/qlYmPXVcEcNABPdoUylTokZuot6YCf4B8x8dOvpzeQ7UZpy2eqcwWcyUrLO+2ErO/L7FBMpjXsJUJTeYRUEiOAWplLfNq9KgExNAKVJ1UffV7F2H6zNUtFoE/AAgHlDwvpQhSUSQUMTjzkyd5A== 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=aDxQ8rZkinqFEqzeKe/VB56PY0RHbXsFTJ4VJMtDbtQ=; b=lPyrjhIWL8XyiG5eNCvXAXNbvIG9OKgTAxEj+LC5aPLpuq+TPXQ8evWJ672rMP0sBV14UaGNYumQPrK3MlOFs3CFb6Y8DZZJflzJNEUA48Q23j3CB7bHvyNzPlGGqr65/wMo2/q9MoT3aLm0QmzPfTzbjJS3u5wVwFl1bt4/+mrojClLBXgLtPVRRXmmzD4BKA3lCxatLxc9zeVebAnMP2g6qg4ETJ5LJ2comx+4DnI1S22YHoqdt7EYQCutNaRFxnL/6CpkuKksiB5CFVkku3wcu4+zE4pHl2IX0gZ5AVM5coRjJrHxqtwm0xCtWr1gVoUh85/tRGTKNKk3Z65AIA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:32 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:07 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [ks8hH5xlVaHGuWMwixrxw5Lnu3A+OOPiDo6iIGQ7OQ4=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 38c8db9c-c95b-4c24-6eb1-08dc99c7c872 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: Ldhj2rNacDbqzDIQlbXNx0Ab6SvoA/dF8rzjM5t2ZpEC02wBWYpsqABR+ov6NgX7yzVzrViP5RT74TYnMbuvvPhPJzrezGVTXUPIdbTg4ywevSq2b+8yjatZjcmzcKClrbWeeWRddztI3+aF1nwvv0muIpIu5+aU3jrpXF2VX8/plBmADtcTMvn8EiQx9lF90x2CMebzfNUatDtZESJS+JM4mfPv8kGbL2WSXIe4MEncZWQ4qweNbHldBkYNKxhXNyxpweC/7yjQpZsbLMVQnanERyRPzK190GcHlerh97cF6glLwE7WQTvQy4jZw+D8h8J5fFyL6gXFDhsPHeCzT/SAaePT8MqG/zHCXNwmlzKIXCTBjLN9dPH+Uf84x9ju3wtnhq+H5kbDfmzZ82YTWOe7npRt5ttSiMutJkC9golTF0jfphDj+9NSWDZpUuHFF/8dtQjrfdUU6oCBU6tl4KHll32bg8dhPLsi7GlyB7Fc+93w72rUtX+caqQEWMZMI7yxw0JYf5Pf5EwS/osOVPXx85oQeCrauubK+x+Jenkmvk3IB5SukbADTYr2WHarO1eXj3xPsBhF9bOFBACBbNt9tFDzExwhb16WM0NWmlx4slSdLnkOwlXE7G4cEVjjtdPOrHB0HpfH0JVQvlvxVA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: I1VBnTMp5VMj+2JVhpbmeHw/vIrwgyAW0+amhhUtENZ+AzFknoDbehz9ELV2kfnkFFHFPkzgYmWPVH/hMKmWeIis/Sk+JM7+sbdawEbuc7Yc3relCgr2D6lueCtQn8138M9nredpFCYqFRprzWOYTGvxj6irtfBxeKGyDP0057ika41uFUqw/EL2DwOZ20ht16z6NX266pKjZLJ+bicT7LA7Sk0CTW265dE/35h4smofA7aCOk7OLy/yJlgJBK+KuNMHJbDJVK+I3WCjtaCOxn7sxifU3dP5By/KWRrq0uh67hWcGjGfKGdIJHw1lggwCR+LLtHdZiNYx6PIRWW9TdSO9MDhWwbuzS/WKlDwr2gB/9thWeSazAJArbMWmseyCnUdrUxEqqG5V56oryXnNsj6PI9/Fo4tGl+4Nkv1B2LTBPSBn/MF71zVwhMqIX6CD/yivB2Ju3Ph2lIVKR6vHmwNgC514wWuRWkRHE/vbLMt0zqykdBVZ6fvJde4rvtD7l/jux500y3Qwo/CU+//O4eqm5twYv5x5IMmzhHs4i9v+GpbyMn+mrz0spUZmNxp/19CUzHBktrT7DL7PevSD3lRnn4N0pO9TlUm+eYWOkbrw1F8rTNVAAOmb/HLiOXGRo0sAJkMUtEGNJemZY9D1xbtcXu3Tr9lrE5cTSftiNzAzlqHdeCNxIoNAUeol4mBTJaBBcMLqxUdkZyTbWfNUtzhxB3xJ+PRt1gVjJlZ52V8HUMmGM5VuxElKAZyk/HnbRCG6/4uTwo3AAoX3W/cjxFlE3yBX8ms3zD6RavLSV72p8ODI/m7JFC1I2jDBLbAsrrxHtWtdGN6p4wHPfJksdwPifPl2XLHhzd5TtqIXBAL1lTJP/01U3/XQHNXTTKJA7eQWeAPXxsCD1gKpQGBR26hEFsfKp/PdTxjQpURJEs7UqAnQUQniaS6VKmLVDjQdPNCn41oqSXiRnCvPI8SUPJBqlzkNceAQ+LKAHreOCcyI/fJIsRWqX/n217SmCimg440w8bLFjrcVMjtYcM2KndSFVfMQORjaS4vadmYTFWFQpwH8bApG1zoebwtuTrIfxsVHpzFybc3K1e5RhqIdM+BJbu1cPLZKFnosB+x87mfRZRiRmP02bGG4ZlosExZDiyVyCm0USY/n/IlyAq6yMJ4nDWqgy0FhjkWK++AiAKP6U7uvmnXxtKHef52xeElv2+7JMEXiN4+ai9ZayK4figlkcv7W+M1xk4a9kwr3gGnd/XVudgqbAYihcPGbaPbcmmVVxQ+uPrCJJ2sJ6YMwA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38c8db9c-c95b-4c24-6eb1-08dc99c7c872 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:32.1987 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 10/13] avcodec/motion_est: Avoid branches for put(_no_rnd) selection 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: 7mGz6K7fEz7b Signed-off-by: Andreas Rheinhardt --- libavcodec/motion_est.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index 554fc9780e..b9576e61bf 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -661,18 +661,12 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) const uint8_t *ref = c->ref[block][0] + (mx4>>2) + (my4>>2)*stride; dxy = ((my4 & 3) << 2) | (mx4 & 3); - if(s->no_rounding) - s->qdsp.put_no_rnd_qpel_pixels_tab[1][dxy](dest_y, ref, stride); - else - s->qdsp.put_qpel_pixels_tab[1][dxy](dest_y, ref, stride); + c->qpel_put[1][dxy](dest_y, ref, stride); }else{ const uint8_t *ref = c->ref[block][0] + (mx4>>1) + (my4>>1)*stride; dxy = ((my4 & 1) << 1) | (mx4 & 1); - if(s->no_rounding) - s->hdsp.put_no_rnd_pixels_tab[1][dxy](dest_y , ref , stride, h); - else - s->hdsp.put_pixels_tab [1][dxy](dest_y , ref , stride, h); + c->hpel_put[1][dxy](dest_y, ref, stride, h); } dmin_sum+= (mv_penalty[mx4-pred_x4] + mv_penalty[my4-pred_y4])*c->mb_penalty_factor; }else @@ -713,13 +707,8 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) offset= (s->mb_x*8 + (mx>>1)) + (s->mb_y*8 + (my>>1))*s->uvlinesize; - if(s->no_rounding){ - s->hdsp.put_no_rnd_pixels_tab[1][dxy](c->scratchpad , s->last_pic.data[1] + offset, s->uvlinesize, 8); - s->hdsp.put_no_rnd_pixels_tab[1][dxy](c->scratchpad + 8, s->last_pic.data[2] + offset, s->uvlinesize, 8); - }else{ - s->hdsp.put_pixels_tab [1][dxy](c->scratchpad , s->last_pic.data[1] + offset, s->uvlinesize, 8); - s->hdsp.put_pixels_tab [1][dxy](c->scratchpad + 8, s->last_pic.data[2] + offset, s->uvlinesize, 8); - } + c->hpel_put[1][dxy](c->scratchpad , s->last_pic.data[1] + offset, s->uvlinesize, 8); + c->hpel_put[1][dxy](c->scratchpad + 8, s->last_pic.data[2] + offset, s->uvlinesize, 8); dmin_sum += c->mb_cmp[1](s, s->new_pic->data[1] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad, s->uvlinesize, 8); dmin_sum += c->mb_cmp[1](s, s->new_pic->data[2] + s->mb_x * 8 + s->mb_y * 8 * s->uvlinesize, c->scratchpad + 8, s->uvlinesize, 8); @@ -825,11 +814,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index, const uint8_t *ref = c->ref[field_select+ref_index][0] + (mx_i>>1) + (my_i>>1)*stride; dxy = ((my_i & 1) << 1) | (mx_i & 1); - if(s->no_rounding){ - s->hdsp.put_no_rnd_pixels_tab[size][dxy](c->scratchpad, ref , stride, h); - }else{ - s->hdsp.put_pixels_tab [size][dxy](c->scratchpad, ref , stride, h); - } + c->hpel_put[size][dxy](c->scratchpad, ref , stride, h); dmin = c->mb_cmp[size](s, c->src[block][0], c->scratchpad, stride, h); dmin+= (mv_penalty[mx_i-c->pred_x] + mv_penalty[my_i-c->pred_y] + 1)*c->mb_penalty_factor; }else From patchwork Mon Jul 1 12:16:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50250 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1740035vqv; Mon, 1 Jul 2024 05:18:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUba5uYcxi/qxV3C+E+qNi/yKvP/c7gVFHHMY6oCIkm3LZrEeu3g80GhoglCfKmgcNaxvGG+TnM4veB7DKe1YV2BMtyFc0FZFwX8w== X-Google-Smtp-Source: AGHT+IFasqouS56ZUPR/JW325gW9WZgsIj1cRbxX840VSxQrfJrXSxulmUwO4L3c+7AmQmla/9sE X-Received: by 2002:a17:907:2d22:b0:a6f:4b5b:4ba7 with SMTP id a640c23a62f3a-a75144dea19mr434904966b.67.1719836317623; Mon, 01 Jul 2024 05:18:37 -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 a640c23a62f3a-a72ab095803si356657266b.747.2024.07.01.05.18.37; Mon, 01 Jul 2024 05:18:37 -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=Rk4uAMaN; 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 E2FCA68D7F5; Mon, 1 Jul 2024 15:17:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2050.outbound.protection.outlook.com [40.92.50.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5C14068D7C3 for ; Mon, 1 Jul 2024 15:17:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RnpUD5i7bIz0BoeTdywo1GpDtRNClKxeG8f7gk2HmrNkBoX6iQT2P7THm+Knc2C9tW70izzSF9R1dxJykjXwoQ3Ro9PYulkWaEp+DZjSNq5LnyiHLoC2i9zwNYfRqg5ArbC374N92rA1g5+/FBI+Bgexy4z5eTZeEk1S1TSJjqZ6wc29g0jBDUokw8jCyod3Qox7T6KuV3lY5uV0Z+cchuqwkAignyy490a72JtPUYXGwLBq29WjGfQxLFpRoltQ1c5EtgYXeoPz9uvNjSVUxqEPjRQRv9QFj/3hyAVQmJ26uQ6hZLNycAZn3QPol0IMlWMRYr70LfXpnzViTDwPSQ== 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=WvLyIK35jp7ObhkIgh+hY2EXEJRhONX15mMInUhp0Zg=; b=LAUmT5tqlPu3zTbGFefdaBZXGajfFeYh2kfgaT0YbNBYpP/6IPbRfSZILdjKZAQ3DY25h/Ij4K9QUkr5JSHYp8WshG2Yg6gY+siXSWa/7TvvAsFnFq20yYbFC1W19gOx5CLkEGn4EGNqlnMh3VJzO6XVmSu6dhIrEtTeLmZNGVH4VBpVZOGKiNxJ2kpmesybPaoaairjljexZohkgUhaN8aGrvb3Ghx6Myi+M7povPwe1zTNhf3BsjRXYKTgDLRFfNFrL7q+E1BjksztywwK0wVYDLi4XbLF1kH3g/HpabqJNpz9tCK4abPZebv58eXyp4CTHuoKj8EDj3DAIymTCg== 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=WvLyIK35jp7ObhkIgh+hY2EXEJRhONX15mMInUhp0Zg=; b=Rk4uAMaNcQIOrOSmAZ74yju9qzJsvsYLyrdriNBYOKiquqrshDGlWjqpMjxP747mQhALeHMVMufDdgAJNYK5UYBOc3+c2NA3sKBGeXOFDaeAmUUwZsVYeBbccCFBeYqPiyaAiH6pVpUvRIgZCpeGeYmvu26pGV2j4Ypkfzp4hVjzw+F7bEy9avb/8iJO1OABlYFZm9b9MX1q59rSFXXe+QpM7M++lZPBw6FClIeaWNrsbfPPdD0+WcMOYTyWTJ7c0diBADLRMOkWtjvWW2pjloH52uO6MeTJCIilgHKcQBeR4/H/yxN71/ulmnDUPrT0+lb2o2p5lyKRRAfHaJnLdg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:08 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [pofuynUxP+7IAr7W3H4KermDzuFQXVFF5UgMeYZR3VE=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 85748e60-28e1-40b3-a57b-08dc99c7c9bf X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: WMYE21214v0fMVKm2Km1qbW6E/H3w80epoJ739ozaMG1vkTeas6NjfxRa+B4RX/Xc/R0FX8Cfd7dGESip3oV/rpJWcIu325RRbqGZd6bUdT28Wa6mu4ZY7btoU9KUfdPa+HP69bTH0mBG0ywOeeq9I9lvU+hQZv6oCjMV1XtxwnqpyPTWVgppV/CQX739XLIz2zOGWzMH+/izWLLHSCO/QAGQl4hkzWuFovmlN9D9fYkO+hw85wVFClfPDweJ0uU7BVHCF0praQF3pzssNKxcbugD+ukCQYzvAMWiut+OH7yapBiAR1FbioKVKP2JVpSxyAVRyc5aBh7Fzq+WDildjSZ8MYdupq5L9TaVF0Q8v8rre9abx/+7Ltkt9uT/Ute144HZnWTf6R2Oa4jyIOlkx+1sJRemsgkLmHirBED5cEte6+KFrS1ShJYErZ13M6OtfcMyaN6HT4VrTLkbPaQQqXMTtS7gVTN0QOCUTRD/dMWfMWN2yyeuBRE4SoHJFqbHt8lh0S1Wxiu2CRGxnBHG3pD2dRYFcJuiUcx1vtTfdVI7tittNeWfxqGE3M77IL5csaAWCgjIgGu4XWTRIJRy/HttAhu6ArZmmtknCAb3HpSqR2paMus6AAMcBDgPjQYn0SzuwVjhwNPY9D5XT23mg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2YSi5KC67t6AmVyYsfg5YhbfVulOdPLbe3VCg/j9ijF/j1SkDZGhKJvNpsf9KpM91J1o2bEC3LaDt5+rBEUlGMXjdc9X4B1H4yYc527FKlVCMQon6ut+eOFvwUxeiGFS9PrtaW2pvLhdMBA35Gvx+o24CKfgJSJIzqEGwnELlutDJ67aRgTI4IRwmaq+j9NOOKQbe22FyPtHeDrPTg/yxD8KL3CY8U0HdcDweWojUXvXb85gljWYs8bOh5MCgVy0RGMDqmsOlKPds7Plgxv5mzVbX7M8uc1tnTo175WMMFkcrW36lGqCnDgalYujsNkHCtP9e/8yIFr7oy+y7SryldHuAk67+JRPxoD9y9DrQmHvrlIL/uADRibkcdxIRWQRKyyhiLMiMdRLTQFnO7+hAn+1aK1rWC/iiNjP2rK8CWax/Hek+fFKzifSFKNwlmpjTYIKUlC4V7dNg476WhkZQQ3vSth3DmF0ugwJAHb7kcZpitD50AOmEe4M2H3WeIp1Ac86EFO4BWNJt4oyZwcSefJf9qOKYYyURg6t65IklbJh7fv/fvAhwr2cN7hL1NwqxegpzWGwPlQb9IrOoCznvBflzFQ9ZG6YqbO7dVv+er2cfYYWc15wZkyFePAu6nfNL3qF5GxbTP0EP2RdGm6svb80cDaqElmb0tlKutdHzuhltob7B+RuvF/5aXC9gVdYts1Aca6S557YtA4Kt5A5V3zskMcm8uXsuJ7L8/ahr4B7ybTIVOvmiUhwmaJuhif6VdWVhokwr0iJuaiWpv2k6I6QCPay9TW2Pwt5GaFafnTFRK5JD9clqi8jYWcUYYvU1Q5FOX2rHRLD8eiu1NsrazER/y4QQiwqaA4TrQoK/RXaR/xa1L4CAlCPIlT60OI7SISUYjN9JAqaxunB96X/Z+B9/wyumxxes+3xO/ndmxCxtE+dK0C2Q39NxXlT3rtFGmvnaxyTAhsimUdLPow3LsaPR+s/Wf8tRyzGzfc2SKteUl7UMC3Q3k5iwKPsUCd31MXWyZaZR+RAqhSMUv37C2GotzOXs7z7Elu9Gel/fF3Otz9kFiyNVHAYMc87qPq2ZMlo2KewfXJrrXTVvNasJXiWqDCfegCFX1Nt2qiiPEn+R6awIbptB4Dsd0vM9CwEC7cL2ruRJzslUC8sU+Z9gdr2t3t8xbiZOPgsVYUqzdkMbaLbBGSuf/6yetAgxAK0oYGfjNVEch3aSit11JmiO09eRO3aDFTpMiaZtZYgLvfnn3uHC/fWvsXu7yMlleu7BTEBovD2vZMr1WpCUkjaLw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85748e60-28e1-40b3-a57b-08dc99c7c9bf X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:34.4786 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 11/13] avcodec/mpegvideo_dec: Use picture-dimensions in ff_print_debug_info() 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: dz2EDUJLerEZ It will allow to avoid the special case for VC-1 field pictures. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo_dec.c b/libavcodec/mpegvideo_dec.c index 78fa10c11d..5d8e9a36ec 100644 --- a/libavcodec/mpegvideo_dec.c +++ b/libavcodec/mpegvideo_dec.c @@ -404,7 +404,7 @@ void ff_print_debug_info(const MpegEncContext *s, const MPVPicture *p, AVFrame * { ff_print_debug_info2(s->avctx, pict, p->mb_type, p->qscale_table, p->motion_val, - s->mb_width, s->mb_height, s->mb_stride, s->quarter_sample); + p->mb_width, p->mb_height, p->mb_stride, s->quarter_sample); } int ff_mpv_export_qp_table(const MpegEncContext *s, AVFrame *f, From patchwork Mon Jul 1 12:16:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50251 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1740132vqv; Mon, 1 Jul 2024 05:18:48 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVCuClWwytqRcUtchg5wdeaO8nwn244CrohmcCgXuLbENipB9owmMofgnnHKjq6dJDF+Pvs2s24wPX6Hsy8cXkTokY4VG368fwhRg== X-Google-Smtp-Source: AGHT+IEzKfmsQI3KsR7x0Q8zjbJwkUoQMm2SVi4jsWzdmQdIsEUGtFpvHQjpDR8DwsABMiVDmBFM X-Received: by 2002:a05:6512:1592:b0:52c:f55d:44a3 with SMTP id 2adb3069b0e04-52e8266deffmr4362575e87.19.1719836327785; Mon, 01 Jul 2024 05:18:47 -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 2adb3069b0e04-52e7ab25961si2283519e87.310.2024.07.01.05.18.47; Mon, 01 Jul 2024 05:18:47 -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=Q3ZjNq2S; 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 F03F868D7CA; Mon, 1 Jul 2024 15:17:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2031.outbound.protection.outlook.com [40.92.50.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B366568D7D1 for ; Mon, 1 Jul 2024 15:17:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wn7sJ3uAGKJnz0oZ+nSOxqgwd9fo05Pj5vxsKln5ZqEGO1QD30RJBAQ8BLB4jxerC5I1cNUd0X+3CQXBjhfEdOT0hyDX5s8+N0oBaDwUDN+Xa6cYdzB6eAStbIrD5kZfkpt/slFkEjPtFRH0TXVZ+EfIn4C/x5N4LR0w14+gWYqi43jc+0RFmDHaVsQ9KjgNFj12wOd2AZ3xsewpPRyZ1/62DnfscnLTzkKCiz8afcCy12n4PBd2tsU9t2W1sIG5Uu1M7QjxVeuXjuggRlRqoJ8QSqN5K5R0eYXHhDGSe5Zu/wUpC3CCa/fiC1SIRHAcTa2VUU10QiSQW4eirwsZfA== 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=2XtSRZNWNesWDkSxDHHd72CHauf/rI93onUhHy/LAwE=; b=E8kB/47EXQ7idIUe+QaLL7W/S5JCh+15iVVFEWTWa/N8IPzGnpchvpLcosBu9D2d+slsSQVXtul+Z/Psw9B8w7tKhE6QZ1No4uDxAR5aQtMpIMlg8tuOOD9dovBR172Am+I/dcGmkMty7otbE5TOoh/OeXdKLiOkRiIIDsQqbZEoOedaAZ+Yma89YYiAWd7fhEbLX5WvVQzqWG5EhHt9fxNdRlrD8tHzBrvtZA8w5q/Ete3aqfNxBfS3C/cnJZk0BX3E57RhVyLvTsDDeuHrVJfKtJ3GT7wy4jdku2Fwz+j9gEnZ9mj85X2vSzx58NsbmXjRtFKA0Mv9Jbd79qBx8w== 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=2XtSRZNWNesWDkSxDHHd72CHauf/rI93onUhHy/LAwE=; b=Q3ZjNq2SxleuiksbKC2lvyP51Le5AAFIIWSijRK5R/ff8pAipCWFrN8NWzIj9Of82sQ6TXq7fJICKDpi/bCdFocws6IbDqZC6eJBUuSc6mnL/jJbuoCt1FfjvozptV+CwMe+AmiFnGFHodGRSQOKGZ1jf6/DNqM4nBNJk+VX7RS/pZ2plgrbs1r5PElqa8Eb0a2ybGuf6WZ8RQhoh77sOHUbJkbf5E45FmZpEk3tF8Fcv/aWcJFicVdJnSpeRp5tweeZolmFtGpq3Mz9rPZb2QIUxvb0nLNaFqzbeeKk5Tx10w9xOePrYMeQltKn8thkRCs/+3otyLCoJfr8uVnx+A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:36 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:09 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [PHUk3eeVXOEUkmlD503DZjoK8I1CKQFh3TDQyV5nuoY=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c764d1f-fc9e-4593-d757-08dc99c7cac5 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: CUsHz3zCnelKcgeBHyKC+JS9ln1eXwqKpbg3d0q+XEHsES2Mrs2lMvRudx/DA3Rp9dBO4/IDrhjIn80p7aGi5l5sTce6rmVFDsCh44wg+yTpSnFuYSwLn19QncrMj6IRcxV6ed+RCzE8tT6IFuwidUPwUFSYbjoNWqPKuy0Aw5gYHAC4POukUbPAwQ20x8PFzk61LFBiqo2qU0s5qkA+DYSCr6GrZxCBC5AWzwNF8vkz5XH8U8wqITOa38HRoj6DeMzn3suza8Gi9uF700tsSljuzTcV1ZVhdLIR4ENMAhw4BMdfuAXIGWzGsns4Gc429nRny0WFhxcggDDKFpo9Ow9lUglcYdwtXVCnYEL4lF/tneip7VYx/nJlT0i7S3T/XEWThVfIoge+cI2/j73s1/BxeC8d08s1yqXSuQiiy+S0ckf7PVQ3ZhA2USSEnKdaMyY6yrfWPYuX3Pujk/FE7oH2XpdW639BYKQHUB/dwS6HBpQomIA8Flez8Q5I9h3J9CDqYNLXu4QdCDsGEjLPhXggboqkpTaGgbi3GNBFgDPCdaj+941qG35GAu4F+BizaK8RiB6VEkBgjD/8Q7oaeu+wOwqtZxVKZ8mnk1seW351g6Nt3cx5ViDk0RcnIwXa9TjKxc4G1VUEqzT56GGREQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VU3i8eGOf26/i3ayOsSiE8QeJRJoCtGNEC8rYtEW6UE4jmHhSkh089FwpAsEtJ5JYEhG+eowjUsnprW2Y3NX9mWaCWawizqMsk50R5jtojxvHyv+qjcqQJZXfh8Bexe2PfmNdCLAV0AUYcP0sR5diltWLrc/Bs+IMN9qhjiWg73EsT28E6YOdOk4BR2zrI+MIgg48DBZw7Ov3w9TOPm4VbmCUe9bZTWiV1O179JnoJTFLU6q/XZUR1Bl8fDD/z3KRgrQxO+VKVb0jjcNRe4KBT5zIy3AeZLRi12Qash+BnwlYHpRcABecThzYvPjhbA76NGfZlXJAWX0jOhWyaqtlVj0B/NmfJdwSNGFAUusmneKLTKb5ANbItQI+MvTKmSdV+at2+yN+w9cAF+f4VZZGPVZrUDEbS20KlVh5yieUKh1jG5MFVCD+RDudHLkaKnSxchpvbvorSDYIWtQ/S6EE54Gcj3fzpxun8p0k/Xgv4omBWtRpOgN1d7Lqt5iJToVc0buDAQTiZCMjtSrVPXoz3b+zB8j74PiNBo/cdE9HfWHeLW2rF2GJRGnwUIJgga1O4vPI7gvkXAfha05p+wMhkhwgu3R5qg72619efX+y95yraT/ogVXSRsGin5+Dzx359It0q37l5EEMCHvNZ+ZZFLdf5yvLLpQuGhQYiyy9a19wm4EkpBPV4ni0x1zMUHF13cvd+RDUEZ4yqZCgxHSrbrst8giXto8WwXTWNWf0lnGiPDnG4hZXfFsTtZo06YrrQH+5L8Y+u77ErO8z9L26OGmh9Dr9FYtATntXUzZKhUqIfWgoI2Um8FvDI60V1du5nHacH0SJMGNcOLj0UuZsg4tNgOQ9oKERbM9TSb9fa9ezdw2j7YkaQwgsOyR/cLonlxORQTyiNvbA8o+WIak5gGTISBxsxAXzF5v5DncXyJe/wr3SFQ3q8Bwhv71IFzPUoRBd+cfGTPnbwCK1H6UssIEQ1tBgr5+AIqphn0Ig/xCwy1x83YtIVCSGGAxzQMBBwaewB8BBJ1hKUmMmgzqE4pYFKhL6piSOQBy/NrOMmFI11MDrcUU3dyBI30wnsCzJpOvVe82Jgji2SfOha+bPmVoStsIK9HBPGunrQjaL3jg6GtdF6NWASMRy0RnNiHfAMlppJ3QjoiJaqgB60Uet6fmuilpxsvey3Q85n1y3vrGxK8CKah7O1MdsJK8LqxjDErtbd4YvIFz6Jn24C196Gu3YIG1mpCD5nL0mYQjp7nLeUPUUjdmwFFd+UC9t3ZNnhLvhDBRASAU0uifyrqiHA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c764d1f-fc9e-4593-d757-08dc99c7cac5 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:36.1708 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 12/13] avcodec/vc1dec: Reenable debug-info output for field pictures 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: LdMiiVjrcfBE Effectively reverts c59b5e3d1e0121ea23b5b326529f5bdca44cf982. This is possible now that ff_print_debug_info2() uses the MPVPicture dimensions. Signed-off-by: Andreas Rheinhardt --- libavcodec/vc1dec.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 4b31860c3f..2cd87e5de4 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -1365,14 +1365,12 @@ image: if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) { if ((ret = av_frame_ref(pict, s->cur_pic.ptr->f)) < 0) goto err; - if (!v->field_mode) - ff_print_debug_info(s, s->cur_pic.ptr, pict); + ff_print_debug_info(s, s->cur_pic.ptr, pict); *got_frame = 1; } else if (s->last_pic.ptr) { if ((ret = av_frame_ref(pict, s->last_pic.ptr->f)) < 0) goto err; - if (!v->field_mode) - ff_print_debug_info(s, s->last_pic.ptr, pict); + ff_print_debug_info(s, s->last_pic.ptr, pict); *got_frame = 1; } } From patchwork Mon Jul 1 12:16:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 50252 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:cc64:0:b0:482:c625:d099 with SMTP id k4csp1740212vqv; Mon, 1 Jul 2024 05:18:56 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWKaGaHlSLkY/tUIxWPi5NUNKzjnhFWuZRpFKt4zdH7OnYCuMMeZgFVbcVDLabXO4c+azHEIu7HG7LhZgnSb3B0m/00eXAjcxZuRA== X-Google-Smtp-Source: AGHT+IGe9T4oYUSkYVgaqG5WHZDcxCf3o+boKkptvJ7JfFDMKjSdrhok5QDWJdPW3oP7zZdh6yAu X-Received: by 2002:a2e:bd12:0:b0:2ee:6e94:632d with SMTP id 38308e7fff4ca-2ee6e94634bmr5343391fa.15.1719836336586; Mon, 01 Jul 2024 05:18:56 -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 38308e7fff4ca-2ee51583c4bsi19039331fa.608.2024.07.01.05.18.55; Mon, 01 Jul 2024 05:18:56 -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=jYlfTVJ8; 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 7206768D7B1; Mon, 1 Jul 2024 15:17:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2031.outbound.protection.outlook.com [40.92.50.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E269368D7E5 for ; Mon, 1 Jul 2024 15:17:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eWi4sCThpRnGwlZ92nOXuu2Z/G2pPme3UidAaub4fyRufm8M5Q6Of/VTwCWoqSNMrXMzeV2ZvyUUrMGLKiQTK2h+hs94sW8kQeArQAGuRgVNs4hP2y+w9bfQE1GYWj5XiG64jNFiiyY5ZzEg5kbz9cDGe7eWQNsgoR1S60AawwQsYiaL3daFJOwvFU/Fqp0zR+BM38Bn6YgEWhrJ4NhXJuYcZv4H6kVgiOt1xJVd+x0HJXjKLQhJKDu6PCsGHXBoJeBpdQdf/Q/AvFqgAW9Kl+C9u1UFwzOMiNij7/qArd4nAchKdoLL2lEV0OGfBjx7V5J6Xsq/85HUmWWKLUMWwQ== 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=OVa3eRVMODn0wCs4T4PaAqmlQTayD5OYcPbU04ipRHg=; b=X2Nyi3b6H4y18w1ix2bZfaST/rLY3LNLDZmGrelyLEKTnW/NWTrLDAyfG4yDM9HFgd1F7CKwpHkaP0md7sPWxgy9sWsQzCsIcDEuDgomA8IBj8nsA6lRLaRdumWyNFde2a7Otm/V2oD+PE4G4eiXR8rHWWdh3j4E6/8VPivb+SEJlu7GnANLOvkYy+PzASqBmeqD/RVxMuRLBEIaFSH3RawyhehIaVyaos6mLi/xMiAWIxaGhNHxydBgTGnINQzXzPEzzUcKNdbthgqdUrZ5ZeX88q+FoRFe5BqHv87y/tdSkaVp2TKiowvZWj46agEkggxkZUKOEnvgSvAvkCZKEA== 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=OVa3eRVMODn0wCs4T4PaAqmlQTayD5OYcPbU04ipRHg=; b=jYlfTVJ8X/fiv9I/k8crxiTn6Zlbm47wz8uV1I7oIb7+56WTSwWj7sz1ei8QIQsExAS6k19JrsK7NwLqNEqmW8vf2Qe3shGxVz8V8xQKvwipysyFEDF9p2Ta4oYXFfbRnMIPQB70CqsXnR/ymUewQXwNLSg+46Sq64RH/Qt+blspz0q3tvc4O9AzFUHiDehRkFiqRXa8Jcar5LrMC66W1o9Tn/V0BuWI3e/TMhoYPg0ZAGVNK2UBFiapo4aClhVBZW1sTEWToqDzkA8kR64g4u79wgXxIpgt8KBfTgDwEZjgl8iOjp08kn1ttLZWQro/vgUW/hmBbXKnupdhhebaRw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0481.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:349::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 12:17:37 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%5]) with mapi id 15.20.7719.029; Mon, 1 Jul 2024 12:17:37 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 1 Jul 2024 14:16:10 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [Pl7B1fUToRdkIkBse2+Q2muCtbrZRQ0/8Yobf4Xrrs4=] X-ClientProxiedBy: ZR0P278CA0149.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240701121610.3560848-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0481:EE_ X-MS-Office365-Filtering-Correlation-Id: c5429d6b-7447-456d-7730-08dc99c7cbc3 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|461199028|440099028|3412199025|1710799026; X-Microsoft-Antispam-Message-Info: go2TpWzrv+JXxvA0xGMkGJBtAxA8rA7t0bV1atHLCuGa2OP+IupujJJ6O/Q7LynEHAQzS6I5NOcxoUBl2jrahWDwo+m4Sng8nbCWCELK/T8LGOslvxgK99Sj3M5bhVJcr8RZ/UkzkBjlT2kK8MwtrgZ/u6x9+TOnyuR3td8G1bSTB1eLxMPmm13bIi2bOXlOaLzBAP3xQ9QE0UY/7SKSOnyA8WW71U2jM021HTgkmv31IoPbzoRCpSAzrUOgxjW/w7K7BvCN87wlVqQtlXSvdl0HJs3uyk2S5tPfcnQtoazZmBQ0SMbT4EtqDjX6WfCh+VIQvb0fMOuKmYFGDBf+ZAqZ+MYak1xhYQfEbVkpVlhi9uQ6Ag3XothmskeDKZy4kFmlpyW0cuMUrLgOtQes6uidRYCH0Pqdvsf5RY41rdXz7SoCYGf2CYUI2XU1y3dR4OtKaSQyG53JHm8Ci7Z4KP8xSbU4f8IHjd+gIVLma7CbHLiuvxP58GWzuTSXQtJI1TlLesbAjdv6rkFE8E9ZoLq9YZB5vJXe/M+FfehgXb6lLAYrzJBg4I+MNbwTK+Cz5GCJHpEqKd/BqzIz+S9ilQK+rczrgu/GQGUt4xIcf/j4saOLD1ObYYM90csTLkmmATbVRIP5+vKwpS7JjGM7mA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uwHM2WUsHJ0ZElB62CBrs1Z/bfTSUDFdnC7dAsB44xHGMTw+/5BFtyasqgoF5DMakjEuakt3I+GPkJtLtlY3oHAR5Fdi+Pbrt7kR9tDj3DFLBoJwf5EtwhOfDjcY5d9f7jtgPkK07gN/Q/ZvYen/U26KIbN/u/Ncm97LVGNZsDmcbMy+YN/vxSiP/kaK9HvNfIKphgP4zQ1ccxxmrrxt3CWMp045FPiqk/CRbOSnk2Xw9gQ1bwlrot5d951rPsYX+w0P5DTrHrCccJkLS4c9r8MY0M1IjTyWCfj9GVViFil7gO3SWi1a0EacSOnsRipU6Xh6bhXi4ZGq7NqZCeKRAeiuguvz/uIyXAvzLDmi6/0FU0pUAMwk0LlPlTVXM8ftPPErTk0aSKa6QcKj2JVco9qoxYZDFN+OVGB7Yu15EFepzpafhnB5V7z4KbwxTvBKfzOMnYSh3i8TYxwIJSKRZdL/HQh/wLZfKQnoNgv6nrtSUN2ScC3BaIQ4/GJMB1cJHFnghnad3G3DtfwQBa+j7qPNqa/aw1tO8BOeLmkfkiJjkx8FUUnJLXTsj0odxR6jlnry95wUylYSnS/nSZZ+fhjA5yuSffeCrI2sVnKtsu9BeeQFEYGh5A1fgrx9Sx9k5X0Cro48YZHiYaQUvMwxVRchQb4LpcCZytYtG1G44of7qSW2thoYILo3LPZSCWk8Lq6ukPQRkmRR9f3FlD1XM0h3OX2wMwRltkuQWJgUxdc2iQbeyy2iHzFAFZL7YL6saQ69MX9JEF5U4Jnm6aX/TNj2Woq9x5R+p88QqP9YAoQyaSFqUBIb4Nty5gqHYEWOSYEFT0Qg4YFpIwj8VW1v6Uhpaf3IVj88fEeik8U9OX/PDU4l69m2+lNK6XN/diL5JsjPPAj0O2MZVjbLgOowUsXLppYtf7wtA6W2aGB/BEV4JiuG27wjU1odjPF6Bn5YYdluKrgzQhYaALVIYJoWWj6AqSTKRsLos8kinc9y08GGMPwp74n/3y3x9c/OaQXy4xq/by3vc5UQes7UhKC/sKlWps/3dbTkRcSp4MlrT83J/93uoJLM1dNptvfdg0KTAFlof3eMZ1lwoMmGMo+K6DRY9WEfHaG/sN994COacvCIlAoQ/7EIFXjCmGffxdS5eDASg6NjYPeKGIlBBLzY1lN9eT1gCKxPdo+uvkfN26Q5twRJ9YZU+5vTKBmIlV09wQiqze6A07N8gTptyGRqBc6qTZ8rxBqrrb+3YjlKyztt4HNFNKqIxaMgCEapN50+CqdqKGiBCOGOPWMDi0MCyQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5429d6b-7447-456d-7730-08dc99c7cbc3 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 12:17:37.8020 (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: DU0P250MB0481 Subject: [FFmpeg-devel] [PATCH 13/13] avcodec/h261dec: Remove dead check 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: CRtDYYa/kHSe H.261 does not have non-reference frames. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index cabca33c8d..50ac53167d 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -587,8 +587,7 @@ static int h261_decode_frame(AVCodecContext *avctx, AVFrame *pict, return ret; } - if ((avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B) || - (avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) || + if ((avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I) || avctx->skip_frame >= AVDISCARD_ALL) return buf_size;