diff options
author | Jan Urbanski <j.urbanski@students.mimuw.edu.pl> | 2009-01-22 13:39:34 +0100 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2009-01-22 13:41:32 +0100 |
commit | a3b61dce0de4002efa4febddb2dde77c3e9ae13d (patch) | |
tree | a69e8db81e31efcfc80b6e5b74533b1344127016 | |
parent | f8f5b55ddd367d1a72321ec476deae0e035269dc (diff) | |
download | gst-plugins-bad-a3b61dce0de4002efa4febddb2dde77c3e9ae13d.tar.gz gst-plugins-bad-a3b61dce0de4002efa4febddb2dde77c3e9ae13d.tar.bz2 gst-plugins-bad-a3b61dce0de4002efa4febddb2dde77c3e9ae13d.zip |
Add support for ECMA arrays in script tags. Fixes bug #567965.
Add support for ECMA arrays in script tags. This fixes
seeking on some files that have the seek table stored
inside an ECMA array instead of the normal array.
-rw-r--r-- | gst/flv/gstflvparse.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gst/flv/gstflvparse.c b/gst/flv/gstflvparse.c index b15a65ba..8c29a325 100644 --- a/gst/flv/gstflvparse.c +++ b/gst/flv/gstflvparse.c @@ -206,6 +206,29 @@ gst_flv_parse_metadata_item (GstFLVDemux * demux, GstByteReader * reader, break; } + case 8: // ECMA array + { + guint32 nb_elems; + gboolean end_of_object_marker = FALSE; + + if (!gst_byte_reader_get_uint32_be (reader, &nb_elems)) + goto error; + + GST_DEBUG_OBJECT (demux, "there are approx. %d elements in the array", + nb_elems); + + while (!end_of_object_marker) { + gboolean ok = + gst_flv_parse_metadata_item (demux, reader, &end_of_object_marker); + + if (G_UNLIKELY (!ok)) { + GST_WARNING_OBJECT (demux, "failed reading a tag, skipping"); + goto error; + } + } + + break; + } case 9: // End marker { GST_DEBUG_OBJECT (demux, "end marker ?"); |