avfilter/vf_histogram: change order of histograms for planar rgb

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol 2013-10-01 21:22:22 +00:00
parent cac9af68a4
commit edadda968c
2 changed files with 5 additions and 4 deletions

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

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));