splitmuxsink: pad request fails for flvmux
authorVinod Kesti <vinodkesti@yahoo.com>
Wed, 16 Nov 2016 05:23:51 +0000 (10:53 +0530)
committerJan Schmidt <jan@centricular.com>
Thu, 17 Nov 2016 12:19:44 +0000 (23:19 +1100)
splitmuxsink requests pad from element using pad template like "video_%u", "audio_%u" and "sink_%d". This is true for most of the muxers.
But splitmuxsink not able to request pad to flvmux as flvmux has "audio" and "video" as pad templates.
fix: splitmuxsink should fallback to "audio" and  "video" when template not found.

https://bugzilla.gnome.org/show_bug.cgi?id=774507

gst/multifile/gstsplitmuxsink.c

index 99bc785..0f05f7b 100644 (file)
@@ -1382,12 +1382,26 @@ gst_splitmux_sink_request_new_pad (GstElement * element,
       mux_template =
           gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
           (splitmux->muxer), "video_%u");
+
+      /* Fallback to find sink pad templates named 'video' (flvmux) */
+      if (!mux_template) {
+        mux_template =
+            gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+            (splitmux->muxer), "video");
+      }
       is_video = TRUE;
       name = NULL;
     } else {
       mux_template =
           gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
           (splitmux->muxer), templ->name_template);
+
+      /* Fallback to find sink pad templates named 'audio' (flvmux) */
+      if (!mux_template) {
+        mux_template =
+            gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+            (splitmux->muxer), "audio");
+      }
     }
     if (mux_template == NULL) {
       /* Fallback to find sink pad templates named 'sink_%d' (mpegtsmux) */