diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-11-11 20:37:03 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-11-11 20:37:03 +0000 |
commit | 780c4c1c86e3849beb7f1f90a53c36c8b49094d0 (patch) | |
tree | 8bba44f95cd0e2372695e6446e141361c41d6d50 /gst | |
parent | 31d7cd659a72bce304ba152a461b6a716d14a1ac (diff) |
gst/matroska/matroska-demux.c: Signal no-more-pads (so it works in playbin).
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_loop_stream):
Signal no-more-pads (so it works in playbin).
Diffstat (limited to 'gst')
-rw-r--r-- | gst/matroska/matroska-demux.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 00eee5bb..9b32c5f5 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -2328,23 +2328,26 @@ gst_matroska_demux_loop_stream (GstMatroskaDemux * demux) break; } - case GST_MATROSKA_ID_CLUSTER:{ - if (!gst_ebml_read_master (ebml, &id)) { + case GST_MATROSKA_ID_CLUSTER: + if (demux->state != GST_MATROSKA_DEMUX_STATE_DATA) { + demux->state = GST_MATROSKA_DEMUX_STATE_DATA; + gst_element_no_more_pads (GST_ELEMENT (demux)); + } else { + if (!gst_ebml_read_master (ebml, &id)) { + res = FALSE; + break; + } + /* The idea is that we parse one cluster per loop and + * then break out of the loop here. In the next call + * of the loopfunc, we will get back here with the + * next cluster. If an error occurs, we didn't + * actually push a buffer, but we still want to break + * out of the loop to handle a possible error. We'll + * get back here if it's recoverable. */ + gst_matroska_demux_parse_cluster (demux); res = FALSE; - break; } - /* The idea is that we parse one cluster per loop and - * then break out of the loop here. In the next call - * of the loopfunc, we will get back here with the - * next cluster. If an error occurs, we didn't - * actually push a buffer, but we still want to break - * out of the loop to handle a possible error. We'll - * get back here if it's recoverable. */ - gst_matroska_demux_parse_cluster (demux); - demux->state = GST_MATROSKA_DEMUX_STATE_DATA; - res = FALSE; break; - } default: GST_WARNING ("Unknown matroska file header ID 0x%x", id); |