diff options
author | Julien Moutte <julien@moutte.net> | 2007-10-22 15:45:49 +0000 |
---|---|---|
committer | Julien Moutte <julien@moutte.net> | 2007-10-22 15:45:49 +0000 |
commit | da7548509c258449e5cf64499d913d8d9ea27e4b (patch) | |
tree | 51bc1b6d4ab00cf0ebd886935713c8b1001c9144 | |
parent | a78f4ff2501ce93a79ab4b137bfbaceff84131bf (diff) | |
download | gst-plugins-bad-da7548509c258449e5cf64499d913d8d9ea27e4b.tar.gz gst-plugins-bad-da7548509c258449e5cf64499d913d8d9ea27e4b.tar.bz2 gst-plugins-bad-da7548509c258449e5cf64499d913d8d9ea27e4b.zip |
gst/flv/gstflvparse.c: Don't emit no-more-pads for single pad scenarios as the header is definitely not reliable. We ...
Original commit message from CVS:
2007-10-22 Julien MOUTTE <julien@moutte.net>
* gst/flv/gstflvparse.c: (gst_flv_parse_tag_audio),
(gst_flv_parse_tag_video), (gst_flv_parse_tag_type): Don't
emit no-more-pads for single pad scenarios as the header
is definitely not reliable. We emit them for 2 pads scenarios
though to speed up media discovery.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gst/flv/gstflvparse.c | 20 |
2 files changed, 18 insertions, 10 deletions
@@ -1,3 +1,11 @@ +2007-10-22 Julien MOUTTE <julien@moutte.net> + + * gst/flv/gstflvparse.c: (gst_flv_parse_tag_audio), + (gst_flv_parse_tag_video), (gst_flv_parse_tag_type): Don't + emit no-more-pads for single pad scenarios as the header + is definitely not reliable. We emit them for 2 pads scenarios + though to speed up media discovery. + 2007-10-19 Zaheer Abbas Merali <zaheerabbas at merali dot org> * sys/dvb/dvbbasebin.c: diff --git a/gst/flv/gstflvparse.c b/gst/flv/gstflvparse.c index fe5bfd10..a04c89e9 100644 --- a/gst/flv/gstflvparse.c +++ b/gst/flv/gstflvparse.c @@ -500,11 +500,10 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data, gst_element_add_pad (GST_ELEMENT (demux), gst_object_ref (demux->audio_pad)); - if ((demux->has_audio && !demux->audio_pad) || - (demux->has_video && !demux->video_pad)) { - GST_DEBUG_OBJECT (demux, "we are still waiting for a stream to come up " - "before we can emit no more pads"); - } else { + /* We only emit no more pads when we have audio and video. Indeed we can + * not trust the FLV header to tell us if there will be only audio or + * only video and we would just break discovery of some files */ + if (demux->audio_pad && demux->video_pad) { GST_DEBUG_OBJECT (demux, "emitting no more pads"); gst_element_no_more_pads (GST_ELEMENT (demux)); } @@ -732,11 +731,10 @@ gst_flv_parse_tag_video (GstFLVDemux * demux, const guint8 * data, gst_element_add_pad (GST_ELEMENT (demux), gst_object_ref (demux->video_pad)); - if ((demux->has_audio && !demux->audio_pad) || - (demux->has_video && !demux->video_pad)) { - GST_DEBUG_OBJECT (demux, "we are still waiting for a stream to come up " - "before we can emit no more pads"); - } else { + /* We only emit no more pads when we have audio and video. Indeed we can + * not trust the FLV header to tell us if there will be only audio or + * only video and we would just break discovery of some files */ + if (demux->audio_pad && demux->video_pad) { GST_DEBUG_OBJECT (demux, "emitting no more pads"); gst_element_no_more_pads (GST_ELEMENT (demux)); } @@ -892,9 +890,11 @@ gst_flv_parse_tag_type (GstFLVDemux * demux, const guint8 * data, switch (tag_type) { case 9: demux->state = FLV_STATE_TAG_VIDEO; + demux->has_video = TRUE; break; case 8: demux->state = FLV_STATE_TAG_AUDIO; + demux->has_audio = TRUE; break; case 18: demux->state = FLV_STATE_TAG_SCRIPT; |