vaapipostproc: do not override explicit srcpad colorimetry
authorU. Artie Eoff <ullysses.a.eoff@intel.com>
Thu, 30 Jan 2020 20:34:07 +0000 (12:34 -0800)
committerU. Artie Eoff <ullysses.a.eoff@intel.com>
Wed, 5 Feb 2020 18:16:16 +0000 (10:16 -0800)
If colorimetry has been set by a capsfilter (e.g.
vaapipostproc ! video/x-raw,colorimetry=bt709) then
don't try to override it.  Previously, the aforementioned
capsfilter will fail to negotiate if default colorimetry
is not the same as the capsfilter (e.g. 4K resolutions).

gst/vaapi/gstvaapipostprocutil.c

index 1e09e06..a11e555 100644 (file)
@@ -614,6 +614,10 @@ _set_colorimetry (GstVaapiPostproc * postproc, GstVideoFormat format,
         gst_video_chroma_to_string (GST_VIDEO_INFO_CHROMA_SITE (&vinfo)), NULL);
   }
 
+  /* if outs structure already specifies colorimetry, use it */
+  if (gst_structure_has_field (outs, "colorimetry"))
+    return TRUE;
+
   /* make sure we set the RGB matrix for RGB formats */
   colorimetry = GST_VIDEO_INFO_COLORIMETRY (&vinfo);
   if (GST_VIDEO_FORMAT_INFO_IS_RGB (vinfo.finfo) &&
@@ -733,7 +737,7 @@ _get_preferred_caps (GstVaapiPostproc * postproc, GstVideoInfo * vinfo,
     postproc->format = format;
   }
 
-  return outcaps;
+  return gst_caps_fixate (outcaps);
 
   /* ERRORS */
 fixate_failed: