summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorJan Urbanski <j.urbanski@students.mimuw.edu.pl>2009-01-22 13:39:34 +0100
committerSebastian Dröge <slomo@circular-chaos.org>2009-01-22 13:41:32 +0100
commita3b61dce0de4002efa4febddb2dde77c3e9ae13d (patch)
treea69e8db81e31efcfc80b6e5b74533b1344127016 /gst
parentf8f5b55ddd367d1a72321ec476deae0e035269dc (diff)
downloadgst-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.
Diffstat (limited to 'gst')
-rw-r--r--gst/flv/gstflvparse.c23
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 ?");