avfilter/vf_vectorscope: make it possible to override colorspace
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
a61cd42c8d
commit
4a7c705fde
@ -12656,6 +12656,15 @@ Values higher than this value will be ignored. Default is 1.
|
|||||||
Note this value is multiplied with actual max possible value one pixel component
|
Note this value is multiplied with actual max possible value one pixel component
|
||||||
can have. So for 8-bit input and high threshold value of 0.9 actual threshold
|
can have. So for 8-bit input and high threshold value of 0.9 actual threshold
|
||||||
is 0.9 * 255 = 230.
|
is 0.9 * 255 = 230.
|
||||||
|
|
||||||
|
@item colorspace, c
|
||||||
|
Set what kind of colorspace to use when drawing graticule.
|
||||||
|
@table @samp
|
||||||
|
@item auto
|
||||||
|
@item 601
|
||||||
|
@item 709
|
||||||
|
@end table
|
||||||
|
Default is auto.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@anchor{vidstabdetect}
|
@anchor{vidstabdetect}
|
||||||
|
@ -62,6 +62,7 @@ typedef struct VectorscopeContext {
|
|||||||
int tmin;
|
int tmin;
|
||||||
int tmax;
|
int tmax;
|
||||||
int flags;
|
int flags;
|
||||||
|
int colorspace;
|
||||||
int cs;
|
int cs;
|
||||||
uint8_t peak[4096][4096];
|
uint8_t peak[4096][4096];
|
||||||
|
|
||||||
@ -111,6 +112,11 @@ static const AVOption vectorscope_options[] = {
|
|||||||
{ "l", "set low threshold", OFFSET(lthreshold), AV_OPT_TYPE_FLOAT, {.dbl=0}, 0, 1, FLAGS},
|
{ "l", "set low threshold", OFFSET(lthreshold), AV_OPT_TYPE_FLOAT, {.dbl=0}, 0, 1, FLAGS},
|
||||||
{ "hthreshold", "set high threshold", OFFSET(hthreshold), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, FLAGS},
|
{ "hthreshold", "set high threshold", OFFSET(hthreshold), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, FLAGS},
|
||||||
{ "h", "set high threshold", OFFSET(hthreshold), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, FLAGS},
|
{ "h", "set high threshold", OFFSET(hthreshold), AV_OPT_TYPE_FLOAT, {.dbl=1}, 0, 1, FLAGS},
|
||||||
|
{ "colorspace", "set colorspace", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64=0}, 0, 2, FLAGS, "colorspace"},
|
||||||
|
{ "c", "set colorspace", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64=0}, 0, 2, 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" },
|
||||||
|
{ "709", 0, 0, AV_OPT_TYPE_CONST, {.i64=2}, 0, 0, FLAGS, "colorspace" },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1190,6 +1196,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
|||||||
AVFilterLink *outlink = ctx->outputs[0];
|
AVFilterLink *outlink = ctx->outputs[0];
|
||||||
AVFrame *out;
|
AVFrame *out;
|
||||||
|
|
||||||
|
if (s->colorspace) {
|
||||||
|
s->cs = (s->depth - 8) * 2 + s->colorspace - 1;
|
||||||
|
} else {
|
||||||
switch (av_frame_get_colorspace(in)) {
|
switch (av_frame_get_colorspace(in)) {
|
||||||
case AVCOL_SPC_SMPTE170M:
|
case AVCOL_SPC_SMPTE170M:
|
||||||
case AVCOL_SPC_BT470BG:
|
case AVCOL_SPC_BT470BG:
|
||||||
@ -1199,6 +1208,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
|||||||
default:
|
default:
|
||||||
s->cs = (s->depth - 8) * 2 + 1;
|
s->cs = (s->depth - 8) * 2 + 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
||||||
if (!out) {
|
if (!out) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user