summaryrefslogtreecommitdiffstats
path: root/gst/flv
diff options
context:
space:
mode:
authorJulien Moutte <julien@moutte.net>2007-10-22 15:45:49 +0000
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-12 21:20:52 +0200
commit2c69886497d9e26e327e423e6e84caffdddb5270 (patch)
treefb07e2b8abe26bf3ce0b984549a0bac73dfcbca6 /gst/flv
parent79c20be6bd477a72ccde0eb7729028f570975026 (diff)
[MOVED FROM BAD 14/57] 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.
Diffstat (limited to 'gst/flv')
-rw-r--r--gst/flv/gstflvparse.c20
1 files changed, 10 insertions, 10 deletions
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;