From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 053E648D2F for ; Sat, 24 Feb 2024 15:50:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7D93168C64E; Sat, 24 Feb 2024 17:49:58 +0200 (EET) Received: from mail-qv1-f50.google.com (mail-qv1-f50.google.com [209.85.219.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6588F68BD68 for ; Sat, 24 Feb 2024 17:49:52 +0200 (EET) Received: by mail-qv1-f50.google.com with SMTP id 6a1803df08f44-68fe368cc38so6597546d6.0 for ; Sat, 24 Feb 2024 07:49:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708789791; x=1709394591; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yB1nbvgTyoQKywkftV8wJiBIj4bXJ4Q5B0QNSp1to7A=; b=SGHJ8bNIDlk7Sqc6017NLT57UpXM/Wc4PgjR8FlSE0V3X3qRGIGQxh/N6AXn7TVgie KbHWUC0CYMD4ix2BiOGW4q4+uJipYIV8sbR8UB5cO0wcxXQet0TS3XImjeUzN2WWjN5K owlakneiHThM487cg+lpffl2FQUKxm2J4gRY99zKMIMk7TwH8XLs1FBwbmkyZ26ctsdi Ctk+ZHwwD9VWqQhWZQklge4CWGu93OKoRHHgeDsUFR2LSJjbIwcaNyp+nT7mHmiedG1z 56QC4PCyuaY/j5d4rl8duBRPpd6tBDBX/Kls2qvVqdURd1uM5YsqCwx5sM7I9OeAoymz qlXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708789791; x=1709394591; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yB1nbvgTyoQKywkftV8wJiBIj4bXJ4Q5B0QNSp1to7A=; b=Y2AIG2kom0PbJHK2FItikbqXKIz4P6RabHRUPVIZh5QMvUv1xDsquCdxDnR8A3shu+ IWxAXYxjVPAsHpPfuRYh32IypFEcdimkwje2dcAd8dhleX73eWpOJczRtXeMi83ytaxN qmOQ0LNfNPRhCV3W74/kGaZjFPJmSPrePrRwagKJzeisEEI1SQDyRYNUisWOYT3wThUY Q7ftVGa9NvPlfQsne/VYAAEgd6Bipxz48fQvT9xaeeQ4Je/ytSS3vUJL7BiKYv5AyHO2 9dhl3BO6KLxCW0mJjZyf/JjrBeAQFKWcwc40QhCxYL1JXaMmbx5QRkaqUFC38z/iITfG mszQ== X-Gm-Message-State: AOJu0YxvwBmcpiwbammqZaIbJYLMepaCfi4JAeRmBHRwGwX/O29YHkgQ bjDI1ePS5M4GFVAB+p5DiB0vOxs4FX+Peg8vr3XCu8aHkQZOSCJ+GghV95AljVo= X-Google-Smtp-Source: AGHT+IHX3/IjNBjqx48UFejK5MNpy+ZTtIzPbvnHlRSxGK2cOAVHaqIN2ndII1ykK3p4yYLVmdTUMg== X-Received: by 2002:a0c:b4ca:0:b0:68f:340d:d5ee with SMTP id h10-20020a0cb4ca000000b0068f340dd5eemr2913673qvf.1.1708789790615; Sat, 24 Feb 2024 07:49:50 -0800 (PST) Received: from fedora.. ([96.67.56.60]) by smtp.gmail.com with ESMTPSA id g16-20020a0caad0000000b0068f6c496656sm823275qvb.139.2024.02.24.07.49.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Feb 2024 07:49:50 -0800 (PST) From: Stone Chen To: ffmpeg-devel@ffmpeg.org Date: Sat, 24 Feb 2024 10:49:28 -0500 Message-ID: <20240224154928.218662-1-chen.stonechen@gmail.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <3601973235488930945@unknownmsgid> References: <3601973235488930945@unknownmsgid> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] Add float user_rdiv[4] to allow user options to apply correctly 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: Stone Chen Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Previously to support dynamic reconfigurations of the matrix string (e.g. 0m), the rdiv values would always be cleared to 0.f, causing the rdiv to be recalculated based on the new filter. This however had the side effect of always ignoring user specified rdiv values. Instead float user_rdiv[0] is added to ConvolutionContext which will store the user specified rdiv values. Then the original rdiv array will store either the user_rdiv or the automatically calculated 1/sum. This fixes trac #10294, #10867 --- libavfilter/convolution.h | 3 ++- libavfilter/vf_convolution.c | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libavfilter/convolution.h b/libavfilter/convolution.h index e44bfb5da8..ee7477ef89 100644 --- a/libavfilter/convolution.h +++ b/libavfilter/convolution.h @@ -34,13 +34,14 @@ typedef struct ConvolutionContext { const AVClass *class; char *matrix_str[4]; - float rdiv[4]; + float user_rdiv[4]; float bias[4]; int mode[4]; float scale; float delta; int planes; + float rdiv[4]; int size[4]; int depth; int max; diff --git a/libavfilter/vf_convolution.c b/libavfilter/vf_convolution.c index a00bb2b3c4..96c478d791 100644 --- a/libavfilter/vf_convolution.c +++ b/libavfilter/vf_convolution.c @@ -40,10 +40,10 @@ static const AVOption convolution_options[] = { { "1m", "set matrix for 2nd plane", OFFSET(matrix_str[1]), AV_OPT_TYPE_STRING, {.str="0 0 0 0 1 0 0 0 0"}, 0, 0, FLAGS }, { "2m", "set matrix for 3rd plane", OFFSET(matrix_str[2]), AV_OPT_TYPE_STRING, {.str="0 0 0 0 1 0 0 0 0"}, 0, 0, FLAGS }, { "3m", "set matrix for 4th plane", OFFSET(matrix_str[3]), AV_OPT_TYPE_STRING, {.str="0 0 0 0 1 0 0 0 0"}, 0, 0, FLAGS }, - { "0rdiv", "set rdiv for 1st plane", OFFSET(rdiv[0]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, - { "1rdiv", "set rdiv for 2nd plane", OFFSET(rdiv[1]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, - { "2rdiv", "set rdiv for 3rd plane", OFFSET(rdiv[2]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, - { "3rdiv", "set rdiv for 4th plane", OFFSET(rdiv[3]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, + { "0rdiv", "set rdiv for 1st plane", OFFSET(user_rdiv[0]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, + { "1rdiv", "set rdiv for 2nd plane", OFFSET(user_rdiv[1]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, + { "2rdiv", "set rdiv for 3rd plane", OFFSET(user_rdiv[2]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, + { "3rdiv", "set rdiv for 4th plane", OFFSET(user_rdiv[3]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, { "0bias", "set bias for 1st plane", OFFSET(bias[0]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, { "1bias", "set bias for 2nd plane", OFFSET(bias[1]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, { "2bias", "set bias for 3rd plane", OFFSET(bias[2]), AV_OPT_TYPE_FLOAT, {.dbl=0.0}, 0.0, INT_MAX, FLAGS}, @@ -669,6 +669,7 @@ static int param_init(AVFilterContext *ctx) for (i = 0; i < 4; i++) { int *matrix = (int *)s->matrix[i]; char *orig, *p, *arg, *saveptr = NULL; + s->rdiv[i] = s->user_rdiv[i]; float sum = 1.f; p = orig = av_strdup(s->matrix_str[i]); -- 2.43.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".