diff --git a/doc/filters.texi b/doc/filters.texi index 8ae9c42034..e9b8c93529 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -8555,6 +8555,12 @@ Default is @code{linear}. @item components Set what color components to display. Default is @code{7}. + +@item fgopacity +Set foreground opacity. Default is @code{0.7}. + +@item bgopacity +Set background opacity. Default is @code{0.5}. @end table @subsection Examples diff --git a/libavfilter/vf_histogram.c b/libavfilter/vf_histogram.c index 5b4060cc19..c6b308a8e0 100644 --- a/libavfilter/vf_histogram.c +++ b/libavfilter/vf_histogram.c @@ -35,14 +35,16 @@ typedef struct HistogramContext { int histogram_size; int mult; int ncomp; - const uint8_t *bg_color; - const uint8_t *fg_color; + uint8_t bg_color[4]; + uint8_t fg_color[4]; int level_height; int scale_height; int display_mode; int levels_mode; const AVPixFmtDescriptor *desc, *odesc; int components; + float fgopacity; + float bgopacity; int planewidth[4]; int planeheight[4]; } HistogramContext; @@ -63,6 +65,10 @@ static const AVOption histogram_options[] = { { "logarithmic", NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "levels_mode" }, { "components", "set color components to display", OFFSET(components), AV_OPT_TYPE_INT, {.i64=7}, 1, 15, FLAGS}, { "c", "set color components to display", OFFSET(components), AV_OPT_TYPE_INT, {.i64=7}, 1, 15, FLAGS}, + { "fgopacity", "set foreground opacity", OFFSET(fgopacity), AV_OPT_TYPE_FLOAT, {.dbl=0.7}, 0, 1, FLAGS}, + { "f", "set foreground opacity", OFFSET(fgopacity), AV_OPT_TYPE_FLOAT, {.dbl=0.7}, 0, 1, FLAGS}, + { "bgopacity", "set background opacity", OFFSET(bgopacity), AV_OPT_TYPE_FLOAT, {.dbl=0.5}, 0, 1, FLAGS}, + { "b", "set background opacity", OFFSET(bgopacity), AV_OPT_TYPE_FLOAT, {.dbl=0.5}, 0, 1, FLAGS}, { NULL } }; @@ -197,14 +203,17 @@ static int config_input(AVFilterLink *inlink) case AV_PIX_FMT_GBRP9: case AV_PIX_FMT_GBRAP: case AV_PIX_FMT_GBRP: - h->bg_color = black_gbrp_color; - h->fg_color = white_gbrp_color; + memcpy(h->bg_color, black_gbrp_color, 4); + memcpy(h->fg_color, white_gbrp_color, 4); break; default: - h->bg_color = black_yuva_color; - h->fg_color = white_yuva_color; + memcpy(h->bg_color, black_yuva_color, 4); + memcpy(h->fg_color, white_yuva_color, 4); } + h->fg_color[3] = h->fgopacity * 255; + h->bg_color[3] = h->bgopacity * 255; + h->planeheight[1] = h->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, h->desc->log2_chroma_h); h->planeheight[0] = h->planeheight[3] = inlink->h; h->planewidth[1] = h->planewidth[2] = AV_CEIL_RSHIFT(inlink->w, h->desc->log2_chroma_w);