From patchwork Tue Apr 2 01:37: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: 47720 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp1084371pzb; Mon, 1 Apr 2024 18:38:10 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXSOzIozyK+aW4uvUYXSvUpam5r+rRdU2dhKSiSdNXDiIu8uu2F2g/0DAjYxQdiyI1Xhuew8MaTu7raafBXWhJPpwjXVCFFWb6Ujw== X-Google-Smtp-Source: AGHT+IHCJ5Nw/ftSd72DhIcM3zNX7URG6hT9H/3ATaqAzG1vREzYzTTF/PvFpuy8ZgVfzUJZalGT X-Received: by 2002:a17:907:86ac:b0:a4e:5fff:5e3f with SMTP id qa44-20020a17090786ac00b00a4e5fff5e3fmr3403255ejc.6.1712021890431; Mon, 01 Apr 2024 18:38:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hp20-20020a1709073e1400b00a4e5fe98c34si2116745ejc.315.2024.04.01.18.38.10; Mon, 01 Apr 2024 18:38:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=bhns1DRQ; 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 5856768D0EE; Tue, 2 Apr 2024 04:37:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2066.outbound.protection.outlook.com [40.92.75.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 96DE868D092 for ; Tue, 2 Apr 2024 04:37:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N7VFCL5itI+I5B+OTAXeX4Ew1v3EwMUsi5pyH0jqpuT0D52jX5Sz82ATbgbE+lwy9yAJIcp835IeD4Dv11EFA3bWHrlF+sYme8W+gvFxnO0639+Sl4DtCw/tCxZxLyYrs5f1x/LpIy0tn3ecgvbJ2YdAROa/3e2ao195c5dzHfvPGHMca8Xsg1MDXpTCPSr+zyZdlrKxtPE1qNSWB6veoxj9nKsBpLoibzGNt19+ntOEELzEkOTyhkTEaGGktwyuVDKhPdF6CIPi82ZwQpOg8f06hL7cEGVrkKz2sXJO2odmTi2peF6DUvAH1f0LyYhRY8gWbsNZvXIP4oQnE+vNDw== 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=skmtGMrFfvpMMGlWgJd9EIf07xwDI2+6F3f02POnukY=; b=MXDSS9x4grFMt7AATzP+dRTISMhiDNEXFMVIR8COKxlmVOaqsldHyUyk9FjMy2Sa+p0ttCKdh8ygNTN0bvrRF58n81a2Mp8DqURXnR3lFDoD7ikrgKUf3YwA+9pTrDfZKd31xrW3oVQrlcpaEW7gGcxI00tgA8awnvkbheAHV+5hDligIAYqk+YbutQ6vrHLFXNPs8Ekow0AZ0x2qmksFGHYjNtQn8v6F2/j70aP2d/GVVwn445kDQFmTINfz6ahMe4B3dT4eh0TGmgWv/3bKXbNFn3f8BvQSeSNWQHFQtWcVK5yk9Jcapn7HSxLAuVfAEfbem3Il34YJdAbeJ+Uuw== 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=skmtGMrFfvpMMGlWgJd9EIf07xwDI2+6F3f02POnukY=; b=bhns1DRQmCX+qS6IUBQV3NyFOKIsERdeIiM1ozOwEaLlR0EPyL/yX64IHLN8zWg7/ODjaK9CIvQsIQqCt7urq6iLlC7SfvPkRd7H6zyfToZIx2CDJYvPANuLyiZxfIh8Vk7vEfDJqoEDgxYfoH8abRlgpg9loq9cjkzVVxODYDJq14TsDMqlT3HyzHw4bvXYX/+8PuHDDNjEAiJnge9D1yGU11G4sCW5s4ZDxddmoXn5EwlzudTvC0O+Pts1lCO1i7tju0LBEq+bjr4WE5Sml17Nv/l3htjwC8Ywzcx/TSLLbJICxuZYgSZLsCErkX9V9sIa9JZSqsnN03L9VUKd5w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0416.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Tue, 2 Apr 2024 01:37:22 +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; Tue, 2 Apr 2024 01:37:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 2 Apr 2024 03:37:07 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [7r0dnWt7Lu4LWXrh41TLquLR7pehUaMXATuDyvFvM+I=] X-ClientProxiedBy: FR0P281CA0191.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ab::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240402013708.1510327-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0416:EE_ X-MS-Office365-Filtering-Correlation-Id: 72d49391-266e-4ec5-4810-08dc52b57138 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cEAewtTImZgfVx9f1iwPVeNQpTB3UzQPSIGT+mIjdJe1PSIl8bfcfEBdkjYOo2h7CTbiljvBRluHVKeEGJwXxF9SMKvFAtp3Piilf1xOBE8IQ4G8I69bWHOj3mzkG4FKdH65WBSXd0rGtTV38Rn6nt+f1aeQUBNbs+vqIRez8RKU5kzHtJc4kc1c5/npsDnO2x3Kq0On1cNYuyLdBUdfkIo6+98k1DBvbu031Pn1XWTzsGbp53N/RJ1QrYsTjCTUhYzxzYVL7zFtnL/yfGeJK9RQkyWXKDn/DbPIWk5ZZQGzqgonWd7iQ5Hf0pnOor4FTEzoEWwkWkKfr9xumYJfRkDaWbyHEPC1rHanbXyYBqeWM3qpT331IVzgt4K5lGOTde+JSQG74cCzqVA+GzZxaK7XowwcsXSvCjHxdqDGC90BSPmCyEFCb+wpD5Gh1+MyfIYqZq2Ux8I9UARxYSzZvgn8aBl5lX4TcCwnGtHpx7wSmDNj25MrYabzOThkIAPg2YpLP/2JFFFhIPThH6sS0EdSAFmFZuTbWj5l9OIogxKZ1XXXleUYz+YJOTHtEGxu6sdBF8++pqtLqznXQz9/fvh5MHnsqO0a7JUqSCgg5BKfMOK9Cx4ro1/Xy/x+vM5q X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QS2EzNHpfFY//QqRxFNoY3oOpfnyBSIjdW3ZRTuVmi2FOS+oqynHlpJGz76rr5gVKkcqmEbBXH4dJQtVWo/O8Q6y4I8WDjAYJXhw0LZlx0YSm3vJxw5NFHGiylolPvQsIRZisvzJQkNC/CJz3k0Enj3jRrbogDLOJ8kxoLYIdjZoSCs2MwXjR2rZYARIbw+upPXDnsMveDvmhYcG8/PALjH5zJtQrfoekHbIwZN+q0HGuSACAbu8DqG7/AeQ7sNnhqyFc9id/Zm95uDE3LuLXK6hPK5add9V3HZD83jLB4LgZz851tObU+dvXLfZ2cey1TnUCfgvOxhOJlSu5THFPq7XhkZWm+W1BCdNbLc0P0ZY2bs2iSavE9nSsI3qpCzP8eQE5aC7Gg/W5hXdLpuT/a6JC9JvDg6ZNclJdp7T1oS1V6xV1xneG4T8KLlerMcFik06uhjD1bWyrxJfbB9hF/PkOEKMDhXfihCFRQGDukpoxInFDUXhB8KGbGXasZe6o1399ygiyKz8cHx1r0WvFBOT9/MUQaW53kCX813nnqmwb4XhW5H4irnyYYpHjlVn+LIozVNjIBCnCJcZPTHPv9Xxm1VzB7DAT03HcDg9EBK0TNB23HnaX4nga8LBfj4cZs9SjosUBYqT7e6plZ3gOcvWHJPh4MeUJLatx9bfEAQ6k6TbBOEEr4K0gK9n8yYM1/eNKsWbWkx8JCWKXkvOQg2qU2qNwa0dGzN1sJ5NKpy1vC7e6R0SY7uNQBZsLa6Eo42cmVwcgPaZGCn3P/1aIq4n/be0xHGrWh6kCOhaJwPble2t74+OoELU5GSr0vUvW+uINOiALCtN+HdK00bjsdBqGQR338cHtKeosOn6MeBeCrVcaQPZSvmX8u4r/RIx+rAtSNyaRSUPddzLFET3xHq5UgJ4IF+kXSi484g10oTiA9ZdJ8YmITzhbMLEWRTdiA9SImadgCjXBnoIOWvUdN3AltsHJqEZ0IHeJpUT1CESzWMP3ld0ppXJofWUph0TwH7fX1F0egKpQr9imcJewUoHlohoi9Q0q/GhOh2Rqiza/5E+XsBeJAEpEY+x0xATEAJD7ZHh2MERqpto0OvNa3IqRp/j7NtaxA2yrxI6OTCSsvgl4z0TMCm8tSP7c0vBqjtb4BF/L+06oryfr7Ar7nUTgMeEWIkDS1h5DjYYLIweYOqFHbME1Nb+v2BVd6hVTwIkRUjrL/sbL/sVRBJrWGuJIRAGrELbl5e5QI5mXz6nEG6Q/tAUFMVGIs19VuT43qxXP4/2WZVM4xLwUANQ3Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72d49391-266e-4ec5-4810-08dc52b57138 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2024 01:37:22.3313 (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: AS4P250MB0416 Subject: [FFmpeg-devel] [PATCH 6/7] avcodec/dsd: Hoist branch out of loop 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: fhNM5cCjdx4I This is possible by not converting from LSBF to MSBF; instead add LSBF LUTs. This approach necessitates reversing the initial values. Signed-off-by: Andreas Rheinhardt --- libavcodec/dsd.c | 12 ++++++++---- libavcodec/dsddec.c | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/libavcodec/dsd.c b/libavcodec/dsd.c index ec63a706f6..1093c5e2dd 100644 --- a/libavcodec/dsd.c +++ b/libavcodec/dsd.c @@ -68,7 +68,8 @@ static const double htaps[HTAPS] = { 3.423230509967409e-07, 1.244182214744588e-07, 3.130441005359396e-08 }; -static double ctables[CTABLES][256]; +static double ctables_lsbf[CTABLES][256]; +static double ctables_msbf[CTABLES][256]; static av_cold void dsd_ctables_tableinit(void) { @@ -81,8 +82,10 @@ static av_cold void dsd_ctables_tableinit(void) for (t = 0; t < CTABLES; ++t) acc[t] += sign * htaps[t * 8 + m]; } - for (t = 0; t < CTABLES; ++t) - ctables[CTABLES - 1 - t][e] = acc[t]; + for (t = 0; t < CTABLES; ++t) { + ctables_msbf[CTABLES - 1 - t][e] = acc[t]; + ctables_lsbf[CTABLES - 1 - t][ff_reverse[e]] = acc[t]; + } } } @@ -100,13 +103,14 @@ void ff_dsd2pcm_translate(DSDContext* s, size_t samples, int lsbf, unsigned pos, i; uint8_t* p; double sum; + const double (*const ctables)[256] = lsbf ? ctables_lsbf : ctables_msbf; pos = s->pos; memcpy(buf, s->buf, sizeof(buf)); while (samples-- > 0) { - buf[pos] = lsbf ? ff_reverse[*src] : *src; + buf[pos] = *src; src += src_stride; p = buf + ((pos - CTABLES) & FIFOMASK); diff --git a/libavcodec/dsddec.c b/libavcodec/dsddec.c index 2bb2e73b75..dd1ea83784 100644 --- a/libavcodec/dsddec.c +++ b/libavcodec/dsddec.c @@ -56,7 +56,8 @@ static av_cold int decode_init(AVCodecContext *avctx) if (!s) return AVERROR(ENOMEM); - silence = DSD_SILENCE; + silence = avctx->codec_id == AV_CODEC_ID_DSD_LSBF_PLANAR || + avctx->codec_id == AV_CODEC_ID_DSD_LSBF ? DSD_SILENCE_REVERSED : DSD_SILENCE; for (i = 0; i < avctx->ch_layout.nb_channels; i++) { s[i].pos = 0; memset(s[i].buf, silence, sizeof(s[i].buf));