Browse Source

avfilter/vf_histogram: change order of histograms for planar rgb

Signed-off-by: Paul B Mahol <onemda@gmail.com>
tags/n2.1
Paul B Mahol 11 years ago
parent
commit
edadda968c
2 changed files with 5 additions and 4 deletions
  1. +1
    -1
      doc/filters.texi
  2. +4
    -3
      libavfilter/vf_histogram.c

+ 1
- 1
doc/filters.texi View File

@@ -4698,7 +4698,7 @@ It accepts the following values:
@item levels @item levels
standard histogram that display color components distribution in an image. standard histogram that display color components distribution in an image.
Displays color graph for each color component. Shows distribution Displays color graph for each color component. Shows distribution
of the Y, U, V, A or G, B, R components, depending on input format,
of the Y, U, V, A or R, G, B components, depending on input format,
in current frame. Bellow each graph is color component scale meter. in current frame. Bellow each graph is color component scale meter.


@item color @item color


+ 4
- 3
libavfilter/vf_histogram.c View File

@@ -248,12 +248,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
switch (h->mode) { switch (h->mode) {
case MODE_LEVELS: case MODE_LEVELS:
for (k = 0; k < h->ncomp; k++) { for (k = 0; k < h->ncomp; k++) {
const int p = h->desc->comp[k].plane;
int start = k * (h->level_height + h->scale_height) * h->display_mode; int start = k * (h->level_height + h->scale_height) * h->display_mode;
double max_hval_log; double max_hval_log;
unsigned max_hval = 0; unsigned max_hval = 0;


for (i = 0; i < in->height; i++) { for (i = 0; i < in->height; i++) {
src = in->data[k] + i * in->linesize[k];
src = in->data[p] + i * in->linesize[p];
for (j = 0; j < in->width; j++) for (j = 0; j < in->width; j++)
h->histogram[src[j]]++; h->histogram[src[j]]++;
} }
@@ -275,11 +276,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
for (l = 0; l < h->ncomp; l++) for (l = 0; l < h->ncomp; l++)
out->data[l][(j + start) * out->linesize[l] + i] = h->fg_color[l]; out->data[l][(j + start) * out->linesize[l] + i] = h->fg_color[l];
} else { } else {
out->data[k][(j + start) * out->linesize[k] + i] = 255;
out->data[p][(j + start) * out->linesize[p] + i] = 255;
} }
} }
for (j = h->level_height + h->scale_height - 1; j >= h->level_height; j--) for (j = h->level_height + h->scale_height - 1; j >= h->level_height; j--)
out->data[k][(j + start) * out->linesize[k] + i] = i;
out->data[p][(j + start) * out->linesize[p] + i] = i;
} }


memset(h->histogram, 0, 256 * sizeof(unsigned)); memset(h->histogram, 0, 256 * sizeof(unsigned));


Loading…
Cancel
Save