From patchwork Wed Feb 28 16: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: 46619 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp29173pzb; Wed, 28 Feb 2024 08:14:25 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCU7ZZBvSMu5qh26eOqblwYEMrC3gFE/Akh+2ugRzcXgJaUhOQWrOF0vJrVBkwd850hdMVrsYBwiOQLXgmzZktDZLwQ/zXSpmyKDNA== X-Google-Smtp-Source: AGHT+IGn9s8GuC58YDIVnP9YTuaQ5uTUs1Yq3Fd/JNYhRd0eMniljkYuMlI7bt0duMt4B1PvQj2a X-Received: by 2002:a17:906:4148:b0:a3e:8972:4404 with SMTP id l8-20020a170906414800b00a3e89724404mr137379ejk.9.1709136865057; Wed, 28 Feb 2024 08:14:25 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qf42-20020a1709077f2a00b00a44286fbd96si58306ejc.896.2024.02.28.08.14.24; Wed, 28 Feb 2024 08:14:25 -0800 (PST) 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=sLVu4Q8G; 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 A768268CD59; Wed, 28 Feb 2024 18:14:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2035.outbound.protection.outlook.com [40.92.73.35]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E03AD68C7DA for ; Wed, 28 Feb 2024 18:14:13 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GjVaohdmGOMvBImI04P9gFb+jGF++uTwcaErYhmZL+vhNZvHNQhnYEEhuDsNKR3Obo16Y48k+MYWTk9DpwIPpsNPozJ/nFHeDkviHynXsQ2ZWQ0AA0GKMcxBebXbKQpkZQd1Y2umD2OsDN+cgHRA/7MGDuzJFkJEZszWcel8RBjg7H3aItW98XvSQdhc3QLwaDF2XHr93TNxjN9Babuh14OXRhba+c+KqX5HYUpOhoUl+cabU/6x0Vtuf7UWcuYVHiSjZRoVM5+JW/efWWWOl2R3jn2574RcMkD7rhp0NEopwM9WR1qWatO2xNvjm4NPtfS2Kb8Y45m0GyphzDSvzQ== 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=Lln0CKGjuRlVxPPp7wcQbqvK3mGZIetKNrl11JXEe0o=; b=CY3aoNyte99uP/HHKN2njrsfj0nrL97cQOHhKsnqqkKNa5DxZHLwUhHJFNkXDpQKDwALzGkLnc21QQUl5bELhl8Tb79aWRi3tNnAbEHB0+433ts62DHuWaZ1+8BB+psmcV0PGEzGtb8d88tdq6OgHdnMiLCNzDT/3z19l9ilsZBnvGodYd/VIp9BD+hYHTor7I2qiwnucRUY0sQiJRahcGzfExrKBbvHNPge8euKji/WXVRE3tYTWDLl3p2DOYVmGNKuTqVjam17Rw7v37oGIj41qQw+t6Tevg2PClIuGYUQ1AFllMxGUpdGLTSpck/9rsToW6JI1XeqJqWFa82Rgg== 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=Lln0CKGjuRlVxPPp7wcQbqvK3mGZIetKNrl11JXEe0o=; b=sLVu4Q8Gibbtme8oZBeXGCIahT3LEGQ1f81epniT5Cg4afuZrmJxALLlDujpny8q45c4mtHqVGC8EFoQtzVw52EkcR6+fmTTQIEqMUl6Rn7op+RB9VhdPAkm6wTG+oo5yWp+LTiELyJwQJrzGnvKkiS8ePWZ3456JbwCt6Gv4KXLMuh3Z2IUO4eGWLlo8dAAONAu7gloyxaNaH9P8BF3tvjYsUe7KP/CpMc9iEqRi00FwIDjagASVigpllhavTxTTZxZ9oHLTHN1yLm4L9GZkM5/fVm5+itykGAP/6HbZKgccZACMlDhZ1BtQ2tG9fmuRnOzmSQR9FDwbkJDlvI24Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0270.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.37; Wed, 28 Feb 2024 16:14:11 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:14:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:16:00 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [gioJ7704Y4BldJ7xCDgYJehjWdJzyW6y1H+Pev2/4GU=] X-ClientProxiedBy: ZR0P278CA0133.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:40::12) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161605.2187013-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0270:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ea5f468-54f0-4e43-9a22-08dc38784c9d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7G6TCONMynpxtklCClAg0jCPe857+fWlcrvcfq/1rSbRItUG5QdlH3ritPPEktlGTjtDXDDeuQpVNl4nqPMqns9tH746dgYaBJHq4HsakjYEpeporm7mXfth02j3kNKuYffp0uzwzDcHzdkkyegV+UwNqA/j6nrjqMRCajDczq76n28ydfUi2cMBfOw2SKcDmEKl9UWGdjWf9WLpvt8KemixRz0+zA/0IhBwrBwQK6m79HAv6/IjS8VM1DncutHyzijTobBXjv0cRnqIpbxyV/jBR24YLOuLLu8GR18rsa4k7YxrnIE5MDBLUdOxCsw0e3Vu1c1gJlIYajJwYpBjrrinU8SWMcSJXykRg58ylpBR/7n2AJL89m3z3FLKWPkVQcNxa+pPrTY/UgIGD09oVxnVGyu1vr2kpK61Fp3ueTIaX//X5QanY9Q8srwak5QpCu76hNhucq0vIIoOjoAC6jBkZeLOZ1zkv+Y4RB2WTh+kzPLpm9Nr3KadGa5fs2KSirBTqU1fhOlaVu0ZmW6mGEYow06nzDzXeolo/8QZQvqfsG+o0aLsQUokBkg62NUDEiGawj0CGLzJKLCCXWByNSqKOtcMdi5mFLZS8XxYL1Ealq7xTtxaaO+ofURDYPQY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wnYD2XOowYI4tfNvv6taCdhAbXRLFN75Perjh5QmNPfPWDA/wexXtZSeOcl+u0Y/19+WCl9Ky7X1lsqAXxQevwL/9aeNwh/DVCQKmn44wWuQKDtpgir2DrQkDsuicVc2B9CZXnn10JiiauFk+TVX2W6gmjzFNam1a5rwyYtfQSWaJCO6fotpdfFE6Ai0MQl5cJ0io3E7C1U+q/aEAopn/QPBngIteXAvBp5gdv6UV68pk27z1+LBF4pe9l2Kj5ihG1aR7HN3WbY+QD7IAVS1hBcqYkA8dSLAKc+R13OSOw5/+f9uW2uspJlT4r9oSe2W6arh+zeEI2K+VISmCdh4wG7M96NnFzuOoPk29PorCqlikwD1znyGUTsSOaXTQ5aC3YZoMDR0885KU8Tta/Uf8KRRGxzukXejIkFozBxAMr1rD01ypnl1GltJBQJQUtZj7DeoB6AKEC3lBVdhD48OmVgCVGFdiSXggZs0Lu2J1Fe5Xwo4tX3hJnia3zHa02d4rk1V7bwGot0pic4y8x7obL6yRJwPLW5LsqNlUDOqdfB8JWZUTuoUm5IDm9uTwN4Pe2inFoumXIY8UQbVNlN8mEznzuiVwiALYz0UmJMQU0eEmJa5HOSSPsbCqtq1+VKiQUfPUzA8fn4Wgaz+cHL7Aa2Hpkobk7QsLqaFJdmN1+ZGbfC7nkUJAjSYdVc8A11O1nlCRgKOeWxwayrd48tOI+h2AHJshYwDazUgZhyKNd+a2pUt5kcwsOIJBdiRaORNQERilxr8kUQEl5M+oZhrkokoKWvMFCQburWhsIdgw/pNaQne1vhzmE8vnM2uTEUja9KdL1iWw4h6Xj+XoK4f7uDgt2Q3Q4HyFg+us9M7BeQJXaJzv2gO8sq5n28CyN3ZvFPVkzI/i1ZNzgCTZqcB8n2cpMBK8L88NnHcFmXqJ0qp2WMeZJQITAwBko1lgGBycLofdtdzzMPuWCQUE4DyuKNXIDrDtf4mTNTLLpI6lX8Cw4/OXhEreeQKpYQOknWEL4Q4nZNRZPNHXJiiMFQpTVuy/FYpwmqovDoq/5cgU2BCY21x5ixwddKSxe75VKOU3SnrCbcrXUxMYL7lSxTfQ0msi3txI+U61WDxBrWeLX6JRLFJCzkUxRx59kJHxu7ADglfBjnSMdQtsE+gdJhh2GGSalLnn4j3AnULC/ninrsSv8wvkPwtBEZNTmU4TemRcj33d41i+qgVeJ0rgRoh7DCD8ubW9NITkjz+hUfCDmnrEYHi58te0mTA7WfX7mIK4JmaE0eh1wdhp8PaugWEMA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ea5f468-54f0-4e43-9a22-08dc38784c9d X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:14:11.4328 (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: DU2P250MB0270 Subject: [FFmpeg-devel] [PATCH 1/6] avcodec/aacenc: Move initializing DSP out of aacenc.c 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: rGwX+PObNcYU Otherwise aacenc.o gets pulled in by the aacencdsp checkasm test and it in turn pulls the rest of lavc in. Besides being bad size-wise this also has the downside that it pulls in avpriv_(cga|vga16)_font from libavutil which are marked as being imported from another library when building libavcodec as a DLL and this breaks checkasm because it links both lavc and lavu statically. Signed-off-by: Andreas Rheinhardt --- libavcodec/aaccoder.c | 26 +++++------ libavcodec/aaccoder_trellis.h | 2 +- libavcodec/aaccoder_twoloop.h | 2 +- libavcodec/aacenc.c | 21 +++------ libavcodec/aacenc.h | 9 +--- libavcodec/aacenc_is.c | 6 +-- libavcodec/aacenc_ltp.c | 4 +- libavcodec/aacenc_pred.c | 6 +-- libavcodec/aacenc_utils.h | 24 ----------- libavcodec/aacencdsp.h | 72 +++++++++++++++++++++++++++++++ libavcodec/mips/aaccoder_mips.c | 1 + libavcodec/riscv/aacencdsp_init.c | 5 +-- libavcodec/x86/aacencdsp_init.c | 5 +-- tests/checkasm/aacencdsp.c | 10 ++--- 14 files changed, 112 insertions(+), 81 deletions(-) create mode 100644 libavcodec/aacencdsp.h diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c index 6291c16123..4ce54ca886 100644 --- a/libavcodec/aaccoder.c +++ b/libavcodec/aaccoder.c @@ -108,10 +108,10 @@ static av_always_inline float quantize_and_encode_band_cost_template( return cost * lambda; } if (!scaled) { - s->abs_pow34(s->scoefs, in, size); + s->aacdsp.abs_pow34(s->scoefs, in, size); scaled = s->scoefs; } - s->quant_bands(s->qcoefs, in, scaled, size, !BT_UNSIGNED, aac_cb_maxval[cb], Q34, ROUNDING); + s->aacdsp.quant_bands(s->qcoefs, in, scaled, size, !BT_UNSIGNED, aac_cb_maxval[cb], Q34, ROUNDING); if (BT_UNSIGNED) { off = 0; } else { @@ -311,7 +311,7 @@ static void encode_window_bands_info(AACEncContext *s, SingleChannelElement *sce float next_minrd = INFINITY; int next_mincb = 0; - s->abs_pow34(s->scoefs, sce->coeffs, 1024); + s->aacdsp.abs_pow34(s->scoefs, sce->coeffs, 1024); start = win*128; for (cb = 0; cb < CB_TOT_ALL; cb++) { path[0][cb].cost = 0.0f; @@ -522,7 +522,7 @@ static void search_for_quantizers_anmr(AVCodecContext *avctx, AACEncContext *s, } } idx = 1; - s->abs_pow34(s->scoefs, sce->coeffs, 1024); + s->aacdsp.abs_pow34(s->scoefs, sce->coeffs, 1024); for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { start = w*128; for (g = 0; g < sce->ics.num_swb; g++) { @@ -668,7 +668,7 @@ static void search_for_quantizers_fast(AVCodecContext *avctx, AACEncContext *s, if (!allz) return; - s->abs_pow34(s->scoefs, sce->coeffs, 1024); + s->aacdsp.abs_pow34(s->scoefs, sce->coeffs, 1024); ff_quantize_band_cost_cache_init(s); for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { @@ -874,8 +874,8 @@ static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChanne s->fdsp->vector_fmul_scalar(PNS, PNS, scale, sce->ics.swb_sizes[g]); pns_senergy = s->fdsp->scalarproduct_float(PNS, PNS, sce->ics.swb_sizes[g]); pns_energy += pns_senergy; - s->abs_pow34(NOR34, &sce->coeffs[start_c], sce->ics.swb_sizes[g]); - s->abs_pow34(PNS34, PNS, sce->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(NOR34, &sce->coeffs[start_c], sce->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(PNS34, PNS, sce->ics.swb_sizes[g]); dist1 += quantize_band_cost(s, &sce->coeffs[start_c], NOR34, sce->ics.swb_sizes[g], @@ -1012,8 +1012,8 @@ static void search_for_ms(AACEncContext *s, ChannelElement *cpe) S[i] = M[i] - sce1->coeffs[start+(w+w2)*128+i]; } - s->abs_pow34(M34, M, sce0->ics.swb_sizes[g]); - s->abs_pow34(S34, S, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(M34, M, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(S34, S, sce0->ics.swb_sizes[g]); for (i = 0; i < sce0->ics.swb_sizes[g]; i++ ) { Mmax = FFMAX(Mmax, M34[i]); Smax = FFMAX(Smax, S34[i]); @@ -1056,10 +1056,10 @@ static void search_for_ms(AACEncContext *s, ChannelElement *cpe) - sce1->coeffs[start+(w+w2)*128+i]; } - s->abs_pow34(L34, sce0->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); - s->abs_pow34(R34, sce1->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); - s->abs_pow34(M34, M, sce0->ics.swb_sizes[g]); - s->abs_pow34(S34, S, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(L34, sce0->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(R34, sce1->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(M34, M, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(S34, S, sce0->ics.swb_sizes[g]); dist1 += quantize_band_cost(s, &sce0->coeffs[start + (w+w2)*128], L34, sce0->ics.swb_sizes[g], diff --git a/libavcodec/aaccoder_trellis.h b/libavcodec/aaccoder_trellis.h index 4810ff3208..245aa1c11b 100644 --- a/libavcodec/aaccoder_trellis.h +++ b/libavcodec/aaccoder_trellis.h @@ -70,7 +70,7 @@ static void codebook_trellis_rate(AACEncContext *s, SingleChannelElement *sce, float next_minbits = INFINITY; int next_mincb = 0; - s->abs_pow34(s->scoefs, sce->coeffs, 1024); + s->aacdsp.abs_pow34(s->scoefs, sce->coeffs, 1024); start = win*128; for (cb = 0; cb < CB_TOT_ALL; cb++) { path[0][cb].cost = run_bits+4; diff --git a/libavcodec/aaccoder_twoloop.h b/libavcodec/aaccoder_twoloop.h index 0504a916ad..92dc2911a3 100644 --- a/libavcodec/aaccoder_twoloop.h +++ b/libavcodec/aaccoder_twoloop.h @@ -291,7 +291,7 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx, if (!allz) return; - s->abs_pow34(s->scoefs, sce->coeffs, 1024); + s->aacdsp.abs_pow34(s->scoefs, sce->coeffs, 1024); ff_quantize_band_cost_cache_init(s); for (i = 0; i < sizeof(minsf) / sizeof(minsf[0]); ++i) diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index bce4e039dc..3f99188be4 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -1381,7 +1381,11 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) ff_lpc_init(&s->lpc, 2*avctx->frame_size, TNS_MAX_ORDER, FF_LPC_TYPE_LEVINSON); s->random_state = 0x1f2e3d4c; - ff_aac_dsp_init(s); + ff_aacenc_dsp_init(&s->aacdsp); + +#if HAVE_MIPSDSP + ff_aac_coder_init_mips(s); +#endif ff_af_queue_init(avctx, &s->afq); @@ -1435,18 +1439,3 @@ const FFCodec ff_aac_encoder = { AV_SAMPLE_FMT_NONE }, .p.priv_class = &aacenc_class, }; - -void ff_aac_dsp_init(AACEncContext *s){ - s->abs_pow34 = abs_pow34_v; - s->quant_bands = quantize_bands; - -#if ARCH_RISCV - ff_aac_dsp_init_riscv(s); -#elif ARCH_X86 - ff_aac_dsp_init_x86(s); -#endif - -#if HAVE_MIPSDSP - ff_aac_coder_init_mips(s); -#endif -} diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h index 752f1c26b2..c18e828905 100644 --- a/libavcodec/aacenc.h +++ b/libavcodec/aacenc.h @@ -33,6 +33,7 @@ #include "put_bits.h" #include "aac.h" +#include "aacencdsp.h" #include "audio_frame_queue.h" #include "psymodel.h" @@ -233,19 +234,13 @@ typedef struct AACEncContext { uint16_t quantize_band_cost_cache_generation; AACQuantizeBandCostCacheEntry quantize_band_cost_cache[256][128]; ///< memoization area for quantize_band_cost - void (*abs_pow34)(float *out, const float *in, const int size); - void (*quant_bands)(int *out, const float *in, const float *scaled, - int size, int is_signed, int maxval, const float Q34, - const float rounding); + AACEncDSPContext aacdsp; struct { float *samples; } buffer; } AACEncContext; -void ff_aac_dsp_init(AACEncContext *s); -void ff_aac_dsp_init_riscv(AACEncContext *s); -void ff_aac_dsp_init_x86(AACEncContext *s); void ff_aac_coder_init_mips(AACEncContext *c); void ff_quantize_band_cost_cache_init(struct AACEncContext *s); diff --git a/libavcodec/aacenc_is.c b/libavcodec/aacenc_is.c index 1810790d88..4943b6450c 100644 --- a/libavcodec/aacenc_is.c +++ b/libavcodec/aacenc_is.c @@ -59,9 +59,9 @@ struct AACISError ff_aac_is_encoding_err(AACEncContext *s, ChannelElement *cpe, float minthr = FFMIN(band0->threshold, band1->threshold); for (i = 0; i < sce0->ics.swb_sizes[g]; i++) IS[i] = (L[start+(w+w2)*128+i] + phase*R[start+(w+w2)*128+i])*sqrt(ener0/ener01); - s->abs_pow34(L34, &L[start+(w+w2)*128], sce0->ics.swb_sizes[g]); - s->abs_pow34(R34, &R[start+(w+w2)*128], sce0->ics.swb_sizes[g]); - s->abs_pow34(I34, IS, sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(L34, &L[start+(w+w2)*128], sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(R34, &R[start+(w+w2)*128], sce0->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(I34, IS, sce0->ics.swb_sizes[g]); maxval = find_max_val(1, sce0->ics.swb_sizes[g], I34); is_band_type = find_min_book(maxval, is_sf_idx); dist1 += quantize_band_cost(s, &L[start + (w+w2)*128], L34, diff --git a/libavcodec/aacenc_ltp.c b/libavcodec/aacenc_ltp.c index f3075f0e71..591ff6aedf 100644 --- a/libavcodec/aacenc_ltp.c +++ b/libavcodec/aacenc_ltp.c @@ -190,8 +190,8 @@ void ff_aac_search_for_ltp(AACEncContext *s, SingleChannelElement *sce, FFPsyBand *band = &s->psy.ch[s->cur_channel].psy_bands[(w+w2)*16+g]; for (i = 0; i < sce->ics.swb_sizes[g]; i++) PCD[i] = sce->coeffs[start+(w+w2)*128+i] - sce->lcoeffs[start+(w+w2)*128+i]; - s->abs_pow34(C34, &sce->coeffs[start+(w+w2)*128], sce->ics.swb_sizes[g]); - s->abs_pow34(PCD34, PCD, sce->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(C34, &sce->coeffs[start+(w+w2)*128], sce->ics.swb_sizes[g]); + s->aacdsp.abs_pow34(PCD34, PCD, sce->ics.swb_sizes[g]); dist1 += quantize_band_cost(s, &sce->coeffs[start+(w+w2)*128], C34, sce->ics.swb_sizes[g], sce->sf_idx[(w+w2)*16+g], sce->band_type[(w+w2)*16+g], s->lambda/band->threshold, INFINITY, &bits_tmp1, NULL); diff --git a/libavcodec/aacenc_pred.c b/libavcodec/aacenc_pred.c index f87fcd5a00..a486c44d42 100644 --- a/libavcodec/aacenc_pred.c +++ b/libavcodec/aacenc_pred.c @@ -270,7 +270,7 @@ void ff_aac_search_for_pred(AACEncContext *s, SingleChannelElement *sce) continue; /* Normal coefficients */ - s->abs_pow34(O34, &sce->coeffs[start_coef], num_coeffs); + s->aacdsp.abs_pow34(O34, &sce->coeffs[start_coef], num_coeffs); dist1 = ff_quantize_and_encode_band_cost(s, NULL, &sce->coeffs[start_coef], NULL, O34, num_coeffs, sce->sf_idx[sfb], cb_n, s->lambda / band->threshold, INFINITY, &cost1, NULL); @@ -279,7 +279,7 @@ void ff_aac_search_for_pred(AACEncContext *s, SingleChannelElement *sce) /* Encoded coefficients - needed for #bits, band type and quant. error */ for (i = 0; i < num_coeffs; i++) SENT[i] = sce->coeffs[start_coef + i] - sce->prcoeffs[start_coef + i]; - s->abs_pow34(S34, SENT, num_coeffs); + s->aacdsp.abs_pow34(S34, SENT, num_coeffs); if (cb_n < RESERVED_BT) cb_p = av_clip(find_min_book(find_max_val(1, num_coeffs, S34), sce->sf_idx[sfb]), cb_min, cb_max); else @@ -291,7 +291,7 @@ void ff_aac_search_for_pred(AACEncContext *s, SingleChannelElement *sce) /* Reconstructed coefficients - needed for distortion measurements */ for (i = 0; i < num_coeffs; i++) sce->prcoeffs[start_coef + i] += QERR[i] != 0.0f ? (sce->prcoeffs[start_coef + i] - QERR[i]) : 0.0f; - s->abs_pow34(P34, &sce->prcoeffs[start_coef], num_coeffs); + s->aacdsp.abs_pow34(P34, &sce->prcoeffs[start_coef], num_coeffs); if (cb_n < RESERVED_BT) cb_p = av_clip(find_min_book(find_max_val(1, num_coeffs, P34), sce->sf_idx[sfb]), cb_min, cb_max); else diff --git a/libavcodec/aacenc_utils.h b/libavcodec/aacenc_utils.h index ef2218e036..cc747c3ea6 100644 --- a/libavcodec/aacenc_utils.h +++ b/libavcodec/aacenc_utils.h @@ -37,15 +37,6 @@ #define ROUND_TO_ZERO 0.1054f #define C_QUANT 0.4054f -static inline void abs_pow34_v(float *out, const float *in, const int size) -{ - int i; - for (i = 0; i < size; i++) { - float a = fabsf(in[i]); - out[i] = sqrtf(a * sqrtf(a)); - } -} - static inline float pos_pow34(float a) { return sqrtf(a * sqrtf(a)); @@ -62,21 +53,6 @@ static inline int quant(float coef, const float Q, const float rounding) return sqrtf(a * sqrtf(a)) + rounding; } -static inline void quantize_bands(int *out, const float *in, const float *scaled, - int size, int is_signed, int maxval, const float Q34, - const float rounding) -{ - int i; - for (i = 0; i < size; i++) { - float qc = scaled[i] * Q34; - int tmp = (int)FFMIN(qc + rounding, (float)maxval); - if (is_signed && in[i] < 0.0f) { - tmp = -tmp; - } - out[i] = tmp; - } -} - static inline float find_max_val(int group_len, int swb_size, const float *scaled) { float maxval = 0.0f; diff --git a/libavcodec/aacencdsp.h b/libavcodec/aacencdsp.h new file mode 100644 index 0000000000..67836d8cf7 --- /dev/null +++ b/libavcodec/aacencdsp.h @@ -0,0 +1,72 @@ +/* + * 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 + */ + +#ifndef AVCODEC_AACENCDSP_H +#define AVCODEC_AACENCDSP_H + +#include + +#include "config.h" + +#include "libavutil/macros.h" + +typedef struct AACEncDSPContext { + void (*abs_pow34)(float *out, const float *in, const int size); + void (*quant_bands)(int *out, const float *in, const float *scaled, + int size, int is_signed, int maxval, const float Q34, + const float rounding); +} AACEncDSPContext; + +void ff_aacenc_dsp_init_riscv(AACEncDSPContext *s); +void ff_aacenc_dsp_init_x86(AACEncDSPContext *s); + +static inline void abs_pow34_v(float *out, const float *in, const int size) +{ + for (int i = 0; i < size; i++) { + float a = fabsf(in[i]); + out[i] = sqrtf(a * sqrtf(a)); + } +} + +static inline void quantize_bands(int *out, const float *in, const float *scaled, + int size, int is_signed, int maxval, const float Q34, + const float rounding) +{ + for (int i = 0; i < size; i++) { + float qc = scaled[i] * Q34; + int tmp = (int)FFMIN(qc + rounding, (float)maxval); + if (is_signed && in[i] < 0.0f) { + tmp = -tmp; + } + out[i] = tmp; + } +} + +static inline void ff_aacenc_dsp_init(AACEncDSPContext *s) +{ + s->abs_pow34 = abs_pow34_v; + s->quant_bands = quantize_bands; + +#if ARCH_RISCV + ff_aacenc_dsp_init_riscv(s); +#elif ARCH_X86 + ff_aacenc_dsp_init_x86(s); +#endif +} + +#endif diff --git a/libavcodec/mips/aaccoder_mips.c b/libavcodec/mips/aaccoder_mips.c index bf27a2a5da..dd9661fbdd 100644 --- a/libavcodec/mips/aaccoder_mips.c +++ b/libavcodec/mips/aaccoder_mips.c @@ -61,6 +61,7 @@ #include "libavcodec/put_bits.h" #include "libavcodec/aac.h" #include "libavcodec/aacenc.h" +#include "libavcodec/aacencdsp.h" #include "libavcodec/aactab.h" #include "libavcodec/aacenctab.h" #include "libavcodec/aacenc_utils.h" diff --git a/libavcodec/riscv/aacencdsp_init.c b/libavcodec/riscv/aacencdsp_init.c index 83ae16f46b..b27af9d973 100644 --- a/libavcodec/riscv/aacencdsp_init.c +++ b/libavcodec/riscv/aacencdsp_init.c @@ -22,13 +22,12 @@ #include "config.h" #include "libavutil/attributes.h" -#include "libavutil/float_dsp.h" #include "libavutil/cpu.h" -#include "libavcodec/aacenc.h" +#include "libavcodec/aacencdsp.h" void ff_abs_pow34_rvv(float *out, const float *in, const int size); -av_cold void ff_aac_dsp_init_riscv(AACEncContext *s) +av_cold void ff_aacenc_dsp_init_riscv(AACEncDSPContext *s) { #if HAVE_RVV int flags = av_get_cpu_flags(); diff --git a/libavcodec/x86/aacencdsp_init.c b/libavcodec/x86/aacencdsp_init.c index 049a2417d9..e0d8dec4f8 100644 --- a/libavcodec/x86/aacencdsp_init.c +++ b/libavcodec/x86/aacencdsp_init.c @@ -22,9 +22,8 @@ #include "config.h" #include "libavutil/attributes.h" -#include "libavutil/float_dsp.h" #include "libavutil/x86/cpu.h" -#include "libavcodec/aacenc.h" +#include "libavcodec/aacencdsp.h" void ff_abs_pow34_sse(float *out, const float *in, const int size); @@ -32,7 +31,7 @@ void ff_aac_quantize_bands_sse2(int *out, const float *in, const float *scaled, int size, int is_signed, int maxval, const float Q34, const float rounding); -av_cold void ff_aac_dsp_init_x86(AACEncContext *s) +av_cold void ff_aacenc_dsp_init_x86(AACEncDSPContext *s) { int cpu_flags = av_get_cpu_flags(); diff --git a/tests/checkasm/aacencdsp.c b/tests/checkasm/aacencdsp.c index 6fc22047c3..1756c4ecd5 100644 --- a/tests/checkasm/aacencdsp.c +++ b/tests/checkasm/aacencdsp.c @@ -20,10 +20,9 @@ #include -#include "libavutil/mem.h" #include "libavutil/mem_internal.h" -#include "libavcodec/aacenc.h" +#include "libavcodec/aacencdsp.h" #include "checkasm.h" @@ -36,7 +35,8 @@ } \ } while (0) -static void test_abs_pow34(AACEncContext *s) { +static void test_abs_pow34(AACEncDSPContext *s) +{ #define BUF_SIZE 1024 LOCAL_ALIGNED_32(float, in, [BUF_SIZE]); @@ -63,8 +63,8 @@ static void test_abs_pow34(AACEncContext *s) { void checkasm_check_aacencdsp(void) { - AACEncContext s = { 0 }; - ff_aac_dsp_init(&s); + AACEncDSPContext s = { 0 }; + ff_aacenc_dsp_init(&s); test_abs_pow34(&s); } From patchwork Wed Feb 28 16:18:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46617 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp31017pzb; Wed, 28 Feb 2024 08:17:02 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUothSv4SVFXnyVin617Ayqya/lfQL4S6IsxwkxuKPXlM+VGurqDszsGoQywb8RZZ9cJ5vS+O7FteeZ0m+kWnbvkTIfTaJFEXz8Nw== X-Google-Smtp-Source: AGHT+IG+KAfzC4G/NInLrzdBaR1FGZN2Kz3pKJp+jrlonA8e6JPEYYZfA64x1P6HeRDNIBkTIdj8 X-Received: by 2002:a17:906:3bd7:b0:a43:199b:cc9c with SMTP id v23-20020a1709063bd700b00a43199bcc9cmr91246ejf.75.1709137022042; Wed, 28 Feb 2024 08:17:02 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gs41-20020a1709072d2900b00a43ab5e386csi1713788ejc.734.2024.02.28.08.17.01; Wed, 28 Feb 2024 08:17:02 -0800 (PST) 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=L7sehdFT; 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 D3C0968CD66; Wed, 28 Feb 2024 18:16:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2042.outbound.protection.outlook.com [40.92.90.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6E3068CCAF for ; Wed, 28 Feb 2024 18:16:52 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V0YJDb6INlLDU3NiHT9kZTCjYgszQwVEgRIDCCKZlBpndgtQ0NkfT2U4o3YHBPCRTDkK94Zl181tssQM6BoAaG3mTlH7HuC2kzyvvGj3XP1tPXceMpDmfz4n5JClQIbpNjhur+6hwaaNBVWoVD6O/wxmqkH7HTdtohkQ4MtNLCrvtCSpp7bzzQ/lByDI/+Zm4YpDzjHZb8Ta/RHi3BFY2UxdRC/zDrHX1Jm2+cQXcTIK7QeR5epebU/PjNbF4cK4ve5QpN4UDFbDeB0zpP40J9bF5cMS6UusRFpcAyK1KxodIETM1J/xtl6u8mDDIaA3TOzk+or/nY9a4RR9Ej2xHA== 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=ziENMrsj2mVkhNxXrHXBeard+eG8QBww7kvGOdjdEDk=; b=bAtZ13ikR2kIvkawlPRZ2f0GLfHDkop00JYVLttTW/95gL8n783bWCNfwV8pjHjPbpZ7R1+5vSBzawSP9obMBIL5XwkrTfZDhg/zOoEy8MS3yquQQf8/9m0nc9Q0eNCYJf+3QJIBiUCqXA7q7Pn0WtoDHhjgd3kYA7O0V9qORbd6QCWAGDYWU73smpI1S9O9ChDWhFA3rgtleMoEMefVFblYEv/+hvoxQsv+ZGvxSQCNDpoZPSg0NY28w5YjiJtCdAaiSqaZWgWumhH/L36ir3gQ2Z8m0PzKDsnvLfUyiEm3N4Hu6Q4YZ7u8hrazb2SvtqrMc2kxgLS/SFnHK0ofVw== 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=ziENMrsj2mVkhNxXrHXBeard+eG8QBww7kvGOdjdEDk=; b=L7sehdFTx2TwGHMDba5Ii+BunxBpZDaNz/Pf3ger65fr3XAW8i1OY0VJQqN/cOiQou9e8IpAm8apILjLJrJBX5rqnUNhcXlOmDDOTQq8YDNAmQa42IAIVvTSnQt7wvpRUvsiTLvFhzLsHXILjt3YKETLeIBH8XGvCfw9w9GvE91Dw4OG4bu6mZ/WX9q/sElNCo+kIXRQjrwZTsLWpjRyw7MZEb0kM+7Co5LEHEUZtL5U8retaz0XVAiWkv+I6BTxzX37mNWD5M0QTqmZ0YOYNUoC0nW7FaksVgYzlGhYEQF1PEtwzBLiiPBDtBRuL6NucfwXKn6ijqjUZqUJsinIpQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0512.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Wed, 28 Feb 2024 16:16:51 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:16:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:18:40 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [+qPzhlcT/tv3keYEf11EOnh1v3OJ3MLDwiy6gKKAJB4=] X-ClientProxiedBy: ZR2P278CA0067.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161844.2187053-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0512:EE_ X-MS-Office365-Filtering-Correlation-Id: 7235c1cb-40ee-4f0e-f5fe-08dc3878abe0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kq7TMaSOopumEHq0pwPZfxWSecGE74ObBJndVHq6LLYujI2e80gON291IKH4JFQ007twef2ShYltTvHB2oXjRVG8a3IRwfqRhpEBRU9rW/pqSib6N3i2fHp2pNXKsH4DzEBHU1PWVqZo2nYkA72Bbz2qPLOTVQ1EdwvO3/oC6uw4DoDDmfGsgQ5nyZNWXa7unh5BqN409eem4oHHOXnpnWecDzL4aS3jYdsTrQfzx2w8eyOoLPN7+Sk1c1JecDqY5xi6fCSVNgQ7tvakmmDFyWgeCkdeiCfHGBXZ14lgCov8YJler4ixvjduFcZvOE9/SBh3YAQeQMyIJqGnFZooIpFHzcJo32zi664zU5O3rKHcYAN5hhB7Io/dp5i2FUFZoXGZnnwXP3gjC5rzKLmOMfSdhM+zaLsJCrQDreEGbACn3dZgeB0kzfxy19RRNgtH3AZ2k/PXJDT89XwUyU0XFJuh5tksUPzSrbrn+YjEypeVQzqf4rwICAXJrPPH3wFIC05oN8qNu5XT4qXs1uinCWauxL+b1wkONXdfApviRi8Lv0fu2PecVNIGLvbxmcqXjdHt2G5Q6+8aXy2J4WvQB9BV7bODC2hUtDcCgPMmEUV0ImXxwXSRMjWrWaw3cmNz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QqqWMFr+YPw1wGXvd1j5uahvQpi7EJC3/d4fhnVGboVNBeiGO66C+G1t9mVEGDHx/s1sQafB1hr6roD6N+2YOB1HTmTBN3KN+/5oVCyERBWil5cyZwimajPONbfNY19kNZtei/1GY8PQPx1yD7LpXmStMUQ+zoCkIfOSwGBAwKCxJiYioNMy73ffneatxUcP3SAvO9bSbvyhBIvFCE/pfMXJKRNJR6HlX+97KBdOPDSMwGpWsu68Cy6j35sqTgXjPIOxV10Lp0OVQ7hcO0CGj9DrGqz9EPLqiKEhsBXG3UHU6Xp8tFAzdBb9sPiFT+2G//xhoAGFKvkNDPnpwdl3lee+cW8Mya5yhmlHW8yx82z+eQz+h2BKtp8fgtt9UsKZL+cnYeCPIhmFPdyYnEjO6Ea4OjSk736eR3w/RFCWk9O7spA1EXgLM9WiVYLgZdAKse1mtp7jM4HlzmPLFmBc1j/U7shAzBv6YelMKrG2H4hhsJXAMORAzdc+CtUGcWfk/ruyrbSzsFocyiaW1TsrUFBPEVsBeATCYAW+OdCEpN+4hEDFnfa/Wfd8DL7Agp6xPd1SuQ6sLkS+TqCi4utjxJSM2ZrbW2I0XMcEop0/07O0g7HbjElhUsIXu3Uc+bWknV7m1VTh//hcMOQQHZO08hjGCCpAJ6FzMufjbb6FNLOZz5+u6JhxLl0/GabdPODzBj/KO+gmTN236JdSTkn8+qzTS8yJpjrBhyKfHeFqwy0JaghVhjEe6I4cu6D6mdBGY9dVgZ5YrbMWPBDON9Bp7o/08B2qHmrS0mYl7gd2L9YNM85P1go449N+QCAl7QylO6bLXGB8TVRfGx2T+hVEH66O10w1BgJYwgYGbZE5mDdnJw+Y4XJ6J+eta/isg2ZuXOl2bjq+scwYbmjOPjDc6J/mk4f/Ztcr2opG4T57/UB25pUQ4fFmyC6LB8ELbnQnkmpGwD9qNj97s2Hjjx+VusN2GHEiXNpXxbDvn7j57PvLPmjKt+injBI3kp6WKgQyOFCpwuYoQBmKvBgkiVjf176FLN1q057FkdiOdGS41xtCJEwvcYqsQrIooQp9hW3DpxCyD2jNOHAs8y8pF5CShM+qLB6epP+ID3yVZe+lZEVHUJp4xXHStziZw8Vrh0EoCZDUXzB5usTyAC4GKZi1vMR7FMjcLhBTbwooiziOrnxQ4nvavmCvca9yMF4g1wLzHowDLr8p0xNVwYcUASYDzg5DI2mwyBcQis7h3hV5O6UvFFqB61gaTixLvUPAM3Mv19TU8GRvBy7xlLD6ccIAzQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7235c1cb-40ee-4f0e-f5fe-08dc3878abe0 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:16:51.4880 (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: AS4P250MB0512 Subject: [FFmpeg-devel] [PATCH 2/6] avcodec/svq1enc: Move initializing DSP out of svq1enc.c 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: ESkSxEUoDMTd Otherwise svq1enc.o gets pulled in by the svq1encdsp checkasm test and it in turn pulls the rest of lavc in. Besides being bad size-wise this also has the downside that it pulls in avpriv_(cga|vga16)_font from libavutil which are marked as being imported from another library when building libavcodec as a DLL and this breaks checkasm because it links both lavc and lavu statically. Signed-off-by: Andreas Rheinhardt --- libavcodec/svq1enc.c | 23 ----------------------- libavcodec/svq1encdsp.h | 26 +++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c index 5675ae5218..77dbf07275 100644 --- a/libavcodec/svq1enc.c +++ b/libavcodec/svq1enc.c @@ -137,16 +137,6 @@ static void svq1_write_header(SVQ1EncContext *s, PutBitContext *pb, int frame_ty #define QUALITY_THRESHOLD 100 #define THRESHOLD_MULTIPLIER 0.6 -static int ssd_int8_vs_int16_c(const int8_t *pix1, const int16_t *pix2, - intptr_t size) -{ - int score = 0, i; - - for (i = 0; i < size; i++) - score += (pix1[i] - pix2[i]) * (pix1[i] - pix2[i]); - return score; -} - static int encode_block(SVQ1EncContext *s, uint8_t *src, uint8_t *ref, uint8_t *decoded, int stride, unsigned level, int threshold, int lambda, int intra) @@ -760,16 +750,3 @@ const FFCodec ff_svq1_encoder = { AV_PIX_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; - -void ff_svq1enc_init(SVQ1EncDSPContext *c) -{ - c->ssd_int8_vs_int16 = ssd_int8_vs_int16_c; - -#if ARCH_PPC - ff_svq1enc_init_ppc(c); -#elif ARCH_RISCV - ff_svq1enc_init_riscv(c); -#elif ARCH_X86 - ff_svq1enc_init_x86(c); -#endif -} diff --git a/libavcodec/svq1encdsp.h b/libavcodec/svq1encdsp.h index 5dfa35cc62..751b5eed86 100644 --- a/libavcodec/svq1encdsp.h +++ b/libavcodec/svq1encdsp.h @@ -23,14 +23,38 @@ #include +#include "config.h" + typedef struct SVQ1EncDSPContext { int (*ssd_int8_vs_int16)(const int8_t *pix1, const int16_t *pix2, intptr_t size); } SVQ1EncDSPContext; -void ff_svq1enc_init(SVQ1EncDSPContext *c); void ff_svq1enc_init_ppc(SVQ1EncDSPContext *c); void ff_svq1enc_init_riscv(SVQ1EncDSPContext *c); void ff_svq1enc_init_x86(SVQ1EncDSPContext *c); +static int ssd_int8_vs_int16_c(const int8_t *pix1, const int16_t *pix2, + intptr_t size) +{ + int score = 0; + + for (intptr_t i = 0; i < size; i++) + score += (pix1[i] - pix2[i]) * (pix1[i] - pix2[i]); + return score; +} + +static inline void ff_svq1enc_init(SVQ1EncDSPContext *c) +{ + c->ssd_int8_vs_int16 = ssd_int8_vs_int16_c; + +#if ARCH_PPC + ff_svq1enc_init_ppc(c); +#elif ARCH_RISCV + ff_svq1enc_init_riscv(c); +#elif ARCH_X86 + ff_svq1enc_init_x86(c); +#endif +} + #endif /* AVCODEC_SVQ1ENCDSP_H */ From patchwork Wed Feb 28 16:18:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46620 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp31109pzb; Wed, 28 Feb 2024 08:17:11 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWIZKLDwu/2wZnbL6RyNM+05d24ZDn5rYUYLC8hs1cC/eLVgOxfa3u9TRPattyHDnWvqwoQp26/k/LH7SpbCMjz0fnB3a63LPE9hw== X-Google-Smtp-Source: AGHT+IFciePI/5x4TrdCLrQiEfZfYDPobrHLUnGHTtQnOy99mPHymsbJvku7oXxqH6EH1nNXOItB X-Received: by 2002:a17:906:1784:b0:a3f:870:535c with SMTP id t4-20020a170906178400b00a3f0870535cmr129691eje.44.1709137031518; Wed, 28 Feb 2024 08:17:11 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p9-20020a170906614900b00a3f5b2c86f9si1815999ejl.820.2024.02.28.08.17.11; Wed, 28 Feb 2024 08:17:11 -0800 (PST) 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=dv75Tf9U; 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 23E9568CD84; Wed, 28 Feb 2024 18:17:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04olkn2089.outbound.protection.outlook.com [40.92.75.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DABD368CCAF for ; Wed, 28 Feb 2024 18:16:58 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G60bMwipVpBdnH4slhdTd+bWYI44Yp7WauBhJ85Pwi4EwZ4Kc4KAHK3QMASwgXcDS77ltMhLzdjYsxvHE09M3Riq5kiAQqsmff/qv8geylvLXBqRTMFy6UFPmri2p+qT/kGRc82ZH4kTAGJvBCKL4pR7/dDOdV92mKGM1p1gql55VFYARHbDizlUjlO6PGPnmh9r7I2xth4UcmfKF/Q5f3gt7Apknyn+Z1mL2aBZEXGUXI8Y5dQJN+IXbrCLffrcREZW+PUlAFyUaJJB8+wUqPuTMwy4p8Oa7TPYdpXIqoqkS9S6KGtqhBeXCw7Adrw8fqzCz9QgJfwPy7492kiBWQ== 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=cqeOC59ktoevdB5SBZJYAM5cSehafFmB95sHPL6TCRE=; b=RKpEkUUUAKrwvb1KPsQ8P/nXTdoadHwpQoH+zhdccBF5YnRQqSZ0cOCvOScHVqS4ZlM5feRhLxliYL7nYjoKO7OESQ9nodFEOhLl7LcUXstoG2W9vwX1sTfh/yWKt+6LHRrq3TFUrmPWiKnMZyzRK+JrqfIYOhmi/PhUs6Qvr8D1jM5129eZXn2OhKCXYK8iQKL6qPQofIJrN6dN8b2ThaAsrIHXYoTnwQi8mtNpuF5dLgMcJXyy+kc/2wph36swtzm8k6hA1sIXvnia6iVNSbSCq3HUwkVyvy52uJh9XtRv1TXuz4o0jPti2Tl5JAZ4C7COS/rXI6BztnASiAPDwQ== 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=cqeOC59ktoevdB5SBZJYAM5cSehafFmB95sHPL6TCRE=; b=dv75Tf9UeCNm/JzO9960JUlUFTHtHnHrt33S6CT5stbnJzMYYZ2ljIkN4lRBl/T9X7GqhHG1hf+GgUmsVbVonLkBlIc/ZY2tr8TRIGCh6YmLJiIiEwUflxQiCnJHhJ/r9QwdrfEnCT4QE8NmyS6iEm8ga9JRb2U/UOCpSpn9Bd66f5gR3VQQK0oDtKJIZQPM0OYtDFbsiYDHvfPGGp6M8K8ODLwDm0NbH/69sBIQ5D+fbcCGABGlgnH9gF1klY13e6AkHNgCL3/V0A5xmuJDXfhRIzV3RGM6d2FBkM/Ml7OSDsjyTJ/yy7diT1qsTRn+1gWVLVOyTuVeL+/6ykrN3g== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0512.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Wed, 28 Feb 2024 16:16:56 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:16:56 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:18:41 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [cNY3J560TkQ7HyoodwnSFNfjMwfu7vC+FKM3ZnCpgz4=] X-ClientProxiedBy: ZR2P278CA0067.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161844.2187053-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0512:EE_ X-MS-Office365-Filtering-Correlation-Id: a9e550a8-bddc-4182-3564-08dc3878af18 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mHjfsKf0PK0syY/WkMOibIzPv8RHhqwXstmoCKwRUFBXXuiMG1BFJt33yf8c8mqHeRFPaNcPnJWjGfg8064QxKTrzTGEKs76IQcH7Homwkm+nbI5LKcbnJhg4F+8iQzUSQMSylqFm6DRQ7cnKDmQnjF1eTHKeVv4NZgHPBIitMNmmzmy1ArQb2rO4tMtT0/kth8VQARMkKdkriif+MYptP5NnNwl9ZtJJKVxLT2BdPx7upAsILlw2HAhG21RfBnpttY91DA1cUHYLQh6bejmOVuIhAL5rVrwNRWCZwm7s8jEjJhBlUwC4aYsHv96ruExR6hDwvIDKQ6Ca9qrFCPNEs6/P1cGILuSEizluJuMP6w8WA4rmTsasC7V0CMvRj8kWCs7huRYOZi3bDEBrrXjO22nA0UANjJYmhB1bSWJVlqG9iEcJxqokQ9TRQ0OFzjlknKbB1EDg0IvqarreGys+Z8RZR5TraE43SwNZ943AFPu2NUmefKTBn9Iyzn0bW7YGh+7bBAoLq2twPfjMukYmKWRZsBDDwWUbaY6ryBvLG9qC/jUsSVoNQClOIRG8JF1DkGV/8kV+5hiZVx3YpzFErfFfOH+DfF+gbZT7kPtWIIiJEV/JTuXROhEVWx85jpp X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yqQSosahyiyrmBmMxi482t01uACWESW/Cq0+csJm1b+UORE8NGwp9hi9Ur6Fa5hr4IHV0YmSbD2xfDO298o2E86f/KWTzJUobXR3y3nNSKpp+tPf83fONxldHk60CNop2BWIRMYT35094520YXD3pIR/f9VjPfqFuKmYX3OZ3xxjZ79EFsz4ooZiiCyeZGib8ml0K8+Vn8F2xlfanFuONttEZfrrQ3n0h2BlNYXs0ZJtxmf0ijn6nyTVgxI0z9pWISkjLBKQ825Uo2fp5effNRWC/cPcDZ+BemPgTB32LEq9TSCvXSYhzsKZe8/4gw+D75pE4u5groaVAmXnrFAz3cnHbOjlXYzG/d9OM/hbK0fohfZapHdQV75ZzQLd5+qQJ3VHoLb3BtQ+eKXyjqtFRV0sLOH4wxq2TdzuPjYNqzxjovgSHNiGO+lOzzvNKODzv0iNddcEdlUCJcVQdoVsulXTgMTWvaMV3K0XalkP1xKq85isItpDprd7ADxfDzT3wqdlbsy0qSqPl05M4rzhfzSn7DGeF8On2Ya0b2x2tfTWokgeHCyd6cyw+5T1sSTsoHmq7Z+rBdDgQqXOJ6JT7wMdjfSOvXin//FRJtX+x92L1HZh2BIMQrchJv1QCQohaB4tpSjR8n30HI5/v4jsQz02tomhKZ6DaqhJA2LrCiK0s37ISL4lAaD6xA1TEw8Wmk4E0UXBHvj4HVxwxdqToK3+p/yNFHgar0Q/TOQ/TZr58zz0JOb9twR2i1D51tj1kf1CZ/1jsq0tAiv/9jyHd1YVsfnH76Pq5AwH76mzBu5rnw0VwjJUC8JZlXDaun1g2a4VZRuIbDeqCzKo20Dgi7QAJPfYI1JJhVAaZ7ZoqMcoTy9S37mDCcB7AawYKOJZshpmTmvWl9GWmiNJe5L3xBxsASAd+TIpA3KyPFopUZxEjpEZhkWvhOefWNSQ1Dkx5Fxu17kDRlwC/2a+1dspdB/1OryS51Kb1p5zDEKIvwo0MFvPTlkDb8hQB81vu4m3FI+tqT0TDsAL38DLZUwHtAbM2N6Uo6Wq+5FFLVqRsUeCSrObs1OvBXw6+s3J/C3RCSjRr496yZWDrVoOmUFkJDCszeZpEfTB4TPOji3M4HuSNJ1JSw4LQVyaWrx68AqZg4IsbL6NJcWBlYdF5eNigTA1cQsR30bZI0R95UgR6ds6werX4X/lUicV9UPoKLNoGxKvY11YMojA47MW0nVK8anudV8NLqsBqgQ00hlUzeen0J0U7NknQDPH+Kiw7Drib6Nuj5vkuLpOMbGLpmmtlg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9e550a8-bddc-4182-3564-08dc3878af18 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:16:56.6345 (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: AS4P250MB0512 Subject: [FFmpeg-devel] [PATCH 3/6] avcodec/vvc/vvc_intra: Move utils out of svq1enc.c 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: drEqefPpUGop Otherwise vvc_intra.o gets pulled in by the vvc_mc checkasm test and it in turn pulls vvc_ctu.o and then the rest of vvcdec and lavc in. Besides being bad size-wise this also has the downside that it pulls in avpriv_(cga|vga16)_font from libavutil which are marked as being imported from another library when building libavcodec as a DLL and this breaks checkasm because it links both lavc and lavu statically. Signed-off-by: Andreas Rheinhardt --- libavcodec/vvc/Makefile | 1 + libavcodec/vvc/vvc_intra.c | 187 -------------------------- libavcodec/vvc/vvc_intra_utils.c | 218 +++++++++++++++++++++++++++++++ 3 files changed, 219 insertions(+), 187 deletions(-) create mode 100644 libavcodec/vvc/vvc_intra_utils.c diff --git a/libavcodec/vvc/Makefile b/libavcodec/vvc/Makefile index dc484e5fb9..2a0055d494 100644 --- a/libavcodec/vvc/Makefile +++ b/libavcodec/vvc/Makefile @@ -9,6 +9,7 @@ OBJS-$(CONFIG_VVC_DECODER) += vvc/vvcdec.o \ vvc/vvc_filter.o \ vvc/vvc_inter.o \ vvc/vvc_intra.o \ + vvc/vvc_intra_utils.o \ vvc/vvc_itx_1d.o \ vvc/vvc_mvs.o \ vvc/vvc_ps.o \ diff --git a/libavcodec/vvc/vvc_intra.c b/libavcodec/vvc/vvc_intra.c index 58dd492478..6d976320f8 100644 --- a/libavcodec/vvc/vvc_intra.c +++ b/libavcodec/vvc/vvc_intra.c @@ -26,7 +26,6 @@ #include "vvc_inter.h" #include "vvc_intra.h" #include "vvc_itx_1d.h" -#include "vvc_mvs.h" static int is_cclm(enum IntraPredMode mode) { @@ -694,189 +693,3 @@ int ff_vvc_reconstruct(VVCLocalContext *lc, const int rs, const int rx, const in return ret; } -int ff_vvc_get_mip_size_id(const int w, const int h) -{ - if (w == 4 && h == 4) - return 0; - if ((w == 4 || h == 4) || (w == 8 && h == 8)) - return 1; - return 2; -} - -int ff_vvc_nscale_derive(const int w, const int h, const int mode) -{ - int side_size, nscale; - av_assert0(mode < INTRA_LT_CCLM && !(mode > INTRA_HORZ && mode < INTRA_VERT)); - if (mode == INTRA_PLANAR || mode == INTRA_DC || - mode == INTRA_HORZ || mode == INTRA_VERT) { - nscale = (av_log2(w) + av_log2(h) - 2) >> 2; - } else { - const int intra_pred_angle = ff_vvc_intra_pred_angle_derive(mode); - const int inv_angle = ff_vvc_intra_inv_angle_derive(intra_pred_angle); - if (mode >= INTRA_VERT) - side_size = h; - if (mode <= INTRA_HORZ) - side_size = w; - nscale = FFMIN(2, av_log2(side_size) - av_log2(3 * inv_angle - 2) + 8); - } - return nscale; -} - -int ff_vvc_need_pdpc(const int w, const int h, const uint8_t bdpcm_flag, const int mode, const int ref_idx) -{ - av_assert0(mode < INTRA_LT_CCLM); - if ((w >= 4 && h >= 4) && !ref_idx && !bdpcm_flag) { - int nscale; - if (mode == INTRA_PLANAR || mode == INTRA_DC || - mode == INTRA_HORZ || mode == INTRA_VERT) - return 1; - if (mode > INTRA_HORZ && mode < INTRA_VERT) - return 0; - nscale = ff_vvc_nscale_derive(w, h, mode); - return nscale >= 0; - - } - return 0; -} - -static const ReconstructedArea* get_reconstructed_area(const VVCLocalContext *lc, const int x, const int y, const int c_idx) -{ - const int ch_type = c_idx > 0; - for (int i = lc->num_ras[ch_type] - 1; i >= 0; i--) { - const ReconstructedArea* a = &lc->ras[ch_type][i]; - const int r = (a->x + a->w); - const int b = (a->y + a->h); - if (a->x <= x && x < r && a->y <= y && y < b) - return a; - - //it's too far away, no need check it; - if (x >= r && y >= b) - break; - } - return NULL; -} - -int ff_vvc_get_top_available(const VVCLocalContext *lc, const int x, const int y, int target_size, const int c_idx) -{ - const VVCFrameContext *fc = lc->fc; - const VVCSPS *sps = fc->ps.sps; - const int hs = sps->hshift[c_idx]; - const int vs = sps->vshift[c_idx]; - const int log2_ctb_size_v = sps->ctb_log2_size_y - vs; - const int end_of_ctb_x = ((lc->cu->x0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y; - const int y0b = av_mod_uintp2(y, log2_ctb_size_v); - const int max_x = FFMIN(fc->ps.pps->width, end_of_ctb_x) >> hs; - const ReconstructedArea *a; - int px = x; - - if (!y0b) { - if (!lc->ctb_up_flag) - return 0; - target_size = FFMIN(target_size, (lc->end_of_tiles_x >> hs) - x); - if (sps->r->sps_entropy_coding_sync_enabled_flag) - target_size = FFMIN(target_size, (end_of_ctb_x >> hs) - x); - return target_size; - } - - target_size = FFMAX(0, FFMIN(target_size, max_x - x)); - while (target_size > 0 && (a = get_reconstructed_area(lc, px, y - 1, c_idx))) { - const int sz = FFMIN(target_size, a->x + a->w - px); - px += sz; - target_size -= sz; - } - return px - x; -} - -int ff_vvc_get_left_available(const VVCLocalContext *lc, const int x, const int y, int target_size, const int c_idx) -{ - const VVCFrameContext *fc = lc->fc; - const VVCSPS *sps = fc->ps.sps; - const int hs = sps->hshift[c_idx]; - const int vs = sps->vshift[c_idx]; - const int log2_ctb_size_h = sps->ctb_log2_size_y - hs; - const int x0b = av_mod_uintp2(x, log2_ctb_size_h); - const int end_of_ctb_y = ((lc->cu->y0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y; - const int max_y = FFMIN(fc->ps.pps->height, end_of_ctb_y) >> vs; - const ReconstructedArea *a; - int py = y; - - if (!x0b && !lc->ctb_left_flag) - return 0; - - target_size = FFMAX(0, FFMIN(target_size, max_y - y)); - if (!x0b) - return target_size; - - while (target_size > 0 && (a = get_reconstructed_area(lc, x - 1, py, c_idx))) { - const int sz = FFMIN(target_size, a->y + a->h - py); - py += sz; - target_size -= sz; - } - return py - y; -} - -static int less(const void *a, const void *b) -{ - return *(const int*)a - *(const int*)b; -} - -int ff_vvc_ref_filter_flag_derive(const int mode) -{ - static const int modes[] = { -14, -12, -10, -6, INTRA_PLANAR, 2, 34, 66, 72, 76, 78, 80}; - return bsearch(&mode, modes, FF_ARRAY_ELEMS(modes), sizeof(int), less) != NULL; -} - -int ff_vvc_intra_pred_angle_derive(const int pred_mode) -{ - static const int angles[] = { - 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, - 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512 - }; - int sign = 1, idx, intra_pred_angle; - if (pred_mode > INTRA_DIAG) { - idx = pred_mode - INTRA_VERT; - } else if (pred_mode > 0) { - idx = INTRA_HORZ - pred_mode; - } else { - idx = INTRA_HORZ - 2 - pred_mode; - } - if (idx < 0) { - idx = -idx; - sign = -1; - } - intra_pred_angle = sign * angles[idx]; - return intra_pred_angle; -} - -#define ROUND(f) (int)(f < 0 ? -(-f + 0.5) : (f + 0.5)) -int ff_vvc_intra_inv_angle_derive(const int intra_pred_angle) -{ - float inv_angle; - av_assert0(intra_pred_angle); - inv_angle = 32 * 512.0 / intra_pred_angle; - return ROUND(inv_angle); -} - -//8.4.5.2.7 Wide angle intra prediction mode mapping proces -int ff_vvc_wide_angle_mode_mapping(const CodingUnit *cu, - const int tb_width, const int tb_height, const int c_idx, int pred_mode_intra) -{ - int nw, nh, wh_ratio, min, max; - - if (cu->isp_split_type == ISP_NO_SPLIT || c_idx) { - nw = tb_width; - nh = tb_height; - } else { - nw = cu->cb_width; - nh = cu->cb_height; - } - wh_ratio = FFABS(ff_log2(nw) - ff_log2(nh)); - max = (wh_ratio > 1) ? (8 + 2 * wh_ratio) : 8; - min = (wh_ratio > 1) ? (60 - 2 * wh_ratio) : 60; - - if (nw > nh && pred_mode_intra >=2 && pred_mode_intra < max) - pred_mode_intra += 65; - else if (nh > nw && pred_mode_intra <= 66 && pred_mode_intra > min) - pred_mode_intra -= 67; - return pred_mode_intra; -} diff --git a/libavcodec/vvc/vvc_intra_utils.c b/libavcodec/vvc/vvc_intra_utils.c new file mode 100644 index 0000000000..7d34cff023 --- /dev/null +++ b/libavcodec/vvc/vvc_intra_utils.c @@ -0,0 +1,218 @@ +/* + * VVC intra prediction utils + * + * Copyright (C) 2021 Nuo Mi + * + * 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 + */ + +#include +#include +#include "libavutil/avassert.h" +#include "libavutil/macros.h" +#include "libavutil/common.h" +#include "vvc_ctu.h" +#include "vvc_intra.h" +#include "vvc_ps.h" +#include "vvcdec.h" + +int ff_vvc_get_mip_size_id(const int w, const int h) +{ + if (w == 4 && h == 4) + return 0; + if ((w == 4 || h == 4) || (w == 8 && h == 8)) + return 1; + return 2; +} + +int ff_vvc_nscale_derive(const int w, const int h, const int mode) +{ + int side_size, nscale; + av_assert0(mode < INTRA_LT_CCLM && !(mode > INTRA_HORZ && mode < INTRA_VERT)); + if (mode == INTRA_PLANAR || mode == INTRA_DC || + mode == INTRA_HORZ || mode == INTRA_VERT) { + nscale = (av_log2(w) + av_log2(h) - 2) >> 2; + } else { + const int intra_pred_angle = ff_vvc_intra_pred_angle_derive(mode); + const int inv_angle = ff_vvc_intra_inv_angle_derive(intra_pred_angle); + if (mode >= INTRA_VERT) + side_size = h; + if (mode <= INTRA_HORZ) + side_size = w; + nscale = FFMIN(2, av_log2(side_size) - av_log2(3 * inv_angle - 2) + 8); + } + return nscale; +} + +int ff_vvc_need_pdpc(const int w, const int h, const uint8_t bdpcm_flag, const int mode, const int ref_idx) +{ + av_assert0(mode < INTRA_LT_CCLM); + if ((w >= 4 && h >= 4) && !ref_idx && !bdpcm_flag) { + int nscale; + if (mode == INTRA_PLANAR || mode == INTRA_DC || + mode == INTRA_HORZ || mode == INTRA_VERT) + return 1; + if (mode > INTRA_HORZ && mode < INTRA_VERT) + return 0; + nscale = ff_vvc_nscale_derive(w, h, mode); + return nscale >= 0; + + } + return 0; +} + +static const ReconstructedArea* get_reconstructed_area(const VVCLocalContext *lc, const int x, const int y, const int c_idx) +{ + const int ch_type = c_idx > 0; + for (int i = lc->num_ras[ch_type] - 1; i >= 0; i--) { + const ReconstructedArea* a = &lc->ras[ch_type][i]; + const int r = (a->x + a->w); + const int b = (a->y + a->h); + if (a->x <= x && x < r && a->y <= y && y < b) + return a; + + //it's too far away, no need check it; + if (x >= r && y >= b) + break; + } + return NULL; +} + +int ff_vvc_get_top_available(const VVCLocalContext *lc, const int x, const int y, int target_size, const int c_idx) +{ + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const int hs = sps->hshift[c_idx]; + const int vs = sps->vshift[c_idx]; + const int log2_ctb_size_v = sps->ctb_log2_size_y - vs; + const int end_of_ctb_x = ((lc->cu->x0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y; + const int y0b = av_mod_uintp2(y, log2_ctb_size_v); + const int max_x = FFMIN(fc->ps.pps->width, end_of_ctb_x) >> hs; + const ReconstructedArea *a; + int px = x; + + if (!y0b) { + if (!lc->ctb_up_flag) + return 0; + target_size = FFMIN(target_size, (lc->end_of_tiles_x >> hs) - x); + if (sps->r->sps_entropy_coding_sync_enabled_flag) + target_size = FFMIN(target_size, (end_of_ctb_x >> hs) - x); + return target_size; + } + + target_size = FFMAX(0, FFMIN(target_size, max_x - x)); + while (target_size > 0 && (a = get_reconstructed_area(lc, px, y - 1, c_idx))) { + const int sz = FFMIN(target_size, a->x + a->w - px); + px += sz; + target_size -= sz; + } + return px - x; +} + +int ff_vvc_get_left_available(const VVCLocalContext *lc, const int x, const int y, int target_size, const int c_idx) +{ + const VVCFrameContext *fc = lc->fc; + const VVCSPS *sps = fc->ps.sps; + const int hs = sps->hshift[c_idx]; + const int vs = sps->vshift[c_idx]; + const int log2_ctb_size_h = sps->ctb_log2_size_y - hs; + const int x0b = av_mod_uintp2(x, log2_ctb_size_h); + const int end_of_ctb_y = ((lc->cu->y0 >> sps->ctb_log2_size_y) + 1) << sps->ctb_log2_size_y; + const int max_y = FFMIN(fc->ps.pps->height, end_of_ctb_y) >> vs; + const ReconstructedArea *a; + int py = y; + + if (!x0b && !lc->ctb_left_flag) + return 0; + + target_size = FFMAX(0, FFMIN(target_size, max_y - y)); + if (!x0b) + return target_size; + + while (target_size > 0 && (a = get_reconstructed_area(lc, x - 1, py, c_idx))) { + const int sz = FFMIN(target_size, a->y + a->h - py); + py += sz; + target_size -= sz; + } + return py - y; +} + +static int less(const void *a, const void *b) +{ + return *(const int*)a - *(const int*)b; +} + +int ff_vvc_ref_filter_flag_derive(const int mode) +{ + static const int modes[] = { -14, -12, -10, -6, INTRA_PLANAR, 2, 34, 66, 72, 76, 78, 80}; + return bsearch(&mode, modes, FF_ARRAY_ELEMS(modes), sizeof(int), less) != NULL; +} + +int ff_vvc_intra_pred_angle_derive(const int pred_mode) +{ + static const int angles[] = { + 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, + 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512 + }; + int sign = 1, idx, intra_pred_angle; + if (pred_mode > INTRA_DIAG) { + idx = pred_mode - INTRA_VERT; + } else if (pred_mode > 0) { + idx = INTRA_HORZ - pred_mode; + } else { + idx = INTRA_HORZ - 2 - pred_mode; + } + if (idx < 0) { + idx = -idx; + sign = -1; + } + intra_pred_angle = sign * angles[idx]; + return intra_pred_angle; +} + +#define ROUND(f) (int)(f < 0 ? -(-f + 0.5) : (f + 0.5)) +int ff_vvc_intra_inv_angle_derive(const int intra_pred_angle) +{ + float inv_angle; + av_assert0(intra_pred_angle); + inv_angle = 32 * 512.0 / intra_pred_angle; + return ROUND(inv_angle); +} + +//8.4.5.2.7 Wide angle intra prediction mode mapping proces +int ff_vvc_wide_angle_mode_mapping(const CodingUnit *cu, + const int tb_width, const int tb_height, const int c_idx, int pred_mode_intra) +{ + int nw, nh, wh_ratio, min, max; + + if (cu->isp_split_type == ISP_NO_SPLIT || c_idx) { + nw = tb_width; + nh = tb_height; + } else { + nw = cu->cb_width; + nh = cu->cb_height; + } + wh_ratio = FFABS(ff_log2(nw) - ff_log2(nh)); + max = (wh_ratio > 1) ? (8 + 2 * wh_ratio) : 8; + min = (wh_ratio > 1) ? (60 - 2 * wh_ratio) : 60; + + if (nw > nh && pred_mode_intra >=2 && pred_mode_intra < max) + pred_mode_intra += 65; + else if (nh > nw && pred_mode_intra <= 66 && pred_mode_intra > min) + pred_mode_intra -= 67; + return pred_mode_intra; +} From patchwork Wed Feb 28 16:18:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46621 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp31229pzb; Wed, 28 Feb 2024 08:17:22 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXbJbAaD/F8Z8T9zRK1dEcbrHz+e5eGBne9eFhZzb7c0tfxsWasCxPBf26M4jc6m5GhtvdBWo7WfmvkAdWOyvQjeL5IzYvM7bfAxg== X-Google-Smtp-Source: AGHT+IH572EHSEK2THMrwgUYfuHdyZgenE95G0mt0eyEZGI6fzag1ny/6JvH8koG8AwTJp+4AOIL X-Received: by 2002:a17:906:3193:b0:a3e:9651:1241 with SMTP id 19-20020a170906319300b00a3e96511241mr9202912ejy.2.1709137042411; Wed, 28 Feb 2024 08:17:22 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gn25-20020a1709070d1900b00a4429b54748si42270ejc.824.2024.02.28.08.17.22; Wed, 28 Feb 2024 08:17:22 -0800 (PST) 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=R9iG5zQe; 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 5846268CCB3; Wed, 28 Feb 2024 18:17:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2081.outbound.protection.outlook.com [40.92.90.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 08C3668CCB3 for ; Wed, 28 Feb 2024 18:17:09 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5rQPSJAJIJozK64fJWpNXuwkt4sdORqqeDQMyfPXaj7CfztfnR6Ka8/In9hIm53Wdwsp0ijBovpBJUiFN04JSNIazQpS1cmjITgHDeiAbAwgIRe+OgZcqyI4I2JodPAzW9D8TIWKK1KBFmouRl10W282OaR9ElwczWZvF8iUtR5IUVEOLTsoY1IPNqTedcYVtNxSwr9qHXTlENH3h2gJZeCBuNJ6ihnOIsewqKsGapF4GgpAXbhdRwRQtyoc7Pc+BKONeNcNm+kCWhVanESVlfXbf2juDLGatQFzF6/AFjyCxZKseaK+mujjFOOt74NRmeNRjhvuhfJ8jeqWLDuCA== 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=jMOwJGAhd54S1S+hGEEAtWqZeZ0XzyHyd7bQlfvgfms=; b=Ry5AzQwE5BRjuR/o8EG2c/V/PDQ6LS8KuFVL4cX+v3EQF8X2Gc1batZ5+Kphc/Y6c6LU2i9mlaC6+lyf6bSmeVpyfECWCD6AnQVYEJLNx/RKxokNrA9Ryhrl0uz8ypseInzmUNLKlxqRGRmb9efk0i3P+ph+dF4MNa16lXfAfe95YPRNLjQNDgc48GJ/JjOkTnXrOdk+EO60zFPGxaXp0b1gcZCNSvUkeUr4eblJi+rtLKxQTL9vXrnQx13AnvNyg+JxgYQku1bpGwRFjhPs8LW4kSrJCqmIN9TOOPokfKBmsE6gcmTwWhi6sWyBg8rLrkzEw80hFT2q+oPIh4jV1g== 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=jMOwJGAhd54S1S+hGEEAtWqZeZ0XzyHyd7bQlfvgfms=; b=R9iG5zQebBd7rBYZgDBd6NWoxLwt65Xiy/rMBASa5ET7slDb9XApnTGA4pLLgisouPyS4pIMF2/ksxEVtrySUwMUAQBUEG1zWmvFGeXAFA98jRRWtosVyRwAPSIbd8++yVuXXpXKo7rWu/U/PI1j6SugvDhFbvAhTeELG42VH6jexfYc/aUpWHD1NxFHT+6IPkM48jEXr+2U5WyLay8UHCezoscSeE2y7cbeZFHWbuuv55y2KJuOVufLdFblg4UJVBmMQHs0Il2ROR/x4rOalVy/IssYo1RCoOM038iQeHjG+usDQ+oRRwWwoncJvp+4zXord+cqcTCD7kIEWsICrA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0512.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Wed, 28 Feb 2024 16:17:07 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:17:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:18:42 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [MPun7bcfKGRW2/2tlkxhXdW1V25rEOpXGDdpwcRJQjM=] X-ClientProxiedBy: ZR2P278CA0067.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161844.2187053-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0512:EE_ X-MS-Office365-Filtering-Correlation-Id: 34b32dc3-4910-45b4-099f-08dc3878b5b0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z0f7G+GUVQimXMYJccdKovPlB8TDnBmmvvD4MWIC562fRcaGLBjA6PZuG3EPFfGLfhf24uIB/HKvXpuAO5mlO5neJXmr0OvpbX8lAr+JjBWWRussZrrtXPtM5Nmo04Ztu3mUmmd1pcE6db2DgdQna6KHJL2tVkuvcPsNWR4AKQY8rvoVc5ykGmG1otE1U67EAsIZ7Mjxg1k2JuUjBt6Q886EsdcfCd00aOIzBt2scc9engOGe1dYowiBj5y+X5eqjuKveSKqGfzjCt3iVZEE727S8CBDEMpYdLKJPf/sWh1aECGhHZn1RYXNVjQBHi43mHBD9Edk44WuClYo6aqdx5oGyaaAQ6Z1ur1vMti1CfqI582Qto6isC3oc9cDNeeiRCr9Q5cjg8uCfihQqpcbj42HaxhzAGoSNvX3nCn8MXNOGfGfcEcDKwiI4FdrWdAzz70QjIslf+kFXw/L7rvzPz+HqnGGMN36a05ZtrpXLJsY/yJbK4MS0hnJOErxOmDsy9trkvfMfInbZB8x5V/pEPpN71etD1L3iz+jDzZFTM4rY3gsbetKVc+iXhroWXj8kRATfTzqBpgFGu/TgrFUOzWCfvtQPZVgutZPqFXTfUhCKrJ9svfKg6nAJToph1KT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: J/rbsz1kjukg8ruq7aAn44y/c2cgRvv7H5G9RW2qEYBtuozK6OGGwcLY8CZSrUzzOTxjCuelFZ3V+I1dBCjXoQuLRFa8sO4bsxgaa8QkzBUSD2HPVaJLMTmrb8oNzI1GeOCgmIMct7+D6q4tQph+UppG4ra03kabXlBl7Xh3cRgcc1TIaTwyiSDpmWWjQCQTn80a9eCWTrFWgv0NrpniLgN9InqxQihxMT57JhB/KROYUzPNAdkF5wFRlhtvzAWYfS9Sjoqkgj3tFwkgm6W2FjmeSPButdRHkYmUCqmN1D67MXz/wDtWNvdh+FAMm5mEjSUeZH3IW7JrRdT60L29y0q/L93NYqTT1fY8Y4ODEHoY7lp4/FHqYC7Aj0iFZzMnhHD/ykNs5LSoRiHXBMN3kQY5xT4XXNOQuOnybaHRIv3XVHlZ6ZhRVfsVX3eoJ8EULHopGkKnZdK1Z3/u8JTv3sBfkpmWOpICx+GVsOWOLRJpUCcsMrPQqS+T5R0d5AsOQdh+X7r5SUaIY/TubeO0Y7vgF8H3QnZRQ2PqqkAdvQCQ70i/uQvxKWzhsq0WDnbMTlj6NxERSKHK+pyN59R17K+ftGi7sbfPZUbkMDRovk5pWFxjF+tZCAIuRPwDzmzF+wBh96vX/P01P1d+H8gvuPUBg67Vy0KyU7oBpKEMay6HvdC6DXM5U+KMMxOC/K/MZGPdJ6KoB5FLzZii9bGlP7UbSAzfw8cQd419JHLfdX0ity8tgwG5zTpW9ZjDigEaVLfFymx0hjPtC2sx/VuARvMLtWwfhbhQ8IdLE9W/2KDBal06aomQXUXTfB5HHYwmMB+v19xphoSYLhyLx7fa82H+Ar/kFts/WjkaPMjUpRbkzhELXT8xwgW2fq/6HCqgJQUikobuxr312zdQrKG6aMU6f/5eTJjDuEDQQXl+4tlEiycu4ZbO5PuW2vn9WN0vlAIjQHlHbipXyolIGYv4SeLYKFzQ+PVoQrFPuriRS4CffynFBO/heo+dIAdzDICg0S/Ts+BYWXC1gLcf6HSUGFjrKKIWrHNQnY+GglnsfcxtTaXobWxp5YpJVYj0yZLQv2BTbYKNnzsbiFlEVcjcvDYkxad/zca3Rrut8FlccwEDDSkZYOwSkRcIcv80NajE/5qjZgtiiGOs1pVQYycDx6PXLHHQ/b4fjo6lJahalUzYtdOqrphxdX1odfCHog0iSGk8oWNGFZNj97i6KZ4V+cLKlAbctJuc75wNyhssYf6AM/075X9SiRy2EFTel6yuKG3hQmfznzJFY/kssIHbvA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34b32dc3-4910-45b4-099f-08dc3878b5b0 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:17:07.7255 (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: AS4P250MB0512 Subject: [FFmpeg-devel] [PATCH 4/6] avcodec/vvc/vvc_mvs: Add proper header include 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: qYfMkYRKN6P2 Signed-off-by: Andreas Rheinhardt --- TODO: Make checkheader also test subfolders. libavcodec/vvc/vvc_mvs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vvc/vvc_mvs.h b/libavcodec/vvc/vvc_mvs.h index a546a324c2..78ad17c303 100644 --- a/libavcodec/vvc/vvc_mvs.h +++ b/libavcodec/vvc/vvc_mvs.h @@ -23,7 +23,7 @@ #ifndef AVCODEC_VVC_VVC_MVS_H #define AVCODEC_VVC_VVC_MVS_H -#include "vvcdec.h" +#include "vvc_ctu.h" void ff_vvc_round_mv(Mv *mv, int lshift, int rshift); void ff_vvc_clip_mv(Mv *mv); From patchwork Wed Feb 28 16:18:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46622 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp31345pzb; Wed, 28 Feb 2024 08:17:33 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXu9wM5V7jh7YhGMjjvCzZtqEoiopqcRkzeY9QgmaH/3umS25WR5hxtMZ8k8kydzEUTMhdZNsspgYDSDhpzrYqN2pnuFdtF5Fwhaw== X-Google-Smtp-Source: AGHT+IGXP7civZNfIH11hoskoiN5sOmK/kXvtJLlwRpAywAqgP75YPp7TuDDvsBEgsGDy8Y62kqA X-Received: by 2002:aa7:c456:0:b0:565:9fff:6046 with SMTP id n22-20020aa7c456000000b005659fff6046mr8392384edr.3.1709137053317; Wed, 28 Feb 2024 08:17:33 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c6-20020aa7c746000000b00564f04e4347si1821880eds.203.2024.02.28.08.17.31; Wed, 28 Feb 2024 08:17:33 -0800 (PST) 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=BQoiF15p; 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 7309568CDE2; Wed, 28 Feb 2024 18:17:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2081.outbound.protection.outlook.com [40.92.90.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21EBD68CCAF for ; Wed, 28 Feb 2024 18:17:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R1plcoeUqUl8eHjqFOfyVMBXPuL88XpQeFCl/iiND3GhibYHltrs6suIweNbfLZy0X1n7v9LpbvtwipCurvalrtp3ADJPl4xHbABaxWDHAL24hZCyUkMWMP+fCG/HzNsCnRzfp8AK6UZvHHxhjZEn7sy8jYiZR+4fuJJIC7Ig4O6nMfxQ38lIWh45QBMtW0fPdsqPBJrX90owDr2GwWIZfCJ8yUfmAAOGRXKF6fE/jYcYkG54BPxF916iSQ2vPGyYO7XgTco2XkinQ1rT20NKG2WNFLRXxNf71QpZD/QZ/JiTJWQCan5RhkhEm9+1H39Wj4GJjkuRYO7+IQXCVEh1g== 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=b4efS7EvHuLAlXe4UoZ2yr+2ll1h1oflJsgtL5mGkkI=; b=g/3oTginmyYj3kPBfZ7oqcAkzLGd+iyuVE8dUQJtboigzWlnFWOFZghwPGk+hX+OY9s5hkCM5Y9SAkN5J64PvQQVtzzsU0zxKPmXVfVs/yHtj5Tbosutvozcx49EQAuJ09WPN15Cz04NXiKit8OxXt5Mt+F6ID9zppi6anObs19OHFMJZlguarOgnGu6vCQo7GJCO+PflP7qiPv9vTXHgZMJXNr7uiXSE/T1l8Ogkn63RSR39JPhUz0yGv0hehfgS0eSkR/HbBpKFA1AVnCHOvW9I7CefAogbUbSN4BSbExW4iz/hiLOJa6T1yyOvECTxrT+0klNu13IpgGc48xTkw== 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=b4efS7EvHuLAlXe4UoZ2yr+2ll1h1oflJsgtL5mGkkI=; b=BQoiF15p/ZQuEpq4n0nsiW9BmneDRHKjYApk+Jma3zptG906IeixlhcJPx1Lp4T0QZn4DDF/SbKOMl46YG+YcaHxXFFqJXU6Dw51Sn8hjE0TvnVFGMcpmKDUMJOqOcWHc6XY5DVSjENHOaWdaZ2akAerqBK46x7yuVpYhNTG7qq6IcRC3n83J2VJP4o1MvAZJ2NJ8D04N/YKa1bVjlu9B97ZsSzV4UAhOdxrnz6AY++zl+5OIrm12Cu+qfurhFBBfRM9XgpkeigEGgstyS2aoElkz2RVok+b4SvA/SixKRoz/Hli0UJMQcOCtSacTW6eYI7275V7lpw6E1PZzqhi0A== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0512.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Wed, 28 Feb 2024 16:17:13 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:17:13 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:18:43 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [fpBBQ59cTVF2x6r1E9IUxU3bRR+N9CGb0JxbV736D2s=] X-ClientProxiedBy: ZR2P278CA0067.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161844.2187053-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0512:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e742bdb-5800-4bbe-b1f0-08dc3878b8eb X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SQy8yixyc3hUYyOhYrsPQqqxbU5i89hhSzqOutkkzGXMS+mrlOEQIY+d1AKpY0KZsQIJgvQJzqTUIogJ4qbUrrF3HR3tvZPulykenUMJiRhr6b+npoFu9r99Yp/j00tsQLonDty8PSMxYn5Has0RL7jTrCxKgjTo9Z4heCtviuy9ZBoGH6IypkgjTaiCrl6PxGqWNclbuzgHEz5TDZk2sacU1CZdfxWX9TOC8EDzBbD46AZB/PB+1vFXP4UbkGCGoeyblaRKZFnS+LRTLq73P/QRYv7okQabLHmDHcay/IJrSlqR+P9XlQM3pGIUMAUqJ+leKp7NmgTxBYNkdAnNxHlm2b12LXf6JvHqAke9Ufs1aUtC8WiQSIR0GWEXjxGuJjiE9kYbFauHzroOWXrnn+c7bV/kjd9DW6PYODPXgGkOlNJwADI5QiRwEmYqzu1rj9kyxII32LlwlsaOcsJmazwP9iwm7RiZTDHhoV9kthMu/iVZRqbRgn46UbrIjLjlX2LWLS2oN6x9T/rfsnYDDy9B9MBD7MnAY3WObd8mtZf9Bo2UoGDYMBJkSJkKv7yAmr7Ptqg49ISEex/PeutIN7HB33fKW/CPvEKUq/LELLWFmKeKruwkrWH+nIar5v4P X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zKm9cJJze6NrunhIv/jFiXtDAn6V/X7Ba1kmOb9VgQkwW6R/2B+0ZilfmT60BEQOQXSErfoXtnXM6LS6gFN50wmBbHhiGbtbSdPjSYAnxxUfAJwhsLbzs+/hokXu9xZMvHs4cNRIzcMtMM4Rso3fYZee/x4AuRFv02AFdURg5m9NRH3dlSAFWDnjyaGATI6it43/S5HjnKSfgcLqif6XuRJNtvp4p+TJbaLo7Y18rMZlCFmut7Qu9OoBqJ0Sf+Fqp1YxwzBcDAedv7G1Ba3tLADT8Ogt4u0s3s5hBt1KhRcQtChIdzPmIDrB2Qcoi3j4CdqI0Tjq15z/vZRTnT/EmA+gsl5WjnOEB5+o01lS9QTEAKf6VrtTB00UrIcaKq8YvBasnbCYnbIE55+h4nlVLmzcnlQED5H/ppFoxN1bsCeojsCGlBgv0ku3MaX2i2a5HKH0TGJufqZyvc8j2v68idHAdzjTvr4qKArTk71kf6nG539zZ62pYbOFgZxLvt2CNleohYPC/Kjs04aG5wEq73JRpeomY1idN0olrvGDuOR71vLkpjwPARzvOY10gQPoquhDUCP/H+i0BbBVaLulZTSjaIyNT6LNESkmfTE9RZBKXRvawVniY7Tng9w0HTgY6FS8w3C1h+3dNpStmt6W8LlEQUk2Z6abVZ0sZJlXVYIuEE3mFAXhvgAoIho9fK71tRvdedy3ERGGwS83TDX01eMmlbADCN0mwcsjps1gDchpQKZsbBinZOprPUmTeE1UlT3z9PF+VRFkKadqDVY0bduP9Yv6dhIcVPpNWi21a7l8pY89FS4m1AGT2qDpC1u77BkuocZxnWbwxDzs5KTxQsFVIGM8d4Rlw9Uj5ZygovMrrg3kui+bI7bBTnTNMmZNuw69WnAv4Y+z/IMbqO6iBceLpdnMn0Xy0+7/AvK4iOv8h7LTxwIMjTBrpoiYj/c9Nz+a2okyA1C/oWGaCNKZvW1ZuHDNiExdLwYhbXQxjA4Q38DmVMsjNAutNWB0u5gm9cnR+GDEcOMHyZBiCJ4YDtE+uWJlg3FVYMGetcyunX6aAcGz89W05vyOzxUhF/XA82drA8TNdT3UBYCX9pP1q7POed/QH+fo+l1NUeKMmKbKPBzWHD9My4R+mnQyjvz32Sm/m3NrXMsnOHspUKPyM3dUjsqU/zmtdDsV0yr/CY5OS89CwygapMxniYqqx5QPKFgni37LQk7JXnN36eUXnOZ8prI3s+YUqHzz9YMqxK0KQIFTrqdLMKyJtrR2eUfJa4Kmm0ZMOunDmxvEsPdIKQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e742bdb-5800-4bbe-b1f0-08dc3878b8eb X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:17:13.1263 (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: AS4P250MB0512 Subject: [FFmpeg-devel] [PATCH 5/6] checkasm/vvc_mc: Don't use declare_func_emms 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: hfzwMQJTxbHA There is no MMX DSP code for VVC, so one can use the stricter declare_func which also tests that we are not in MMX mode at the end of this function. Signed-off-by: Andreas Rheinhardt --- tests/checkasm/vvc_mc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/checkasm/vvc_mc.c b/tests/checkasm/vvc_mc.c index 8adb00573f..ce34965b7d 100644 --- a/tests/checkasm/vvc_mc.c +++ b/tests/checkasm/vvc_mc.c @@ -74,7 +74,7 @@ static void check_put_vvc_luma(void) LOCAL_ALIGNED_32(uint8_t, src1, [SRC_BUF_SIZE]); VVCDSPContext c; - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, int16_t *dst, const uint8_t *src, const ptrdiff_t src_stride, + declare_func(void, int16_t *dst, const uint8_t *src, const ptrdiff_t src_stride, const int height, const int8_t *hf, const int8_t *vf, const int width); for (int bit_depth = 8; bit_depth <= 12; bit_depth += 2) { @@ -122,7 +122,7 @@ static void check_put_vvc_luma_uni(void) LOCAL_ALIGNED_32(uint8_t, src1, [SRC_BUF_SIZE]); VVCDSPContext c; - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t dststride, + declare_func(void, uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int height, const int8_t *hf, const int8_t *vf, int width); for (int bit_depth = 8; bit_depth <= 12; bit_depth += 2) { @@ -172,7 +172,7 @@ static void check_put_vvc_chroma(void) LOCAL_ALIGNED_32(uint8_t, src1, [SRC_BUF_SIZE]); VVCDSPContext c; - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, int16_t *dst, const uint8_t *src, const ptrdiff_t src_stride, + declare_func(void, int16_t *dst, const uint8_t *src, const ptrdiff_t src_stride, const int height, const int8_t *hf, const int8_t *vf, const int width); for (int bit_depth = 8; bit_depth <= 12; bit_depth += 2) { @@ -220,7 +220,7 @@ static void check_put_vvc_chroma_uni(void) LOCAL_ALIGNED_32(uint8_t, src1, [SRC_BUF_SIZE]); VVCDSPContext c; - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t dststride, + declare_func(void, uint8_t *dst, ptrdiff_t dststride, uint8_t *src, ptrdiff_t srcstride, int height, const int8_t *hf, const int8_t *vf, int width); for (int bit_depth = 8; bit_depth <= 12; bit_depth += 2) { @@ -282,7 +282,7 @@ static void check_avg(void) for (int h = 2; h <= MAX_CTU_SIZE; h *= 2) { for (int w = 2; w <= MAX_CTU_SIZE; w *= 2) { { - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t dst_stride, + declare_func(void, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *src0, const int16_t *src1, int width, int height); if (check_func(c.inter.avg, "avg_%d_%dx%d", bit_depth, w, h)) { memset(dst0, 0, AVG_DST_BUF_SIZE); @@ -296,7 +296,7 @@ static void check_avg(void) } } { - declare_func_emms(AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT, void, uint8_t *dst, ptrdiff_t dst_stride, + declare_func(void, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *src0, const int16_t *src1, int width, int height, int denom, int w0, int w1, int o0, int o1); { From patchwork Wed Feb 28 16:18:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46623 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp31438pzb; Wed, 28 Feb 2024 08:17:43 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWj5lU0hLDSad5I3Gx3VWGOQijufN3qfofiD71WyA3SUBiTo11NYhY6hr1Y0+GGvdw4lk3nyWhPQH2vzd/y242tx8xANa8AcHZ+Qg== X-Google-Smtp-Source: AGHT+IEcKVvzGfhzfldPlDelaElKmxHiVXmhkoV+sxSzqHANORwBOyM87xZ5OLPLiVXt/BJicOj7 X-Received: by 2002:a17:906:c419:b0:a3f:421:26a5 with SMTP id u25-20020a170906c41900b00a3f042126a5mr2879521ejz.12.1709137061677; Wed, 28 Feb 2024 08:17:41 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r4-20020a170906a20400b00a43c5d522a7si1405287ejy.103.2024.02.28.08.17.41; Wed, 28 Feb 2024 08:17:41 -0800 (PST) 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=nXWu5xJ0; 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 87D9268CD49; Wed, 28 Feb 2024 18:17:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2081.outbound.protection.outlook.com [40.92.90.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A2FDE68CD77 for ; Wed, 28 Feb 2024 18:17:19 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cg8f/8Mt8yBsKamXLEpdiNE5QgOM+2DZVA+wcV4YzdPSnJubrj+WcIEHoibv+U2HGAvVeuVR1yDQZ17drDUrbJSRu8e8ZRqfeQr/fYhcIsgSXFEdqyzu3bpzBHJTtZTVVeP9GYYnV1YKdN4H6oCmmfIoqa1rTTSOzlgr5Uhp+atlJvo0bxd672IrThCWzxkiE0v57V5IuKDD7W6LfhblHG3Vi89JVU2cPIucZYhP26BwNDtmiWAb+bO8rH3tyRnKHGSQK64LllMZfK1/MH9ArepDZBJkxXoJXpaUEFp9lDkCj0cANJpQep1o77f7wjCuxip+mtQ9ZESOh8f9ZK4aCA== 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=Ovo34YRu2Wv45jY6zrj/SWyVAq/bkberJ8S4pG+d11Q=; b=Maj/f9Czk5Z9KxHAIxeUmdW2Zc6IRbeNAkD9scEb/JhtluNUkCpZ3Sx7ppCv/lFDnFlZgn38EQy2r0FkaYHnP3fyV2nkwWMvPFZKyglU542PaJgacq6s2L7qNI6/obnyYL+aimvO393pKh2VCfgTrLN1mVyhvS2MSAaY/i+0i2tlUxAXssb2GVa5MsrT3truY/GnKxOAmoJGPr51FBstDUShCVBmvDw5IhXjBrDqLS9SQf6FZ/M6mgeKBrsqVjmu7Q67uO6esnDKWxSmU73JOgtoaxfLp29NpEiaIfJFVf8rDmq4JNklz5K/fAmLxnra8nRi5WQ5RMhFOJu4Fyj/Ow== 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=Ovo34YRu2Wv45jY6zrj/SWyVAq/bkberJ8S4pG+d11Q=; b=nXWu5xJ09mvHCXLHsi3EElaaGkwH5q3EUX9+gOGABUV/DtSwkaYK2QwvicGH/msBwYikCrfoQXbFUnTANx0d6sq5dinAqhnoglkM5n+nKIDXozpmGOxRBYlPytNV8cqEBy5Kail80BgsQ8KC3MBDqmFAe7bIT2QRvd5tdWV2cwpTxwMc+GrCyyf5rz1g3gaXvYyU07n23OkiKteuKD6EV4K+QstwCbpyEkTWC3N+S4LojeyhO+9FY0LHZo/STAjcrL86fgjsr4CHOjVr9PWvej+VE6aMrLpP7p2EiQqeSOPCoPoc/j22YT8u+YfkpjMnWbj6sD1f9pba7rVzMHMqxg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS4P250MB0512.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Wed, 28 Feb 2024 16:17:14 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Wed, 28 Feb 2024 16:17:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Feb 2024 17:18:44 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [7J44WAIs9UURjAiiip97zygZeitRtJyqCpseYg0X+dc=] X-ClientProxiedBy: ZR2P278CA0067.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::14) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240228161844.2187053-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS4P250MB0512:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ffb3bdd-e6f6-4fe1-3711-08dc3878b996 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lH0BbUJTDj5CyzfJRNYo0gZuUor9tqZchV/hST/QHEVxh6wDiBp2Z44GvqBn7vNj1ySKQ2jL6QDAp2ug8/pHguDe+3E7HMGuj8Btyu4xa5mZ5ik2kSRhOJu2hC5t6ROnPTguetvS+PWRnV1gGUpAiOQFNCa1ZI58pMW9ujiP5KaWKcaDvHD5Y17YPECRpTcok6tJqMGzPZn80h82q0n2EeczNFDK6u+42V7dn1Lw5MpoyaE7C+bUOU9r1GVMvCx+s7h0DWTYtUXIbfzLEH/Y4Y86smtprzZPrEhdSxQHs6QI5ZxQD0KXqrZ9hPAOulkJ5bwU4zqCzg8/Sq2SS4o3ADiORIcE8kHLfkxE75lPIEbNVEIxZd5ECWd3gf9v5CXO1ksiYYTgpPz+QiKmmqHBhTAacpqoPmYJeZO3tARkgM0HMi4T2dvkRScteON6lpXqIjgxeUyiSGok5gfKrGwfxchuqFNvtfW0RBi7uY9cjsMGRGeFsivDtTgq7PQTLgO6ayDi7sjzb8n4NlxRau5ppukd86yfPK4S2jDZg9HdsWAX28DoWpMZpOxHcv0vytG2ahlHsEb4RoQ+Iuwmn7+tLITtnxUT99GPYaurB5GUXURYBuntHMajsyg3pXdxZMYG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zCIriFzgCKivVJXKD1ZxDMeXeNZKkONg4U1NoIf165guQfBfxKnDKW8OzQYst2XsiCkcEziJ690qog7puO1ERkjGyEuTVDPVbJAW/k1swfY3VVC9AnqqjL1gX2o6NablC2TKHb/kBtWoMcFsEUYYxjc+d57v6Dr18mHL6nM6c6DzxUqih0UlyQJ9G7sIOjIXfRoBlMsdmLVkHrXO4gcjwO+pg1UYCDLkgi3E8bmrPDDkdBNmVR0VFhv0hgC6Lw1we61LW3CitETqYiTKU3ABDopTLZUHqlIzZo2GsfaBHa2e+jpJPqrgQU+uAJjP3UkuzMVdjaGf2FBsGXJz0jFDrE4ryAoXF7g2gPZ3WPh9XapaQkqHt3txuM4NvtV6iO8rUXx6bxnGhxguWZREjLkxSJAPxd9Kp77t8Pn+mAzN+epLXdlV0OAAK4Gt1WbcHJaHphDcJJOqVUzDqs/ACHPeZchbWRF4mVyCuG+K4vY/jrVxe+XscRV4EGQwEWgCxJyFLyGkcO+4JO8FGHayVXAxmX6O0k85pBzHUfhFEOX+C5fgdsV81W/iIHS2NTcP1h3KXPZV8KSyLjIvFiKIG2WteP08DuHAaOjj/CSOyZvzpSqQdc/HNzoC9n55AM5RWnIZ3/es9rAgsTkJE+0GV7YuIWWokNBymHqPrTqnTELZuD3JqOAjFsNFhJNgVGD2k+iPmA8e9Jqav9KfIWg3XzVn02hw5FprjN5V7hyALflh+JmEv3BG3sZrJRxOdbVoTbxejhhzpvzU6KKR9ea41ajHvd4hZ23qZZOkvGPhGCb2mXQ93huntVoiL7Cnc2R1X8cX/EF3aEsf38GbQS0MaOh3Z0cJvegTd/LmAsM4ImhqhEc+lUxClGDLwS3kqS+i0kvDW4SThGGODYrvY9rQ1EwlD6Tfn0MUSt2aBKQ+P6S2FAjPh7fHiWF52jHsjM/dzE2E4b/90LDBcBnZGjQeHd4+JpqEUS449EHUffetQhXOisvyafTLP9tkm6HonucGxKZQvSwTHsYfFCsVXjHQdXHhNJEg0rfSgj5pUbqAVftgY48yNOixvBEsRAU89eTzXNmdb9/KpRErUNTHP6zIq3Y/3dNboX31R8bPq9pagwJZdBt6MOXampqKF+AskC9wnRhSmzjpLHNIdbGrZTm94TP5qrHYLQC8ajeN85yRb54AiDVsT0ivMlEdHBxP1ZIuPPn+0ZsWJtnC1YiA6SmVxfyLjQRxAu8viHw4g7eAtn4WfCRzI3zzLTlUQqKaVkvrLM8SVk0JaX1TwR9BrTokqZwazA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ffb3bdd-e6f6-4fe1-3711-08dc3878b996 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2024 16:17:14.3827 (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: AS4P250MB0512 Subject: [FFmpeg-devel] [PATCH 6/6] tests/checkasm: Improve included headers 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: UA0UryOFNEXD Signed-off-by: Andreas Rheinhardt --- tests/checkasm/exrdsp.c | 2 +- tests/checkasm/h264dsp.c | 2 -- tests/checkasm/h264pred.c | 2 +- tests/checkasm/hevc_sao.c | 2 -- tests/checkasm/utvideodsp.c | 1 - tests/checkasm/vp8dsp.c | 1 - tests/checkasm/vvc_mc.c | 4 +--- 7 files changed, 3 insertions(+), 11 deletions(-) diff --git a/tests/checkasm/exrdsp.c b/tests/checkasm/exrdsp.c index 2a5febb9d3..8af2f13109 100644 --- a/tests/checkasm/exrdsp.c +++ b/tests/checkasm/exrdsp.c @@ -21,7 +21,7 @@ #include #include "checkasm.h" -#include "libavcodec/avcodec.h" +#include "libavcodec/defs.h" #include "libavcodec/exrdsp.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h" diff --git a/tests/checkasm/h264dsp.c b/tests/checkasm/h264dsp.c index 3c95f9d74d..0f484e3f43 100644 --- a/tests/checkasm/h264dsp.c +++ b/tests/checkasm/h264dsp.c @@ -20,12 +20,10 @@ #include #include "checkasm.h" -#include "libavcodec/avcodec.h" #include "libavcodec/h264dsp.h" #include "libavcodec/h264data.h" #include "libavcodec/h264_parse.h" #include "libavutil/common.h" -#include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h" diff --git a/tests/checkasm/h264pred.c b/tests/checkasm/h264pred.c index a3077f6946..53e1cdb219 100644 --- a/tests/checkasm/h264pred.c +++ b/tests/checkasm/h264pred.c @@ -20,7 +20,7 @@ #include #include "checkasm.h" -#include "libavcodec/avcodec.h" +#include "libavcodec/codec_id.h" #include "libavcodec/h264pred.h" #include "libavutil/common.h" #include "libavutil/internal.h" diff --git a/tests/checkasm/hevc_sao.c b/tests/checkasm/hevc_sao.c index da3f710537..d05af9ac72 100644 --- a/tests/checkasm/hevc_sao.c +++ b/tests/checkasm/hevc_sao.c @@ -23,8 +23,6 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h" -#include "libavcodec/avcodec.h" - #include "libavcodec/hevcdsp.h" #include "checkasm.h" diff --git a/tests/checkasm/utvideodsp.c b/tests/checkasm/utvideodsp.c index bdede6107b..2463c96603 100644 --- a/tests/checkasm/utvideodsp.c +++ b/tests/checkasm/utvideodsp.c @@ -21,7 +21,6 @@ #include #include "checkasm.h" -#include "libavcodec/avcodec.h" #include "libavcodec/utvideodsp.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h" diff --git a/tests/checkasm/vp8dsp.c b/tests/checkasm/vp8dsp.c index 87b03d71d5..4cd0f8ac4f 100644 --- a/tests/checkasm/vp8dsp.c +++ b/tests/checkasm/vp8dsp.c @@ -20,7 +20,6 @@ #include -#include "libavcodec/avcodec.h" #include "libavcodec/vp8dsp.h" #include "libavutil/common.h" diff --git a/tests/checkasm/vvc_mc.c b/tests/checkasm/vvc_mc.c index ce34965b7d..d102e2ac9a 100644 --- a/tests/checkasm/vvc_mc.c +++ b/tests/checkasm/vvc_mc.c @@ -22,13 +22,11 @@ #include #include "checkasm.h" -#include "libavcodec/avcodec.h" #include "libavcodec/vvc/vvc_ctu.h" #include "libavcodec/vvc/vvc_data.h" +#include "libavcodec/vvc/vvcdsp.h" #include "libavutil/common.h" -#include "libavutil/internal.h" -#include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem_internal.h"