Commit 0d8b6a15 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_histogram: make foreground and background opacity configurable

parent ca906e81
...@@ -8555,6 +8555,12 @@ Default is @code{linear}. ...@@ -8555,6 +8555,12 @@ Default is @code{linear}.
@item components @item components
Set what color components to display. Set what color components to display.
Default is @code{7}. 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 @end table
@subsection Examples @subsection Examples
......
...@@ -35,14 +35,16 @@ typedef struct HistogramContext { ...@@ -35,14 +35,16 @@ typedef struct HistogramContext {
int histogram_size; int histogram_size;
int mult; int mult;
int ncomp; int ncomp;
const uint8_t *bg_color; uint8_t bg_color[4];
const uint8_t *fg_color; uint8_t fg_color[4];
int level_height; int level_height;
int scale_height; int scale_height;
int display_mode; int display_mode;
int levels_mode; int levels_mode;
const AVPixFmtDescriptor *desc, *odesc; const AVPixFmtDescriptor *desc, *odesc;
int components; int components;
float fgopacity;
float bgopacity;
int planewidth[4]; int planewidth[4];
int planeheight[4]; int planeheight[4];
} HistogramContext; } HistogramContext;
...@@ -63,6 +65,10 @@ static const AVOption histogram_options[] = { ...@@ -63,6 +65,10 @@ static const AVOption histogram_options[] = {
{ "logarithmic", NULL, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "levels_mode" }, { "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}, { "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}, { "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 } { NULL }
}; };
...@@ -197,14 +203,17 @@ static int config_input(AVFilterLink *inlink) ...@@ -197,14 +203,17 @@ static int config_input(AVFilterLink *inlink)
case AV_PIX_FMT_GBRP9: case AV_PIX_FMT_GBRP9:
case AV_PIX_FMT_GBRAP: case AV_PIX_FMT_GBRAP:
case AV_PIX_FMT_GBRP: case AV_PIX_FMT_GBRP:
h->bg_color = black_gbrp_color; memcpy(h->bg_color, black_gbrp_color, 4);
h->fg_color = white_gbrp_color; memcpy(h->fg_color, white_gbrp_color, 4);
break; break;
default: default:
h->bg_color = black_yuva_color; memcpy(h->bg_color, black_yuva_color, 4);
h->fg_color = white_yuva_color; 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[1] = h->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, h->desc->log2_chroma_h);
h->planeheight[0] = h->planeheight[3] = inlink->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); h->planewidth[1] = h->planewidth[2] = AV_CEIL_RSHIFT(inlink->w, h->desc->log2_chroma_w);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment