[FFmpeg-cvslog] avfilter/vf_paletteuse: add option to use new palette for each output frame
Paul B Mahol
git at videolan.org
Wed Sep 7 17:14:36 EEST 2016
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Fri Sep 2 22:40:34 2016 +0200| [b7e78c75cc254bebf880129ed3d9e57ec014fdd3] | committer: Paul B Mahol
avfilter/vf_paletteuse: add option to use new palette for each output frame
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b7e78c75cc254bebf880129ed3d9e57ec014fdd3
---
libavfilter/vf_paletteuse.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/libavfilter/vf_paletteuse.c b/libavfilter/vf_paletteuse.c
index dece05a..e063ff7 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,6 +930,14 @@ 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;
+ 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));
+ }
+
i = 0;
for (y = 0; y < palette_frame->height; y++) {
for (x = 0; x < palette_frame->width; x++)
@@ -937,7 +947,8 @@ static void load_palette(PaletteUseContext *s, const AVFrame *palette_frame)
load_colormap(s);
- s->palette_loaded = 1;
+ if (!s->new)
+ s->palette_loaded = 1;
}
static AVFrame *load_apply_palette(AVFilterContext *ctx, AVFrame *main,
More information about the ffmpeg-cvslog
mailing list