@norskvideo/moq-js-player 0.6.7 → 0.6.8
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.
- package/dist/moq-player.esm.js +1 -1
- package/dist/moq-player.esm.js.map +1 -1
- package/dist/moq-player.iife.js +1 -1
- package/dist/moq-player.iife.js.map +1 -1
- package/dist/moq-publisher.esm.js +1 -1
- package/dist/moq-publisher.esm.js.map +1 -1
- package/dist/moq-publisher.iife.js +1 -1
- package/dist/moq-publisher.iife.js.map +1 -1
- package/dist/moq-simple-player.esm.js +1 -1
- package/dist/moq-simple-player.esm.js.map +1 -1
- package/dist/moq-simple-player.iife.js +1 -1
- package/dist/moq-simple-player.iife.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moq-publisher.iife.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","../../common/log.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,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, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\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","serialize","tuple","buf","forEach","field","serialized","deserialize","push","encoded","location","group","object","valueIsVarInt","key","deserialize_with_size","pairs","Map","deserialize_with_reader","async","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","log","args","console","debug","info","warn","error","msg","sleep","ms","setTimeout","ControlStream","decoder","encoder","nextRequestId","mutex","c","Decoder","Encoder","recv","message","send","unlock","lock","payload","p","then","incr","messageType","advertisedLength","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","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","includes","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","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","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":[38]}
|
|
1
|
+
{"version":3,"file":"moq-publisher.iife.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","../../common/log.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,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, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\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","serialize","tuple","buf","forEach","field","serialized","deserialize","push","encoded","location","group","object","valueIsVarInt","key","deserialize_with_size","pairs","Map","deserialize_with_reader","async","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","log","args","console","debug","info","warn","error","msg","sleep","ms","setTimeout","ControlStream","decoder","encoder","nextRequestId","mutex","c","Decoder","Encoder","recv","message","send","unlock","lock","payload","p","then","incr","messageType","advertisedLength","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","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","includes","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","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","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":[38]}
|