Fixes passing through mismatching metadata from the input side
when RGB input (from f.ex. H.264 or HEVC) gets converted to YCbCr.

Fixes #9132
---
 libavfilter/vf_scale.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index ce39217515..7ca833bbb1 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -738,6 +738,15 @@ scale:
     out->width  = outlink->w;
     out->height = outlink->h;
 
+    // Sanity check: If we've got the RGB/XYZ (identity) matrix configured, and
+    //               the output is no longer RGB, unset the matrix.
+    //               In theory this should be in swscale itself as the AVFrame
+    //               based API gets in, so that not every swscale API user has
+    //               to go through duplicating such sanity checks.
+    if (out->colorspace == AVCOL_SPC_RGB &&
+        !(av_pix_fmt_desc_get(out->format)->flags & AV_PIX_FMT_FLAG_RGB))
+        out->colorspace = AVCOL_SPC_UNSPECIFIED;
+
     if (scale->output_is_pal)
         avpriv_set_systematic_pal2((uint32_t*)out->data[1], outlink->format == 
AV_PIX_FMT_PAL8 ? AV_PIX_FMT_BGR8 : outlink->format);
 
-- 
2.31.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to