summaryrefslogtreecommitdiffstats
path: root/gst/flv
diff options
context:
space:
mode:
authorJan Urbanski <j.urbanski@students.mimuw.edu.pl>2009-01-22 13:39:34 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-05-12 21:21:01 +0200
commit6d82cda0ff9dd5591aadf0f10b8b08b0a7742725 (patch)
tree794b76359c1220ca53f44b5be8ad2a72748e972d /gst/flv
parent351a29c1dfe1993c4ed546d81d3e5491ebcc0ab1 (diff)
[MOVED FROM BAD 49/57] 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/flv')
-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 ?");