summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavidemux.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-04-11 21:36:45 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-04-11 21:36:45 +0000
commit0b122a2891399c0a4983aa6a58e25fc6a3b32474 (patch)
tree8172c09824a9bc85b670f4c5c4c5d293c6d6b6ee /gst/avi/gstavidemux.c
parent1c47f1b8ae8f202d2b04381567c5cd3ea3073373 (diff)
gst-libs/gst/riff/riff-media.c: Add MS video v1.
Original commit message from CVS: * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps), (gst_riff_create_video_template_caps): Add MS video v1. * gst/avi/gstavidemux.c: (gst_avi_demux_stream_index), (gst_avi_demux_stream_data): Add support for "rec-list" chunks.
Diffstat (limited to 'gst/avi/gstavidemux.c')
-rw-r--r--gst/avi/gstavidemux.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 1c03ef2c..4061d096 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -1065,6 +1065,9 @@ gst_avi_demux_stream_index (GstAviDemux * avi)
entry.size = GUINT32_FROM_LE (_entry->size);
target = &avi->index_entries[i];
+ if (entry.id == GST_RIFF_rec)
+ continue;
+
stream_nr = CHUNKID_TO_STREAMNR (entry.id);
if (stream_nr >= avi->num_streams || stream_nr < 0) {
g_warning ("Index entry %d has invalid stream nr %d", i, stream_nr);
@@ -1388,6 +1391,20 @@ gst_avi_demux_stream_data (GstAviDemux * avi)
/* And then, we get the data */
if (!(tag = gst_riff_peek_tag (riff, NULL)))
return FALSE;
+
+ /* Support for rec-list files */
+ if (tag == GST_RIFF_TAG_LIST) {
+ if (!(tag = gst_riff_peek_list (riff)))
+ return FALSE;
+ if (tag == GST_RIFF_rec) {
+ /* Simply skip the list */
+ if (!gst_riff_read_list (riff, &tag))
+ return FALSE;
+ if (!(tag = gst_riff_peek_tag (riff, NULL)))
+ return FALSE;
+ }
+ }
+
stream_nr = CHUNKID_TO_STREAMNR (tag);
if (stream_nr < 0 || stream_nr >= avi->num_streams) {
/* recoverable */