From patchwork Fri Sep 27 12:52:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramiro Polla X-Patchwork-Id: 51883 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d8ca:0:b0:48e:c0f8:d0de with SMTP id dy10csp753817vqb; Fri, 27 Sep 2024 18:11:15 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVuaYvPUJ48GRGufzdSslq5jJqy5G+SDiglHw/2F1tvsk2D+xovY8eeAqgy4Txv9iOYlLSzZqTZ6vwxdvWw0G3T@gmail.com X-Google-Smtp-Source: AGHT+IGrPKvLWNVB5JEdATN/84G8MjrfYjlQkZuCix/ZOGg2ycaKO1+6tfStlF/mm8Pr3xQUFXbE X-Received: by 2002:a05:6512:1113:b0:52f:d69e:bb38 with SMTP id 2adb3069b0e04-5389fc3312fmr3531575e87.2.1727485875676; Fri, 27 Sep 2024 18:11:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727485875; cv=none; d=google.com; s=arc-20240605; b=eRVBEV/Jv0RvCynSCcacO3oVG7r3Q1o+8TfweC++SUKq8WYmTdFB8/FFbF1vEnz9mu J1bDEdvWuQlJhpiV2gIDx97WbSo3WPjPZhDkaw7WHRnmR3RIRi1tY02D05sndFikvI5y j4HRaJBLfjIc86vkSohaBOLXrENi/OUYAqWXr5ksI75kNgbyNGJ/u3l63LXIbDwDNK+s GZ4m8ExF8iFfLIX4mYVL/E3I7csVKFgLnlVf24Va/+Z5Ctfs/xOwqHFKprNNUt33GSdg w6WwrA86oXNgaMJ3x2F+/mmc3QcXbOS7RmDXdxxgJMkiwsYfdekB8emms5iQN3yeMk50 mBxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=JsyVTxl6bu7xcjMTEG8pU/FNalg/2+WixN7jxzYsAO8=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=Sg49Cv/A/khpsvCcdupKlNMUK72xkS2DlEqujJ/OOy3j1lSntmj7Ze13VVul9Cd5Ny bQAYMw+cvsht121JczB1dN5E/fZe31zQXa8Ji6P9gluaO79Dm3ktJDbjOf9yLSN2VzcC UADTICRuLTNn40ufHZE8gwVOshuibclgDOiFkY6P5LJbn7QSgi+gXa6PzjqymKpX1xci 4Zc9skn4dMn9P2yKJPzrNjugAXEy1IkpGYo52lMO1UT7qL7JtbDpZQrRiiyenvqPaunr iD5L9M/cHZEMurc0fAXmCnfzOb0wARwrl5dklhKX+fxgJ+TYKvsatwjBiiL2GeB4LDZ6 PY8A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=h66qATu0; 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=gmail.com; dara=fail header.i=@gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-538a0439c03si1038456e87.349.2024.09.27.18.11.15; Fri, 27 Sep 2024 18:11:15 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=h66qATu0; 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=gmail.com; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0FBA568DCE7; Fri, 27 Sep 2024 15:52:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88D6868DCCB for ; Fri, 27 Sep 2024 15:52:50 +0300 (EEST) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a8ce5db8668so331805166b.1 for ; Fri, 27 Sep 2024 05:52:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727441569; x=1728046369; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=UWCgcGgDmBAe+oPBuvk7o5b+BeOwoh5/kbwsqqYPYD8=; b=h66qATu0hgqwGEFwUq8cOI7pZm+1PagRNWOGeyVqO32ON0RgQ3uJm4oguZni8aYQnF 3IIHnmiKVPgqd0piNZSfAnHQrsx+Dx2Z9Wpj30eeGlxA/kg9840weKrQX0ThqY0PcGAy N7BCwFzDwHAT+H3gdUx2XsRzxp4l8FXa4GkLGgH49AEpX0J2rzXt8j/ZVaz/LcGcVbHU 0jTzjFhxoJ9dz8St2vADaEhmk+hZTXxQGfPTNHmMyIXhA2U0MCy+ppfuMw2QkRbre87N RWcvbEgDg3Sf1MYbWRzcNf02jgxUh/sJtT8QI6lAH5ELM0kgg2aIkyKRPXQMZ1dz2tDW dW9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727441569; x=1728046369; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UWCgcGgDmBAe+oPBuvk7o5b+BeOwoh5/kbwsqqYPYD8=; b=ZAlnYk/mIj/ZRppYuuE2Q9n0L5tXwtELUxBTpjspspwOH2Q6mioYbXtwm1O8KW68PE 7JiXFoTtzPnLxgZTU2yoXCyfa5+F4sccsosrO/TB8JzXwEccGdip0y9418WjQymaAzoD e9vIiq/gLS7V3ynpj7qgUO+UleICe4fsDy6O4ZqKgEH2MINnj7HQ5nKkREWtZMLkTR1p eRglk+LTQFRorZlDQEIr+PwBPgN8WSs5iE8oFoM5rmSx1KqjNmp7FaIinvZGCJIF+OdS UhLgSynBKHiGh84XYrR7pUKm5+PA9aNdVfFYnZJKsUB6QfcG5cofTalr3R54sYiMFL1J GHyg== X-Gm-Message-State: AOJu0YxvGsRCOgcPsnYaziBwjhOYtImwIIucafiyVb2B+ipZ+NtwwP/5 rBT/Z22ptS+UdNVqZ0PilCbtR/etXFm0goIf+rWj18jUyYLqY/B1bIEan656 X-Received: by 2002:a17:907:3e9e:b0:a8a:78bb:1e2 with SMTP id a640c23a62f3a-a93c48e7d14mr311523866b.6.1727441569245; Fri, 27 Sep 2024 05:52:49 -0700 (PDT) Received: from localhost.localdomain ([109.143.184.139]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a93c2777214sm130608566b.36.2024.09.27.05.52.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2024 05:52:48 -0700 (PDT) From: Ramiro Polla To: ffmpeg-devel@ffmpeg.org Date: Fri, 27 Sep 2024 14:52:26 +0200 Message-Id: <20240927125241.15887-2-ramiro.polla@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240927125241.15887-1-ramiro.polla@gmail.com> References: <20240927125241.15887-1-ramiro.polla@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 01/16] swscale/range_convert: call arch-specific init functions from main init function 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ubgj0kMVv1ea This commit also fixes the issue that the call to ff_sws_init_range_convert() from sws_init_swscale() was not setting up the arch-specific optimizations. --- libswscale/aarch64/swscale.c | 5 ++++- libswscale/loongarch/swscale_init_loongarch.c | 1 - libswscale/riscv/swscale.c | 7 ++++--- libswscale/swscale.c | 10 ++++++++++ libswscale/swscale_internal.h | 1 + libswscale/utils.c | 10 +--------- libswscale/x86/swscale.c | 2 -- 7 files changed, 20 insertions(+), 16 deletions(-) diff --git a/libswscale/aarch64/swscale.c b/libswscale/aarch64/swscale.c index eb907284e7..863627d7c3 100644 --- a/libswscale/aarch64/swscale.c +++ b/libswscale/aarch64/swscale.c @@ -225,6 +225,9 @@ void ff_chrRangeToJpeg_neon(int16_t *dstU, int16_t *dstV, int width); av_cold void ff_sws_init_range_convert_aarch64(SwsContext *c) { + int cpu_flags = av_get_cpu_flags(); + + if (have_neon(cpu_flags)) { if (c->srcRange != c->dstRange && !isAnyRGB(c->dstFormat)) { if (c->dstBpc <= 14) { if (c->srcRange) { @@ -236,6 +239,7 @@ av_cold void ff_sws_init_range_convert_aarch64(SwsContext *c) } } } + } } av_cold void ff_sws_init_swscale_aarch64(SwsContext *c) @@ -296,6 +300,5 @@ av_cold void ff_sws_init_swscale_aarch64(SwsContext *c) default: break; } - ff_sws_init_range_convert_aarch64(c); } } diff --git a/libswscale/loongarch/swscale_init_loongarch.c b/libswscale/loongarch/swscale_init_loongarch.c index 2a95ede6d9..88ad21a103 100644 --- a/libswscale/loongarch/swscale_init_loongarch.c +++ b/libswscale/loongarch/swscale_init_loongarch.c @@ -95,7 +95,6 @@ av_cold void ff_sws_init_swscale_loongarch(SwsContext *c) } } #endif // #if HAVE_LASX - ff_sws_init_range_convert_loongarch(c); } av_cold void rgb2rgb_init_loongarch(void) diff --git a/libswscale/riscv/swscale.c b/libswscale/riscv/swscale.c index c452d93e5d..ad579308c5 100644 --- a/libswscale/riscv/swscale.c +++ b/libswscale/riscv/swscale.c @@ -26,9 +26,11 @@ void ff_range_chr_to_jpeg_16_rvv(int16_t *, int16_t *, int); void ff_range_lum_from_jpeg_16_rvv(int16_t *, int); void ff_range_chr_from_jpeg_16_rvv(int16_t *, int16_t *, int); -av_cold static void ff_sws_init_range_convert_riscv(SwsContext *c, int flags) +av_cold void ff_sws_init_range_convert_riscv(SwsContext *c) { #if HAVE_RVV + int flags = av_get_cpu_flags(); + static const struct { void (*lum)(int16_t *, int); void (*chr)(int16_t *, int16_t *, int); @@ -67,9 +69,9 @@ RVV_INPUT(rgba32); av_cold void ff_sws_init_swscale_riscv(SwsContext *c) { +#if HAVE_RVV int flags = av_get_cpu_flags(); -#if HAVE_RVV if ((flags & AV_CPU_FLAG_RVV_I32) && (flags & AV_CPU_FLAG_RVB)) { switch (c->srcFormat) { case AV_PIX_FMT_ABGR: @@ -122,5 +124,4 @@ av_cold void ff_sws_init_swscale_riscv(SwsContext *c) } } #endif - ff_sws_init_range_convert_riscv(c, flags); } diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 8b6a3a84b4..7f47dab4b6 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -554,6 +554,16 @@ av_cold void ff_sws_init_range_convert(SwsContext *c) } } } + +#if ARCH_AARCH64 + ff_sws_init_range_convert_aarch64(c); +#elif ARCH_LOONGARCH64 + ff_sws_init_range_convert_loongarch(c); +#elif ARCH_RISCV + ff_sws_init_range_convert_riscv(c); +#elif ARCH_X86 + ff_sws_init_range_convert_x86(c); +#endif } static av_cold void sws_init_swscale(SwsContext *c) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 50127d288f..66be22ac05 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -697,6 +697,7 @@ void ff_updateMMXDitherTables(SwsContext *c, int dstY); av_cold void ff_sws_init_range_convert(SwsContext *c); av_cold void ff_sws_init_range_convert_aarch64(SwsContext *c); av_cold void ff_sws_init_range_convert_loongarch(SwsContext *c); +av_cold void ff_sws_init_range_convert_riscv(SwsContext *c); av_cold void ff_sws_init_range_convert_x86(SwsContext *c); SwsFunc ff_yuv2rgb_init_x86(SwsContext *c); diff --git a/libswscale/utils.c b/libswscale/utils.c index c3154d82c1..4dec29ad96 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1078,16 +1078,8 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], c->srcRange = srcRange; c->dstRange = dstRange; - if (need_reinit) { + if (need_reinit) ff_sws_init_range_convert(c); -#if ARCH_AARCH64 - ff_sws_init_range_convert_aarch64(c); -#elif ARCH_LOONGARCH64 - ff_sws_init_range_convert_loongarch(c); -#elif ARCH_X86 - ff_sws_init_range_convert_x86(c); -#endif - } c->dstFormatBpp = av_get_bits_per_pixel(desc_dst); c->srcFormatBpp = av_get_bits_per_pixel(desc_src); diff --git a/libswscale/x86/swscale.c b/libswscale/x86/swscale.c index 43319fd6b2..c82311d87b 100644 --- a/libswscale/x86/swscale.c +++ b/libswscale/x86/swscale.c @@ -851,6 +851,4 @@ switch(c->dstBpc){ \ } #endif - - ff_sws_init_range_convert_x86(c); }