From patchwork Mon Sep 23 12:40:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramiro Polla X-Patchwork-Id: 51759 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:d154:0:b0:48e:c0f8:d0de with SMTP id bt20csp2523016vqb; Mon, 23 Sep 2024 08:09:20 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWysCvkM1wZvIL5Nzf69ddX8BHeyQF7lm6qPv3EgDrLt+oLfS9k+WMJC0KDTjXBwmkGHIQO6hT35BDLn/mNDwBW@gmail.com X-Google-Smtp-Source: AGHT+IGB2GrOm8c5MSDXmwfIjUaY+7n23u4BsAMK5wn40hz0dQEj/UrpwOXo6Zw2fo2AD9jMck29 X-Received: by 2002:a05:6512:401e:b0:52c:cc38:592c with SMTP id 2adb3069b0e04-536ac179d05mr6555171e87.0.1727104160574; Mon, 23 Sep 2024 08:09:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727104160; cv=none; d=google.com; s=arc-20240605; b=DG1tP8E5SuqyMIjS+ipoibQMmCTV+dAMVozFDPUfxROMpaee7CYVMEVVGPEa9AbmcK OWaO9hKd96T36nuc2t5oHUYpdYkQhJ0awr/k1B8QjKnPsEDYeXJTk9a8ZD5WnSCyyc1n 2PBeR/mvuXaPGBPtG3exLHcmbsUmjPQBks3WV8r0TRUW7JK4WCN0mpPUGdpL0nvyciG3 DT8hA3rJC9QRRsexiafdGrZpqm1KXn9lsyGztuFzQyT8g9zHN2Be1OIiael8N/ekAFjo xK50cTJg4npqsvEylODdxHw598nbQSFv5D/3o6Cbxcw4cooiWoYgAEoLwoncN1QVWcQ6 VyCQ== 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=DYt545dMvkNKat/HdwJmtTvmVKTzbpx2gBXuHYU8EdCqgtyVeYeVq45WF+tdbtGXzv bKuXsgw9+3NNta8ThBw8g/WuCHb9ovm1kgS5cSS7/6ZaIx8IsPmA/PTgr95cSO6ro4p5 2NQL5YGePXHD9nFr3ZN4ubK/PebnsTWt67v7BP0PU+TjB51tIsf5A3ocOMfEJ/9uS0u3 Gmx0tV6vhX3enQdLh4hCaA0CeCrh9UgjgF36Xu3gCRtKOoPVK9qlWNvsgMa3W5BGsA11 deNZDxHDrjsyAfWpyYAGA+2fNMSTLmFtNjyYcWlEvPUBLupzezmiAbS/eVHHRbhPTmWZ 3caA==; 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=N9lvX4ww; 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 4fb4d7f45d1cf-5c42bc903f7si13336618a12.401.2024.09.23.08.09.18; Mon, 23 Sep 2024 08:09:20 -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=N9lvX4ww; 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 7D63F68DA65; Mon, 23 Sep 2024 15:40:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BC97368DAB0 for ; Mon, 23 Sep 2024 15:40:23 +0300 (EEST) Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-374bd0da617so3063028f8f.3 for ; Mon, 23 Sep 2024 05:40:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727095222; x=1727700022; 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=N9lvX4ww6hu5xZq06Jliro90vKViAIqdMOUZNyfh+toQ875xMILr8izDUI4jOTRXEz +bsGOBe7OmtckUusYEugA/Qa3bMyD4isdYN4s292TSi/9T5Fwtfe/w63sXaEgZYNZeuE cfmQeNaRisjyy2dMhGLt7n3j59q9EUjI+39XP1Pizdbjwt5L79rN2uFt7YAQmTPf+w82 3SD5gkS8/hlOXQj8FR5SGNpv6tjCEdoFSOV3k24kpWxwuDhzNLskuqExZGMYBiz9hNON PehTt2QjM4gtBCev2IhOwQ6hVGtnV9KGnABgUDSXHKuB+Qo1aK1Q39zUjfB/nf8AlSPG ej0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727095222; x=1727700022; 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=H1HMeAbo95FqsfoUHUMWY7lx7gbFJMXX8UwE7wMUUsLmhhPRQ8jHerEp9FRdlMCevg lA1axBshOXRQTt3WY8qIgSLJP98qFBfccDtdw13IjN2zJ4fws+vSaXG+wKXefZEuy30d PRoBhmYLooZSHkUaYO9if7xL+y7zBSVfoVHVThWJfigAq9joQYHMtYCKqB6Q2BGuKWbK 5sylyiXT0n4KMvolDNyhlSTtmozroLcK6lRT0DVt9MEolpsRSA0ZwUm+Nv9KiJcif1p3 TrPFujr0CkCtbv2ljSQjTVWnUYr2sCWl0Q8dyS1LjyqWf8ypCLESa8RsundrYyU9Ij5H BREQ== X-Gm-Message-State: AOJu0Yz2n/hSZ1GoCcljKIAMP81Ou4nvwk0Xqw+y1A0K8o0Rl2d7Nrki KrRRH7uGw4AwzUnevq3X6CBnz4bHlXFiw/hEpfrHWRzigN11LzTSDw84OA== X-Received: by 2002:adf:e810:0:b0:37a:26f4:18a2 with SMTP id ffacd0b85a97d-37a42252b8dmr6108485f8f.4.1727095222129; Mon, 23 Sep 2024 05:40:22 -0700 (PDT) Received: from localhost.localdomain (213.95-240-81.adsl-dyn.isp.belgacom.be. [81.240.95.213]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-378e71f0683sm24424345f8f.13.2024.09.23.05.40.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Sep 2024 05:40:21 -0700 (PDT) From: Ramiro Polla To: ffmpeg-devel@ffmpeg.org Date: Mon, 23 Sep 2024 14:40:04 +0200 Message-Id: <20240923124017.33659-2-ramiro.polla@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240923124017.33659-1-ramiro.polla@gmail.com> References: <20240923124017.33659-1-ramiro.polla@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/14] 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: +m6kkSGL7iTT 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); }