[FFmpeg-devel] [PATCH 08/25] fftools/ffplay: support only limited color range
Marton Balint
cus at passwd.hu
Sun Dec 17 20:43:07 EET 2017
On Sat, 16 Dec 2017, Paul B Mahol wrote:
> On 12/16/17, Marton Balint <cus at passwd.hu> wrote:
>>
>>
>> On Sat, 16 Dec 2017, Paul B Mahol wrote:
>>
>>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>>> ---
>>> fftools/ffplay.c | 6 +++++-
>>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/fftools/ffplay.c b/fftools/ffplay.c
>>> index 10a917194d..f023c81575 100644
>>> --- a/fftools/ffplay.c
>>> +++ b/fftools/ffplay.c
>>> @@ -1822,6 +1822,7 @@ fail:
>>> static int configure_video_filters(AVFilterGraph *graph, VideoState *is,
>>> const char *vfilters, AVFrame *frame)
>>> {
>>> enum AVPixelFormat pix_fmts[FF_ARRAY_ELEMS(sdl_texture_format_map)];
>>> + enum AVColorRange color_ranges[2] = { AVCOL_RANGE_MPEG,
>>> AVCOL_RANGE_UNSPECIFIED };
>>> char sws_flags_str[512] = "";
>>> char buffersrc_args[256];
>>> int ret;
>>> @@ -1876,7 +1877,10 @@ static int configure_video_filters(AVFilterGraph
>>> *graph, VideoState *is, const c
>>> if ((ret = av_opt_set_int_list(filt_out, "pix_fmts", pix_fmts,
>>> AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0)
>>> goto fail;
>>>
>>> - last_filter = filt_out;
>>> + if ((ret = av_opt_set_int_list(filt_out, "color_ranges",
>>> color_ranges, AVCOL_RANGE_UNSPECIFIED, AV_OPT_SEARCH_CHILDREN)) < 0)
>>> + goto fail;
>>> +
>>> + last_filter = filt_out;
>>
>> I am afraid this wont work, because ffplay supports full range RGB as
>> well. Unless there is a way to specify allowed pixel format / color range
>> combinations (which is the only way to mimic existing behaviour as far as
>> I see), you have to use hacks like configure the filter graph once without
>> a range restriction, and if you get an invalid pixel format / color range
>> combination, you have to configure the graph again with the supported
>> color range list for that pixel format, hoping that the pixel format will
>> remain the same.
>
> If you actually checked output, it will appear same as before patchset.
If this works, that means color_ranges are ignored for RGB. We can do
that, but please document every color_range field explicitly that they
only affect YUV, nothing else.
Also there is a stray whitespace addition in the last line:
" last_filter = filt_out"
Regards,
Marton
More information about the ffmpeg-devel
mailing list