parsebin: Store caps on parsepad as early as possible
authorEdward Hervey <edward@centricular.com>
Wed, 23 Oct 2024 12:25:52 +0000 (14:25 +0200)
committerBackport Bot <gitlab-backport-bot@gstreamer-foundation.org>
Mon, 28 Oct 2024 13:15:40 +0000 (13:15 +0000)
When analyzing a new pad, we can store the updated caps on the GstStream if they
are fixed.

If they are not fixed, this function will be called again once the element will
provide them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7764>

subprojects/gst-plugins-base/gst/playback/gstparsebin.c

index 5097cac47863b847fba293bc64f60631cb40fe06..8f7f6d23a47a4cc1198f95c5afeba1dd5356bc8a 100644 (file)
@@ -1339,6 +1339,11 @@ analyze_new_pad (GstParseBin * parsebin, GstElement * src, GstPad * pad,
   gst_pad_set_active (GST_PAD_CAST (parsepad), TRUE);
   parse_pad_set_target (parsepad, pad);
 
+  /* If we know the caps, store them in the parsepad GstStream */
+  if (gst_caps_is_fixed (caps)) {
+    gst_parse_pad_update_caps (parsepad, caps);
+  }
+
   /* 1. Emit 'autoplug-continue' the result will tell us if this pads needs
    * further autoplugging. Only do this for fixed caps, for unfixed caps
    * we will later come here again from the notify::caps handler. The