From patchwork Thu Feb 29 17:41:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wu Jianhua X-Patchwork-Id: 46674 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a919:b0:19e:cdac:8cce with SMTP id cd25csp758849pzb; Thu, 29 Feb 2024 09:42:12 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUqZirTr8mnqJ8s4s1D5ke7RNK+PU0V5CuFqVaa1OrcsYbQcgbdouYz7XVajZrCs+7N1mQ/BM22cXhEpgQEaYrRd7vLYhYQk/0NZA== X-Google-Smtp-Source: AGHT+IE5sfkIS/MQSh+Wc2glbISxxUYzNKNhbpay2g25QpVwL9qvb+sFmxqgYIUFxVdyER6tY7q+ X-Received: by 2002:a17:906:f298:b0:a40:75e8:a84e with SMTP id gu24-20020a170906f29800b00a4075e8a84emr2105898ejb.5.1709228532116; Thu, 29 Feb 2024 09:42:12 -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 h8-20020a170906110800b00a440483f596si744103eja.558.2024.02.29.09.42.11; Thu, 29 Feb 2024 09:42:12 -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=nHs3bcR2; 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 1C99C68D20A; Thu, 29 Feb 2024 19:42:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazolkn19011002.outbound.protection.outlook.com [52.103.43.2]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91D1A68D1AB for ; Thu, 29 Feb 2024 19:42:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L2dma1qy2FFa51cOOLvlj9d9bT1qgu/ulkPeBYIH46JXwYPRf3FBY7EyBSsCveInojvaqXDPT9zSP+yGqEsojwmtvu2mEmS/g2tCpu0KZu5P8COApfxegJLv9tjdPZkNcZciV9lUNRKqiv2l2FSKFRXDr1X/YrRGRiRBwidQi9gwFxZY14hZ9P68+gEAtTp502tiY8pArmq3FtkB7NXIDZQj2lxR+pz0HzbRzqdK8aJGi5LbONm4mEWCMvxotqZKvH5aRvqwLrIMxQvdMs+9rqWjfdHXIOU3x0wbapYcNzyspU6n8iZIzMLy8AdIqdYnNlOMHh22ByJRh++3Y/cvJA== 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=XbVouzsnYMMAVcK0/GwWnPDkQpKA0yuS94KHwPviTGI=; b=eJnaCq5GTIkd+t9Kr5Nbdx1y6o8jBholVQU8wVhE7eY5I8Dl4QgN6YSF2nC62afekl+e0wMekOYoxuXflhtQE5iED0sxzPwSBKRBYjUxmuiIQPTq1rVUPwNz49aMdDSsHllGvtJ5KuaRMAVBJxWQdWuzgmv2kVSLzebKtEpCXtIETQAVQSFOBBZOPcnTXC/papzrVQXYZRbqL4G4Lh/qfkec20aS4Vbx1xpWD7KwU6wDY/KzFJkqNl8hZqovO4QiA1uPfOIHjHbCPYn3RDyGdnD3nDU03W2x7XC+ToylfHDR1zpx+i0r2t18BM4btpqVJwjrfYBcTcRwBTUm4zS8iQ== 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=XbVouzsnYMMAVcK0/GwWnPDkQpKA0yuS94KHwPviTGI=; b=nHs3bcR2cpFj0f3jhk3X0rvyHGEC8mwAOFXGRwuVKbmZRLtkAR9H8RYOvQ1JyMWDgyuYPKxYjFhtACe5gxOmiDI5Or/hq1sivda0vuZ/j8CJmaWPMUea9FAN+XjhL0KGhTsNCZLbu8kRcKEVqcKXMNJAxa4r9BA0tvaHW9lENho+aMFl1bhONpC4bgiL1dl8g3Bw2KwLNFswwfEBhMSbosY+s/kUXwFX8QmgcIiSud8YN/7JmOT3+YDRSZOGjN2UlB2coIPjg1maC/UJqtuBxf2BkonNJdVydSez+SO9/ns0yHFjUrM89iQlR8eZyl8Hj4zOppuhs/q0N8oMUTzVgg== Received: from TYWP286MB2172.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:173::5) by TYCP286MB3203.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2c1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.41; Thu, 29 Feb 2024 17:41:57 +0000 Received: from TYWP286MB2172.JPNP286.PROD.OUTLOOK.COM ([fe80::6630:3a6e:ef90:56a2]) by TYWP286MB2172.JPNP286.PROD.OUTLOOK.COM ([fe80::6630:3a6e:ef90:56a2%4]) with mapi id 15.20.7339.031; Thu, 29 Feb 2024 17:41:57 +0000 From: toqsxw@outlook.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Mar 2024 01:41:30 +0800 Message-ID: X-Mailer: git-send-email 2.33.0.windows.2 X-TMN: [PNEJ0gCJ7LGpH8kp0iUR2GrZ6z4hRfKk] X-ClientProxiedBy: SI2PR02CA0048.apcprd02.prod.outlook.com (2603:1096:4:196::23) To TYWP286MB2172.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:173::5) X-Microsoft-Original-Message-ID: <20240229174130.1168-1-toqsxw@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYWP286MB2172:EE_|TYCP286MB3203:EE_ X-MS-Office365-Filtering-Correlation-Id: a458d2e8-3541-40e4-42a3-08dc394db996 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lRJt10b8f0pGwR8bQtK133Gc2kuzW640c4X6E4bjIaP7C+sr6mh0bfyN6HVZsNDEAUo/AGzqgPowp/WCL2p+Nr8yjVPWjvaDWpBm2uPNeqMiGU4YEKPJmlITxwMAVNCry8m5qwnnobudC2zHDFw2BsvBtLLzw/vav8hYMXbm+1UbW8uEQQiLTlR2u/WgDs3tuKkb6vBtTJz2f2AWMRXCWvpz577QeS0/lS9m6BZiP+HpbsBs2MTOhtsA92VGeqG5nqIKYIk4+/2/t41UCA3TjGqkJLQB6oa/WvgoVTM6feqwVaMF3ouuo0E8fpJtB2998cb+zVcNVTz05Z+c6KheHwwEZkM0sAUy/Ed6gm/8pgxfMyxlFhd0zNt9A1/nG4lV9vRteZOJKuP1uv/2bzrxkH0LMWV8IIPT2d29PvSLAzma5c3DM92c8V1j4QUPPZq6GwZehNQ9mr/Z2p632p6KsoK2NIGZufJRvVXZdYq6jmtzH5kT1CEsc/49MIJxlU4RcAwrCFW6QYR/S+CNGgbkEi/cVR0whg2+NyVvkEzj4BERf2zmk0NXsNfh+YIW0U3hTGKICsxxstSsBgeLzwZusbxa9yxWaCewy1/eCg+BljXCAi3SxGUAJ1Fg80bmb/Zh X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kQgqLDGdrva8s2QezBx5AOcrrcpfnWcWMYdHJ1rGXBI3uzk9oXtS4b6dWpHtdeueiJTDm0qkO8a3MPjw/prXoSo11qIgmejRfgXgvSVVa7Xxg2DS53ZRyQYLXT8dHIz+7OW0OfT3L7a3M7cFSsMIeUe8XVzyp3h8Pvpt2M6cukYDXYwZV62mHB6gDmY/Nogm3RW8Lo8bpCAGzvt98biQrFhms5t7n77ZNKqcD9PbkjCFMruydx6fNK8LbQe1DWIC7A8pgQ9YjlT5xmnd3eMC54YjqwPSSVV3aFzn5MzMZatN0RLSo+7hXt/3L1CJri2GnuK66K+sP1UM4eOf655UNWuy9zi15gFbhm3GmIMpNka+FCx2dArDpWJ0gTVLFr2Xgx6reQNfEMqXoM8pzH1iFlnVlNPDxf9dgVhXDIloRMVVcMccWqdWWQtg4VRbAt9/4RVMXT8T9F5dn34qB6UVfZEFI8geYGNIGci2A6lrYMRxzQ4ktebRoR0F0sEr95uzNef7PvR5rR9xh2+xn1Fq//qmO1UKWYt4F6pNqXw8K3OsXeu2xJibwzVAphgxK9koFctyE/BFhrSOa82LpsjZdY2Z3aoR7cYYxRCRnADDwCtFhJU25rVg3B6RCiTvqy7dQ8R2Lg1hGp/3bLpUdyxL8K/s56Bk51rb7Bezwmy9R7EJ4uD3q1M48pZSaNkZXBEbM/4CFhF8TmuanXoY9jxSy3gFT2EECgYONKVzNhKGnzq4Da5wd5lXa8+m95iZ7J243nn3Fbfc7V9cEWz96UXr1XTBXM1N+MLRx/2KfrWk93uroDbJVT2KwCVRyS+g8a+HTjjgaFcu55n3ccKVhpShs2oJs1lU+/IVhFvLfzcgpoFMprvh+XOFidWEMyOat/CG9mhNzfwFlxctPYzN0XS9b43wY8yH0wrW5h+iWe7YWl+f8wrlpctrszata45hU08db0UoWOxCoV+PhNzMcwSrVswHKN8pf7k95o/V4M6iPOdmSlnF3BSl53ub6k8af/IfhbWCgjbt5IrUjP23GP+oNmdKAIFC+NOMkbu6ewWbnBxPzcJJ41IPG4t2Ps5sSI/PgjqCKhgGBeYKlGT45Dfhuva+sQCJaVXgXNoO9+rFaXhII2NoTzLwwjb2EGTSjFuHkyoCQQQNU8FtpeS92kCG4ZS0oGZCHbR6GArc+AR7epdFTAtRMeHcENGaC2yZFMUqkSeeq71XthTD9kIML3uHU8vTKdD24C2UUE4HsioJr2k= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a458d2e8-3541-40e4-42a3-08dc394db996 X-MS-Exchange-CrossTenant-AuthSource: TYWP286MB2172.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Feb 2024 17:41:57.2076 (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: TYCP286MB3203 Subject: [FFmpeg-devel] [PATCH] avcodec/x86/vvc/vvcdsp_init: fix linking error when configuring with --disable-ssse3 --disable-optimizations options 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: Wu Jianhua Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Q0iuKzz7nFtV From: Wu Jianhua Signed-off-by: Wu Jianhua --- libavcodec/x86/vvc/vvcdsp_init.c | 115 ++++++++++++++++++++++--------- 1 file changed, 82 insertions(+), 33 deletions(-) diff --git a/libavcodec/x86/vvc/vvcdsp_init.c b/libavcodec/x86/vvc/vvcdsp_init.c index 0d2c683f0f..9ae84bda48 100644 --- a/libavcodec/x86/vvc/vvcdsp_init.c +++ b/libavcodec/x86/vvc/vvcdsp_init.c @@ -31,9 +31,67 @@ #include "libavcodec/vvc/vvcdsp.h" #include "libavcodec/x86/h26x/h2656dsp.h" +#define PUT_PROTOTYPE(name, depth, opt) \ +void ff_vvc_put_ ## name ## _ ## depth ## _##opt(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, int height, const int8_t *hf, const int8_t *vf, int width); + +#define PUT_PROTOTYPES(name, bitd, opt) \ + PUT_PROTOTYPE(name##2, bitd, opt) \ + PUT_PROTOTYPE(name##4, bitd, opt) \ + PUT_PROTOTYPE(name##8, bitd, opt) \ + PUT_PROTOTYPE(name##12, bitd, opt) \ + PUT_PROTOTYPE(name##16, bitd, opt) \ + PUT_PROTOTYPE(name##24, bitd, opt) \ + PUT_PROTOTYPE(name##32, bitd, opt) \ + PUT_PROTOTYPE(name##48, bitd, opt) \ + PUT_PROTOTYPE(name##64, bitd, opt) \ + PUT_PROTOTYPE(name##128, bitd, opt) + +#define PUT_BPC_PROTOTYPES(name, opt) \ + PUT_PROTOTYPES(name, 8, opt) \ + PUT_PROTOTYPES(name, 10, opt) \ + PUT_PROTOTYPES(name, 12, opt) + +#define PUT_TAP_PROTOTYPES(n, opt) \ + PUT_BPC_PROTOTYPES(n##tap_h, opt) \ + PUT_BPC_PROTOTYPES(n##tap_v, opt) \ + PUT_BPC_PROTOTYPES(n##tap_hv, opt) + +PUT_BPC_PROTOTYPES(pixels, sse4) +PUT_BPC_PROTOTYPES(pixels, avx2) + +PUT_TAP_PROTOTYPES(4, sse4) +PUT_TAP_PROTOTYPES(8, sse4) +PUT_TAP_PROTOTYPES(4, avx2) +PUT_TAP_PROTOTYPES(8, avx2) + +#define bf(fn, bd, opt) fn##_##bd##_##opt +#define BF(fn, bpc, opt) fn##_##bpc##bpc_##opt + +#define AVG_BPC_PROTOTYPES(bpc, opt) \ +void BF(ff_vvc_avg, bpc, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ + const int16_t *src0, const int16_t *src1, intptr_t width, intptr_t height, intptr_t pixel_max); \ +void BF(ff_vvc_w_avg, bpc, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ + const int16_t *src0, const int16_t *src1, intptr_t width, intptr_t height, \ + intptr_t denom, intptr_t w0, intptr_t w1, intptr_t o0, intptr_t o1, intptr_t pixel_max); + +#define AVG_PROTOTYPES(bd, opt) \ +void bf(ff_vvc_avg, bd, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ + const int16_t *src0, const int16_t *src1, int width, int height); \ +void bf(ff_vvc_w_avg, bd, opt)(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); + +AVG_BPC_PROTOTYPES( 8, avx2) +AVG_BPC_PROTOTYPES(16, avx2) + +AVG_PROTOTYPES( 8, avx2) +AVG_PROTOTYPES(10, avx2) +AVG_PROTOTYPES(12, avx2) + #if ARCH_X86_64 +#if HAVE_SSE4_EXTERNAL #define FW_PUT(name, depth, opt) \ -static void ff_vvc_put_ ## name ## _ ## depth ## _##opt(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, \ +void ff_vvc_put_ ## name ## _ ## depth ## _##opt(int16_t *dst, const uint8_t *src, ptrdiff_t srcstride, \ int height, const int8_t *hf, const int8_t *vf, int width) \ { \ ff_h2656_put_## name ## _ ## depth ## _##opt(dst, 2 * MAX_PB_SIZE, src, srcstride, height, hf, vf, width); \ @@ -69,7 +127,9 @@ static void ff_vvc_put_ ## name ## _ ## depth ## _##opt(int16_t *dst, const uint FW_PUT_SSE4( 8) FW_PUT_SSE4(10) FW_PUT_SSE4(12) +#endif +#if HAVE_AVX2_EXTERNAL #define FW_PUT_TAP_AVX2(n, bitd) \ FW_PUT(n ## tap_h32, bitd, avx2) \ FW_PUT(n ## tap_h64, bitd, avx2) \ @@ -105,6 +165,25 @@ FW_PUT_AVX2(12) FW_PUT_16BPC_AVX2(10) FW_PUT_16BPC_AVX2(12) +#define AVG_FUNCS(bpc, bd, opt) \ +void bf(ff_vvc_avg, bd, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ + const int16_t *src0, const int16_t *src1, int width, int height) \ +{ \ + BF(ff_vvc_avg, bpc, opt)(dst, dst_stride, src0, src1, width, height, (1 << bd) - 1); \ +} \ +void bf(ff_vvc_w_avg, bd, opt)(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) \ +{ \ + BF(ff_vvc_w_avg, bpc, opt)(dst, dst_stride, src0, src1, width, height, \ + denom, w0, w1, o0, o1, (1 << bd) - 1); \ +} + +AVG_FUNCS(8, 8, avx2) +AVG_FUNCS(16, 10, avx2) +AVG_FUNCS(16, 12, avx2) +#endif + #define PEL_LINK(dst, C, W, idx1, idx2, name, D, opt) \ dst[C][W][idx1][idx2] = ff_vvc_put_## name ## _ ## D ## _##opt; \ dst ## _uni[C][W][idx1][idx2] = ff_h2656_put_uni_ ## name ## _ ## D ## _##opt; \ @@ -170,40 +249,10 @@ FW_PUT_16BPC_AVX2(12) MC_TAP_LINKS_16BPC_AVX2(LUMA, 8, bd); \ MC_TAP_LINKS_16BPC_AVX2(CHROMA, 4, bd); -#define bf(fn, bd, opt) fn##_##bd##_##opt -#define BF(fn, bpc, opt) fn##_##bpc##bpc_##opt - -#define AVG_BPC_FUNC(bpc, opt) \ -void BF(ff_vvc_avg, bpc, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ - const int16_t *src0, const int16_t *src1, intptr_t width, intptr_t height, intptr_t pixel_max); \ -void BF(ff_vvc_w_avg, bpc, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ - const int16_t *src0, const int16_t *src1, intptr_t width, intptr_t height, \ - intptr_t denom, intptr_t w0, intptr_t w1, intptr_t o0, intptr_t o1, intptr_t pixel_max); - -#define AVG_FUNCS(bpc, bd, opt) \ -static void bf(avg, bd, opt)(uint8_t *dst, ptrdiff_t dst_stride, \ - const int16_t *src0, const int16_t *src1, int width, int height) \ -{ \ - BF(ff_vvc_avg, bpc, opt)(dst, dst_stride, src0, src1, width, height, (1 << bd) - 1); \ -} \ -static void bf(w_avg, bd, opt)(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) \ -{ \ - BF(ff_vvc_w_avg, bpc, opt)(dst, dst_stride, src0, src1, width, height, \ - denom, w0, w1, o0, o1, (1 << bd) - 1); \ -} - -AVG_BPC_FUNC(8, avx2) -AVG_BPC_FUNC(16, avx2) - -AVG_FUNCS(8, 8, avx2) -AVG_FUNCS(16, 10, avx2) -AVG_FUNCS(16, 12, avx2) #define AVG_INIT(bd, opt) do { \ - c->inter.avg = bf(avg, bd, opt); \ - c->inter.w_avg = bf(w_avg, bd, opt); \ + c->inter.avg = bf(ff_vvc_avg, bd, opt); \ + c->inter.w_avg = bf(ff_vvc_w_avg, bd, opt); \ } while (0) #endif