summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-11-11 20:37:03 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-11-11 20:37:03 +0000
commit780c4c1c86e3849beb7f1f90a53c36c8b49094d0 (patch)
tree8bba44f95cd0e2372695e6446e141361c41d6d50 /gst
parent31d7cd659a72bce304ba152a461b6a716d14a1ac (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.c31
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);