diff --git a/libavfilter/vf_noise.c b/libavfilter/vf_noise.c index 6250253fba..a7ef35c7fa 100644 --- a/libavfilter/vf_noise.c +++ b/libavfilter/vf_noise.c @@ -51,6 +51,8 @@ typedef struct { int seed; int8_t *noise; int8_t *prev_shift[MAX_RES][3]; + int rand_shift[MAX_RES]; + int rand_shift_init; } FilterParams; typedef struct { @@ -60,8 +62,6 @@ typedef struct { int height[4]; FilterParams all; FilterParams param[4]; - int rand_shift[MAX_RES]; - int rand_shift_init; void (*line_noise)(uint8_t *dst, const uint8_t *src, const int8_t *noise, int len, int shift); void (*line_noise_avg)(uint8_t *dst, const uint8_t *src, int len, const int8_t * const *shift); } NoiseContext; @@ -344,7 +344,7 @@ static void noise(uint8_t *dst, const uint8_t *src, int x; for (x=0; x < width; x+= MAX_RES) { int w = FFMIN(width - x, MAX_RES); - int shift = n->rand_shift[ix]; + int shift = p->rand_shift[ix]; if (flags & NOISE_AVERAGED) { n->line_noise_avg(dst + x, src + x, w, (const int8_t**)p->prev_shift[ix]); @@ -399,12 +399,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *inpicref) for (comp = 0; comp < 4; comp++) { FilterParams *fp = &n->param[comp]; - if ((!n->rand_shift_init || (fp->flags & NOISE_TEMPORAL)) && fp->strength) { + if ((!fp->rand_shift_init || (fp->flags & NOISE_TEMPORAL)) && fp->strength) { for (i = 0; i < MAX_RES; i++) { - n->rand_shift[i] = av_lfg_get(&fp->lfg) & (MAX_SHIFT - 1); + fp->rand_shift[i] = av_lfg_get(&fp->lfg) & (MAX_SHIFT - 1); } - n->rand_shift_init = 1; + fp->rand_shift_init = 1; } }