summaryrefslogtreecommitdiffstats
path: root/gst/flv
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-10-10 16:15:09 +0000
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-12 21:20:56 +0200
commit549f97ea7bf495fa84a201798291aae62005ea65 (patch)
tree26d99d7e12ebc9ea0d6c6a08b564c369d2311b8d /gst/flv
parent023e5ba09ad15faa261f0f424780e5b2150fe9c0 (diff)
[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.
Diffstat (limited to 'gst/flv')
-rw-r--r--gst/flv/gstflvparse.c23
1 files changed, 16 insertions, 7 deletions
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));