From patchwork Sat Oct 5 19:23:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52066 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1130806vqg; Sat, 5 Oct 2024 12:25:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUIxLt0lceJd3EJyvhSCGnbM9kVIpyYTBEaVee5dWeVsKs9bfOwcV4S7SUFxwRoPa5mJspnyjSY4zli/GHfn7KQ@gmail.com X-Google-Smtp-Source: AGHT+IGEhS1b0ttXq3ZIgWTY0yeb1s3WjhX5S3yMH1WOovZKkdBIwerYC8wzj4jdjsKyqb2PKuFL X-Received: by 2002:a05:651c:b22:b0:2fa:d4c1:3b6b with SMTP id 38308e7fff4ca-2faf3d74e2cmr30308961fa.33.1728156313752; Sat, 05 Oct 2024 12:25:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156313; cv=none; d=google.com; s=arc-20240605; b=JAmDTQVN7BUH6Iz/6SvmeMjzbNYsuT0HdwIptVCsZ9KgtQmWFRx4Ivfz/ZnG98B6bO KnMuQWmkFET6RCmA7d9iKgD8DqRZhxtJ73CbmKWCDVt+VGCxLUQ/zwHb13bKzFA0oKVR smn4g5fkBB4GZKNUFxRXS2z4fVmM3FQHWocsIfOSp4h7vVK+IUzoygyPuNRA91fYCbLj SxM72OrTRlB/U4bchRhWKMn+ika8Gu4mwAivhH83KzdLkPs2htgG86lhy8injqw6MqON Md20b+3xp/o2XSQpGmw/+ZpTBBT9tAwz0XffduY929Iv/oexdVkDPvbpdAGHa6Fyd05u wLLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc: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=DyN93jhK65dMr9hSc6k4+Bgf0j2CGao0ASTmC0/Htqs=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=YD/07bQXuBXmoQQVoeIiz39TvXx7Ji+1S+X2K5JL0tzU36cT/dslJ520r03zzMCiz8 taZUKLGTd5XRxmDtOZryvBL8X91jTuzfcDb/GtfnD/zSw67AN2AgZ4Oh+60GtJODilFP LDpEp3apG4QwTQL0En/4DbhvdGKoXQHxqrApushMyi2kQ3zCqQOc+Wp8MhTD14eIm1yP 0EXdv9wFD+5XMmQSITwtC6qkuvojEZSZc9bbFJLSjU8t+PsNRRhL9az5M9+TIBUsY6xP 173P7ddr+VJw6ktXbDeQhNQ1F2D/GmxdGrjUvgfBmYkbcbzWd4Vz3snx2W3TV/4Rv07g 1uhQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=pHxOXb2b; 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 38308e7fff4ca-2faf9b228cesi6517941fa.218.2024.10.05.12.25.13; Sat, 05 Oct 2024 12:25:13 -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=@haasn.xyz header.s=mail header.b=pHxOXb2b; 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 D869468DAE3; Sat, 5 Oct 2024 22:24:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2306068DA4D for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156254; bh=ZaVrPKr5xhurjb8INNmKstLupDvd8mh26mVa17f4+KM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pHxOXb2bb9WiHOBlaoWbfSDMZo29yn6GmtlI/5P89XfThemhQzIF7lM/TuhUDTCSL Wg5YYHzDqjC/tTk9mcdXRlBK+06lAarBTqWFg5RnDijJr3A4XymwaqQ2uOjOdz7m7K t2bbNAxfLxTA5BtLlk4aoG66Jrf/6VOyRbCzTFC8= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 268BB43E92; Sat, 5 Oct 2024 21:24:14 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:59 +0200 Message-ID: <20241005192403.2450339-8-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/12] swscale/internal: turn cascaded_tmp into an array 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: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IyMSTpljdgPz From: Niklas Haas Slightly more convenient to access from the new wrapping code. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale.c | 20 ++++++++++---------- libswscale/swscale_internal.h | 6 ++---- libswscale/utils.c | 16 ++++++++-------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index e9323efb87..fa7f220f0b 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -842,26 +842,26 @@ static int scale_gamma(SwsContext *c, { int ret = scale_internal(c->cascaded_context[0], srcSlice, srcStride, srcSliceY, srcSliceH, - c->cascaded_tmp, c->cascaded_tmpStride, 0, c->srcH); + c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->srcH); if (ret < 0) return ret; if (c->cascaded_context[2]) - ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp, - c->cascaded_tmpStride, srcSliceY, srcSliceH, - c->cascaded1_tmp, c->cascaded1_tmpStride, 0, c->dstH); + ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp[0], + c->cascaded_tmpStride[0], srcSliceY, srcSliceH, + c->cascaded_tmp[1], c->cascaded_tmpStride[1], 0, c->dstH); else - ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp, - c->cascaded_tmpStride, srcSliceY, srcSliceH, + ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp[0], + c->cascaded_tmpStride[0], srcSliceY, srcSliceH, dstSlice, dstStride, dstSliceY, dstSliceH); if (ret < 0) return ret; if (c->cascaded_context[2]) { - ret = scale_internal(c->cascaded_context[2], (const uint8_t * const *)c->cascaded1_tmp, - c->cascaded1_tmpStride, c->cascaded_context[1]->dstY - ret, + ret = scale_internal(c->cascaded_context[2], (const uint8_t * const *)c->cascaded_tmp[1], + c->cascaded_tmpStride[1], c->cascaded_context[1]->dstY - ret, c->cascaded_context[1]->dstY, dstSlice, dstStride, dstSliceY, dstSliceH); } @@ -876,12 +876,12 @@ static int scale_cascaded(SwsContext *c, { int ret = scale_internal(c->cascaded_context[0], srcSlice, srcStride, srcSliceY, srcSliceH, - c->cascaded_tmp, c->cascaded_tmpStride, + c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->cascaded_context[0]->dstH); if (ret < 0) return ret; ret = scale_internal(c->cascaded_context[1], - (const uint8_t * const * )c->cascaded_tmp, c->cascaded_tmpStride, + (const uint8_t * const * )c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->cascaded_context[0]->dstH, dstSlice, dstStride, dstSliceY, dstSliceH); return ret; diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index d2dd3b63bd..07b58bfd0e 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -351,10 +351,8 @@ typedef struct SwsContext { * downscaling factor that needs to be supported in one scaler. */ struct SwsContext *cascaded_context[3]; - int cascaded_tmpStride[4]; - uint8_t *cascaded_tmp[4]; - int cascaded1_tmpStride[4]; - uint8_t *cascaded1_tmp[4]; + int cascaded_tmpStride[2][4]; + uint8_t *cascaded_tmp[2][4]; int cascaded_mainindex; double gamma_value; diff --git a/libswscale/utils.c b/libswscale/utils.c index c3154d82c1..642e34c46c 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1133,7 +1133,7 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], tmp_height = srcH; } - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], tmp_width, tmp_height, tmp_format, 64); if (ret < 0) return ret; @@ -1613,7 +1613,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, SwsContext *c2; c->cascaded_context[0] = NULL; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFmt, 64); if (ret < 0) return ret; @@ -1651,7 +1651,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, c->cascaded_context[2] = NULL; if (dstFormat != tmpFmt) { - ret = av_image_alloc(c->cascaded1_tmp, c->cascaded1_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[1], c->cascaded_tmpStride[1], dstW, dstH, tmpFmt, 64); if (ret < 0) return ret; @@ -1671,7 +1671,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, dstFormat != AV_PIX_FMT_RGB48)) { enum AVPixelFormat tmpFormat = isBayer16BPS(srcFormat) ? AV_PIX_FMT_RGB48 : AV_PIX_FMT_RGB24; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFormat, 64); if (ret < 0) return ret; @@ -1714,7 +1714,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, c->srcRange != c->dstRange ) { c->cascaded_mainindex = 1; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFormat, 64); if (ret < 0) return ret; @@ -1996,7 +1996,7 @@ fail: // FIXME replace things by appropriate error codes if (srcW*(int64_t)srcH <= 4LL*dstW*dstH) return AVERROR(EINVAL); - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], tmpW, tmpH, tmpFormat, 64); if (ret < 0) return ret; @@ -2490,8 +2490,8 @@ void sws_freeContext(SwsContext *c) sws_freeContext(c->cascaded_context[1]); sws_freeContext(c->cascaded_context[2]); memset(c->cascaded_context, 0, sizeof(c->cascaded_context)); - av_freep(&c->cascaded_tmp[0]); - av_freep(&c->cascaded1_tmp[0]); + av_freep(&c->cascaded_tmp[0][0]); + av_freep(&c->cascaded_tmp[1][0]); av_freep(&c->gamma); av_freep(&c->inv_gamma);