[vlc-devel] [PATCH] avcodec: assume a source is full range if not specified and an RGB format

Rémi Denis-Courmont remi at remlab.net
Sat Jan 27 13:38:01 CET 2018


Le lauantaina 27. tammikuuta 2018, 14.08.15 EET Steve Lhomme a écrit :
> Le 26/01/2018 à 18:00, Rémi Denis-Courmont a écrit :
> > Le perjantaina 26. tammikuuta 2018, 11.47.24 EET Steve Lhomme a écrit :
> >> There's a good chance that codec decoding to RGB are capture formats from
> >> computers using full range display.
> >> 
> >> Ref #19127
> >> ---
> >> 
> >>   modules/codec/avcodec/video.c | 13 ++++++++++++-
> >>   1 file changed, 12 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/modules/codec/avcodec/video.c
> >> b/modules/codec/avcodec/video.c
> >> index 6d2cf4458a..fac33d663b 100644
> >> --- a/modules/codec/avcodec/video.c
> >> +++ b/modules/codec/avcodec/video.c
> >> @@ -205,8 +205,19 @@ static int lavc_GetVideoFormat(decoder_t *dec,
> >> video_format_t *restrict fmt, * __MAX(ctx->ticks_per_frame, 1); }
> >> 
> >> -    if( ctx->color_range == AVCOL_RANGE_JPEG )
> >> +    switch ( ctx->color_range )
> >> +    {
> >> 
> >> +    case AVCOL_RANGE_JPEG:
> >>           fmt->b_color_range_full = true;
> >> 
> >> +        break;
> >> +    case AVCOL_RANGE_UNSPECIFIED:
> >> +        fmt->b_color_range_full = !vlc_fourcc_IsYUV( fmt->i_chroma );
> >> +        break;
> >> +    case AVCOL_RANGE_MPEG:
> >> +    default:
> >> +        fmt->b_color_range_full = false;
> >> +        break;
> >> +    }
> >> 
> >>       switch( ctx->colorspace )
> >>       {
> > 
> > How is that a property of libavcodec?
> 
> It's not, but unless we use a value with an undefined by default, it has
> to be set there.
> 
> I don't think a change to a integer/enum is OK for 3.0 so I'd rather do
> it that way.

Then there should be an unambiguous source code comment that this is hack and 
why it is there.

-- 
雷米‧德尼-库尔蒙
https://www.remlab.net/



More information about the vlc-devel mailing list