[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.
This commit is contained in:
Julien Moutte 2007-10-22 15:45:49 +00:00 committed by Sebastian Dröge
parent 79c20be6bd
commit 2c69886497

View file

@ -500,11 +500,10 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
gst_element_add_pad (GST_ELEMENT (demux), gst_element_add_pad (GST_ELEMENT (demux),
gst_object_ref (demux->audio_pad)); gst_object_ref (demux->audio_pad));
if ((demux->has_audio && !demux->audio_pad) || /* We only emit no more pads when we have audio and video. Indeed we can
(demux->has_video && !demux->video_pad)) { * not trust the FLV header to tell us if there will be only audio or
GST_DEBUG_OBJECT (demux, "we are still waiting for a stream to come up " * only video and we would just break discovery of some files */
"before we can emit no more pads"); if (demux->audio_pad && demux->video_pad) {
} else {
GST_DEBUG_OBJECT (demux, "emitting no more pads"); GST_DEBUG_OBJECT (demux, "emitting no more pads");
gst_element_no_more_pads (GST_ELEMENT (demux)); 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_element_add_pad (GST_ELEMENT (demux),
gst_object_ref (demux->video_pad)); gst_object_ref (demux->video_pad));
if ((demux->has_audio && !demux->audio_pad) || /* We only emit no more pads when we have audio and video. Indeed we can
(demux->has_video && !demux->video_pad)) { * not trust the FLV header to tell us if there will be only audio or
GST_DEBUG_OBJECT (demux, "we are still waiting for a stream to come up " * only video and we would just break discovery of some files */
"before we can emit no more pads"); if (demux->audio_pad && demux->video_pad) {
} else {
GST_DEBUG_OBJECT (demux, "emitting no more pads"); GST_DEBUG_OBJECT (demux, "emitting no more pads");
gst_element_no_more_pads (GST_ELEMENT (demux)); 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) { switch (tag_type) {
case 9: case 9:
demux->state = FLV_STATE_TAG_VIDEO; demux->state = FLV_STATE_TAG_VIDEO;
demux->has_video = TRUE;
break; break;
case 8: case 8:
demux->state = FLV_STATE_TAG_AUDIO; demux->state = FLV_STATE_TAG_AUDIO;
demux->has_audio = TRUE;
break; break;
case 18: case 18:
demux->state = FLV_STATE_TAG_SCRIPT; demux->state = FLV_STATE_TAG_SCRIPT;