videodecoder: Don't assume GstVideoChromaSite and GstVideoColorimetry
authorSeungha Yang <seungha@centricular.com>
Fri, 30 Oct 2020 18:14:20 +0000 (03:14 +0900)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Mon, 2 Nov 2020 14:11:52 +0000 (14:11 +0000)
Even if given GstVideoChromaSite and/or GstVideoColorimetry has unknown
value(s), assumption for an unknown value should be done by subclass or
downstream element, not a role of video decoder. And subclass might
want to output unknown value as is.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/910>

gst-libs/gst/video/gstvideodecoder.c

index 402bdcb..bd6cb76 100644 (file)
@@ -762,18 +762,8 @@ _new_output_state (GstVideoFormat fmt, GstVideoInterlaceMode interlace_mode,
     if (copy_interlace_mode)
       tgt->interlace_mode = ref->interlace_mode;
     tgt->flags = ref->flags;
-    /* only copy values that are not unknown so that we don't override the
-     * defaults. subclasses should really fill these in when they know. */
-    if (ref->chroma_site)
-      tgt->chroma_site = ref->chroma_site;
-    if (ref->colorimetry.range)
-      tgt->colorimetry.range = ref->colorimetry.range;
-    if (ref->colorimetry.matrix)
-      tgt->colorimetry.matrix = ref->colorimetry.matrix;
-    if (ref->colorimetry.transfer)
-      tgt->colorimetry.transfer = ref->colorimetry.transfer;
-    if (ref->colorimetry.primaries)
-      tgt->colorimetry.primaries = ref->colorimetry.primaries;
+    tgt->chroma_site = ref->chroma_site;
+    tgt->colorimetry = ref->colorimetry;
     GST_DEBUG ("reference par %d/%d fps %d/%d",
         ref->par_n, ref->par_d, ref->fps_n, ref->fps_d);
     tgt->par_n = ref->par_n;