Re: [FFmpeg-devel] [PATCH 3/4] avfilter: Set output link colour range where appropriate

2018-02-19 Thread Michael Niedermayer
On Mon, Feb 19, 2018 at 10:48:24AM -0800, Philip Langdale wrote:
[...]
> diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
> index 9f45032e85..21ae709d6b 100644
> --- a/libavfilter/vf_scale.c
> +++ b/libavfilter/vf_scale.c
> @@ -342,11 +342,16 @@ static int config_props(AVFilterLink *outlink)
>  } else
>  outlink->sample_aspect_ratio = inlink0->sample_aspect_ratio;
>  
> -av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s sar:%d/%d -> w:%d h:%d 
> fmt:%s sar:%d/%d flags:0x%0x\n",
> +if (scale->out_range != AVCOL_RANGE_UNSPECIFIED)
> +outlink->color_range = scale->out_range;
> +
> +av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s sar:%d/%d range:%d -> w:%d 
> h:%d fmt:%s sar:%d/%d range:%d flags:0x%0x\n",
> inlink ->w, inlink ->h, av_get_pix_fmt_name( inlink->format),
> inlink->sample_aspect_ratio.num, inlink->sample_aspect_ratio.den,
> +   inlink->color_range,
> outlink->w, outlink->h, av_get_pix_fmt_name(outlink->format),
> outlink->sample_aspect_ratio.num, 
> outlink->sample_aspect_ratio.den,
> +   outlink->color_range,
> scale->flags);
>  return 0;
>  
> @@ -363,6 +368,7 @@ static int config_props_ref(AVFilterLink *outlink)
>  outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
>  outlink->time_base = inlink->time_base;
>  outlink->frame_rate = inlink->frame_rate;
> +outlink->color_range = inlink->color_range;
>  
>  return 0;
>  }

this should be ok, iam not maintainer of the rest

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Observe your enemies, for they first find out your faults. -- Antisthenes


signature.asc
Description: PGP signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH 3/4] avfilter: Set output link colour range where appropriate

2018-02-19 Thread Philip Langdale
Certain filters set or modify the output colour range. Today, they
do that per-frame, but now that we have a link property, they need
to set that as well.

Signed-off-by: Philip Langdale 
---
 libavfilter/avf_showcqt.c  |  1 +
 libavfilter/avf_showspectrum.c |  1 +
 libavfilter/vf_colorspace.c|  4 
 libavfilter/vf_scale.c |  8 +++-
 libavfilter/vf_setparams.c | 11 +++
 libavfilter/vf_waveform.c  |  1 +
 libavfilter/vf_zscale.c| 21 +++--
 7 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/libavfilter/avf_showcqt.c b/libavfilter/avf_showcqt.c
index 875ba48cee..ee6654358a 100644
--- a/libavfilter/avf_showcqt.c
+++ b/libavfilter/avf_showcqt.c
@@ -1363,6 +1363,7 @@ static int config_output(AVFilterLink *outlink)
 outlink->h = s->height;
 s->format = outlink->format;
 outlink->sample_aspect_ratio = av_make_q(1, 1);
+outlink->color_range = AVCOL_RANGE_JPEG;
 outlink->frame_rate = s->rate;
 outlink->time_base = av_mul_q(av_inv_q(s->rate), av_make_q(1, PTS_STEP));
 av_log(ctx, AV_LOG_INFO, "video: %dx%d %s %d/%d fps, bar_h = %d, axis_h = 
%d, sono_h = %d.\n",
diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c
index 956f62f3ad..52fa018317 100644
--- a/libavfilter/avf_showspectrum.c
+++ b/libavfilter/avf_showspectrum.c
@@ -307,6 +307,7 @@ static int config_output(AVFilterLink *outlink)
 outlink->w = s->w;
 outlink->h = s->h;
 outlink->sample_aspect_ratio = (AVRational){1,1};
+outlink->color_range = AVCOL_RANGE_JPEG;
 
 if (s->legend) {
 s->start_x = log10(inlink->sample_rate) * 25;
diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c
index 71ea08a20f..5455648710 100644
--- a/libavfilter/vf_colorspace.c
+++ b/libavfilter/vf_colorspace.c
@@ -1048,6 +1048,7 @@ static int config_props(AVFilterLink *outlink)
 {
 AVFilterContext *ctx = outlink->dst;
 AVFilterLink *inlink = outlink->src->inputs[0];
+ColorSpaceContext *s = ctx->priv;
 
 if (inlink->w % 2 || inlink->h % 2) {
 av_log(ctx, AV_LOG_ERROR, "Invalid odd size (%dx%d)\n",
@@ -1060,6 +1061,9 @@ static int config_props(AVFilterLink *outlink)
 outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
 outlink->time_base = inlink->time_base;
 
+if (s->user_rng != AVCOL_RANGE_UNSPECIFIED)
+outlink->color_range = s->user_rng;
+
 return 0;
 }
 
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index 9f45032e85..21ae709d6b 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -342,11 +342,16 @@ static int config_props(AVFilterLink *outlink)
 } else
 outlink->sample_aspect_ratio = inlink0->sample_aspect_ratio;
 
-av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s sar:%d/%d -> w:%d h:%d 
fmt:%s sar:%d/%d flags:0x%0x\n",
+if (scale->out_range != AVCOL_RANGE_UNSPECIFIED)
+outlink->color_range = scale->out_range;
+
+av_log(ctx, AV_LOG_VERBOSE, "w:%d h:%d fmt:%s sar:%d/%d range:%d -> w:%d 
h:%d fmt:%s sar:%d/%d range:%d flags:0x%0x\n",
inlink ->w, inlink ->h, av_get_pix_fmt_name( inlink->format),
inlink->sample_aspect_ratio.num, inlink->sample_aspect_ratio.den,
+   inlink->color_range,
outlink->w, outlink->h, av_get_pix_fmt_name(outlink->format),
outlink->sample_aspect_ratio.num, outlink->sample_aspect_ratio.den,
+   outlink->color_range,
scale->flags);
 return 0;
 
@@ -363,6 +368,7 @@ static int config_props_ref(AVFilterLink *outlink)
 outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
 outlink->time_base = inlink->time_base;
 outlink->frame_rate = inlink->frame_rate;
+outlink->color_range = inlink->color_range;
 
 return 0;
 }
diff --git a/libavfilter/vf_setparams.c b/libavfilter/vf_setparams.c
index 8427f98ba8..2b47e2d20b 100644
--- a/libavfilter/vf_setparams.c
+++ b/libavfilter/vf_setparams.c
@@ -56,6 +56,16 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
 return ff_filter_frame(ctx->outputs[0], frame);
 }
 
+static int config_output(AVFilterLink *outlink)
+{
+AVFilterContext *ctx = outlink->src;
+SetParamsContext *s = ctx->priv;
+
+if (s->color_range >= 0)
+outlink->color_range = s->color_range;
+return 0;
+}
+
 static const AVFilterPad inputs[] = {
 {
 .name = "default",
@@ -69,6 +79,7 @@ static const AVFilterPad outputs[] = {
 {
 .name = "default",
 .type = AVMEDIA_TYPE_VIDEO,
+.config_props = config_output,
 },
 { NULL }
 };
diff --git a/libavfilter/vf_waveform.c b/libavfilter/vf_waveform.c
index 02a7046f33..b610336ea2 100644
--- a/libavfilter/vf_waveform.c
+++ b/libavfilter/vf_waveform.c
@@ -2744,6 +2744,7 @@ static int config_output(AVFilterLink *outlink)
 }
 
 outlink->sample_aspect_ratio = (AVRational){1,1};
+outlink->color_range = AVCOL_RANGE_JPEG;
 
 return 0;
 }
diff --g