From patchwork Tue Jan 31 15:54:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 40197 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3ca3:b0:b9:1511:ac2c with SMTP id b35csp156719pzj; Tue, 31 Jan 2023 07:55:03 -0800 (PST) X-Google-Smtp-Source: AK7set/W5fjUbyT715iIHBpJPPzHvHfs7JAnmlSXKPYCR8H1CP6B25kCTgtSTAtg97ezJtHp5KlN X-Received: by 2002:a05:6402:1d89:b0:4a2:6660:8fbc with SMTP id dk9-20020a0564021d8900b004a266608fbcmr2844280edb.40.1675180503554; Tue, 31 Jan 2023 07:55:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675180503; cv=none; d=google.com; s=arc-20160816; b=MYP0N2CH7Ak6IA53LlEFJLQka5ga6/3S7rT7nfgxBDKvosqU3tA9X/03LbpCXzsRB+ n4lUHhy7uTXkeHnGkd1JXGr2dfWIgmSs1qszl0eCPlcKzW8sgETVTkN5K2NgFFsz1ejw mK3yK+ts62697v5nx/uEkln+uU1gl5RzxuXiLiSIGVmOA0NSHVfXBj5HTjBoyK5jj7FU Dd6QyyVJPW/ZEgRTJLR26SIgsjXHQv5TdEtQo1QFzNqASjGO6lfohPIrR2clmQopE9WG UI6+vWZ3FpSmaLnS4ywGtBWHH8FGbmLdbIiz507Y+y0Vg728/oCtWoe/DXji3JZ8chYt KE+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:date:to:from:message-id:delivered-to; bh=cfXO9107zXZcyYwagaPjiurktu2/yoDR3jxc/Ac7LF8=; b=NI+4aHy1S4b4NGZBS2TTU//Xi0bYbyMcbPJ4lt6puK/7Sp19rkqLGCVrDj32s0S9mc FvywwQX5ruZZAQlSxDG7doooB40gXiWVfokNFCdtjTzn1CDZqsskO307P4FDzwbIN4qb 2ygpP/jYuG4fVm51kZvshk7h0fVQfh1rO8EFnPokH1MGOJ9FyxReJSzo2gFEtLlNPmUv qg4TGbicQXp1LjjezRwwlp5lVHMYViqVhQY6CPogMU9ujj/Lr3MmfppwmJF+Vsox7TiV yRGSHROjkmOvKNnGfdYwdoH/RZa/IVd6gYIgL+tVUymJI54ocCEknTB9+T8vCrI5iNot eHhA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n11-20020aa7db4b000000b0046e635ee69esi376324edt.210.2023.01.31.07.54.58; Tue, 31 Jan 2023 07:55:03 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F68B68BDE8; Tue, 31 Jan 2023 17:54:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail.frobbit.se (mail.frobbit.se [85.30.129.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5CC9568B0C1 for ; Tue, 31 Jan 2023 17:54:48 +0200 (EET) Received: from [10.10.150.68] (1346516434.ip.84grams.net [134.65.164.34]) by mail.frobbit.se (Postfix) with ESMTPSA id 54F7021AF7 for ; Tue, 31 Jan 2023 16:54:47 +0100 (CET) Message-ID: <3785f434aebbb28f188e6b40e1454403054129b4.camel@haerdin.se> From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Tue, 31 Jan 2023 16:54:46 +0100 User-Agent: Evolution 3.38.3-1+deb11u1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] sws/utils.c: Do not uselessly call initFilter() when unscaling 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: l8xLJEH8Lpe0 Passes FATE /Tomas From 485b779b06085ca0b51eaf33a56f6ddade05b3c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 31 Jan 2023 16:33:21 +0100 Subject: [PATCH] sws/utils.c: Do not uselessly call initFilter() when unscaling --- libswscale/utils.c | 62 +++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/libswscale/utils.c b/libswscale/utils.c index 90734f66ef..925c536bf1 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1701,6 +1701,37 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, } } + /* alpha blend special case, note this has been split via cascaded contexts if its scaled */ + if (unscaled && !usesHFilter && !usesVFilter && + c->alphablend != SWS_ALPHA_BLEND_NONE && + isALPHA(srcFormat) && + (c->srcRange == c->dstRange || isAnyRGB(dstFormat)) && + alphaless_fmt(srcFormat) == dstFormat + ) { + c->convert_unscaled = ff_sws_alphablendaway; + + if (flags & SWS_PRINT_INFO) + av_log(c, AV_LOG_INFO, + "using alpha blendaway %s -> %s special converter\n", + av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); + return 0; + } + + /* unscaled special cases */ + if (unscaled && !usesHFilter && !usesVFilter && + (c->srcRange == c->dstRange || isAnyRGB(dstFormat) || + isFloat(srcFormat) || isFloat(dstFormat))){ + ff_get_unscaled_swscale(c); + + if (c->convert_unscaled) { + if (flags & SWS_PRINT_INFO) + av_log(c, AV_LOG_INFO, + "using unscaled %s -> %s special converter\n", + av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); + return 0; + } + } + #if HAVE_MMAP && HAVE_MPROTECT && defined(MAP_ANONYMOUS) #define USE_MMAP 1 #else @@ -1905,37 +1936,6 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, c->chrXInc, c->chrYInc); } - /* alpha blend special case, note this has been split via cascaded contexts if its scaled */ - if (unscaled && !usesHFilter && !usesVFilter && - c->alphablend != SWS_ALPHA_BLEND_NONE && - isALPHA(srcFormat) && - (c->srcRange == c->dstRange || isAnyRGB(dstFormat)) && - alphaless_fmt(srcFormat) == dstFormat - ) { - c->convert_unscaled = ff_sws_alphablendaway; - - if (flags & SWS_PRINT_INFO) - av_log(c, AV_LOG_INFO, - "using alpha blendaway %s -> %s special converter\n", - av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); - return 0; - } - - /* unscaled special cases */ - if (unscaled && !usesHFilter && !usesVFilter && - (c->srcRange == c->dstRange || isAnyRGB(dstFormat) || - isFloat(srcFormat) || isFloat(dstFormat))){ - ff_get_unscaled_swscale(c); - - if (c->convert_unscaled) { - if (flags & SWS_PRINT_INFO) - av_log(c, AV_LOG_INFO, - "using unscaled %s -> %s special converter\n", - av_get_pix_fmt_name(srcFormat), av_get_pix_fmt_name(dstFormat)); - return 0; - } - } - ff_sws_init_scale(c); return ff_init_filters(c); -- 2.30.2