On Fri, Sep 02, 2016 at 10:42:10PM +0200, Paul B Mahol wrote: > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > libavfilter/vf_paletteuse.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/libavfilter/vf_paletteuse.c b/libavfilter/vf_paletteuse.c > index dece05a..ed51cfe 100644 > --- a/libavfilter/vf_paletteuse.c > +++ b/libavfilter/vf_paletteuse.c > @@ -86,6 +86,7 @@ typedef struct PaletteUseContext { > uint32_t palette[AVPALETTE_COUNT]; > int palette_loaded; > int dither; > + int new; > set_frame_func set_frame; > int bayer_scale; > int ordered_dither[8*8]; > @@ -122,6 +123,7 @@ static const AVOption paletteuse_options[] = { > { "bruteforce", "brute-force into the palette", 0, > AV_OPT_TYPE_CONST, {.i64=COLOR_SEARCH_BRUTEFORCE}, INT_MIN, INT_MAX, > FLAGS, "search" }, > { "mean_err", "compute and print mean error", OFFSET(calc_mean_err), > AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS }, > { "debug_accuracy", "test color search accuracy", > OFFSET(debug_accuracy), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS }, > + { "new", "take new palette for each output frame", OFFSET(new), > AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS }, > { NULL } > }; > > @@ -928,8 +930,15 @@ static void load_palette(PaletteUseContext *s, const > AVFrame *palette_frame) > const uint32_t *p = (const uint32_t *)palette_frame->data[0]; > const int p_linesize = palette_frame->linesize[0] >> 2; > > - i = 0; > - for (y = 0; y < palette_frame->height; y++) { > + if (s->new) { > + memset(s->palette, 0, sizeof(s->palette)); > + memset(s->map, 0, sizeof(s->map)); > + for (i = 0; i < CACHE_SIZE; i++) > + av_freep(&s->cache[i].entries); > + memset(s->cache, 0, sizeof(s->cache)); > + } > +
> + for (i = 0, y = 0; y < palette_frame->height; y++) { Please keep the i=0 out of the loop; this line doesn't need to change. Rest LGTM, thanks -- Clément B. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel