On Sat, 24 Feb 2024, Stone Chen wrote:

On Sat, Feb 24, 2024 at 3:56 PM Marton Balint <c...@passwd.hu> wrote:



On Sat, 24 Feb 2024, Stone Chen wrote:

> 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

Have you tested?

Thanks,
Marton



Hi Marton,

Yes I've tested that

  - the original behavior works (automatically calculate rdiv if user_rdiv
  = 0)
  - setting the rdiv value works

It does not work for me even after applying your patch.

Regards,
Marton

  - both work via sendcmd
  - make fate runs with no errors

Cheers,
Stone



> ---
> 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-requ...@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to