gst/flv/gstflvparse.c: Create pads from the pad templates, use fixed caps on them...
authorSebastian Dröge <slomo@circular-chaos.org>
Fri, 10 Oct 2008 16:15:09 +0000 (16:15 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Fri, 10 Oct 2008 16:15:09 +0000 (16:15 +0000)
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.

ChangeLog
gst/flv/gstflvparse.c

index 19a1edb..3ac4bd4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-10-10  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
 
+       * 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.
+
+2008-10-10  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
        * configure.ac:
        Disable flacparse for this release as it's too buggy.
 
index c554505..1a4e53c 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));