Commit c34c0503 authored by Paul B Mahol's avatar Paul B Mahol

avfilter/vf_vectorscope: make intensity user configurable

Signed-off-by: 's avatarPaul B Mahol <onemda@gmail.com>
parent ee155c18
...@@ -10533,6 +10533,10 @@ Set which color component will be represented on X-axis. Default is @code{1}. ...@@ -10533,6 +10533,10 @@ Set which color component will be represented on X-axis. Default is @code{1}.
@item y @item y
Set which color component will be represented on Y-axis. Default is @code{2}. Set which color component will be represented on Y-axis. Default is @code{2}.
@item intensity
Set intensity, used by modes: gray, color and color3 for increasing brightness
of color component which represents frequency of (X, Y) location in graph.
@end table @end table
@anchor{vidstabdetect} @anchor{vidstabdetect}
......
...@@ -38,6 +38,7 @@ enum VectorscopeMode { ...@@ -38,6 +38,7 @@ enum VectorscopeMode {
typedef struct VectorscopeContext { typedef struct VectorscopeContext {
const AVClass *class; const AVClass *class;
int mode; int mode;
int intensity;
const uint8_t *bg_color; const uint8_t *bg_color;
int planewidth[4]; int planewidth[4];
int planeheight[4]; int planeheight[4];
...@@ -56,6 +57,7 @@ static const AVOption vectorscope_options[] = { ...@@ -56,6 +57,7 @@ static const AVOption vectorscope_options[] = {
{ "color3", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR3}, 0, 0, FLAGS, "mode" }, { "color3", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR3}, 0, 0, FLAGS, "mode" },
{ "x", "set color component on X axis", OFFSET(x), AV_OPT_TYPE_INT, {.i64=1}, 0, 2, FLAGS}, { "x", "set color component on X axis", OFFSET(x), AV_OPT_TYPE_INT, {.i64=1}, 0, 2, FLAGS},
{ "y", "set color component on Y axis", OFFSET(y), AV_OPT_TYPE_INT, {.i64=2}, 0, 2, FLAGS}, { "y", "set color component on Y axis", OFFSET(y), AV_OPT_TYPE_INT, {.i64=2}, 0, 2, FLAGS},
{ "intensity", "set intensity", OFFSET(intensity), AV_OPT_TYPE_INT, {.i64=1}, 1, 255, FLAGS},
{ NULL } { NULL }
}; };
...@@ -182,6 +184,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd ...@@ -182,6 +184,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd
const int slinesizex = in->linesize[s->x]; const int slinesizex = in->linesize[s->x];
const int slinesizey = in->linesize[s->y]; const int slinesizey = in->linesize[s->y];
const int dlinesize = out->linesize[0]; const int dlinesize = out->linesize[0];
const int intensity = s->intensity;
int i, j, px = s->x, py = s->y; int i, j, px = s->x, py = s->y;
const int h = s->planeheight[py]; const int h = s->planeheight[py];
const int w = s->planewidth[px]; const int w = s->planewidth[px];
...@@ -204,7 +207,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd ...@@ -204,7 +207,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd
const int y = spy[iwy + j]; const int y = spy[iwy + j];
const int pos = y * dlinesize + x; const int pos = y * dlinesize + x;
dpd[pos] = FFMIN(dpd[pos] + 1, 255); dpd[pos] = FFMIN(dpd[pos] + intensity, 255);
if (dst[3]) if (dst[3])
dst[3][pos] = 255; dst[3][pos] = 255;
} }
...@@ -218,9 +221,9 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd ...@@ -218,9 +221,9 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd
const int y = spy[iwy + j]; const int y = spy[iwy + j];
const int pos = y * dlinesize + x; const int pos = y * dlinesize + x;
dst[0][pos] = FFMIN(dst[0][pos] + 1, 255); dst[0][pos] = FFMIN(dst[0][pos] + intensity, 255);
dst[1][pos] = FFMIN(dst[1][pos] + 1, 255); dst[1][pos] = FFMIN(dst[1][pos] + intensity, 255);
dst[2][pos] = FFMIN(dst[2][pos] + 1, 255); dst[2][pos] = FFMIN(dst[2][pos] + intensity, 255);
if (dst[3]) if (dst[3])
dst[3][pos] = 255; dst[3][pos] = 255;
} }
...@@ -283,7 +286,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd ...@@ -283,7 +286,7 @@ static void vectorscope(VectorscopeContext *s, AVFrame *in, AVFrame *out, int pd
const int y = spy[iw2 + j]; const int y = spy[iw2 + j];
const int pos = y * dlinesize + x; const int pos = y * dlinesize + x;
dpd[pos] = FFMIN(255, dpd[pos] + 1); dpd[pos] = FFMIN(255, dpd[pos] + intensity);
dpx[pos] = x; dpx[pos] = x;
dpy[pos] = y; dpy[pos] = y;
if (dst[3]) if (dst[3])
......
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