x264enc: Forward downstream colorimetry and chroma-site upstream
authorThibault Saunier <tsaunier@igalia.com>
Tue, 7 Jul 2020 02:13:55 +0000 (22:13 -0400)
committerThibault Saunier <tsaunier@igalia.com>
Fri, 10 Jul 2020 12:47:29 +0000 (08:47 -0400)
So that the value can be used by upstream converters when necessary.

This whole logic has been copied from `__gst_video_element_proxy_caps`
but those 2 fields were missing.

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

ext/x264/gstx264enc.c

index d28c6bd..ad1dbd4 100644 (file)
@@ -829,6 +829,8 @@ gst_x264_enc_sink_getcaps (GstVideoEncoder * enc, GstCaps * filter)
       const GValue *val;
       GstStructure *s;
 
+      /* FIXME Find a way to reuse gst_video_encoder_proxy_getcaps so that
+       * we do not need to copy that logic */
       s = gst_structure_new_id_empty (q_name);
       if ((val = gst_structure_get_value (allowed_s, "width")))
         gst_structure_set_value (s, "width", val);
@@ -838,6 +840,10 @@ gst_x264_enc_sink_getcaps (GstVideoEncoder * enc, GstCaps * filter)
         gst_structure_set_value (s, "framerate", val);
       if ((val = gst_structure_get_value (allowed_s, "pixel-aspect-ratio")))
         gst_structure_set_value (s, "pixel-aspect-ratio", val);
+      if ((val = gst_structure_get_value (allowed_s, "colorimetry")))
+        gst_structure_set_value (s, "colorimetry", val);
+      if ((val = gst_structure_get_value (allowed_s, "chroma-site")))
+        gst_structure_set_value (s, "chroma-site", val);
 
       if ((val = gst_structure_get_value (allowed_s, "profile"))) {
         gboolean has_420 = FALSE;