From 549f97ea7bf495fa84a201798291aae62005ea65 Mon Sep 17 00:00:00 2001 From: Sebastian Dröge Date: Fri, 10 Oct 2008 16:15:09 +0000 Subject: [MOVED FROM BAD 28/57] gst/flv/gstflvparse.c: Create pads from the pad templates, use fixed caps on them and only activate them after the ca... 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 | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'gst/flv') diff --git a/gst/flv/gstflvparse.c b/gst/flv/gstflvparse.c index c5545054..1a4e53cc 100644 --- a/gst/flv/gstflvparse.c +++ b/gst/flv/gstflvparse.c @@ -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)); -- cgit