@norskvideo/moq-js-player 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moq-publisher.esm.js","sources":["../../transport/buffer.ts","../../transport/base_data.ts","../../transport/control/subscribe.ts","../../transport/control/subscribe_ok.ts","../../transport/control/subscribe_error.ts","../../transport/control/subscribe_update.ts","../../transport/control/subscribe_namespace.ts","../../transport/control/subscribe_namespace_ok.ts","../../transport/control/subscribe_namespace_error.ts","../../transport/control/unsubscribe.ts","../../transport/control/publish.ts","../../transport/control/publish_ok.ts","../../transport/control/publish_error.ts","../../transport/control/publish_done.ts","../../transport/control/publish_namespace.ts","../../transport/control/publish_namespace_ok.ts","../../transport/control/publish_namespace_error.ts","../../transport/control/publish_namespace_done.ts","../../transport/control/fetch.ts","../../transport/control/fetch_ok.ts","../../transport/control/fetch_error.ts","../../transport/control/fetch_cancel.ts","../../transport/control/go_away.ts","../../transport/control/client_setup.ts","../../transport/control/server_setup.ts","../../transport/control/index.ts","../../transport/utils.ts","../../transport/stream.ts","../../transport/subgroup.ts","../../transport/objects.ts","../../common/error.ts","../../common/async.ts","../../transport/publisher.ts","../../transport/subscriber.ts","../../transport/connection.ts","../../transport/client.ts","../../contribute/segment.ts","../../node_modules/mp4box/dist/mp4box.all.js","../../media/mp4/index.ts","../../contribute/container.ts","../../contribute/audio.ts","../../contribute/video.ts","../../contribute/track.ts","../../common/settings.ts","../../contribute/broadcast.ts","../../media/catalog/index.ts","../../publish/index.ts","../../moq-publisher/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// file:src/log.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar Log = (function (){\n\t\tvar start = new Date();\n\t\tvar LOG_LEVEL_ERROR \t= 4;\n\t\tvar LOG_LEVEL_WARNING \t= 3;\n\t\tvar LOG_LEVEL_INFO \t\t= 2;\n\t\tvar LOG_LEVEL_DEBUG\t\t= 1;\n\t\tvar log_level = LOG_LEVEL_ERROR;\n\t\tvar logObject = {\n\t\t\tsetLogLevel : function(level) {\n\t\t\t\tif (level == this.debug) log_level = LOG_LEVEL_DEBUG;\n\t\t\t\telse if (level == this.info) log_level = LOG_LEVEL_INFO;\n\t\t\t\telse if (level == this.warn) log_level = LOG_LEVEL_WARNING;\n\t\t\t\telse if (level == this.error) log_level = LOG_LEVEL_ERROR;\n\t\t\t\telse log_level = LOG_LEVEL_ERROR;\n\t\t\t},\n\t\t\tdebug : function(module, msg) {\n\t\t\t\tif (console.debug === undefined) {\n\t\t\t\t\tconsole.debug = console.log;\n\t\t\t\t}\n\t\t\t\tif (LOG_LEVEL_DEBUG >= log_level) {\n\t\t\t\t\tconsole.debug(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tlog : function(module, msg) {\n\t\t\t\tthis.debug(module.msg)\n\t\t\t},\n\t\t\tinfo : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_INFO >= log_level) {\n\t\t\t\t\tconsole.info(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\twarn : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_WARNING >= log_level) {\n\t\t\t\t\tconsole.warn(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t},\n\t\t\terror : function(module, msg) {\n\t\t\t\tif (LOG_LEVEL_ERROR >= log_level) {\n\t\t\t\t\tconsole.error(\"[\"+Log.getDurationString(new Date()-start,1000)+\"]\",\"[\"+module+\"]\",msg);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn logObject;\n\t})();\n\t\n/* Helper function to print a duration value in the form H:MM:SS.MS */\nLog.getDurationString = function(duration, _timescale) {\n\tvar neg;\n\t/* Helper function to print a number on a fixed number of digits */\n\tfunction pad(number, length) {\n\t\tvar str = '' + number;\n\t\tvar a = str.split('.');\t\t\n\t\twhile (a[0].length < length) {\n\t\t\ta[0] = '0' + a[0];\n\t\t}\n\t\treturn a.join('.');\n\t}\n\tif (duration < 0) {\n\t\tneg = true;\n\t\tduration = -duration;\n\t} else {\n\t\tneg = false;\t\n\t}\n\tvar timescale = _timescale || 1;\n\tvar duration_sec = duration/timescale;\n\tvar hours = Math.floor(duration_sec/3600);\n\tduration_sec -= hours * 3600;\n\tvar minutes = Math.floor(duration_sec/60);\n\tduration_sec -= minutes * 60;\t\t\n\tvar msec = duration_sec*1000;\n\tduration_sec = Math.floor(duration_sec);\n\tmsec -= duration_sec*1000;\n\tmsec = Math.floor(msec);\n\treturn (neg ? \"-\": \"\")+hours+\":\"+pad(minutes,2)+\":\"+pad(duration_sec,2)+\".\"+pad(msec,3);\n}\n\t\n/* Helper function to stringify HTML5 TimeRanges objects */\t\nLog.printRanges = function(ranges) {\n\tvar length = ranges.length;\n\tif (length > 0) {\n\t\tvar str = \"\";\n\t\tfor (var i = 0; i < length; i++) {\n\t\t if (i > 0) str += \",\";\n\t\t str += \"[\"+Log.getDurationString(ranges.start(i))+ \",\"+Log.getDurationString(ranges.end(i))+\"]\";\n\t\t}\n\t\treturn str;\n\t} else {\n\t\treturn \"(empty)\";\n\t}\n}\n\nif (typeof exports !== 'undefined') {\n\texports.Log = Log;\n}\n// file:src/stream.js\nvar MP4BoxStream = function(arrayBuffer) {\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n this.dataview = new DataView(arrayBuffer);\n } else {\n throw (\"Needs an array buffer\");\n }\n this.position = 0;\n};\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\nMP4BoxStream.prototype.getPosition = function() {\n return this.position;\n}\n\nMP4BoxStream.prototype.getEndPosition = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.getLength = function() {\n return this.buffer.byteLength;\n}\n\nMP4BoxStream.prototype.seek = function (pos) {\n var npos = Math.max(0, Math.min(this.buffer.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n return true;\n}\n\nMP4BoxStream.prototype.isEos = function () {\n return this.getPosition() >= this.getEndPosition();\n}\n\n/*************************************************************************\n Read methods, simimar to DataStream but simpler\n *************************************************************************/\nMP4BoxStream.prototype.readAnyInt = function(size, signed) {\n var res = 0;\n if (this.position + size <= this.buffer.byteLength) {\n switch (size) {\n case 1:\n if (signed) {\n res = this.dataview.getInt8(this.position);\n } else {\n res = this.dataview.getUint8(this.position);\n }\n break;\n case 2:\n if (signed) {\n res = this.dataview.getInt16(this.position);\n } else {\n res = this.dataview.getUint16(this.position);\n }\n break;\n case 3:\n if (signed) {\n throw (\"No method for reading signed 24 bits values\");\n } else {\n res = this.dataview.getUint8(this.position) << 16;\n res |= this.dataview.getUint8(this.position+1) << 8;\n res |= this.dataview.getUint8(this.position+2);\n }\n break;\n case 4:\n if (signed) {\n res = this.dataview.getInt32(this.position);\n } else {\n res = this.dataview.getUint32(this.position);\n }\n break;\n case 8:\n if (signed) {\n throw (\"No method for reading signed 64 bits values\");\n } else {\n res = this.dataview.getUint32(this.position) << 32;\n res |= this.dataview.getUint32(this.position+4);\n }\n break;\n default:\n throw (\"readInt method not implemented for size: \"+size);\n }\n this.position+= size;\n return res;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readUint8 = function() {\n return this.readAnyInt(1, false);\n}\n\nMP4BoxStream.prototype.readUint16 = function() {\n return this.readAnyInt(2, false);\n}\n\nMP4BoxStream.prototype.readUint24 = function() {\n return this.readAnyInt(3, false);\n}\n\nMP4BoxStream.prototype.readUint32 = function() {\n return this.readAnyInt(4, false);\n}\n\nMP4BoxStream.prototype.readUint64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readString = function(length) {\n if (this.position + length <= this.buffer.byteLength) {\n var s = \"\";\n for (var i = 0; i < length; i++) {\n s += String.fromCharCode(this.readUint8());\n }\n return s;\n } else {\n throw (\"Not enough bytes in buffer\");\n }\n}\n\nMP4BoxStream.prototype.readCString = function() {\n var arr = [];\n while(true) {\n var b = this.readUint8();\n if (b !== 0) {\n arr.push(b);\n } else {\n break;\n }\n }\n return String.fromCharCode.apply(null, arr); \n}\n\nMP4BoxStream.prototype.readInt8 = function() {\n return this.readAnyInt(1, true);\n}\n\nMP4BoxStream.prototype.readInt16 = function() {\n return this.readAnyInt(2, true);\n}\n\nMP4BoxStream.prototype.readInt32 = function() {\n return this.readAnyInt(4, true);\n}\n\nMP4BoxStream.prototype.readInt64 = function() {\n return this.readAnyInt(8, false);\n}\n\nMP4BoxStream.prototype.readUint8Array = function(length) {\n var arr = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint8();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint16Array = function(length) {\n var arr = new Int16Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint16();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readUint32Array = function(length) {\n var arr = new Uint32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readUint32();\n }\n return arr;\n}\n\nMP4BoxStream.prototype.readInt32Array = function(length) {\n var arr = new Int32Array(length);\n for (var i = 0; i < length; i++) {\n arr[i] = this.readInt32();\n }\n return arr;\n}\n\nif (typeof exports !== 'undefined') {\n exports.MP4BoxStream = MP4BoxStream;\n}// file:src/DataStream.js\n/**\n DataStream reads scalars, arrays and structs of data from an ArrayBuffer.\n It's like a file-like DataView on steroids.\n\n @param {ArrayBuffer} arrayBuffer ArrayBuffer to read from.\n @param {?Number} byteOffset Offset from arrayBuffer beginning for the DataStream.\n @param {?Boolean} endianness DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN (the default).\n */\nvar DataStream = function(arrayBuffer, byteOffset, endianness) {\n this._byteOffset = byteOffset || 0;\n if (arrayBuffer instanceof ArrayBuffer) {\n this.buffer = arrayBuffer;\n } else if (typeof arrayBuffer == \"object\") {\n this.dataView = arrayBuffer;\n if (byteOffset) {\n this._byteOffset += byteOffset;\n }\n } else {\n this.buffer = new ArrayBuffer(arrayBuffer || 0);\n }\n this.position = 0;\n this.endianness = endianness == null ? DataStream.LITTLE_ENDIAN : endianness;\n};\nDataStream.prototype = {};\n\nDataStream.prototype.getPosition = function() {\n return this.position;\n}\n\n/**\n Internal function to resize the DataStream buffer when required.\n @param {number} extra Number of bytes to add to the buffer allocation.\n @return {null}\n */\nDataStream.prototype._realloc = function(extra) {\n if (!this._dynamicSize) {\n return;\n }\n var req = this._byteOffset + this.position + extra;\n var blen = this._buffer.byteLength;\n if (req <= blen) {\n if (req > this._byteLength) {\n this._byteLength = req;\n }\n return;\n }\n if (blen < 1) {\n blen = 1;\n }\n while (req > blen) {\n blen *= 2;\n }\n var buf = new ArrayBuffer(blen);\n var src = new Uint8Array(this._buffer);\n var dst = new Uint8Array(buf, 0, src.length);\n dst.set(src);\n this.buffer = buf;\n this._byteLength = req;\n};\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the extra bytes from the backing buffer when\n the virtual byteLength is smaller than the buffer byteLength (happens after\n growing the buffer with writes and not filling the extra space completely).\n\n @return {null}\n */\nDataStream.prototype._trimAlloc = function() {\n if (this._byteLength == this._buffer.byteLength) {\n return;\n }\n var buf = new ArrayBuffer(this._byteLength);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, 0, dst.length);\n dst.set(src);\n this.buffer = buf;\n};\n\n\n/**\n Big-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.BIG_ENDIAN = false;\n\n/**\n Little-endian const to use as default endianness.\n @type {boolean}\n */\nDataStream.LITTLE_ENDIAN = true;\n\n/**\n Virtual byte length of the DataStream backing buffer.\n Updated to be max of original buffer size and last written size.\n If dynamicSize is false is set to buffer size.\n @type {number}\n */\nDataStream.prototype._byteLength = 0;\n\n/**\n Returns the byte length of the DataStream object.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteLength',\n { get: function() {\n return this._byteLength - this._byteOffset;\n }});\n\n/**\n Set/get the backing ArrayBuffer of the DataStream object.\n The setter updates the DataView to point to the new buffer.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'buffer',\n { get: function() {\n this._trimAlloc();\n return this._buffer;\n },\n set: function(v) {\n this._buffer = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the byteOffset of the DataStream object.\n The setter updates the DataView to point to the new byteOffset.\n @type {number}\n */\nObject.defineProperty(DataStream.prototype, 'byteOffset',\n { get: function() {\n return this._byteOffset;\n },\n set: function(v) {\n this._byteOffset = v;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._buffer.byteLength;\n } });\n\n/**\n Set/get the backing DataView of the DataStream object.\n The setter updates the buffer and byteOffset to point to the DataView values.\n @type {Object}\n */\nObject.defineProperty(DataStream.prototype, 'dataView',\n { get: function() {\n return this._dataView;\n },\n set: function(v) {\n this._byteOffset = v.byteOffset;\n this._buffer = v.buffer;\n this._dataView = new DataView(this._buffer, this._byteOffset);\n this._byteLength = this._byteOffset + v.byteLength;\n } });\n\n/**\n Sets the DataStream read/write position to given position.\n Clamps between 0 and DataStream length.\n\n @param {number} pos Position to seek to.\n @return {null}\n */\nDataStream.prototype.seek = function(pos) {\n var npos = Math.max(0, Math.min(this.byteLength, pos));\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\n};\n\n/**\n Returns true if the DataStream seek pointer is at the end of buffer and\n there's no more data to read.\n\n @return {boolean} True if the seek pointer is at the end of the buffer.\n */\nDataStream.prototype.isEof = function() {\n return (this.position >= this._byteLength);\n};\n\n\n/**\n Maps a Uint8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Uint8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n\n/**\n Reads an Int32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int32Array.\n */\nDataStream.prototype.readInt32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Int32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int16Array.\n */\nDataStream.prototype.readInt16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Int16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads an Int8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Int8Array.\n */\nDataStream.prototype.readInt8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Int8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint32Array.\n */\nDataStream.prototype.readUint32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Uint32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint16Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint16Array.\n */\nDataStream.prototype.readUint16Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 2) : length;\n var arr = new Uint16Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Uint8Array of desired length from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Uint8Array.\n */\nDataStream.prototype.readUint8Array = function(length) {\n length = length == null ? (this.byteLength-this.position) : length;\n var arr = new Uint8Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float64Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float64Array.\n */\nDataStream.prototype.readFloat64Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 8) : length;\n var arr = new Float64Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n/**\n Reads a Float32Array of desired length and endianness from the DataStream.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} The read Float32Array.\n */\nDataStream.prototype.readFloat32Array = function(length, e) {\n length = length == null ? (this.byteLength-this.position / 4) : length;\n var arr = new Float32Array(length);\n DataStream.memcpy(arr.buffer, 0,\n this.buffer, this.byteOffset+this.position,\n length*arr.BYTES_PER_ELEMENT);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += arr.byteLength;\n return arr;\n};\n\n\n/**\n Reads a 32-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt32 = function(e) {\n var v = this._dataView.getInt32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readInt16 = function(e) {\n var v = this._dataView.getInt16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readInt8 = function() {\n var v = this._dataView.getInt8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint32 = function(e) {\n var v = this._dataView.getUint32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 16-bit unsigned int from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readUint16 = function(e) {\n var v = this._dataView.getUint16(this.position, e == null ? this.endianness : e);\n this.position += 2;\n return v;\n};\n\n/**\n Reads an 8-bit unsigned int from the DataStream.\n\n @return {number} The read number.\n */\nDataStream.prototype.readUint8 = function() {\n var v = this._dataView.getUint8(this.position);\n this.position += 1;\n return v;\n};\n\n/**\n Reads a 32-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat32 = function(e) {\n var v = this._dataView.getFloat32(this.position, e == null ? this.endianness : e);\n this.position += 4;\n return v;\n};\n\n/**\n Reads a 64-bit float from the DataStream with the desired endianness.\n\n @param {?boolean} e Endianness of the number.\n @return {number} The read number.\n */\nDataStream.prototype.readFloat64 = function(e) {\n var v = this._dataView.getFloat64(this.position, e == null ? this.endianness : e);\n this.position += 8;\n return v;\n};\n\n/**\n Native endianness. Either DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN\n depending on the platform endianness.\n\n @type {boolean}\n */\nDataStream.endianness = new Int8Array(new Int16Array([1]).buffer)[0] > 0;\n\n/**\n Copies byteLength bytes from the src buffer at srcOffset to the\n dst buffer at dstOffset.\n\n @param {Object} dst Destination ArrayBuffer to write to.\n @param {number} dstOffset Offset to the destination ArrayBuffer.\n @param {Object} src Source ArrayBuffer to read from.\n @param {number} srcOffset Offset to the source ArrayBuffer.\n @param {number} byteLength Number of bytes to copy.\n */\nDataStream.memcpy = function(dst, dstOffset, src, srcOffset, byteLength) {\n var dstU8 = new Uint8Array(dst, dstOffset, byteLength);\n var srcU8 = new Uint8Array(src, srcOffset, byteLength);\n dstU8.set(srcU8);\n};\n\n/**\n Converts array to native endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} arrayIsLittleEndian True if the data in the array is\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.arrayToNative = function(array, arrayIsLittleEndian) {\n if (arrayIsLittleEndian == this.endianness) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Converts native endianness array to desired endianness in-place.\n\n @param {Object} array Typed array to convert.\n @param {boolean} littleEndian True if the converted array should be\n little-endian. Set false for big-endian.\n @return {Object} The converted typed array.\n */\nDataStream.nativeToEndian = function(array, littleEndian) {\n if (this.endianness == littleEndian) {\n return array;\n } else {\n return this.flipArrayEndianness(array);\n }\n};\n\n/**\n Flips typed array endianness in-place.\n\n @param {Object} array Typed array to flip.\n @return {Object} The converted typed array.\n */\nDataStream.flipArrayEndianness = function(array) {\n var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n for (var i=0; i<array.byteLength; i+=array.BYTES_PER_ELEMENT) {\n for (var j=i+array.BYTES_PER_ELEMENT-1, k=i; j>k; j--, k++) {\n var tmp = u8[k];\n u8[k] = u8[j];\n u8[j] = tmp;\n }\n }\n return array;\n};\n\n/**\n Seek position where DataStream#readStruct ran into a problem.\n Useful for debugging struct parsing.\n\n @type {number}\n */\nDataStream.prototype.failurePosition = 0;\n\nString.fromCharCodeUint8 = function(uint8arr) {\n var arr = [];\n for (var i = 0; i < uint8arr.length; i++) {\n arr[i] = uint8arr[i];\n }\n return String.fromCharCode.apply(null, arr);\n}\n/**\n Read a string of desired length and encoding from the DataStream.\n\n @param {number} length The length of the string to read in bytes.\n @param {?string} encoding The encoding of the string data in the DataStream.\n Defaults to ASCII.\n @return {string} The read string.\n */\nDataStream.prototype.readString = function(length, encoding) {\n if (encoding == null || encoding == \"ASCII\") {\n return String.fromCharCodeUint8.apply(null, [this.mapUint8Array(length == null ? this.byteLength-this.position : length)]);\n } else {\n return (new TextDecoder(encoding)).decode(this.mapUint8Array(length));\n }\n};\n\n/**\n Read null-terminated string of desired length from the DataStream. Truncates\n the returned string so that the null byte is not a part of it.\n\n @param {?number} length The length of the string to read.\n @return {string} The read string.\n */\nDataStream.prototype.readCString = function(length) {\n var blen = this.byteLength-this.position;\n var u8 = new Uint8Array(this._buffer, this._byteOffset + this.position);\n var len = blen;\n if (length != null) {\n len = Math.min(length, blen);\n }\n for (var i = 0; i < len && u8[i] !== 0; i++); // find first zero byte\n var s = String.fromCharCodeUint8.apply(null, [this.mapUint8Array(i)]);\n if (length != null) {\n this.position += len-i;\n } else if (i != blen) {\n this.position += 1; // trailing zero if not at end of buffer\n }\n return s;\n};\n\n/* \n TODO: fix endianness for 24/64-bit fields\n TODO: check range/support for 64-bits numbers in JavaScript\n*/\nvar MAX_SIZE = Math.pow(2, 32);\n\nDataStream.prototype.readInt64 = function () {\n return (this.readInt32()*MAX_SIZE)+this.readUint32();\n}\nDataStream.prototype.readUint64 = function () {\n\treturn (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readInt64 = function () {\n return (this.readUint32()*MAX_SIZE)+this.readUint32();\n}\n\nDataStream.prototype.readUint24 = function () {\n\treturn (this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8();\n}\n\nif (typeof exports !== 'undefined') {\n exports.DataStream = DataStream; \n}\n// file:src/DataStream-write.js\n/**\n Saves the DataStream contents to the given filename.\n Uses Chrome's anchor download property to initiate download.\n \n @param {string} filename Filename to save as.\n @return {null}\n */\nDataStream.prototype.save = function(filename) {\n var blob = new Blob([this.buffer]);\n if (window.URL && URL.createObjectURL) {\n var url = window.URL.createObjectURL(blob);\n var a = document.createElement('a');\n // Required in Firefox:\n document.body.appendChild(a);\n a.setAttribute('href', url);\n a.setAttribute('download', filename);\n // Required in Firefox:\n a.setAttribute('target', '_self');\n a.click();\n window.URL.revokeObjectURL(url);\n } else {\n throw(\"DataStream.save: Can't create object URL.\");\n }\n};\n\n/**\n Whether to extend DataStream buffer when trying to write beyond its size.\n If set, the buffer is reallocated to twice its current size until the\n requested write fits the buffer.\n @type {boolean}\n */\nDataStream.prototype._dynamicSize = true;\nObject.defineProperty(DataStream.prototype, 'dynamicSize',\n { get: function() {\n return this._dynamicSize;\n },\n set: function(v) {\n if (!v) {\n this._trimAlloc();\n }\n this._dynamicSize = v;\n } });\n\n/**\n Internal function to trim the DataStream buffer when required.\n Used for stripping out the first bytes when not needed anymore.\n\n @return {null}\n */\nDataStream.prototype.shift = function(offset) {\n var buf = new ArrayBuffer(this._byteLength-offset);\n var dst = new Uint8Array(buf);\n var src = new Uint8Array(this._buffer, offset, dst.length);\n dst.set(src);\n this.buffer = buf;\n this.position -= offset;\n};\n\n/**\n Writes an Int32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Int32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt32(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeInt16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Int16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt16(arr[i], e);\n }\n }\n};\n\n/**\n Writes an Int8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeInt8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Int8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapInt8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeInt8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Uint32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Uint32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint32(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint16Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeUint16Array = function(arr, e) {\n this._realloc(arr.length * 2);\n if (arr instanceof Uint16Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint16Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint16(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Uint8Array to the DataStream.\n\n @param {Object} arr The array to write.\n */\nDataStream.prototype.writeUint8Array = function(arr) {\n this._realloc(arr.length * 1);\n if (arr instanceof Uint8Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapUint8Array(arr.length);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeUint8(arr[i]);\n }\n }\n};\n\n/**\n Writes a Float64Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat64Array = function(arr, e) {\n this._realloc(arr.length * 8);\n if (arr instanceof Float64Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat64Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat64(arr[i], e);\n }\n }\n};\n\n/**\n Writes a Float32Array of specified endianness to the DataStream.\n\n @param {Object} arr The array to write.\n @param {?boolean} e Endianness of the data to write.\n */\nDataStream.prototype.writeFloat32Array = function(arr, e) {\n this._realloc(arr.length * 4);\n if (arr instanceof Float32Array &&\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT === 0) {\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\n arr.buffer, 0,\n arr.byteLength);\n this.mapFloat32Array(arr.length, e);\n } else {\n for (var i=0; i<arr.length; i++) {\n this.writeFloat32(arr[i], e);\n }\n }\n};\n\n\n/**\n Writes a 32-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt32 = function(v, e) {\n this._realloc(4);\n this._dataView.setInt32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeInt16 = function(v, e) {\n this._realloc(2);\n this._dataView.setInt16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeInt8 = function(v) {\n this._realloc(1);\n this._dataView.setInt8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint32 = function(v, e) {\n this._realloc(4);\n this._dataView.setUint32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 16-bit unsigned int to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeUint16 = function(v, e) {\n this._realloc(2);\n this._dataView.setUint16(this.position, v, e == null ? this.endianness : e);\n this.position += 2;\n};\n\n/**\n Writes an 8-bit unsigned int to the DataStream.\n\n @param {number} v Number to write.\n */\nDataStream.prototype.writeUint8 = function(v) {\n this._realloc(1);\n this._dataView.setUint8(this.position, v);\n this.position += 1;\n};\n\n/**\n Writes a 32-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat32 = function(v, e) {\n this._realloc(4);\n this._dataView.setFloat32(this.position, v, e == null ? this.endianness : e);\n this.position += 4;\n};\n\n/**\n Writes a 64-bit float to the DataStream with the desired endianness.\n\n @param {number} v Number to write.\n @param {?boolean} e Endianness of the number.\n */\nDataStream.prototype.writeFloat64 = function(v, e) {\n this._realloc(8);\n this._dataView.setFloat64(this.position, v, e == null ? this.endianness : e);\n this.position += 8;\n};\n\n/**\n Write a UCS-2 string of desired endianness to the DataStream. The\n lengthOverride argument lets you define the number of characters to write.\n If the string is shorter than lengthOverride, the extra space is padded with\n zeroes.\n\n @param {string} str The string to write.\n @param {?boolean} endianness The endianness to use for the written string data.\n @param {?number} lengthOverride The number of characters to write.\n */\nDataStream.prototype.writeUCS2String = function(str, endianness, lengthOverride) {\n if (lengthOverride == null) {\n lengthOverride = str.length;\n }\n for (var i = 0; i < str.length && i < lengthOverride; i++) {\n this.writeUint16(str.charCodeAt(i), endianness);\n }\n for (; i<lengthOverride; i++) {\n this.writeUint16(0);\n }\n};\n\n/**\n Writes a string of desired length and encoding to the DataStream.\n\n @param {string} s The string to write.\n @param {?string} encoding The encoding for the written string data.\n Defaults to ASCII.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeString = function(s, encoding, length) {\n var i = 0;\n if (encoding == null || encoding == \"ASCII\") {\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n }\n } else {\n this.writeUint8Array((new TextEncoder(encoding)).encode(s.substring(0, length)));\n }\n};\n\n/**\n Writes a null-terminated string to DataStream and zero-pads it to length\n bytes. If length is not given, writes the string followed by a zero.\n If string is longer than length, the written part of the string does not have\n a trailing zero.\n\n @param {string} s The string to write.\n @param {?number} length The number of characters to write.\n */\nDataStream.prototype.writeCString = function(s, length) {\n var i = 0;\n if (length != null) {\n var len = Math.min(s.length, length);\n for (i=0; i<len; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n for (; i<length; i++) {\n this.writeUint8(0);\n }\n } else {\n for (i=0; i<s.length; i++) {\n this.writeUint8(s.charCodeAt(i));\n }\n this.writeUint8(0);\n }\n};\n\n/**\n Writes a struct to the DataStream. Takes a structDefinition that gives the\n types and a struct object that gives the values. Refer to readStruct for the\n structure of structDefinition.\n\n @param {Object} structDefinition Type definition of the struct.\n @param {Object} struct The struct data object.\n */\nDataStream.prototype.writeStruct = function(structDefinition, struct) {\n for (var i = 0; i < structDefinition.length; i+=2) {\n var t = structDefinition[i+1];\n this.writeType(t, struct[structDefinition[i]], struct);\n }\n};\n\n/**\n Writes object v of type t to the DataStream.\n\n @param {Object} t Type of data to write.\n @param {Object} v Value of data to write.\n @param {Object} struct Struct to pass to write callback functions.\n */\nDataStream.prototype.writeType = function(t, v, struct) {\n var tp;\n if (typeof t == \"function\") {\n return t(this, v);\n } else if (typeof t == \"object\" && !(t instanceof Array)) {\n return t.set(this, v, struct);\n }\n var lengthOverride = null;\n var charset = \"ASCII\";\n var pos = this.position;\n if (typeof(t) == 'string' && /:/.test(t)) {\n tp = t.split(\":\");\n t = tp[0];\n lengthOverride = parseInt(tp[1]);\n }\n if (typeof t == 'string' && /,/.test(t)) {\n tp = t.split(\",\");\n t = tp[0];\n charset = parseInt(tp[1]);\n }\n\n switch(t) {\n case 'uint8':\n this.writeUint8(v);\n break;\n case 'int8':\n this.writeInt8(v);\n break;\n\n case 'uint16':\n this.writeUint16(v, this.endianness);\n break;\n case 'int16':\n this.writeInt16(v, this.endianness);\n break;\n case 'uint32':\n this.writeUint32(v, this.endianness);\n break;\n case 'int32':\n this.writeInt32(v, this.endianness);\n break;\n case 'float32':\n this.writeFloat32(v, this.endianness);\n break;\n case 'float64':\n this.writeFloat64(v, this.endianness);\n break;\n\n case 'uint16be':\n this.writeUint16(v, DataStream.BIG_ENDIAN);\n break;\n case 'int16be':\n this.writeInt16(v, DataStream.BIG_ENDIAN);\n break;\n case 'uint32be':\n this.writeUint32(v, DataStream.BIG_ENDIAN);\n break;\n case 'int32be':\n this.writeInt32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float32be':\n this.writeFloat32(v, DataStream.BIG_ENDIAN);\n break;\n case 'float64be':\n this.writeFloat64(v, DataStream.BIG_ENDIAN);\n break;\n\n case 'uint16le':\n this.writeUint16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int16le':\n this.writeInt16(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'uint32le':\n this.writeUint32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'int32le':\n this.writeInt32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float32le':\n this.writeFloat32(v, DataStream.LITTLE_ENDIAN);\n break;\n case 'float64le':\n this.writeFloat64(v, DataStream.LITTLE_ENDIAN);\n break;\n\n case 'cstring':\n this.writeCString(v, lengthOverride);\n break;\n\n case 'string':\n this.writeString(v, charset, lengthOverride);\n break;\n\n case 'u16string':\n this.writeUCS2String(v, this.endianness, lengthOverride);\n break;\n\n case 'u16stringle':\n this.writeUCS2String(v, DataStream.LITTLE_ENDIAN, lengthOverride);\n break;\n\n case 'u16stringbe':\n this.writeUCS2String(v, DataStream.BIG_ENDIAN, lengthOverride);\n break;\n\n default:\n if (t.length == 3) {\n var ta = t[1];\n for (var i=0; i<v.length; i++) {\n this.writeType(ta, v[i]);\n }\n break;\n } else {\n this.writeStruct(t, v);\n break;\n }\n }\n if (lengthOverride != null) {\n this.position = pos;\n this._realloc(lengthOverride);\n this.position = pos + lengthOverride;\n }\n};\n\n\nDataStream.prototype.writeUint64 = function (v) {\n\tvar h = Math.floor(v / MAX_SIZE);\n\tthis.writeUint32(h);\n\tthis.writeUint32(v & 0xFFFFFFFF);\n}\n\nDataStream.prototype.writeUint24 = function (v) {\n\tthis.writeUint8((v & 0x00FF0000)>>16);\n\tthis.writeUint8((v & 0x0000FF00)>>8);\n\tthis.writeUint8((v & 0x000000FF));\n}\n\nDataStream.prototype.adjustUint32 = function(position, value) {\n\tvar pos = this.position;\n\tthis.seek(position);\n\tthis.writeUint32(value);\n\tthis.seek(pos);\n}\n// file:src/DataStream-map.js\n/**\n Maps an Int32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Int32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps an Int16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Int16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps an Int8Array into the DataStream buffer.\n\n Nice for quickly reading in data.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Int8Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapInt8Array = function(length) {\n this._realloc(length * 1);\n var arr = new Int8Array(this._buffer, this.byteOffset+this.position, length);\n this.position += length * 1;\n return arr;\n};\n\n/**\n Maps a Uint32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Uint32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n\n/**\n Maps a Uint16Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Uint16Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapUint16Array = function(length, e) {\n this._realloc(length * 2);\n var arr = new Uint16Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 2;\n return arr;\n};\n\n/**\n Maps a Float64Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float64Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat64Array = function(length, e) {\n this._realloc(length * 8);\n var arr = new Float64Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 8;\n return arr;\n};\n\n/**\n Maps a Float32Array into the DataStream buffer, swizzling it to native\n endianness in-place. The current offset from the start of the buffer needs to\n be a multiple of element size, just like with typed array views.\n\n Nice for quickly reading in data. Warning: potentially modifies the buffer\n contents.\n\n @param {number} length Number of elements to map.\n @param {?boolean} e Endianness of the data to read.\n @return {Object} Float32Array to the DataStream backing buffer.\n */\nDataStream.prototype.mapFloat32Array = function(length, e) {\n this._realloc(length * 4);\n var arr = new Float32Array(this._buffer, this.byteOffset+this.position, length);\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\n this.position += length * 4;\n return arr;\n};\n// file:src/buffer.js\n/**\n * MultiBufferStream is a class that acts as a SimpleStream for parsing \n * It holds several, possibly non-contiguous ArrayBuffer objects, each with a fileStart property \n * containing the offset for the buffer data in an original/virtual file \n *\n * It inherits also from DataStream for all read/write/alloc operations\n */\n\n/**\n * Constructor\n */\nvar MultiBufferStream = function(buffer) {\n\t/* List of ArrayBuffers, with a fileStart property, sorted in fileStart order and non overlapping */\n\tthis.buffers = [];\t\n\tthis.bufferIndex = -1;\n\tif (buffer) {\n\t\tthis.insertBuffer(buffer);\n\t\tthis.bufferIndex = 0;\n\t}\n}\nMultiBufferStream.prototype = new DataStream(new ArrayBuffer(), 0, DataStream.BIG_ENDIAN);\n\n/************************************************************************************\n Methods for the managnement of the buffers (insertion, removal, concatenation, ...)\n ***********************************************************************************/\n\nMultiBufferStream.prototype.initialized = function() {\n\tvar firstBuffer;\n\tif (this.bufferIndex > -1) {\n\t\treturn true;\n\t} else if (this.buffers.length > 0) {\n\t\tfirstBuffer = this.buffers[0];\n\t\tif (firstBuffer.fileStart === 0) {\n\t\t\tthis.buffer = firstBuffer;\n\t\t\tthis.bufferIndex = 0;\n\t\t\tLog.debug(\"MultiBufferStream\", \"Stream ready for parsing\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\tLog.warn(\"MultiBufferStream\", \"The first buffer should have a fileStart of 0\");\n\t\t\tthis.logBufferLevel();\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tLog.warn(\"MultiBufferStream\", \"No buffer to start parsing from\");\n\t\tthis.logBufferLevel();\n\t\treturn false;\n\t}\t\t\t\n}\n\n/**\n * helper functions to concatenate two ArrayBuffer objects\n * @param {ArrayBuffer} buffer1 \n * @param {ArrayBuffer} buffer2 \n * @return {ArrayBuffer} the concatenation of buffer1 and buffer2 in that order\n */\nArrayBuffer.concat = function(buffer1, buffer2) {\n Log.debug(\"ArrayBuffer\", \"Trying to create a new buffer of size: \"+(buffer1.byteLength + buffer2.byteLength));\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n};\n\n/**\n * Reduces the size of a given buffer, but taking the part between offset and offset+newlength\n * @param {ArrayBuffer} buffer \n * @param {Number} offset the start of new buffer\n * @param {Number} newLength the length of the new buffer\n * @return {ArrayBuffer} the new buffer\n */\nMultiBufferStream.prototype.reduceBuffer = function(buffer, offset, newLength) {\n\tvar smallB;\n\tsmallB = new Uint8Array(newLength);\n\tsmallB.set(new Uint8Array(buffer, offset, newLength));\n\tsmallB.buffer.fileStart = buffer.fileStart+offset;\n\tsmallB.buffer.usedBytes = 0;\n\treturn smallB.buffer;\t\n}\n\n/**\n * Inserts the new buffer in the sorted list of buffers,\n * making sure, it is not overlapping with existing ones (possibly reducing its size).\n * if the new buffer overrides/replaces the 0-th buffer (for instance because it is bigger), \n * updates the DataStream buffer for parsing \n*/\nMultiBufferStream.prototype.insertBuffer = function(ab) {\t\n\tvar to_add = true;\n\t/* TODO: improve insertion if many buffers */\n\tfor (var i = 0; i < this.buffers.length; i++) {\n\t\tvar b = this.buffers[i];\n\t\tif (ab.fileStart <= b.fileStart) {\n\t\t\t/* the insertion position is found */\n\t\t\tif (ab.fileStart === b.fileStart) {\n\t\t\t\t/* The new buffer overlaps with an existing buffer */\n\t\t\t\tif (ab.byteLength > b.byteLength) {\n\t\t\t\t\t/* the new buffer is bigger than the existing one\n\t\t\t\t\t remove the existing buffer and try again to insert \n\t\t\t\t\t the new buffer to check overlap with the next ones */\n\t\t\t\t\tthis.buffers.splice(i, 1);\n\t\t\t\t\ti--; \n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\t/* the new buffer is smaller than the existing one, just drop it */\n\t\t\t\t\tLog.warn(\"MultiBufferStream\", \"Buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\") already appended, ignoring\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t/* The beginning of the new buffer is not overlapping with an existing buffer\n\t\t\t\t let's check the end of it */\n\t\t\t\tif (ab.fileStart + ab.byteLength <= b.fileStart) {\n\t\t\t\t\t/* no overlap, we can add it as is */\n\t\t\t\t} else {\n\t\t\t\t\t/* There is some overlap, cut the new buffer short, and add it*/\n\t\t\t\t\tab = this.reduceBuffer(ab, 0, b.fileStart - ab.fileStart);\n\t\t\t\t}\n\t\t\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\t\t\tthis.buffers.splice(i, 0, ab);\n\t\t\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tthis.buffer = ab;\n\t\t\t\t}\n\t\t\t}\n\t\t\tto_add = false;\n\t\t\tbreak;\n\t\t} else if (ab.fileStart < b.fileStart + b.byteLength) {\n\t\t\t/* the new buffer overlaps its beginning with the end of the current buffer */\n\t\t\tvar offset = b.fileStart + b.byteLength - ab.fileStart;\n\t\t\tvar newLength = ab.byteLength - offset;\n\t\t\tif (newLength > 0) {\n\t\t\t\t/* the new buffer is bigger than the current overlap, drop the overlapping part and try again inserting the remaining buffer */\n\t\t\t\tab = this.reduceBuffer(ab, offset, newLength);\n\t\t\t} else {\n\t\t\t\t/* the content of the new buffer is entirely contained in the existing buffer, drop it entirely */\n\t\t\t\tto_add = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* if the buffer has not been added, we can add it at the end */\n\tif (to_add) {\n\t\tLog.debug(\"MultiBufferStream\", \"Appending new buffer (fileStart: \"+ab.fileStart+\" - Length: \"+ab.byteLength+\")\");\n\t\tthis.buffers.push(ab);\n\t\t/* if this new buffer is inserted in the first place in the list of the buffer, \n\t\t and the DataStream is initialized, make it the buffer used for parsing */\n\t\tif (i === 0) {\n\t\t\tthis.buffer = ab;\n\t\t}\n\t}\n}\n\n/**\n * Displays the status of the buffers (number and used bytes)\n * @param {Object} info callback method for display\n */\nMultiBufferStream.prototype.logBufferLevel = function(info) {\n\tvar i;\n\tvar buffer;\n\tvar used, total;\n\tvar ranges = [];\n\tvar range;\n\tvar bufferedString = \"\";\n\tused = 0;\n\ttotal = 0;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (i === 0) {\n\t\t\trange = {};\n\t\t\tranges.push(range);\n\t\t\trange.start = buffer.fileStart;\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tbufferedString += \"[\"+range.start+\"-\";\n\t\t} else if (range.end === buffer.fileStart) {\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t} else {\n\t\t\trange = {};\n\t\t\trange.start = buffer.fileStart;\n\t\t\tbufferedString += (ranges[ranges.length-1].end-1)+\"], [\"+range.start+\"-\";\n\t\t\trange.end = buffer.fileStart+buffer.byteLength;\n\t\t\tranges.push(range);\n\t\t}\n\t\tused += buffer.usedBytes;\n\t\ttotal += buffer.byteLength;\n\t}\n\tif (ranges.length > 0) {\n\t\tbufferedString += (range.end-1)+\"]\";\n\t}\n\tvar log = (info ? Log.info : Log.debug)\n\tif (this.buffers.length === 0) {\n\t\tlog(\"MultiBufferStream\", \"No more buffer in memory\");\n\t} else {\n\t\tlog(\"MultiBufferStream\", \"\"+this.buffers.length+\" stored buffer(s) (\"+used+\"/\"+total+\" bytes), continuous ranges: \"+bufferedString);\n\t}\n}\n\nMultiBufferStream.prototype.cleanBuffers = function () {\n\tvar i;\n\tvar buffer;\n\tfor (i = 0; i < this.buffers.length; i++) {\n\t\tbuffer = this.buffers[i];\n\t\tif (buffer.usedBytes === buffer.byteLength) {\n\t\t\tLog.debug(\"MultiBufferStream\", \"Removing buffer #\"+i);\n\t\t\tthis.buffers.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n}\n\nMultiBufferStream.prototype.mergeNextBuffer = function() {\n\tvar next_buffer;\n\tif (this.bufferIndex+1 < this.buffers.length) {\n\t\tnext_buffer = this.buffers[this.bufferIndex+1];\n\t\tif (next_buffer.fileStart === this.buffer.fileStart + this.buffer.byteLength) {\n\t\t\tvar oldLength = this.buffer.byteLength;\n\t\t\tvar oldUsedBytes = this.buffer.usedBytes;\n\t\t\tvar oldFileStart = this.buffer.fileStart;\n\t\t\tthis.buffers[this.bufferIndex] = ArrayBuffer.concat(this.buffer, next_buffer);\n\t\t\tthis.buffer = this.buffers[this.bufferIndex];\n\t\t\tthis.buffers.splice(this.bufferIndex+1, 1);\n\t\t\tthis.buffer.usedBytes = oldUsedBytes; /* TODO: should it be += ? */\n\t\t\tthis.buffer.fileStart = oldFileStart;\n\t\t\tLog.debug(\"ISOFile\", \"Concatenating buffer for box parsing (length: \"+oldLength+\"->\"+this.buffer.byteLength+\")\");\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\n\n/*************************************************************************\n Seek-related functions\n *************************************************************************/\n\n/**\n * Finds the buffer that holds the given file position\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Number} the index of the buffer holding the seeked file position, -1 if not found.\n */\nMultiBufferStream.prototype.findPosition = function(fromStart, filePosition, markAsUsed) {\n\tvar i;\n\tvar abuffer = null;\n\tvar index = -1;\n\n\t/* find the buffer with the largest position smaller than the given position */\n\tif (fromStart === true) {\n\t /* the reposition can be in the past, we need to check from the beginning of the list of buffers */\n\t\ti = 0;\n\t} else {\n\t\ti = this.bufferIndex;\n\t}\n\n\twhile (i < this.buffers.length) {\n\t\tabuffer = this.buffers[i];\n\t\tif (abuffer.fileStart <= filePosition) {\n\t\t\tindex = i;\n\t\t\tif (markAsUsed) {\n\t\t\t\tif (abuffer.fileStart + abuffer.byteLength <= filePosition) {\n\t\t\t\t\tabuffer.usedBytes = abuffer.byteLength;\t\n\t\t\t\t} else {\n\t\t\t\t\tabuffer.usedBytes = filePosition - abuffer.fileStart;\n\t\t\t\t}\t\t\n\t\t\t\tthis.logBufferLevel();\t\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t\ti++;\n\t}\n\n\tif (index !== -1) {\n\t\tabuffer = this.buffers[index];\n\t\tif (abuffer.fileStart + abuffer.byteLength >= filePosition) {\t\t\t\n\t\t\tLog.debug(\"MultiBufferStream\", \"Found position in existing buffer #\"+index);\n\t\t\treturn index;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t} else {\n\t\treturn -1;\n\t}\n}\n\n/**\n * Finds the largest file position contained in a buffer or in the next buffers if they are contiguous (no gap)\n * starting from the given buffer index or from the current buffer if the index is not given\n *\n * @param {Number} inputindex Index of the buffer to start from\n * @return {Number} The largest file position found in the buffers\n */\nMultiBufferStream.prototype.findEndContiguousBuf = function(inputindex) {\n\tvar i;\n\tvar currentBuf;\n\tvar nextBuf;\n\tvar index = (inputindex !== undefined ? inputindex : this.bufferIndex);\n\tcurrentBuf = this.buffers[index];\n\t/* find the end of the contiguous range of data */\n\tif (this.buffers.length > index+1) {\n\t\tfor (i = index+1; i < this.buffers.length; i++) {\n\t\t\tnextBuf = this.buffers[i];\n\t\t\tif (nextBuf.fileStart === currentBuf.fileStart + currentBuf.byteLength) {\n\t\t\t\tcurrentBuf = nextBuf;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t/* return the position of last byte in the file that we have */\n\treturn currentBuf.fileStart + currentBuf.byteLength;\n}\n\n/**\n * Returns the largest file position contained in the buffers, larger than the given position\n * @param {Number} pos the file position to start from\n * @return {Number} the largest position in the current buffer or in the buffer and the next contiguous \n * buffer that holds the given position\n */\nMultiBufferStream.prototype.getEndFilePositionAfter = function(pos) {\n\tvar index = this.findPosition(true, pos, false);\n\tif (index !== -1) {\n\t\treturn this.findEndContiguousBuf(index);\n\t} else {\n\t\treturn pos;\n\t}\n}\n\n/*************************************************************************\n Garbage collection related functions\n *************************************************************************/\n\n/**\n * Marks a given number of bytes as used in the current buffer for garbage collection\n * @param {Number} nbBytes \n */\nMultiBufferStream.prototype.addUsedBytes = function(nbBytes) {\n\tthis.buffer.usedBytes += nbBytes;\n\tthis.logBufferLevel();\n}\n\n/**\n * Marks the entire current buffer as used, ready for garbage collection\n */\nMultiBufferStream.prototype.setAllUsedBytes = function() {\n\tthis.buffer.usedBytes = this.buffer.byteLength;\n\tthis.logBufferLevel();\n}\n\n/*************************************************************************\n Common API between MultiBufferStream and SimpleStream\n *************************************************************************/\n\n/**\n * Tries to seek to a given file position\n * if possible, repositions the parsing from there and returns true \n * if not possible, does not change anything and returns false \n * @param {Number} filePosition position in the file to seek to\n * @param {Boolean} fromStart indicates if the search should start from the current buffer (false) \n * or from the first buffer (true)\n * @param {Boolean} markAsUsed indicates if the bytes in between the current position and the seek position \n * should be marked as used for garbage collection\n * @return {Boolean} true if the seek succeeded, false otherwise\n */\nMultiBufferStream.prototype.seek = function(filePosition, fromStart, markAsUsed) {\n\tvar index;\n\tindex = this.findPosition(fromStart, filePosition, markAsUsed);\n\tif (index !== -1) {\n\t\tthis.buffer = this.buffers[index];\n\t\tthis.bufferIndex = index;\n\t\tthis.position = filePosition - this.buffer.fileStart;\n\t\tLog.debug(\"MultiBufferStream\", \"Repositioning parser at buffer position: \"+this.position);\n\t\treturn true;\n\t} else {\n\t\tLog.debug(\"MultiBufferStream\", \"Position \"+filePosition+\" not found in buffered data\");\n\t\treturn false;\n\t}\n}\n\n/**\n * Returns the current position in the file\n * @return {Number} the position in the file\n */\nMultiBufferStream.prototype.getPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.position;\n}\n\n/**\n * Returns the length of the current buffer\n * @return {Number} the length of the current buffer\n */\nMultiBufferStream.prototype.getLength = function() {\n\treturn this.byteLength;\n}\n\nMultiBufferStream.prototype.getEndPosition = function() {\n\tif (this.bufferIndex === -1 || this.buffers[this.bufferIndex] === null) {\n\t\tthrow \"Error accessing position in the MultiBufferStream\";\n\t}\n\treturn this.buffers[this.bufferIndex].fileStart+this.byteLength;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MultiBufferStream = MultiBufferStream;\n}// file:src/descriptor.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MPEG4DescriptorParser = function () {\n\tvar ES_DescrTag \t\t\t= 0x03;\n\tvar DecoderConfigDescrTag \t= 0x04;\n\tvar DecSpecificInfoTag \t\t= 0x05;\n\tvar SLConfigDescrTag \t\t= 0x06;\n\n\tvar descTagToName = [];\n\tdescTagToName[ES_DescrTag] \t\t\t\t= \"ES_Descriptor\";\n\tdescTagToName[DecoderConfigDescrTag] \t= \"DecoderConfigDescriptor\";\n\tdescTagToName[DecSpecificInfoTag] \t\t= \"DecoderSpecificInfo\";\n\tdescTagToName[SLConfigDescrTag] \t\t= \"SLConfigDescriptor\";\n\n\tthis.getDescriptorName = function(tag) {\n\t\treturn descTagToName[tag];\n\t}\n\n\tvar that = this;\n\tvar classes = {};\n\n\tthis.parseOneDescriptor = function (stream) {\n\t\tvar hdrSize = 0;\n\t\tvar size = 0;\n\t\tvar tag;\n\t\tvar desc;\n\t\tvar byteRead;\n\t\ttag = stream.readUint8();\n\t\thdrSize++;\n\t\tbyteRead = stream.readUint8();\n\t\thdrSize++;\n\t\twhile (byteRead & 0x80) {\n\t\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\t\tbyteRead = stream.readUint8();\n\t\t\thdrSize++;\n\t\t}\n\t\tsize = (size << 7) + (byteRead & 0x7F);\n\t\tLog.debug(\"MPEG4DescriptorParser\", \"Found \"+(descTagToName[tag] || \"Descriptor \"+tag)+\", size \"+size+\" at position \"+stream.getPosition());\n\t\tif (descTagToName[tag]) {\n\t\t\tdesc = new classes[descTagToName[tag]](size);\n\t\t} else {\n\t\t\tdesc = new classes.Descriptor(size);\n\t\t}\n\t\tdesc.parse(stream);\n\t\treturn desc;\n\t}\n\n\tclasses.Descriptor = function(_tag, _size) {\n\t\tthis.tag = _tag;\n\t\tthis.size = _size;\n\t\tthis.descs = [];\n\t}\n\n\tclasses.Descriptor.prototype.parse = function (stream) {\n\t\tthis.data = stream.readUint8Array(this.size);\n\t}\n\n\tclasses.Descriptor.prototype.findDescriptor = function (tag) {\n\t\tfor (var i = 0; i < this.descs.length; i++) {\n\t\t\tif (this.descs[i].tag == tag) {\n\t\t\t\treturn this.descs[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tclasses.Descriptor.prototype.parseRemainingDescriptors = function (stream) {\n\t\tvar start = stream.position;\n\t\twhile (stream.position < start+this.size) {\n\t\t\tvar desc = that.parseOneDescriptor(stream);\n\t\t\tthis.descs.push(desc);\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor = function (size) {\n\t\tclasses.Descriptor.call(this, ES_DescrTag, size);\n\t}\n\n\tclasses.ES_Descriptor.prototype = new classes.Descriptor();\n\n\tclasses.ES_Descriptor.prototype.parse = function(stream) {\n\t\tthis.ES_ID = stream.readUint16();\n\t\tthis.flags = stream.readUint8();\n\t\tthis.size -= 3;\n\t\tif (this.flags & 0x80) {\n\t\t\tthis.dependsOn_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.dependsOn_ES_ID = 0;\n\t\t}\n\t\tif (this.flags & 0x40) {\n\t\t\tvar l = stream.readUint8();\n\t\t\tthis.URL = stream.readString(l);\n\t\t\tthis.size -= l+1;\n\t\t} else {\n\t\t\tthis.URL = \"\";\n\t\t}\n\t\tif (this.flags & 0x20) {\n\t\t\tthis.OCR_ES_ID = stream.readUint16();\n\t\t\tthis.size -= 2;\n\t\t} else {\n\t\t\tthis.OCR_ES_ID = 0;\n\t\t}\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.ES_Descriptor.prototype.getOTI = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (dcd) {\n\t\t\treturn dcd.oti;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tclasses.ES_Descriptor.prototype.getAudioConfig = function(stream) {\n\t\tvar dcd = this.findDescriptor(DecoderConfigDescrTag);\n\t\tif (!dcd) return null;\n\t\tvar dsi = dcd.findDescriptor(DecSpecificInfoTag);\n\t\tif (dsi && dsi.data) {\n\t\t\tvar audioObjectType = (dsi.data[0]& 0xF8) >> 3;\n\t\t\tif (audioObjectType === 31 && dsi.data.length >= 2) {\n\t\t\t\taudioObjectType = 32 + ((dsi.data[0] & 0x7) << 3) + ((dsi.data[1] & 0xE0) >> 5);\n\t\t\t}\n\t\t\treturn audioObjectType;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclasses.DecoderConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, DecoderConfigDescrTag, size);\n\t}\n\tclasses.DecoderConfigDescriptor.prototype = new classes.Descriptor();\n\n\tclasses.DecoderConfigDescriptor.prototype.parse = function(stream) {\n\t\tthis.oti = stream.readUint8();\n\t\tthis.streamType = stream.readUint8();\n\t\tthis.upStream = ((this.streamType >> 1) & 1) !== 0;\n\t\tthis.streamType = this.streamType >>> 2;\n\t\tthis.bufferSize = stream.readUint24();\n\t\tthis.maxBitrate = stream.readUint32();\n\t\tthis.avgBitrate = stream.readUint32();\n\t\tthis.size -= 13;\n\t\tthis.parseRemainingDescriptors(stream);\n\t}\n\n\tclasses.DecoderSpecificInfo = function (size) {\n\t\tclasses.Descriptor.call(this, DecSpecificInfoTag, size);\n\t}\n\tclasses.DecoderSpecificInfo.prototype = new classes.Descriptor();\n\n\tclasses.SLConfigDescriptor = function (size) {\n\t\tclasses.Descriptor.call(this, SLConfigDescrTag, size);\n\t}\n\tclasses.SLConfigDescriptor.prototype = new classes.Descriptor();\n\n\treturn this;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.MPEG4DescriptorParser = MPEG4DescriptorParser;\n}\n// file:src/box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar BoxParser = {\n\tERR_INVALID_DATA : -1,\n\tERR_NOT_ENOUGH_DATA : 0,\n\tOK : 1,\n\n\t// Boxes to be created with default parsing\n\tBASIC_BOXES: [\n\t\t{type: \"mdat\", name: \"MediaDataBox\"},\n\t\t{type: \"idat\", name: \"ItemDataBox\"},\n\t\t{type: \"free\", name: \"FreeSpaceBox\"},\n\t\t{type: \"skip\", name: \"FreeSpaceBox\"},\n\t\t{type: \"meco\", name: \"AdditionalMetadataContainerBox\"},\n\t\t{type: \"strk\", name: \"SubTrackBox\"}\n\t],\n\tFULL_BOXES: [\n\t\t{type: \"hmhd\", name: \"HintMediaHeaderBox\"},\n\t\t{type: \"nmhd\", name: \"NullMediaHeaderBox\"},\n\t\t{type: \"iods\", name: \"ObjectDescriptorBox\"},\n\t\t{type: \"xml \", name: \"XMLBox\"},\n\t\t{type: \"bxml\", name: \"BinaryXMLBox\"},\n\t\t{type: \"ipro\", name: \"ItemProtectionBox\"},\n\t\t{type: \"mere\", name: \"MetaboxRelationBox\"}\n\t],\n\tCONTAINER_BOXES: [\n\t\t[{type: \"moov\", name: \"CompressedMovieBox\"}, [\"trak\", \"pssh\"]],\n\t\t[{type: \"trak\", name: \"TrackBox\"}],\n\t\t[{type: \"edts\", name: \"EditBox\"}],\n\t\t[{type: \"mdia\", name: \"MediaBox\"}],\n\t\t[{type: \"minf\", name: \"MediaInformationBox\"}],\n\t\t[{type: \"dinf\", name: \"DataInformationBox\"}],\n\t\t[{type: \"stbl\", name: \"SampleTableBox\"}, [\"sgpd\", \"sbgp\"]],\n\t\t[{type: \"mvex\", name: \"MovieExtendsBox\"}, [\"trex\"]],\n\t\t[{type: \"moof\", name: \"CompressedMovieFragmentBox\"}, [\"traf\"]],\n\t\t[{type: \"traf\", name: \"TrackFragmentBox\"}, [\"trun\", \"sgpd\", \"sbgp\"]],\n\t\t[{type: \"vttc\", name: \"VTTCueBox\"}],\n\t\t[{type: \"tref\", name: \"TrackReferenceBox\"}],\n\t\t[{type: \"iref\", name: \"ItemReferenceBox\"}],\n\t\t[{type: \"mfra\", name: \"MovieFragmentRandomAccessBox\"}, [\"tfra\"]],\n\t\t[{type: \"meco\", name: \"AdditionalMetadataContainerBox\"}],\n\t\t[{type: \"hnti\", name: \"trackhintinformation\"}],\n\t\t[{type: \"hinf\", name: \"hintstatisticsbox\"}],\n\t\t[{type: \"strk\", name: \"SubTrackBox\"}],\n\t\t[{type: \"strd\", name: \"SubTrackDefinitionBox\"}],\n\t\t[{type: \"sinf\", name: \"ProtectionSchemeInfoBox\"}],\n\t\t[{type: \"rinf\", name: \"RestrictedSchemeInfoBox\"}],\n\t\t[{type: \"schi\", name: \"SchemeInformationBox\"}],\n\t\t[{type: \"trgr\", name: \"TrackGroupBox\"}],\n\t\t[{type: \"udta\", name: \"UserDataBox\"}, [\"kind\"]],\n\t\t[{type: \"iprp\", name: \"ItemPropertiesBox\"}, [\"ipma\"]],\n\t\t[{type: \"ipco\", name: \"ItemPropertyContainerBox\"}],\n\t\t[{type: \"grpl\", name: \"GroupsListBox\"}],\n\t\t[{type: \"j2kH\", name: \"J2KHeaderInfoBox\"}],\n\t\t[{type: \"etyp\", name: \"ExtendedTypeBox\"}, [\"tyco\"]]\n\t],\n\t// Boxes effectively created\n\tboxCodes : [],\n\tfullBoxCodes : [],\n\tcontainerBoxCodes : [],\n\tsampleEntryCodes : {},\n\tsampleGroupEntryCodes: [],\n\ttrackGroupTypes: [],\n\tUUIDBoxes: {},\n\tUUIDs: [],\n\tinitialize: function() {\n\t\tBoxParser.FullBox.prototype = new BoxParser.Box();\n\t\tBoxParser.ContainerBox.prototype = new BoxParser.Box();\n\t\tBoxParser.SampleEntry.prototype = new BoxParser.Box();\n\t\tBoxParser.TrackGroupTypeBox.prototype = new BoxParser.FullBox();\n\n\t\t/* creating constructors for simple boxes */\n\t\tBoxParser.BASIC_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createBoxCtor(box.type, box.name)\n\t\t});\n\t\tBoxParser.FULL_BOXES.forEach(function(box) {\n\t\t\tBoxParser.createFullBoxCtor(box.type, box.name);\n\t\t});\n\t\tBoxParser.CONTAINER_BOXES.forEach(function(boxes) {\n\t\t\tBoxParser.createContainerBoxCtor(boxes[0].type, boxes[0].name, null, boxes[1]);\n\t\t});\n\t},\n\tBox: function(_type, _size, _name, _uuid) {\n\t\tthis.type = _type;\n\t\tthis.box_name = _name;\n\t\tthis.size = _size;\n\t\tthis.uuid = _uuid;\n\t},\n\tFullBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.flags = 0;\n\t\tthis.version = 0;\n\t},\n\tContainerBox: function(type, size, name, uuid) {\n\t\tBoxParser.Box.call(this, type, size, name, uuid);\n\t\tthis.boxes = [];\n\t},\n\tSampleEntry: function(type, size, hdr_size, start) {\n\t\tBoxParser.ContainerBox.call(this, type, size);\n\t\tthis.hdr_size = hdr_size;\n\t\tthis.start = start;\n\t},\n\tSampleGroupEntry: function(type) {\n\t\tthis.grouping_type = type;\n\t},\n\tTrackGroupTypeBox: function(type, size) {\n\t\tBoxParser.FullBox.call(this, type, size);\n\t},\n\tcreateBoxCtor: function(type, name, parseMethod){\n\t\tBoxParser.boxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.Box.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.Box();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateFullBoxCtor: function(type, name, parseMethod) {\n\t\t//BoxParser.fullBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.FullBox.call(this, type, size, name);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n\t\tBoxParser[type+\"Box\"].prototype.parse = function(stream) {\n\t\t\tthis.parseFullHeader(stream);\n\t\t\tif (parseMethod) {\n\t\t\t\tparseMethod.call(this, stream);\n\t\t\t}\n\t\t};\n\t},\n\taddSubBoxArrays: function(subBoxNames) {\n\t\tif (subBoxNames) {\n\t\t\tthis.subBoxNames = subBoxNames;\n\t\t\tvar nbSubBoxes = subBoxNames.length;\n\t\t\tfor (var k = 0; k<nbSubBoxes; k++) {\n\t\t\t\tthis[subBoxNames[k]+\"s\"] = [];\n\t\t\t}\n\t\t}\n\t},\n\tcreateContainerBoxCtor: function(type, name, parseMethod, subBoxNames) {\n\t\t//BoxParser.containerBoxCodes.push(type);\n\t\tBoxParser[type+\"Box\"] = function(size) {\n\t\t\tBoxParser.ContainerBox.call(this, type, size, name);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t}\n\t\tBoxParser[type+\"Box\"].prototype = new BoxParser.ContainerBox();\n\t\tif (parseMethod) BoxParser[type+\"Box\"].prototype.parse = parseMethod;\n\t},\n\tcreateMediaSampleEntryCtor: function(mediaType, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType] = [];\n\t\tBoxParser[mediaType+\"SampleEntry\"] = function(type, size) {\n\t\t\tBoxParser.SampleEntry.call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[mediaType+\"SampleEntry\"].prototype = new BoxParser.SampleEntry();\n\t\tif (parseMethod) BoxParser[mediaType+\"SampleEntry\"].prototype .parse = parseMethod;\n\t},\n\tcreateSampleEntryCtor: function(mediaType, type, parseMethod, subBoxNames) {\n\t\tBoxParser.sampleEntryCodes[mediaType].push(type);\n\t\tBoxParser[type+\"SampleEntry\"] = function(size) {\n\t\t\tBoxParser[mediaType+\"SampleEntry\"].call(this, type, size);\n\t\t\tBoxParser.addSubBoxArrays.call(this, subBoxNames);\n\t\t};\n\t\tBoxParser[type+\"SampleEntry\"].prototype = new BoxParser[mediaType+\"SampleEntry\"]();\n\t\tif (parseMethod) BoxParser[type+\"SampleEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateEncryptedSampleEntryCtor: function(mediaType, type, parseMethod) {\n\t\tBoxParser.createSampleEntryCtor.call(this, mediaType, type, parseMethod, [\"sinf\"]);\n\t},\n\tcreateSampleGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.sampleGroupEntryCodes.push(type);\n\t\tBoxParser[type+\"SampleGroupEntry\"] = function(size) {\n\t\t\tBoxParser.SampleGroupEntry.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"SampleGroupEntry\"].prototype = new BoxParser.SampleGroupEntry();\n\t\tif (parseMethod) BoxParser[type+\"SampleGroupEntry\"].prototype.parse = parseMethod;\n\t},\n\tcreateTrackGroupCtor: function(type, parseMethod) {\n\t\t//BoxParser.trackGroupTypes.push(type);\n\t\tBoxParser[type+\"TrackGroupTypeBox\"] = function(size) {\n\t\t\tBoxParser.TrackGroupTypeBox.call(this, type, size);\n\t\t}\n\t\tBoxParser[type+\"TrackGroupTypeBox\"].prototype = new BoxParser.TrackGroupTypeBox();\n\t\tif (parseMethod) BoxParser[type+\"TrackGroupTypeBox\"].prototype.parse = parseMethod;\n\t},\n\tcreateUUIDBox: function(uuid, name, isFullBox, isContainerBox, parseMethod) {\n\t\tBoxParser.UUIDs.push(uuid);\n\t\tBoxParser.UUIDBoxes[uuid] = function(size) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.FullBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t} else {\n\t\t\t\tif (isContainerBox) {\n\t\t\t\t\tBoxParser.ContainerBox.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t} else {\n\t\t\t\t\tBoxParser.Box.call(this, \"uuid\", size, name, uuid);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tBoxParser.UUIDBoxes[uuid].prototype = (isFullBox ? new BoxParser.FullBox() : (isContainerBox ? new BoxParser.ContainerBox() : new BoxParser.Box()));\n\t\tif (parseMethod) {\n\t\t\tif (isFullBox) {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = function(stream) {\n\t\t\t\t\tthis.parseFullHeader(stream);\n\t\t\t\t\tif (parseMethod) {\n\t\t\t\t\t\tparseMethod.call(this, stream);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tBoxParser.UUIDBoxes[uuid].prototype.parse = parseMethod;\n\t\t\t}\n\t\t}\n\t}\n}\n\nBoxParser.initialize();\n\nBoxParser.TKHD_FLAG_ENABLED = 0x000001;\nBoxParser.TKHD_FLAG_IN_MOVIE = 0x000002;\nBoxParser.TKHD_FLAG_IN_PREVIEW = 0x000004;\n\nBoxParser.TFHD_FLAG_BASE_DATA_OFFSET\t= 0x01;\nBoxParser.TFHD_FLAG_SAMPLE_DESC\t\t\t= 0x02;\nBoxParser.TFHD_FLAG_SAMPLE_DUR\t\t\t= 0x08;\nBoxParser.TFHD_FLAG_SAMPLE_SIZE\t\t\t= 0x10;\nBoxParser.TFHD_FLAG_SAMPLE_FLAGS\t\t= 0x20;\nBoxParser.TFHD_FLAG_DUR_EMPTY\t\t\t= 0x10000;\nBoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF= 0x20000;\n\nBoxParser.TRUN_FLAGS_DATA_OFFSET= 0x01;\nBoxParser.TRUN_FLAGS_FIRST_FLAG\t= 0x04;\nBoxParser.TRUN_FLAGS_DURATION\t= 0x100;\nBoxParser.TRUN_FLAGS_SIZE\t\t= 0x200;\nBoxParser.TRUN_FLAGS_FLAGS\t\t= 0x400;\nBoxParser.TRUN_FLAGS_CTS_OFFSET\t= 0x800;\n\nBoxParser.Box.prototype.add = function(name) {\n\treturn this.addBox(new BoxParser[name+\"Box\"]());\n}\n\nBoxParser.Box.prototype.addBox = function(box) {\n\tthis.boxes.push(box);\n\tif (this[box.type+\"s\"]) {\n\t\tthis[box.type+\"s\"].push(box);\n\t} else {\n\t\tthis[box.type] = box;\n\t}\n\treturn box;\n}\n\nBoxParser.Box.prototype.set = function(prop, value) {\n\tthis[prop] = value;\n\treturn this;\n}\n\nBoxParser.Box.prototype.addEntry = function(value, _prop) {\n\tvar prop = _prop || \"entries\";\n\tif (!this[prop]) {\n\t\tthis[prop] = [];\n\t}\n\tthis[prop].push(value);\n\treturn this;\n}\n\nif (typeof exports !== \"undefined\") {\n\texports.BoxParser = BoxParser;\n}\n// file:src/box-parse.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.parseUUID = function(stream) {\n\treturn BoxParser.parseHex16(stream);\n}\n\nBoxParser.parseHex16 = function(stream) {\n\tvar hex16 = \"\"\n\tfor (var i = 0; i <16; i++) {\n\t\tvar hex = stream.readUint8().toString(16);\n\t\thex16 += (hex.length === 1 ? \"0\"+hex : hex);\n\t}\n\treturn hex16;\n}\n\nBoxParser.parseOneBox = function(stream, headerOnly, parentSize) {\n\tvar box;\n\tvar start = stream.getPosition();\n\tvar hdr_size = 0;\n\tvar diff;\n\tvar uuid;\n\tif (stream.getEndPosition() - start < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough data in stream to parse the type and size of the box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tif (parentSize && parentSize < 8) {\n\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a new box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t}\n\tvar size = stream.readUint32();\n\tvar type = stream.readString(4);\n\tvar box_type = type;\n\tLog.debug(\"BoxParser\", \"Found box of type '\"+type+\"' and size \"+size+\" at position \"+start);\n\thdr_size = 8;\n\tif (type == \"uuid\") {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 16) || (parentSize -hdr_size < 16)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.debug(\"BoxParser\", \"Not enough bytes left in the parent box to parse a UUID box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tuuid = BoxParser.parseUUID(stream);\n\t\thdr_size += 16;\n\t\tbox_type = uuid;\n\t}\n\tif (size == 1) {\n\t\tif ((stream.getEndPosition() - stream.getPosition() < 8) || (parentSize && (parentSize - hdr_size) < 8)) {\n\t\t\tstream.seek(start);\n\t\t\tLog.warn(\"BoxParser\", \"Not enough data in stream to parse the extended size of the \\\"\"+type+\"\\\" box\");\n\t\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA };\n\t\t}\n\t\tsize = stream.readUint64();\n\t\thdr_size += 8;\n\t} else if (size === 0) {\n\t\t/* box extends till the end of file or invalid file */\n\t\tif (parentSize) {\n\t\t\tsize = parentSize;\n\t\t} else {\n\t\t\t/* box extends till the end of file */\n\t\t\tif (type !== \"mdat\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Unlimited box size not supported for type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\treturn { code: BoxParser.OK, box: box, size: box.size };\n\t\t\t}\n\t\t}\n\t}\n\tif (size !== 0 && size < hdr_size) {\n\t\tLog.error(\"BoxParser\", \"Box of type \"+type+\" has an invalid size \"+size+\" (too small to be a box)\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && parentSize && size > parentSize) {\n\t\tLog.error(\"BoxParser\", \"Box of type '\"+type+\"' has a size \"+size+\" greater than its container size \"+parentSize);\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (size !== 0 && start + size > stream.getEndPosition()) {\n\t\tstream.seek(start);\n\t\tLog.info(\"BoxParser\", \"Not enough data in stream to parse the entire '\"+type+\"' box\");\n\t\treturn { code: BoxParser.ERR_NOT_ENOUGH_DATA, type: type, size: size, hdr_size: hdr_size, start: start };\n\t}\n\tif (headerOnly) {\n\t\treturn { code: BoxParser.OK, type: type, size: size, hdr_size: hdr_size, start: start };\n\t} else {\n\t\tif (BoxParser[type+\"Box\"]) {\n\t\t\tbox = new BoxParser[type+\"Box\"](size);\n\t\t} else {\n\t\t\tif (type !== \"uuid\") {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown box type: '\"+type+\"'\");\n\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t} else {\n\t\t\t\tif (BoxParser.UUIDBoxes[uuid]) {\n\t\t\t\t\tbox = new BoxParser.UUIDBoxes[uuid](size);\n\t\t\t\t} else {\n\t\t\t\t\tLog.warn(\"BoxParser\", \"Unknown uuid type: '\"+uuid+\"'\");\n\t\t\t\t\tbox = new BoxParser.Box(type, size);\n\t\t\t\t\tbox.uuid = uuid;\n\t\t\t\t\tbox.has_unparsed_data = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tbox.hdr_size = hdr_size;\n\t/* recording the position of the box in the input stream */\n\tbox.start = start;\n\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\tLog.info(\"BoxParser\", \"'\"+box_type+\"' box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\tbox.parseDataAndRewind(stream);\n\t}\n\tbox.parse(stream);\n\tdiff = stream.getPosition() - (box.start+box.size);\n\tif (diff < 0) {\n\t\tLog.warn(\"BoxParser\", \"Parsing of box '\"+box_type+\"' did not read the entire indicated box data size (missing \"+(-diff)+\" bytes), seeking forward\");\n\t\tstream.seek(box.start+box.size);\n\t} else if (diff > 0) {\n\t\tLog.error(\"BoxParser\", \"Parsing of box '\"+box_type+\"' read \"+diff+\" more bytes than the indicated box data size, seeking backwards\");\n\t\tif (box.size !== 0) stream.seek(box.start+box.size);\n\t}\n\treturn { code: BoxParser.OK, box: box, size: box.size };\n}\n\nBoxParser.Box.prototype.parse = function(stream) {\n\tif (this.type != \"mdat\") {\n\t\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t} else {\n\t\tif (this.size === 0) {\n\t\t\tstream.seek(stream.getEndPosition());\n\t\t} else {\n\t\t\tstream.seek(this.start+this.size);\n\t\t}\n\t}\n}\n\n/* Used to parse a box without consuming its data, to allow detailled parsing\n Useful for boxes for which a write method is not yet implemented */\nBoxParser.Box.prototype.parseDataAndRewind = function(stream) {\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n\t// restore the header size as if the full header had not been parsed\n\tthis.hdr_size -= 4;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.FullBox.prototype.parseFullHeader = function (stream) {\n\tthis.version = stream.readUint8();\n\tthis.flags = stream.readUint24();\n\tthis.hdr_size += 4;\n}\n\nBoxParser.FullBox.prototype.parse = function (stream) {\n\tthis.parseFullHeader(stream);\n\tthis.data = stream.readUint8Array(this.size-this.hdr_size);\n}\n\nBoxParser.ContainerBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\t/* store the box in the 'boxes' array to preserve box order (for offset) but also store box in a property for more direct access */\n\t\t\tthis.boxes.push(box);\n\t\t\tif (this.subBoxNames && this.subBoxNames.indexOf(box.type) != -1) {\n\t\t\t\tthis[this.subBoxNames[this.subBoxNames.indexOf(box.type)]+\"s\"].push(box);\n\t\t\t} else {\n\t\t\t\tvar box_type = box.type !== \"uuid\" ? box.type : box.uuid;\n\t\t\t\tif (this[box_type]) {\n\t\t\t\t\tLog.warn(\"Box of type \"+box_type+\" already stored in field of this type\");\n\t\t\t\t} else {\n\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nBoxParser.Box.prototype.parseLanguage = function(stream) {\n\tthis.language = stream.readUint16();\n\tvar chars = [];\n\tchars[0] = (this.language>>10)&0x1F;\n\tchars[1] = (this.language>>5)&0x1F;\n\tchars[2] = (this.language)&0x1F;\n\tthis.languageString = String.fromCharCode(chars[0]+0x60, chars[1]+0x60, chars[2]+0x60);\n}\n\n// file:src/parsing/sampleentries/sampleentry.js\nBoxParser.SAMPLE_ENTRY_TYPE_VISUAL \t\t= \"Visual\";\nBoxParser.SAMPLE_ENTRY_TYPE_AUDIO \t\t= \"Audio\";\nBoxParser.SAMPLE_ENTRY_TYPE_HINT \t\t= \"Hint\";\nBoxParser.SAMPLE_ENTRY_TYPE_METADATA \t= \"Metadata\";\nBoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE \t= \"Subtitle\";\nBoxParser.SAMPLE_ENTRY_TYPE_SYSTEM \t\t= \"System\";\nBoxParser.SAMPLE_ENTRY_TYPE_TEXT \t\t= \"Text\";\n\nBoxParser.SampleEntry.prototype.parseHeader = function(stream) {\n\tstream.readUint8Array(6);\n\tthis.data_reference_index = stream.readUint16();\n\tthis.hdr_size += 8;\n}\n\nBoxParser.SampleEntry.prototype.parse = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n}\n\nBoxParser.SampleEntry.prototype.parseDataAndRewind = function(stream) {\n\tthis.parseHeader(stream);\n\tthis.data = stream.readUint8Array(this.size - this.hdr_size);\n\t// restore the header size as if the sample entry header had not been parsed\n\tthis.hdr_size -= 8;\n\t// rewinding\n\tstream.position -= this.size-this.hdr_size;\n}\n\nBoxParser.SampleEntry.prototype.parseFooter = function(stream) {\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n}\n\n// Base SampleEntry types with default parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_HINT);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM);\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT);\n\n//Base SampleEntry types for Audio and Video with specific parsing\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, function(stream) {\n\tvar compressorname_length;\n\tthis.parseHeader(stream);\n\tstream.readUint16();\n\tstream.readUint16();\n\tstream.readUint32Array(3);\n\tthis.width = stream.readUint16();\n\tthis.height = stream.readUint16();\n\tthis.horizresolution = stream.readUint32();\n\tthis.vertresolution = stream.readUint32();\n\tstream.readUint32();\n\tthis.frame_count = stream.readUint16();\n\tcompressorname_length = Math.min(31, stream.readUint8());\n\tthis.compressorname = stream.readString(compressorname_length);\n\tif (compressorname_length < 31) {\n\t\tstream.readString(31 - compressorname_length);\n\t}\n\tthis.depth = stream.readUint16();\n\tstream.readUint16();\n\tthis.parseFooter(stream);\n});\n\nBoxParser.createMediaSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, function(stream) {\n\tthis.parseHeader(stream);\n\tstream.readUint32Array(2);\n\tthis.channel_count = stream.readUint16();\n\tthis.samplesize = stream.readUint16();\n\tstream.readUint16();\n\tstream.readUint16();\n\tthis.samplerate = (stream.readUint32()/(1<<16));\n\tthis.parseFooter(stream);\n});\n\n// Sample entries inheriting from Audio and Video\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avc4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"av01\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dav1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hev1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"hvt1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"lhe1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvh1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"dvhe\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvc1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvi1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvs1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vvcN\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp08\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"vp09\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"avs3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"j2ki\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjp2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \"mjpg\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL,\t\"uncv\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mp4a\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ac-4\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"ec-3\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"Opus\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mha2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm1\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"mhm2\");\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"fLaC\");\n\n// Encrypted sample entries\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_VISUAL, \t\"encv\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_AUDIO, \t\"enca\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \t\"encu\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SYSTEM, \t\"encs\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_TEXT, \t\t\"enct\");\nBoxParser.createEncryptedSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \t\"encm\");\n// file:src/parsing/a1lx.js\nBoxParser.createBoxCtor(\"a1lx\", \"AV1LayeredImageIndexingProperty\", function(stream) {\n\tvar large_size = stream.readUint8() & 1;\n\tvar FieldLength = ((large_size & 1) + 1) * 16;\n\tthis.layer_size = [];\n\tfor (var i = 0; i < 3; i++) {\n\t\tif (FieldLength == 16) {\n\t\t\tthis.layer_size[i] = stream.readUint16();\n\t\t} else {\n\t\t\tthis.layer_size[i] = stream.readUint32();\n\t\t}\n\t}\n});// file:src/parsing/a1op.js\nBoxParser.createBoxCtor(\"a1op\", \"OperatingPointSelectorProperty\", function(stream) {\n\tthis.op_index = stream.readUint8();\n});// file:src/parsing/auxC.js\nBoxParser.createFullBoxCtor(\"auxC\", \"AuxiliaryTypeProperty\", function(stream) {\n\tthis.aux_type = stream.readCString();\n\tvar aux_subtype_length = this.size - this.hdr_size - (this.aux_type.length + 1);\n\tthis.aux_subtype = stream.readUint8Array(aux_subtype_length);\n});// file:src/parsing/av1C.js\nBoxParser.createBoxCtor(\"av1C\", \"AV1CodecConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tvar tmp = stream.readUint8();\n\tif ((tmp >> 7 & 0x1) !== 1) {\n\t\tLog.error(\"av1C marker problem\");\n\t\treturn;\n\t}\n\tthis.version = tmp & 0x7F;\n\tif (this.version !== 1) {\n\t\tLog.error(\"av1C version \"+this.version+\" not supported\");\n\t\treturn;\n\t}\n\ttmp = stream.readUint8();\n\tthis.seq_profile = (tmp >> 5) & 0x7;\n\tthis.seq_level_idx_0 = tmp & 0x1F;\n\ttmp = stream.readUint8();\n\tthis.seq_tier_0 = (tmp >> 7) & 0x1;\n\tthis.high_bitdepth = (tmp >> 6) & 0x1;\n\tthis.twelve_bit = (tmp >> 5) & 0x1;\n\tthis.monochrome = (tmp >> 4) & 0x1;\n\tthis.chroma_subsampling_x = (tmp >> 3) & 0x1;\n\tthis.chroma_subsampling_y = (tmp >> 2) & 0x1;\n\tthis.chroma_sample_position = (tmp & 0x3);\n\ttmp = stream.readUint8();\n\tthis.reserved_1 = (tmp >> 5) & 0x7;\n\tif (this.reserved_1 !== 0) {\n\t\tLog.error(\"av1C reserved_1 parsing problem\");\n\t\treturn;\n\t}\n\tthis.initial_presentation_delay_present = (tmp >> 4) & 0x1;\n\tif (this.initial_presentation_delay_present === 1) {\n\t\tthis.initial_presentation_delay_minus_one = (tmp & 0xF);\n\t} else {\n\t\tthis.reserved_2 = (tmp & 0xF);\n\t\tif (this.reserved_2 !== 0) {\n\t\t\tLog.error(\"av1C reserved_2 parsing problem\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\tvar configOBUs_length = this.size - this.hdr_size - 4;\n\tthis.configOBUs = stream.readUint8Array(configOBUs_length);\n});\n\n// file:src/parsing/avcC.js\nfunction printPS(ps) {\n\tvar str = \"<table class='inner-table'>\";\n\tstr += \"<thead><tr><th>length</th><th>nalu_data</th></tr></thead>\";\n\tstr += \"<tbody>\";\n\n\tfor (var i=0; i < ps.length; i++) {\n\t\tvar nalu = ps[i];\n\t\tstr += \"<tr>\";\n\t\tstr += \"<td>\"+nalu.length+\"</td>\";\n\t\tstr += \"<td>\";\n\t\tstr += nalu.nalu.reduce(function(str, byte) {\n\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t}, \"0x\");\n\t\tstr += \"</td></tr>\";\n\t}\n\tstr += \"</tbody></table>\";\n\treturn str;\n}\n\nBoxParser.createBoxCtor(\"avcC\", \"AVCConfigurationBox\", function(stream) {\n\tvar i;\n\tvar toparse;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.AVCProfileIndication = stream.readUint8();\n\tthis.profile_compatibility = stream.readUint8();\n\tthis.AVCLevelIndication = stream.readUint8();\n\tthis.lengthSizeMinusOne = (stream.readUint8() & 0x3);\n\tthis.nb_SPS_nalus = (stream.readUint8() & 0x1F);\n\ttoparse = this.size - this.hdr_size - 6;\n\tthis.SPS = [];\n\tthis.SPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_SPS_nalus; i++) {\n\t\tthis.SPS[i] = {};\n\t\tthis.SPS[i].length = stream.readUint16();\n\t\tthis.SPS[i].nalu = stream.readUint8Array(this.SPS[i].length);\n\t\ttoparse -= 2+this.SPS[i].length;\n\t}\n\tthis.nb_PPS_nalus = stream.readUint8();\n\ttoparse--;\n\tthis.PPS = [];\n\tthis.PPS.toString = function () {\n\t\treturn printPS(this);\n\t}\n\tfor (i = 0; i < this.nb_PPS_nalus; i++) {\n\t\tthis.PPS[i] = {};\n\t\tthis.PPS[i].length = stream.readUint16();\n\t\tthis.PPS[i].nalu = stream.readUint8Array(this.PPS[i].length);\n\t\ttoparse -= 2+this.PPS[i].length;\n\t}\n\tif (toparse>0) {\n\t\tthis.ext = stream.readUint8Array(toparse);\n\t}\n});\n\n// file:src/parsing/btrt.js\nBoxParser.createBoxCtor(\"btrt\", \"BitRateBox\", function(stream) {\n\tthis.bufferSizeDB = stream.readUint32();\n\tthis.maxBitrate = stream.readUint32();\n\tthis.avgBitrate = stream.readUint32();\n});\n\n// file:src/parsing/ccst.js\nBoxParser.createFullBoxCtor(\"ccst\", \"CodingConstraintsBox\", function(stream) {\n\tvar flags = stream.readUint8();\n\tthis.all_ref_pics_intra = ((flags & 0x80) == 0x80);\n\tthis.intra_pred_used = ((flags & 0x40) == 0x40);\n\tthis.max_ref_per_pic = ((flags & 0x3f) >> 2);\n\tstream.readUint24();\n});\n\n// file:src/parsing/cdef.js\nBoxParser.createBoxCtor(\"cdef\", \"ComponentDefinitionBox\", function(stream) {\n var i;\n this.channel_count = stream.readUint16();\n this.channel_indexes = [];\n this.channel_types = [];\n this.channel_associations = [];\n for (i = 0; i < this.channel_count; i++) {\n this.channel_indexes.push(stream.readUint16());\n this.channel_types.push(stream.readUint16());\n this.channel_associations.push(stream.readUint16());\n }\n});\n\n// file:src/parsing/clap.js\nBoxParser.createBoxCtor(\"clap\", \"CleanApertureBox\", function(stream) {\n\tthis.cleanApertureWidthN = stream.readUint32();\n\tthis.cleanApertureWidthD = stream.readUint32();\n\tthis.cleanApertureHeightN = stream.readUint32();\n\tthis.cleanApertureHeightD = stream.readUint32();\n\tthis.horizOffN = stream.readUint32();\n\tthis.horizOffD = stream.readUint32();\n\tthis.vertOffN = stream.readUint32();\n\tthis.vertOffD = stream.readUint32();\n});// file:src/parsing/clli.js\nBoxParser.createBoxCtor(\"clli\", \"ContentLightLevelBox\", function(stream) {\n\tthis.max_content_light_level = stream.readUint16();\n this.max_pic_average_light_level = stream.readUint16();\n});\n\n// file:src/parsing/cmex.js\nBoxParser.createFullBoxCtor(\"cmex\", \"CameraExtrinsicMatrixProperty\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.pos_x = stream.readInt32();\n\t}\n\tif (this.flags & 0x2) {\n\t\tthis.pos_y = stream.readInt32();\n\t}\n\tif (this.flags & 0x4) {\n\t\tthis.pos_z = stream.readInt32();\n\t}\n\tif (this.flags & 0x8) {\n\t\tif (this.version == 0) {\n\t\t\tif (this.flags & 0x10) {\n\t\t\t\tthis.quat_x = stream.readInt32();\n\t\t\t\tthis.quat_y = stream.readInt32();\n\t\t\t\tthis.quat_z = stream.readInt32();\n\t\t\t} else {\n\t\t\t\tthis.quat_x = stream.readInt16();\n\t\t\t\tthis.quat_y = stream.readInt16();\n\t\t\t\tthis.quat_z = stream.readInt16();\n\t\t\t}\n\t\t} else if (this.version == 1) {\n\t\t\t//ViewpointGlobalCoordinateSysRotationStruct rot;\n\t\t}\n\t}\n\tif (this.flags & 0x20) {\n\t\tthis.id = stream.readUint32();\n\t}\n});\n// file:src/parsing/cmin.js\nBoxParser.createFullBoxCtor(\"cmin\", \"CameraIntrinsicMatrixProperty\", function(stream) {\n\tthis.focal_length_x = stream.readInt32();\n\tthis.principal_point_x = stream.readInt32();\n\tthis.principal_point_y = stream.readInt32();\n\tif (this.flags & 0x1) {\n\t\tthis.focal_length_y = stream.readInt32();\n\t\tthis.skew_factor = stream.readInt32();\n\t}\n});// file:src/parsing/cmpd.js\nBoxParser.createBoxCtor(\"cmpd\", \"ComponentDefinitionBox\", function(stream) {\n\tthis.component_count = stream.readUint32();\n\tthis.component_types = [];\n\tthis.component_type_urls = [];\n\tfor (i = 0; i < this.component_count; i++) {\n\t\tvar component_type = stream.readUint16();\n\t\tthis.component_types.push(component_type);\n\t\tif (component_type >= 0x8000) {\n\t\t\tthis.component_type_urls.push(stream.readCString());\n\t\t}\n\t}\n});// file:src/parsing/co64.js\nBoxParser.createFullBoxCtor(\"co64\", \"ChunkLargeOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint64());\n\t\t}\n\t}\n});\n\n// file:src/parsing/CoLL.js\nBoxParser.createFullBoxCtor(\"CoLL\", \"ContentLightLevelBox\", function(stream) {\n\tthis.maxCLL = stream.readUint16();\n this.maxFALL = stream.readUint16();\n});\n\n// file:src/parsing/colr.js\nBoxParser.createBoxCtor(\"colr\", \"ColourInformationBox\", function(stream) {\n\tthis.colour_type = stream.readString(4);\n\tif (this.colour_type === 'nclx') {\n\t\tthis.colour_primaries = stream.readUint16();\n\t\tthis.transfer_characteristics = stream.readUint16();\n\t\tthis.matrix_coefficients = stream.readUint16();\n\t\tvar tmp = stream.readUint8();\n\t\tthis.full_range_flag = tmp >> 7;\n\t} else if (this.colour_type === 'rICC') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t} else if (this.colour_type === 'prof') {\n\t\tthis.ICC_profile = stream.readUint8Array(this.size - 4);\n\t}\n});// file:src/parsing/cprt.js\nBoxParser.createFullBoxCtor(\"cprt\", \"CopyrightBox\", function (stream) {\n\tthis.parseLanguage(stream);\n\tthis.notice = stream.readCString();\n});\n\n// file:src/parsing/cslg.js\nBoxParser.createFullBoxCtor(\"cslg\", \"CompositionToDecodeBox\", function(stream) {\n\tvar entry_count;\n\tif (this.version === 0) {\n\t\tthis.compositionToDTSShift = stream.readInt32(); /* signed */\n\t\tthis.leastDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.greatestDecodeToDisplayDelta = stream.readInt32(); /* signed */\n\t\tthis.compositionStartTime = stream.readInt32(); /* signed */\n\t\tthis.compositionEndTime = stream.readInt32(); /* signed */\n\t}\n});\n\n// file:src/parsing/ctts.js\nBoxParser.createFullBoxCtor(\"ctts\", \"CompositionOffsetBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_offsets = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\t/* some files are buggy and declare version=0 while using signed offsets.\n\t\t\t The likelyhood of using the most significant bit in a 32-bits time offset is very low,\n\t\t\t so using signed value here as well */\n\t\t\t var value = stream.readInt32();\n\t\t\t if (value < 0) {\n\t\t\t \t\tLog.warn(\"BoxParser\", \"ctts box uses negative values without using version 1\");\n\t\t\t }\n\t\t\tthis.sample_offsets.push(value);\n\t\t}\n\t} else if (this.version == 1) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tthis.sample_offsets.push(stream.readInt32()); /* signed */\n\t\t}\n\t}\n});\n\n// file:src/parsing/dac3.js\nBoxParser.createBoxCtor(\"dac3\", \"AC3SpecificBox\", function(stream) {\n\tvar tmp_byte1 = stream.readUint8();\n\tvar tmp_byte2 = stream.readUint8();\n\tvar tmp_byte3 = stream.readUint8();\n\tthis.fscod = tmp_byte1 >> 6;\n\tthis.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\tthis.bsmod = ((tmp_byte1 & 0x1) << 2) | ((tmp_byte2 >> 6) & 0x3);\n\tthis.acmod = ((tmp_byte2 >> 3) & 0x7);\n\tthis.lfeon = ((tmp_byte2 >> 2) & 0x1);\n\tthis.bit_rate_code = (tmp_byte2 & 0x3) | ((tmp_byte3 >> 5) & 0x7);\n});\n\n// file:src/parsing/dec3.js\nBoxParser.createBoxCtor(\"dec3\", \"EC3SpecificBox\", function(stream) {\n\tvar tmp_16 = stream.readUint16();\n\tthis.data_rate = tmp_16 >> 3;\n\tthis.num_ind_sub = tmp_16 & 0x7;\n\tthis.ind_subs = [];\n\tfor (var i = 0; i < this.num_ind_sub+1; i++) {\n\t\tvar ind_sub = {};\n\t\tthis.ind_subs.push(ind_sub);\n\t\tvar tmp_byte1 = stream.readUint8();\n\t\tvar tmp_byte2 = stream.readUint8();\n\t\tvar tmp_byte3 = stream.readUint8();\n\t\tind_sub.fscod = tmp_byte1 >> 6;\n\t\tind_sub.bsid = ((tmp_byte1 >> 1) & 0x1F);\n\t\tind_sub.bsmod = ((tmp_byte1 & 0x1) << 4) | ((tmp_byte2 >> 4) & 0xF);\n\t\tind_sub.acmod = ((tmp_byte2 >> 1) & 0x7);\n\t\tind_sub.lfeon = (tmp_byte2 & 0x1);\n\t\tind_sub.num_dep_sub = ((tmp_byte3 >> 1) & 0xF);\n\t\tif (ind_sub.num_dep_sub > 0) {\n\t\t\tind_sub.chan_loc = ((tmp_byte3 & 0x1) << 8) | stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dfLa.js\nBoxParser.createFullBoxCtor(\"dfLa\", \"FLACSpecificBox\", function(stream) {\n var BLOCKTYPE_MASK = 0x7F;\n var LASTMETADATABLOCKFLAG_MASK = 0x80;\n\n var boxesFound = [];\n var knownBlockTypes = [\n \"STREAMINFO\",\n \"PADDING\",\n \"APPLICATION\",\n \"SEEKTABLE\",\n \"VORBIS_COMMENT\",\n \"CUESHEET\",\n \"PICTURE\",\n \"RESERVED\"\n ];\n\n // for (i=0; ; i++) { // to end of box\n do {\n var flagAndType = stream.readUint8();\n\n var type = Math.min(\n (flagAndType & BLOCKTYPE_MASK),\n (knownBlockTypes.length - 1)\n );\n\n // if this is a STREAMINFO block, read the true samplerate since this\n // can be different to the AudioSampleEntry samplerate.\n if (!(type)) {\n // read past all the other stuff\n stream.readUint8Array(13);\n\n // extract samplerate\n this.samplerate = (stream.readUint32() >> 12);\n\n // read to end of STREAMINFO\n stream.readUint8Array(20);\n } else {\n // not interested in other block types so just discard length bytes\n stream.readUint8Array(stream.readUint24());\n }\n\n boxesFound.push(knownBlockTypes[type]);\n\n if (!!(flagAndType & LASTMETADATABLOCKFLAG_MASK)) {\n break;\n }\n } while (true);\n\n this.numMetadataBlocks =\n boxesFound.length + \" (\" + boxesFound.join(\", \") + \")\";\n});\n// file:src/parsing/dimm.js\nBoxParser.createBoxCtor(\"dimm\", \"hintimmediateBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dmax.js\nBoxParser.createBoxCtor(\"dmax\", \"hintlongestpacket\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/dmed.js\nBoxParser.createBoxCtor(\"dmed\", \"hintmediaBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/dOps.js\nBoxParser.createBoxCtor(\"dOps\", \"OpusSpecificBox\", function(stream) {\n\tthis.Version = stream.readUint8();\n\tthis.OutputChannelCount = stream.readUint8();\n\tthis.PreSkip = stream.readUint16();\n\tthis.InputSampleRate = stream.readUint32();\n\tthis.OutputGain = stream.readInt16();\n\tthis.ChannelMappingFamily = stream.readUint8();\n\tif (this.ChannelMappingFamily !== 0) {\n\t\tthis.StreamCount = stream.readUint8();\n\t\tthis.CoupledCount = stream.readUint8();\n\t\tthis.ChannelMapping = [];\n\t\tfor (var i = 0; i < this.OutputChannelCount; i++) {\n\t\t\tthis.ChannelMapping[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/dref.js\nBoxParser.createFullBoxCtor(\"dref\", \"DataReferenceBox\", function(stream) {\n\tvar ret;\n\tvar box;\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/drep.js\nBoxParser.createBoxCtor(\"drep\", \"hintrepeatedBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/elng.js\nBoxParser.createFullBoxCtor(\"elng\", \"ExtendedLanguageBox\", function(stream) {\n\tthis.extended_language = stream.readString(this.size-this.hdr_size);\n});\n\n// file:src/parsing/elst.js\nBoxParser.createFullBoxCtor(\"elst\", \"EditListBox\", function(stream) {\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tentry.segment_duration = stream.readUint64();\n\t\t\tentry.media_time = stream.readInt64();\n\t\t} else {\n\t\t\tentry.segment_duration = stream.readUint32();\n\t\t\tentry.media_time = stream.readInt32();\n\t\t}\n\t\tentry.media_rate_integer = stream.readInt16();\n\t\tentry.media_rate_fraction = stream.readInt16();\n\t}\n});\n\n// file:src/parsing/emsg.js\nBoxParser.createFullBoxCtor(\"emsg\", \"EventMessageBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time \t\t\t= stream.readUint64();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t} else {\n\t\tthis.scheme_id_uri \t\t\t\t= stream.readCString();\n\t\tthis.value \t\t\t\t\t\t= stream.readCString();\n\t\tthis.timescale \t\t\t\t\t= stream.readUint32();\n\t\tthis.presentation_time_delta \t= stream.readUint32();\n\t\tthis.event_duration\t\t\t \t= stream.readUint32();\n\t\tthis.id \t\t\t\t\t\t= stream.readUint32();\n\t}\n\tvar message_size = this.size - this.hdr_size - (4*4 + (this.scheme_id_uri.length+1) + (this.value.length+1));\n\tif (this.version == 1) {\n\t\tmessage_size -= 4;\n\t}\n\tthis.message_data = stream.readUint8Array(message_size);\n});\n\n// file:src/parsing/EntityToGroup.js\n// ISO/IEC 14496-12:2022 Section 8.18.3 Entity to group box\nBoxParser.createEntityToGroupCtor = function(type, parseMethod) {\n BoxParser[type+\"Box\"] = function(size) {\n BoxParser.FullBox.call(this, type, size);\n }\n BoxParser[type+\"Box\"].prototype = new BoxParser.FullBox();\n BoxParser[type+\"Box\"].prototype.parse = function(stream) {\n this.parseFullHeader(stream);\n if (parseMethod) {\n parseMethod.call(this, stream);\n } else {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n }\n };\n};\n\n// Auto exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.2.1)\nBoxParser.createEntityToGroupCtor(\"aebr\");\n\n// Flash exposure bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.5.1)\nBoxParser.createEntityToGroupCtor(\"afbr\");\n\n// Album collection (ISO/IEC 23008-12:2022 Section 6.8.7.1)\nBoxParser.createEntityToGroupCtor(\"albc\");\n\n// Alternative entity (ISO/IEC 14496-12:2022 Section 8.18.3.1)\nBoxParser.createEntityToGroupCtor(\"altr\");\n\n// Burst image entity group (ISO/IEC 23008-12:2022 Section 6.8.2.2)\nBoxParser.createEntityToGroupCtor(\"brst\");\n\n// Depth of field bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.6.1)\nBoxParser.createEntityToGroupCtor(\"dobr\");\n\n// Equivalent entity (ISO/IEC 23008-12:2022 Section 6.8.1.1)\nBoxParser.createEntityToGroupCtor(\"eqiv\");\n\n// Favourites collection (ISO/IEC 23008-12:2022 Section 6.8.7.2)\nBoxParser.createEntityToGroupCtor(\"favc\");\n\n// Focus bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.4.1)\nBoxParser.createEntityToGroupCtor(\"fobr\");\n\n// Audio to image entity group (ISO/IEC 23008-12:2022 Section 6.8.4)\nBoxParser.createEntityToGroupCtor(\"iaug\");\n\n// Panorama (ISO/IEC 23008-12:2022 Section 6.8.8.1)\nBoxParser.createEntityToGroupCtor(\"pano\");\n\n// Slideshow (ISO/IEC 23008-12:2022 Section 6.8.9.1)\nBoxParser.createEntityToGroupCtor(\"slid\");\n\n// Stereo pair (ISO/IEC 23008-12:2022 Section 6.8.5)\nBoxParser.createEntityToGroupCtor(\"ster\");\n\n// Time-synchronised capture entity group (ISO/IEC 23008-12:2022 Section 6.8.3)\nBoxParser.createEntityToGroupCtor(\"tsyn\");\n\n// White balance bracketing (ISO/IEC 23008-12:2022 Section 6.8.6.3.1)\nBoxParser.createEntityToGroupCtor(\"wbbr\");\n\n// Alternative entity (ISO/IEC 23008-12:2022 AMD1 Section 6.8.10)\nBoxParser.createEntityToGroupCtor(\"prgr\");\n\n// Image Pyramid entity group (ISO/IEC 23008-12:20xx Section 6.8.11)\nBoxParser.createEntityToGroupCtor(\"pymd\", function(stream) {\n this.group_id = stream.readUint32();\n this.num_entities_in_group = stream.readUint32();\n this.entity_ids = [];\n for (var i = 0; i < this.num_entities_in_group; i++) {\n var entity_id = stream.readUint32();\n this.entity_ids.push(entity_id);\n }\n \n this.tile_size_x = stream.readUint16();\n this.tile_size_y = stream.readUint16();\n this.layer_binning = [];\n this.tiles_in_layer_column_minus1 = [];\n this.tiles_in_layer_row_minus1 = [];\n for (i = 0; i < this.num_entities_in_group; i++) {\n this.layer_binning[i] = stream.readUint16();\n this.tiles_in_layer_row_minus1[i] = stream.readUint16();\n this.tiles_in_layer_column_minus1[i] = stream.readUint16();\n }\n});\n\n// file:src/parsing/esds.js\nBoxParser.createFullBoxCtor(\"esds\", \"ElementaryStreamDescriptorBox\", function(stream) {\n\tvar esd_data = stream.readUint8Array(this.size-this.hdr_size);\n\tif (typeof MPEG4DescriptorParser !== \"undefined\") {\n\t\tvar esd_parser = new MPEG4DescriptorParser();\n\t\tthis.esd = esd_parser.parseOneDescriptor(new DataStream(esd_data.buffer, 0, DataStream.BIG_ENDIAN));\n\t}\n});\n\n// file:src/parsing/fiel.js\nBoxParser.createBoxCtor(\"fiel\", \"FieldHandlingBox\", function(stream) {\n\tthis.fieldCount = stream.readUint8();\n\tthis.fieldOrdering = stream.readUint8();\n});\n\n// file:src/parsing/frma.js\nBoxParser.createBoxCtor(\"frma\", \"OriginalFormatBox\", function(stream) {\n\tthis.data_format = stream.readString(4);\n});\n\n// file:src/parsing/ftyp.js\nBoxParser.createBoxCtor(\"ftyp\", \"FileTypeBox\", function(stream) {\n\tvar toparse = this.size - this.hdr_size;\n\tthis.major_brand = stream.readString(4);\n\tthis.minor_version = stream.readUint32();\n\ttoparse -= 8;\n\tthis.compatible_brands = [];\n\tvar i = 0;\n\twhile (toparse>=4) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t\ttoparse -= 4;\n\t\ti++;\n\t}\n});\n\n// file:src/parsing/hdlr.js\nBoxParser.createFullBoxCtor(\"hdlr\", \"HandlerBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tstream.readUint32();\n\t\tthis.handler = stream.readString(4);\n\t\tstream.readUint32Array(3);\n\t\tthis.name = stream.readString(this.size-this.hdr_size-20);\n\t\tif (this.name[this.name.length-1]==='\\0') {\n\t\t\tthis.name = this.name.slice(0,-1);\n\t\t}\n\t}\n});\n\n// file:src/parsing/hvcC.js\nBoxParser.createBoxCtor(\"hvcC\", \"HEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar nb_nalus;\n\tvar length;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\ttmp_byte = stream.readUint8();\n\tthis.general_profile_space = tmp_byte >> 6;\n\tthis.general_tier_flag = (tmp_byte & 0x20) >> 5;\n\tthis.general_profile_idc = (tmp_byte & 0x1F);\n\tthis.general_profile_compatibility = stream.readUint32();\n\tthis.general_constraint_indicator = stream.readUint8Array(6);\n\tthis.general_level_idc = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\tthis.chroma_format_idc = (stream.readUint8() & 0x3);\n\tthis.bit_depth_luma_minus8 = (stream.readUint8() & 0x7);\n\tthis.bit_depth_chroma_minus8 = (stream.readUint8() & 0x7);\n\tthis.avgFrameRate = stream.readUint16();\n\ttmp_byte = stream.readUint8();\n\tthis.constantFrameRate = (tmp_byte >> 6);\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tlength = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/iinf.js\nBoxParser.createFullBoxCtor(\"iinf\", \"ItemInfoBox\", function(stream) {\n\tvar ret;\n\tif (this.version === 0) {\n\t\tthis.entry_count = stream.readUint16();\n\t} else {\n\t\tthis.entry_count = stream.readUint32();\n\t}\n\tthis.item_infos = [];\n\tfor (var i = 0; i < this.entry_count; i++) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (ret.box.type !== \"infe\") {\n\t\t\t\tLog.error(\"BoxParser\", \"Expected 'infe' box, got \"+ret.box.type);\n\t\t\t}\n\t\t\tthis.item_infos[i] = ret.box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/iloc.js\nBoxParser.createFullBoxCtor(\"iloc\", \"ItemLocationBox\", function(stream) {\n\tvar byte;\n\tbyte = stream.readUint8();\n\tthis.offset_size = (byte >> 4) & 0xF;\n\tthis.length_size = byte & 0xF;\n\tbyte = stream.readUint8();\n\tthis.base_offset_size = (byte >> 4) & 0xF;\n\tif (this.version === 1 || this.version === 2) {\n\t\tthis.index_size = byte & 0xF;\n\t} else {\n\t\tthis.index_size = 0;\n\t\t// reserved = byte & 0xF;\n\t}\n\tthis.items = [];\n\tvar item_count = 0;\n\tif (this.version < 2) {\n\t\titem_count = stream.readUint16();\n\t} else if (this.version === 2) {\n\t\titem_count = stream.readUint32();\n\t} else {\n\t\tthrow \"version of iloc box not supported\";\n\t}\n\tfor (var i = 0; i < item_count; i++) {\n\t\tvar item = {};\n\t\tthis.items.push(item);\n\t\tif (this.version < 2) {\n\t\t\titem.item_ID = stream.readUint16();\n\t\t} else if (this.version === 2) {\n\t\t\titem.item_ID = stream.readUint32();\n\t\t} else {\n\t\t\tthrow \"version of iloc box not supported\";\n\t\t}\n\t\tif (this.version === 1 || this.version === 2) {\n\t\t\titem.construction_method = (stream.readUint16() & 0xF);\n\t\t} else {\n\t\t\titem.construction_method = 0;\n\t\t}\n\t\titem.data_reference_index = stream.readUint16();\n\t\tswitch(this.base_offset_size) {\n\t\t\tcase 0:\n\t\t\t\titem.base_offset = 0;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\titem.base_offset = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\titem.base_offset = stream.readUint64();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow \"Error reading base offset size\";\n\t\t}\n\t\tvar extent_count = stream.readUint16();\n\t\titem.extents = [];\n\t\tfor (var j=0; j < extent_count; j++) {\n\t\t\tvar extent = {};\n\t\t\titem.extents.push(extent);\n\t\t\tif (this.version === 1 || this.version === 2) {\n\t\t\t\tswitch(this.index_size) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\textent.extent_index = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\textent.extent_index = stream.readUint32();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\textent.extent_index = stream.readUint64();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch(this.offset_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_offset = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_offset = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_offset = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t\tswitch(this.length_size) {\n\t\t\t\tcase 0:\n\t\t\t\t\textent.extent_length = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\textent.extent_length = stream.readUint32();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 8:\n\t\t\t\t\textent.extent_length = stream.readUint64();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow \"Error reading extent index\";\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/imir.js\nBoxParser.createBoxCtor(\"imir\", \"ImageMirror\", function(stream) {\n\tvar tmp = stream.readUint8();\n\tthis.reserved = tmp >> 7;\n\tthis.axis = tmp & 1;\n});// file:src/parsing/infe.js\nBoxParser.createFullBoxCtor(\"infe\", \"ItemInfoEntry\", function(stream) {\n\tif (this.version === 0 || this.version === 1) {\n\t\tthis.item_ID = stream.readUint16();\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_name = stream.readCString();\n\t\tthis.content_type = stream.readCString();\n\t\tthis.content_encoding = stream.readCString();\n\t}\n\tif (this.version === 1) {\n\t\tthis.extension_type = stream.readString(4);\n\t\tLog.warn(\"BoxParser\", \"Cannot parse extension type\");\n\t\tstream.seek(this.start+this.size);\n\t\treturn;\n\t}\n\tif (this.version >= 2) {\n\t\tif (this.version === 2) {\n\t\t\tthis.item_ID = stream.readUint16();\n\t\t} else if (this.version === 3) {\n\t\t\tthis.item_ID = stream.readUint32();\n\t\t}\n\t\tthis.item_protection_index = stream.readUint16();\n\t\tthis.item_type = stream.readString(4);\n\t\tthis.item_name = stream.readCString();\n\t\tif (this.item_type === \"mime\") {\n\t\t\tthis.content_type = stream.readCString();\n\t\t\tthis.content_encoding = stream.readCString();\n\t\t} else if (this.item_type === \"uri \") {\n\t\t\tthis.item_uri_type = stream.readCString();\n\t\t}\n\t}\n});\n// file:src/parsing/ipma.js\nBoxParser.createFullBoxCtor(\"ipma\", \"ItemPropertyAssociationBox\", function(stream) {\n\tvar i, j;\n\tentry_count = stream.readUint32();\n\tthis.associations = [];\n\tfor(i=0; i<entry_count; i++) {\n\t\tvar item_assoc = {};\n\t\tthis.associations.push(item_assoc);\n\t\tif (this.version < 1) {\n\t\t\titem_assoc.id = stream.readUint16();\n\t\t} else {\n\t\t\titem_assoc.id = stream.readUint32();\n\t\t}\n\t\tvar association_count = stream.readUint8();\n\t\titem_assoc.props = [];\n\t\tfor (j = 0; j < association_count; j++) {\n\t\t\tvar tmp = stream.readUint8();\n\t\t\tvar p = {};\n\t\t\titem_assoc.props.push(p);\n\t\t\tp.essential = ((tmp & 0x80) >> 7) === 1;\n\t\t\tif (this.flags & 0x1) {\n\t\t\t\tp.property_index = (tmp & 0x7F) << 8 | stream.readUint8();\n\t\t\t} else {\n\t\t\t\tp.property_index = (tmp & 0x7F);\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/iref.js\nBoxParser.createFullBoxCtor(\"iref\", \"ItemReferenceBox\", function(stream) {\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.references = [];\n\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t} else {\n\t\t\t\tbox = new BoxParser.SingleItemTypeReferenceBoxLarge(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.warn(\"BoxParser\", box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.references.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n// file:src/parsing/irot.js\nBoxParser.createBoxCtor(\"irot\", \"ImageRotation\", function(stream) {\n\tthis.angle = stream.readUint8() & 0x3;\n});\n\n// file:src/parsing/ispe.js\nBoxParser.createFullBoxCtor(\"ispe\", \"ImageSpatialExtentsProperty\", function(stream) {\n\tthis.image_width = stream.readUint32();\n\tthis.image_height = stream.readUint32();\n});// file:src/parsing/kind.js\nBoxParser.createFullBoxCtor(\"kind\", \"KindBox\", function(stream) {\n\tthis.schemeURI = stream.readCString();\n\tthis.value = stream.readCString();\n});\n// file:src/parsing/leva.js\nBoxParser.createFullBoxCtor(\"leva\", \"LevelAssignmentBox\", function(stream) {\n\tvar count = stream.readUint8();\n\tthis.levels = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tvar level = {};\n\t\tthis.levels[i] = level;\n\t\tlevel.track_ID = stream.readUint32();\n\t\tvar tmp_byte = stream.readUint8();\n\t\tlevel.padding_flag = tmp_byte >> 7;\n\t\tlevel.assignment_type = tmp_byte & 0x7F;\n\t\tswitch (level.assignment_type) {\n\t\t\tcase 0:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tlevel.grouping_type = stream.readString(4);\n\t\t\t\tlevel.grouping_type_parameter = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tlevel.sub_track_id = stream.readUint32();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown leva assignement type\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/lhvC.js\nBoxParser.createBoxCtor(\"lhvC\", \"LHEVCConfigurationBox\", function(stream) {\n\tvar i, j;\n\tvar tmp_byte;\n\tthis.configurationVersion = stream.readUint8();\n\tthis.min_spatial_segmentation_idc = stream.readUint16() & 0xFFF;\n\tthis.parallelismType = (stream.readUint8() & 0x3);\n\ttmp_byte = stream.readUint8();\n\tthis.numTemporalLayers = (tmp_byte & 0XD) >> 3;\n\tthis.temporalIdNested = (tmp_byte & 0X4) >> 2;\n\tthis.lengthSizeMinusOne = (tmp_byte & 0X3);\n\n\tthis.nalu_arrays = [];\n\tthis.nalu_arrays.toString = function () {\n\t\tvar str = \"<table class='inner-table'>\";\n\t\tstr += \"<thead><tr><th>completeness</th><th>nalu_type</th><th>nalu_data</th></tr></thead>\";\n\t\tstr += \"<tbody>\";\n\n\t\tfor (var i=0; i<this.length; i++) {\n\t\t\tvar nalu_array = this[i];\n\t\t\tstr += \"<tr>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.completeness+\"</td>\";\n\t\t\tstr += \"<td rowspan='\"+nalu_array.length+\"'>\"+nalu_array.nalu_type+\"</td>\";\n\t\t\tfor (var j=0; j<nalu_array.length; j++) {\n\t\t\t\tvar nalu = nalu_array[j];\n\t\t\t\tif (j !== 0) str += \"<tr>\";\n\t\t\t\tstr += \"<td>\";\n\t\t\t\tstr += nalu.data.reduce(function(str, byte) {\n\t\t\t\t\treturn str + byte.toString(16).padStart(2, \"0\");\n\t\t\t\t}, \"0x\");\n\t\t\t\tstr += \"</td></tr>\";\n\t\t\t}\n\t\t}\n\t\tstr += \"</tbody></table>\";\n\t\treturn str;\n\t}\n\tvar numOfArrays = stream.readUint8();\n\tfor (i = 0; i < numOfArrays; i++) {\n\t\tvar nalu_array = [];\n\t\tthis.nalu_arrays.push(nalu_array);\n\t\ttmp_byte = stream.readUint8()\n\t\tnalu_array.completeness = (tmp_byte & 0x80) >> 7;\n\t\tnalu_array.nalu_type = tmp_byte & 0x3F;\n\t\tvar numNalus = stream.readUint16();\n\t\tfor (j = 0; j < numNalus; j++) {\n\t\t\tvar nalu = {}\n\t\t\tnalu_array.push(nalu);\n\t\t\tvar length = stream.readUint16();\n\t\t\tnalu.data = stream.readUint8Array(length);\n\t\t}\n\t}\n});\n\n// file:src/parsing/lsel.js\nBoxParser.createBoxCtor(\"lsel\", \"LayerSelectorProperty\", function(stream) {\n\tthis.layer_id = stream.readUint16();\n});// file:src/parsing/maxr.js\nBoxParser.createBoxCtor(\"maxr\", \"hintmaxrate\", function(stream) {\n\tthis.period = stream.readUint32();\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/mdcv.js\nfunction ColorPoint(x, y) {\n this.x = x;\n this.y = y;\n}\n\nColorPoint.prototype.toString = function() {\n return \"(\"+this.x+\",\"+this.y+\")\";\n}\n\nBoxParser.createBoxCtor(\"mdcv\", \"MasteringDisplayColourVolumeBox\", function(stream) {\n this.display_primaries = [];\n this.display_primaries[0] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[1] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.display_primaries[2] = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.white_point = new ColorPoint(stream.readUint16(),stream.readUint16());\n this.max_display_mastering_luminance = stream.readUint32();\n this.min_display_mastering_luminance = stream.readUint32();\n});\n\n// file:src/parsing/mdhd.js\nBoxParser.createFullBoxCtor(\"mdhd\", \"MediaHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.parseLanguage(stream);\n\tstream.readUint16();\n});\n\n// file:src/parsing/mehd.js\nBoxParser.createFullBoxCtor(\"mehd\", \"MovieExtendsHeaderBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tLog.warn(\"BoxParser\", \"mehd box incorrectly uses flags set to 1, converting version to 1\");\n\t\tthis.version = 1;\n\t}\n\tif (this.version == 1) {\n\t\tthis.fragment_duration = stream.readUint64();\n\t} else {\n\t\tthis.fragment_duration = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/meta.js\nBoxParser.createFullBoxCtor(\"meta\", \"MetaBox\", function(stream) {\n\tthis.boxes = [];\n\tBoxParser.ContainerBox.prototype.parse.call(this, stream);\n});\n// file:src/parsing/mfhd.js\nBoxParser.createFullBoxCtor(\"mfhd\", \"MovieFragmentHeaderBox\", function(stream) {\n\tthis.sequence_number = stream.readUint32();\n});\n\n// file:src/parsing/mfro.js\nBoxParser.createFullBoxCtor(\"mfro\", \"MovieFragmentRandomAccessOffsetBox\", function(stream) {\n\tthis._size = stream.readUint32();\n});\n\n// file:src/parsing/mskC.js\nBoxParser.createFullBoxCtor(\"mskC\", \"MaskConfigurationProperty\", function(stream) {\n this.bits_per_pixel = stream.readUint8();\n});\n\n// file:src/parsing/mvhd.js\nBoxParser.createFullBoxCtor(\"mvhd\", \"MovieHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.timescale = stream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tthis.rate = stream.readUint32();\n\tthis.volume = stream.readUint16()>>8;\n\tstream.readUint16();\n\tstream.readUint32Array(2);\n\tthis.matrix = stream.readUint32Array(9);\n\tstream.readUint32Array(6);\n\tthis.next_track_id = stream.readUint32();\n});\n// file:src/parsing/npck.js\nBoxParser.createBoxCtor(\"npck\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint32();\n});\n\n// file:src/parsing/nump.js\nBoxParser.createBoxCtor(\"nump\", \"hintPacketsSent\", function(stream) {\n\tthis.packetssent = stream.readUint64();\n});\n\n// file:src/parsing/padb.js\nBoxParser.createFullBoxCtor(\"padb\", \"PaddingBitsBox\", function(stream) {\n\tvar sample_count = stream.readUint32();\n\tthis.padbits = [];\n\tfor (var i = 0; i < Math.floor((sample_count+1)/2); i++) {\n\t\tthis.padbits = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pasp.js\nBoxParser.createBoxCtor(\"pasp\", \"PixelAspectRatioBox\", function(stream) {\n\tthis.hSpacing = stream.readUint32();\n\tthis.vSpacing = stream.readUint32();\n});// file:src/parsing/payl.js\nBoxParser.createBoxCtor(\"payl\", \"CuePayloadBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/payt.js\nBoxParser.createBoxCtor(\"payt\", \"hintpayloadID\", function(stream) {\n\tthis.payloadID = stream.readUint32();\n\tvar count = stream.readUint8();\n\tthis.rtpmap_string = stream.readString(count);\n});\n\n// file:src/parsing/pdin.js\nBoxParser.createFullBoxCtor(\"pdin\", \"ProgressiveDownloadInfoBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/8;\n\tthis.rate = [];\n\tthis.initial_delay = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.rate[i] = stream.readUint32();\n\t\tthis.initial_delay[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pitm.js\nBoxParser.createFullBoxCtor(\"pitm\", \"PrimaryItemBox\", function(stream) {\n\tif (this.version === 0) {\n\t\tthis.item_id = stream.readUint16();\n\t} else {\n\t\tthis.item_id = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/pixi.js\nBoxParser.createFullBoxCtor(\"pixi\", \"PixelInformationProperty\", function(stream) {\n\tvar i;\n\tthis.num_channels = stream.readUint8();\n\tthis.bits_per_channels = [];\n\tfor (i = 0; i < this.num_channels; i++) {\n\t\tthis.bits_per_channels[i] = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/pmax.js\nBoxParser.createBoxCtor(\"pmax\", \"hintlargestpacket\", function(stream) {\n\tthis.bytes = stream.readUint32();\n});\n\n// file:src/parsing/prdi.js\nBoxParser.createFullBoxCtor(\"prdi\", \"ProgressiveDerivedImageItemInformationProperty\", function(stream) {\n\tthis.step_count = stream.readUint16();\n\tthis.item_count = [];\n\tif (this.flags & 0x2) {\n\t\tfor (var i = 0; i < this.step_count; i++) {\n\t\t\tthis.item_count[i] = stream.readUint16();\n\t\t}\n\t}\n});// file:src/parsing/prft.js\nBoxParser.createFullBoxCtor(\"prft\", \"ProducerReferenceTimeBox\", function(stream) {\n\tthis.ref_track_id = stream.readUint32();\n\tthis.ntp_timestamp = stream.readUint64();\n\tif (this.version === 0) {\n\t\tthis.media_time = stream.readUint32();\n\t} else {\n\t\tthis.media_time = stream.readUint64();\n\t}\n});\n\n// file:src/parsing/pssh.js\nBoxParser.createFullBoxCtor(\"pssh\", \"ProtectionSystemSpecificHeaderBox\", function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tif (this.version > 0) {\n\t\tvar count = stream.readUint32();\n\t\tthis.kid = [];\n\t\tfor (var i = 0; i < count; i++) {\n\t\t\tthis.kid[i] = BoxParser.parseHex16(stream);\n\t\t}\n\t}\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/qt/clef.js\nBoxParser.createFullBoxCtor(\"clef\", \"TrackCleanApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/enof.js\nBoxParser.createFullBoxCtor(\"enof\", \"TrackEncodedPixelsDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/prof.js\nBoxParser.createFullBoxCtor(\"prof\", \"TrackProductionApertureDimensionsBox\", function(stream) {\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});// file:src/parsing/qt/tapt.js\nBoxParser.createContainerBoxCtor(\"tapt\", \"TrackApertureModeDimensionsBox\", null, [ \"clef\", \"prof\", \"enof\"]);// file:src/parsing/rtp.js\nBoxParser.createBoxCtor(\"rtp \", \"rtpmoviehintinformation\", function(stream) {\n\tthis.descriptionformat = stream.readString(4);\n\tthis.sdptext = stream.readString(this.size - this.hdr_size - 4);\n});\n\n// file:src/parsing/saio.js\nBoxParser.createFullBoxCtor(\"saio\", \"SampleAuxiliaryInformationOffsetsBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tvar count = stream.readUint32();\n\tthis.offset = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tif (this.version === 0) {\n\t\t\tthis.offset[i] = stream.readUint32();\n\t\t} else {\n\t\t\tthis.offset[i] = stream.readUint64();\n\t\t}\n\t}\n});\n// file:src/parsing/saiz.js\nBoxParser.createFullBoxCtor(\"saiz\", \"SampleAuxiliaryInformationSizesBox\", function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.aux_info_type = stream.readString(4);\n\t\tthis.aux_info_type_parameter = stream.readUint32();\n\t}\n\tthis.default_sample_info_size = stream.readUint8();\n\tthis.sample_count = stream.readUint32();\n\tthis.sample_info_size = [];\n\tif (this.default_sample_info_size === 0) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tthis.sample_info_size[i] = stream.readUint8();\n\t\t}\n\t}\n});\n\n// file:src/parsing/sampleentries/mett.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"mett\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/metx.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"metx\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/sbtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"sbtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stpp.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stpp\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.namespace = stream.readCString();\n\tthis.schema_location = stream.readCString();\n\tthis.auxiliary_mime_types = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/stxt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"stxt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.content_encoding = stream.readCString();\n\tthis.mime_format = stream.readCString();\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/sampleentries/tx3g.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_SUBTITLE, \"tx3g\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.displayFlags = stream.readUint32();\n\tthis.horizontal_justification = stream.readInt8();\n\tthis.vertical_justification = stream.readInt8();\n\tthis.bg_color_rgba = stream.readUint8Array(4);\n\tthis.box_record = stream.readInt16Array(4);\n\tthis.style_record = stream.readUint8Array(12);\n\tthis.parseFooter(stream);\n});\n// file:src/parsing/sampleentries/wvtt.js\nBoxParser.createSampleEntryCtor(BoxParser.SAMPLE_ENTRY_TYPE_METADATA, \"wvtt\", function(stream) {\n\tthis.parseHeader(stream);\n\tthis.parseFooter(stream);\n});\n\n// file:src/parsing/samplegroups/alst.js\nBoxParser.createSampleGroupCtor(\"alst\", function(stream) {\n\tvar i;\n\tvar roll_count = stream.readUint16();\n\tthis.first_output_sample = stream.readUint16();\n\tthis.sample_offset = [];\n\tfor (i = 0; i < roll_count; i++) {\n\t\tthis.sample_offset[i] = stream.readUint32();\n\t}\n\tvar remaining = this.description_length - 4 - 4*roll_count;\n\tthis.num_output_samples = [];\n\tthis.num_total_samples = [];\n\tfor (i = 0; i < remaining/4; i++) {\n\t\tthis.num_output_samples[i] = stream.readUint16();\n\t\tthis.num_total_samples[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/avll.js\nBoxParser.createSampleGroupCtor(\"avll\", function(stream) {\n\tthis.layerNumber = stream.readUint8();\n\tthis.accurateStatisticsFlag = stream.readUint8();\n\tthis.avgBitRate = stream.readUint16();\n\tthis.avgFrameRate = stream.readUint16();\n});\n\n// file:src/parsing/samplegroups/avss.js\nBoxParser.createSampleGroupCtor(\"avss\", function(stream) {\n\tthis.subSequenceIdentifier = stream.readUint16();\n\tthis.layerNumber = stream.readUint8();\n\tvar tmp_byte = stream.readUint8();\n\tthis.durationFlag = tmp_byte >> 7;\n\tthis.avgRateFlag = (tmp_byte >> 6) & 0x1;\n\tif (this.durationFlag) {\n\t\tthis.duration = stream.readUint32();\n\t}\n\tif (this.avgRateFlag) {\n\t\tthis.accurateStatisticsFlag = stream.readUint8();\n\t\tthis.avgBitRate = stream.readUint16();\n\t\tthis.avgFrameRate = stream.readUint16();\n\t}\n\tthis.dependency = [];\n\tvar numReferences = stream.readUint8();\n\tfor (var i = 0; i < numReferences; i++) {\n\t\tvar dependencyInfo = {};\n\t\tthis.dependency.push(dependencyInfo);\n\t\tdependencyInfo.subSeqDirectionFlag = stream.readUint8();\n\t\tdependencyInfo.layerNumber = stream.readUint8();\n\t\tdependencyInfo.subSequenceIdentifier = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/samplegroups/dtrt.js\nBoxParser.createSampleGroupCtor(\"dtrt\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/mvif.js\nBoxParser.createSampleGroupCtor(\"mvif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/prol.js\nBoxParser.createSampleGroupCtor(\"prol\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/rap.js\nBoxParser.createSampleGroupCtor(\"rap \", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.num_leading_samples_known = tmp_byte >> 7;\n\tthis.num_leading_samples = tmp_byte & 0x7F;\n});\n\n// file:src/parsing/samplegroups/rash.js\nBoxParser.createSampleGroupCtor(\"rash\", function(stream) {\n\tthis.operation_point_count = stream.readUint16();\n\tif (this.description_length !== 2+(this.operation_point_count === 1?2:this.operation_point_count*6)+9) {\n\t\tLog.warn(\"BoxParser\", \"Mismatch in \"+this.grouping_type+\" sample group length\");\n\t\tthis.data = stream.readUint8Array(this.description_length-2);\n\t} else {\n\t\tif (this.operation_point_count === 1) {\n\t\t\tthis.target_rate_share = stream.readUint16();\n\t\t} else {\n\t\t\tthis.target_rate_share = [];\n\t\t\tthis.available_bitrate = [];\n\t\t\tfor (var i = 0; i < this.operation_point_count; i++) {\n\t\t\t\tthis.available_bitrate[i] = stream.readUint32();\n\t\t\t\tthis.target_rate_share[i] = stream.readUint16();\n\t\t\t}\n\t\t}\n\t\tthis.maximum_bitrate = stream.readUint32();\n\t\tthis.minimum_bitrate = stream.readUint32();\n\t\tthis.discard_priority = stream.readUint8();\n\t}\n});\n\n// file:src/parsing/samplegroups/roll.js\nBoxParser.createSampleGroupCtor(\"roll\", function(stream) {\n\tthis.roll_distance = stream.readInt16();\n});\n\n// file:src/parsing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.parse = function(stream) {\n\tLog.warn(\"BoxParser\", \"Unknown Sample Group type: \"+this.grouping_type);\n\tthis.data = stream.readUint8Array(this.description_length);\n}\n\n// file:src/parsing/samplegroups/scif.js\nBoxParser.createSampleGroupCtor(\"scif\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/scnm.js\nBoxParser.createSampleGroupCtor(\"scnm\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/seig.js\nBoxParser.createSampleGroupCtor(\"seig\", function(stream) {\n\tthis.reserved = stream.readUint8();\n\tvar tmp = stream.readUint8();\n\tthis.crypt_byte_block = tmp >> 4;\n\tthis.skip_byte_block = tmp & 0xF;\n\tthis.isProtected = stream.readUint8();\n\tthis.Per_Sample_IV_Size = stream.readUint8();\n\tthis.KID = BoxParser.parseHex16(stream);\n\tthis.constant_IV_size = 0;\n\tthis.constant_IV = 0;\n\tif (this.isProtected === 1 && this.Per_Sample_IV_Size === 0) {\n\t\tthis.constant_IV_size = stream.readUint8();\n\t\tthis.constant_IV = stream.readUint8Array(this.constant_IV_size);\n\t}\n});\n\n// file:src/parsing/samplegroups/stsa.js\nBoxParser.createSampleGroupCtor(\"stsa\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/sync.js\nBoxParser.createSampleGroupCtor(\"sync\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.NAL_unit_type = tmp_byte & 0x3F;\n});\n\n// file:src/parsing/samplegroups/tele.js\nBoxParser.createSampleGroupCtor(\"tele\", function(stream) {\n\tvar tmp_byte = stream.readUint8();\n\tthis.level_independently_decodable = tmp_byte >> 7;\n});\n\n// file:src/parsing/samplegroups/tsas.js\nBoxParser.createSampleGroupCtor(\"tsas\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/tscl.js\nBoxParser.createSampleGroupCtor(\"tscl\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/samplegroups/vipr.js\nBoxParser.createSampleGroupCtor(\"vipr\", function(stream) {\n\tLog.warn(\"BoxParser\", \"Sample Group type: \"+this.grouping_type+\" not fully parsed\");\n});\n\n// file:src/parsing/sbgp.js\nBoxParser.createFullBoxCtor(\"sbgp\", \"SampleToGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tif (this.version === 1) {\n\t\tthis.grouping_type_parameter = stream.readUint32();\n\t} else {\n\t\tthis.grouping_type_parameter = 0;\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry = {};\n\t\tthis.entries.push(entry);\n\t\tentry.sample_count = stream.readInt32();\n\t\tentry.group_description_index = stream.readInt32();\n\t}\n});\n\n// file:src/parsing/sbpm.js\nfunction Pixel(row, col) {\n\tthis.bad_pixel_row = row;\n\tthis.bad_pixel_column = col;\n}\n\nPixel.prototype.toString = function pixelToString() {\n\treturn \"[row: \" + this.bad_pixel_row + \", column: \" + this.bad_pixel_column + \"]\";\n}\n\nBoxParser.createFullBoxCtor(\"sbpm\", \"SensorBadPixelsMapBox\", function(stream) {\n\tvar i;\n\tthis.component_count = stream.readUint16();\n this.component_index = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n }\n\tvar flags = stream.readUint8();\n\tthis.correction_applied = (0x80 == (flags & 0x80));\n\tthis.num_bad_rows = stream.readUint32();\n\tthis.num_bad_cols = stream.readUint32();\n\tthis.num_bad_pixels = stream.readUint32();\n\tthis.bad_rows = [];\n\tthis.bad_columns = [];\n\tthis.bad_pixels = [];\n\tfor (i = 0; i < this.num_bad_rows; i++) {\n\t\tthis.bad_rows.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_cols; i++) {\n\t\tthis.bad_columns.push(stream.readUint32());\n\t}\n\tfor (i = 0; i < this.num_bad_pixels; i++) {\n\t\tvar row = stream.readUint32();\n\t\tvar col = stream.readUint32();\n\t\tthis.bad_pixels.push(new Pixel(row, col));\n\t}\n});\n\n// file:src/parsing/schm.js\nBoxParser.createFullBoxCtor(\"schm\", \"SchemeTypeBox\", function(stream) {\n\tthis.scheme_type = stream.readString(4);\n\tthis.scheme_version = stream.readUint32();\n\tif (this.flags & 0x000001) {\n\t\tthis.scheme_uri = stream.readString(this.size - this.hdr_size - 8);\n\t}\n});\n\n// file:src/parsing/sdp.js\nBoxParser.createBoxCtor(\"sdp \", \"rtptracksdphintinformation\", function(stream) {\n\tthis.sdptext = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/sdtp.js\nBoxParser.createFullBoxCtor(\"sdtp\", \"SampleDependencyTypeBox\", function(stream) {\n\tvar tmp_byte;\n\tvar count = (this.size - this.hdr_size);\n\tthis.is_leading = [];\n\tthis.sample_depends_on = [];\n\tthis.sample_is_depended_on = [];\n\tthis.sample_has_redundancy = [];\n\tfor (var i = 0; i < count; i++) {\n\t\ttmp_byte = stream.readUint8();\n\t\tthis.is_leading[i] = tmp_byte >> 6;\n\t\tthis.sample_depends_on[i] = (tmp_byte >> 4) & 0x3;\n\t\tthis.sample_is_depended_on[i] = (tmp_byte >> 2) & 0x3;\n\t\tthis.sample_has_redundancy[i] = tmp_byte & 0x3;\n\t}\n});\n\n// file:src/parsing/senc.js\n// Cannot be fully parsed because Per_Sample_IV_Size needs to be known\r\nBoxParser.createFullBoxCtor(\"senc\", \"SampleEncryptionBox\" /*, function(stream) {\r\n\tthis.parseFullHeader(stream);\r\n\tvar sample_count = stream.readUint32();\r\n\tthis.samples = [];\r\n\tfor (var i = 0; i < sample_count; i++) {\r\n\t\tvar sample = {};\r\n\t\t// tenc.default_Per_Sample_IV_Size or seig.Per_Sample_IV_Size\r\n\t\tsample.InitializationVector = this.readUint8Array(Per_Sample_IV_Size*8);\r\n\t\tif (this.flags & 0x2) {\r\n\t\t\tsample.subsamples = [];\r\n\t\t\tsubsample_count = stream.readUint16();\r\n\t\t\tfor (var j = 0; j < subsample_count; j++) {\r\n\t\t\t\tvar subsample = {};\r\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\r\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\r\n\t\t\t\tsample.subsamples.push(subsample);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// TODO\r\n\t\tthis.samples.push(sample);\r\n\t}\r\n}*/);\r\n// file:src/parsing/sgpd.js\nBoxParser.createFullBoxCtor(\"sgpd\", \"SampleGroupDescriptionBox\", function(stream) {\n\tthis.grouping_type = stream.readString(4);\n\tLog.debug(\"BoxParser\", \"Found Sample Groups of type \"+this.grouping_type);\n\tif (this.version === 1) {\n\t\tthis.default_length = stream.readUint32();\n\t} else {\n\t\tthis.default_length = 0;\n\t}\n\tif (this.version >= 2) {\n\t\tthis.default_group_description_index = stream.readUint32();\n\t}\n\tthis.entries = [];\n\tvar entry_count = stream.readUint32();\n\tfor (var i = 0; i < entry_count; i++) {\n\t\tvar entry;\n\t\tif (BoxParser[this.grouping_type+\"SampleGroupEntry\"]) {\n\t\t\tentry = new BoxParser[this.grouping_type+\"SampleGroupEntry\"](this.grouping_type);\n\t\t} else {\n\t\t\tentry = new BoxParser.SampleGroupEntry(this.grouping_type);\n\t\t}\n\t\tthis.entries.push(entry);\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tentry.description_length = stream.readUint32();\n\t\t\t} else {\n\t\t\t\tentry.description_length = this.default_length;\n\t\t\t}\n\t\t} else {\n\t\t\tentry.description_length = this.default_length;\n\t\t}\n\t\tif (entry.write === BoxParser.SampleGroupEntry.prototype.write) {\n\t\t\tLog.info(\"BoxParser\", \"SampleGroup for type \"+this.grouping_type+\" writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t// storing data\n\t\t\tentry.data = stream.readUint8Array(entry.description_length);\n\t\t\t// rewinding\n\t\t\tstream.position -= entry.description_length;\n\t\t}\n\t\tentry.parse(stream);\n\t}\n});\n\n// file:src/parsing/sidx.js\nBoxParser.createFullBoxCtor(\"sidx\", \"CompressedSegmentIndexBox\", function(stream) {\n\tthis.reference_ID = stream.readUint32();\n\tthis.timescale = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.earliest_presentation_time = stream.readUint32();\n\t\tthis.first_offset = stream.readUint32();\n\t} else {\n\t\tthis.earliest_presentation_time = stream.readUint64();\n\t\tthis.first_offset = stream.readUint64();\n\t}\n\tstream.readUint16();\n\tthis.references = [];\n\tvar count = stream.readUint16();\n\tfor (var i = 0; i < count; i++) {\n\t\tvar ref = {};\n\t\tthis.references.push(ref);\n\t\tvar tmp_32 = stream.readUint32();\n\t\tref.reference_type = (tmp_32 >> 31) & 0x1;\n\t\tref.referenced_size = tmp_32 & 0x7FFFFFFF;\n\t\tref.subsegment_duration = stream.readUint32();\n\t\ttmp_32 = stream.readUint32();\n\t\tref.starts_with_SAP = (tmp_32 >> 31) & 0x1;\n\t\tref.SAP_type = (tmp_32 >> 28) & 0x7;\n\t\tref.SAP_delta_time = tmp_32 & 0xFFFFFFF;\n\t}\n});\n\n// file:src/parsing/singleitemtypereference.js\nBoxParser.SingleItemTypeReferenceBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBox.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBox.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint16();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint16();\n\t}\n}\n\n// file:src/parsing/singleitemtypereferencelarge.js\nBoxParser.SingleItemTypeReferenceBoxLarge = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype = new BoxParser.Box();\nBoxParser.SingleItemTypeReferenceBoxLarge.prototype.parse = function(stream) {\n\tthis.from_item_ID = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.references = [];\n\tfor(var i = 0; i < count; i++) {\n\t\tthis.references[i] = {};\n\t\tthis.references[i].to_item_ID = stream.readUint32();\n\t}\n}\n\n// file:src/parsing/SmDm.js\nBoxParser.createFullBoxCtor(\"SmDm\", \"SMPTE2086MasteringDisplayMetadataBox\", function(stream) {\n\tthis.primaryRChromaticity_x = stream.readUint16();\n this.primaryRChromaticity_y = stream.readUint16();\n this.primaryGChromaticity_x = stream.readUint16();\n this.primaryGChromaticity_y = stream.readUint16();\n this.primaryBChromaticity_x = stream.readUint16();\n this.primaryBChromaticity_y = stream.readUint16();\n this.whitePointChromaticity_x = stream.readUint16();\n this.whitePointChromaticity_y = stream.readUint16();\n this.luminanceMax = stream.readUint32();\n this.luminanceMin = stream.readUint32();\n});\n\n// file:src/parsing/smhd.js\nBoxParser.createFullBoxCtor(\"smhd\", \"SoundMediaHeaderBox\", function(stream) {\n\tthis.balance = stream.readUint16();\n\tstream.readUint16();\n});\n\n// file:src/parsing/ssix.js\nBoxParser.createFullBoxCtor(\"ssix\", \"CompressedSubsegmentIndexBox\", function(stream) {\n\tthis.subsegments = [];\n\tvar subsegment_count = stream.readUint32();\n\tfor (var i = 0; i < subsegment_count; i++) {\n\t\tvar subsegment = {};\n\t\tthis.subsegments.push(subsegment);\n\t\tsubsegment.ranges = [];\n\t\tvar range_count = stream.readUint32();\n\t\tfor (var j = 0; j < range_count; j++) {\n\t\t\tvar range = {};\n\t\t\tsubsegment.ranges.push(range);\n\t\t\trange.level = stream.readUint8();\n\t\t\trange.range_size = stream.readUint24();\n\t\t}\n\t}\n});\n\n// file:src/parsing/stco.js\nBoxParser.createFullBoxCtor(\"stco\", \"ChunkOffsetBox\", function(stream) {\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tthis.chunk_offsets = [];\n\tif (this.version === 0) {\n\t\tfor (var i = 0; i < entry_count; i++) {\n\t\t\tthis.chunk_offsets.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stdp.js\nBoxParser.createFullBoxCtor(\"stdp\", \"DegradationPriorityBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size)/2;\n\tthis.priority = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.priority[i] = stream.readUint16();\n\t}\n});\n\n// file:src/parsing/sthd.js\nBoxParser.createFullBoxCtor(\"sthd\", \"SubtitleMediaHeaderBox\");\n\n// file:src/parsing/stri.js\nBoxParser.createFullBoxCtor(\"stri\", \"SubTrackInformationBox\", function(stream) {\n\tthis.switch_group = stream.readUint16();\n\tthis.alternate_group = stream.readUint16();\n\tthis.sub_track_id = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 8)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsc.js\nBoxParser.createFullBoxCtor(\"stsc\", \"SampleToChunkBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.first_chunk = [];\n\tthis.samples_per_chunk = [];\n\tthis.sample_description_index = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.first_chunk.push(stream.readUint32());\n\t\t\tthis.samples_per_chunk.push(stream.readUint32());\n\t\t\tthis.sample_description_index.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsd.js\nBoxParser.createFullBoxCtor(\"stsd\", \"SampleDescriptionBox\", function(stream) {\n\tvar i;\n\tvar ret;\n\tvar entryCount;\n\tvar box;\n\tthis.entries = [];\n\tentryCount = stream.readUint32();\n\tfor (i = 1; i <= entryCount; i++) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tif (BoxParser[ret.type+\"SampleEntry\"]) {\n\t\t\t\tbox = new BoxParser[ret.type+\"SampleEntry\"](ret.size);\n\t\t\t\tbox.hdr_size = ret.hdr_size;\n\t\t\t\tbox.start = ret.start;\n\t\t\t} else {\n\t\t\t\tLog.warn(\"BoxParser\", \"Unknown sample entry type: \"+ret.type);\n\t\t\t\tbox = new BoxParser.SampleEntry(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\t}\n\t\t\tif (box.write === BoxParser.SampleEntry.prototype.write) {\n\t\t\t\tLog.info(\"BoxParser\", \"SampleEntry \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.entries.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsg.js\nBoxParser.createFullBoxCtor(\"stsg\", \"SubTrackSampleGroupBox\", function(stream) {\n\tthis.grouping_type = stream.readUint32();\n\tvar count = stream.readUint16();\n\tthis.group_description_index = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.group_description_index[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/stsh.js\nBoxParser.createFullBoxCtor(\"stsh\", \"ShadowSyncSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tentry_count = stream.readUint32();\n\tthis.shadowed_sample_numbers = [];\n\tthis.sync_sample_numbers = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.shadowed_sample_numbers.push(stream.readUint32());\n\t\t\tthis.sync_sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stss.js\nBoxParser.createFullBoxCtor(\"stss\", \"SyncSampleBox\", function(stream) {\n\tvar i;\n\tvar entry_count;\n\tentry_count = stream.readUint32();\n\tif (this.version === 0) {\n\t\tthis.sample_numbers = [];\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_numbers.push(stream.readUint32());\n\t\t}\n\t}\n});\n\n// file:src/parsing/stsz.js\nBoxParser.createFullBoxCtor(\"stsz\", \"SampleSizeBox\", function(stream) {\n\tvar i;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.sample_size = stream.readUint32();\n\t\tthis.sample_count = stream.readUint32();\n\t\tfor (i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.sample_size === 0) {\n\t\t\t\tthis.sample_sizes.push(stream.readUint32());\n\t\t\t} else {\n\t\t\t\tthis.sample_sizes[i] = this.sample_size;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/stts.js\nBoxParser.createFullBoxCtor(\"stts\", \"TimeToSampleBox\", function(stream) {\n\tvar entry_count;\n\tvar i;\n\tvar delta;\n\tentry_count = stream.readUint32();\n\tthis.sample_counts = [];\n\tthis.sample_deltas = [];\n\tif (this.version === 0) {\n\t\tfor(i=0; i<entry_count; i++) {\n\t\t\tthis.sample_counts.push(stream.readUint32());\n\t\t\tdelta = stream.readInt32();\n\t\t\tif (delta < 0) {\n\t\t\t\tLog.warn(\"BoxParser\", \"File uses negative stts sample delta, using value 1 instead, sync may be lost!\");\n\t\t\t\tdelta = 1;\n\t\t\t}\n\t\t\tthis.sample_deltas.push(delta);\n\t\t}\n\t}\n});\n\n// file:src/parsing/stvi.js\nBoxParser.createFullBoxCtor(\"stvi\", \"StereoVideoBox\", function(stream) {\n\tvar tmp32 = stream.readUint32();\n\tthis.single_view_allowed = tmp32 & 0x3;\n\tthis.stereo_scheme = stream.readUint32();\n\tvar length = stream.readUint32();\n\tthis.stereo_indication_type = stream.readString(length);\n\tvar ret;\n\tvar box;\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t\tthis[box.type] = box;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/styp.js\nBoxParser.createBoxCtor(\"styp\", \"SegmentTypeBox\", function(stream) {\n\tBoxParser.ftypBox.prototype.parse.call(this, stream);\n});\n\n// file:src/parsing/stz2.js\nBoxParser.createFullBoxCtor(\"stz2\", \"CompactSampleSizeBox\", function(stream) {\n\tvar i;\n\tvar sample_size;\n\tvar sample_count;\n\tthis.sample_sizes = [];\n\tif (this.version === 0) {\n\t\tthis.reserved = stream.readUint24();\n\t\tthis.field_size = stream.readUint8();\n\t\tsample_count = stream.readUint32();\n\t\tif (this.field_size === 4) {\n\t\t\tfor (i = 0; i < sample_count; i+=2) {\n\t\t\t\tvar tmp = stream.readUint8();\n\t\t\t\tthis.sample_sizes[i] = (tmp >> 4) & 0xF;\n\t\t\t\tthis.sample_sizes[i+1] = tmp & 0xF;\n\t\t\t}\n\t\t} else if (this.field_size === 8) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint8();\n\t\t\t}\n\t\t} else if (this.field_size === 16) {\n\t\t\tfor (i = 0; i < sample_count; i++) {\n\t\t\t\tthis.sample_sizes[i] = stream.readUint16();\n\t\t\t}\n\t\t} else {\n\t\t\tLog.error(\"BoxParser\", \"Error in length field in stz2 box\");\n\t\t}\n\t}\n});\n\n// file:src/parsing/subs.js\nBoxParser.createFullBoxCtor(\"subs\", \"SubSampleInformationBox\", function(stream) {\n\tvar i,j;\n\tvar entry_count;\n\tvar subsample_count;\n\tentry_count = stream.readUint32();\n\tthis.entries = [];\n\tfor (i = 0; i < entry_count; i++) {\n\t\tvar sampleInfo = {};\n\t\tthis.entries[i] = sampleInfo;\n\t\tsampleInfo.sample_delta = stream.readUint32();\n\t\tsampleInfo.subsamples = [];\n\t\tsubsample_count = stream.readUint16();\n\t\tif (subsample_count>0) {\n\t\t\tfor (j = 0; j < subsample_count; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsampleInfo.subsamples.push(subsample);\n\t\t\t\tif (this.version == 1) {\n\t\t\t\t\tsubsample.size = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tsubsample.size = stream.readUint16();\n\t\t\t\t}\n\t\t\t\tsubsample.priority = stream.readUint8();\n\t\t\t\tsubsample.discardable = stream.readUint8();\n\t\t\t\tsubsample.codec_specific_parameters = stream.readUint32();\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tenc.js\nBoxParser.createFullBoxCtor(\"tenc\", \"TrackEncryptionBox\", function(stream) {\n\tstream.readUint8(); // reserved\n\tif (this.version === 0) {\n\t\tstream.readUint8();\n\t} else {\n\t\tvar tmp = stream.readUint8();\n\t\tthis.default_crypt_byte_block = (tmp >> 4) & 0xF;\n\t\tthis.default_skip_byte_block = tmp & 0xF;\n\t}\n\tthis.default_isProtected = stream.readUint8();\n\tthis.default_Per_Sample_IV_Size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n\tif (this.default_isProtected === 1 && this.default_Per_Sample_IV_Size === 0) {\n\t\tthis.default_constant_IV_size = stream.readUint8();\n\t\tthis.default_constant_IV = stream.readUint8Array(this.default_constant_IV_size);\n\t}\n});// file:src/parsing/tfdt.js\nBoxParser.createFullBoxCtor(\"tfdt\", \"TrackFragmentBaseMediaDecodeTimeBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.baseMediaDecodeTime = stream.readUint64();\n\t} else {\n\t\tthis.baseMediaDecodeTime = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/tfhd.js\nBoxParser.createFullBoxCtor(\"tfhd\", \"TrackFragmentHeaderBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.track_id = stream.readUint32();\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET)) {\n\t\tthis.base_data_offset = stream.readUint64();\n\t\treadBytes += 8;\n\t} else {\n\t\tthis.base_data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC)) {\n\t\tthis.default_sample_description_index = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_description_index = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR)) {\n\t\tthis.default_sample_duration = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_duration = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE)) {\n\t\tthis.default_sample_size = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_size = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS)) {\n\t\tthis.default_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.default_sample_flags = 0;\n\t}\n});\n\n// file:src/parsing/tfra.js\nBoxParser.createFullBoxCtor(\"tfra\", \"TrackFragmentRandomAccessBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tstream.readUint24();\n\tvar tmp_byte = stream.readUint8();\n\tthis.length_size_of_traf_num = (tmp_byte >> 4) & 0x3;\n\tthis.length_size_of_trun_num = (tmp_byte >> 2) & 0x3;\n\tthis.length_size_of_sample_num = (tmp_byte) & 0x3;\n\tthis.entries = [];\n\tvar number_of_entries = stream.readUint32();\n\tfor (var i = 0; i < number_of_entries; i++) {\n\t\tif (this.version === 1) {\n\t\t\tthis.time = stream.readUint64();\n\t\t\tthis.moof_offset = stream.readUint64();\n\t\t} else {\n\t\t\tthis.time = stream.readUint32();\n\t\t\tthis.moof_offset = stream.readUint32();\n\t\t}\n\t\tthis.traf_number = stream[\"readUint\"+(8*(this.length_size_of_traf_num+1))]();\n\t\tthis.trun_number = stream[\"readUint\"+(8*(this.length_size_of_trun_num+1))]();\n\t\tthis.sample_number = stream[\"readUint\"+(8*(this.length_size_of_sample_num+1))]();\n\t}\n});\n\n// file:src/parsing/tkhd.js\nBoxParser.createFullBoxCtor(\"tkhd\", \"TrackHeaderBox\", function(stream) {\n\tif (this.version == 1) {\n\t\tthis.creation_time = stream.readUint64();\n\t\tthis.modification_time = stream.readUint64();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint64();\n\t} else {\n\t\tthis.creation_time = stream.readUint32();\n\t\tthis.modification_time = stream.readUint32();\n\t\tthis.track_id = stream.readUint32();\n\t\tstream.readUint32();\n\t\tthis.duration = stream.readUint32();\n\t}\n\tstream.readUint32Array(2);\n\tthis.layer = stream.readInt16();\n\tthis.alternate_group = stream.readInt16();\n\tthis.volume = stream.readInt16()>>8;\n\tstream.readUint16();\n\tthis.matrix = stream.readInt32Array(9);\n\tthis.width = stream.readUint32();\n\tthis.height = stream.readUint32();\n});\n\n// file:src/parsing/tmax.js\nBoxParser.createBoxCtor(\"tmax\", \"hintmaxrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/tmin.js\nBoxParser.createBoxCtor(\"tmin\", \"hintminrelativetime\", function(stream) {\n\tthis.time = stream.readUint32();\n});\n\n// file:src/parsing/totl.js\nBoxParser.createBoxCtor(\"totl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpay.js\nBoxParser.createBoxCtor(\"tpay\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint32();\n});\n\n// file:src/parsing/tpyl.js\nBoxParser.createBoxCtor(\"tpyl\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/TrackGroup.js\nBoxParser.TrackGroupTypeBox.prototype.parse = function(stream) {\n\tthis.parseFullHeader(stream);\n\tthis.track_group_id = stream.readUint32();\n}\n\n// file:src/parsing/trackgroups/msrc.js\nBoxParser.createTrackGroupCtor(\"msrc\");// file:src/parsing/TrakReference.js\nBoxParser.TrackReferenceTypeBox = function(type, size, hdr_size, start) {\n\tBoxParser.Box.call(this, type, size);\n\tthis.hdr_size = hdr_size;\n\tthis.start = start;\n}\nBoxParser.TrackReferenceTypeBox.prototype = new BoxParser.Box();\nBoxParser.TrackReferenceTypeBox.prototype.parse = function(stream) {\n\tthis.track_ids = stream.readUint32Array((this.size-this.hdr_size)/4);\n}\n\n// file:src/parsing/tref.js\nBoxParser.trefBox.prototype.parse = function(stream) {\n\tvar ret;\n\tvar box;\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, true, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = new BoxParser.TrackReferenceTypeBox(ret.type, ret.size, ret.hdr_size, ret.start);\n\t\t\tif (box.write === BoxParser.Box.prototype.write && box.type !== \"mdat\") {\n\t\t\t\tLog.info(\"BoxParser\", \"TrackReference \"+box.type+\" box writing not yet implemented, keeping unparsed data in memory for later write\");\n\t\t\t\tbox.parseDataAndRewind(stream);\n\t\t\t}\n\t\t\tbox.parse(stream);\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n}\n\n// file:src/parsing/trep.js\nBoxParser.createFullBoxCtor(\"trep\", \"TrackExtensionPropertiesBox\", function(stream) {\n\tthis.track_ID = stream.readUint32();\n\tthis.boxes = [];\n\twhile (stream.getPosition() < this.start+this.size) {\n\t\tret = BoxParser.parseOneBox(stream, false, this.size - (stream.getPosition() - this.start));\n\t\tif (ret.code === BoxParser.OK) {\n\t\t\tbox = ret.box;\n\t\t\tthis.boxes.push(box);\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n});\n\n// file:src/parsing/trex.js\nBoxParser.createFullBoxCtor(\"trex\", \"TrackExtendsBox\", function(stream) {\n\tthis.track_id = stream.readUint32();\n\tthis.default_sample_description_index = stream.readUint32();\n\tthis.default_sample_duration = stream.readUint32();\n\tthis.default_sample_size = stream.readUint32();\n\tthis.default_sample_flags = stream.readUint32();\n});\n\n// file:src/parsing/trpy.js\nBoxParser.createBoxCtor(\"trpy\", \"hintBytesSent\", function(stream) {\n\tthis.bytessent = stream.readUint64();\n});\n\n// file:src/parsing/trun.js\nBoxParser.createFullBoxCtor(\"trun\", \"TrackRunBox\", function(stream) {\n\tvar readBytes = 0;\n\tthis.sample_count = stream.readUint32();\n\treadBytes+= 4;\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ) {\n\t\tthis.data_offset = stream.readInt32(); //signed\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.data_offset = 0;\n\t}\n\tif (this.size - this.hdr_size > readBytes && (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) ) {\n\t\tthis.first_sample_flags = stream.readUint32();\n\t\treadBytes += 4;\n\t} else {\n\t\tthis.first_sample_flags = 0;\n\t}\n\tthis.sample_duration = [];\n\tthis.sample_size = [];\n\tthis.sample_flags = [];\n\tthis.sample_composition_time_offset = [];\n\tif (this.size - this.hdr_size > readBytes) {\n\t\tfor (var i = 0; i < this.sample_count; i++) {\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\tthis.sample_duration[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\tthis.sample_size[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\tthis.sample_flags[i] = stream.readUint32();\n\t\t\t}\n\t\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\tif (this.version === 0) {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readUint32();\n\t\t\t\t} else {\n\t\t\t\t\tthis.sample_composition_time_offset[i] = stream.readInt32(); //signed\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// file:src/parsing/tsel.js\nBoxParser.createFullBoxCtor(\"tsel\", \"TrackSelectionBox\", function(stream) {\n\tthis.switch_group = stream.readUint32();\n\tvar count = (this.size - this.hdr_size - 4)/4;\n\tthis.attribute_list = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.attribute_list[i] = stream.readUint32();\n\t}\n});\n\n// file:src/parsing/txtC.js\nBoxParser.createFullBoxCtor(\"txtC\", \"TextConfigBox\", function(stream) {\n\tthis.config = stream.readCString();\n});\n\n// file:src/parsing/tyco.js\nBoxParser.createBoxCtor(\"tyco\", \"TypeCombinationBox\", function(stream) {\n\tvar count = (this.size - this.hdr_size) / 4;\n\tthis.compatible_brands = [];\n\tfor (var i = 0; i < count; i++) {\n\t\tthis.compatible_brands[i] = stream.readString(4);\n\t}\n});\n\n// file:src/parsing/udes.js\nBoxParser.createFullBoxCtor(\"udes\", \"UserDescriptionProperty\", function(stream) {\n\tthis.lang = stream.readCString();\n\tthis.name = stream.readCString();\n\tthis.description = stream.readCString();\n\tthis.tags = stream.readCString();\n});\n\n// file:src/parsing/uncC.js\nBoxParser.createFullBoxCtor(\"uncC\", \"UncompressedFrameConfigBox\", function(stream) {\n var i;\n this.profile = stream.readString(4);\n if (this.version == 1) {\n // Nothing - just the profile\n } else if (this.version == 0) {\n this.component_count = stream.readUint32();\n this.component_index = [];\n this.component_bit_depth_minus_one = [];\n this.component_format = [];\n this.component_align_size = [];\n for (i = 0; i < this.component_count; i++) {\n this.component_index.push(stream.readUint16());\n this.component_bit_depth_minus_one.push(stream.readUint8());\n this.component_format.push(stream.readUint8());\n this.component_align_size.push(stream.readUint8());\n }\n this.sampling_type = stream.readUint8();\n this.interleave_type = stream.readUint8();\n this.block_size = stream.readUint8();\n var flags = stream.readUint8();\n this.component_little_endian = (flags >> 7) & 0x1;\n this.block_pad_lsb = (flags >> 6) & 0x1;\n this.block_little_endian = (flags >> 5) & 0x1;\n this.block_reversed = (flags >> 4) & 0x1;\n this.pad_unknown = (flags >> 3) & 0x1;\n this.pixel_size = stream.readUint32();\n this.row_align_size = stream.readUint32();\n this.tile_align_size = stream.readUint32();\n this.num_tile_cols_minus_one = stream.readUint32();\n this.num_tile_rows_minus_one = stream.readUint32();\n }\n});\n\n// file:src/parsing/url.js\nBoxParser.createFullBoxCtor(\"url \", \"DataEntryUrlBox\", function(stream) {\n\tif (this.flags !== 0x000001) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/urn.js\nBoxParser.createFullBoxCtor(\"urn \", \"DataEntryUrnBox\", function(stream) {\n\tthis.name = stream.readCString();\n\tif (this.size - this.hdr_size - this.name.length - 1 > 0) {\n\t\tthis.location = stream.readCString();\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffLsm.js\nBoxParser.createUUIDBox(\"a5d40b30e81411ddba2f0800200c9a66\", \"LiveServerManifestBox\", true, false, function(stream) {\n this.LiveServerManifest = stream.readString(this.size - this.hdr_size)\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n});// file:src/parsing/uuid/piff/piffPssh.js\nBoxParser.createUUIDBox(\"d08a4f1810f34a82b6c832d8aba183d3\", \"PiffProtectionSystemSpecificHeaderBox\", true, false, function(stream) {\n\tthis.system_id = BoxParser.parseHex16(stream);\n\tvar datasize = stream.readUint32();\n\tif (datasize > 0) {\n\t\tthis.data = stream.readUint8Array(datasize);\n\t}\n});\n\n// file:src/parsing/uuid/piff/piffSenc.js\nBoxParser.createUUIDBox(\"a2394f525a9b4f14a2446c427c648df4\", \"PiffSampleEncryptionBox\", true, false /*, function(stream) {\n\tif (this.flags & 0x1) {\n\t\tthis.AlgorithmID = stream.readUint24();\n\t\tthis.IV_size = stream.readUint8();\n\t\tthis.KID = BoxParser.parseHex16(stream);\n\t}\n\tvar sample_count = stream.readUint32();\n\tthis.samples = [];\n\tfor (var i = 0; i < sample_count; i++) {\n\t\tvar sample = {};\n\t\tsample.InitializationVector = this.readUint8Array(this.IV_size*8);\n\t\tif (this.flags & 0x2) {\n\t\t\tsample.subsamples = [];\n\t\t\tsample.NumberOfEntries = stream.readUint16();\n\t\t\tfor (var j = 0; j < sample.NumberOfEntries; j++) {\n\t\t\t\tvar subsample = {};\n\t\t\t\tsubsample.BytesOfClearData = stream.readUint16();\n\t\t\t\tsubsample.BytesOfProtectedData = stream.readUint32();\n\t\t\t\tsample.subsamples.push(subsample);\n\t\t\t}\n\t\t}\n\t\tthis.samples.push(sample);\n\t}\n}*/);\n// file:src/parsing/uuid/piff/piffTenc.js\nBoxParser.createUUIDBox(\"8974dbce7be74c5184f97148f9882554\", \"PiffTrackEncryptionBox\", true, false, function(stream) {\n\tthis.default_AlgorithmID = stream.readUint24();\n\tthis.default_IV_size = stream.readUint8();\n\tthis.default_KID = BoxParser.parseHex16(stream);\n});// file:src/parsing/uuid/piff/piffTfrf.js\nBoxParser.createUUIDBox(\"d4807ef2ca3946958e5426cb9e46a79f\", \"TfrfBox\", true, false, function(stream) {\n this.fragment_count = stream.readUint8();\n this.entries = [];\n\n for (var i = 0; i < this.fragment_count; i++) {\n var entry = {};\n var absolute_time = 0;\n var absolute_duration = 0;\n\n if (this.version === 1) {\n absolute_time = stream.readUint64();\n absolute_duration = stream.readUint64();\n } else {\n absolute_time = stream.readUint32();\n absolute_duration = stream.readUint32();\n }\n\n entry.absolute_time = absolute_time;\n entry.absolute_duration = absolute_duration;\n\n this.entries.push(entry);\n }\n});// file:src/parsing/uuid/piff/piffTfxd.js\nBoxParser.createUUIDBox(\"6d1d9b0542d544e680e2141daff757b2\", \"TfxdBox\", true, false, function(stream) {\n if (this.version === 1) {\n this.absolute_time = stream.readUint64();\n this.duration = stream.readUint64();\n } else {\n this.absolute_time = stream.readUint32();\n this.duration = stream.readUint32();\n }\n});// file:src/parsing/vmhd.js\nBoxParser.createFullBoxCtor(\"vmhd\", \"VideoMediaHeaderBox\", function(stream) {\n\tthis.graphicsmode = stream.readUint16();\n\tthis.opcolor = stream.readUint16Array(3);\n});\n\n// file:src/parsing/vpcC.js\nBoxParser.createFullBoxCtor(\"vpcC\", \"VPCodecConfigurationRecord\", function (stream) {\n\tvar tmp;\n\tif (this.version === 1) {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = tmp >> 4;\n\t\tthis.chromaSubsampling = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.colourPrimaries = stream.readUint8();\n\t\tthis.transferCharacteristics = stream.readUint8();\n\t\tthis.matrixCoefficients = stream.readUint8();\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t} else {\n\t\tthis.profile = stream.readUint8();\n\t\tthis.level = stream.readUint8();\n\t\ttmp = stream.readUint8();\n\t\tthis.bitDepth = (tmp >> 4) & 0xF;\n\t\tthis.colorSpace = tmp & 0xF;\n\t\ttmp = stream.readUint8();\n\t\tthis.chromaSubsampling = (tmp >> 4) & 0xF;\n\t\tthis.transferFunction = (tmp >> 1) & 0x7;\n\t\tthis.videoFullRangeFlag = tmp & 0x1;\n\t\tthis.codecIntializationDataSize = stream.readUint16();\n\t\tthis.codecIntializationData = stream.readUint8Array(this.codecIntializationDataSize);\n\t}\n});// file:src/parsing/vttC.js\nBoxParser.createBoxCtor(\"vttC\", \"WebVTTConfigurationBox\", function(stream) {\n\tthis.text = stream.readString(this.size - this.hdr_size);\n});\n\n// file:src/parsing/vvcC.js\nBoxParser.createFullBoxCtor(\"vvcC\", \"VvcConfigurationBox\", function (stream) {\n var i, j;\n\n // helper object to simplify extracting individual bits\n var bitReader = {\n held_bits: undefined,\n num_held_bits: 0,\n\n stream_read_1_bytes: function (strm) {\n this.held_bits = strm.readUint8();\n this.num_held_bits = 1 * 8;\n },\n stream_read_2_bytes: function (strm) {\n this.held_bits = strm.readUint16();\n this.num_held_bits = 2 * 8;\n },\n\n extract_bits: function (num_bits) {\n var ret = (this.held_bits >> (this.num_held_bits - num_bits)) & ((1 << num_bits) - 1);\n this.num_held_bits -= num_bits;\n return ret;\n }\n };\n\n // VvcDecoderConfigurationRecord\n bitReader.stream_read_1_bytes(stream);\n bitReader.extract_bits(5); // reserved\n this.lengthSizeMinusOne = bitReader.extract_bits(2);\n this.ptl_present_flag = bitReader.extract_bits(1);\n\n if (this.ptl_present_flag) {\n bitReader.stream_read_2_bytes(stream);\n this.ols_idx = bitReader.extract_bits(9);\n this.num_sublayers = bitReader.extract_bits(3);\n this.constant_frame_rate = bitReader.extract_bits(2);\n this.chroma_format_idc = bitReader.extract_bits(2);\n\n bitReader.stream_read_1_bytes(stream);\n this.bit_depth_minus8 = bitReader.extract_bits(3);\n bitReader.extract_bits(5); // reserved\n\n // VvcPTLRecord\n {\n bitReader.stream_read_2_bytes(stream);\n bitReader.extract_bits(2); // reserved\n this.num_bytes_constraint_info = bitReader.extract_bits(6);\n this.general_profile_idc = bitReader.extract_bits(7);\n this.general_tier_flag = bitReader.extract_bits(1);\n\n this.general_level_idc = stream.readUint8();\n\n bitReader.stream_read_1_bytes(stream);\n this.ptl_frame_only_constraint_flag = bitReader.extract_bits(1);\n this.ptl_multilayer_enabled_flag = bitReader.extract_bits(1);\n\n this.general_constraint_info = new Uint8Array(this.num_bytes_constraint_info);\n if (this.num_bytes_constraint_info) {\n for (i = 0; i < this.num_bytes_constraint_info - 1; i++) {\n var cnstr1 = bitReader.extract_bits(6);\n bitReader.stream_read_1_bytes(stream);\n var cnstr2 = bitReader.extract_bits(2);\n\n this.general_constraint_info[i] = ((cnstr1 << 2) | cnstr2);\n }\n this.general_constraint_info[this.num_bytes_constraint_info - 1] = bitReader.extract_bits(6);\n } else {\n //forbidden in spec!\n bitReader.extract_bits(6);\n }\n\n if (this.num_sublayers > 1) {\n bitReader.stream_read_1_bytes(stream);\n this.ptl_sublayer_present_mask = 0;\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n var val = bitReader.extract_bits(1);\n this.ptl_sublayer_present_mask |= val << j;\n }\n for (j = this.num_sublayers; j <= 8 && this.num_sublayers > 1; ++j) {\n bitReader.extract_bits(1); // ptl_reserved_zero_bit\n }\n\n this.sublayer_level_idc = [];\n for (j = this.num_sublayers - 2; j >= 0; --j) {\n if (this.ptl_sublayer_present_mask & (1 << j)) {\n this.sublayer_level_idc[j] = stream.readUint8();\n }\n }\n }\n\n this.ptl_num_sub_profiles = stream.readUint8();\n this.general_sub_profile_idc = [];\n if (this.ptl_num_sub_profiles) {\n for (i = 0; i < this.ptl_num_sub_profiles; i++) {\n this.general_sub_profile_idc.push(stream.readUint32());\n }\n }\n } // end VvcPTLRecord\n\n this.max_picture_width = stream.readUint16();\n this.max_picture_height = stream.readUint16();\n this.avg_frame_rate = stream.readUint16();\n }\n\n var VVC_NALU_OPI = 12;\n var VVC_NALU_DEC_PARAM = 13;\n\n this.nalu_arrays = [];\n var num_of_arrays = stream.readUint8();\n for (i = 0; i < num_of_arrays; i++) {\n var nalu_array = [];\n this.nalu_arrays.push(nalu_array);\n\n bitReader.stream_read_1_bytes(stream);\n nalu_array.completeness = bitReader.extract_bits(1);\n bitReader.extract_bits(2); // reserved\n nalu_array.nalu_type = bitReader.extract_bits(5);\n\n var numNalus = 1;\n if (nalu_array.nalu_type != VVC_NALU_DEC_PARAM && nalu_array.nalu_type != VVC_NALU_OPI) {\n numNalus = stream.readUint16();\n }\n\n for (j = 0; j < numNalus; j++) {\n var len = stream.readUint16();\n nalu_array.push({\n data: stream.readUint8Array(len),\n length: len\n });\n }\n }\n});\n// file:src/parsing/vvnC.js\nBoxParser.createFullBoxCtor(\"vvnC\", \"VvcNALUConfigBox\", function (stream) {\n // VvcNALUConfigBox\n var tmp = strm.readUint8();\n this.lengthSizeMinusOne = (tmp & 0x3);\n});\n// file:src/box-codecs.js\nBoxParser.SampleEntry.prototype.isVideo = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isAudio = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isSubtitle = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isMetadata = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.isHint = function() {\n\treturn false;\n}\n\nBoxParser.SampleEntry.prototype.getCodec = function() {\n\treturn this.type.replace('.','');\n}\n\nBoxParser.SampleEntry.prototype.getWidth = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getHeight = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getChannelCount = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleRate = function() {\n\treturn \"\";\n}\n\nBoxParser.SampleEntry.prototype.getSampleSize = function() {\n\treturn \"\";\n}\n\nBoxParser.VisualSampleEntry.prototype.isVideo = function() {\n\treturn true;\n}\n\nBoxParser.VisualSampleEntry.prototype.getWidth = function() {\n\treturn this.width;\n}\n\nBoxParser.VisualSampleEntry.prototype.getHeight = function() {\n\treturn this.height;\n}\n\nBoxParser.AudioSampleEntry.prototype.isAudio = function() {\n\treturn true;\n}\n\nBoxParser.AudioSampleEntry.prototype.getChannelCount = function() {\n\treturn this.channel_count;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleRate = function() {\n\treturn this.samplerate;\n}\n\nBoxParser.AudioSampleEntry.prototype.getSampleSize = function() {\n\treturn this.samplesize;\n}\n\nBoxParser.SubtitleSampleEntry.prototype.isSubtitle = function() {\n\treturn true;\n}\n\nBoxParser.MetadataSampleEntry.prototype.isMetadata = function() {\n\treturn true;\n}\n\n\nBoxParser.decimalToHex = function(d, padding) {\n\tvar hex = Number(d).toString(16);\n\tpadding = typeof (padding) === \"undefined\" || padding === null ? padding = 2 : padding;\n\twhile (hex.length < padding) {\n\t\thex = \"0\" + hex;\n\t}\n\treturn hex;\n}\n\nBoxParser.avc1SampleEntry.prototype.getCodec =\nBoxParser.avc2SampleEntry.prototype.getCodec =\nBoxParser.avc3SampleEntry.prototype.getCodec =\nBoxParser.avc4SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.avcC) {\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(this.avcC.AVCProfileIndication)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.profile_compatibility)+\n\t\t\t\t\t\t \"\"+BoxParser.decimalToHex(this.avcC.AVCLevelIndication);\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.hev1SampleEntry.prototype.getCodec =\nBoxParser.hvc1SampleEntry.prototype.getCodec = function() {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.hvcC) {\n\t\tbaseCodec += '.';\n\t\tswitch (this.hvcC.general_profile_space) {\n\t\t\tcase 0:\n\t\t\t\tbaseCodec += '';\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tbaseCodec += 'A';\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tbaseCodec += 'B';\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tbaseCodec += 'C';\n\t\t\t\tbreak;\n\t\t}\n\t\tbaseCodec += this.hvcC.general_profile_idc;\n\t\tbaseCodec += '.';\n\t\tvar val = this.hvcC.general_profile_compatibility;\n\t\tvar reversed = 0;\n\t\tfor (i=0; i<32; i++) {\n\t\t\treversed |= val & 1;\n\t\t\tif (i==31) break;\n\t\t\treversed <<= 1;\n\t\t\tval >>=1;\n\t\t}\n\t\tbaseCodec += BoxParser.decimalToHex(reversed, 0);\n\t\tbaseCodec += '.';\n\t\tif (this.hvcC.general_tier_flag === 0) {\n\t\t\tbaseCodec += 'L';\n\t\t} else {\n\t\t\tbaseCodec += 'H';\n\t\t}\n\t\tbaseCodec += this.hvcC.general_level_idc;\n\t\tvar hasByte = false;\n\t\tvar constraint_string = \"\";\n\t\tfor (i = 5; i >= 0; i--) {\n\t\t\tif (this.hvcC.general_constraint_indicator[i] || hasByte) {\n\t\t\t\tconstraint_string = \".\"+BoxParser.decimalToHex(this.hvcC.general_constraint_indicator[i], 0)+constraint_string;\n\t\t\t\thasByte = true;\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.vvc1SampleEntry.prototype.getCodec =\nBoxParser.vvi1SampleEntry.prototype.getCodec = function () {\n\tvar i;\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.vvcC) {\n\t\tbaseCodec += '.' + this.vvcC.general_profile_idc;\n\t\tif (this.vvcC.general_tier_flag) {\n\t\t\tbaseCodec += '.H';\n\t\t} else {\n\t\t\tbaseCodec += '.L';\n\t\t}\n\t\tbaseCodec += this.vvcC.general_level_idc;\n\n\t\tvar constraint_string = \"\";\n\t\tif (this.vvcC.general_constraint_info) {\n\t\t\tvar bytes = [];\n\t\t\tvar byte = 0;\n\t\t\tbyte |= this.vvcC.ptl_frame_only_constraint << 7;\n\t\t\tbyte |= this.vvcC.ptl_multilayer_enabled << 6;\n\t\t\tvar last_nonzero;\n\t\t\tfor (i = 0; i < this.vvcC.general_constraint_info.length; ++i) {\n\t\t\t\tbyte |= (this.vvcC.general_constraint_info[i] >> 2) & 0x3f;\n\t\t\t\tbytes.push(byte);\n\t\t\t\tif (byte) {\n\t\t\t\t\tlast_nonzero = i;\n\t\t\t\t}\n\n\t\t\t\tbyte = (this.vvcC.general_constraint_info[i] >> 2) & 0x03;\n\t\t\t}\n\n\t\t\tif (last_nonzero === undefined) {\n\t\t\t\tconstraint_string = \".CA\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconstraint_string = \".C\"\n\t\t\t\tvar base32_chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n\t\t\t\tvar held_bits = 0;\n\t\t\t\tvar num_held_bits = 0;\n\t\t\t\tfor (i = 0; i <= last_nonzero; ++i) {\n\t\t\t\t\theld_bits = (held_bits << 8) | bytes[i];\n\t\t\t\t\tnum_held_bits += 8;\n\n\t\t\t\t\twhile (num_held_bits >= 5) {\n\t\t\t\t\t\tvar val = (held_bits >> (num_held_bits - 5)) & 0x1f;\n\t\t\t\t\t\tconstraint_string += base32_chars[val];\n\n\t\t\t\t\t\tnum_held_bits -= 5;\n\t\t\t\t\t\theld_bits &= (1 << num_held_bits) - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (num_held_bits) {\n\t\t\t\t\theld_bits <<= (5 - num_held_bits); // right-pad with zeros to 5 bits (is this correct?)\n\t\t\t\t\tconstraint_string += base32_chars[held_bits & 0x1f];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbaseCodec += constraint_string;\n\t}\n\treturn baseCodec;\n}\n\nBoxParser.mp4aSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif (this.esds && this.esds.esd) {\n\t\tvar oti = this.esds.esd.getOTI();\n\t\tvar dsi = this.esds.esd.getAudioConfig();\n\t\treturn baseCodec+\".\"+BoxParser.decimalToHex(oti)+(dsi ? \".\"+dsi: \"\");\n\t} else {\n\t\treturn baseCodec;\n\t}\n}\n\nBoxParser.stxtSampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tif(this.mime_format) {\n\t\treturn baseCodec + \".\" + this.mime_format;\n\t} else {\n\t\treturn baseCodec\n\t}\n}\n\nBoxParser.vp08SampleEntry.prototype.getCodec =\nBoxParser.vp09SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.vpcC.level;\n\tif (level == 0) {\n\t\tlevel = \"00\";\n\t}\n\tvar bitDepth = this.vpcC.bitDepth;\n\tif (bitDepth == 8) {\n\t\tbitDepth = \"08\";\n\t}\n\treturn baseCodec + \".0\" + this.vpcC.profile + \".\" + level + \".\" + bitDepth;\n}\n\nBoxParser.av01SampleEntry.prototype.getCodec = function() {\n\tvar baseCodec = BoxParser.SampleEntry.prototype.getCodec.call(this);\n\tvar level = this.av1C.seq_level_idx_0;\n\tif (level < 10) {\n\t\tlevel = \"0\" + level;\n\t}\n\tvar bitdepth;\n\tif (this.av1C.seq_profile === 2 && this.av1C.high_bitdepth === 1) {\n\t\tbitdepth = (this.av1C.twelve_bit === 1) ? \"12\" : \"10\";\n\t} else if ( this.av1C.seq_profile <= 2 ) {\n\t\tbitdepth = (this.av1C.high_bitdepth === 1) ? \"10\" : \"08\";\n\t}\n\t// TODO need to parse the SH to find color config\n\treturn baseCodec+\".\"+this.av1C.seq_profile+\".\"+level+(this.av1C.seq_tier_0?\"H\":\"M\")+\".\"+bitdepth;//+\".\"+this.av1C.monochrome+\".\"+this.av1C.chroma_subsampling_x+\"\"+this.av1C.chroma_subsampling_y+\"\"+this.av1C.chroma_sample_position;\n}\n// file:src/box-write.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.writeHeader = function(stream, msg) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\tLog.debug(\"BoxWriter\", \"Writing box \"+this.type+\" of size: \"+this.size+\" at position \"+stream.getPosition()+(msg || \"\"));\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint32(1);\n\t} else {\n\t\tthis.sizePosition = stream.getPosition();\n\t\tstream.writeUint32(this.size);\n\t}\n\tstream.writeString(this.type, null, 4);\n\tif (this.type === \"uuid\") {\n\t\tstream.writeUint8Array(this.uuid);\n\t}\n\tif (this.size > MAX_SIZE) {\n\t\tstream.writeUint64(this.size);\n\t} \n}\n\nBoxParser.FullBox.prototype.writeHeader = function(stream) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream, \" v=\"+this.version+\" f=\"+this.flags);\n\tstream.writeUint8(this.version);\n\tstream.writeUint24(this.flags);\n}\n\nBoxParser.Box.prototype.write = function(stream) {\n\tif (this.type === \"mdat\") {\n\t\t/* TODO: fix this */\n\t\tif (this.data) {\n\t\t\tthis.size = this.data.length;\n\t\t\tthis.writeHeader(stream);\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t} else {\n\t\tthis.size = (this.data ? this.data.length : 0);\n\t\tthis.writeHeader(stream);\n\t\tif (this.data) {\n\t\t\tstream.writeUint8Array(this.data);\n\t\t}\n\t}\n}\n\nBoxParser.ContainerBox.prototype.write = function(stream) {\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].write(stream);\n\t\t\tthis.size += this.boxes[i].size;\n\t\t}\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\nBoxParser.TrackReferenceTypeBox.prototype.write = function(stream) {\n\tthis.size = this.track_ids.length*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32Array(this.track_ids);\n}\n\n// file:src/writing/avcC.js\nBoxParser.avcCBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.size = 7;\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tthis.size += 2+this.SPS[i].length;\n\t}\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tthis.size += 2+this.PPS[i].length;\n\t}\n\tif (this.ext) {\n\t\tthis.size += this.ext.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint8(this.configurationVersion);\n\tstream.writeUint8(this.AVCProfileIndication);\n\tstream.writeUint8(this.profile_compatibility);\n\tstream.writeUint8(this.AVCLevelIndication);\n\tstream.writeUint8(this.lengthSizeMinusOne + (63<<2));\n\tstream.writeUint8(this.SPS.length + (7<<5));\n\tfor (i = 0; i < this.SPS.length; i++) {\n\t\tstream.writeUint16(this.SPS[i].length);\n\t\tstream.writeUint8Array(this.SPS[i].nalu);\n\t}\n\tstream.writeUint8(this.PPS.length);\n\tfor (i = 0; i < this.PPS.length; i++) {\n\t\tstream.writeUint16(this.PPS[i].length);\n\t\tstream.writeUint8Array(this.PPS[i].nalu);\n\t}\n\tif (this.ext) {\n\t\tstream.writeUint8Array(this.ext);\n\t}\n}\n\n// file:src/writing/co64.js\nBoxParser.co64Box.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tfor(i=0; i<this.chunk_offsets.length; i++) {\n\t\tstream.writeUint64(this.chunk_offsets[i]);\n\t}\n}\n\n// file:src/writing/cslg.js\nBoxParser.cslgBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeInt32(this.compositionToDTSShift);\n\tstream.writeInt32(this.leastDecodeToDisplayDelta);\n\tstream.writeInt32(this.greatestDecodeToDisplayDelta);\n\tstream.writeInt32(this.compositionStartTime);\n\tstream.writeInt32(this.compositionEndTime);\n}\n\n// file:src/writing/ctts.js\nBoxParser.cttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tif (this.version === 1) {\n\t\t\tstream.writeInt32(this.sample_offsets[i]); /* signed */\n\t\t} else {\t\t\t\n\t\t\tstream.writeUint32(this.sample_offsets[i]); /* unsigned */\n\t\t}\n\t}\n}\n\n// file:src/writing/dref.js\nBoxParser.drefBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4; //\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\t\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/elng.js\nBoxParser.elngBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.extended_language.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.extended_language);\n}\n\n// file:src/writing/elst.js\nBoxParser.elstBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4+12*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeUint32(entry.segment_duration);\n\t\tstream.writeInt32(entry.media_time);\n\t\tstream.writeInt16(entry.media_rate_integer);\n\t\tstream.writeInt16(entry.media_rate_fraction);\n\t}\n}\n\n// file:src/writing/emsg.js\nBoxParser.emsgBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.scheme_id_uri);\n\tstream.writeCString(this.value);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.presentation_time_delta);\n\tstream.writeUint32(this.event_duration);\n\tstream.writeUint32(this.id);\n\tstream.writeUint8Array(this.message_data);\n}\n\n// file:src/writing/ftyp.js\nBoxParser.ftypBox.prototype.write = function(stream) {\n\tthis.size = 8+4*this.compatible_brands.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.major_brand, null, 4);\n\tstream.writeUint32(this.minor_version);\n\tfor (var i = 0; i < this.compatible_brands.length; i++) {\n\t\tstream.writeString(this.compatible_brands[i], null, 4);\n\t}\n}\n\n// file:src/writing/hdlr.js\nBoxParser.hdlrBox.prototype.write = function(stream) {\n\tthis.size = 5*4+this.name.length+1;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(0);\n\tstream.writeString(this.handler, null, 4);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeCString(this.name);\n}\n\n// file:src/writing/hvcC.js\nBoxParser.hvcCBox.prototype.write = function(stream) {\n var i,j;\n this.size = 23;\n\n for (i = 0; i < this.nalu_arrays.length; i++) {\n this.size += 3;\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n this.size += 2 + this.nalu_arrays[i][j].data.length;\n }\n }\n\n this.writeHeader(stream);\n\n stream.writeUint8(this.configurationVersion);\n stream.writeUint8((this.general_profile_space << 6) +\n (this.general_tier_flag << 5) +\n this.general_profile_idc);\n stream.writeUint32(this.general_profile_compatibility);\n stream.writeUint8Array(this.general_constraint_indicator);\n stream.writeUint8(this.general_level_idc);\n stream.writeUint16(this.min_spatial_segmentation_idc + (15<<24));\n stream.writeUint8(this.parallelismType + (63<<2));\n stream.writeUint8(this.chroma_format_idc + (63<<2));\n stream.writeUint8(this.bit_depth_luma_minus8 + (31<<3));\n stream.writeUint8(this.bit_depth_chroma_minus8 + (31<<3));\n stream.writeUint16(this.avgFrameRate);\n stream.writeUint8((this.constantFrameRate<<6) +\n (this.numTemporalLayers<<3) +\n (this.temporalIdNested<<2) +\n this.lengthSizeMinusOne);\n stream.writeUint8(this.nalu_arrays.length);\n for (i = 0; i < this.nalu_arrays.length; i++) {\n // bit(1) array_completeness + bit(1) reserved = 0 + bit(6) nal_unit_type\n stream.writeUint8((this.nalu_arrays[i].completeness<<7) +\n this.nalu_arrays[i].nalu_type);\n stream.writeUint16(this.nalu_arrays[i].length);\n for (j = 0; j < this.nalu_arrays[i].length; j++) {\n stream.writeUint16(this.nalu_arrays[i][j].data.length);\n stream.writeUint8Array(this.nalu_arrays[i][j].data);\n }\n }\n}\n// file:src/writing/kind.js\nBoxParser.kindBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = (this.schemeURI.length+1)+(this.value.length+1);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.schemeURI);\n\tstream.writeCString(this.value);\n}\n\n// file:src/writing/mdhd.js\nBoxParser.mdhdBox.prototype.write = function(stream) {\n\tthis.size = 4*4+2*2;\n\tthis.flags = 0;\n\tthis.version = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint16(this.language);\n\tstream.writeUint16(0);\n}\n\n// file:src/writing/mehd.js\nBoxParser.mehdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.fragment_duration);\n}\n\n// file:src/writing/mfhd.js\nBoxParser.mfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sequence_number);\n}\n\n// file:src/writing/mvhd.js\nBoxParser.mvhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 23*4+2*2;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(this.rate);\n\tstream.writeUint16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32Array(this.matrix);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.next_track_id);\n}\n\n// file:src/writing/sampleentry.js\nBoxParser.SampleEntry.prototype.writeHeader = function(stream) {\n\tthis.size = 8;\n\tBoxParser.Box.prototype.writeHeader.call(this, stream);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint8(0);\n\tstream.writeUint16(this.data_reference_index);\n}\n\nBoxParser.SampleEntry.prototype.writeFooter = function(stream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(stream);\n\t\tthis.size += this.boxes[i].size;\n\t}\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.SampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tstream.writeUint8Array(this.data);\n\tthis.size += this.data.length;\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\t\n}\n\nBoxParser.VisualSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*7+6*4+32;\n\tstream.writeUint16(0); \n\tstream.writeUint16(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.width);\n\tstream.writeUint16(this.height);\n\tstream.writeUint32(this.horizresolution);\n\tstream.writeUint32(this.vertresolution);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.frame_count);\n\tstream.writeUint8(Math.min(31, this.compressorname.length));\n\tstream.writeString(this.compressorname, null, 31);\n\tstream.writeUint16(this.depth);\n\tstream.writeInt16(-1);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.AudioSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += 2*4+3*4;\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeUint16(this.channel_count);\n\tstream.writeUint16(this.samplesize);\n\tstream.writeUint16(0);\n\tstream.writeUint16(0);\n\tstream.writeUint32(this.samplerate<<16);\n\tthis.writeFooter(stream);\n}\n\nBoxParser.stppSampleEntry.prototype.write = function(stream) {\n\tthis.writeHeader(stream);\n\tthis.size += this.namespace.length+1+\n\t\t\t\t this.schema_location.length+1+\n\t\t\t\t this.auxiliary_mime_types.length+1;\n\tstream.writeCString(this.namespace);\n\tstream.writeCString(this.schema_location);\n\tstream.writeCString(this.auxiliary_mime_types);\n\tthis.writeFooter(stream);\n}\n\n// file:src/writing/samplegroups/samplegroup.js\nBoxParser.SampleGroupEntry.prototype.write = function(stream) {\n\tstream.writeUint8Array(this.data);\n}\n\n// file:src/writing/sbgp.js\nBoxParser.sbgpBox.prototype.write = function(stream) {\n\tthis.version = 1;\t\n\tthis.flags = 0;\n\tthis.size = 12+8*this.entries.length;\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tstream.writeUint32(this.grouping_type_parameter);\n\tstream.writeUint32(this.entries.length);\n\tfor (var i = 0; i < this.entries.length; i++) {\n\t\tvar entry = this.entries[i];\n\t\tstream.writeInt32(entry.sample_count);\n\t\tstream.writeInt32(entry.group_description_index);\n\t}\n}\n\n// file:src/writing/sgpd.js\nBoxParser.sgpdBox.prototype.write = function(stream) {\n\tvar i;\n\tvar entry;\n\t// leave version as read\n\t// this.version;\n\tthis.flags = 0;\n\tthis.size = 12;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tthis.size += 4;\n\t\t\t}\n\t\t\tthis.size += entry.data.length;\n\t\t}\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeString(this.grouping_type, null, 4);\n\tif (this.version === 1) {\n\t\tstream.writeUint32(this.default_length);\n\t}\n\tif (this.version >= 2) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tstream.writeUint32(this.entries.length);\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tentry = this.entries[i];\n\t\tif (this.version === 1) {\n\t\t\tif (this.default_length === 0) {\n\t\t\t\tstream.writeUint32(entry.description_length);\n\t\t\t}\n\t\t}\n\t\tentry.write(stream);\n\t}\n}\n\n\n// file:src/writing/sidx.js\nBoxParser.sidxBox.prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = 4*4+2+2+12*this.references.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.reference_ID);\n\tstream.writeUint32(this.timescale);\n\tstream.writeUint32(this.earliest_presentation_time);\n\tstream.writeUint32(this.first_offset);\n\tstream.writeUint16(0);\n\tstream.writeUint16(this.references.length);\n\tfor (var i = 0; i < this.references.length; i++) {\n\t\tvar ref = this.references[i];\n\t\tstream.writeUint32(ref.reference_type << 31 | ref.referenced_size);\n\t\tstream.writeUint32(ref.subsegment_duration);\n\t\tstream.writeUint32(ref.starts_with_SAP << 31 | ref.SAP_type << 28 | ref.SAP_delta_time);\n\t}\n}\n\n// file:src/writing/smhd.js\nBoxParser.smhdBox.prototype.write = function(stream) {\n var i;\n this.version = 0;\n this.flags = 1;\n this.size = 4;\n this.writeHeader(stream);\n stream.writeUint16(this.balance);\n stream.writeUint16(0);\n}\n// file:src/writing/stco.js\nBoxParser.stcoBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.chunk_offsets.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.chunk_offsets.length);\n\tstream.writeUint32Array(this.chunk_offsets);\n}\n\n// file:src/writing/stsc.js\nBoxParser.stscBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+12*this.first_chunk.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.first_chunk.length);\n\tfor(i=0; i<this.first_chunk.length; i++) {\n\t\tstream.writeUint32(this.first_chunk[i]);\n\t\tstream.writeUint32(this.samples_per_chunk[i]);\n\t\tstream.writeUint32(this.sample_description_index[i]);\n\t}\n}\n\n// file:src/writing/stsd.js\nBoxParser.stsdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 0;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.entries.length);\n\tthis.size += 4;\n\tfor (i = 0; i < this.entries.length; i++) {\n\t\tthis.entries[i].write(stream);\n\t\tthis.size += this.entries[i].size;\n\t}\n\t/* adjusting the size, now that all sub-boxes are known */\n\tLog.debug(\"BoxWriter\", \"Adjusting box \"+this.type+\" with new size \"+this.size);\n\tstream.adjustUint32(this.sizePosition, this.size);\n}\n\n// file:src/writing/stsh.js\nBoxParser.stshBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.shadowed_sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.shadowed_sample_numbers.length);\n\tfor(i=0; i<this.shadowed_sample_numbers.length; i++) {\n\t\tstream.writeUint32(this.shadowed_sample_numbers[i]);\n\t\tstream.writeUint32(this.sync_sample_numbers[i]);\n\t}\n}\n\n// file:src/writing/stss.js\nBoxParser.stssBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+4*this.sample_numbers.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_numbers.length);\n\tstream.writeUint32Array(this.sample_numbers);\n}\n\n// file:src/writing/stsz.js\nBoxParser.stszBox.prototype.write = function(stream) {\n\tvar i;\n\tvar constant = true;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tif (this.sample_sizes.length > 0) {\n\t\ti = 0;\n\t\twhile (i+1 < this.sample_sizes.length) {\n\t\t\tif (this.sample_sizes[i+1] !== this.sample_sizes[0]) {\n\t\t\t\tconstant = false;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconstant = false;\n\t}\n\tthis.size = 8;\n\tif (!constant) {\n\t\tthis.size += 4*this.sample_sizes.length;\n\t}\n\tthis.writeHeader(stream);\n\tif (!constant) {\n\t\tstream.writeUint32(0);\n\t} else {\n\t\tstream.writeUint32(this.sample_sizes[0]);\n\t}\n\tstream.writeUint32(this.sample_sizes.length);\n\tif (!constant) {\n\t\tstream.writeUint32Array(this.sample_sizes);\n\t}\t\n}\n\n// file:src/writing/stts.js\nBoxParser.sttsBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4+8*this.sample_counts.length;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_counts.length);\n\tfor(i=0; i<this.sample_counts.length; i++) {\n\t\tstream.writeUint32(this.sample_counts[i]);\n\t\tstream.writeUint32(this.sample_deltas[i]);\n\t}\n}\n\n// file:src/writing/tfdt.js\nBoxParser.tfdtBox.prototype.write = function(stream) {\n\tvar UINT32_MAX = Math.pow(2, 32) - 1;\n\t// use version 1 if baseMediaDecodeTime does not fit 32 bits\n\tthis.version = this.baseMediaDecodeTime > UINT32_MAX ? 1 : 0;\n\tthis.flags = 0;\n\tthis.size = 4;\n\tif (this.version === 1) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.version === 1) {\n\t\tstream.writeUint64(this.baseMediaDecodeTime);\n\t} else {\n\t\tstream.writeUint32(this.baseMediaDecodeTime);\n\t}\n}\n\n// file:src/writing/tfhd.js\nBoxParser.tfhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tthis.size += 8;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tthis.size += 4;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tif (this.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) {\n\t\tstream.writeUint64(this.base_data_offset);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\tstream.writeUint32(this.default_sample_description_index);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\tstream.writeUint32(this.default_sample_duration);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\tstream.writeUint32(this.default_sample_size);\n\t}\n\tif (this.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\tstream.writeUint32(this.default_sample_flags);\n\t}\n}\n\n// file:src/writing/tkhd.js\nBoxParser.tkhdBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\t//this.flags = 0;\n\tthis.size = 4*18+2*4;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.creation_time);\n\tstream.writeUint32(this.modification_time);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(0);\n\tstream.writeUint32(this.duration);\n\tstream.writeUint32(0);\n\tstream.writeUint32(0);\n\tstream.writeInt16(this.layer);\n\tstream.writeInt16(this.alternate_group);\n\tstream.writeInt16(this.volume<<8);\n\tstream.writeUint16(0);\n\tstream.writeInt32Array(this.matrix);\n\tstream.writeUint32(this.width);\n\tstream.writeUint32(this.height);\n}\n\n// file:src/writing/trex.js\nBoxParser.trexBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.flags = 0;\n\tthis.size = 4*5;\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.track_id);\n\tstream.writeUint32(this.default_sample_description_index);\n\tstream.writeUint32(this.default_sample_duration);\n\tstream.writeUint32(this.default_sample_size);\n\tstream.writeUint32(this.default_sample_flags);\n}\n\n// file:src/writing/trun.js\nBoxParser.trunBox.prototype.write = function(stream) {\n\tthis.version = 0;\n\tthis.size = 4;\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tthis.size += 4;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\tthis.size += 4*this.sample_duration.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\tthis.size += 4*this.sample_size.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\tthis.size += 4*this.sample_flags.length;\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\tthis.size += 4*this.sample_composition_time_offset.length;\n\t}\n\tthis.writeHeader(stream);\n\tstream.writeUint32(this.sample_count);\n\tif (this.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) {\n\t\tthis.data_offset_position = stream.getPosition();\n\t\tstream.writeInt32(this.data_offset); //signed\n\t}\n\tif (this.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG) {\n\t\tstream.writeUint32(this.first_sample_flags);\n\t}\n\tfor (var i = 0; i < this.sample_count; i++) {\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\tstream.writeUint32(this.sample_duration[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\tstream.writeUint32(this.sample_size[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\tstream.writeUint32(this.sample_flags[i]);\n\t\t}\n\t\tif (this.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\tif (this.version === 0) {\n\t\t\t\tstream.writeUint32(this.sample_composition_time_offset[i]);\n\t\t\t} else {\n\t\t\t\tstream.writeInt32(this.sample_composition_time_offset[i]); //signed\n\t\t\t}\n\t\t}\n\t}\t\t\n}\n\n// file:src/writing/url.js\nBoxParser[\"url Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tif (this.location) {\n\t\tthis.flags = 0;\n\t\tthis.size = this.location.length+1;\n\t} else {\n\t\tthis.flags = 0x000001;\n\t\tthis.size = 0;\n\t}\n\tthis.writeHeader(stream);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/urn.js\nBoxParser[\"urn Box\"].prototype.write = function(stream) {\n\tthis.version = 0;\t\n\tthis.flags = 0;\n\tthis.size = this.name.length+1+(this.location ? this.location.length+1 : 0);\n\tthis.writeHeader(stream);\n\tstream.writeCString(this.name);\n\tif (this.location) {\n\t\tstream.writeCString(this.location);\n\t}\n}\n\n// file:src/writing/vmhd.js\nBoxParser.vmhdBox.prototype.write = function(stream) {\n\tvar i;\n\tthis.version = 0;\n\tthis.flags = 1;\n\tthis.size = 8;\n\tthis.writeHeader(stream);\n\tstream.writeUint16(this.graphicsmode);\n\tstream.writeUint16Array(this.opcolor);\n}\n\n// file:src/box-unpack.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.cttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tsamples[k].pts = samples[k].dts + this.sample_offsets[i];\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.sttsBox.prototype.unpack = function(samples) {\n\tvar i, j, k;\n\tk = 0;\n\tfor (i = 0; i < this.sample_counts.length; i++) {\n\t\tfor (j = 0; j < this.sample_counts[i]; j++) {\n\t\t\tif (k === 0) {\n\t\t\t\tsamples[k].dts = 0;\n\t\t\t} else {\n\t\t\t\tsamples[k].dts = samples[k-1].dts + this.sample_deltas[i];\n\t\t\t}\n\t\t\tk++;\n\t\t}\n\t}\n}\n\nBoxParser.stcoBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.chunk_offsets.length; i++) {\n\t\tsamples[i].offset = this.chunk_offsets[i];\n\t}\n}\n\nBoxParser.stscBox.prototype.unpack = function(samples) {\n\tvar i, j, k, l, m;\n\tl = 0;\n\tm = 0;\n\tfor (i = 0; i < this.first_chunk.length; i++) {\n\t\tfor (j = 0; j < (i+1 < this.first_chunk.length ? this.first_chunk[i+1] : Infinity); j++) {\n\t\t\tm++;\n\t\t\tfor (k = 0; k < this.samples_per_chunk[i]; k++) {\n\t\t\t\tif (samples[l]) {\n\t\t\t\t\tsamples[l].description_index = this.sample_description_index[i];\n\t\t\t\t\tsamples[l].chunk_index = m;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tl++;\n\t\t\t}\t\t\t\n\t\t}\n\t}\n}\n\nBoxParser.stszBox.prototype.unpack = function(samples) {\n\tvar i;\n\tfor (i = 0; i < this.sample_sizes.length; i++) {\n\t\tsamples[i].size = this.sample_sizes[i];\n\t}\n}\n// file:src/box-diff.js\n\nBoxParser.DIFF_BOXES_PROP_NAMES = [ \"boxes\", \"entries\", \"references\", \"subsamples\",\n\t\t\t\t\t \t \"items\", \"item_infos\", \"extents\", \"associations\",\n\t\t\t\t\t \t \"subsegments\", \"ranges\", \"seekLists\", \"seekPoints\",\n\t\t\t\t\t \t \"esd\", \"levels\"];\n\nBoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES = [ \"compatible_brands\", \"matrix\", \"opcolor\", \"sample_counts\", \"sample_deltas\",\n\"first_chunk\", \"samples_per_chunk\", \"sample_sizes\", \"chunk_offsets\", \"sample_offsets\", \"sample_description_index\", \"sample_duration\" ];\n\nBoxParser.boxEqualFields = function(box_a, box_b) {\n\tif (box_a && !box_b) return false;\n\tvar prop;\n\tfor (prop in box_a) {\n\t\tif (BoxParser.DIFF_BOXES_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\tcontinue;\n\t\t// } else if (excluded_fields && excluded_fields.indexOf(prop) > -1) {\n\t\t// \tcontinue;\n\t\t} else if (box_a[prop] instanceof BoxParser.Box || box_b[prop] instanceof BoxParser.Box) {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"undefined\" || typeof box_b[prop] === \"undefined\") {\n\t\t\tcontinue;\n\t\t} else if (typeof box_a[prop] === \"function\" || typeof box_b[prop] === \"function\") {\n\t\t\tcontinue;\n\t\t} else if (\n\t\t\t(box_a.subBoxNames && box_a.subBoxNames.indexOf(prop.slice(0,4)) > -1) ||\n\t\t\t(box_b.subBoxNames && box_b.subBoxNames.indexOf(prop.slice(0,4)) > -1)) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tif (prop === \"data\" || prop === \"start\" || prop === \"size\" || prop === \"creation_time\" || prop === \"modification_time\") {\n\t\t\t\tcontinue;\n\t\t\t} else if (BoxParser.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(prop) > -1) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tif (box_a[prop] !== box_b[prop]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\nBoxParser.boxEqual = function(box_a, box_b) {\n\tif (!BoxParser.boxEqualFields(box_a, box_b)) {\n\t\treturn false;\n\t}\n\tfor (var j = 0; j < BoxParser.DIFF_BOXES_PROP_NAMES.length; j++) {\n\t\tvar name = BoxParser.DIFF_BOXES_PROP_NAMES[j];\n\t\tif (box_a[name] && box_b[name]) {\n\t\t\tif (!BoxParser.boxEqual(box_a[name], box_b[name])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n// file:src/text-mp4.js\n/* \n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar VTTin4Parser = function() {\t\n}\n\nVTTin4Parser.prototype.parseSample = function(data) {\n\tvar cues, cue;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tcues = [];\n\twhile (!stream.isEos()) {\n\t\tcue = BoxParser.parseOneBox(stream, false);\n\t\tif (cue.code === BoxParser.OK && cue.box.type === \"vttc\") {\n\t\t\tcues.push(cue.box);\n\t\t}\t\t\n\t}\n\treturn cues;\n}\n\nVTTin4Parser.prototype.getText = function (startTime, endTime, data) {\n\tfunction pad(n, width, z) {\n\t z = z || '0';\n\t n = n + '';\n\t return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n\t}\n\tfunction secToTimestamp(insec) {\n\t\tvar h = Math.floor(insec/3600);\n\t\tvar m = Math.floor((insec - h*3600)/60);\n\t\tvar s = Math.floor(insec - h*3600 - m*60);\n\t\tvar ms = Math.floor((insec - h*3600 - m*60 - s)*1000);\n\t\treturn \"\"+pad(h, 2)+\":\"+pad(m,2)+\":\"+pad(s, 2)+\".\"+pad(ms, 3);\n\t}\n\tvar cues = this.parseSample(data);\n\tvar string = \"\";\n\tfor (var i = 0; i < cues.length; i++) {\n\t\tvar cueIn4 = cues[i];\n\t\tstring += secToTimestamp(startTime)+\" --> \"+secToTimestamp(endTime)+\"\\r\\n\";\n\t\tstring += cueIn4.payl.text;\n\t}\n\treturn string;\n}\n\nvar XMLSubtitlein4Parser = function() {\t\n}\n\nXMLSubtitlein4Parser.prototype.parseSample = function(sample) {\n\tvar res = {};\t\n\tvar i;\n\tres.resources = [];\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\tif (!sample.subsamples || sample.subsamples.length === 0) {\n\t\tres.documentString = stream.readString(sample.data.length);\n\t} else {\n\t\tres.documentString = stream.readString(sample.subsamples[0].size);\n\t\tif (sample.subsamples.length > 1) {\n\t\t\tfor (i = 1; i < sample.subsamples.length; i++) {\n\t\t\t\tres.resources[i] = stream.readUint8Array(sample.subsamples[i].size);\n\t\t\t}\n\t\t}\n\t}\n\tif (typeof (DOMParser) !== \"undefined\") {\n\t\tres.document = (new DOMParser()).parseFromString(res.documentString, \"application/xml\");\n\t}\n\treturn res;\n}\n\nvar Textin4Parser = function() {\t\n}\n\nTextin4Parser.prototype.parseSample = function(sample) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(sample.data.buffer);\n\ttextString = stream.readString(sample.data.length);\n\treturn textString;\n}\n\nTextin4Parser.prototype.parseConfig = function(data) {\n\tvar textString;\n\tvar stream = new MP4BoxStream(data.buffer);\n\tstream.readUint32(); // version & flags\n\ttextString = stream.readCString();\n\treturn textString;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.VTTin4Parser = VTTin4Parser;\n\texports.XMLSubtitlein4Parser = XMLSubtitlein4Parser;\n\texports.Textin4Parser = Textin4Parser;\n}\n// file:src/isofile.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar ISOFile = function (stream) {\n\t/* MutiBufferStream object used to parse boxes */\n\tthis.stream = stream || new MultiBufferStream();\n\t/* Array of all boxes (in order) found in the file */\n\tthis.boxes = [];\n\t/* Array of all mdats */\n\tthis.mdats = [];\n\t/* Array of all moofs */\n\tthis.moofs = [];\n\t/* Boolean indicating if the file is compatible with progressive parsing (moov first) */\n\tthis.isProgressive = false;\n\t/* Boolean used to fire moov start event only once */\n\tthis.moovStartFound = false;\n\t/* Callback called when the moov parsing starts */\n\tthis.onMoovStart = null;\n\t/* Boolean keeping track of the call to onMoovStart, to avoid double calls */\n\tthis.moovStartSent = false;\n\t/* Callback called when the moov is entirely parsed */\n\tthis.onReady = null;\n\t/* Boolean keeping track of the call to onReady, to avoid double calls */\n\tthis.readySent = false;\n\t/* Callback to call when segments are ready */\n\tthis.onSegment = null;\n\t/* Callback to call when samples are ready */\n\tthis.onSamples = null;\n\t/* Callback to call when there is an error in the parsing or processing of samples */\n\tthis.onError = null;\n\t/* Boolean indicating if the moov box run-length encoded tables of sample information have been processed */\n\tthis.sampleListBuilt = false;\n\t/* Array of Track objects for which fragmentation of samples is requested */\n\tthis.fragmentedTracks = [];\n\t/* Array of Track objects for which extraction of samples is requested */\n\tthis.extractedTracks = [];\n\t/* Boolean indicating that fragmention is ready */\n\tthis.isFragmentationInitialized = false;\n\t/* Boolean indicating that fragmented has started */\n\tthis.sampleProcessingStarted = false;\n\t/* Number of the next 'moof' to generate when fragmenting */\n\tthis.nextMoofNumber = 0;\n\t/* Boolean indicating if the initial list of items has been produced */\n\tthis.itemListBuilt = false;\n\t/* Array of items */\n\tthis.items = [];\n\t/* Array of entity groups */\n\tthis.entity_groups = [];\n\t/* Callback called when the sidx box is entirely parsed */\n\tthis.onSidx = null;\n\t/* Boolean keeping track of the call to onSidx, to avoid double calls */\n\tthis.sidxSent = false;\n}\n\nISOFile.prototype.setSegmentOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar fragTrack = {};\n\t\tthis.fragmentedTracks.push(fragTrack);\n\t\tfragTrack.id = id;\n\t\tfragTrack.user = user;\n\t\tfragTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\tfragTrack.segmentStream = null;\n\t\tfragTrack.nb_samples = 1000;\n\t\tfragTrack.rapAlignement = true;\n\t\tif (options) {\n\t\t\tif (options.nbSamples) fragTrack.nb_samples = options.nbSamples;\n\t\t\tif (options.rapAlignement) fragTrack.rapAlignement = options.rapAlignement;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetSegmentOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar fragTrack = this.fragmentedTracks[i];\n\t\tif (fragTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.fragmentedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.setExtractionOptions = function(id, user, options) {\n\tvar trak = this.getTrackById(id);\n\tif (trak) {\n\t\tvar extractTrack = {};\n\t\tthis.extractedTracks.push(extractTrack);\n\t\textractTrack.id = id;\n\t\textractTrack.user = user;\n\t\textractTrack.trak = trak;\n\t\ttrak.nextSample = 0;\n\t\textractTrack.nb_samples = 1000;\n\t\textractTrack.samples = [];\n\t\tif (options) {\n\t\t\tif (options.nbSamples) extractTrack.nb_samples = options.nbSamples;\n\t\t}\n\t}\n}\n\nISOFile.prototype.unsetExtractionOptions = function(id) {\n\tvar index = -1;\n\tfor (var i = 0; i < this.extractedTracks.length; i++) {\n\t\tvar extractTrack = this.extractedTracks[i];\n\t\tif (extractTrack.id == id) {\n\t\t\tindex = i;\n\t\t}\n\t}\n\tif (index > -1) {\n\t\tthis.extractedTracks.splice(index, 1);\n\t}\n}\n\nISOFile.prototype.parse = function() {\n\tvar found;\n\tvar ret;\n\tvar box;\n\tvar parseBoxHeadersOnly = false;\n\n\tif (this.restoreParsePosition)\t{\n\t\tif (!this.restoreParsePosition()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\twhile (true) {\n\n\t\tif (this.hasIncompleteMdat && this.hasIncompleteMdat()) {\n\t\t\tif (this.processIncompleteMdat()) {\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.saveParsePosition)\t{\n\t\t\t\tthis.saveParsePosition();\n\t\t\t}\n\t\t\tret = BoxParser.parseOneBox(this.stream, parseBoxHeadersOnly);\n\t\t\tif (ret.code === BoxParser.ERR_NOT_ENOUGH_DATA) {\n\t\t\t\tif (this.processIncompleteBox) {\n\t\t\t\t\tif (this.processIncompleteBox(ret)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar box_type;\n\t\t\t\t/* the box is entirely parsed */\n\t\t\t\tbox = ret.box;\n\t\t\t\tbox_type = (box.type !== \"uuid\" ? box.type : box.uuid);\n\t\t\t\t/* store the box in the 'boxes' array to preserve box order (for file rewrite if needed) */\n\t\t\t\tthis.boxes.push(box);\n\t\t\t\t/* but also store box in a property for more direct access */\n\t\t\t\tswitch (box_type) {\n\t\t\t\t\tcase \"mdat\":\n\t\t\t\t\t\tthis.mdats.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moof\":\n\t\t\t\t\t\tthis.moofs.push(box);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"moov\":\n\t\t\t\t\t\tthis.moovStartFound = true;\n\t\t\t\t\t\tif (this.mdats.length === 0) {\n\t\t\t\t\t\t\tthis.isProgressive = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/* no break */\n\t\t\t\t\t\t/* falls through */\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (this[box_type] !== undefined) {\n\t\t\t\t\t\t\tLog.warn(\"ISOFile\", \"Duplicate Box of type: \"+box_type+\", overriding previous occurrence\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis[box_type] = box;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this.updateUsedBytes) {\n\t\t\t\t\tthis.updateUsedBytes(box, ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.checkBuffer = function (ab) {\n\tif (ab === null || ab === undefined) {\n\t\tthrow(\"Buffer must be defined and non empty\");\n\t}\n\tif (ab.fileStart === undefined) {\n\t\tthrow(\"Buffer must have a fileStart property\");\n\t}\n\tif (ab.byteLength === 0) {\n\t\tLog.warn(\"ISOFile\", \"Ignoring empty buffer (fileStart: \"+ab.fileStart+\")\");\n\t\tthis.stream.logBufferLevel();\n\t\treturn false;\n\t}\n\tLog.info(\"ISOFile\", \"Processing buffer (fileStart: \"+ab.fileStart+\")\");\n\n\t/* mark the bytes in the buffer as not being used yet */\n\tab.usedBytes = 0;\n\tthis.stream.insertBuffer(ab);\n\tthis.stream.logBufferLevel();\n\n\tif (!this.stream.initialized()) {\n\t\tLog.warn(\"ISOFile\", \"Not ready to start parsing\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/* Processes a new ArrayBuffer (with a fileStart property)\n Returns the next expected file position, or undefined if not ready to parse */\nISOFile.prototype.appendBuffer = function(ab, last) {\n\tvar nextFileStart;\n\tif (!this.checkBuffer(ab)) {\n\t\treturn;\n\t}\n\n\t/* Parse whatever is in the existing buffers */\n\tthis.parse();\n\n\t/* Check if the moovStart callback needs to be called */\n\tif (this.moovStartFound && !this.moovStartSent) {\n\t\tthis.moovStartSent = true;\n\t\tif (this.onMoovStart) this.onMoovStart();\n\t}\n\n\tif (this.moov) {\n\t\t/* A moov box has been entirely parsed */\n\n\t\t/* if this is the first call after the moov is found we initialize the list of samples (may be empty in fragmented files) */\n\t\tif (!this.sampleListBuilt) {\n\t\t\tthis.buildSampleLists();\n\t\t\tthis.sampleListBuilt = true;\n\t\t}\n\n\t\t/* We update the sample information if there are any new moof boxes */\n\t\tthis.updateSampleLists();\n\n\t\t/* If the application needs to be informed that the 'moov' has been found,\n\t\t we create the information object and callback the application */\n\t\tif (this.onReady && !this.readySent) {\n\t\t\tthis.readySent = true;\n\t\t\tthis.onReady(this.getInfo());\n\t\t}\n\n\t\t/* See if any sample extraction or segment creation needs to be done with the available samples */\n\t\tthis.processSamples(last);\n\n\t\t/* Inform about the best range to fetch next */\n\t\tif (this.nextSeekPosition) {\n\t\t\tnextFileStart = this.nextSeekPosition;\n\t\t\tthis.nextSeekPosition = undefined;\n\t\t} else {\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t}\n\t\tif (this.stream.getEndFilePositionAfter) {\n\t\t\tnextFileStart = this.stream.getEndFilePositionAfter(nextFileStart);\n\t\t}\n\t} else {\n\t\tif (this.nextParsePosition) {\n\t\t\t/* moov has not been parsed but the first buffer was received,\n\t\t\t the next fetch should probably be the next box start */\n\t\t\tnextFileStart = this.nextParsePosition;\n\t\t} else {\n\t\t\t/* No valid buffer has been parsed yet, we cannot know what to parse next */\n\t\t\tnextFileStart = 0;\n\t\t}\n\t}\n\tif (this.sidx) {\n\t\tif (this.onSidx && !this.sidxSent) {\n\t\t\tthis.onSidx(this.sidx);\n\t\t\tthis.sidxSent = true;\n\t\t}\n\t}\n\tif (this.meta) {\n\t\tif (this.flattenItemInfo && !this.itemListBuilt) {\n\t\t\tthis.flattenItemInfo();\n\t\t\tthis.itemListBuilt = true;\n\t\t}\n\t\tif (this.processItems) {\n\t\t\tthis.processItems(this.onItem);\n\t\t}\n\t}\n\n\tif (this.stream.cleanBuffers) {\n\t\tLog.info(\"ISOFile\", \"Done processing buffer (fileStart: \"+ab.fileStart+\") - next buffer to fetch should have a fileStart position of \"+nextFileStart);\n\t\tthis.stream.logBufferLevel();\n\t\tthis.stream.cleanBuffers();\n\t\tthis.stream.logBufferLevel(true);\n\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t}\n\treturn nextFileStart;\n}\n\nISOFile.prototype.getInfo = function() {\n\tvar i, j;\n\tvar movie = {};\n\tvar trak;\n\tvar track;\n\tvar ref;\n\tvar sample_desc;\n\tvar _1904 = (new Date('1904-01-01T00:00:00Z').getTime());\n\n\tif (this.moov) {\n\t\tmovie.hasMoov = true;\n\t\tmovie.duration = this.moov.mvhd.duration;\n\t\tmovie.timescale = this.moov.mvhd.timescale;\n\t\tmovie.isFragmented = (this.moov.mvex != null);\n\t\tif (movie.isFragmented && this.moov.mvex.mehd) {\n\t\t\tmovie.fragment_duration = this.moov.mvex.mehd.fragment_duration;\n\t\t}\n\t\tmovie.isProgressive = this.isProgressive;\n\t\tmovie.hasIOD = (this.moov.iods != null);\n\t\tmovie.brands = [];\n\t\tmovie.brands.push(this.ftyp.major_brand);\n\t\tmovie.brands = movie.brands.concat(this.ftyp.compatible_brands);\n\t\tmovie.created = new Date(_1904+this.moov.mvhd.creation_time*1000);\n\t\tmovie.modified = new Date(_1904+this.moov.mvhd.modification_time*1000);\n\t\tmovie.tracks = [];\n\t\tmovie.audioTracks = [];\n\t\tmovie.videoTracks = [];\n\t\tmovie.subtitleTracks = [];\n\t\tmovie.metadataTracks = [];\n\t\tmovie.hintTracks = [];\n\t\tmovie.otherTracks = [];\n\t\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\t\ttrak = this.moov.traks[i];\n\t\t\tsample_desc = trak.mdia.minf.stbl.stsd.entries[0];\n\t\t\ttrack = {};\n\t\t\tmovie.tracks.push(track);\n\t\t\ttrack.id = trak.tkhd.track_id;\n\t\t\ttrack.name = trak.mdia.hdlr.name;\n\t\t\ttrack.references = [];\n\t\t\tif (trak.tref) {\n\t\t\t\tfor (j = 0; j < trak.tref.boxes.length; j++) {\n\t\t\t\t\tref = {};\n\t\t\t\t\ttrack.references.push(ref);\n\t\t\t\t\tref.type = trak.tref.boxes[j].type;\n\t\t\t\t\tref.track_ids = trak.tref.boxes[j].track_ids;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (trak.edts) {\n\t\t\t\ttrack.edits = trak.edts.elst.entries;\n\t\t\t}\n\t\t\ttrack.created = new Date(_1904+trak.tkhd.creation_time*1000);\n\t\t\ttrack.modified = new Date(_1904+trak.tkhd.modification_time*1000);\n\t\t\ttrack.movie_duration = trak.tkhd.duration;\n\t\t\ttrack.movie_timescale = movie.timescale;\n\t\t\ttrack.layer = trak.tkhd.layer;\n\t\t\ttrack.alternate_group = trak.tkhd.alternate_group;\n\t\t\ttrack.volume = trak.tkhd.volume;\n\t\t\ttrack.matrix = trak.tkhd.matrix;\n\t\t\ttrack.track_width = trak.tkhd.width/(1<<16);\n\t\t\ttrack.track_height = trak.tkhd.height/(1<<16);\n\t\t\ttrack.timescale = trak.mdia.mdhd.timescale;\n\t\t\ttrack.cts_shift = trak.mdia.minf.stbl.cslg;\n\t\t\ttrack.duration = trak.mdia.mdhd.duration;\n\t\t\ttrack.samples_duration = trak.samples_duration;\n\t\t\ttrack.codec = sample_desc.getCodec();\n\t\t\ttrack.kind = (trak.udta && trak.udta.kinds.length ? trak.udta.kinds[0] : { schemeURI: \"\", value: \"\"});\n\t\t\ttrack.language = (trak.mdia.elng ? trak.mdia.elng.extended_language : trak.mdia.mdhd.languageString);\n\t\t\ttrack.nb_samples = trak.samples.length;\n\t\t\ttrack.size = trak.samples_size;\n\t\t\ttrack.bitrate = (track.size*8*track.timescale)/track.samples_duration;\n\t\t\tif (sample_desc.isAudio()) {\n\t\t\t\ttrack.type = \"audio\";\n\t\t\t\tmovie.audioTracks.push(track);\n\t\t\t\ttrack.audio = {};\n\t\t\t\ttrack.audio.sample_rate = sample_desc.getSampleRate();\n\t\t\t\ttrack.audio.channel_count = sample_desc.getChannelCount();\n\t\t\t\ttrack.audio.sample_size = sample_desc.getSampleSize();\n\t\t\t} else if (sample_desc.isVideo()) {\n\t\t\t\ttrack.type = \"video\";\n\t\t\t\tmovie.videoTracks.push(track);\n\t\t\t\ttrack.video = {};\n\t\t\t\ttrack.video.width = sample_desc.getWidth();\n\t\t\t\ttrack.video.height = sample_desc.getHeight();\n\t\t\t} else if (sample_desc.isSubtitle()) {\n\t\t\t\ttrack.type = \"subtitles\";\n\t\t\t\tmovie.subtitleTracks.push(track);\n\t\t\t} else if (sample_desc.isHint()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.hintTracks.push(track);\n\t\t\t} else if (sample_desc.isMetadata()) {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.metadataTracks.push(track);\n\t\t\t} else {\n\t\t\t\ttrack.type = \"metadata\";\n\t\t\t\tmovie.otherTracks.push(track);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tmovie.hasMoov = false;\n\t}\n\tmovie.mime = \"\";\n\tif (movie.hasMoov && movie.tracks) {\n\t\tif (movie.videoTracks && movie.videoTracks.length > 0) {\n\t\t\tmovie.mime += 'video/mp4; codecs=\\\"';\n\t\t} else if (movie.audioTracks && movie.audioTracks.length > 0) {\n\t\t\tmovie.mime += 'audio/mp4; codecs=\\\"';\n\t\t} else {\n\t\t\tmovie.mime += 'application/mp4; codecs=\\\"';\n\t\t}\n\t\tfor (i = 0; i < movie.tracks.length; i++) {\n\t\t\tif (i !== 0) movie.mime += ',';\n\t\t\tmovie.mime+= movie.tracks[i].codec;\n\t\t}\n\t\tmovie.mime += '\\\"; profiles=\\\"';\n\t\tmovie.mime += this.ftyp.compatible_brands.join();\n\t\tmovie.mime += '\\\"';\n\t}\n\treturn movie;\n}\n\nISOFile.prototype.setNextSeekPositionFromSample = function (sample) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (this.nextSeekPosition) {\n\t\tthis.nextSeekPosition = Math.min(sample.offset+sample.alreadyRead,this.nextSeekPosition);\n\t} else {\n\t\tthis.nextSeekPosition = sample.offset+sample.alreadyRead;\n\t}\n}\n\nISOFile.prototype.processSamples = function(last) {\n\tvar i;\n\tvar trak;\n\tif (!this.sampleProcessingStarted) return;\n\n\t/* For each track marked for fragmentation,\n\t check if the next sample is there (i.e. if the sample information is known (i.e. moof has arrived) and if it has been downloaded)\n\t and create a fragment with it */\n\tif (this.isFragmentationInitialized && this.onSegment !== null) {\n\t\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\t\tvar fragTrak = this.fragmentedTracks[i];\n\t\t\ttrak = fragTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\t/* The sample information is there (either because the file is not fragmented and this is not the last sample,\n\t\t\t\tor because the file is fragmented and the moof for that sample has been received */\n\t\t\t\tLog.debug(\"ISOFile\", \"Creating media fragment on track #\"+fragTrak.id +\" for sample \"+trak.nextSample);\n\t\t\t\tvar result = this.createFragment(fragTrak.id, trak.nextSample, fragTrak.segmentStream);\n\t\t\t\tif (result) {\n\t\t\t\t\tfragTrak.segmentStream = result;\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t} else {\n\t\t\t\t\t/* The fragment could not be created because the media data is not there (not downloaded), wait for it */\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t/* A fragment is created by sample, but the segment is the accumulation in the buffer of these fragments.\n\t\t\t\t It is flushed only as requested by the application (nb_samples) to avoid too many callbacks */\n\t\t\t\tif (trak.nextSample % fragTrak.nb_samples === 0 || (last || trak.nextSample >= trak.samples.length)) {\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sending fragmented data on track #\"+fragTrak.id+\" for samples [\"+Math.max(0,trak.nextSample-fragTrak.nb_samples)+\",\"+(trak.nextSample-1)+\"]\");\n\t\t\t\t\tLog.info(\"ISOFile\", \"Sample data size in memory: \"+this.getAllocatedSampleDataSize());\n\t\t\t\t\tif (this.onSegment) {\n\t\t\t\t\t\tthis.onSegment(fragTrak.id, fragTrak.user, fragTrak.segmentStream.buffer, trak.nextSample, (last || trak.nextSample >= trak.samples.length));\n\t\t\t\t\t}\n\t\t\t\t\t/* force the creation of a new buffer */\n\t\t\t\t\tfragTrak.segmentStream = null;\n\t\t\t\t\tif (fragTrak !== this.fragmentedTracks[i]) {\n\t\t\t\t\t\t/* make sure we can stop fragmentation if needed */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (this.onSamples !== null) {\n\t\t/* For each track marked for data export,\n\t\t check if the next sample is there (i.e. has been downloaded) and send it */\n\t\tfor (i = 0; i < this.extractedTracks.length; i++) {\n\t\t\tvar extractTrak = this.extractedTracks[i];\n\t\t\ttrak = extractTrak.trak;\n\t\t\twhile (trak.nextSample < trak.samples.length && this.sampleProcessingStarted) {\n\t\t\t\tLog.debug(\"ISOFile\", \"Exporting on track #\"+extractTrak.id +\" sample #\"+trak.nextSample);\n\t\t\t\tvar sample = this.getSample(trak, trak.nextSample);\n\t\t\t\tif (sample) {\n\t\t\t\t\ttrak.nextSample++;\n\t\t\t\t\textractTrak.samples.push(sample);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setNextSeekPositionFromSample(trak.samples[trak.nextSample]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (trak.nextSample % extractTrak.nb_samples === 0 || trak.nextSample >= trak.samples.length) {\n\t\t\t\t\tLog.debug(\"ISOFile\", \"Sending samples on track #\"+extractTrak.id+\" for sample \"+trak.nextSample);\n\t\t\t\t\tif (this.onSamples) {\n\t\t\t\t\t\tthis.onSamples(extractTrak.id, extractTrak.user, extractTrak.samples);\n\t\t\t\t\t}\n\t\t\t\t\textractTrak.samples = [];\n\t\t\t\t\tif (extractTrak !== this.extractedTracks[i]) {\n\t\t\t\t\t\t/* check if the extraction needs to be stopped */\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* Find and return specific boxes using recursion and early return */\nISOFile.prototype.getBox = function(type) {\n var result = this.getBoxes(type, true);\n return (result.length ? result[0] : null);\n}\n\nISOFile.prototype.getBoxes = function(type, returnEarly) {\n var result = [];\n ISOFile._sweep.call(this, type, result, returnEarly);\n return result;\n}\n\nISOFile._sweep = function(type, result, returnEarly) {\n if (this.type && this.type == type) result.push(this);\n for (var box in this.boxes) {\n if (result.length && returnEarly) return;\n ISOFile._sweep.call(this.boxes[box], type, result, returnEarly);\n }\n}\n\nISOFile.prototype.getTrackSamplesInfo = function(track_id) {\n\tvar track = this.getTrackById(track_id);\n\tif (track) {\n\t\treturn track.samples;\n\t} else {\n\t\treturn;\n\t}\n}\n\nISOFile.prototype.getTrackSample = function(track_id, number) {\n\tvar track = this.getTrackById(track_id);\n\tvar sample = this.getSample(track, number);\n\treturn sample;\n}\n\n/* Called by the application to release the resources associated to samples already forwarded to the application */\nISOFile.prototype.releaseUsedSamples = function (id, sampleNum) {\n\tvar size = 0;\n\tvar trak = this.getTrackById(id);\n\tif (!trak.lastValidSample) trak.lastValidSample = 0;\n\tfor (var i = trak.lastValidSample; i < sampleNum; i++) {\n\t\tsize+=this.releaseSample(trak, i);\n\t}\n\tLog.info(\"ISOFile\", \"Track #\"+id+\" released samples up to \"+sampleNum+\" (released size: \"+size+\", remaining: \"+this.samplesDataSize+\")\");\n\ttrak.lastValidSample = sampleNum;\n}\n\nISOFile.prototype.start = function() {\n\tthis.sampleProcessingStarted = true;\n\tthis.processSamples(false);\n}\n\nISOFile.prototype.stop = function() {\n\tthis.sampleProcessingStarted = false;\n}\n\n/* Called by the application to flush the remaining samples (e.g. once the download is finished or when no more samples will be added) */\nISOFile.prototype.flush = function() {\n\tLog.info(\"ISOFile\", \"Flushing remaining samples\");\n\tthis.updateSampleLists();\n\tthis.processSamples(true);\n\tthis.stream.cleanBuffers();\n\tthis.stream.logBufferLevel(true);\n}\n\n/* Finds the byte offset for a given time on a given track\n also returns the time of the previous rap */\nISOFile.prototype.seekTrack = function(time, useRap, trak) {\n\tvar j;\n\tvar sample;\n\tvar seek_offset = Infinity;\n\tvar rap_seek_sample_num = 0;\n\tvar seek_sample_num = 0;\n\tvar timescale;\n\n\tif (trak.samples.length === 0) {\n\t\tLog.info(\"ISOFile\", \"No sample in track, cannot seek! Using time \"+Log.getDurationString(0, 1) +\" and offset: \"+0);\n\t\treturn { offset: 0, time: 0 };\n\t}\n\n\tfor (j = 0; j < trak.samples.length; j++) {\n\t\tsample = trak.samples[j];\n\t\tif (j === 0) {\n\t\t\tseek_sample_num = 0;\n\t\t\ttimescale = sample.timescale;\n\t\t} else if (sample.cts > time * sample.timescale) {\n\t\t\tseek_sample_num = j-1;\n\t\t\tbreak;\n\t\t}\n\t\tif (useRap && sample.is_sync) {\n\t\t\trap_seek_sample_num = j;\n\t\t}\n\t}\n\tif (useRap) {\n\t\tseek_sample_num = rap_seek_sample_num;\n\t}\n\ttime = trak.samples[seek_sample_num].cts;\n\ttrak.nextSample = seek_sample_num;\n\twhile (trak.samples[seek_sample_num].alreadyRead === trak.samples[seek_sample_num].size) {\n\t\t// No remaining samples to look for, all are downloaded.\n\t\tif (!trak.samples[seek_sample_num + 1]) {\n\t\t\tbreak;\n\t\t}\n\t\tseek_sample_num++;\n\t}\n\tseek_offset = trak.samples[seek_sample_num].offset+trak.samples[seek_sample_num].alreadyRead;\n\tLog.info(\"ISOFile\", \"Seeking to \"+(useRap ? \"RAP\": \"\")+\" sample #\"+trak.nextSample+\" on track \"+trak.tkhd.track_id+\", time \"+Log.getDurationString(time, timescale) +\" and offset: \"+seek_offset);\n\treturn { offset: seek_offset, time: time/timescale };\n}\n\nISOFile.prototype.getTrackDuration = function (trak) {\n\tvar sample;\n\n\tif (!trak.samples) {\n\t\treturn Infinity;\n\t}\n\tsample = trak.samples[trak.samples.length - 1];\n\treturn (sample.cts + sample.duration) / sample.timescale;\n}\n\n/* Finds the byte offset in the file corresponding to the given time or to the time of the previous RAP */\nISOFile.prototype.seek = function(time, useRap) {\n\tvar moov = this.moov;\n\tvar trak;\n\tvar trak_seek_info;\n\tvar i;\n\tvar seek_info = { offset: Infinity, time: Infinity };\n\tif (!this.moov) {\n\t\tthrow \"Cannot seek: moov not received!\";\n\t} else {\n\t\tfor (i = 0; i<moov.traks.length; i++) {\n\t\t\ttrak = moov.traks[i];\n\t\t\tif (time > this.getTrackDuration(trak)) { // skip tracks that already ended\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttrak_seek_info = this.seekTrack(time, useRap, trak);\n\t\t\tif (trak_seek_info.offset < seek_info.offset) {\n\t\t\t\tseek_info.offset = trak_seek_info.offset;\n\t\t\t}\n\t\t\tif (trak_seek_info.time < seek_info.time) {\n\t\t\t\tseek_info.time = trak_seek_info.time;\n\t\t\t}\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Seeking at time \"+Log.getDurationString(seek_info.time, 1)+\" needs a buffer with a fileStart position of \"+seek_info.offset);\n\t\tif (seek_info.offset === Infinity) {\n\t\t\t/* No sample info, in all tracks, cannot seek */\n\t\t\tseek_info = { offset: this.nextParsePosition, time: 0 };\n\t\t} else {\n\t\t\t/* check if the seek position is already in some buffer and\n\t\t\t in that case return the end of that buffer (or of the last contiguous buffer) */\n\t\t\t/* TODO: Should wait until append operations are done */\n\t\t\tseek_info.offset = this.stream.getEndFilePositionAfter(seek_info.offset);\n\t\t}\n\t\tLog.info(\"ISOFile\", \"Adjusted seek position (after checking data already in buffer): \"+seek_info.offset);\n\t\treturn seek_info;\n\t}\n}\n\nISOFile.prototype.equal = function(b) {\n\tvar box_index = 0;\n\twhile (box_index < this.boxes.length && box_index < b.boxes.length) {\n\t\tvar a_box = this.boxes[box_index];\n\t\tvar b_box = b.boxes[box_index];\n\t\tif (!BoxParser.boxEqual(a_box, b_box)) {\n\t\t\treturn false;\n\t\t}\n\t\tbox_index++;\n\t}\n\treturn true;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.ISOFile = ISOFile;\n}\n// file:src/isofile-advanced-parsing.js\n/* position in the current buffer of the beginning of the last box parsed */\nISOFile.prototype.lastBoxStartPosition = 0;\n/* indicator if the parsing is stuck in the middle of an mdat box */\nISOFile.prototype.parsingMdat = null;\n/* next file position that the parser needs:\n - 0 until the first buffer (i.e. fileStart ===0) has been received \n - otherwise, the next box start until the moov box has been parsed\n - otherwise, the position of the next sample to fetch\n */\nISOFile.prototype.nextParsePosition = 0;\n/* keep mdat data */\nISOFile.prototype.discardMdatData = false;\n\nISOFile.prototype.processIncompleteBox = function(ret) {\n\tvar box;\n\tvar merged;\n\tvar found;\n\t\n\t/* we did not have enough bytes in the current buffer to parse the entire box */\n\tif (ret.type === \"mdat\") { \n\t\t/* we had enough bytes to get its type and size and it's an 'mdat' */\n\t\t\n\t\t/* special handling for mdat boxes, since we don't actually need to parse it linearly \n\t\t we create the box */\n\t\tbox = new BoxParser[ret.type+\"Box\"](ret.size);\t\n\t\tthis.parsingMdat = box;\n\t\tthis.boxes.push(box);\n\t\tthis.mdats.push(box);\t\t\t\n\t\tbox.start = ret.start;\n\t\tbox.hdr_size = ret.hdr_size;\n\t\tthis.stream.addUsedBytes(box.hdr_size);\n\n\t\t/* indicate that the parsing should start from the end of the box */\n\t\tthis.lastBoxStartPosition = box.start + box.size;\n \t\t/* let's see if we have the end of the box in the other buffers */\n\t\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\t\tif (found) {\n\t\t\t/* found the end of the box */\n\t\t\tthis.parsingMdat = null;\n\t\t\t/* let's see if we can parse more in this buffer */\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* 'mdat' end not found in the existing buffers */\n\t\t\t/* determine the next position in the file to start parsing from */\n\t\t\tif (!this.moovStartFound) {\n\t\t\t\t/* moov not find yet, \n\t\t\t\t the file probably has 'mdat' at the beginning, and 'moov' at the end, \n\t\t\t\t indicate that the downloader should not try to download those bytes now */\n\t\t\t\tthis.nextParsePosition = box.start + box.size;\n\t\t\t} else {\n\t\t\t\t/* we have the start of the moov box, \n\t\t\t\t the next bytes should try to complete the current 'mdat' */\n\t\t\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\t\t}\n\t\t\t/* not much we can do, wait for more buffers to arrive */\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\t/* box is incomplete, we may not even know its type */\n\t\tif (ret.type === \"moov\") { \n\t\t\t/* the incomplete box is a 'moov' box */\n\t\t\tthis.moovStartFound = true;\n\t\t\tif (this.mdats.length === 0) {\n\t\t\t\tthis.isProgressive = true;\n\t\t\t}\n\t\t}\n\t\t/* either it's not an mdat box (and we need to parse it, we cannot skip it)\n\t\t (TODO: we could skip 'free' boxes ...)\n\t\t\t or we did not have enough data to parse the type and size of the box, \n\t\t we try to concatenate the current buffer with the next buffer to restart parsing */\n\t\tmerged = (this.stream.mergeNextBuffer ? this.stream.mergeNextBuffer() : false);\n\t\tif (merged) {\n\t\t\t/* The next buffer was contiguous, the merging succeeded,\n\t\t\t we can now continue parsing, \n\t\t\t the next best position to parse is at the end of this new buffer */\n\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\treturn true;\n\t\t} else {\n\t\t\t/* we cannot concatenate existing buffers because they are not contiguous or because there is no additional buffer */\n\t\t\t/* The next best position to parse is still at the end of this old buffer */\n\t\t\tif (!ret.type) {\n\t\t\t\t/* There were not enough bytes in the buffer to parse the box type and length,\n\t\t\t\t the next fetch should retrieve those missing bytes, i.e. the next bytes after this buffer */\n\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t} else {\n\t\t\t\t/* we had enough bytes to parse size and type of the incomplete box\n\t\t\t\t if we haven't found yet the moov box, skip this one and try the next one \n\t\t\t\t if we have found the moov box, let's continue linear parsing */\n\t\t\t\tif (this.moovStartFound) {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getEndPosition();\n\t\t\t\t} else {\n\t\t\t\t\tthis.nextParsePosition = this.stream.getPosition() + ret.size;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasIncompleteMdat = function () {\n\treturn (this.parsingMdat !== null);\n}\n\nISOFile.prototype.processIncompleteMdat = function () {\n\tvar box;\n\tvar found;\n\t\n\t/* we are in the parsing of an incomplete mdat box */\n\tbox = this.parsingMdat;\n\n\tfound = this.stream.seek(box.start + box.size, false, this.discardMdatData);\n\tif (found) {\n\t\tLog.debug(\"ISOFile\", \"Found 'mdat' end in buffered data\");\n\t\t/* the end of the mdat has been found */ \n\t\tthis.parsingMdat = null;\n\t\t/* we can parse more in this buffer */\n\t\treturn true;\n\t} else {\n\t\t/* we don't have the end of this mdat yet, \n\t\t indicate that the next byte to fetch is the end of the buffers we have so far, \n\t\t return and wait for more buffer to come */\n\t\tthis.nextParsePosition = this.stream.findEndContiguousBuf();\n\t\treturn false;\n\t}\n}\n\nISOFile.prototype.restoreParsePosition = function() {\n\t/* Reposition at the start position of the previous box not entirely parsed */\n\treturn this.stream.seek(this.lastBoxStartPosition, true, this.discardMdatData);\n}\n\nISOFile.prototype.saveParsePosition = function() {\n\t/* remember the position of the box start in case we need to roll back (if the box is incomplete) */\n\tthis.lastBoxStartPosition = this.stream.getPosition();\t\n}\n\nISOFile.prototype.updateUsedBytes = function(box, ret) {\n\tif (this.stream.addUsedBytes) {\n\t\tif (box.type === \"mdat\") {\n\t\t\t/* for an mdat box, only its header is considered used, other bytes will be used when sample data is requested */\n\t\t\tthis.stream.addUsedBytes(box.hdr_size);\n\t\t\tif (this.discardMdatData) {\n\t\t\t\tthis.stream.addUsedBytes(box.size-box.hdr_size);\n\t\t\t}\n\t\t} else {\n\t\t\t/* for all other boxes, the entire box data is considered used */\n\t\t\tthis.stream.addUsedBytes(box.size);\n\t\t}\t\n\t}\n}\n// file:src/isofile-advanced-creation.js\nISOFile.prototype.add = BoxParser.Box.prototype.add;\nISOFile.prototype.addBox = BoxParser.Box.prototype.addBox;\n\nISOFile.prototype.init = function (_options) {\n\tvar options = _options || {}; \n\tvar ftyp = this.add(\"ftyp\").set(\"major_brand\", (options.brands && options.brands[0]) || \"iso4\")\n\t\t\t\t\t\t\t .set(\"minor_version\", 0)\n\t\t\t\t\t\t\t .set(\"compatible_brands\", options.brands || [\"iso4\"]);\n\tvar moov = this.add(\"moov\");\n\tmoov.add(\"mvhd\").set(\"timescale\", options.timescale || 600)\n\t\t\t\t\t.set(\"rate\", options.rate || 1<<16)\n\t\t\t\t\t.set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"volume\", (options.width) ? 0 : 0x0100)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000])\n\t\t\t\t\t.set(\"next_track_id\", 1);\n\tmoov.add(\"mvex\");\n\treturn this;\n}\n\nISOFile.prototype.addTrack = function (_options) {\n\tif (!this.moov) {\n\t\tthis.init(_options);\n\t}\n\n\tvar options = _options || {}; \n\toptions.width = options.width || 320;\n\toptions.height = options.height || 320;\n\toptions.id = options.id || this.moov.mvhd.next_track_id;\n\toptions.type = options.type || \"avc1\";\n\n\tvar trak = this.moov.add(\"trak\");\n\tthis.moov.mvhd.next_track_id = options.id+1;\n\ttrak.add(\"tkhd\").set(\"flags\",BoxParser.TKHD_FLAG_ENABLED | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_MOVIE | \n\t\t\t\t\t\t\t\t BoxParser.TKHD_FLAG_IN_PREVIEW)\n\t\t\t\t\t.set(\"creation_time\",0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"track_id\", options.id)\n\t\t\t\t\t.set(\"duration\", options.duration || 0)\n\t\t\t\t\t.set(\"layer\", options.layer || 0)\n\t\t\t\t\t.set(\"alternate_group\", 0)\n\t\t\t\t\t.set(\"volume\", 1)\n\t\t\t\t\t.set(\"matrix\", [ 1<<16, 0, 0, 0, 1<<16, 0, 0, 0, 0x40000000 ])\n\t\t\t\t\t.set(\"width\", options.width << 16)\n\t\t\t\t\t.set(\"height\", options.height << 16);\n\n\tvar mdia = trak.add(\"mdia\");\n\tmdia.add(\"mdhd\").set(\"creation_time\", 0)\n\t\t\t\t\t.set(\"modification_time\", 0)\n\t\t\t\t\t.set(\"timescale\", options.timescale || 1)\n\t\t\t\t\t.set(\"duration\", options.media_duration || 0)\n\t\t\t\t\t.set(\"language\", options.language || \"und\");\n\n\tmdia.add(\"hdlr\").set(\"handler\", options.hdlr || \"vide\")\n\t\t\t\t\t.set(\"name\", options.name || \"Track created with MP4Box.js\");\n\n\tmdia.add(\"elng\").set(\"extended_language\", options.language || \"fr-FR\");\n\n\tvar minf = mdia.add(\"minf\");\n\tif (BoxParser[options.type+\"SampleEntry\"] === undefined) return;\n\tvar sample_description_entry = new BoxParser[options.type+\"SampleEntry\"]();\n\tsample_description_entry.data_reference_index = 1;\n\tvar media_type = \"\";\n\tfor (var mediaType in BoxParser.sampleEntryCodes) {\n\t\tvar codes = BoxParser.sampleEntryCodes[mediaType];\n\t\tfor (var i = 0; i < codes.length; i++) {\n\t\t\tif (codes.indexOf(options.type) > -1) {\n\t\t\t\tmedia_type = mediaType;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tswitch(media_type) {\n\t\tcase \"Visual\":\n\t\t\tminf.add(\"vmhd\").set(\"graphicsmode\",0).set(\"opcolor\", [ 0, 0, 0 ]);\n\t\t\tsample_description_entry.set(\"width\", options.width)\n\t\t\t\t\t\t.set(\"height\", options.height)\n\t\t\t\t\t\t.set(\"horizresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"vertresolution\", 0x48<<16)\n\t\t\t\t\t\t.set(\"frame_count\", 1)\n\t\t\t\t\t\t.set(\"compressorname\", options.type+\" Compressor\")\n\t\t\t\t\t\t.set(\"depth\", 0x18);\n\t\t\tif (options.avcDecoderConfigRecord) {\n\t\t\t\tvar avcC = new BoxParser.avcCBox();\n\t\t\t\tavcC.parse(new MP4BoxStream(options.avcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(avcC);\n\t\t\t} else if (options.hevcDecoderConfigRecord) {\n\t\t\t\tvar hvcC = new BoxParser.hvcCBox();\n\t\t\t\thvcC.parse(new MP4BoxStream(options.hevcDecoderConfigRecord));\n\t\t\t\tsample_description_entry.addBox(hvcC);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Audio\":\n\t\t\tminf.add(\"smhd\").set(\"balance\", options.balance || 0);\n\t\t\tsample_description_entry.set(\"channel_count\", options.channel_count || 2)\n\t\t\t\t\t\t.set(\"samplesize\", options.samplesize || 16)\n\t\t\t\t\t\t.set(\"samplerate\", options.samplerate || 1<<16);\n\t\t\tbreak;\n\t\tcase \"Hint\":\n\t\t\tminf.add(\"hmhd\"); // TODO: add properties\n\t\t\tbreak;\n\t\tcase \"Subtitle\":\n\t\t\tminf.add(\"sthd\");\n\t\t\tswitch (options.type) {\n\t\t\t\tcase \"stpp\":\n\t\t\t\t\tsample_description_entry.set(\"namespace\", options.namespace || \"nonamespace\")\n\t\t\t\t\t\t\t\t.set(\"schema_location\", options.schema_location || \"\")\n\t\t\t\t\t\t\t\t.set(\"auxiliary_mime_types\", options.auxiliary_mime_types || \"\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"Metadata\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tcase \"System\":\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tminf.add(\"nmhd\");\n\t\t\tbreak;\n\t}\n\tif (options.description) {\n\t\tsample_description_entry.addBox(options.description);\n\t}\n\tif (options.description_boxes) {\n\t\toptions.description_boxes.forEach(function (b) {\n\t\t\tsample_description_entry.addBox(b);\n\t\t});\n\t}\n\tminf.add(\"dinf\").add(\"dref\").addEntry((new BoxParser[\"url Box\"]()).set(\"flags\", 0x1));\n\tvar stbl = minf.add(\"stbl\");\n\tstbl.add(\"stsd\").addEntry(sample_description_entry);\n\tstbl.add(\"stts\").set(\"sample_counts\", [])\n\t\t\t\t\t.set(\"sample_deltas\", []);\n\tstbl.add(\"stsc\").set(\"first_chunk\", [])\n\t\t\t\t\t.set(\"samples_per_chunk\", [])\n\t\t\t\t\t.set(\"sample_description_index\", []);\n\tstbl.add(\"stco\").set(\"chunk_offsets\", []);\n\tstbl.add(\"stsz\").set(\"sample_sizes\", []);\n\n\tthis.moov.mvex.add(\"trex\").set(\"track_id\", options.id)\n\t\t\t\t\t\t\t .set(\"default_sample_description_index\", options.default_sample_description_index || 1)\n\t\t\t\t\t\t\t .set(\"default_sample_duration\", options.default_sample_duration || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_size\", options.default_sample_size || 0)\n\t\t\t\t\t\t\t .set(\"default_sample_flags\", options.default_sample_flags || 0);\n\tthis.buildTrakSampleLists(trak);\n\treturn options.id;\n}\n\nBoxParser.Box.prototype.computeSize = function(stream_) {\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n}\n\nISOFile.prototype.addSample = function (track_id, data, _options) {\n\tvar options = _options || {};\n\tvar sample = {};\n\tvar trak = this.getTrackById(track_id);\n\tif (trak === null) return;\n sample.number = trak.samples.length;\n\tsample.track_id = trak.tkhd.track_id;\n\tsample.timescale = trak.mdia.mdhd.timescale;\n\tsample.description_index = (options.sample_description_index ? options.sample_description_index - 1: 0);\n\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\tsample.data = data;\n\tsample.size = data.byteLength;\n\tsample.alreadyRead = sample.size;\n\tsample.duration = options.duration || 1;\n\tsample.cts = options.cts || 0;\n\tsample.dts = options.dts || 0;\n\tsample.is_sync = options.is_sync || false;\n\tsample.is_leading = options.is_leading || 0;\n\tsample.depends_on = options.depends_on || 0;\n\tsample.is_depended_on = options.is_depended_on || 0;\n\tsample.has_redundancy = options.has_redundancy || 0;\n\tsample.degradation_priority = options.degradation_priority || 0;\n\tsample.offset = 0;\n\tsample.subsamples = options.subsamples;\n\ttrak.samples.push(sample);\n\ttrak.samples_size += sample.size;\n\ttrak.samples_duration += sample.duration;\n\tif (trak.first_dts === undefined) {\n\t\ttrak.first_dts = options.dts;\n\t}\n\n\tthis.processSamples();\n\t\n\tvar moof = this.createSingleSampleMoof(sample);\n\tthis.addBox(moof);\n\tmoof.computeSize();\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tthis.add(\"mdat\").data = new Uint8Array(data);\n\treturn sample;\n}\n\nISOFile.prototype.createSingleSampleMoof = function(sample) {\n\tvar sample_flags = 0;\n\tif (sample.is_sync)\n\t\tsample_flags = (1 << 25); // sample_depends_on_none (I picture)\n\telse\n\t\tsample_flags = (1 << 16); // non-sync\n\n\tvar moof = new BoxParser.moofBox();\n\tmoof.add(\"mfhd\").set(\"sequence_number\", this.nextMoofNumber);\n\tthis.nextMoofNumber++;\n\tvar traf = moof.add(\"traf\");\n\tvar trak = this.getTrackById(sample.track_id);\n\ttraf.add(\"tfhd\").set(\"track_id\", sample.track_id)\n\t\t\t\t\t.set(\"flags\", BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF);\n\ttraf.add(\"tfdt\").set(\"baseMediaDecodeTime\", (sample.dts - (trak.first_dts || 0)));\n\ttraf.add(\"trun\").set(\"flags\", BoxParser.TRUN_FLAGS_DATA_OFFSET | BoxParser.TRUN_FLAGS_DURATION | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_SIZE | BoxParser.TRUN_FLAGS_FLAGS | \n\t\t\t\t \t\t\t\t BoxParser.TRUN_FLAGS_CTS_OFFSET)\n\t\t\t\t\t.set(\"data_offset\",0)\n\t\t\t\t\t.set(\"first_sample_flags\",0)\n\t\t\t\t\t.set(\"sample_count\",1)\n\t\t\t\t\t.set(\"sample_duration\",[sample.duration])\n\t\t\t\t\t.set(\"sample_size\",[sample.size])\n\t\t\t\t\t.set(\"sample_flags\",[sample_flags])\n\t\t\t\t\t.set(\"sample_composition_time_offset\", [sample.cts - sample.dts]);\n\treturn moof;\n}\n\n// file:src/isofile-sample-processing.js\n/* Index of the last moof box received */\nISOFile.prototype.lastMoofIndex = 0;\n\n/* size of the buffers allocated for samples */\nISOFile.prototype.samplesDataSize = 0;\n\n/* Resets all sample tables */\nISOFile.prototype.resetTables = function () {\n\tvar i;\n\tvar trak, stco, stsc, stsz, stts, ctts, stss;\n\tthis.initial_duration = this.moov.mvhd.duration;\n\tthis.moov.mvhd.duration = 0;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\ttrak.tkhd.duration = 0;\n\t\ttrak.mdia.mdhd.duration = 0;\n\t\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\t\tstco.chunk_offsets = [];\n\t\tstsc = trak.mdia.minf.stbl.stsc;\n\t\tstsc.first_chunk = [];\n\t\tstsc.samples_per_chunk = [];\n\t\tstsc.sample_description_index = [];\n\t\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\t\tstsz.sample_sizes = [];\n\t\tstts = trak.mdia.minf.stbl.stts;\n\t\tstts.sample_counts = [];\n\t\tstts.sample_deltas = [];\n\t\tctts = trak.mdia.minf.stbl.ctts;\n\t\tif (ctts) {\n\t\t\tctts.sample_counts = [];\n\t\t\tctts.sample_offsets = [];\n\t\t}\n\t\tstss = trak.mdia.minf.stbl.stss;\n\t\tvar k = trak.mdia.minf.stbl.boxes.indexOf(stss);\n\t\tif (k != -1) trak.mdia.minf.stbl.boxes[k] = null;\n\t}\n}\n\nISOFile.initSampleGroups = function(trak, traf, sbgps, trak_sgpds, traf_sgpds) {\n\tvar l;\n\tvar k;\n\tvar sample_groups_info;\n\tvar sample_group_info;\n\tvar sample_group_key;\n\tfunction SampleGroupInfo(_type, _parameter, _sbgp) {\n\t\tthis.grouping_type = _type;\n\t\tthis.grouping_type_parameter = _parameter;\n\t\tthis.sbgp = _sbgp;\n\t\tthis.last_sample_in_run = -1;\n\t\tthis.entry_index = -1;\t\t\n\t}\n\tif (traf) {\n\t\ttraf.sample_groups_info = [];\n\t} \n\tif (!trak.sample_groups_info) {\n\t\ttrak.sample_groups_info = [];\n\t}\n\tfor (k = 0; k < sbgps.length; k++) {\n\t\tsample_group_key = sbgps[k].grouping_type +\"/\"+ sbgps[k].grouping_type_parameter;\n\t\tsample_group_info = new SampleGroupInfo(sbgps[k].grouping_type, sbgps[k].grouping_type_parameter, sbgps[k]);\n\t\tif (traf) {\n\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t}\n\t\tfor (l=0; l <trak_sgpds.length; l++) {\n\t\t\tif (trak_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\tsample_group_info.description = trak_sgpds[l];\n\t\t\t\tsample_group_info.description.used = true;\n\t\t\t}\n\t\t}\n\t\tif (traf_sgpds) {\n\t\t\tfor (l=0; l <traf_sgpds.length; l++) {\n\t\t\t\tif (traf_sgpds[l].grouping_type === sbgps[k].grouping_type) {\n\t\t\t\t\tsample_group_info.fragment_description = traf_sgpds[l];\n\t\t\t\t\tsample_group_info.fragment_description.used = true;\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t}\n\t}\n\tif (!traf) {\n\t\tfor (k = 0; k < trak_sgpds.length; k++) {\n\t\t\tif (!trak_sgpds[k].used && trak_sgpds[k].version >= 2) {\n\t\t\t\tsample_group_key = trak_sgpds[k].grouping_type +\"/0\";\n\t\t\t\tsample_group_info = new SampleGroupInfo(trak_sgpds[k].grouping_type, 0);\n\t\t\t\tif (!trak.sample_groups_info[sample_group_key]) {\n\t\t\t\t\ttrak.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (traf_sgpds) {\n\t\t\tfor (k = 0; k < traf_sgpds.length; k++) {\n\t\t\t\tif (!traf_sgpds[k].used && traf_sgpds[k].version >= 2) {\n\t\t\t\t\tsample_group_key = traf_sgpds[k].grouping_type +\"/0\";\n\t\t\t\t\tsample_group_info = new SampleGroupInfo(traf_sgpds[k].grouping_type, 0);\n\t\t\t\t\tsample_group_info.is_fragment = true;\n\t\t\t\t\tif (!traf.sample_groups_info[sample_group_key]) {\n\t\t\t\t\t\ttraf.sample_groups_info[sample_group_key] = sample_group_info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.setSampleGroupProperties = function(trak, sample, sample_number, sample_groups_info) {\n\tvar k;\n\tvar index;\n\tsample.sample_groups = [];\n\tfor (k in sample_groups_info) {\n\t\tsample.sample_groups[k] = {};\n\t\tsample.sample_groups[k].grouping_type = sample_groups_info[k].grouping_type;\n\t\tsample.sample_groups[k].grouping_type_parameter = sample_groups_info[k].grouping_type_parameter;\n\t\tif (sample_number >= sample_groups_info[k].last_sample_in_run) {\n\t\t\tif (sample_groups_info[k].last_sample_in_run < 0) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run = 0;\n\t\t\t}\n\t\t\tsample_groups_info[k].entry_index++;\t\n\t\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\t\tsample_groups_info[k].last_sample_in_run += sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].sample_count;\n\t\t\t}\n\t\t}\n\t\tif (sample_groups_info[k].entry_index <= sample_groups_info[k].sbgp.entries.length - 1) {\n\t\t\tsample.sample_groups[k].group_description_index = sample_groups_info[k].sbgp.entries[sample_groups_info[k].entry_index].group_description_index;\n\t\t} else {\n\t\t\tsample.sample_groups[k].group_description_index = -1; // special value for not defined\n\t\t}\n\t\tif (sample.sample_groups[k].group_description_index !== 0) {\n\t\t\tvar description;\n\t\t\tif (sample_groups_info[k].fragment_description) {\n\t\t\t\tdescription = sample_groups_info[k].fragment_description;\n\t\t\t} else {\n\t\t\t\tdescription = sample_groups_info[k].description;\n\t\t\t}\n\t\t\tif (sample.sample_groups[k].group_description_index > 0) {\n\t\t\t\tif (sample.sample_groups[k].group_description_index > 65535) {\n\t\t\t\t\tindex = (sample.sample_groups[k].group_description_index >> 16)-1;\n\t\t\t\t} else {\n\t\t\t\t\tindex = sample.sample_groups[k].group_description_index-1;\n\t\t\t\t}\n\t\t\t\tif (description && index >= 0) {\n\t\t\t\t\tsample.sample_groups[k].description = description.entries[index];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (description && description.version >= 2) {\n\t\t\t\t\tif (description.default_group_description_index > 0) {\t\t\t\t\t\t\t\t\n\t\t\t\t\t\tsample.sample_groups[k].description = description.entries[description.default_group_description_index-1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.process_sdtp = function (sdtp, sample, number) {\n\tif (!sample) {\n\t\treturn;\n\t}\n\tif (sdtp) {\n\t\tsample.is_leading = sdtp.is_leading[number];\n\t\tsample.depends_on = sdtp.sample_depends_on[number];\n\t\tsample.is_depended_on = sdtp.sample_is_depended_on[number];\n\t\tsample.has_redundancy = sdtp.sample_has_redundancy[number];\n\t} else {\n\t\tsample.is_leading = 0;\n\t\tsample.depends_on = 0;\n\t\tsample.is_depended_on = 0\n\t\tsample.has_redundancy = 0;\n\t}\t\n}\n\n/* Build initial sample list from sample tables */\nISOFile.prototype.buildSampleLists = function() {\t\n\tvar i;\n\tvar trak;\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\ttrak = this.moov.traks[i];\n\t\tthis.buildTrakSampleLists(trak);\n\t}\n}\n\nISOFile.prototype.buildTrakSampleLists = function(trak) {\t\n\tvar j, k;\n\tvar stco, stsc, stsz, stts, ctts, stss, stsd, subs, sbgps, sgpds, stdp;\n\tvar chunk_run_index, chunk_index, last_chunk_in_run, offset_in_chunk, last_sample_in_chunk;\n\tvar last_sample_in_stts_run, stts_run_index, last_sample_in_ctts_run, ctts_run_index, last_stss_index, last_subs_index, subs_entry_index, last_subs_sample_index;\n\n\ttrak.samples = [];\n\ttrak.samples_duration = 0;\n\ttrak.samples_size = 0;\n\tstco = trak.mdia.minf.stbl.stco || trak.mdia.minf.stbl.co64;\n\tstsc = trak.mdia.minf.stbl.stsc;\n\tstsz = trak.mdia.minf.stbl.stsz || trak.mdia.minf.stbl.stz2;\n\tstts = trak.mdia.minf.stbl.stts;\n\tctts = trak.mdia.minf.stbl.ctts;\n\tstss = trak.mdia.minf.stbl.stss;\n\tstsd = trak.mdia.minf.stbl.stsd;\n\tsubs = trak.mdia.minf.stbl.subs;\n\tstdp = trak.mdia.minf.stbl.stdp;\n\tsbgps = trak.mdia.minf.stbl.sbgps;\n\tsgpds = trak.mdia.minf.stbl.sgpds;\n\t\n\tlast_sample_in_stts_run = -1;\n\tstts_run_index = -1;\n\tlast_sample_in_ctts_run = -1;\n\tctts_run_index = -1;\n\tlast_stss_index = 0;\n\tsubs_entry_index = 0;\n\tlast_subs_sample_index = 0;\t\t\n\n\tISOFile.initSampleGroups(trak, null, sbgps, sgpds);\n\n\tif (typeof stsz === \"undefined\") {\n\t\treturn;\n\t}\n\n\t/* we build the samples one by one and compute their properties */\n\tfor (j = 0; j < stsz.sample_sizes.length; j++) {\n\t\tvar sample = {};\n\t\tsample.number = j;\n\t\tsample.track_id = trak.tkhd.track_id;\n\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\tsample.alreadyRead = 0;\n\t\ttrak.samples[j] = sample;\n\t\t/* size can be known directly */\n\t\tsample.size = stsz.sample_sizes[j];\n\t\ttrak.samples_size += sample.size;\n\t\t/* computing chunk-based properties (offset, sample description index)*/\n\t\tif (j === 0) {\t\t\t\t\n\t\t\tchunk_index = 1; /* the first sample is in the first chunk (chunk indexes are 1-based) */\n\t\t\tchunk_run_index = 0; /* the first chunk is the first entry in the first_chunk table */\n\t\t\tsample.chunk_index = chunk_index;\n\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\tlast_sample_in_chunk = stsc.samples_per_chunk[chunk_run_index];\n\t\t\toffset_in_chunk = 0;\n\n\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t} else {\n\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t}\n\t\t} else {\n\t\t\tif (j < last_sample_in_chunk) {\n\t\t\t\t/* the sample is still in the current chunk */\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t} else {\n\t\t\t\t/* the sample is in the next chunk */\n\t\t\t\tchunk_index++;\n\t\t\t\tsample.chunk_index = chunk_index;\n\t\t\t\t/* reset the accumulated offset in the chunk */\n\t\t\t\toffset_in_chunk = 0;\n\t\t\t\tif (chunk_index <= last_chunk_in_run) {\n\t\t\t\t\t/* stay in the same entry of the first_chunk table */\n\t\t\t\t\t/* chunk_run_index unmodified */\n\t\t\t\t} else {\n\t\t\t\t\tchunk_run_index++;\n\t\t\t\t\t/* Is there another entry in the first_chunk table ? */\n\t\t\t\t\tif (chunk_run_index + 1 < stsc.first_chunk.length) {\n\t\t\t\t\t\t/* The last chunk in the run is the chunk before the next first chunk */\n\t\t\t\t\t\tlast_chunk_in_run = stsc.first_chunk[chunk_run_index+1]-1; \t\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/* There is only one entry in the table, it is valid for all future chunks*/\n\t\t\t\t\t\tlast_chunk_in_run = Infinity;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tsample.chunk_run_index = chunk_run_index;\n\t\t\t\tlast_sample_in_chunk += stsc.samples_per_chunk[chunk_run_index];\n\t\t\t}\n\t\t}\n\n\t\tsample.description_index = stsc.sample_description_index[sample.chunk_run_index]-1;\n\t\tsample.description = stsd.entries[sample.description_index];\n\t\tsample.offset = stco.chunk_offsets[sample.chunk_index-1] + offset_in_chunk; /* chunk indexes are 1-based */\n\t\toffset_in_chunk += sample.size;\n\n\t\t/* setting dts, cts, duration and rap flags */\n\t\tif (j > last_sample_in_stts_run) {\n\t\t\tstts_run_index++;\n\t\t\tif (last_sample_in_stts_run < 0) {\n\t\t\t\tlast_sample_in_stts_run = 0;\n\t\t\t}\n\t\t\tlast_sample_in_stts_run += stts.sample_counts[stts_run_index];\t\t\t\t\n\t\t}\n\t\tif (j > 0) {\n\t\t\ttrak.samples[j-1].duration = stts.sample_deltas[stts_run_index];\n\t\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t\t\tsample.dts = trak.samples[j-1].dts + trak.samples[j-1].duration;\n\t\t} else {\n\t\t\tsample.dts = 0;\n\t\t}\n\t\tif (ctts) {\n\t\t\tif (j >= last_sample_in_ctts_run) {\n\t\t\t\tctts_run_index++;\n\t\t\t\tif (last_sample_in_ctts_run < 0) {\n\t\t\t\t\tlast_sample_in_ctts_run = 0;\n\t\t\t\t}\n\t\t\t\tlast_sample_in_ctts_run += ctts.sample_counts[ctts_run_index];\t\t\t\t\n\t\t\t}\n\t\t\tsample.cts = trak.samples[j].dts + ctts.sample_offsets[ctts_run_index];\n\t\t} else {\n\t\t\tsample.cts = sample.dts;\n\t\t}\n\t\tif (stss) {\n\t\t\tif (j == stss.sample_numbers[last_stss_index] - 1) { // sample numbers are 1-based\n\t\t\t\tsample.is_sync = true;\n\t\t\t\tlast_stss_index++;\n\t\t\t} else {\n\t\t\t\tsample.is_sync = false;\t\t\t\t\n\t\t\t\tsample.degradation_priority = 0;\n\t\t\t}\n\t\t\tif (subs) {\n\t\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j+1) {\n\t\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t\t\tsubs_entry_index++;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsample.is_sync = true;\n\t\t}\n\t\tISOFile.process_sdtp(trak.mdia.minf.stbl.sdtp, sample, sample.number);\n\t\tif (stdp) {\n\t\t\tsample.degradation_priority = stdp.priority[j];\n\t\t} else {\n\t\t\tsample.degradation_priority = 0;\n\t\t}\n\t\tif (subs) {\n\t\t\tif (subs.entries[subs_entry_index].sample_delta + last_subs_sample_index == j) {\n\t\t\t\tsample.subsamples = subs.entries[subs_entry_index].subsamples;\n\t\t\t\tlast_subs_sample_index += subs.entries[subs_entry_index].sample_delta;\n\t\t\t}\n\t\t}\n\t\tif (sbgps.length > 0 || sgpds.length > 0) {\n\t\t\tISOFile.setSampleGroupProperties(trak, sample, j, trak.sample_groups_info);\n\t\t}\n\t}\n\tif (j>0) {\n\t\ttrak.samples[j-1].duration = Math.max(trak.mdia.mdhd.duration - trak.samples[j-1].dts, 0);\n\t\ttrak.samples_duration += trak.samples[j-1].duration;\n\t}\n}\n\n/* Update sample list when new 'moof' boxes are received */\nISOFile.prototype.updateSampleLists = function() {\t\n\tvar i, j, k;\n\tvar default_sample_description_index, default_sample_duration, default_sample_size, default_sample_flags;\n\tvar last_run_position;\n\tvar box, moof, traf, trak, trex;\n\tvar sample;\n\tvar sample_flags;\n\t\n\tif (this.moov === undefined) {\n\t\treturn;\n\t}\n\t/* if the input file is fragmented and fetched in multiple downloads, we need to update the list of samples */\n\twhile (this.lastMoofIndex < this.moofs.length) {\n\t\tbox = this.moofs[this.lastMoofIndex];\n\t\tthis.lastMoofIndex++;\n\t\tif (box.type == \"moof\") {\n\t\t\tmoof = box;\n\t\t\tfor (i = 0; i < moof.trafs.length; i++) {\n\t\t\t\ttraf = moof.trafs[i];\n\t\t\t\ttrak = this.getTrackById(traf.tfhd.track_id);\n\t\t\t\ttrex = this.getTrexById(traf.tfhd.track_id);\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DESC) {\n\t\t\t\t\tdefault_sample_description_index = traf.tfhd.default_sample_description_index;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_description_index = (trex ? trex.default_sample_description_index: 1);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_DUR) {\n\t\t\t\t\tdefault_sample_duration = traf.tfhd.default_sample_duration;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_duration = (trex ? trex.default_sample_duration : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_SIZE) {\n\t\t\t\t\tdefault_sample_size = traf.tfhd.default_sample_size;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_size = (trex ? trex.default_sample_size : 0);\n\t\t\t\t}\n\t\t\t\tif (traf.tfhd.flags & BoxParser.TFHD_FLAG_SAMPLE_FLAGS) {\n\t\t\t\t\tdefault_sample_flags = traf.tfhd.default_sample_flags;\n\t\t\t\t} else {\n\t\t\t\t\tdefault_sample_flags = (trex ? trex.default_sample_flags : 0);\n\t\t\t\t}\n\t\t\t\ttraf.sample_number = 0;\n\t\t\t\t/* process sample groups */\n\t\t\t\tif (traf.sbgps.length > 0) {\n\t\t\t\t\tISOFile.initSampleGroups(trak, traf, traf.sbgps, trak.mdia.minf.stbl.sgpds, traf.sgpds);\n\t\t\t\t}\n\t\t\t\tfor (j = 0; j < traf.truns.length; j++) {\n\t\t\t\t\tvar trun = traf.truns[j];\n\t\t\t\t\tfor (k = 0; k < trun.sample_count; k++) {\n\t\t\t\t\t\tsample = {};\n\t\t\t\t\t\tsample.moof_number = this.lastMoofIndex;\n\t\t\t\t\t\tsample.number_in_traf = traf.sample_number;\n\t\t\t\t\t\ttraf.sample_number++;\n\t\t\t sample.number = trak.samples.length;\n\t\t\t\t\t\ttraf.first_sample_index = trak.samples.length;\n\t\t\t\t\t\ttrak.samples.push(sample);\n\t\t\t\t\t\tsample.track_id = trak.tkhd.track_id;\n\t\t\t\t\t\tsample.timescale = trak.mdia.mdhd.timescale;\n\t\t\t\t\t\tsample.description_index = default_sample_description_index-1;\n\t\t\t\t\t\tsample.description = trak.mdia.minf.stbl.stsd.entries[sample.description_index];\n\t\t\t\t\t\tsample.size = default_sample_size;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_SIZE) {\n\t\t\t\t\t\t\tsample.size = trun.sample_size[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_size += sample.size;\n\t\t\t\t\t\tsample.duration = default_sample_duration;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_DURATION) {\n\t\t\t\t\t\t\tsample.duration = trun.sample_duration[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrak.samples_duration += sample.duration;\n\t\t\t\t\t\tif (trak.first_traf_merged || k > 0) {\n\t\t\t\t\t\t\tsample.dts = trak.samples[trak.samples.length-2].dts+trak.samples[trak.samples.length-2].duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (traf.tfdt) {\n\t\t\t\t\t\t\t\tsample.dts = traf.tfdt.baseMediaDecodeTime;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.dts = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttrak.first_traf_merged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.cts = sample.dts;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_CTS_OFFSET) {\n\t\t\t\t\t\t\tsample.cts = sample.dts + trun.sample_composition_time_offset[k];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample_flags = default_sample_flags;\n\t\t\t\t\t\tif (trun.flags & BoxParser.TRUN_FLAGS_FLAGS) {\n\t\t\t\t\t\t\tsample_flags = trun.sample_flags[k];\n\t\t\t\t\t\t} else if (k === 0 && (trun.flags & BoxParser.TRUN_FLAGS_FIRST_FLAG)) {\n\t\t\t\t\t\t\tsample_flags = trun.first_sample_flags;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsample.is_sync = ((sample_flags >> 16 & 0x1) ? false : true);\n\t\t\t\t\t\tsample.is_leading = (sample_flags >> 26 & 0x3);\n\t\t\t\t\t\tsample.depends_on = (sample_flags >> 24 & 0x3);\n\t\t\t\t\t\tsample.is_depended_on = (sample_flags >> 22 & 0x3);\n\t\t\t\t\t\tsample.has_redundancy = (sample_flags >> 20 & 0x3);\n\t\t\t\t\t\tsample.degradation_priority = (sample_flags & 0xFFFF);\n\t\t\t\t\t\t//ISOFile.process_sdtp(traf.sdtp, sample, sample.number_in_traf);\n\t\t\t\t\t\tvar bdop = (traf.tfhd.flags & BoxParser.TFHD_FLAG_BASE_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar dbim = (traf.tfhd.flags & BoxParser.TFHD_FLAG_DEFAULT_BASE_IS_MOOF) ? true : false;\n\t\t\t\t\t\tvar dop = (trun.flags & BoxParser.TRUN_FLAGS_DATA_OFFSET) ? true : false;\n\t\t\t\t\t\tvar bdo = 0;\n\t\t\t\t\t\tif (!bdop) {\n\t\t\t\t\t\t\tif (!dbim) {\n\t\t\t\t\t\t\t\tif (j === 0) { // the first track in the movie fragment\n\t\t\t\t\t\t\t\t\tbdo = moof.start; // the position of the first byte of the enclosing Movie Fragment Box\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbdo = last_run_position; // end of the data defined by the preceding *track* (irrespective of the track id) fragment in the moof\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbdo = moof.start;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbdo = traf.tfhd.base_data_offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j === 0 && k === 0) {\n\t\t\t\t\t\t\tif (dop) {\n\t\t\t\t\t\t\t\tsample.offset = bdo + trun.data_offset; // If the data-offset is present, it is relative to the base-data-offset established in the track fragment header\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsample.offset = bdo; // the data for this run starts the base-data-offset defined by the track fragment header\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsample.offset = last_run_position; // this run starts immediately after the data of the previous run\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlast_run_position = sample.offset + sample.size;\n\t\t\t\t\t\tif (traf.sbgps.length > 0 || traf.sgpds.length > 0 ||\n\t\t\t\t\t\t\ttrak.mdia.minf.stbl.sbgps.length > 0 || trak.mdia.minf.stbl.sgpds.length > 0) {\n\t\t\t\t\t\t\tISOFile.setSampleGroupProperties(trak, sample, sample.number_in_traf, traf.sample_groups_info);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (traf.subs) {\n\t\t\t\t\ttrak.has_fragment_subsamples = true;\n\t\t\t\t\tvar sample_index = traf.first_sample_index;\n\t\t\t\t\tfor (j = 0; j < traf.subs.entries.length; j++) {\n\t\t\t\t\t\tsample_index += traf.subs.entries[j].sample_delta;\n\t\t\t\t\t\tsample = trak.samples[sample_index-1];\n\t\t\t\t\t\tsample.subsamples = traf.subs.entries[j].subsamples;\n\t\t\t\t\t}\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t\n}\n\n/* Try to get sample data for a given sample:\n returns null if not found\n returns the same sample if already requested\n */\nISOFile.prototype.getSample = function(trak, sampleNum) {\t\n\tvar buffer;\n\tvar sample = trak.samples[sampleNum];\n\t\n\tif (!this.moov) {\n\t\treturn null;\n\t}\n\n\tif (!sample.data) {\n\t\t/* Not yet fetched */\n\t\tsample.data = new Uint8Array(sample.size);\n\t\tsample.alreadyRead = 0;\n\t\tthis.samplesDataSize += sample.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating sample #\"+sampleNum+\" on track #\"+trak.tkhd.track_id+\" of size \"+sample.size+\" (total: \"+this.samplesDataSize+\")\");\n\t} else if (sample.alreadyRead == sample.size) {\n\t\t/* Already fetched entirely */\n\t\treturn sample;\n\t}\n\n\t/* The sample has only been partially fetched, we need to check in all buffers */\n\twhile(true) {\n\t\tvar index =\tthis.stream.findPosition(true, sample.offset + sample.alreadyRead, false);\n\t\tif (index > -1) {\n\t\t\tbuffer = this.stream.buffers[index];\n\t\t\tvar lengthAfterStart = buffer.byteLength - (sample.offset + sample.alreadyRead - buffer.fileStart);\n\t\t\tif (sample.size - sample.alreadyRead <= lengthAfterStart) {\n\t\t\t\t/* the (rest of the) sample is entirely contained in this buffer */\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+(sample.size - sample.alreadyRead)+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, sample.size - sample.alreadyRead);\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += sample.size - sample.alreadyRead;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\tsample.alreadyRead = sample.size;\n\n\t\t\t\treturn sample;\n\t\t\t} else {\n\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\tif (lengthAfterStart === 0) return null;\n\n\t\t\t\tLog.debug(\"ISOFile\",\"Getting sample #\"+sampleNum+\" partial data (alreadyRead: \"+sample.alreadyRead+\" offset: \"+\n\t\t\t\t\t(sample.offset+sample.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\" full size: \"+sample.size+\")\");\n\n\t\t\t\tDataStream.memcpy(sample.data.buffer, sample.alreadyRead,\n\t\t\t\t buffer, sample.offset+sample.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\tsample.alreadyRead += lengthAfterStart;\n\n\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t/* keep looking in the next buffer */\n\t\t\t}\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n\n/* Release the memory used to store the data of the sample */\nISOFile.prototype.releaseSample = function(trak, sampleNum) {\t\n\tvar sample = trak.samples[sampleNum];\n\tif (sample.data) {\n\t\tthis.samplesDataSize -= sample.size;\n\t\tsample.data = null;\n\t\tsample.alreadyRead = 0;\n\t\treturn sample.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nISOFile.prototype.getAllocatedSampleDataSize = function() {\n\treturn this.samplesDataSize;\n}\n\n/* Builds the MIME Type 'codecs' sub-parameters for the whole file */\nISOFile.prototype.getCodecs = function() {\t\n\tvar i;\n\tvar codecs = \"\";\n\tfor (i = 0; i < this.moov.traks.length; i++) {\n\t\tvar trak = this.moov.traks[i];\n\t\tif (i>0) {\n\t\t\tcodecs+=\",\"; \n\t\t}\n\t\tcodecs += trak.mdia.minf.stbl.stsd.entries[0].getCodec();\t\t\n\t}\n\treturn codecs;\n}\n\n/* Helper function */\nISOFile.prototype.getTrexById = function(id) {\t\n\tvar i;\n\tif (!this.moov || !this.moov.mvex) return null;\n\tfor (i = 0; i < this.moov.mvex.trexs.length; i++) {\n\t\tvar trex = this.moov.mvex.trexs[i];\n\t\tif (trex.track_id == id) return trex;\n\t}\n\treturn null;\n}\n\n/* Helper function */\nISOFile.prototype.getTrackById = function(id) {\n\tif (this.moov === undefined) {\n\t\treturn null;\n\t}\n\tfor (var j = 0; j < this.moov.traks.length; j++) {\n\t\tvar trak = this.moov.traks[j];\n\t\tif (trak.tkhd.track_id == id) return trak;\n\t}\n\treturn null;\n}\n// file:src/isofile-item-processing.js\n/* size of the buffers allocated for samples */\nISOFile.prototype.itemsDataSize = 0;\n\nISOFile.prototype.flattenItemInfo = function() {\t\n\tvar items = this.items;\n\tvar entity_groups = this.entity_groups;\n\tvar i, j;\n\tvar item;\n\tvar meta = this.meta;\n\tif (meta === null || meta === undefined) return;\n\tif (meta.hdlr === undefined) return;\n\tif (meta.iinf === undefined) return;\n\tfor (i = 0; i < meta.iinf.item_infos.length; i++) {\n\t\titem = {};\n\t\titem.id = meta.iinf.item_infos[i].item_ID;\n\t\titems[item.id] = item;\n\t\titem.ref_to = [];\n\t\titem.name = meta.iinf.item_infos[i].item_name;\n\t\tif (meta.iinf.item_infos[i].protection_index > 0) {\n\t\t\titem.protection = meta.ipro.protections[meta.iinf.item_infos[i].protection_index-1];\n\t\t}\n\t\tif (meta.iinf.item_infos[i].item_type) {\n\t\t\titem.type = meta.iinf.item_infos[i].item_type;\n\t\t} else {\n\t\t\titem.type = \"mime\";\n\t\t}\n\t\titem.content_type = meta.iinf.item_infos[i].content_type;\n\t\titem.content_encoding = meta.iinf.item_infos[i].content_encoding;\n\t\titem.item_uri_type = meta.iinf.item_infos[i].item_uri_type;\n\t}\n\tif (meta.grpl) {\n\t\tfor (i = 0; i < meta.grpl.boxes.length; i++) {\n\t\t\tentity_group = {};\n\t\t\tentity_group.id = meta.grpl.boxes[i].group_id;\n\t\t\tentity_group.entity_ids = meta.grpl.boxes[i].entity_ids;\n\t\t\tentity_group.type = meta.grpl.boxes[i].type;\n\t\t\tentity_groups[entity_group.id] = entity_group;\n\t\t}\n\t}\n\tif (meta.iloc) {\n\t\tfor(i = 0; i < meta.iloc.items.length; i++) {\n\t\t\tvar offset;\n\t\t\tvar itemloc = meta.iloc.items[i];\n\t\t\titem = items[itemloc.item_ID];\n\t\t\tif (itemloc.data_reference_index !== 0) {\n\t\t\t\tLog.warn(\"Item storage with reference to other files: not supported\");\n\t\t\t\titem.source = meta.dinf.boxes[itemloc.data_reference_index-1];\n\t\t\t}\n\t\t\tswitch(itemloc.construction_method) {\n\t\t\t\tcase 0: // offset into the file referenced by the data reference index\n\t\t\t\tbreak;\n\t\t\t\tcase 1: // offset into the idat box of this meta box\n\t\t\t\tbreak;\n\t\t\t\tcase 2: // offset into another item\n\t\t\t\tLog.warn(\"Item storage with construction_method : not supported\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\titem.extents = [];\n\t\t\titem.size = 0;\n\t\t\tfor (j = 0; j < itemloc.extents.length; j++) {\n\t\t\t\titem.extents[j] = {};\n\t\t\t\titem.extents[j].offset = itemloc.extents[j].extent_offset + itemloc.base_offset;\n\t\t\t\tif (itemloc.construction_method == 1) {\n\t\t\t\t\titem.extents[j].offset += meta.idat.start + meta.idat.hdr_size;\n\t\t\t\t}\n\t\t\t\titem.extents[j].length = itemloc.extents[j].extent_length;\n\t\t\t\titem.extents[j].alreadyRead = 0;\n\t\t\t\titem.size += item.extents[j].length;\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.pitm) {\n\t\titems[meta.pitm.item_id].primary = true;\n\t}\n\tif (meta.iref) {\n\t\tfor (i=0; i <meta.iref.references.length; i++) {\n\t\t\tvar ref = meta.iref.references[i];\n\t\t\tfor (j=0; j<ref.references.length; j++) {\n\t\t\t\titems[ref.from_item_ID].ref_to.push({type: ref.type, id: ref.references[j]});\n\t\t\t}\n\t\t}\n\t}\n\tif (meta.iprp) {\n\t\tfor (var k = 0; k < meta.iprp.ipmas.length; k++) {\n\t\t\tvar ipma = meta.iprp.ipmas[k];\n\t\t\tfor (i = 0; i < ipma.associations.length; i++) {\n\t\t\t\tvar association = ipma.associations[i];\n\t\t\t\titem = items[association.id];\n\t\t\t\tif (!item) {\n\t\t\t\t\titem = entity_groups[association.id];\n\t\t\t\t}\n\t\t\t\tif (item) {\n\t\t\t\t\tif (item.properties === undefined) {\n\t\t\t\t\t\titem.properties = {};\n\t\t\t\t\t\titem.properties.boxes = [];\n\t\t\t\t\t}\n\t\t\t\t\tfor (j = 0; j < association.props.length; j++) {\n\t\t\t\t\t\tvar propEntry = association.props[j];\n\t\t\t\t\t\tif (propEntry.property_index > 0 && propEntry.property_index-1 < meta.iprp.ipco.boxes.length) {\n\t\t\t\t\t\t\tvar propbox = meta.iprp.ipco.boxes[propEntry.property_index-1];\n\t\t\t\t\t\t\titem.properties[propbox.type] = propbox;\n\t\t\t\t\t\t\titem.properties.boxes.push(propbox);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nISOFile.prototype.getItem = function(item_id) {\t\n\tvar buffer;\n\tvar item;\n\t\n\tif (!this.meta) {\n\t\treturn null;\n\t}\n\n \titem = this.items[item_id];\n\tif (!item.data && item.size) {\n\t\t/* Not yet fetched */\n\t\titem.data = new Uint8Array(item.size);\n\t\titem.alreadyRead = 0;\n\t\tthis.itemsDataSize += item.size;\n\t\tLog.debug(\"ISOFile\", \"Allocating item #\"+item_id+\" of size \"+item.size+\" (total: \"+this.itemsDataSize+\")\");\n\t} else if (item.alreadyRead === item.size) {\n\t\t/* Already fetched entirely */\n\t\treturn item;\n\t}\n\n\t/* The item has only been partially fetched, we need to check in all buffers to find the remaining extents*/\n\n\tfor (var i = 0; i < item.extents.length; i++) {\n\t\tvar extent = item.extents[i];\n\t\tif (extent.alreadyRead === extent.length) {\n\t\t\tcontinue;\n\t\t} else {\n\t\t\tvar index =\tthis.stream.findPosition(true, extent.offset + extent.alreadyRead, false);\n\t\t\tif (index > -1) {\n\t\t\t\tbuffer = this.stream.buffers[index];\n\t\t\t\tvar lengthAfterStart = buffer.byteLength - (extent.offset + extent.alreadyRead - buffer.fileStart);\n\t\t\t\tif (extent.length - extent.alreadyRead <= lengthAfterStart) {\n\t\t\t\t\t/* the (rest of the) extent is entirely contained in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" data (alreadyRead: \"+extent.alreadyRead+\n\t\t\t\t\t\t\" offset: \"+(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+(extent.length - extent.alreadyRead)+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, extent.length - extent.alreadyRead);\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += extent.length - extent.alreadyRead;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\n\t\t\t\t\titem.alreadyRead += (extent.length - extent.alreadyRead);\n\t\t\t\t\textent.alreadyRead = extent.length;\n\t\t\t\t} else {\n\t\t\t\t\t/* the sample does not end in this buffer */\n\n\t\t\t\t\tLog.debug(\"ISOFile\",\"Getting item #\"+item_id+\" extent #\"+i+\" partial data (alreadyRead: \"+extent.alreadyRead+\" offset: \"+\n\t\t\t\t\t\t(extent.offset+extent.alreadyRead - buffer.fileStart)+\" read size: \"+lengthAfterStart+\n\t\t\t\t\t\t\" full extent size: \"+extent.length+\" full item size: \"+item.size+\")\");\n\n\t\t\t\t\tDataStream.memcpy(item.data.buffer, item.alreadyRead, \n\t\t\t\t\t buffer, extent.offset+extent.alreadyRead - buffer.fileStart, lengthAfterStart);\n\t\t\t\t\textent.alreadyRead += lengthAfterStart;\n\t\t\t\t\titem.alreadyRead += lengthAfterStart;\n\n\t\t\t\t\t/* update the number of bytes used in this buffer and check if it needs to be removed */\n\t\t\t\t\tbuffer.usedBytes += lengthAfterStart;\n\t\t\t\t\tthis.stream.logBufferLevel();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\tif (item.alreadyRead === item.size) {\n\t\t/* fetched entirely */\n\t\treturn item;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n/* Release the memory used to store the data of the item */\nISOFile.prototype.releaseItem = function(item_id) {\t\n\tvar item = this.items[item_id];\n\tif (item.data) {\n\t\tthis.itemsDataSize -= item.size;\n\t\titem.data = null;\n\t\titem.alreadyRead = 0;\n\t\tfor (var i = 0; i < item.extents.length; i++) {\n\t\t\tvar extent = item.extents[i];\n\t\t\textent.alreadyRead = 0;\n\t\t}\n\t\treturn item.size;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\n\nISOFile.prototype.processItems = function(callback) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tthis.getItem(item.id);\n\t\tif (callback && !item.sent) {\n\t\t\tcallback(item);\n\t\t\titem.sent = true;\n\t\t\titem.data = null;\n\t\t}\n\t}\n}\n\nISOFile.prototype.hasItem = function(name) {\n\tfor(var i in this.items) {\n\t\tvar item = this.items[i];\n\t\tif (item.name === name) {\n\t\t\treturn item.id;\n\t\t}\n\t}\n\treturn -1;\n}\n\nISOFile.prototype.getMetaHandler = function() {\n\tif (!this.meta) {\n\t\treturn null;\n\t} else {\n\t\treturn this.meta.hdlr.handler;\t\t\n\t}\n}\n\nISOFile.prototype.getPrimaryItem = function() {\n\tif (!this.meta || !this.meta.pitm) {\n\t\treturn null;\n\t} else {\n\t\treturn this.getItem(this.meta.pitm.item_id);\n\t}\n}\n\nISOFile.prototype.itemToFragmentedTrackFile = function(_options) {\n\tvar options = _options || {};\n\tvar item = null;\n\tif (options.itemId) {\n\t\titem = this.getItem(options.itemId);\n\t} else {\n\t\titem = this.getPrimaryItem();\n\t}\n\tif (item == null) return null;\n\n\tvar file = new ISOFile();\n\tfile.discardMdatData = false;\n\t// assuming the track type is the same as the item type\n\tvar trackOptions = { type: item.type, description_boxes: item.properties.boxes};\n\tif (item.properties.ispe) {\n\t\ttrackOptions.width = item.properties.ispe.image_width;\n\t\ttrackOptions.height = item.properties.ispe.image_height;\n\t}\n\tvar trackId = file.addTrack(trackOptions);\n\tif (trackId) {\n\t\tfile.addSample(trackId, item.data);\n\t\treturn file;\n\t} else {\n\t\treturn null;\n\t}\n}\n\n// file:src/isofile-write.js\n/* Rewrite the entire file */\nISOFile.prototype.write = function(outstream) {\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tthis.boxes[i].write(outstream);\n\t}\n}\n\nISOFile.prototype.createFragment = function(track_id, sampleNumber, stream_) {\n\tvar trak = this.getTrackById(track_id);\n\tvar sample = this.getSample(trak, sampleNumber);\n\tif (sample == null) {\n\t\tthis.setNextSeekPositionFromSample(trak.samples[sampleNumber]);\n\t\treturn null;\n\t}\n\t\n\tvar stream = stream_ || new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\n\tvar moof = this.createSingleSampleMoof(sample);\n\tmoof.write(stream);\n\n\t/* adjusting the data_offset now that the moof size is known*/\n\tmoof.trafs[0].truns[0].data_offset = moof.size+8; //8 is mdat header\n\tLog.debug(\"MP4Box\", \"Adjusting data_offset with new value \"+moof.trafs[0].truns[0].data_offset);\n\tstream.adjustUint32(moof.trafs[0].truns[0].data_offset_position, moof.trafs[0].truns[0].data_offset);\n\t\t\n\tvar mdat = new BoxParser.mdatBox();\n\tmdat.data = sample.data;\n\tmdat.write(stream);\n\treturn stream;\n}\n\n/* Modify the file and create the initialization segment */\nISOFile.writeInitializationSegment = function(ftyp, moov, total_duration, sample_duration) {\n\tvar i;\n\tvar index;\n\tvar mehd;\n\tvar trex;\n\tvar box;\n\tLog.debug(\"ISOFile\", \"Generating initialization segment\");\n\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tftyp.write(stream);\n\t\n\t/* we can now create the new mvex box */\n\tvar mvex = moov.add(\"mvex\");\n\tif (total_duration) {\n\t\tmvex.add(\"mehd\").set(\"fragment_duration\", total_duration);\n\t}\n\tfor (i = 0; i < moov.traks.length; i++) {\n\t\tmvex.add(\"trex\").set(\"track_id\", moov.traks[i].tkhd.track_id)\n\t\t\t\t\t\t.set(\"default_sample_description_index\", 1)\n\t\t\t\t\t\t.set(\"default_sample_duration\", sample_duration)\n\t\t\t\t\t\t.set(\"default_sample_size\", 0)\n\t\t\t\t\t\t.set(\"default_sample_flags\", 1<<16)\n\t}\n\tmoov.write(stream);\n\n\treturn stream.buffer;\n\n}\n\nISOFile.prototype.save = function(name) {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\tstream.save(name);\t\n}\n\nISOFile.prototype.getBuffer = function() {\n\tvar stream = new DataStream();\n\tstream.endianness = DataStream.BIG_ENDIAN;\n\tthis.write(stream);\n\treturn stream.buffer;\n}\n\nISOFile.prototype.initializeSegmentation = function() {\n\tvar i;\n\tvar j;\n\tvar box;\n\tvar initSegs;\n\tvar trak;\n\tvar seg;\n\tif (this.onSegment === null) {\n\t\tLog.warn(\"MP4Box\", \"No segmentation callback set!\");\n\t}\n\tif (!this.isFragmentationInitialized) {\n\t\tthis.isFragmentationInitialized = true;\t\t\n\t\tthis.nextMoofNumber = 0;\n\t\tthis.resetTables();\n\t}\t\n\tinitSegs = [];\t\n\tfor (i = 0; i < this.fragmentedTracks.length; i++) {\n\t\tvar moov = new BoxParser.moovBox();\n\t\tmoov.mvhd = this.moov.mvhd;\n\t moov.boxes.push(moov.mvhd);\n\t\ttrak = this.getTrackById(this.fragmentedTracks[i].id);\n\t\tmoov.boxes.push(trak);\n\t\tmoov.traks.push(trak);\n\t\tseg = {};\n\t\tseg.id = trak.tkhd.track_id;\n\t\tseg.user = this.fragmentedTracks[i].user;\n\t\tseg.buffer = ISOFile.writeInitializationSegment(this.ftyp, moov, (this.moov.mvex && this.moov.mvex.mehd ? this.moov.mvex.mehd.fragment_duration: undefined), (this.moov.traks[i].samples.length>0 ? this.moov.traks[i].samples[0].duration: 0));\n\t\tinitSegs.push(seg);\n\t}\n\treturn initSegs;\n}\n\n// file:src/box-print.js\n/* \n * Copyright (c) Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nBoxParser.Box.prototype.printHeader = function(output) {\n\tthis.size += 8;\n\tif (this.size > MAX_SIZE) {\n\t\tthis.size += 8;\n\t}\n\tif (this.type === \"uuid\") {\n\t\tthis.size += 16;\n\t}\n\toutput.log(output.indent+\"size:\"+this.size);\n\toutput.log(output.indent+\"type:\"+this.type);\n}\n\nBoxParser.FullBox.prototype.printHeader = function(output) {\n\tthis.size += 4;\n\tBoxParser.Box.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"version:\"+this.version);\n\toutput.log(output.indent+\"flags:\"+this.flags);\n}\n\nBoxParser.Box.prototype.print = function(output) {\n\tthis.printHeader(output);\n}\n\nBoxParser.ContainerBox.prototype.print = function(output) {\n\tthis.printHeader(output);\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tvar prev_indent = output.indent;\n\t\t\toutput.indent += \" \";\n\t\t\tthis.boxes[i].print(output);\n\t\t\toutput.indent = prev_indent;\n\t\t}\n\t}\n}\n\nISOFile.prototype.print = function(output) {\n\toutput.indent = \"\";\n\tfor (var i=0; i<this.boxes.length; i++) {\n\t\tif (this.boxes[i]) {\n\t\t\tthis.boxes[i].print(output);\n\t\t}\n\t}\t\n}\n\nBoxParser.mvhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"timescale: \"+this.timescale);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"rate: \"+this.rate);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"next_track_id: \"+this.next_track_id);\n}\n\nBoxParser.tkhdBox.prototype.print = function(output) {\n\tBoxParser.FullBox.prototype.printHeader.call(this, output);\n\toutput.log(output.indent+\"creation_time: \"+this.creation_time);\n\toutput.log(output.indent+\"modification_time: \"+this.modification_time);\n\toutput.log(output.indent+\"track_id: \"+this.track_id);\n\toutput.log(output.indent+\"duration: \"+this.duration);\n\toutput.log(output.indent+\"volume: \"+(this.volume>>8));\n\toutput.log(output.indent+\"matrix: \"+this.matrix.join(\", \"));\n\toutput.log(output.indent+\"layer: \"+this.layer);\n\toutput.log(output.indent+\"alternate_group: \"+this.alternate_group);\n\toutput.log(output.indent+\"width: \"+this.width);\n\toutput.log(output.indent+\"height: \"+this.height);\n}// file:src/mp4box.js\n/*\n * Copyright (c) 2012-2013. Telecom ParisTech/TSI/MM/GPAC Cyril Concolato\n * License: BSD-3-Clause (see LICENSE file)\n */\nvar MP4Box = {};\n\nMP4Box.createFile = function (_keepMdatData, _stream) {\n\t/* Boolean indicating if bytes containing media data should be kept in memory */\n\tvar keepMdatData = (_keepMdatData !== undefined ? _keepMdatData : true);\n\tvar file = new ISOFile(_stream);\n\tfile.discardMdatData = (keepMdatData ? false : true);\n\treturn file;\n}\n\nif (typeof exports !== 'undefined') {\n\texports.createFile = MP4Box.createFile;\n}\n",null,null,null,null,null,null,null,null,null,null],"names":["MAX_U6","Math","pow","MAX_U14","MAX_U30","MAX_U53","Number","MAX_SAFE_INTEGER","MAX_U62","ImmutableBytesBuffer","buffer","offset","view","constructor","this","DataView","byteOffset","length","remaining","Uint8Array","slice","firstByteValue","getRemainingBuffer","subarray","getU8","Error","val","getUint8","getU16","getUint16","getU32","getUint32","getU64","getBigUint64","getVarInt","first","prefix","BigInt","getNumberVarInt","getBytes","len","getVarBytes","getUtf8String","TextDecoder","decode","MutableBytesBuffer","byteLength","enoughSpaceAvailable","required","newBuffer","x","set","putU8","v","setUint8","putU16","setUint16","putU32","setUint32","putU64","setBigUint64","putVarInt","value","shift","i","putBytes","putUtf8String","bytes","TextEncoder","encode","putLengthPrefixedByteArray","ReadableStreamBuffer","reader","readableStream","getReader","waitForBytes","Promise","resolve","fillTo","fill","result","read","done","temp","size","readAll","maxLength","undefined","getInt16","close","releaseLock","cancel","release","WritableStreamBuffer","writer","writableStream","getWriter","write","data","flush","clear","ReadableWritableStreamBuffer","readStreamBuffer","writeStreamBuffer","releaseAll","readBuffer","readStream","writeBuffer","writeStream","Tuple","TupleField","Location","KeyValuePairs","Parameters","GroupOrder","FilterType","Subscribe","SubscribeOk","SubscribeError","SubscribeUpdate","SubscribeNamespace","SubscribeNamespaceOk","SubscribeNamespaceError","Unsubscribe","Publish","PublishOk","PublishError","PublishDone","PublishNamespace","PublishNamespaceOk","PublishNamespaceError","PublishNamespaceDone","FetchType","StandaloneFetch","JoiningFetch","Fetch","FetchOk","FetchError","FetchCancel","GoAway","ClientSetup","ServerSetup","Version","ControlMessageType","debug","msg","console","log","async","sleep","ms","setTimeout","serialize","tuple","buf","forEach","field","serialized","deserialize","push","encoded","location","group","object","valueIsVarInt","key","deserialize_with_size","pairs","Map","deserialize_with_reader","order","Publisher","Ascending","Descending","NextGroupStart","LargestObject","AbsoluteStart","AbsoluteRange","mainBuf","payloadBuf","id","namespace","name","subscriber_priority","group_order","forward","filter_type","start_location","end_group","params","track_alias","expires","content_exists","largest_location","code","reason","subscription_id","stream_count","Standalone","Relative","Absolute","end_location","r","start","fetch_type","standalone","joining","end_of_track","session_uri","versions","version","supportedVersionLen","toString","t","ReservedSetupV00","MaxRequestId","RequestsBlocked","ControlStream","decoder","encoder","nextRequestId","mutex","c","Decoder","Encoder","recv","message","send","unlock","lock","payload","p","then","incr","messageType","advertisedLength","error","rawPayload","res","type","w","m","SubgroupHeader","SubgroupObject","SubgroupType","ObjectForwardingPreference","Status","ObjectDatagramType","ObjectDatagram","header","group_id","hasExplicitSubgroupId","subgroup_id","publisher_priority","obj","object_id","extension_headers","object_payload","status","try_from","Type0x10","Type0x11","Type0x12","Type0x13","Type0x14","Type0x15","Type0x18","Type0x19","Type0x1A","Type0x1B","Type0x1C","Type0x1D","isSubgroupIdPresent","isSubgroupIdZero","isSubgroupFirstObjectId","isExtensionPresent","contains_end_of_group","SubgroupWriter","stream","SubgroupReader","extHeaders","obj_payload_len","NORMAL","OBJECT_NULL","GROUP_END","TRACK_END","Type0x0","Type0x1","Type0x2","Type0x3","Type0x4","Type0x5","Type0x6","Type0x7","Type0x20","Type0x21","isEndOfGroup","hasExtensions","hasObjectId","hasStatus","alias","extHeadersLength","extHeadersData","Objects","quic","h","datagrams","writable","TrackWriter","createUnidirectionalStream","subgroupHeader","streams","incomingUnidirectionalStreams","subgroupType","e","asError","String","Deferred","promise","reject","pending","Watch","current","next","init","update","Function","Notify","wait","wake","Queue","closed","capacity","queue","CountQueuingStrategy","highWaterMark","TransformStream","readable","abort","err","control","objects","publishedNamespaces","waitingPublishNamespaceRequests","subscribe","subscribeQueue","nextTrackAlias","publish_namespace","has","join","publishNamespaceSend","PublishNamespaceSend","Control.ControlMessageType","subscribed","recvSubscribe","recvUnsubscribe","recvPublishNamespaceOk","recvPublishNamespaceError","get","onOk","onError","warn","trackAlias","SubscribeRecv","unsubscribe","delete","state","ok","active","subscriberPriority","groupOrder","track","ack","acked","serve","props","priority","subgroup","Subscriber","publishedNamespacesQueue","trackToIDMap","trackAliasMap","aliasToSubscriptionMap","pendingTrack","recvPublishNamespace","recvPublishNamespaceDone","recvSubscribeOk","recvSubscribeError","recvPublishDone","publishNamespace","PublishNamespaceRecv","_msg","subscribe_namespace","SubscribeSend","subscription_req","Control.GroupOrder","Control.FilterType","trackID","callback","onDone","recvObject","subscriptionId","onData","_code","_reason","streamCount","Connection","controlStream","publisher","subscriber","running","run","closeCode","all","runControl","runObjects","Client","fingerprint","config","fetchFingerprint","catch","connect","options","serverCertificateHashes","WebTransport","url","ready","createBidirectionalStream","sendOrder","Control.Version","DRAFT_14","Control.ClientSetup","server","readServerSetup","Stream.ControlStream","response","fetch","hexString","text","hexBytes","parseInt","algorithm","bufferLen","bufReader","readClientSetup","Segment","input","cache","timestamp","backpressure","ByteLengthQueuingStrategy","transport","transform","chunk","controller","max","duration","enqueue","chunks","tee","log_level","Log","Date","setLogLevel","level","info","module","getDurationString","_timescale","neg","pad","number","a","split","duration_sec","hours","floor","minutes","msec","printRanges","ranges","str","end","exports","MP4BoxStream","arrayBuffer","ArrayBuffer","dataview","position","prototype","getPosition","getEndPosition","getLength","seek","pos","npos","min","isNaN","isFinite","isEos","readAnyInt","signed","getInt8","getInt32","readUint8","readUint16","readUint24","readUint32","readUint64","readString","s","fromCharCode","readCString","arr","b","apply","readInt8","readInt16","readInt32","readInt64","readUint8Array","readInt16Array","Int16Array","readUint16Array","readUint32Array","Uint32Array","readInt32Array","Int32Array","DataStream","endianness","_byteOffset","dataView","LITTLE_ENDIAN","_realloc","extra","_dynamicSize","req","blen","_buffer","_byteLength","src","_trimAlloc","dst","BIG_ENDIAN","Object","defineProperty","_dataView","isEof","mapUint8Array","memcpy","BYTES_PER_ELEMENT","arrayToNative","readInt8Array","Int8Array","Uint16Array","readFloat64Array","Float64Array","readFloat32Array","Float32Array","readFloat32","getFloat32","readFloat64","getFloat64","dstOffset","srcOffset","dstU8","srcU8","array","arrayIsLittleEndian","flipArrayEndianness","nativeToEndian","littleEndian","u8","j","k","tmp","failurePosition","fromCharCodeUint8","uint8arr","encoding","MAX_SIZE","save","filename","blob","Blob","window","URL","createObjectURL","document","createElement","body","appendChild","setAttribute","click","revokeObjectURL","writeInt32Array","mapInt32Array","writeInt32","writeInt16Array","mapInt16Array","writeInt16","writeInt8Array","mapInt8Array","writeInt8","writeUint32Array","mapUint32Array","writeUint32","writeUint16Array","mapUint16Array","writeUint16","writeUint8Array","writeUint8","writeFloat64Array","mapFloat64Array","writeFloat64","writeFloat32Array","mapFloat32Array","writeFloat32","setInt32","setInt16","setInt8","setFloat32","setFloat64","writeUCS2String","lengthOverride","charCodeAt","writeString","substring","writeCString","writeStruct","structDefinition","struct","writeType","tp","Array","charset","test","ta","writeUint64","writeUint24","adjustUint32","MultiBufferStream","buffers","bufferIndex","insertBuffer","initialized","firstBuffer","fileStart","logBufferLevel","concat","buffer1","buffer2","reduceBuffer","newLength","smallB","usedBytes","ab","to_add","splice","used","total","range","bufferedString","cleanBuffers","mergeNextBuffer","next_buffer","oldLength","oldUsedBytes","oldFileStart","findPosition","fromStart","filePosition","markAsUsed","abuffer","index","findEndContiguousBuf","inputindex","currentBuf","nextBuf","getEndFilePositionAfter","addUsedBytes","nbBytes","setAllUsedBytes","MPEG4DescriptorParser","descTagToName","getDescriptorName","tag","that","classes","parseOneDescriptor","desc","byteRead","Descriptor","parse","_tag","_size","descs","findDescriptor","parseRemainingDescriptors","ES_Descriptor","call","ES_ID","flags","dependsOn_ES_ID","l","OCR_ES_ID","getOTI","dcd","oti","getAudioConfig","dsi","audioObjectType","DecoderConfigDescriptor","streamType","upStream","bufferSize","maxBitrate","avgBitrate","DecoderSpecificInfo","SLConfigDescriptor","BoxParser","ERR_INVALID_DATA","ERR_NOT_ENOUGH_DATA","OK","BASIC_BOXES","FULL_BOXES","CONTAINER_BOXES","boxCodes","fullBoxCodes","containerBoxCodes","sampleEntryCodes","sampleGroupEntryCodes","trackGroupTypes","UUIDBoxes","UUIDs","initialize","FullBox","Box","ContainerBox","SampleEntry","TrackGroupTypeBox","box","createBoxCtor","createFullBoxCtor","boxes","createContainerBoxCtor","_type","_name","_uuid","box_name","uuid","hdr_size","SampleGroupEntry","grouping_type","parseMethod","parseFullHeader","addSubBoxArrays","subBoxNames","nbSubBoxes","createMediaSampleEntryCtor","mediaType","createSampleEntryCtor","createEncryptedSampleEntryCtor","createSampleGroupCtor","createTrackGroupCtor","createUUIDBox","isFullBox","isContainerBox","printPS","ps","nalu","reduce","byte","padStart","ColorPoint","y","Pixel","row","col","bad_pixel_row","bad_pixel_column","TKHD_FLAG_ENABLED","TKHD_FLAG_IN_MOVIE","TKHD_FLAG_IN_PREVIEW","TFHD_FLAG_BASE_DATA_OFFSET","TFHD_FLAG_SAMPLE_DESC","TFHD_FLAG_SAMPLE_DUR","TFHD_FLAG_SAMPLE_SIZE","TFHD_FLAG_SAMPLE_FLAGS","TFHD_FLAG_DUR_EMPTY","TFHD_FLAG_DEFAULT_BASE_IS_MOOF","TRUN_FLAGS_DATA_OFFSET","TRUN_FLAGS_FIRST_FLAG","TRUN_FLAGS_DURATION","TRUN_FLAGS_SIZE","TRUN_FLAGS_FLAGS","TRUN_FLAGS_CTS_OFFSET","add","addBox","prop","addEntry","_prop","parseUUID","parseHex16","hex16","hex","parseOneBox","headerOnly","parentSize","diff","box_type","has_unparsed_data","parseDataAndRewind","ret","indexOf","parseLanguage","language","chars","languageString","SAMPLE_ENTRY_TYPE_VISUAL","SAMPLE_ENTRY_TYPE_AUDIO","SAMPLE_ENTRY_TYPE_HINT","SAMPLE_ENTRY_TYPE_METADATA","SAMPLE_ENTRY_TYPE_SUBTITLE","SAMPLE_ENTRY_TYPE_SYSTEM","SAMPLE_ENTRY_TYPE_TEXT","parseHeader","data_reference_index","parseFooter","compressorname_length","width","height","horizresolution","vertresolution","frame_count","compressorname","depth","channel_count","samplesize","samplerate","FieldLength","layer_size","op_index","aux_type","aux_subtype_length","aux_subtype","seq_profile","seq_level_idx_0","seq_tier_0","high_bitdepth","twelve_bit","monochrome","chroma_subsampling_x","chroma_subsampling_y","chroma_sample_position","reserved_1","initial_presentation_delay_present","initial_presentation_delay_minus_one","reserved_2","configOBUs_length","configOBUs","toparse","configurationVersion","AVCProfileIndication","profile_compatibility","AVCLevelIndication","lengthSizeMinusOne","nb_SPS_nalus","SPS","nb_PPS_nalus","PPS","ext","bufferSizeDB","all_ref_pics_intra","intra_pred_used","max_ref_per_pic","channel_indexes","channel_types","channel_associations","cleanApertureWidthN","cleanApertureWidthD","cleanApertureHeightN","cleanApertureHeightD","horizOffN","horizOffD","vertOffN","vertOffD","max_content_light_level","max_pic_average_light_level","pos_x","pos_y","pos_z","quat_x","quat_y","quat_z","focal_length_x","principal_point_x","principal_point_y","focal_length_y","skew_factor","component_count","component_types","component_type_urls","component_type","entry_count","chunk_offsets","maxCLL","maxFALL","colour_type","colour_primaries","transfer_characteristics","matrix_coefficients","full_range_flag","ICC_profile","notice","compositionToDTSShift","leastDecodeToDisplayDelta","greatestDecodeToDisplayDelta","compositionStartTime","compositionEndTime","sample_counts","sample_offsets","tmp_byte1","tmp_byte2","tmp_byte3","fscod","bsid","bsmod","acmod","lfeon","bit_rate_code","tmp_16","data_rate","num_ind_sub","ind_subs","ind_sub","num_dep_sub","chan_loc","boxesFound","knownBlockTypes","flagAndType","numMetadataBlocks","bytessent","time","OutputChannelCount","PreSkip","InputSampleRate","OutputGain","ChannelMappingFamily","StreamCount","CoupledCount","ChannelMapping","entries","extended_language","entry","segment_duration","media_time","media_rate_integer","media_rate_fraction","timescale","presentation_time","event_duration","scheme_id_uri","presentation_time_delta","message_size","message_data","createEntityToGroupCtor","num_entities_in_group","entity_ids","entity_id","tile_size_x","tile_size_y","layer_binning","tiles_in_layer_column_minus1","tiles_in_layer_row_minus1","esd_data","esd_parser","esd","fieldCount","fieldOrdering","data_format","major_brand","minor_version","compatible_brands","handler","tmp_byte","general_profile_space","general_tier_flag","general_profile_idc","general_profile_compatibility","general_constraint_indicator","general_level_idc","min_spatial_segmentation_idc","parallelismType","chroma_format_idc","bit_depth_luma_minus8","bit_depth_chroma_minus8","avgFrameRate","constantFrameRate","numTemporalLayers","temporalIdNested","nalu_arrays","nalu_array","completeness","nalu_type","numOfArrays","numNalus","item_infos","offset_size","length_size","base_offset_size","index_size","items","item_count","item","item_ID","construction_method","base_offset","extent_count","extents","extent","extent_index","extent_offset","extent_length","reserved","axis","item_protection_index","item_name","content_type","content_encoding","extension_type","item_type","item_uri_type","associations","item_assoc","association_count","essential","property_index","references","SingleItemTypeReferenceBox","SingleItemTypeReferenceBoxLarge","angle","image_width","image_height","schemeURI","count","levels","track_ID","padding_flag","assignment_type","grouping_type_parameter","sub_track_id","layer_id","period","display_primaries","white_point","max_display_mastering_luminance","min_display_mastering_luminance","creation_time","modification_time","fragment_duration","sequence_number","bits_per_pixel","rate","volume","matrix","next_track_id","packetssent","sample_count","padbits","hSpacing","vSpacing","payloadID","rtpmap_string","initial_delay","item_id","num_channels","bits_per_channels","step_count","ref_track_id","ntp_timestamp","system_id","kid","datasize","descriptionformat","sdptext","aux_info_type","aux_info_type_parameter","default_sample_info_size","sample_info_size","mime_format","schema_location","auxiliary_mime_types","displayFlags","horizontal_justification","vertical_justification","bg_color_rgba","box_record","style_record","roll_count","first_output_sample","sample_offset","description_length","num_output_samples","num_total_samples","layerNumber","accurateStatisticsFlag","avgBitRate","subSequenceIdentifier","durationFlag","avgRateFlag","dependency","numReferences","dependencyInfo","subSeqDirectionFlag","roll_distance","num_leading_samples_known","num_leading_samples","operation_point_count","target_rate_share","available_bitrate","maximum_bitrate","minimum_bitrate","discard_priority","crypt_byte_block","skip_byte_block","isProtected","Per_Sample_IV_Size","KID","constant_IV_size","constant_IV","NAL_unit_type","level_independently_decodable","group_description_index","component_index","correction_applied","num_bad_rows","num_bad_cols","num_bad_pixels","bad_rows","bad_columns","bad_pixels","scheme_type","scheme_version","scheme_uri","is_leading","sample_depends_on","sample_is_depended_on","sample_has_redundancy","default_length","default_group_description_index","reference_ID","earliest_presentation_time","first_offset","ref","tmp_32","reference_type","referenced_size","subsegment_duration","starts_with_SAP","SAP_type","SAP_delta_time","from_item_ID","to_item_ID","primaryRChromaticity_x","primaryRChromaticity_y","primaryGChromaticity_x","primaryGChromaticity_y","primaryBChromaticity_x","primaryBChromaticity_y","whitePointChromaticity_x","whitePointChromaticity_y","luminanceMax","luminanceMin","balance","subsegments","subsegment_count","subsegment","range_count","range_size","switch_group","alternate_group","attribute_list","first_chunk","samples_per_chunk","sample_description_index","entryCount","shadowed_sample_numbers","sync_sample_numbers","sample_numbers","sample_sizes","sample_size","delta","sample_deltas","tmp32","single_view_allowed","stereo_scheme","stereo_indication_type","ftypBox","field_size","subsample_count","sampleInfo","sample_delta","subsamples","subsample","discardable","codec_specific_parameters","default_crypt_byte_block","default_skip_byte_block","default_isProtected","default_Per_Sample_IV_Size","default_KID","default_constant_IV_size","default_constant_IV","baseMediaDecodeTime","readBytes","track_id","base_data_offset","default_sample_description_index","default_sample_duration","default_sample_size","default_sample_flags","length_size_of_traf_num","length_size_of_trun_num","length_size_of_sample_num","number_of_entries","moof_offset","traf_number","trun_number","sample_number","layer","track_group_id","TrackReferenceTypeBox","track_ids","trefBox","data_offset","first_sample_flags","sample_duration","sample_flags","sample_composition_time_offset","lang","description","tags","profile","component_bit_depth_minus_one","component_format","component_align_size","sampling_type","interleave_type","block_size","component_little_endian","block_pad_lsb","block_little_endian","block_reversed","pad_unknown","pixel_size","row_align_size","tile_align_size","num_tile_cols_minus_one","num_tile_rows_minus_one","LiveServerManifest","replace","default_AlgorithmID","default_IV_size","fragment_count","absolute_time","absolute_duration","graphicsmode","opcolor","bitDepth","chromaSubsampling","videoFullRangeFlag","colourPrimaries","transferCharacteristics","matrixCoefficients","codecIntializationDataSize","codecIntializationData","colorSpace","transferFunction","bitReader","held_bits","num_held_bits","stream_read_1_bytes","strm","stream_read_2_bytes","extract_bits","num_bits","ptl_present_flag","ols_idx","num_sublayers","constant_frame_rate","bit_depth_minus8","num_bytes_constraint_info","ptl_frame_only_constraint_flag","ptl_multilayer_enabled_flag","general_constraint_info","cnstr1","cnstr2","ptl_sublayer_present_mask","sublayer_level_idc","ptl_num_sub_profiles","general_sub_profile_idc","max_picture_width","max_picture_height","avg_frame_rate","num_of_arrays","isVideo","isAudio","isSubtitle","isMetadata","isHint","getCodec","getWidth","getHeight","getChannelCount","getSampleRate","getSampleSize","VisualSampleEntry","AudioSampleEntry","SubtitleSampleEntry","MetadataSampleEntry","decimalToHex","d","padding","avc1SampleEntry","avc2SampleEntry","avc3SampleEntry","avc4SampleEntry","baseCodec","avcC","hev1SampleEntry","hvc1SampleEntry","hvcC","reversed","hasByte","constraint_string","vvc1SampleEntry","vvi1SampleEntry","vvcC","last_nonzero","ptl_frame_only_constraint","ptl_multilayer_enabled","base32_chars","mp4aSampleEntry","esds","stxtSampleEntry","vp08SampleEntry","vp09SampleEntry","vpcC","av01SampleEntry","bitdepth","av1C","writeHeader","sizePosition","avcCBox","co64Box","cslgBox","cttsBox","drefBox","elngBox","elstBox","emsgBox","hdlrBox","hvcCBox","kindBox","mdhdBox","mehdBox","mfhdBox","mvhdBox","writeFooter","stppSampleEntry","sbgpBox","sgpdBox","sidxBox","smhdBox","stcoBox","stscBox","stsdBox","stshBox","stssBox","stszBox","constant","sttsBox","tfdtBox","UINT32_MAX","tfhdBox","tkhdBox","trexBox","trunBox","data_offset_position","vmhdBox","unpack","samples","pts","dts","Infinity","description_index","chunk_index","DIFF_BOXES_PROP_NAMES","DIFF_PRIMITIVE_ARRAY_PROP_NAMES","boxEqualFields","box_a","box_b","boxEqual","VTTin4Parser","parseSample","cues","cue","getText","startTime","endTime","n","z","secToTimestamp","insec","string","cueIn4","payl","XMLSubtitlein4Parser","sample","documentString","resources","DOMParser","parseFromString","Textin4Parser","parseConfig","ISOFile","mdats","moofs","isProgressive","moovStartFound","onMoovStart","moovStartSent","onReady","readySent","onSegment","onSamples","sampleListBuilt","fragmentedTracks","extractedTracks","isFragmentationInitialized","sampleProcessingStarted","nextMoofNumber","itemListBuilt","entity_groups","onSidx","sidxSent","setSegmentOptions","user","trak","getTrackById","fragTrack","nextSample","segmentStream","nb_samples","rapAlignement","nbSamples","unsetSegmentOptions","setExtractionOptions","extractTrack","unsetExtractionOptions","restoreParsePosition","hasIncompleteMdat","processIncompleteMdat","saveParsePosition","processIncompleteBox","updateUsedBytes","checkBuffer","appendBuffer","last","nextFileStart","moov","buildSampleLists","updateSampleLists","getInfo","processSamples","nextSeekPosition","nextParsePosition","sidx","meta","flattenItemInfo","processItems","onItem","getAllocatedSampleDataSize","sample_desc","movie","_1904","getTime","hasMoov","mvhd","isFragmented","mvex","mehd","hasIOD","iods","brands","ftyp","created","modified","tracks","audioTracks","videoTracks","subtitleTracks","metadataTracks","hintTracks","otherTracks","traks","mdia","minf","stbl","stsd","tkhd","hdlr","tref","edts","edits","elst","movie_duration","movie_timescale","track_width","track_height","mdhd","cts_shift","cslg","samples_duration","codec","kind","udta","kinds","elng","samples_size","bitrate","audio","sample_rate","video","mime","setNextSeekPositionFromSample","alreadyRead","fragTrak","createFragment","extractTrak","getSample","getBox","getBoxes","returnEarly","_sweep","getTrackSamplesInfo","getTrackSample","releaseUsedSamples","sampleNum","lastValidSample","releaseSample","samplesDataSize","stop","seekTrack","useRap","seek_offset","rap_seek_sample_num","seek_sample_num","cts","is_sync","getTrackDuration","trak_seek_info","seek_info","equal","box_index","a_box","b_box","lastBoxStartPosition","parsingMdat","discardMdatData","_options","addTrack","media_duration","sample_description_entry","media_type","codes","avcDecoderConfigRecord","hevcDecoderConfigRecord","description_boxes","buildTrakSampleLists","computeSize","stream_","addSample","depends_on","is_depended_on","has_redundancy","degradation_priority","first_dts","moof","createSingleSampleMoof","trafs","truns","moofBox","traf","lastMoofIndex","resetTables","stsc","stts","ctts","stss","initial_duration","stco","co64","stsz","stz2","initSampleGroups","sbgps","trak_sgpds","traf_sgpds","sample_group_info","sample_group_key","SampleGroupInfo","_parameter","_sbgp","sbgp","last_sample_in_run","entry_index","sample_groups_info","fragment_description","is_fragment","setSampleGroupProperties","sample_groups","process_sdtp","sdtp","subs","sgpds","stdp","chunk_run_index","last_chunk_in_run","offset_in_chunk","last_sample_in_chunk","last_sample_in_stts_run","stts_run_index","last_sample_in_ctts_run","ctts_run_index","last_stss_index","subs_entry_index","last_subs_sample_index","last_run_position","trex","tfhd","getTrexById","trun","moof_number","number_in_traf","first_sample_index","first_traf_merged","tfdt","bdop","dbim","dop","bdo","has_fragment_subsamples","sample_index","lengthAfterStart","getCodecs","codecs","trexs","itemsDataSize","iinf","ref_to","protection_index","protection","ipro","protections","grpl","entity_group","iloc","itemloc","source","dinf","idat","pitm","primary","iref","iprp","ipmas","ipma","association","properties","propEntry","ipco","propbox","getItem","releaseItem","sent","hasItem","getMetaHandler","getPrimaryItem","itemToFragmentedTrackFile","itemId","file","trackOptions","ispe","trackId","outstream","sampleNumber","mdat","mdatBox","writeInitializationSegment","total_duration","getBuffer","initializeSegmentation","initSegs","seg","moovBox","printHeader","output","indent","print","prev_indent","MP4Box","_keepMdatData","_stream","keepMdatData","createFile","MP4.BoxParser","dOpsBox","mapping","Container","mp4","frame","segment","MP4.ISOFile","isDecoderConfig","codedWidth","isVideoConfig","numberOfChannels","sampleRate","codedHeight","dops","MP4.Stream","copyTo","SUPPORTED","encoderConfig","decoderConfig","frames","bind","AudioEncoder","metadata","configure","isSupported","short","includes","isConfigSupported","supported","keyframeNext","keyframeCounter","bitrateMode","latencyMode","hardwareAcceleration","VideoEncoder","keyFrame","encodeQueueSize","framerate","Track","segments","notify","media","runAudio","isVideoTrack","runVideo","MediaStreamTrackProcessor","Audio.Encoder","container","WritableStream","pipeThrough","pipeTo","Video.Encoder","at","desiredSize","ReadableStream","pull","isAudioTrackSettings","settings","isVideoTrackSettings","Broadcast","catalog","connection","mediaTracks","getTracks","getSettings","audioContext","AudioContext","createMediaStreamSource","MediaStream","assign","initTrack","selectionParams","mimeType","frameRate","channelConfig","channelCount","streamingFormat","streamingFormatVersion","supportsDeltaUpdates","commonTrackFields","packaging","renderGroup","serveSubscribe","base","lastIndexOf","splitExt","serveCatalog","serveInit","serveTrack","JSON","stringify","Catalog.encode","serveSegment","attach","srcObject","PublisherApi","client","broadcast","opts","fingerprintUrl","publish","bcConfig","PublisherMoq","HTMLElement","shadow","cameraSelect","microphoneSelect","previewVideo","connectButton","playbackUrlTextarea","mediaStream","isPublishing","super","attachShadow","mode","style","textContent","classList","autoplay","playsInline","muted","readOnly","rows","display","marginTop","append","handleDeviceChange","handleClick","navigator","mediaDevices","addEventListener","startPreview","connectedCallback","populateDeviceLists","disconnectedCallback","removeEventListener","devices","enumerateDevices","vids","filter","mics","innerHTML","o","deviceId","label","vidId","micId","videoConstraints","exact","ideal","audioConstraints","getUserMedia","disabled","getAttribute","crypto","randomUUID","getAudioTracks","makeEven","videoConfig","videoWidth","videoHeight","audioConfig","playbackBaseUrl","customElements","define"],"mappings":"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","x_google_ignoreList":[37]}