From patchwork Mon Apr 8 00:56:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47910 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:24a8:b0:1a3:b6bb:3029 with SMTP id m40csp2207165pzd; Sun, 7 Apr 2024 17:57:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVI4DqlD41t7j8QIXsdlQuTMhkwBrblVquEp9KzeQ22QgI8NMXK939BthOuwaXPICXWMW5PI8JSJdAs2xVS1neiYhAyH2f37SPIpA== X-Google-Smtp-Source: AGHT+IGbqq20KlOh71PA5fWUNi31xY2Euf4NJB+dlesIEjCKr9tmh3Q1NIvCD1CDTUlXs8QKkV8i X-Received: by 2002:a5d:634c:0:b0:343:f662:1916 with SMTP id b12-20020a5d634c000000b00343f6621916mr5422474wrw.17.1712537827530; Sun, 07 Apr 2024 17:57:07 -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 t11-20020a50d70b000000b0056bd9adc7b7si3137050edi.525.2024.04.07.17.57.06; Sun, 07 Apr 2024 17:57:07 -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=gsA2ssfm; 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 0124368D247; Mon, 8 Apr 2024 03:57:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01olkn2062.outbound.protection.outlook.com [40.92.64.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8A69968D084 for ; Mon, 8 Apr 2024 03:56:55 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CQbZ6A1pBSELTXD/HwixBuUhqBZVU1E3ctTub3EJXmaVLudhkM4OwT7nFyObywAqc4on+rbh6xasSgw4/Fgnerwk7EsNBMe1sU+WKrJMpGxy7HZ30k1vHEI8znYYy0HWSmhYRQLQrozc6V2IwvYR12fg0Gh8heqKlQtxji8rdzjtUinJtKmepB4p2XfSf9YNMopLCg4WbamQyrB+2HPav6q7OmGlLxCR93Bu6npIrPEFgcXyEWaCEeSNS1zO+Q6hjmizGFih1KO5vKPzZu0dPlorgrIfW/dstIFEJLOtvNRciZ81Ep2CnucnfsUCSfZXwoqYqbdlLTWDNHVRzUWv8w== 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=rAzmltiUPwLtWQQc93bUpWLqIpTvjpihC7QgI6iktNE=; b=HsFn9801KMYhzx6SiLe9dCDhlbg7FoZARQAkboI96jkJL/WdPG9xDoi3nwdwGbyFrxXYHr8Jy4+G9zNWvO/Ax5qPa2sQPa4inwFJ1MEVno6llJ2tvT24JVPhUc81Gllo/d7mXE5na5bEO5/rUXZdzHVDAjz1YXvXR4r79jSan+tlTFIjtu998gCi6/hVNiBQ3+pqbsll/LdjzSa8LJGABlX1lSbYbwMwpaET3ejwaBL4AA21nX3VSETVdYVN62R4Emp4UIylHAqjtGJgxgTbdW65GkmQQ3wckKBR22o6AyUXEl1mxpPTTV4TBsaUrtMxQ8Q5Bh8ppcaMOj/bVXDSug== 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=rAzmltiUPwLtWQQc93bUpWLqIpTvjpihC7QgI6iktNE=; b=gsA2ssfmJhIb/1yPLVdzQxdzNhl2d/JQyWyqRkFttJD2UFj5UHHkDfDLDxGefVvWdxciyJ2P2Wdns7iN8kQj9rdTgCdNtz2Z2d+GGyVwZGZAJ+emXSCzD6qydkzbYs8BL88iXtpHJ3yWZ5ZWGeow/qVX5v778UH4NP+z3NA4jyMXI9FMNb33hPYRLFrmjbwUj0Z2SN1w81kQDDBRSJpXiegtHr3QdzhYDhQLjyrxlxkp0r3tZBWMTPrFL2yLxoldl4YJLbdMpyK2ctPt1iM4RSPkuLMp/U8d6T5erFAT1AGaMCwPym28ZYObaqefCbe+rTpLaf35GHT9yObhprz81Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0394.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:358::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.55; Mon, 8 Apr 2024 00:56:53 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.042; Mon, 8 Apr 2024 00:56:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Apr 2024 02:56:45 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [e2US+cAQ/yNqq7r/fPRfjkhs8CgfLwhKI4iX4S7YqJ8=] X-ClientProxiedBy: ZR0P278CA0081.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240408005645.1086891-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0394:EE_ X-MS-Office365-Filtering-Correlation-Id: 82579411-3227-442d-40a4-08dc5766c77b X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpOxDCcKCE3eyaG9g27BcxCgjH6kjw5HO3dwhqIpkkpr8ujFU1F+NHUht2NIvbgFbwYre4oflj4Bv3eIw4hFCD+qUe/weaMuvsQxITfmiEeIouKZOHXHmD6WLKw9KpkdgqweW3u4w/ajB/OgyP3CnzXlmT17uc9m4S20rXdoKmlvaAwDLfPUeO0XEK/VPGWIn/i5biyLWP8g5NSV6rgmCgpov1bu3RXi1creHw+ivurHKcu0wSbmKXh3ikuyi/MZzMcBcj1WPzc3iDGU6iaFhk5bqfLnSrQlcTIWm88K+LmF5n/jE3Bfg8toZ7rCtBMRTsc2lQvVJPOt5Orwcc5w5DSENFTm52WjRNn7NNI2b5TL5wFlhGRGB/twyclzZEQHhQFcBtytVSJeEiHKd9tqqso/XA+9Vr77w38K8w3MB69Vfzch93LFUxbo1wrqvVb6aBaJuMdMMp5dNX9H+3SJFp1JcEe+hpcS6+xagsF9z65D5Y2774iDqo4jovTwmf3Ho4cJ5zoR5bnfCTszgAwQsie7GFh9J/dAbDeQo+Xbi/GbS6yQ6AACh7YLsn25/D4LfGuTbFp65NO+s6TKNOS8/XcX8mtHVIFKjY44oKebzltpew7jyWgYe63cuZv5oTIjkcpDsR2zBZ/BTp1pQQ3S/w1gDbFa2XWLIEzm9F0PRFyRIUVwRnH/XrriLLlXwTaOJVhaSV/4PkSumirJaLEyh5mSpKnwDpObQRppLFL0EBfnegO35ZYX1+qWePXh9WEHbI= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /Xu5AveDZnUbXyNWNBsDwF9Ek1OkcjjaXc1i6hpIbARGIZvp1KDC4ecrlP7dVVOWKHTkxvWmcce/5KsQOfe++93Pm4/kb266bujhefuGOMpfuFG3XZ0PheRpqehuiMz84UuGiLJ2deCOkgbl1pEFuDtUWzRq5bYi1GN2wgtqTav6UvZjImcaDbWfcnKCdcNo06bhGj9pv0NI4uXZDe6RrU3POwWJImVAw935hDoNBqOVEQH+ZWwsEujfUOlfxZ6mRfrkaFKFgsr+TwoiVf54DyyCCesHZw8H4XjY9tLFuIgltq9Wc2nLNqCfzNhTUwssR3ChaXA8VLCUXC+BGR2FszqfVXW7TOLPn6xBSv95JAg6Eco9/JvsZnTfvenVgef9EIgD1wIpXeebWexWRkAEnOxUKfey2/0hEUWDZnwy2ij0tuLBOOJLXFUJTq+JEEXt0ICsL+XNOW9+aUA3ch0CwyGOrmdHmRWd2406FRgsZ9FuSgm5icU3uVjx/Rs+/Ls+1Gxyfy73eW+S0CFp1W4e0WRqFT1rMdU8Mk5mMgSpajD+/Bz6pME4FtfqPVKUAFBswWCT00BmGxKh96VuLrBqu7/1Lsm9Ui0gJ0B00ov+fpZdC0gLuRFOEpPVW9uXCu9y X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: e2MgryNdXLakunL/ACuGrRGts4BOqsW0jYTsHREGcY3/I1F4vL8N/YDi5F5vLwFBClGTIUJfgeouU0bM6/gZGhqoQHD/AqaXuButGXESRnQRN1Uz93eI10QmgfznG5gdtt3Y/1i4tsVpasW+IlbhGHRmdQBaiR2qqlm1wQohoYiSa5wwQLomCQBO/zRUsP8bXeeBntIMU0+HOqxsOW/oSFlR8r9wNkujGyKuuvOOM2hlNfzr85PA/BKwIgJSbC+1AmmMiVg2o9RxQQEJnycYe0P/yqcid72NO4ybdC+4GC7TvaE4kFSXm4JFA6TqIDseG+nwkcSI09Yi44BZj0zBb7/Q4v9U7BJHislvQ4ZcqpJxK7TAOIphw1RYxXZi3ZH6RivBzcdFIMPfRRyH9GAPhm7FPfJkQF2+3rSYkJUJzhXRRkAVAs2dzS8nRAfjz6Kjk1/ALQh3ZYBe9ufl6q5SbQ3HfhRSDF9XTkUUzrcl1Zeab5vStdjAUTpn2K30WkjNFjCGJRSh+htllyLTT0VdYgKUahoEwhaQDLGnbzapggP6YiSuQFWLDfhU8L1BHSiGwJWb951lXzcOLQG2yN/QGpLjiNO65BrFdk+syZGIn5lfO4FSVEalHtXV/wvx+OlrOYoHN6N2DWpIo1zM+z5rDLebQD8Z2/0N5iU4QnwnOxrnhWt0j7mNv9wGZRdfIgQeDGyU9+OZwwj4cRaDrzKSxk8t0mvN6cBrqWwYX5VuGEbMqxY2yntAik5JJ0hW45t5Z0QZ6sXu6W6ItkwpLCnzsWEXK59UMOWEjYrp6p3a+b5T7DDdV+7oc2Ai12SwjabqpkfEj6EneXOed6j6u8jfC6B0+Pk081tqXb0l+Kcwt92XmHI+aYOd7msZpbJ1S1BtDrVm59PTU0c3SgVJbTryjJi+D4dzw4lcjctrSuLo8KxUGerMSlZOTMzQgKyiwbi2RZyVvcj4rciZz6QS2ov9W27X9CoWgVMtUE1eq0cm5OXljeEyNly8iGhlpptV5tW7jZs+QLRz5cYIamKf1Wl1NOwzcudKqyrPIONrLPd/whrwRRwZ4Vg2xB+sa3YKD9nvl0F7M26JIIf4pmPoXkrGLb+LLU9AJRfA/KKQDttWjTZ8BV+Z5QofWIdr0fggwceSRQoEd6zjxApWlQGtoF6Zm+RhhGgplS5EI+5iNek9yCbnFvohhRZnyH2zl1eU6EaXXpYZ53rTxQRDeAQBlr3vNYpDFDL8jnfewzqc7Wnc+pZWi9fIhX6pSLTXGOcpQG3xw6b1Zs3Pm/MIF81S5EZ53g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82579411-3227-442d-40a4-08dc5766c77b X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2024 00:56:52.7190 (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: AS8P250MB0394 Subject: [FFmpeg-devel] [PATCH 18/18] avcodec/ac3enc: Avoid calculating the CRC multiple times 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: wBCeti2ZPe/r Signed-off-by: Andreas Rheinhardt --- libavcodec/ac3enc.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index f520e72fc0..49b0d4b956 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -1942,7 +1942,7 @@ static unsigned int pow_poly(unsigned int a, unsigned int n, unsigned int poly) static void output_frame_end(AC3EncodeContext *s) { const AVCRC *crc_ctx = av_crc_get_table(AV_CRC_16_ANSI); - int frame_size_58, pad_bytes, crc1, crc2_partial, crc2, crc_inv; + int frame_size_58, pad_bytes, crc1, crc2, crc_inv; uint8_t *frame; frame_size_58 = ((s->frame_size >> 2) + (s->frame_size >> 4)) << 1; @@ -1958,7 +1958,7 @@ static void output_frame_end(AC3EncodeContext *s) if (s->eac3) { /* compute crc2 */ - crc2_partial = av_crc(crc_ctx, 0, frame + 2, s->frame_size - 5); + crc2 = av_crc(crc_ctx, 0, frame + 2, s->frame_size - 4); } else { /* compute crc1 */ /* this is not so easy because it is at the beginning of the data... */ @@ -1968,16 +1968,17 @@ static void output_frame_end(AC3EncodeContext *s) AV_WB16(frame + 2, crc1); /* compute crc2 */ - crc2_partial = av_crc(crc_ctx, 0, frame + frame_size_58, - s->frame_size - frame_size_58 - 3); + crc2 = av_crc(crc_ctx, 0, frame + frame_size_58, + s->frame_size - frame_size_58 - 2); } - crc2 = av_crc(crc_ctx, crc2_partial, frame + s->frame_size - 3, 1); + crc2 = av_bswap16(crc2); /* ensure crc2 does not match sync word by flipping crcrsv bit if needed */ - if (crc2 == 0x770B) { + if (crc2 == 0x0B77) { + /* The CRC generator polynomial is x^16 + x^15 + x^2 + 1, + * so xor'ing with 0x18005 does not affect the CRC. */ frame[s->frame_size - 3] ^= 0x1; - crc2 = av_crc(crc_ctx, crc2_partial, frame + s->frame_size - 3, 1); + crc2 ^= 0x8005; } - crc2 = av_bswap16(crc2); AV_WB16(frame + s->frame_size - 2, crc2); }