On Sat, Dec 28, 2019 at 03:46:24PM +0100, Marton Balint wrote:
> Fixes ticket #7528.
> 
> Signed-off-by: Marton Balint <c...@passwd.hu>
> ---
>  libavfilter/vf_geq.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/libavfilter/vf_geq.c b/libavfilter/vf_geq.c
> index 2905efae24..417b92222d 100644
> --- a/libavfilter/vf_geq.c
> +++ b/libavfilter/vf_geq.c
> @@ -377,6 +377,7 @@ static int slice_geq_filter(AVFilterContext *ctx, void 
> *arg, int jobnr, int nb_j
>      int x, y;
>      uint8_t *ptr;
>      uint16_t *ptr16;
> +    AVExprState *state = av_expr_state_alloc();
>  
>      double values[VAR_VARS_NB];
>      values[VAR_W] = geq->values[VAR_W];
> @@ -386,6 +387,9 @@ static int slice_geq_filter(AVFilterContext *ctx, void 
> *arg, int jobnr, int nb_j
>      values[VAR_SH] = geq->values[VAR_SH];
>      values[VAR_T] = geq->values[VAR_T];
>  
> +    if (!state)
> +        return AVERROR(ENOMEM);
> +
>      if (geq->bps == 8) {
>          for (y = slice_start; y < slice_end; y++) {
>              ptr = geq->dst + linesize * y;
> @@ -393,7 +397,7 @@ static int slice_geq_filter(AVFilterContext *ctx, void 
> *arg, int jobnr, int nb_j
>  
>              for (x = 0; x < width; x++) {
>                  values[VAR_X] = x;
> -                ptr[x] = av_expr_eval(geq->e[plane], values, geq);
> +                ptr[x] = av_expr_eval2(geq->e[plane], state, values, geq);
>              }
>              ptr += linesize;
>          }
> @@ -404,10 +408,11 @@ static int slice_geq_filter(AVFilterContext *ctx, void 
> *arg, int jobnr, int nb_j
>              values[VAR_Y] = y;
>              for (x = 0; x < width; x++) {
>                  values[VAR_X] = x;
> -                ptr16[x] = av_expr_eval(geq->e[plane], values, geq);
> +                ptr16[x] = av_expr_eval2(geq->e[plane], state, values, geq);
>              }
>          }
>      }
> +    av_expr_state_free(&state);

a filter which adds random noise would get its seed reset on each frame and
slice with this, unless iam missing something.

The random values produced by random should be uncorrelatec between frame n and 
m when n!=m

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras

Attachment: signature.asc
Description: PGP signature

_______________________________________________
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