[FFmpeg-devel] [PATCH] avcodec/proresdec2: only set avctx->color* when values are specified
Carl Eugen Hoyos
ceffmpeg at gmail.com
Fri Jan 18 13:43:20 EET 2019
2019-01-18 4:48 GMT+01:00, Neil Birkbeck <neil.birkbeck at gmail.com>:
> On Thu, Jan 17, 2019 at 7:43 PM Neil Birkbeck <neil.birkbeck at gmail.com>
> wrote:
>
>> This allows preservation of color values set from the container,
>> while still letting the bitstream take precedent when its values
>> are specified to some actual value (e.g., not *UNSPECIFIED).
>>
>> Signed-off-by: Neil Birkbeck <neil.birkbeck at gmail.com>
>> ---
>> libavcodec/proresdec2.c | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/libavcodec/proresdec2.c b/libavcodec/proresdec2.c
>> index 6209c229c9..662ca7d48b 100644
>> --- a/libavcodec/proresdec2.c
>> +++ b/libavcodec/proresdec2.c
>> @@ -262,9 +262,12 @@ static int decode_frame_header(ProresContext *ctx,
>> const uint8_t *buf,
>> }
>> }
>>
>> - avctx->color_primaries = buf[14];
>> - avctx->color_trc = buf[15];
>> - avctx->colorspace = buf[16];
>> + if (buf[14] != AVCOL_PRI_UNSPECIFIED)
>> + avctx->color_primaries = buf[14];
>> + if (buf[15] != AVCOL_TRC_UNSPECIFIED)
>> + avctx->color_trc = buf[15];
>> + if (buf[16] != AVCOL_SPC_UNSPECIFIED)
>> + avctx->colorspace = buf[16];
>> avctx->color_range = AVCOL_RANGE_MPEG;
>>
>> ptr = buf + 20;
>> --
>> 2.20.1.321.g9e740568ce-goog
>>
>>
> To add a bit more context. The patch is a fix for the case when prores
> bitstream code points are explicitly set to unspecified and are overriding
> what may have been in the container (unlike h264/h265 where such values can
> behind the color_description flag, these fields always must be present in
> the prores header).
Isn't this even more of a reason to prefer the container value over
the bitstream value?
Carl Eugen
More information about the ffmpeg-devel
mailing list