diff options
author | Jan Urbanski <j.urbanski@students.mimuw.edu.pl> | 2009-01-22 13:39:34 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-05-12 21:21:01 +0200 |
commit | 6d82cda0ff9dd5591aadf0f10b8b08b0a7742725 (patch) | |
tree | 794b76359c1220ca53f44b5be8ad2a72748e972d /gst/flv | |
parent | 351a29c1dfe1993c4ed546d81d3e5491ebcc0ab1 (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.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 ?"); |