[MOVED FROM BAD 28/57] gst/flv/gstflvparse.c: Create pads from the pad templates...
authorSebastian Dröge <slomo@circular-chaos.org>
Fri, 10 Oct 2008 16:15:09 +0000 (16:15 +0000)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 19:20:56 +0000 (21:20 +0200)
Original commit message from CVS:
* gst/flv/gstflvparse.c: (gst_flv_parse_tag_audio),
(gst_flv_parse_tag_video):
Create pads from the pad templates, use fixed caps on them
and only activate them after the caps are set.

gst/flv/gstflvparse.c

index c5545054ecdf2b294c085f8067aeabdf4987d05f..1a4e53ccb50502f1c0f38c5fe522456236052c69 100644 (file)
@@ -548,16 +548,15 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
   /* If we don't have our audio pad created, then create it. */
   if (G_UNLIKELY (!demux->audio_pad)) {
 
-    demux->audio_pad = gst_pad_new ("audio", GST_PAD_SRC);
+    demux->audio_pad =
+        gst_pad_new_from_template (gst_element_class_get_pad_template
+        (GST_ELEMENT_GET_CLASS (demux), "audio"), "audio");
     if (G_UNLIKELY (!demux->audio_pad)) {
       GST_WARNING_OBJECT (demux, "failed creating audio pad");
       ret = GST_FLOW_ERROR;
       goto beach;
     }
 
-    /* Make it active */
-    gst_pad_set_active (demux->audio_pad, TRUE);
-
     /* Negotiate caps */
     if (!gst_flv_parse_audio_negotiate (demux, codec_tag, rate, channels,
             width)) {
@@ -578,6 +577,11 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
     gst_pad_set_event_function (demux->audio_pad,
         GST_DEBUG_FUNCPTR (gst_flv_demux_src_event));
 
+    gst_pad_use_fixed_caps (demux->audio_pad);
+
+    /* Make it active */
+    gst_pad_set_active (demux->audio_pad, TRUE);
+
     /* We need to set caps before adding */
     gst_element_add_pad (GST_ELEMENT (demux),
         gst_object_ref (demux->audio_pad));
@@ -823,14 +827,14 @@ gst_flv_parse_tag_video (GstFLVDemux * demux, const guint8 * data,
 
   /* If we don't have our video pad created, then create it. */
   if (G_UNLIKELY (!demux->video_pad)) {
-    demux->video_pad = gst_pad_new ("video", GST_PAD_SRC);
+    demux->video_pad =
+        gst_pad_new_from_template (gst_element_class_get_pad_template
+        (GST_ELEMENT_GET_CLASS (demux), "video"), "video");
     if (G_UNLIKELY (!demux->video_pad)) {
       GST_WARNING_OBJECT (demux, "failed creating video pad");
       ret = GST_FLOW_ERROR;
       goto beach;
     }
-    /* Make it active */
-    gst_pad_set_active (demux->video_pad, TRUE);
 
     if (!gst_flv_parse_video_negotiate (demux, codec_tag)) {
       gst_object_unref (demux->video_pad);
@@ -854,6 +858,11 @@ gst_flv_parse_tag_video (GstFLVDemux * demux, const guint8 * data,
     gst_pad_set_event_function (demux->video_pad,
         GST_DEBUG_FUNCPTR (gst_flv_demux_src_event));
 
+    gst_pad_use_fixed_caps (demux->video_pad);
+
+    /* Make it active */
+    gst_pad_set_active (demux->video_pad, TRUE);
+
     /* We need to set caps before adding */
     gst_element_add_pad (GST_ELEMENT (demux),
         gst_object_ref (demux->video_pad));