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;