From: Clément Bœsch <clem...@stupeflix.com> --- doc/filters.texi | 5 +++++ libavfilter/version.h | 2 +- libavfilter/vf_palettegen.c | 14 ++++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi index baef346..0c72145 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -6980,6 +6980,11 @@ the background is static. Default value is @var{full}. @end table +The filter also exports the frame metadata @code{lavfi.color_quant_ratio} +(@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of +color quantization of the palette. This information is also visible at +@var{info} logging level. + @subsection Examples @itemize diff --git a/libavfilter/version.h b/libavfilter/version.h index 83fd2a5..986d7a7 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -31,7 +31,7 @@ #define LIBAVFILTER_VERSION_MAJOR 5 #define LIBAVFILTER_VERSION_MINOR 11 -#define LIBAVFILTER_VERSION_MICRO 101 +#define LIBAVFILTER_VERSION_MICRO 102 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ diff --git a/libavfilter/vf_palettegen.c b/libavfilter/vf_palettegen.c index 0e303a9..9a4a701 100644 --- a/libavfilter/vf_palettegen.c +++ b/libavfilter/vf_palettegen.c @@ -275,6 +275,15 @@ static struct color_ref **load_color_refs(const struct hist_node *hist, int nb_r return refs; } +static float set_colorquant_ratio_meta(AVFrame *out, int nb_out, int nb_in) +{ + char buf[32]; + float ratio = (float)nb_out / nb_in; + snprintf(buf, sizeof(buf), "%f", ratio); + av_dict_set(&out->metadata, "lavfi.color_quant_ratio", buf, 0); + return ratio; +} + /** * Main function implementing the Median Cut Algorithm defined by Paul Heckbert * in Color Image Quantization for Frame Buffer Display (1982) @@ -363,8 +372,9 @@ static AVFrame *get_palette_frame(AVFilterContext *ctx) box = box_id >= 0 ? &s->boxes[box_id] : NULL; } - av_log(ctx, AV_LOG_DEBUG, "%d%s boxes generated out of %d colors\n", - s->nb_boxes, s->reserve_transparent ? "(+1)" : "", s->nb_refs); + av_log(ctx, AV_LOG_INFO, "%d%s colors generated out of %d colors; ratio=%f\n", + s->nb_boxes, s->reserve_transparent ? "(+1)" : "", s->nb_refs, + set_colorquant_ratio_meta(out, s->nb_boxes, s->nb_refs)); qsort(s->boxes, s->nb_boxes, sizeof(*s->boxes), cmp_color); -- 2.3.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel