mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter/vf_vectorscope: rename gray mode to tint mode
This commit is contained in:
parent
29b765d657
commit
2736dc0564
@ -18945,6 +18945,7 @@ Set vectorscope mode.
|
|||||||
It accepts the following values:
|
It accepts the following values:
|
||||||
@table @samp
|
@table @samp
|
||||||
@item gray
|
@item gray
|
||||||
|
@item tint
|
||||||
Gray values are displayed on graph, higher brightness means more pixels have
|
Gray values are displayed on graph, higher brightness means more pixels have
|
||||||
same component color value on location in graph. This is the default mode.
|
same component color value on location in graph. This is the default mode.
|
||||||
|
|
||||||
@ -19048,6 +19049,11 @@ Set what kind of colorspace to use when drawing graticule.
|
|||||||
@item 709
|
@item 709
|
||||||
@end table
|
@end table
|
||||||
Default is auto.
|
Default is auto.
|
||||||
|
|
||||||
|
@item tint0, t0
|
||||||
|
@item tint1, t1
|
||||||
|
Set color tint for gray/tint vectorscope mode. By default both options are zero.
|
||||||
|
This means no tint, and output will remain gray.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@anchor{vidstabdetect}
|
@anchor{vidstabdetect}
|
||||||
|
@ -38,7 +38,7 @@ enum GraticuleType {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum VectorscopeMode {
|
enum VectorscopeMode {
|
||||||
GRAY,
|
TINT,
|
||||||
COLOR,
|
COLOR,
|
||||||
COLOR2,
|
COLOR2,
|
||||||
COLOR3,
|
COLOR3,
|
||||||
@ -53,6 +53,7 @@ typedef struct VectorscopeContext {
|
|||||||
int intensity;
|
int intensity;
|
||||||
float fintensity;
|
float fintensity;
|
||||||
uint16_t bg_color[4];
|
uint16_t bg_color[4];
|
||||||
|
float ftint[2];
|
||||||
int planewidth[4];
|
int planewidth[4];
|
||||||
int planeheight[4];
|
int planeheight[4];
|
||||||
int hsub, vsub;
|
int hsub, vsub;
|
||||||
@ -67,6 +68,7 @@ typedef struct VectorscopeContext {
|
|||||||
float bgopacity;
|
float bgopacity;
|
||||||
float lthreshold;
|
float lthreshold;
|
||||||
float hthreshold;
|
float hthreshold;
|
||||||
|
int tint[2];
|
||||||
int tmin;
|
int tmin;
|
||||||
int tmax;
|
int tmax;
|
||||||
int flags;
|
int flags;
|
||||||
@ -87,7 +89,8 @@ typedef struct VectorscopeContext {
|
|||||||
static const AVOption vectorscope_options[] = {
|
static const AVOption vectorscope_options[] = {
|
||||||
{ "mode", "set vectorscope mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, MODE_NB-1, FLAGS, "mode"},
|
{ "mode", "set vectorscope mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, MODE_NB-1, FLAGS, "mode"},
|
||||||
{ "m", "set vectorscope mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, MODE_NB-1, FLAGS, "mode"},
|
{ "m", "set vectorscope mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=0}, 0, MODE_NB-1, FLAGS, "mode"},
|
||||||
{ "gray", 0, 0, AV_OPT_TYPE_CONST, {.i64=GRAY}, 0, 0, FLAGS, "mode" },
|
{ "gray", 0, 0, AV_OPT_TYPE_CONST, {.i64=TINT}, 0, 0, FLAGS, "mode" },
|
||||||
|
{ "tint", 0, 0, AV_OPT_TYPE_CONST, {.i64=TINT}, 0, 0, FLAGS, "mode" },
|
||||||
{ "color", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR}, 0, 0, FLAGS, "mode" },
|
{ "color", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR}, 0, 0, FLAGS, "mode" },
|
||||||
{ "color2", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR2}, 0, 0, FLAGS, "mode" },
|
{ "color2", 0, 0, AV_OPT_TYPE_CONST, {.i64=COLOR2}, 0, 0, FLAGS, "mode" },
|
||||||
{ "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" },
|
||||||
@ -127,6 +130,10 @@ static const AVOption vectorscope_options[] = {
|
|||||||
{ "auto", 0, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "colorspace" },
|
{ "auto", 0, 0, AV_OPT_TYPE_CONST, {.i64=0}, 0, 0, FLAGS, "colorspace" },
|
||||||
{ "601", 0, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "colorspace" },
|
{ "601", 0, 0, AV_OPT_TYPE_CONST, {.i64=1}, 0, 0, FLAGS, "colorspace" },
|
||||||
{ "709", 0, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "colorspace" },
|
{ "709", 0, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "colorspace" },
|
||||||
|
{ "tint0", "set 1st tint", OFFSET(ftint[0]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
|
||||||
|
{ "t0", "set 1st tint", OFFSET(ftint[0]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
|
||||||
|
{ "tint1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
|
||||||
|
{ "t1", "set 2nd tint", OFFSET(ftint[1]), AV_OPT_TYPE_FLOAT, {.dbl=0}, -1, 1, FLAGS},
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -442,7 +449,7 @@ static void vectorscope16(VectorscopeContext *s, AVFrame *in, AVFrame *out, int
|
|||||||
switch (s->mode) {
|
switch (s->mode) {
|
||||||
case COLOR:
|
case COLOR:
|
||||||
case COLOR5:
|
case COLOR5:
|
||||||
case GRAY:
|
case TINT:
|
||||||
if (s->is_yuv) {
|
if (s->is_yuv) {
|
||||||
for (i = 0; i < h; i++) {
|
for (i = 0; i < h; i++) {
|
||||||
const int iwx = i * slinesizex;
|
const int iwx = i * slinesizex;
|
||||||
@ -581,7 +588,17 @@ static void vectorscope16(VectorscopeContext *s, AVFrame *in, AVFrame *out, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->mode == COLOR) {
|
if (s->mode == TINT && (s->tint[0] != mid ||
|
||||||
|
s->tint[1] != mid)) {
|
||||||
|
for (i = 0; i < out->height; i++) {
|
||||||
|
for (j = 0; j < out->width; j++) {
|
||||||
|
if (dpd[i * dlinesize + j]) {
|
||||||
|
dst[1][i * dlinesize + j] = s->tint[0];
|
||||||
|
dst[2][i * dlinesize + j] = s->tint[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (s->mode == COLOR) {
|
||||||
for (i = 0; i < out->height; i++) {
|
for (i = 0; i < out->height; i++) {
|
||||||
for (j = 0; j < out->width; j++) {
|
for (j = 0; j < out->width; j++) {
|
||||||
if (!dpd[i * dlinesize + j]) {
|
if (!dpd[i * dlinesize + j]) {
|
||||||
@ -636,7 +653,7 @@ static void vectorscope8(VectorscopeContext *s, AVFrame *in, AVFrame *out, int p
|
|||||||
switch (s->mode) {
|
switch (s->mode) {
|
||||||
case COLOR5:
|
case COLOR5:
|
||||||
case COLOR:
|
case COLOR:
|
||||||
case GRAY:
|
case TINT:
|
||||||
if (s->is_yuv) {
|
if (s->is_yuv) {
|
||||||
for (i = 0; i < h; i++) {
|
for (i = 0; i < h; i++) {
|
||||||
const int iwx = i * slinesizex;
|
const int iwx = i * slinesizex;
|
||||||
@ -775,7 +792,17 @@ static void vectorscope8(VectorscopeContext *s, AVFrame *in, AVFrame *out, int p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->mode == COLOR) {
|
if (s->mode == TINT && (s->tint[0] != 128 ||
|
||||||
|
s->tint[1] != 128)) {
|
||||||
|
for (i = 0; i < out->height; i++) {
|
||||||
|
for (j = 0; j < out->width; j++) {
|
||||||
|
if (dpd[i * dlinesize + j]) {
|
||||||
|
dst[1][i * dlinesize + j] = s->tint[0];
|
||||||
|
dst[2][i * dlinesize + j] = s->tint[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (s->mode == COLOR) {
|
||||||
for (i = 0; i < out->height; i++) {
|
for (i = 0; i < out->height; i++) {
|
||||||
for (j = 0; j < out->width; j++) {
|
for (j = 0; j < out->width; j++) {
|
||||||
if (!dpd[i * out->linesize[pd] + j]) {
|
if (!dpd[i * out->linesize[pd] + j]) {
|
||||||
@ -1483,9 +1510,9 @@ static int config_input(AVFilterLink *inlink)
|
|||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->mode == GRAY && s->is_yuv)
|
if (s->mode == TINT && s->is_yuv) {
|
||||||
s->pd = 0;
|
s->pd = 0;
|
||||||
else {
|
} else {
|
||||||
if ((s->x == 1 && s->y == 2) || (s->x == 2 && s->y == 1))
|
if ((s->x == 1 && s->y == 2) || (s->x == 2 && s->y == 1))
|
||||||
s->pd = 0;
|
s->pd = 0;
|
||||||
else if ((s->x == 0 && s->y == 2) || (s->x == 2 && s->y == 0))
|
else if ((s->x == 0 && s->y == 2) || (s->x == 2 && s->y == 0))
|
||||||
@ -1519,6 +1546,9 @@ static int config_input(AVFilterLink *inlink)
|
|||||||
|
|
||||||
s->bg_color[3] = s->bgopacity * (s->size - 1);
|
s->bg_color[3] = s->bgopacity * (s->size - 1);
|
||||||
|
|
||||||
|
s->tint[0] = .5f * (s->ftint[0] + 1.f) * (s->size - 1);
|
||||||
|
s->tint[1] = .5f * (s->ftint[1] + 1.f) * (s->size - 1);
|
||||||
|
|
||||||
switch (inlink->format) {
|
switch (inlink->format) {
|
||||||
case AV_PIX_FMT_GBRP12:
|
case AV_PIX_FMT_GBRP12:
|
||||||
case AV_PIX_FMT_GBRP10:
|
case AV_PIX_FMT_GBRP10:
|
||||||
@ -1531,8 +1561,8 @@ static int config_input(AVFilterLink *inlink)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
s->bg_color[0] = 0;
|
s->bg_color[0] = 0;
|
||||||
s->bg_color[1] = s->size / 2 - 1;
|
s->bg_color[1] = s->size / 2;
|
||||||
s->bg_color[2] = s->size / 2 - 1;
|
s->bg_color[2] = s->size / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->hsub = desc->log2_chroma_w;
|
s->hsub = desc->log2_chroma_w;
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0xf6e3aa30
|
0, 0, 0, 1, 196608, 0x7c431d1f
|
||||||
0, 1, 1, 1, 196608, 0x5584acf9
|
0, 1, 1, 1, 196608, 0xb7e82028
|
||||||
0, 2, 2, 1, 196608, 0xa862775d
|
0, 2, 2, 1, 196608, 0x2feeeb61
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0x5e62fae5
|
0, 0, 0, 1, 196608, 0xdad38823
|
||||||
0, 1, 1, 1, 196608, 0x4c27fcbf
|
0, 1, 1, 1, 196608, 0xeb8589bd
|
||||||
0, 2, 2, 1, 196608, 0xb7531088
|
0, 2, 2, 1, 196608, 0x31a79c93
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0x83df8770
|
0, 0, 0, 1, 196608, 0x005f14ae
|
||||||
0, 1, 1, 1, 196608, 0xa6a674a7
|
0, 1, 1, 1, 196608, 0x461301a5
|
||||||
0, 2, 2, 1, 196608, 0x11757143
|
0, 2, 2, 1, 196608, 0x8bbafd4e
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0x326953c4
|
0, 0, 0, 1, 196608, 0xaedae0f3
|
||||||
0, 1, 1, 1, 196608, 0x870e1dcc
|
0, 1, 1, 1, 196608, 0x267baabb
|
||||||
0, 2, 2, 1, 196608, 0x87cb8800
|
0, 2, 2, 1, 196608, 0x021f141a
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0x79ba71e2
|
0, 0, 0, 1, 196608, 0xf62bff11
|
||||||
0, 1, 1, 1, 196608, 0x909271e2
|
0, 1, 1, 1, 196608, 0x2ffffed1
|
||||||
0, 2, 2, 1, 196608, 0x143971e2
|
0, 2, 2, 1, 196608, 0x8e7efded
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
#codec_id 0: rawvideo
|
#codec_id 0: rawvideo
|
||||||
#dimensions 0: 256x256
|
#dimensions 0: 256x256
|
||||||
#sar 0: 1/1
|
#sar 0: 1/1
|
||||||
0, 0, 0, 1, 196608, 0xa2899af1
|
0, 0, 0, 1, 196608, 0xd2bfcc40
|
||||||
0, 1, 1, 1, 196608, 0x26409af1
|
0, 1, 1, 1, 196608, 0x2851cb74
|
||||||
0, 2, 2, 1, 196608, 0xf5209af1
|
0, 2, 2, 1, 196608, 0x48efcc64
|
||||||
|
Loading…
Reference in New Issue
Block a user