avfilter/buffersrc: promote unspecified color metadata

Currently, this only affects untagged RGB/XYZ/Gray, which get forced to
their corresponding metadata before entering the filter graph. The main
justification for this change, however, is the planned ability to add
automatic promotion of unspecified yuv to mpeg range yuv.

Notably, this change will never allow accidentally cross-promoting
unspecified to jpeg or to a specific YUV matrix, since that is still
bound by the constraints of YUV range negotiation as set up by
query_formats.
This commit is contained in:
Niklas Haas 2024-01-12 09:14:01 +01:00
parent 99d33cc661
commit 2303bf3232
2 changed files with 7 additions and 2 deletions

View File

@ -291,6 +291,11 @@ FF_DISABLE_DEPRECATION_WARNINGS
FF_ENABLE_DEPRECATION_WARNINGS
#endif
if (copy->colorspace == AVCOL_SPC_UNSPECIFIED)
copy->colorspace = ctx->outputs[0]->colorspace;
if (copy->color_range == AVCOL_RANGE_UNSPECIFIED)
copy->color_range = ctx->outputs[0]->color_range;
ret = ff_filter_frame(ctx->outputs[0], copy);
if (ret < 0)
return ret;

View File

@ -1,5 +1,5 @@
e181dc84058c3584598333dabd110123 *tests/data/fate/rgb24-mkv.matroska
58225 tests/data/fate/rgb24-mkv.matroska
7d767e8238c674ecfa80458cb281c09e *tests/data/fate/rgb24-mkv.matroska
58236 tests/data/fate/rgb24-mkv.matroska
#tb 0: 1/10
#media_type 0: video
#codec_id 0: rawvideo