summaryrefslogtreecommitdiffstats
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
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.
-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 ?");