{ "version": 3, "sources": [ "../node_modules/browserify/node_modules/browser-pack/_prelude.js", "../externals/BigInteger.js", "core/FactoryMaker.js", "core/errors/ErrorsBase.js", "core/events/EventsBase.js", "mss/MssFragmentInfoController.js", "mss/MssFragmentMoofProcessor.js", "mss/MssFragmentMoovProcessor.js", "mss/MssFragmentProcessor.js", "mss/MssHandler.js", "mss/errors/MssErrors.js", "mss/index.js", "mss/parser/MssParser.js", "streaming/MediaPlayerEvents.js", "streaming/utils/InitCache.js", "streaming/vo/DashJSError.js", "streaming/vo/DataChunk.js", "streaming/vo/FragmentRequest.js", "streaming/vo/metrics/HTTPRequest.js" ], "names": [], "mappings": "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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ "(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i0)return Math.floor(n);return Math.ceil(n)}function add(a,b){var l_a=a.length,l_b=b.length,r=new Array(l_a),carry=0,base=BASE,sum,i;for(i=0;i=base?1:0;r[i]=sum-carry*base}while(i0)r.push(carry);return r}function addAny(a,b){if(a.length>=b.length)return add(a,b);return add(b,a)}function addSmall(a,carry){var l=a.length,r=new Array(l),base=BASE,sum,i;for(i=0;i0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}BigInteger.prototype.add=function(v){var n=parseValue(v);if(this.sign!==n.sign){return this.subtract(n.negate())}var a=this.value,b=n.value;if(n.isSmall){return new BigInteger(addSmall(a,Math.abs(b)),this.sign)}return new BigInteger(addAny(a,b),this.sign)};BigInteger.prototype.plus=BigInteger.prototype.add;SmallInteger.prototype.add=function(v){var n=parseValue(v);var a=this.value;if(a<0!==n.sign){return this.subtract(n.negate())}var b=n.value;if(n.isSmall){if(isPrecise(a+b))return new SmallInteger(a+b);b=smallToArray(Math.abs(b))}return new BigInteger(addSmall(b,Math.abs(a)),a<0)};SmallInteger.prototype.plus=SmallInteger.prototype.add;NativeBigInt.prototype.add=function(v){return new NativeBigInt(this.value+parseValue(v).value)};NativeBigInt.prototype.plus=NativeBigInt.prototype.add;function subtract(a,b){var a_l=a.length,b_l=b.length,r=new Array(a_l),borrow=0,base=BASE,i,difference;for(i=0;i=0){value=subtract(a,b)}else{value=subtract(b,a);sign=!sign}value=arrayToSmall(value);if(typeof value===\"number\"){if(sign)value=-value;return new SmallInteger(value)}return new BigInteger(value,sign)}function subtractSmall(a,b,sign){var l=a.length,r=new Array(l),carry=-b,base=BASE,i,difference;for(i=0;i=0)};SmallInteger.prototype.minus=SmallInteger.prototype.subtract;NativeBigInt.prototype.subtract=function(v){return new NativeBigInt(this.value-parseValue(v).value)};NativeBigInt.prototype.minus=NativeBigInt.prototype.subtract;BigInteger.prototype.negate=function(){return new BigInteger(this.value,!this.sign)};SmallInteger.prototype.negate=function(){var sign=this.sign;var small=new SmallInteger(-this.value);small.sign=!sign;return small};NativeBigInt.prototype.negate=function(){return new NativeBigInt(-this.value)};BigInteger.prototype.abs=function(){return new BigInteger(this.value,false)};SmallInteger.prototype.abs=function(){return new SmallInteger(Math.abs(this.value))};NativeBigInt.prototype.abs=function(){return new NativeBigInt(this.value>=0?this.value:-this.value)};function multiplyLong(a,b){var a_l=a.length,b_l=b.length,l=a_l+b_l,r=createArray(l),base=BASE,product,carry,i,a_i,b_j;for(i=0;i0){r[i++]=carry%base;carry=Math.floor(carry/base)}return r}function shiftLeft(x,n){var r=[];while(n-- >0)r.push(0);return r.concat(x)}function multiplyKaratsuba(x,y){var n=Math.max(x.length,y.length);if(n<=30)return multiplyLong(x,y);n=Math.ceil(n/2);var b=x.slice(n),a=x.slice(0,n),d=y.slice(n),c=y.slice(0,n);var ac=multiplyKaratsuba(a,c),bd=multiplyKaratsuba(b,d),abcd=multiplyKaratsuba(addAny(a,b),addAny(c,d));var product=addAny(addAny(ac,shiftLeft(subtract(subtract(abcd,ac),bd),n)),shiftLeft(bd,2*n));trim(product);return product}function useKaratsuba(l1,l2){return-.012*l1-.012*l2+15e-6*l1*l2>0}BigInteger.prototype.multiply=function(v){var n=parseValue(v),a=this.value,b=n.value,sign=this.sign!==n.sign,abs;if(n.isSmall){if(b===0)return Integer[0];if(b===1)return this;if(b===-1)return this.negate();abs=Math.abs(b);if(abs=0;shift--){quotientDigit=base-1;if(remainder[shift+b_l]!==divisorMostSignificantDigit){quotientDigit=Math.floor((remainder[shift+b_l]*base+remainder[shift+b_l-1])/divisorMostSignificantDigit)}carry=0;borrow=0;l=divisor.length;for(i=0;ib_l){highx=(highx+1)*base}guess=Math.ceil(highx/highy);do{check=multiplySmall(b,guess);if(compareAbs(check,part)<=0)break;guess--}while(guess);result.push(guess);part=subtract(part,check)}result.reverse();return[arrayToSmall(result),arrayToSmall(part)]}function divModSmall(value,lambda){var length=value.length,quotient=createArray(length),base=BASE,i,q,remainder,divisor;remainder=0;for(i=length-1;i>=0;--i){divisor=remainder*base+value[i];q=truncate(divisor/lambda);remainder=divisor-q*lambda;quotient[i]=q|0}return[quotient,remainder|0]}function divModAny(self,v){var value,n=parseValue(v);if(supportsNativeBigInt){return[new NativeBigInt(self.value/n.value),new NativeBigInt(self.value%n.value)]}var a=self.value,b=n.value;var quotient;if(b===0)throw new Error(\"Cannot divide by zero\");if(self.isSmall){if(n.isSmall){return[new SmallInteger(truncate(a/b)),new SmallInteger(a%b)]}return[Integer[0],self]}if(n.isSmall){if(b===1)return[self,Integer[0]];if(b==-1)return[self.negate(),Integer[0]];var abs=Math.abs(b);if(absb.length?1:-1}for(var i=a.length-1;i>=0;i--){if(a[i]!==b[i])return a[i]>b[i]?1:-1}return 0}BigInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall)return 1;return compareAbs(a,b)};SmallInteger.prototype.compareAbs=function(v){var n=parseValue(v),a=Math.abs(this.value),b=n.value;if(n.isSmall){b=Math.abs(b);return a===b?0:a>b?1:-1}return-1};NativeBigInt.prototype.compareAbs=function(v){var a=this.value;var b=parseValue(v).value;a=a>=0?a:-a;b=b>=0?b:-b;return a===b?0:a>b?1:-1};BigInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(this.sign!==n.sign){return n.sign?1:-1}if(n.isSmall){return this.sign?-1:1}return compareAbs(a,b)*(this.sign?-1:1)};BigInteger.prototype.compareTo=BigInteger.prototype.compare;SmallInteger.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var n=parseValue(v),a=this.value,b=n.value;if(n.isSmall){return a==b?0:a>b?1:-1}if(a<0!==n.sign){return a<0?-1:1}return a<0?1:-1};SmallInteger.prototype.compareTo=SmallInteger.prototype.compare;NativeBigInt.prototype.compare=function(v){if(v===Infinity){return-1}if(v===-Infinity){return 1}var a=this.value;var b=parseValue(v).value;return a===b?0:a>b?1:-1};NativeBigInt.prototype.compareTo=NativeBigInt.prototype.compare;BigInteger.prototype.equals=function(v){return this.compare(v)===0};NativeBigInt.prototype.eq=NativeBigInt.prototype.equals=SmallInteger.prototype.eq=SmallInteger.prototype.equals=BigInteger.prototype.eq=BigInteger.prototype.equals;BigInteger.prototype.notEquals=function(v){return this.compare(v)!==0};NativeBigInt.prototype.neq=NativeBigInt.prototype.notEquals=SmallInteger.prototype.neq=SmallInteger.prototype.notEquals=BigInteger.prototype.neq=BigInteger.prototype.notEquals;BigInteger.prototype.greater=function(v){return this.compare(v)>0};NativeBigInt.prototype.gt=NativeBigInt.prototype.greater=SmallInteger.prototype.gt=SmallInteger.prototype.greater=BigInteger.prototype.gt=BigInteger.prototype.greater;BigInteger.prototype.lesser=function(v){return this.compare(v)<0};NativeBigInt.prototype.lt=NativeBigInt.prototype.lesser=SmallInteger.prototype.lt=SmallInteger.prototype.lesser=BigInteger.prototype.lt=BigInteger.prototype.lesser;BigInteger.prototype.greaterOrEquals=function(v){return this.compare(v)>=0};NativeBigInt.prototype.geq=NativeBigInt.prototype.greaterOrEquals=SmallInteger.prototype.geq=SmallInteger.prototype.greaterOrEquals=BigInteger.prototype.geq=BigInteger.prototype.greaterOrEquals;BigInteger.prototype.lesserOrEquals=function(v){return this.compare(v)<=0};NativeBigInt.prototype.leq=NativeBigInt.prototype.lesserOrEquals=SmallInteger.prototype.leq=SmallInteger.prototype.lesserOrEquals=BigInteger.prototype.leq=BigInteger.prototype.lesserOrEquals;BigInteger.prototype.isEven=function(){return(this.value[0]&1)===0};SmallInteger.prototype.isEven=function(){return(this.value&1)===0};NativeBigInt.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)};BigInteger.prototype.isOdd=function(){return(this.value[0]&1)===1};SmallInteger.prototype.isOdd=function(){return(this.value&1)===1};NativeBigInt.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)};BigInteger.prototype.isPositive=function(){return!this.sign};SmallInteger.prototype.isPositive=function(){return this.value>0};NativeBigInt.prototype.isPositive=SmallInteger.prototype.isPositive;BigInteger.prototype.isNegative=function(){return this.sign};SmallInteger.prototype.isNegative=function(){return this.value<0};NativeBigInt.prototype.isNegative=SmallInteger.prototype.isNegative;BigInteger.prototype.isUnit=function(){return false};SmallInteger.prototype.isUnit=function(){return Math.abs(this.value)===1};NativeBigInt.prototype.isUnit=function(){return this.abs().value===BigInt(1)};BigInteger.prototype.isZero=function(){return false};SmallInteger.prototype.isZero=function(){return this.value===0};NativeBigInt.prototype.isZero=function(){return this.value===BigInt(0)};BigInteger.prototype.isDivisibleBy=function(v){var n=parseValue(v);if(n.isZero())return false;if(n.isUnit())return true;if(n.compareAbs(2)===0)return this.isEven();return this.mod(n).isZero()};NativeBigInt.prototype.isDivisibleBy=SmallInteger.prototype.isDivisibleBy=BigInteger.prototype.isDivisibleBy;function isBasicPrime(v){var n=v.abs();if(n.isUnit())return false;if(n.equals(2)||n.equals(3)||n.equals(5))return true;if(n.isEven()||n.isDivisibleBy(3)||n.isDivisibleBy(5))return false;if(n.lesser(49))return true}function millerRabinTest(n,a){var nPrev=n.prev(),b=nPrev,r=0,d,t,i,x;while(b.isEven())b=b.divide(2),r++;next:for(i=0;i-MAX_INT)return new SmallInteger(value-1);return new BigInteger(MAX_INT_ARR,true)};NativeBigInt.prototype.prev=function(){return new NativeBigInt(this.value-BigInt(1))};var powersOfTwo=[1];while(2*powersOfTwo[powersOfTwo.length-1]<=BASE)powersOfTwo.push(2*powersOfTwo[powersOfTwo.length-1]);var powers2Length=powersOfTwo.length,highestPower2=powersOfTwo[powers2Length-1];function shift_isSmall(n){return Math.abs(n)<=BASE}BigInteger.prototype.shiftLeft=function(v){var n=parseValue(v).toJSNumber();if(!shift_isSmall(n)){throw new Error(String(n)+\" is too large for shifting.\")}if(n<0)return this.shiftRight(-n);var result=this;if(result.isZero())return result;while(n>=powers2Length){result=result.multiply(highestPower2);n-=powers2Length-1}return result.multiply(powersOfTwo[n])};NativeBigInt.prototype.shiftLeft=SmallInteger.prototype.shiftLeft=BigInteger.prototype.shiftLeft;BigInteger.prototype.shiftRight=function(v){var remQuo;var n=parseValue(v).toJSNumber();if(!shift_isSmall(n)){throw new Error(String(n)+\" is too large for shifting.\")}if(n<0)return this.shiftLeft(-n);var result=this;while(n>=powers2Length){if(result.isZero()||result.isNegative()&&result.isUnit())return result;remQuo=divModAny(result,highestPower2);result=remQuo[1].isNegative()?remQuo[0].prev():remQuo[0];n-=powers2Length-1}remQuo=divModAny(result,powersOfTwo[n]);return remQuo[1].isNegative()?remQuo[0].prev():remQuo[0]};NativeBigInt.prototype.shiftRight=SmallInteger.prototype.shiftRight=BigInteger.prototype.shiftRight;function bitwise(x,y,fn){y=parseValue(y);var xSign=x.isNegative(),ySign=y.isNegative();var xRem=xSign?x.not():x,yRem=ySign?y.not():y;var xDigit=0,yDigit=0;var xDivMod=null,yDivMod=null;var result=[];while(!xRem.isZero()||!yRem.isZero()){xDivMod=divModAny(xRem,highestPower2);xDigit=xDivMod[1].toJSNumber();if(xSign){xDigit=highestPower2-1-xDigit}yDivMod=divModAny(yRem,highestPower2);yDigit=yDivMod[1].toJSNumber();if(ySign){yDigit=highestPower2-1-yDigit}xRem=xDivMod[0];yRem=yDivMod[0];result.push(fn(xDigit,yDigit))}var sum=fn(xSign?1:0,ySign?1:0)!==0?bigInt(-1):bigInt(0);for(var i=result.length-1;i>=0;i-=1){sum=sum.multiply(highestPower2).add(bigInt(result[i]))}return sum}BigInteger.prototype.not=function(){return this.negate().prev()};NativeBigInt.prototype.not=SmallInteger.prototype.not=BigInteger.prototype.not;BigInteger.prototype.and=function(n){return bitwise(this,n,function(a,b){return a&b})};NativeBigInt.prototype.and=SmallInteger.prototype.and=BigInteger.prototype.and;BigInteger.prototype.or=function(n){return bitwise(this,n,function(a,b){return a|b})};NativeBigInt.prototype.or=SmallInteger.prototype.or=BigInteger.prototype.or;BigInteger.prototype.xor=function(n){return bitwise(this,n,function(a,b){return a^b})};NativeBigInt.prototype.xor=SmallInteger.prototype.xor=BigInteger.prototype.xor;var LOBMASK_I=1<<30,LOBMASK_BI=(BASE&-BASE)*(BASE&-BASE)|LOBMASK_I;function roughLOB(n){var v=n.value,x=typeof v===\"number\"?v|LOBMASK_I:typeof v===\"bigint\"?v|BigInt(LOBMASK_I):v[0]+v[1]*BASE|LOBMASK_BI;return x&-x}function integerLogarithm(value,base){if(base.compareTo(value)<=0){var tmp=integerLogarithm(value,base.square(base));var p=tmp.p;var e=tmp.e;var t=p.multiply(base);return t.compareTo(value)<=0?{p:t,e:e*2+1}:{p:p,e:e*2}}return{p:bigInt(1),e:0}}BigInteger.prototype.bitLength=function(){var n=this;if(n.compareTo(bigInt(0))<0){n=n.negate().subtract(bigInt(1))}if(n.compareTo(bigInt(0))===0){return bigInt(0)}return bigInt(integerLogarithm(n,bigInt(2)).e).add(bigInt(1))};NativeBigInt.prototype.bitLength=SmallInteger.prototype.bitLength=BigInteger.prototype.bitLength;function max(a,b){a=parseValue(a);b=parseValue(b);return a.greater(b)?a:b}function min(a,b){a=parseValue(a);b=parseValue(b);return a.lesser(b)?a:b}function gcd(a,b){a=parseValue(a).abs();b=parseValue(b).abs();if(a.equals(b))return a;if(a.isZero())return b;if(b.isZero())return a;var c=Integer[1],d,t;while(a.isEven()&&b.isEven()){d=min(roughLOB(a),roughLOB(b));a=a.divide(d);b=b.divide(d);c=c.multiply(d)}while(a.isEven()){a=a.divide(roughLOB(a))}do{while(b.isEven()){b=b.divide(roughLOB(b))}if(a.greater(b)){t=b;b=a;a=t}b=b.subtract(a)}while(!b.isZero());return c.isUnit()?a:a.multiply(c)}function lcm(a,b){a=parseValue(a).abs();b=parseValue(b).abs();return a.divide(gcd(a,b)).multiply(b)}function randBetween(a,b){a=parseValue(a);b=parseValue(b);var low=min(a,b),high=max(a,b);var range=high.subtract(low).add(1);if(range.isSmall)return low.add(Math.floor(Math.random()*range));var digits=toBase(range,BASE).value;var result=[],restricted=true;for(var i=0;i=absBase){if(c===\"1\"&&absBase===1)continue;throw new Error(c+\" is not a valid digit in base \"+base+\".\")}}}base=parseValue(base);var digits=[];var isNegative=text[0]===\"-\";for(i=isNegative?1:0;i\"&&i=0;i--){val=val.add(digits[i].times(pow));pow=pow.times(base)}return isNegative?val.negate():val}function stringify(digit,alphabet){alphabet=alphabet||DEFAULT_ALPHABET;if(digit\"}function toBase(n,base){base=bigInt(base);if(base.isZero()){if(n.isZero())return{value:[0],isNegative:false};throw new Error(\"Cannot convert nonzero numbers to base 0.\")}if(base.equals(-1)){if(n.isZero())return{value:[0],isNegative:false};if(n.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-n.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:false};var arr=Array.apply(null,Array(n.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);arr.unshift([1]);return{value:[].concat.apply([],arr),isNegative:false}}var neg=false;if(n.isNegative()&&base.isPositive()){neg=true;n=n.abs()}if(base.isUnit()){if(n.isZero())return{value:[0],isNegative:false};return{value:Array.apply(null,Array(n.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:neg}}var out=[];var left=n,divmod;while(left.isNegative()||left.compareAbs(base)>=0){divmod=left.divmod(base);left=divmod.quotient;var digit=divmod.remainder;if(digit.isNegative()){digit=base.minus(digit).abs();left=left.next()}out.push(digit.toJSNumber())}out.push(left.toJSNumber());return{value:out.reverse(),isNegative:neg}}function toBaseString(n,base,alphabet){var arr=toBase(n,base);return(arr.isNegative?\"-\":\"\")+arr.value.map(function(x){return stringify(x,alphabet)}).join(\"\")}BigInteger.prototype.toArray=function(radix){return toBase(this,radix)};SmallInteger.prototype.toArray=function(radix){return toBase(this,radix)};NativeBigInt.prototype.toArray=function(radix){return toBase(this,radix)};BigInteger.prototype.toString=function(radix,alphabet){if(radix===undefined)radix=10;if(radix!==10)return toBaseString(this,radix,alphabet);var v=this.value,l=v.length,str=String(v[--l]),zeros=\"0000000\",digit;while(--l>=0){digit=String(v[l]);str+=zeros.slice(digit.length)+digit}var sign=this.sign?\"-\":\"\";return sign+str};SmallInteger.prototype.toString=function(radix,alphabet){if(radix===undefined)radix=10;if(radix!=10)return toBaseString(this,radix,alphabet);return String(this.value)};NativeBigInt.prototype.toString=SmallInteger.prototype.toString;NativeBigInt.prototype.toJSON=BigInteger.prototype.toJSON=SmallInteger.prototype.toJSON=function(){return this.toString()};BigInteger.prototype.valueOf=function(){return parseInt(this.toString(),10)};BigInteger.prototype.toJSNumber=BigInteger.prototype.valueOf;SmallInteger.prototype.valueOf=function(){return this.value};SmallInteger.prototype.toJSNumber=SmallInteger.prototype.valueOf;NativeBigInt.prototype.valueOf=NativeBigInt.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};function parseStringValue(v){if(isPrecise(+v)){var x=+v;if(x===truncate(x))return supportsNativeBigInt?new NativeBigInt(BigInt(x)):new SmallInteger(x);throw new Error(\"Invalid integer: \"+v)}var sign=v[0]===\"-\";if(sign)v=v.slice(1);var split=v.split(/e/i);if(split.length>2)throw new Error(\"Invalid integer: \"+split.join(\"e\"));if(split.length===2){var exp=split[1];if(exp[0]===\"+\")exp=exp.slice(1);exp=+exp;if(exp!==truncate(exp)||!isPrecise(exp))throw new Error(\"Invalid integer: \"+exp+\" is not a valid exponent.\");var text=split[0];var decimalPlace=text.indexOf(\".\");if(decimalPlace>=0){exp-=text.length-decimalPlace-1;text=text.slice(0,decimalPlace)+text.slice(decimalPlace+1)}if(exp<0)throw new Error(\"Cannot include negative exponent part for integers\");text+=new Array(exp+1).join(\"0\");v=text}var isValid=/^([0-9][0-9]*)$/.test(v);if(!isValid)throw new Error(\"Invalid integer: \"+v);if(supportsNativeBigInt){return new NativeBigInt(BigInt(sign?\"-\"+v:v))}var r=[],max=v.length,l=LOG_BASE,min=max-l;while(max>0){r.push(+v.slice(min,max));min-=l;if(min<0)min=0;max-=l}trim(r);return new BigInteger(r,sign)}function parseNumberValue(v){if(supportsNativeBigInt){return new NativeBigInt(BigInt(v))}if(isPrecise(v)){if(v!==truncate(v))throw new Error(v+\" is not an integer.\");return new SmallInteger(v)}return parseStringValue(v.toString())}function parseValue(v){if(typeof v===\"number\"){return parseNumberValue(v)}if(typeof v===\"string\"){return parseStringValue(v)}if(typeof v===\"bigint\"){return new NativeBigInt(v)}return v}for(var i=0;i<1e3;i++){Integer[i]=parseValue(i);if(i>0)Integer[-i]=parseValue(-i)}Integer.one=Integer[1];Integer.zero=Integer[0];Integer.minusOne=Integer[-1];Integer.max=max;Integer.min=min;Integer.gcd=gcd;Integer.lcm=lcm;Integer.isInstance=function(x){return x instanceof BigInteger||x instanceof SmallInteger||x instanceof NativeBigInt};Integer.randBetween=randBetween;Integer.fromArray=function(digits,base,isNegative){return parseBaseFromArray(digits.map(parseValue),parseValue(base||10),isNegative)};return Integer}();if(typeof module!==\"undefined\"&&module.hasOwnProperty(\"exports\")){module.exports=bigInt}if(typeof define===\"function\"&&define.amd){define(\"big-integer\",[],function(){return bigInt})}", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @module FactoryMaker\n * @ignore\n */\nconst FactoryMaker = (function () {\n\n let instance;\n const singletonContexts = [];\n const singletonFactories = {};\n const classFactories = {};\n\n function extend(name, childInstance, override, context) {\n if (!context[name] && childInstance) {\n context[name] = {\n instance: childInstance,\n override: override\n };\n }\n }\n\n /**\n * Use this method from your extended object. this.factory is injected into your object.\n * this.factory.getSingletonInstance(this.context, 'VideoModel')\n * will return the video model for use in the extended object.\n *\n * @param {Object} context - injected into extended object as this.context\n * @param {string} className - string name found in all dash.js objects\n * with name __dashjs_factory_name Will be at the bottom. Will be the same as the object's name.\n * @returns {*} Context aware instance of specified singleton name.\n * @memberof module:FactoryMaker\n * @instance\n */\n function getSingletonInstance(context, className) {\n for (const i in singletonContexts) {\n const obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n return obj.instance;\n }\n }\n return null;\n }\n\n /**\n * Use this method to add an singleton instance to the system. Useful for unit testing to mock objects etc.\n *\n * @param {Object} context\n * @param {string} className\n * @param {Object} instance\n * @memberof module:FactoryMaker\n * @instance\n */\n function setSingletonInstance(context, className, instance) {\n for (const i in singletonContexts) {\n const obj = singletonContexts[i];\n if (obj.context === context && obj.name === className) {\n singletonContexts[i].instance = instance;\n return;\n }\n }\n singletonContexts.push({\n name: className,\n context: context,\n instance: instance\n });\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Factories storage Management\n\n /*------------------------------------------------------------------------------------------*/\n\n function getFactoryByName(name, factoriesArray) {\n return factoriesArray[name];\n }\n\n function updateFactory(name, factory, factoriesArray) {\n if (name in factoriesArray) {\n factoriesArray[name] = factory;\n }\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Class Factories Management\n\n /*------------------------------------------------------------------------------------------*/\n\n function updateClassFactory(name, factory) {\n updateFactory(name, factory, classFactories);\n }\n\n function getClassFactoryByName(name) {\n return getFactoryByName(name, classFactories);\n }\n\n function getClassFactory(classConstructor) {\n let factory = getFactoryByName(classConstructor.__dashjs_factory_name, classFactories);\n\n if (!factory) {\n factory = function (context) {\n if (context === undefined) {\n context = {};\n }\n return {\n create: function () {\n return merge(classConstructor, context, arguments);\n }\n };\n };\n\n classFactories[classConstructor.__dashjs_factory_name] = factory; // store factory\n }\n return factory;\n }\n\n /*------------------------------------------------------------------------------------------*/\n\n // Singleton Factory MAangement\n\n /*------------------------------------------------------------------------------------------*/\n\n function updateSingletonFactory(name, factory) {\n updateFactory(name, factory, singletonFactories);\n }\n\n function getSingletonFactoryByName(name) {\n return getFactoryByName(name, singletonFactories);\n }\n\n function getSingletonFactory(classConstructor) {\n let factory = getFactoryByName(classConstructor.__dashjs_factory_name, singletonFactories);\n if (!factory) {\n factory = function (context) {\n let instance;\n if (context === undefined) {\n context = {};\n }\n return {\n getInstance: function () {\n // If we don't have an instance yet check for one on the context\n if (!instance) {\n instance = getSingletonInstance(context, classConstructor.__dashjs_factory_name);\n }\n // If there's no instance on the context then create one\n if (!instance) {\n instance = merge(classConstructor, context, arguments);\n singletonContexts.push({\n name: classConstructor.__dashjs_factory_name,\n context: context,\n instance: instance\n });\n }\n return instance;\n }\n };\n };\n singletonFactories[classConstructor.__dashjs_factory_name] = factory; // store factory\n }\n\n return factory;\n }\n\n function merge(classConstructor, context, args) {\n\n let classInstance;\n const className = classConstructor.__dashjs_factory_name;\n const extensionObject = context[className];\n\n if (extensionObject) {\n\n let extension = extensionObject.instance;\n\n if (extensionObject.override) { //Override public methods in parent but keep parent.\n\n classInstance = classConstructor.apply({context}, args);\n extension = extension.apply({\n context,\n factory: instance,\n parent: classInstance\n }, args);\n\n for (const prop in extension) {\n if (classInstance.hasOwnProperty(prop)) {\n classInstance[prop] = extension[prop];\n }\n }\n\n } else { //replace parent object completely with new object. Same as dijon.\n\n return extension.apply({\n context,\n factory: instance\n }, args);\n\n }\n } else {\n // Create new instance of the class\n classInstance = classConstructor.apply({context}, args);\n }\n\n // Add getClassName function to class instance prototype (used by Debug)\n classInstance.getClassName = function () {return className;};\n\n return classInstance;\n }\n\n instance = {\n extend: extend,\n getSingletonInstance: getSingletonInstance,\n setSingletonInstance: setSingletonInstance,\n getSingletonFactory: getSingletonFactory,\n getSingletonFactoryByName: getSingletonFactoryByName,\n updateSingletonFactory: updateSingletonFactory,\n getClassFactory: getClassFactory,\n getClassFactoryByName: getClassFactoryByName,\n updateClassFactory: updateClassFactory\n };\n\n return instance;\n\n}());\n\nexport default FactoryMaker;\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass ErrorsBase {\n extend (errors, config) {\n if (!errors) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const err in errors) {\n if (!errors.hasOwnProperty(err) || (this[err] && !override)) continue;\n if (publicOnly && errors[err].indexOf('public_') === -1) continue;\n this[err] = errors[err];\n\n }\n }\n}\n\nexport default ErrorsBase;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * @class\n * @ignore\n */\nclass EventsBase {\n extend (events, config) {\n if (!events) return;\n\n let override = config ? config.override : false;\n let publicOnly = config ? config.publicOnly : false;\n\n\n for (const evt in events) {\n if (!events.hasOwnProperty(evt) || (this[evt] && !override)) continue;\n if (publicOnly && events[evt].indexOf('public_') === -1) continue;\n this[evt] = events[evt];\n\n }\n }\n}\n\nexport default EventsBase;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\n\nfunction MssFragmentInfoController(config) {\n\n config = config || {};\n\n let instance,\n logger,\n fragmentModel,\n started,\n type,\n loadFragmentTimeout,\n startTime,\n startFragmentTime,\n index;\n\n const streamProcessor = config.streamProcessor;\n const baseURLController = config.baseURLController;\n const debug = config.debug;\n const controllerType = 'MssFragmentInfoController';\n\n function setup() {\n logger = debug.getLogger(instance);\n }\n\n function initialize() {\n type = streamProcessor.getType();\n fragmentModel = streamProcessor.getFragmentModel();\n\n started = false;\n startTime = null;\n startFragmentTime = null;\n }\n\n function start() {\n if (started) return;\n\n logger.debug('Start');\n\n started = true;\n startTime = new Date().getTime();\n index = 0;\n\n loadNextFragmentInfo();\n }\n\n function stop() {\n if (!started) return;\n\n logger.debug('Stop');\n\n clearTimeout(loadFragmentTimeout);\n started = false;\n startTime = null;\n startFragmentTime = null;\n }\n\n function reset() {\n stop();\n }\n\n function loadNextFragmentInfo() {\n if (!started) return;\n\n // Get last segment from SegmentTimeline\n const representation = getCurrentRepresentation();\n const manifest = representation.adaptation.period.mpd.manifest;\n const adaptation = manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index];\n const segments = adaptation.SegmentTemplate.SegmentTimeline.S_asArray;\n const segment = segments[segments.length - 1];\n\n // logger.debug('Last fragment time: ' + (segment.t / adaptation.SegmentTemplate.timescale));\n\n // Generate segment request\n const request = getRequestForSegment(adaptation, representation, segment);\n\n // Send segment request\n requestFragment.call(this, request);\n }\n\n function getRequestForSegment(adaptation, representation, segment) {\n let timescale = adaptation.SegmentTemplate.timescale;\n let request = new FragmentRequest();\n\n request.mediaType = type;\n request.type = 'FragmentInfoSegment';\n // request.range = segment.mediaRange;\n request.startTime = segment.t / timescale;\n request.duration = segment.d / timescale;\n request.timescale = timescale;\n // request.availabilityStartTime = segment.availabilityStartTime;\n // request.availabilityEndTime = segment.availabilityEndTime;\n // request.wallStartTime = segment.wallStartTime;\n request.quality = representation.index;\n request.index = index++;\n request.mediaInfo = streamProcessor.getMediaInfo();\n request.adaptationIndex = representation.adaptation.index;\n request.representationId = representation.id;\n request.url = baseURLController.resolve(representation.path).url + adaptation.SegmentTemplate.media;\n request.url = request.url.replace('$Bandwidth$', representation.bandwidth);\n request.url = request.url.replace('$Time$', segment.tManifest ? segment.tManifest : segment.t);\n request.url = request.url.replace('/Fragments(', '/FragmentInfo(');\n\n return request;\n }\n\n function getCurrentRepresentation() {\n const representationController = streamProcessor.getRepresentationController();\n const representation = representationController.getCurrentRepresentation();\n return representation;\n }\n\n function requestFragment(request) {\n // logger.debug('Load FragmentInfo for time: ' + request.startTime);\n if (streamProcessor.getFragmentModel().isFragmentLoadedOrPending(request)) {\n // We may have reached end of timeline in case of start-over streams\n logger.debug('End of timeline');\n stop();\n return;\n }\n\n fragmentModel.executeRequest(request);\n }\n\n function fragmentInfoLoaded (e) {\n if (!started) return;\n\n const request = e.request;\n if (!e.response) {\n logger.error('Load error', request.url);\n return;\n }\n\n let deltaFragmentTime,\n deltaTime,\n delay;\n\n // logger.debug('FragmentInfo loaded: ', request.url);\n\n if (!startFragmentTime) {\n startFragmentTime = request.startTime;\n }\n\n // Determine delay before requesting next FragmentInfo\n deltaTime = (new Date().getTime() - startTime) / 1000;\n deltaFragmentTime = (request.startTime + request.duration) - startFragmentTime;\n delay = Math.max(0, (deltaFragmentTime - deltaTime));\n\n // Set timeout for requesting next FragmentInfo\n clearTimeout(loadFragmentTimeout);\n loadFragmentTimeout = setTimeout(function () {\n loadFragmentTimeout = null;\n loadNextFragmentInfo();\n }, delay * 1000);\n }\n\n function getType() {\n return type;\n }\n\n instance = {\n initialize: initialize,\n controllerType: controllerType,\n start: start,\n fragmentInfoLoaded: fragmentInfoLoaded,\n getType: getType,\n reset: reset\n };\n\n setup();\n\n return instance;\n}\n\nMssFragmentInfoController.__dashjs_factory_name = 'MssFragmentInfoController';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentInfoController); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport DashJSError from '../streaming/vo/DashJSError';\nimport MssErrors from './errors/MssErrors';\n\nimport Events from '../streaming/MediaPlayerEvents';\n\n/**\n * @module MssFragmentMoofProcessor\n * @ignore\n * @param {Object} config object\n */\nfunction MssFragmentMoofProcessor(config) {\n\n config = config || {};\n let instance,\n type,\n logger;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const errorHandler = config.errHandler;\n const eventBus = config.eventBus;\n const ISOBoxer = config.ISOBoxer;\n const debug = config.debug;\n\n function setup() {\n logger = debug.getLogger(instance);\n type = '';\n }\n\n function processTfrf(request, tfrf, tfdt, streamProcessor) {\n const representationController = streamProcessor.getRepresentationController();\n const representation = representationController.getCurrentRepresentation();\n\n const manifest = representation.adaptation.period.mpd.manifest;\n const adaptation = manifest.Period_asArray[representation.adaptation.period.index].AdaptationSet_asArray[representation.adaptation.index];\n const timescale = adaptation.SegmentTemplate.timescale;\n\n type = streamProcessor.getType();\n\n // Process tfrf only for live streams or start-over static streams (timeShiftBufferDepth > 0)\n if (manifest.type !== 'dynamic' && !manifest.timeShiftBufferDepth) {\n return;\n }\n\n if (!tfrf) {\n errorHandler.error(new DashJSError(MssErrors.MSS_NO_TFRF_CODE, MssErrors.MSS_NO_TFRF_MESSAGE));\n return;\n }\n\n // Get adaptation's segment timeline (always a SegmentTimeline in Smooth Streaming use case)\n const segments = adaptation.SegmentTemplate.SegmentTimeline.S;\n const entries = tfrf.entry;\n let entry,\n segmentTime,\n range;\n let segment = null;\n let t = 0;\n let availabilityStartTime = null;\n\n if (entries.length === 0) {\n return;\n }\n\n // Consider only first tfrf entry (to avoid pre-condition failure on fragment info requests)\n entry = entries[0];\n\n // In case of start-over streams, check if we have reached end of original manifest duration (set in timeShiftBufferDepth)\n // => then do not update anymore timeline\n if (manifest.type === 'static') {\n // Get first segment time\n segmentTime = segments[0].tManifest ? parseFloat(segments[0].tManifest) : segments[0].t;\n if (entry.fragment_absolute_time > (segmentTime + (manifest.timeShiftBufferDepth * timescale))) {\n return;\n }\n }\n\n // logger.debug('entry - t = ', (entry.fragment_absolute_time / timescale));\n\n // Get last segment time\n segmentTime = segments[segments.length - 1].tManifest ? parseFloat(segments[segments.length - 1].tManifest) : segments[segments.length - 1].t;\n // logger.debug('Last segment - t = ', (segmentTime / timescale));\n\n // Check if we have to append new segment to timeline\n if (entry.fragment_absolute_time <= segmentTime) {\n // Update DVR window range => set range end to end time of current segment\n range = {\n start: segments[0].t / timescale,\n end: (tfdt.baseMediaDecodeTime / timescale) + request.duration\n };\n\n updateDVR(request.mediaType, range, streamProcessor.getStreamInfo().manifestInfo);\n return;\n }\n\n // logger.debug('Add new segment - t = ', (entry.fragment_absolute_time / timescale));\n segment = {};\n segment.t = entry.fragment_absolute_time;\n segment.d = entry.fragment_duration;\n // If timestamps starts at 0 relative to 1st segment (dynamic to static) then update segment time\n if (segments[0].tManifest) {\n segment.t -= parseFloat(segments[0].tManifest) - segments[0].t;\n segment.tManifest = entry.fragment_absolute_time;\n }\n segments.push(segment);\n\n // In case of static start-over streams, update content duration\n if (manifest.type === 'static') {\n if (type === 'video') {\n segment = segments[segments.length - 1];\n var end = (segment.t + segment.d) / timescale;\n if (end > representation.adaptation.period.duration) {\n eventBus.trigger(Events.MANIFEST_VALIDITY_CHANGED, { sender: this, newDuration: end });\n }\n }\n return;\n }\n // In case of live streams, update segment timeline according to DVR window\n else if (manifest.timeShiftBufferDepth && manifest.timeShiftBufferDepth > 0) {\n // Get timestamp of the last segment\n segment = segments[segments.length - 1];\n t = segment.t;\n\n // Determine the segments' availability start time\n availabilityStartTime = Math.round((t - (manifest.timeShiftBufferDepth * timescale)) / timescale);\n\n // Remove segments prior to availability start time\n segment = segments[0];\n while (Math.round(segment.t / timescale) < availabilityStartTime) {\n // logger.debug('Remove segment - t = ' + (segment.t / timescale));\n segments.splice(0, 1);\n segment = segments[0];\n }\n\n // Update DVR window range => set range end to end time of current segment\n range = {\n start: segments[0].t / timescale,\n end: (tfdt.baseMediaDecodeTime / timescale) + request.duration\n };\n\n updateDVR(type, range, streamProcessor.getStreamInfo().manifestInfo);\n }\n\n representationController.updateRepresentation(representation, true);\n }\n\n function updateDVR(type, range, manifestInfo) {\n const dvrInfos = dashMetrics.getCurrentDVRInfo(type);\n if (!dvrInfos || (range.end > dvrInfos.range.end)) {\n logger.debug('Update DVR range: [' + range.start + ' - ' + range.end + ']');\n dashMetrics.addDVRInfo(type, playbackController.getTime(), manifestInfo, range);\n }\n }\n\n // This function returns the offset of the 1st byte of a child box within a container box\n function getBoxOffset(parent, type) {\n let offset = 8;\n let i = 0;\n\n for (i = 0; i < parent.boxes.length; i++) {\n if (parent.boxes[i].type === type) {\n return offset;\n }\n offset += parent.boxes[i].size;\n }\n return offset;\n }\n\n function convertFragment(e, streamProcessor) {\n let i;\n\n // e.request contains request description object\n // e.response contains fragment bytes\n const isoFile = ISOBoxer.parseBuffer(e.response);\n // Update track_Id in tfhd box\n const tfhd = isoFile.fetch('tfhd');\n tfhd.track_ID = e.request.mediaInfo.index + 1;\n\n // Add tfdt box\n let tfdt = isoFile.fetch('tfdt');\n const traf = isoFile.fetch('traf');\n if (tfdt === null) {\n tfdt = ISOBoxer.createFullBox('tfdt', traf, tfhd);\n tfdt.version = 1;\n tfdt.flags = 0;\n tfdt.baseMediaDecodeTime = Math.floor(e.request.startTime * e.request.timescale);\n }\n\n const trun = isoFile.fetch('trun');\n\n // Process tfxd boxes\n // This box provide absolute timestamp but we take the segment start time for tfdt\n let tfxd = isoFile.fetch('tfxd');\n if (tfxd) {\n tfxd._parent.boxes.splice(tfxd._parent.boxes.indexOf(tfxd), 1);\n tfxd = null;\n }\n let tfrf = isoFile.fetch('tfrf');\n processTfrf(e.request, tfrf, tfdt, streamProcessor);\n if (tfrf) {\n tfrf._parent.boxes.splice(tfrf._parent.boxes.indexOf(tfrf), 1);\n tfrf = null;\n }\n\n // If protected content in PIFF1.1 format (sepiff box = Sample Encryption PIFF)\n // => convert sepiff box it into a senc box\n // => create saio and saiz boxes (if not already present)\n const sepiff = isoFile.fetch('sepiff');\n if (sepiff !== null) {\n sepiff.type = 'senc';\n sepiff.usertype = undefined;\n\n let saio = isoFile.fetch('saio');\n if (saio === null) {\n // Create Sample Auxiliary Information Offsets Box box (saio)\n saio = ISOBoxer.createFullBox('saio', traf);\n saio.version = 0;\n saio.flags = 0;\n saio.entry_count = 1;\n saio.offset = [0];\n\n const saiz = ISOBoxer.createFullBox('saiz', traf);\n saiz.version = 0;\n saiz.flags = 0;\n saiz.sample_count = sepiff.sample_count;\n saiz.default_sample_info_size = 0;\n saiz.sample_info_size = [];\n\n if (sepiff.flags & 0x02) {\n // Sub-sample encryption => set sample_info_size for each sample\n for (i = 0; i < sepiff.sample_count; i += 1) {\n // 10 = 8 (InitializationVector field size) + 2 (subsample_count field size)\n // 6 = 2 (BytesOfClearData field size) + 4 (BytesOfEncryptedData field size)\n saiz.sample_info_size[i] = 10 + (6 * sepiff.entry[i].NumberOfEntries);\n }\n } else {\n // No sub-sample encryption => set default sample_info_size = InitializationVector field size (8)\n saiz.default_sample_info_size = 8;\n }\n }\n }\n\n tfhd.flags &= 0xFFFFFE; // set tfhd.base-data-offset-present to false\n tfhd.flags |= 0x020000; // set tfhd.default-base-is-moof to true\n trun.flags |= 0x000001; // set trun.data-offset-present to true\n\n // Update trun.data_offset field that corresponds to first data byte (inside mdat box)\n const moof = isoFile.fetch('moof');\n let length = moof.getLength();\n trun.data_offset = length + 8;\n\n // Update saio box offset field according to new senc box offset\n let saio = isoFile.fetch('saio');\n if (saio !== null) {\n let trafPosInMoof = getBoxOffset(moof, 'traf');\n let sencPosInTraf = getBoxOffset(traf, 'senc');\n // Set offset from begin fragment to the first IV field in senc box\n saio.offset[0] = trafPosInMoof + sencPosInTraf + 16; // 16 = box header (12) + sample_count field size (4)\n }\n\n // Write transformed/processed fragment into request reponse data\n e.response = isoFile.write();\n }\n\n function updateSegmentList(e, streamProcessor) {\n // e.request contains request description object\n // e.response contains fragment bytes\n if (!e.response) {\n throw new Error('e.response parameter is missing');\n }\n\n const isoFile = ISOBoxer.parseBuffer(e.response);\n // Update track_Id in tfhd box\n const tfhd = isoFile.fetch('tfhd');\n tfhd.track_ID = e.request.mediaInfo.index + 1;\n\n // Add tfdt box\n let tfdt = isoFile.fetch('tfdt');\n let traf = isoFile.fetch('traf');\n if (tfdt === null) {\n tfdt = ISOBoxer.createFullBox('tfdt', traf, tfhd);\n tfdt.version = 1;\n tfdt.flags = 0;\n tfdt.baseMediaDecodeTime = Math.floor(e.request.startTime * e.request.timescale);\n }\n\n let tfrf = isoFile.fetch('tfrf');\n processTfrf(e.request, tfrf, tfdt, streamProcessor);\n if (tfrf) {\n tfrf._parent.boxes.splice(tfrf._parent.boxes.indexOf(tfrf), 1);\n tfrf = null;\n }\n }\n\n function getType() {\n return type;\n }\n\n instance = {\n convertFragment: convertFragment,\n updateSegmentList: updateSegmentList,\n getType: getType\n };\n\n setup();\n return instance;\n}\n\nMssFragmentMoofProcessor.__dashjs_factory_name = 'MssFragmentMoofProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentMoofProcessor); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n import MssErrors from './errors/MssErrors';\n\n/**\n * @module MssFragmentMoovProcessor\n * @ignore\n * @param {Object} config object\n */\nfunction MssFragmentMoovProcessor(config) {\n config = config || {};\n const NALUTYPE_SPS = 7;\n const NALUTYPE_PPS = 8;\n const constants = config.constants;\n const ISOBoxer = config.ISOBoxer;\n\n let protectionController = config.protectionController;\n let instance,\n period,\n adaptationSet,\n representation,\n contentProtection,\n timescale,\n trackId;\n\n function createFtypBox(isoFile) {\n let ftyp = ISOBoxer.createBox('ftyp', isoFile);\n ftyp.major_brand = 'iso6';\n ftyp.minor_version = 1; // is an informative integer for the minor version of the major brand\n ftyp.compatible_brands = []; //is a list, to the end of the box, of brands isom, iso6 and msdh\n ftyp.compatible_brands[0] = 'isom'; // => decimal ASCII value for isom\n ftyp.compatible_brands[1] = 'iso6'; // => decimal ASCII value for iso6\n ftyp.compatible_brands[2] = 'msdh'; // => decimal ASCII value for msdh\n\n return ftyp;\n }\n\n function createMoovBox(isoFile) {\n\n // moov box\n let moov = ISOBoxer.createBox('moov', isoFile);\n\n // moov/mvhd\n createMvhdBox(moov);\n\n // moov/trak\n let trak = ISOBoxer.createBox('trak', moov);\n\n // moov/trak/tkhd\n createTkhdBox(trak);\n\n // moov/trak/mdia\n let mdia = ISOBoxer.createBox('mdia', trak);\n\n // moov/trak/mdia/mdhd\n createMdhdBox(mdia);\n\n // moov/trak/mdia/hdlr\n createHdlrBox(mdia);\n\n // moov/trak/mdia/minf\n let minf = ISOBoxer.createBox('minf', mdia);\n\n switch (adaptationSet.type) {\n case constants.VIDEO:\n // moov/trak/mdia/minf/vmhd\n createVmhdBox(minf);\n break;\n case constants.AUDIO:\n // moov/trak/mdia/minf/smhd\n createSmhdBox(minf);\n break;\n default:\n break;\n }\n\n // moov/trak/mdia/minf/dinf\n let dinf = ISOBoxer.createBox('dinf', minf);\n\n // moov/trak/mdia/minf/dinf/dref\n createDrefBox(dinf);\n\n // moov/trak/mdia/minf/stbl\n let stbl = ISOBoxer.createBox('stbl', minf);\n\n // Create empty stts, stsc, stco and stsz boxes\n // Use data field as for codem-isoboxer unknown boxes for setting fields value\n\n // moov/trak/mdia/minf/stbl/stts\n let stts = ISOBoxer.createFullBox('stts', stbl);\n stts._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stsc\n let stsc = ISOBoxer.createFullBox('stsc', stbl);\n stsc._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stco\n let stco = ISOBoxer.createFullBox('stco', stbl);\n stco._data = [0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, entry_count = 0\n\n // moov/trak/mdia/minf/stbl/stsz\n let stsz = ISOBoxer.createFullBox('stsz', stbl);\n stsz._data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; // version = 0, flags = 0, sample_size = 0, sample_count = 0\n\n // moov/trak/mdia/minf/stbl/stsd\n createStsdBox(stbl);\n\n // moov/mvex\n let mvex = ISOBoxer.createBox('mvex', moov);\n\n // moov/mvex/trex\n createTrexBox(mvex);\n\n if (contentProtection && protectionController) {\n let supportedKS = protectionController.getSupportedKeySystemsFromContentProtection(contentProtection);\n createProtectionSystemSpecificHeaderBox(moov, supportedKS);\n }\n }\n\n function createMvhdBox(moov) {\n\n let mvhd = ISOBoxer.createFullBox('mvhd', moov);\n\n mvhd.version = 1; // version = 1 in order to have 64bits duration value\n\n mvhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n mvhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n mvhd.timescale = timescale; // the time-scale for the entire presentation => 10000000 for MSS\n mvhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the length of the presentation (in the indicated timescale) => take duration of period\n mvhd.rate = 1.0; // 16.16 number, '1.0' = normal playback\n mvhd.volume = 1.0; // 8.8 number, '1.0' = full volume\n mvhd.reserved1 = 0;\n mvhd.reserved2 = [0x0, 0x0];\n mvhd.matrix = [\n 1, 0, 0, // provides a transformation matrix for the video;\n 0, 1, 0, // (u,v,w) are restricted here to (0,0,1)\n 0, 0, 16384\n ];\n mvhd.pre_defined = [0, 0, 0, 0, 0, 0];\n mvhd.next_track_ID = trackId + 1; // indicates a value to use for the track ID of the next track to be added to this presentation\n\n return mvhd;\n }\n\n function createTkhdBox(trak) {\n\n let tkhd = ISOBoxer.createFullBox('tkhd', trak);\n\n tkhd.version = 1; // version = 1 in order to have 64bits duration value\n tkhd.flags = 0x1 | // Track_enabled (0x000001): Indicates that the track is enabled\n 0x2 | // Track_in_movie (0x000002): Indicates that the track is used in the presentation\n 0x4; // Track_in_preview (0x000004): Indicates that the track is used when previewing the presentation\n\n tkhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n tkhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n tkhd.track_ID = trackId; // uniquely identifies this track over the entire life-time of this presentation\n tkhd.reserved1 = 0;\n tkhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the duration of this track (in the timescale indicated in the Movie Header Box) => take duration of period\n tkhd.reserved2 = [0x0, 0x0];\n tkhd.layer = 0; // specifies the front-to-back ordering of video tracks; tracks with lower numbers are closer to the viewer => 0 since only one video track\n tkhd.alternate_group = 0; // specifies a group or collection of tracks => ignore\n tkhd.volume = 1.0; // '1.0' = full volume\n tkhd.reserved3 = 0;\n tkhd.matrix = [\n 1, 0, 0, // provides a transformation matrix for the video;\n 0, 1, 0, // (u,v,w) are restricted here to (0,0,1)\n 0, 0, 16384\n ];\n tkhd.width = representation.width; // visual presentation width\n tkhd.height = representation.height; // visual presentation height\n\n return tkhd;\n }\n\n function createMdhdBox(mdia) {\n\n let mdhd = ISOBoxer.createFullBox('mdhd', mdia);\n\n mdhd.version = 1; // version = 1 in order to have 64bits duration value\n\n mdhd.creation_time = 0; // the creation time of the presentation => ignore (set to 0)\n mdhd.modification_time = 0; // the most recent time the presentation was modified => ignore (set to 0)\n mdhd.timescale = timescale; // the time-scale for the entire presentation\n mdhd.duration = period.duration === Infinity ? 0xFFFFFFFFFFFFFFFF : Math.round(period.duration * timescale); // the duration of this media (in the scale of the timescale). If the duration cannot be determined then duration is set to all 1s.\n mdhd.language = adaptationSet.lang || 'und'; // declares the language code for this media\n mdhd.pre_defined = 0;\n\n return mdhd;\n }\n\n function createHdlrBox(mdia) {\n\n let hdlr = ISOBoxer.createFullBox('hdlr', mdia);\n\n hdlr.pre_defined = 0;\n switch (adaptationSet.type) {\n case constants.VIDEO:\n hdlr.handler_type = 'vide';\n break;\n case constants.AUDIO:\n hdlr.handler_type = 'soun';\n break;\n default:\n hdlr.handler_type = 'meta';\n break;\n }\n hdlr.name = representation.id;\n hdlr.reserved = [0, 0, 0];\n\n return hdlr;\n }\n\n function createVmhdBox(minf) {\n\n let vmhd = ISOBoxer.createFullBox('vmhd', minf);\n\n vmhd.flags = 1;\n\n vmhd.graphicsmode = 0; // specifies a composition mode for this video track, from the following enumerated set, which may be extended by derived specifications: copy = 0 copy over the existing image\n vmhd.opcolor = [0, 0, 0]; // is a set of 3 colour values (red, green, blue) available for use by graphics modes\n\n return vmhd;\n }\n\n function createSmhdBox(minf) {\n\n let smhd = ISOBoxer.createFullBox('smhd', minf);\n\n smhd.flags = 1;\n\n smhd.balance = 0; // is a fixed-point 8.8 number that places mono audio tracks in a stereo space; 0 is centre (the normal value); full left is -1.0 and full right is 1.0.\n smhd.reserved = 0;\n\n return smhd;\n }\n\n function createDrefBox(dinf) {\n\n let dref = ISOBoxer.createFullBox('dref', dinf);\n\n dref.entry_count = 1;\n dref.entries = [];\n\n let url = ISOBoxer.createFullBox('url ', dref, false);\n url.location = '';\n url.flags = 1;\n\n dref.entries.push(url);\n\n return dref;\n }\n\n function createStsdBox(stbl) {\n\n let stsd = ISOBoxer.createFullBox('stsd', stbl);\n\n stsd.entries = [];\n switch (adaptationSet.type) {\n case constants.VIDEO:\n case constants.AUDIO:\n stsd.entries.push(createSampleEntry(stsd));\n break;\n default:\n break;\n }\n\n stsd.entry_count = stsd.entries.length; // is an integer that counts the actual entries\n return stsd;\n }\n\n function createSampleEntry(stsd) {\n let codec = representation.codecs.substring(0, representation.codecs.indexOf('.'));\n\n switch (codec) {\n case 'avc1':\n return createAVCVisualSampleEntry(stsd, codec);\n case 'mp4a':\n return createMP4AudioSampleEntry(stsd, codec);\n default:\n throw {\n code: MssErrors.MSS_UNSUPPORTED_CODEC_CODE,\n message: MssErrors.MSS_UNSUPPORTED_CODEC_MESSAGE,\n data: {\n codec: codec\n }\n };\n }\n }\n\n function createAVCVisualSampleEntry(stsd, codec) {\n let avc1;\n\n if (contentProtection) {\n avc1 = ISOBoxer.createBox('encv', stsd, false);\n } else {\n avc1 = ISOBoxer.createBox('avc1', stsd, false);\n }\n\n // SampleEntry fields\n avc1.reserved1 = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n avc1.data_reference_index = 1;\n\n // VisualSampleEntry fields\n avc1.pre_defined1 = 0;\n avc1.reserved2 = 0;\n avc1.pre_defined2 = [0, 0, 0];\n avc1.height = representation.height;\n avc1.width = representation.width;\n avc1.horizresolution = 72; // 72 dpi\n avc1.vertresolution = 72; // 72 dpi\n avc1.reserved3 = 0;\n avc1.frame_count = 1; // 1 compressed video frame per sample\n avc1.compressorname = [\n 0x0A, 0x41, 0x56, 0x43, 0x20, 0x43, 0x6F, 0x64, // = 'AVC Coding';\n 0x69, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n ];\n avc1.depth = 0x0018; // 0x0018 – images are in colour with no alpha.\n avc1.pre_defined3 = 65535;\n avc1.config = createAVC1ConfigurationRecord();\n if (contentProtection) {\n // Create and add Protection Scheme Info Box\n let sinf = ISOBoxer.createBox('sinf', avc1);\n\n // Create and add Original Format Box => indicate codec type of the encrypted content\n createOriginalFormatBox(sinf, codec);\n\n // Create and add Scheme Type box\n createSchemeTypeBox(sinf);\n\n // Create and add Scheme Information Box\n createSchemeInformationBox(sinf);\n }\n\n return avc1;\n }\n\n function createAVC1ConfigurationRecord() {\n\n let avcC = null;\n let avcCLength = 15; // length = 15 by default (0 SPS and 0 PPS)\n\n // First get all SPS and PPS from codecPrivateData\n let sps = [];\n let pps = [];\n let AVCProfileIndication = 0;\n let AVCLevelIndication = 0;\n let profile_compatibility = 0;\n\n let nalus = representation.codecPrivateData.split('00000001').slice(1);\n let naluBytes, naluType;\n\n for (let i = 0; i < nalus.length; i++) {\n naluBytes = hexStringtoBuffer(nalus[i]);\n\n naluType = naluBytes[0] & 0x1F;\n\n switch (naluType) {\n case NALUTYPE_SPS:\n sps.push(naluBytes);\n avcCLength += naluBytes.length + 2; // 2 = sequenceParameterSetLength field length\n break;\n case NALUTYPE_PPS:\n pps.push(naluBytes);\n avcCLength += naluBytes.length + 2; // 2 = pictureParameterSetLength field length\n break;\n default:\n break;\n }\n }\n\n // Get profile and level from SPS\n if (sps.length > 0) {\n AVCProfileIndication = sps[0][1];\n profile_compatibility = sps[0][2];\n AVCLevelIndication = sps[0][3];\n }\n\n // Generate avcC buffer\n avcC = new Uint8Array(avcCLength);\n\n let i = 0;\n // length\n avcC[i++] = (avcCLength & 0xFF000000) >> 24;\n avcC[i++] = (avcCLength & 0x00FF0000) >> 16;\n avcC[i++] = (avcCLength & 0x0000FF00) >> 8;\n avcC[i++] = (avcCLength & 0x000000FF);\n avcC.set([0x61, 0x76, 0x63, 0x43], i); // type = 'avcC'\n i += 4;\n avcC[i++] = 1; // configurationVersion = 1\n avcC[i++] = AVCProfileIndication;\n avcC[i++] = profile_compatibility;\n avcC[i++] = AVCLevelIndication;\n avcC[i++] = 0xFF; // '11111' + lengthSizeMinusOne = 3\n avcC[i++] = 0xE0 | sps.length; // '111' + numOfSequenceParameterSets\n for (let n = 0; n < sps.length; n++) {\n avcC[i++] = (sps[n].length & 0xFF00) >> 8;\n avcC[i++] = (sps[n].length & 0x00FF);\n avcC.set(sps[n], i);\n i += sps[n].length;\n }\n avcC[i++] = pps.length; // numOfPictureParameterSets\n for (let n = 0; n < pps.length; n++) {\n avcC[i++] = (pps[n].length & 0xFF00) >> 8;\n avcC[i++] = (pps[n].length & 0x00FF);\n avcC.set(pps[n], i);\n i += pps[n].length;\n }\n\n return avcC;\n }\n\n function createMP4AudioSampleEntry(stsd, codec) {\n let mp4a;\n\n if (contentProtection) {\n mp4a = ISOBoxer.createBox('enca', stsd, false);\n } else {\n mp4a = ISOBoxer.createBox('mp4a', stsd, false);\n }\n\n // SampleEntry fields\n mp4a.reserved1 = [0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n mp4a.data_reference_index = 1;\n\n // AudioSampleEntry fields\n mp4a.reserved2 = [0x0, 0x0];\n mp4a.channelcount = representation.audioChannels;\n mp4a.samplesize = 16;\n mp4a.pre_defined = 0;\n mp4a.reserved_3 = 0;\n mp4a.samplerate = representation.audioSamplingRate << 16;\n\n mp4a.esds = createMPEG4AACESDescriptor();\n\n if (contentProtection) {\n // Create and add Protection Scheme Info Box\n let sinf = ISOBoxer.createBox('sinf', mp4a);\n\n // Create and add Original Format Box => indicate codec type of the encrypted content\n createOriginalFormatBox(sinf, codec);\n\n // Create and add Scheme Type box\n createSchemeTypeBox(sinf);\n\n // Create and add Scheme Information Box\n createSchemeInformationBox(sinf);\n }\n\n return mp4a;\n }\n\n function createMPEG4AACESDescriptor() {\n\n // AudioSpecificConfig (see ISO/IEC 14496-3, subpart 1) => corresponds to hex bytes contained in 'codecPrivateData' field\n let audioSpecificConfig = hexStringtoBuffer(representation.codecPrivateData);\n\n // ESDS length = esds box header length (= 12) +\n // ES_Descriptor header length (= 5) +\n // DecoderConfigDescriptor header length (= 15) +\n // decoderSpecificInfo header length (= 2) +\n // AudioSpecificConfig length (= codecPrivateData length)\n let esdsLength = 34 + audioSpecificConfig.length;\n let esds = new Uint8Array(esdsLength);\n\n let i = 0;\n // esds box\n esds[i++] = (esdsLength & 0xFF000000) >> 24; // esds box length\n esds[i++] = (esdsLength & 0x00FF0000) >> 16; // ''\n esds[i++] = (esdsLength & 0x0000FF00) >> 8; // ''\n esds[i++] = (esdsLength & 0x000000FF); // ''\n esds.set([0x65, 0x73, 0x64, 0x73], i); // type = 'esds'\n i += 4;\n esds.set([0, 0, 0, 0], i); // version = 0, flags = 0\n i += 4;\n // ES_Descriptor (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x03; // tag = 0x03 (ES_DescrTag)\n esds[i++] = 20 + audioSpecificConfig.length; // size\n esds[i++] = (trackId & 0xFF00) >> 8; // ES_ID = track_id\n esds[i++] = (trackId & 0x00FF); // ''\n esds[i++] = 0; // flags and streamPriority\n\n // DecoderConfigDescriptor (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x04; // tag = 0x04 (DecoderConfigDescrTag)\n esds[i++] = 15 + audioSpecificConfig.length; // size\n esds[i++] = 0x40; // objectTypeIndication = 0x40 (MPEG-4 AAC)\n esds[i] = 0x05 << 2; // streamType = 0x05 (Audiostream)\n esds[i] |= 0 << 1; // upStream = 0\n esds[i++] |= 1; // reserved = 1\n esds[i++] = 0xFF; // buffersizeDB = undefined\n esds[i++] = 0xFF; // ''\n esds[i++] = 0xFF; // ''\n esds[i++] = (representation.bandwidth & 0xFF000000) >> 24; // maxBitrate\n esds[i++] = (representation.bandwidth & 0x00FF0000) >> 16; // ''\n esds[i++] = (representation.bandwidth & 0x0000FF00) >> 8; // ''\n esds[i++] = (representation.bandwidth & 0x000000FF); // ''\n esds[i++] = (representation.bandwidth & 0xFF000000) >> 24; // avgbitrate\n esds[i++] = (representation.bandwidth & 0x00FF0000) >> 16; // ''\n esds[i++] = (representation.bandwidth & 0x0000FF00) >> 8; // ''\n esds[i++] = (representation.bandwidth & 0x000000FF); // ''\n\n // DecoderSpecificInfo (see ISO/IEC 14496-1 (Systems))\n esds[i++] = 0x05; // tag = 0x05 (DecSpecificInfoTag)\n esds[i++] = audioSpecificConfig.length; // size\n esds.set(audioSpecificConfig, i); // AudioSpecificConfig bytes\n\n return esds;\n }\n\n function createOriginalFormatBox(sinf, codec) {\n let frma = ISOBoxer.createBox('frma', sinf);\n frma.data_format = stringToCharCode(codec);\n }\n\n function createSchemeTypeBox(sinf) {\n let schm = ISOBoxer.createFullBox('schm', sinf);\n\n schm.flags = 0;\n schm.version = 0;\n schm.scheme_type = 0x63656E63; // 'cenc' => common encryption\n schm.scheme_version = 0x00010000; // version set to 0x00010000 (Major version 1, Minor version 0)\n }\n\n function createSchemeInformationBox(sinf) {\n let schi = ISOBoxer.createBox('schi', sinf);\n\n // Create and add Track Encryption Box\n createTrackEncryptionBox(schi);\n }\n\n function createProtectionSystemSpecificHeaderBox(moov, keySystems) {\n let pssh_bytes,\n pssh,\n i,\n parsedBuffer;\n\n for (i = 0; i < keySystems.length; i += 1) {\n pssh_bytes = keySystems[i].initData;\n if (pssh_bytes) {\n parsedBuffer = ISOBoxer.parseBuffer(pssh_bytes);\n pssh = parsedBuffer.fetch('pssh');\n if (pssh) {\n ISOBoxer.Utils.appendBox(moov, pssh);\n }\n }\n }\n }\n\n function createTrackEncryptionBox(schi) {\n let tenc = ISOBoxer.createFullBox('tenc', schi);\n\n tenc.flags = 0;\n tenc.version = 0;\n\n tenc.default_IsEncrypted = 0x1;\n tenc.default_IV_size = 8;\n tenc.default_KID = (contentProtection && (contentProtection.length) > 0 && contentProtection[0]['cenc:default_KID']) ?\n contentProtection[0]['cenc:default_KID'] : [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0];\n }\n\n function createTrexBox(moov) {\n let trex = ISOBoxer.createFullBox('trex', moov);\n\n trex.track_ID = trackId;\n trex.default_sample_description_index = 1;\n trex.default_sample_duration = 0;\n trex.default_sample_size = 0;\n trex.default_sample_flags = 0;\n\n return trex;\n }\n\n function hexStringtoBuffer(str) {\n let buf = new Uint8Array(str.length / 2);\n let i;\n\n for (i = 0; i < str.length / 2; i += 1) {\n buf[i] = parseInt('' + str[i * 2] + str[i * 2 + 1], 16);\n }\n return buf;\n }\n\n function stringToCharCode(str) {\n let code = 0;\n let i;\n\n for (i = 0; i < str.length; i += 1) {\n code |= str.charCodeAt(i) << ((str.length - i - 1) * 8);\n }\n return code;\n }\n\n function generateMoov(rep) {\n if (!rep || !rep.adaptation) {\n return;\n }\n\n let isoFile,\n arrayBuffer;\n\n representation = rep;\n adaptationSet = representation.adaptation;\n\n period = adaptationSet.period;\n trackId = adaptationSet.index + 1;\n contentProtection = period.mpd.manifest.Period_asArray[period.index].AdaptationSet_asArray[adaptationSet.index].ContentProtection;\n\n timescale = period.mpd.manifest.Period_asArray[period.index].AdaptationSet_asArray[adaptationSet.index].SegmentTemplate.timescale;\n\n isoFile = ISOBoxer.createFile();\n createFtypBox(isoFile);\n createMoovBox(isoFile);\n\n arrayBuffer = isoFile.write();\n\n return arrayBuffer;\n }\n\n instance = {\n generateMoov: generateMoov\n };\n\n return instance;\n}\n\nMssFragmentMoovProcessor.__dashjs_factory_name = 'MssFragmentMoovProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentMoovProcessor); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MssFragmentMoofProcessor from './MssFragmentMoofProcessor';\nimport MssFragmentMoovProcessor from './MssFragmentMoovProcessor';\n\n// Add specific box processors not provided by codem-isoboxer library\n\nfunction arrayEqual(arr1, arr2) {\n return (arr1.length === arr2.length) && arr1.every(function (element, index) {\n return element === arr2[index];\n });\n}\n\nfunction saioProcessor() {\n this._procFullBox();\n if (this.flags & 1) {\n this._procField('aux_info_type', 'uint', 32);\n this._procField('aux_info_type_parameter', 'uint', 32);\n }\n this._procField('entry_count', 'uint', 32);\n this._procFieldArray('offset', this.entry_count, 'uint', (this.version === 1) ? 64 : 32);\n}\n\nfunction saizProcessor() {\n this._procFullBox();\n if (this.flags & 1) {\n this._procField('aux_info_type', 'uint', 32);\n this._procField('aux_info_type_parameter', 'uint', 32);\n }\n this._procField('default_sample_info_size', 'uint', 8);\n this._procField('sample_count', 'uint', 32);\n if (this.default_sample_info_size === 0) {\n this._procFieldArray('sample_info_size', this.sample_count, 'uint', 8);\n }\n}\n\nfunction sencProcessor() {\n this._procFullBox();\n this._procField('sample_count', 'uint', 32);\n if (this.flags & 1) {\n this._procField('IV_size', 'uint', 8);\n }\n this._procEntries('entry', this.sample_count, function (entry) {\n this._procEntryField(entry, 'InitializationVector', 'data', 8);\n if (this.flags & 2) {\n this._procEntryField(entry, 'NumberOfEntries', 'uint', 16);\n this._procSubEntries(entry, 'clearAndCryptedData', entry.NumberOfEntries, function (clearAndCryptedData) {\n this._procEntryField(clearAndCryptedData, 'BytesOfClearData', 'uint', 16);\n this._procEntryField(clearAndCryptedData, 'BytesOfEncryptedData', 'uint', 32);\n });\n }\n });\n}\n\nfunction uuidProcessor() {\n let tfxdUserType = [0x6D, 0x1D, 0x9B, 0x05, 0x42, 0xD5, 0x44, 0xE6, 0x80, 0xE2, 0x14, 0x1D, 0xAF, 0xF7, 0x57, 0xB2];\n let tfrfUserType = [0xD4, 0x80, 0x7E, 0xF2, 0xCA, 0x39, 0x46, 0x95, 0x8E, 0x54, 0x26, 0xCB, 0x9E, 0x46, 0xA7, 0x9F];\n let sepiffUserType = [0xA2, 0x39, 0x4F, 0x52, 0x5A, 0x9B, 0x4f, 0x14, 0xA2, 0x44, 0x6C, 0x42, 0x7C, 0x64, 0x8D, 0xF4];\n\n if (arrayEqual(this.usertype, tfxdUserType)) {\n this._procFullBox();\n if (this._parsing) {\n this.type = 'tfxd';\n }\n this._procField('fragment_absolute_time', 'uint', (this.version === 1) ? 64 : 32);\n this._procField('fragment_duration', 'uint', (this.version === 1) ? 64 : 32);\n }\n\n if (arrayEqual(this.usertype, tfrfUserType)) {\n this._procFullBox();\n if (this._parsing) {\n this.type = 'tfrf';\n }\n this._procField('fragment_count', 'uint', 8);\n this._procEntries('entry', this.fragment_count, function (entry) {\n this._procEntryField(entry, 'fragment_absolute_time', 'uint', (this.version === 1) ? 64 : 32);\n this._procEntryField(entry, 'fragment_duration', 'uint', (this.version === 1) ? 64 : 32);\n });\n }\n\n if (arrayEqual(this.usertype, sepiffUserType)) {\n if (this._parsing) {\n this.type = 'sepiff';\n }\n sencProcessor.call(this);\n }\n}\n\nfunction MssFragmentProcessor(config) {\n\n config = config || {};\n const context = this.context;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const eventBus = config.eventBus;\n const protectionController = config.protectionController;\n const ISOBoxer = config.ISOBoxer;\n const debug = config.debug;\n let mssFragmentMoovProcessor,\n mssFragmentMoofProcessor,\n instance;\n\n function setup() {\n ISOBoxer.addBoxProcessor('uuid', uuidProcessor);\n ISOBoxer.addBoxProcessor('saio', saioProcessor);\n ISOBoxer.addBoxProcessor('saiz', saizProcessor);\n ISOBoxer.addBoxProcessor('senc', sencProcessor);\n\n mssFragmentMoovProcessor = MssFragmentMoovProcessor(context).create({\n protectionController: protectionController,\n constants: config.constants,\n ISOBoxer: ISOBoxer});\n\n mssFragmentMoofProcessor = MssFragmentMoofProcessor(context).create({\n dashMetrics: dashMetrics,\n playbackController: playbackController,\n ISOBoxer: ISOBoxer,\n eventBus: eventBus,\n debug: debug,\n errHandler: config.errHandler\n });\n }\n\n function generateMoov(rep) {\n return mssFragmentMoovProcessor.generateMoov(rep);\n }\n\n function processFragment(e, streamProcessor) {\n if (!e || !e.request || !e.response) {\n throw new Error('e parameter is missing or malformed');\n }\n\n if (e.request.type === 'MediaSegment') {\n // MediaSegment => convert to Smooth Streaming moof format\n mssFragmentMoofProcessor.convertFragment(e, streamProcessor);\n\n } else if (e.request.type === 'FragmentInfoSegment') {\n // FragmentInfo (live) => update segments list\n mssFragmentMoofProcessor.updateSegmentList(e, streamProcessor);\n\n // Stop event propagation (FragmentInfo must not be added to buffer)\n e.sender = null;\n }\n }\n\n instance = {\n generateMoov: generateMoov,\n processFragment: processFragment\n };\n\n setup();\n\n return instance;\n}\n\nMssFragmentProcessor.__dashjs_factory_name = 'MssFragmentProcessor';\nexport default dashjs.FactoryMaker.getClassFactory(MssFragmentProcessor); /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport DataChunk from '../streaming/vo/DataChunk';\nimport FragmentRequest from '../streaming/vo/FragmentRequest';\nimport MssFragmentInfoController from './MssFragmentInfoController';\nimport MssFragmentProcessor from './MssFragmentProcessor';\nimport MssParser from './parser/MssParser';\nimport MssErrors from './errors/MssErrors';\nimport DashJSError from '../streaming/vo/DashJSError';\nimport InitCache from '../streaming/utils/InitCache';\n\nfunction MssHandler(config) {\n\n config = config || {};\n const context = this.context;\n const eventBus = config.eventBus;\n const events = config.events;\n const constants = config.constants;\n const initSegmentType = config.initSegmentType;\n const dashMetrics = config.dashMetrics;\n const playbackController = config.playbackController;\n const streamController = config.streamController;\n const protectionController = config.protectionController;\n const mssFragmentProcessor = MssFragmentProcessor(context).create({\n dashMetrics: dashMetrics,\n playbackController: playbackController,\n protectionController: protectionController,\n streamController: streamController,\n eventBus: eventBus,\n constants: constants,\n ISOBoxer: config.ISOBoxer,\n debug: config.debug,\n errHandler: config.errHandler\n });\n let mssParser,\n fragmentInfoControllers,\n initCache,\n instance;\n\n function setup() {\n fragmentInfoControllers = [];\n initCache = InitCache(context).getInstance();\n }\n\n function getStreamProcessor(type) {\n return streamController.getActiveStreamProcessors().filter(processor => {\n return processor.getType() === type;\n })[0];\n }\n\n function getFragmentInfoController(type) {\n return fragmentInfoControllers.filter(controller => {\n return (controller.getType() === type);\n })[0];\n }\n\n function createDataChunk(request, streamId, endFragment) {\n const chunk = new DataChunk();\n\n chunk.streamId = streamId;\n chunk.mediaInfo = request.mediaInfo;\n chunk.segmentType = request.type;\n chunk.start = request.startTime;\n chunk.duration = request.duration;\n chunk.end = chunk.start + chunk.duration;\n chunk.index = request.index;\n chunk.quality = request.quality;\n chunk.representationId = request.representationId;\n chunk.endFragment = endFragment;\n\n return chunk;\n }\n\n function startFragmentInfoControllers() {\n\n // Create MssFragmentInfoControllers for each StreamProcessor of active stream (only for audio, video or fragmentedText)\n let processors = streamController.getActiveStreamProcessors();\n processors.forEach(function (processor) {\n if (processor.getType() === constants.VIDEO ||\n processor.getType() === constants.AUDIO ||\n processor.getType() === constants.FRAGMENTED_TEXT) {\n\n let fragmentInfoController = getFragmentInfoController(processor.getType());\n if (!fragmentInfoController) {\n fragmentInfoController = MssFragmentInfoController(context).create({\n streamProcessor: processor,\n baseURLController: config.baseURLController,\n debug: config.debug\n });\n fragmentInfoController.initialize();\n fragmentInfoControllers.push(fragmentInfoController);\n }\n fragmentInfoController.start();\n }\n });\n }\n\n function stopFragmentInfoControllers() {\n fragmentInfoControllers.forEach(c => {\n c.reset();\n });\n fragmentInfoControllers = [];\n }\n\n function onInitFragmentNeeded(e) {\n let streamProcessor = getStreamProcessor(e.sender.getType());\n if (!streamProcessor) return;\n\n // Create init segment request\n let representationController = streamProcessor.getRepresentationController();\n let representation = representationController.getCurrentRepresentation();\n let mediaInfo = streamProcessor.getMediaInfo();\n\n let request = new FragmentRequest();\n request.mediaType = representation.adaptation.type;\n request.type = initSegmentType;\n request.range = representation.range;\n request.quality = representation.index;\n request.mediaInfo = mediaInfo;\n request.representationId = representation.id;\n\n const chunk = createDataChunk(request, mediaInfo.streamInfo.id, e.type !== events.FRAGMENT_LOADING_PROGRESS);\n\n try {\n // Generate init segment (moov)\n chunk.bytes = mssFragmentProcessor.generateMoov(representation);\n\n // Notify init segment has been loaded\n eventBus.trigger(events.INIT_FRAGMENT_LOADED, {\n chunk: chunk\n });\n } catch (e) {\n config.errHandler.error(new DashJSError(e.code, e.message, e.data));\n }\n\n // Change the sender value to stop event to be propagated\n e.sender = null;\n }\n\n function onSegmentMediaLoaded(e) {\n if (e.error) return;\n\n let streamProcessor = getStreamProcessor(e.request.mediaType);\n if (!streamProcessor) return;\n\n // Process moof to transcode it from MSS to DASH (or to update segment timeline for SegmentInfo fragments)\n mssFragmentProcessor.processFragment(e, streamProcessor);\n\n if (e.request.type === 'FragmentInfoSegment') {\n // If FragmentInfo loaded, then notify corresponding MssFragmentInfoController\n let fragmentInfoController = getFragmentInfoController(e.request.mediaType);\n if (fragmentInfoController) {\n fragmentInfoController.fragmentInfoLoaded(e);\n }\n }\n\n // Start MssFragmentInfoControllers in case of start-over streams\n let manifestInfo = e.request.mediaInfo.streamInfo.manifestInfo;\n if (!manifestInfo.isDynamic && manifestInfo.DVRWindowSize !== Infinity) {\n startFragmentInfoControllers();\n }\n }\n\n function onPlaybackPaused() {\n if (playbackController.getIsDynamic() && playbackController.getTime() !== 0) {\n startFragmentInfoControllers();\n }\n }\n\n function onPlaybackSeekAsked() {\n if (playbackController.getIsDynamic() && playbackController.getTime() !== 0) {\n startFragmentInfoControllers();\n }\n }\n\n function onTTMLPreProcess(ttmlSubtitles) {\n if (!ttmlSubtitles || !ttmlSubtitles.data) {\n return;\n }\n\n ttmlSubtitles.data = ttmlSubtitles.data.replace(/http:\\/\\/www.w3.org\\/2006\\/10\\/ttaf1/gi, 'http://www.w3.org/ns/ttml');\n }\n\n function registerEvents() {\n eventBus.on(events.INIT_FRAGMENT_NEEDED, onInitFragmentNeeded, instance, dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH); /* jshint ignore:line */\n eventBus.on(events.PLAYBACK_PAUSED, onPlaybackPaused, instance, dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH); /* jshint ignore:line */\n eventBus.on(events.PLAYBACK_SEEK_ASKED, onPlaybackSeekAsked, instance, dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH); /* jshint ignore:line */\n eventBus.on(events.FRAGMENT_LOADING_COMPLETED, onSegmentMediaLoaded, instance, dashjs.FactoryMaker.getSingletonFactoryByName(eventBus.getClassName()).EVENT_PRIORITY_HIGH); /* jshint ignore:line */\n eventBus.on(events.TTML_TO_PARSE, onTTMLPreProcess, instance);\n }\n\n function reset() {\n if (mssParser) {\n mssParser.reset();\n mssParser = undefined;\n }\n\n eventBus.off(events.INIT_FRAGMENT_NEEDED, onInitFragmentNeeded, this);\n eventBus.off(events.PLAYBACK_PAUSED, onPlaybackPaused, this);\n eventBus.off(events.PLAYBACK_SEEK_ASKED, onPlaybackSeekAsked, this);\n eventBus.off(events.FRAGMENT_LOADING_COMPLETED, onSegmentMediaLoaded, this);\n eventBus.off(events.TTML_TO_PARSE, onTTMLPreProcess, this);\n\n // Reset FragmentInfoControllers\n stopFragmentInfoControllers();\n }\n\n function createMssParser() {\n mssParser = MssParser(context).create(config);\n return mssParser;\n }\n\n instance = {\n reset: reset,\n createMssParser: createMssParser,\n registerEvents: registerEvents\n };\n\n setup();\n\n return instance;\n}\n\nMssHandler.__dashjs_factory_name = 'MssHandler';\nconst factory = dashjs.FactoryMaker.getClassFactory(MssHandler); /* jshint ignore:line */\nfactory.errors = MssErrors;\ndashjs.FactoryMaker.updateClassFactory(MssHandler.__dashjs_factory_name, factory); /* jshint ignore:line */\nexport default factory; /* jshint ignore:line */\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\nimport ErrorsBase from '../../core/errors/ErrorsBase';\n/**\n * @class\n *\n */\nclass MssErrors extends ErrorsBase {\n\tconstructor () {\n super();\n /**\n * Error code returned when no tfrf box is detected in MSS live stream\n */\n this.MSS_NO_TFRF_CODE = 200;\n\n /**\n * Error code returned when one of the codecs defined in the manifest is not supported\n */\n this.MSS_UNSUPPORTED_CODEC_CODE = 201;\n\n this.MSS_NO_TFRF_MESSAGE = 'Missing tfrf in live media segment';\n this.MSS_UNSUPPORTED_CODEC_MESSAGE = 'Unsupported codec';\n }\n}\n\nlet mssErrors = new MssErrors();\nexport default mssErrors;", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport MssHandler from './MssHandler';\n\n// Shove both of these into the global scope\nvar context = (typeof window !== 'undefined' && window) || global;\n\nvar dashjs = context.dashjs;\nif (!dashjs) {\n dashjs = context.dashjs = {};\n}\n\ndashjs.MssHandler = MssHandler;\n\nexport default dashjs;\nexport { MssHandler };\n", "/**\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2013, Dash Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * * Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * @module MssParser\n * @ignore\n * @param {Object} config object\n */\n\nimport BigInt from '../../../externals/BigInteger';\n\nfunction MssParser(config) {\n config = config || {};\n const BASE64 = config.BASE64;\n const debug = config.debug;\n const constants = config.constants;\n const manifestModel = config.manifestModel;\n const mediaPlayerModel = config.mediaPlayerModel;\n const settings = config.settings;\n\n const DEFAULT_TIME_SCALE = 10000000.0;\n const SUPPORTED_CODECS = ['AAC', 'AACL', 'AVC1', 'H264', 'TTML', 'DFXP'];\n // MPEG-DASH Role and accessibility mapping for text tracks according to ETSI TS 103 285 v1.1.1 (section 7.1.2)\n const ROLE = {\n 'CAPT': 'main',\n 'SUBT': 'alternate',\n 'DESC': 'main'\n };\n const ACCESSIBILITY = {\n 'DESC': '2'\n };\n const samplingFrequencyIndex = {\n 96000: 0x0,\n 88200: 0x1,\n 64000: 0x2,\n 48000: 0x3,\n 44100: 0x4,\n 32000: 0x5,\n 24000: 0x6,\n 22050: 0x7,\n 16000: 0x8,\n 12000: 0x9,\n 11025: 0xA,\n 8000: 0xB,\n 7350: 0xC\n };\n const mimeTypeMap = {\n 'video': 'video/mp4',\n 'audio': 'audio/mp4',\n 'text': 'application/mp4'\n };\n\n let instance,\n logger,\n initialBufferSettings;\n\n\n function setup() {\n logger = debug.getLogger(instance);\n }\n\n function mapPeriod(smoothStreamingMedia, timescale) {\n const period = {};\n let streams,\n adaptation;\n\n // For each StreamIndex node, create an AdaptationSet element\n period.AdaptationSet_asArray = [];\n streams = smoothStreamingMedia.getElementsByTagName('StreamIndex');\n for (let i = 0; i < streams.length; i++) {\n adaptation = mapAdaptationSet(streams[i], timescale);\n if (adaptation !== null) {\n period.AdaptationSet_asArray.push(adaptation);\n }\n }\n\n if (period.AdaptationSet_asArray.length > 0) {\n period.AdaptationSet = (period.AdaptationSet_asArray.length > 1) ? period.AdaptationSet_asArray : period.AdaptationSet_asArray[0];\n }\n\n return period;\n }\n\n function mapAdaptationSet(streamIndex, timescale) {\n const adaptationSet = {};\n const representations = [];\n let segmentTemplate;\n let qualityLevels,\n representation,\n segments,\n i;\n\n const name = streamIndex.getAttribute('Name');\n const type = streamIndex.getAttribute('Type');\n const lang = streamIndex.getAttribute('Language');\n const fallBackId = lang ? type + '_' + lang : type;\n\n adaptationSet.id = name || fallBackId;\n adaptationSet.contentType = type;\n adaptationSet.lang = lang || 'und';\n adaptationSet.mimeType = mimeTypeMap[type];\n adaptationSet.subType = streamIndex.getAttribute('Subtype');\n adaptationSet.maxWidth = streamIndex.getAttribute('MaxWidth');\n adaptationSet.maxHeight = streamIndex.getAttribute('MaxHeight');\n\n // Map text tracks subTypes to MPEG-DASH AdaptationSet role and accessibility (see ETSI TS 103 285 v1.1.1, section 7.1.2)\n if (adaptationSet.subType) {\n if (ROLE[adaptationSet.subType]) {\n let role = {\n schemeIdUri: 'urn:mpeg:dash:role:2011',\n value: ROLE[adaptationSet.subType]\n };\n adaptationSet.Role = role;\n adaptationSet.Role_asArray = [role];\n }\n if (ACCESSIBILITY[adaptationSet.subType]) {\n let accessibility = {\n schemeIdUri: 'urn:tva:metadata:cs:AudioPurposeCS:2007',\n value: ACCESSIBILITY[adaptationSet.subType]\n };\n adaptationSet.Accessibility = accessibility;\n adaptationSet.Accessibility_asArray = [accessibility];\n }\n }\n\n // Create a SegmentTemplate with a SegmentTimeline\n segmentTemplate = mapSegmentTemplate(streamIndex, timescale);\n\n qualityLevels = streamIndex.getElementsByTagName('QualityLevel');\n // For each QualityLevel node, create a Representation element\n for (i = 0; i < qualityLevels.length; i++) {\n // Propagate BaseURL and mimeType\n qualityLevels[i].BaseURL = adaptationSet.BaseURL;\n qualityLevels[i].mimeType = adaptationSet.mimeType;\n\n // Set quality level id\n qualityLevels[i].Id = adaptationSet.id + '_' + qualityLevels[i].getAttribute('Index');\n\n // Map Representation to QualityLevel\n representation = mapRepresentation(qualityLevels[i], streamIndex);\n\n if (representation !== null) {\n // Copy SegmentTemplate into Representation\n representation.SegmentTemplate = segmentTemplate;\n\n representations.push(representation);\n }\n }\n\n if (representations.length === 0) {\n return null;\n }\n\n adaptationSet.Representation = (representations.length > 1) ? representations : representations[0];\n adaptationSet.Representation_asArray = representations;\n\n // Set SegmentTemplate\n adaptationSet.SegmentTemplate = segmentTemplate;\n\n segments = segmentTemplate.SegmentTimeline.S_asArray;\n\n return adaptationSet;\n }\n\n function mapRepresentation(qualityLevel, streamIndex) {\n const representation = {};\n const type = streamIndex.getAttribute('Type');\n let fourCCValue = null;\n\n representation.id = qualityLevel.Id;\n representation.bandwidth = parseInt(qualityLevel.getAttribute('Bitrate'), 10);\n representation.mimeType = qualityLevel.mimeType;\n representation.width = parseInt(qualityLevel.getAttribute('MaxWidth'), 10);\n representation.height = parseInt(qualityLevel.getAttribute('MaxHeight'), 10);\n\n fourCCValue = qualityLevel.getAttribute('FourCC');\n\n // If FourCC not defined at QualityLevel level, then get it from StreamIndex level\n if (fourCCValue === null || fourCCValue === '') {\n fourCCValue = streamIndex.getAttribute('FourCC');\n }\n\n // If still not defined (optionnal for audio stream, see https://msdn.microsoft.com/en-us/library/ff728116%28v=vs.95%29.aspx),\n // then we consider the stream is an audio AAC stream\n if (fourCCValue === null || fourCCValue === '') {\n if (type === constants.AUDIO) {\n fourCCValue = 'AAC';\n } else if (type === constants.VIDEO) {\n logger.debug('FourCC is not defined whereas it is required for a QualityLevel element for a StreamIndex of type \"video\"');\n return null;\n }\n }\n\n // Check if codec is supported\n if (SUPPORTED_CODECS.indexOf(fourCCValue.toUpperCase()) === -1) {\n // Do not send warning\n logger.warn('Codec not supported: ' + fourCCValue);\n return null;\n }\n\n // Get codecs value according to FourCC field\n if (fourCCValue === 'H264' || fourCCValue === 'AVC1') {\n representation.codecs = getH264Codec(qualityLevel);\n } else if (fourCCValue.indexOf('AAC') >= 0) {\n representation.codecs = getAACCodec(qualityLevel, fourCCValue);\n representation.audioSamplingRate = parseInt(qualityLevel.getAttribute('SamplingRate'), 10);\n representation.audioChannels = parseInt(qualityLevel.getAttribute('Channels'), 10);\n } else if (fourCCValue.indexOf('TTML') || fourCCValue.indexOf('DFXP')) {\n representation.codecs = constants.STPP;\n }\n\n representation.codecPrivateData = '' + qualityLevel.getAttribute('CodecPrivateData');\n representation.BaseURL = qualityLevel.BaseURL;\n\n return representation;\n }\n\n function getH264Codec(qualityLevel) {\n let codecPrivateData = qualityLevel.getAttribute('CodecPrivateData').toString();\n let nalHeader,\n avcoti;\n\n\n // Extract from the CodecPrivateData field the hexadecimal representation of the following\n // three bytes in the sequence parameter set NAL unit.\n // => Find the SPS nal header\n nalHeader = /00000001[0-9]7/.exec(codecPrivateData);\n // => Find the 6 characters after the SPS nalHeader (if it exists)\n avcoti = nalHeader && nalHeader[0] ? (codecPrivateData.substr(codecPrivateData.indexOf(nalHeader[0]) + 10, 6)) : undefined;\n\n return 'avc1.' + avcoti;\n }\n\n function getAACCodec(qualityLevel, fourCCValue) {\n const samplingRate = parseInt(qualityLevel.getAttribute('SamplingRate'), 10);\n let codecPrivateData = qualityLevel.getAttribute('CodecPrivateData').toString();\n let objectType = 0;\n let codecPrivateDataHex,\n arr16,\n indexFreq,\n extensionSamplingFrequencyIndex;\n\n //chrome problem, in implicit AAC HE definition, so when AACH is detected in FourCC\n //set objectType to 5 => strange, it should be 2\n if (fourCCValue === 'AACH') {\n objectType = 0x05;\n }\n //if codecPrivateData is empty, build it :\n if (codecPrivateData === undefined || codecPrivateData === '') {\n objectType = 0x02; //AAC Main Low Complexity => object Type = 2\n indexFreq = samplingFrequencyIndex[samplingRate];\n if (fourCCValue === 'AACH') {\n // 4 bytes : XXXXX XXXX XXXX XXXX XXXXX XXX XXXXXXX\n // ' ObjectType' 'Freq Index' 'Channels value' 'Extens Sampl Freq' 'ObjectType' 'GAS' 'alignment = 0'\n objectType = 0x05; // High Efficiency AAC Profile = object Type = 5 SBR\n codecPrivateData = new Uint8Array(4);\n extensionSamplingFrequencyIndex = samplingFrequencyIndex[samplingRate * 2]; // in HE AAC Extension Sampling frequence\n // equals to SamplingRate*2\n //Freq Index is present for 3 bits in the first byte, last bit is in the second\n codecPrivateData[0] = (objectType << 3) | (indexFreq >> 1);\n codecPrivateData[1] = (indexFreq << 7) | (qualityLevel.Channels << 3) | (extensionSamplingFrequencyIndex >> 1);\n codecPrivateData[2] = (extensionSamplingFrequencyIndex << 7) | (0x02 << 2); // origin object type equals to 2 => AAC Main Low Complexity\n codecPrivateData[3] = 0x0; //alignment bits\n\n arr16 = new Uint16Array(2);\n arr16[0] = (codecPrivateData[0] << 8) + codecPrivateData[1];\n arr16[1] = (codecPrivateData[2] << 8) + codecPrivateData[3];\n //convert decimal to hex value\n codecPrivateDataHex = arr16[0].toString(16);\n codecPrivateDataHex = arr16[0].toString(16) + arr16[1].toString(16);\n\n } else {\n // 2 bytes : XXXXX XXXX XXXX XXX\n // ' ObjectType' 'Freq Index' 'Channels value' 'GAS = 000'\n codecPrivateData = new Uint8Array(2);\n //Freq Index is present for 3 bits in the first byte, last bit is in the second\n codecPrivateData[0] = (objectType << 3) | (indexFreq >> 1);\n codecPrivateData[1] = (indexFreq << 7) | (parseInt(qualityLevel.getAttribute('Channels'), 10) << 3);\n // put the 2 bytes in an 16 bits array\n arr16 = new Uint16Array(1);\n arr16[0] = (codecPrivateData[0] << 8) + codecPrivateData[1];\n //convert decimal to hex value\n codecPrivateDataHex = arr16[0].toString(16);\n }\n\n codecPrivateData = '' + codecPrivateDataHex;\n codecPrivateData = codecPrivateData.toUpperCase();\n qualityLevel.setAttribute('CodecPrivateData', codecPrivateData);\n } else if (objectType === 0) {\n objectType = (parseInt(codecPrivateData.substr(0, 2), 16) & 0xF8) >> 3;\n }\n\n return 'mp4a.40.' + objectType;\n }\n\n function mapSegmentTemplate(streamIndex, timescale) {\n const segmentTemplate = {};\n let mediaUrl,\n streamIndexTimeScale,\n url;\n\n url = streamIndex.getAttribute('Url');\n mediaUrl = url ? url.replace('{bitrate}', '$Bandwidth$') : null;\n mediaUrl = mediaUrl ? mediaUrl.replace('{start time}', '$Time$') : null;\n\n streamIndexTimeScale = streamIndex.getAttribute('TimeScale');\n streamIndexTimeScale = streamIndexTimeScale ? parseFloat(streamIndexTimeScale) : timescale;\n\n segmentTemplate.media = mediaUrl;\n segmentTemplate.timescale = streamIndexTimeScale;\n\n segmentTemplate.SegmentTimeline = mapSegmentTimeline(streamIndex, segmentTemplate.timescale);\n\n return segmentTemplate;\n }\n\n function mapSegmentTimeline(streamIndex, timescale) {\n const segmentTimeline = {};\n const chunks = streamIndex.getElementsByTagName('c');\n const segments = [];\n let segment,\n prevSegment,\n tManifest,\n i,j,r;\n let duration = 0;\n\n for (i = 0; i < chunks.length; i++) {\n segment = {};\n\n // Get time 't' attribute value\n tManifest = chunks[i].getAttribute('t');\n\n // => segment.tManifest = original timestamp value as a string (for constructing the fragment request url, see DashHandler)\n // => segment.t = number value of timestamp (maybe rounded value, but only for 0.1 microsecond)\n if (tManifest && BigInt(tManifest).greater(BigInt(Number.MAX_SAFE_INTEGER))) {\n segment.tManifest = tManifest;\n }\n segment.t = parseFloat(tManifest);\n\n // Get duration 'd' attribute value\n segment.d = parseFloat(chunks[i].getAttribute('d'));\n\n // If 't' not defined for first segment then t=0\n if ((i === 0) && !segment.t) {\n segment.t = 0;\n }\n\n if (i > 0) {\n prevSegment = segments[segments.length - 1];\n // Update previous segment duration if not defined\n if (!prevSegment.d) {\n if (prevSegment.tManifest) {\n prevSegment.d = BigInt(tManifest).subtract(BigInt(prevSegment.tManifest)).toJSNumber();\n } else {\n prevSegment.d = segment.t - prevSegment.t;\n }\n duration += prevSegment.d;\n }\n // Set segment absolute timestamp if not set in manifest\n if (!segment.t) {\n if (prevSegment.tManifest) {\n segment.tManifest = BigInt(prevSegment.tManifest).add(BigInt(prevSegment.d)).toString();\n segment.t = parseFloat(segment.tManifest);\n } else {\n segment.t = prevSegment.t + prevSegment.d;\n }\n }\n }\n\n if (segment.d) {\n duration += segment.d;\n }\n\n // Create new segment\n segments.push(segment);\n\n // Support for 'r' attribute (i.e. \"repeat\" as in MPEG-DASH)\n r = parseFloat(chunks[i].getAttribute('r'));\n if (r) {\n\n for (j = 0; j < (r - 1); j++) {\n prevSegment = segments[segments.length - 1];\n segment = {};\n segment.t = prevSegment.t + prevSegment.d;\n segment.d = prevSegment.d;\n if (prevSegment.tManifest) {\n segment.tManifest = BigInt(prevSegment.tManifest).add(BigInt(prevSegment.d)).toString();\n }\n duration += segment.d;\n segments.push(segment);\n }\n }\n }\n\n segmentTimeline.S = segments;\n segmentTimeline.S_asArray = segments;\n segmentTimeline.duration = duration / timescale;\n\n return segmentTimeline;\n }\n\n function getKIDFromProtectionHeader(protectionHeader) {\n let prHeader,\n wrmHeader,\n xmlReader,\n KID;\n\n // Get PlayReady header as byte array (base64 decoded)\n prHeader = BASE64.decodeArray(protectionHeader.firstChild.data);\n\n // Get Right Management header (WRMHEADER) from PlayReady header\n wrmHeader = getWRMHeaderFromPRHeader(prHeader);\n\n if (wrmHeader) {\n // Convert from multi-byte to unicode\n wrmHeader = new Uint16Array(wrmHeader.buffer);\n\n // Convert to string\n wrmHeader = String.fromCharCode.apply(null, wrmHeader);\n\n // Parse to get KID field value\n xmlReader = (new DOMParser()).parseFromString(wrmHeader, 'application/xml');\n KID = xmlReader.querySelector('KID').textContent;\n\n // Get KID (base64 decoded) as byte array\n KID = BASE64.decodeArray(KID);\n\n // Convert UUID from little-endian to big-endian\n convertUuidEndianness(KID);\n }\n\n return KID;\n }\n\n function getWRMHeaderFromPRHeader(prHeader) {\n let length,\n recordCount,\n recordType,\n recordLength,\n recordValue;\n let i = 0;\n\n // Parse PlayReady header\n\n // Length - 32 bits (LE format)\n length = (prHeader[i + 3] << 24) + (prHeader[i + 2] << 16) + (prHeader[i + 1] << 8) + prHeader[i];\n i += 4;\n\n // Record count - 16 bits (LE format)\n recordCount = (prHeader[i + 1] << 8) + prHeader[i];\n i += 2;\n\n // Parse records\n while (i < prHeader.length) {\n // Record type - 16 bits (LE format)\n recordType = (prHeader[i + 1] << 8) + prHeader[i];\n i += 2;\n\n // Check if Rights Management header (record type = 0x01)\n if (recordType === 0x01) {\n\n // Record length - 16 bits (LE format)\n recordLength = (prHeader[i + 1] << 8) + prHeader[i];\n i += 2;\n\n // Record value => contains \n recordValue = new Uint8Array(recordLength);\n recordValue.set(prHeader.subarray(i, i + recordLength));\n return recordValue;\n }\n }\n\n return null;\n }\n\n function convertUuidEndianness(uuid) {\n swapBytes(uuid, 0, 3);\n swapBytes(uuid, 1, 2);\n swapBytes(uuid, 4, 5);\n swapBytes(uuid, 6, 7);\n }\n\n function swapBytes(bytes, pos1, pos2) {\n const temp = bytes[pos1];\n bytes[pos1] = bytes[pos2];\n bytes[pos2] = temp;\n }\n\n\n function createPRContentProtection(protectionHeader) {\n let pro = {\n __text: protectionHeader.firstChild.data,\n __prefix: 'mspr'\n };\n return {\n schemeIdUri: 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95',\n value: 'com.microsoft.playready',\n pro: pro,\n pro_asArray: pro\n };\n }\n\n function createWidevineContentProtection(KID) {\n let widevineCP = {\n schemeIdUri: 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed',\n value: 'com.widevine.alpha'\n };\n if (!KID)\n return widevineCP;\n // Create Widevine CENC header (Protocol Buffer) with KID value\n const wvCencHeader = new Uint8Array(2 + KID.length);\n wvCencHeader[0] = 0x12;\n wvCencHeader[1] = 0x10;\n wvCencHeader.set(KID, 2);\n\n // Create a pssh box\n const length = 12 /* box length, type, version and flags */ + 16 /* SystemID */ + 4 /* data length */ + wvCencHeader.length;\n let pssh = new Uint8Array(length);\n let i = 0;\n\n // Set box length value\n pssh[i++] = (length & 0xFF000000) >> 24;\n pssh[i++] = (length & 0x00FF0000) >> 16;\n pssh[i++] = (length & 0x0000FF00) >> 8;\n pssh[i++] = (length & 0x000000FF);\n\n // Set type ('pssh'), version (0) and flags (0)\n pssh.set([0x70, 0x73, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00], i);\n i += 8;\n\n // Set SystemID ('edef8ba9-79d6-4ace-a3c8-27dcd51d21ed')\n pssh.set([0xed, 0xef, 0x8b, 0xa9, 0x79, 0xd6, 0x4a, 0xce, 0xa3, 0xc8, 0x27, 0xdc, 0xd5, 0x1d, 0x21, 0xed], i);\n i += 16;\n\n // Set data length value\n pssh[i++] = (wvCencHeader.length & 0xFF000000) >> 24;\n pssh[i++] = (wvCencHeader.length & 0x00FF0000) >> 16;\n pssh[i++] = (wvCencHeader.length & 0x0000FF00) >> 8;\n pssh[i++] = (wvCencHeader.length & 0x000000FF);\n\n // Copy Widevine CENC header\n pssh.set(wvCencHeader, i);\n\n // Convert to BASE64 string\n pssh = String.fromCharCode.apply(null, pssh);\n pssh = BASE64.encodeASCII(pssh);\n\n widevineCP.pssh = { __text: pssh };\n\n return widevineCP;\n }\n\n function processManifest(xmlDoc, manifestLoadedTime) {\n const manifest = {};\n const contentProtections = [];\n const smoothStreamingMedia = xmlDoc.getElementsByTagName('SmoothStreamingMedia')[0];\n const protection = xmlDoc.getElementsByTagName('Protection')[0];\n let protectionHeader = null;\n let period,\n adaptations,\n contentProtection,\n KID,\n timestampOffset,\n startTime,\n segments,\n timescale,\n segmentDuration,\n i, j;\n\n // Set manifest node properties\n manifest.protocol = 'MSS';\n manifest.profiles = 'urn:mpeg:dash:profile:isoff-live:2011';\n manifest.type = smoothStreamingMedia.getAttribute('IsLive') === 'TRUE' ? 'dynamic' : 'static';\n timescale = smoothStreamingMedia.getAttribute('TimeScale');\n manifest.timescale = timescale ? parseFloat(timescale) : DEFAULT_TIME_SCALE;\n let dvrWindowLength = parseFloat(smoothStreamingMedia.getAttribute('DVRWindowLength'));\n // If the DVRWindowLength field is omitted for a live presentation or set to 0, the DVR window is effectively infinite\n if (manifest.type === 'dynamic' && (dvrWindowLength === 0 || isNaN(dvrWindowLength))) {\n dvrWindowLength = Infinity;\n }\n // Star-over\n if (dvrWindowLength === 0 && smoothStreamingMedia.getAttribute('CanSeek') === 'TRUE') {\n dvrWindowLength = Infinity;\n }\n\n if (dvrWindowLength > 0) {\n manifest.timeShiftBufferDepth = dvrWindowLength / manifest.timescale;\n }\n\n let duration = parseFloat(smoothStreamingMedia.getAttribute('Duration'));\n manifest.mediaPresentationDuration = (duration === 0) ? Infinity : duration / manifest.timescale;\n // By default, set minBufferTime to 2 sec. (but set below according to video segment duration)\n manifest.minBufferTime = 2;\n manifest.ttmlTimeIsRelative = true;\n\n // Live manifest with Duration = start-over\n if (manifest.type === 'dynamic' && duration > 0) {\n manifest.type = 'static';\n // We set timeShiftBufferDepth to initial duration, to be used by MssFragmentController to update segment timeline\n manifest.timeShiftBufferDepth = duration / manifest.timescale;\n // Duration will be set according to current segment timeline duration (see below)\n }\n\n if (manifest.type === 'dynamic' && manifest.timeShiftBufferDepth < Infinity) {\n manifest.refreshManifestOnSwitchTrack = true; // Refresh manifest when switching tracks\n manifest.doNotUpdateDVRWindowOnBufferUpdated = true; // DVRWindow is update by MssFragmentMoofPocessor based on tfrf boxes\n manifest.ignorePostponeTimePeriod = true; // Never update manifest\n }\n\n // Map period node to manifest root node\n manifest.Period = mapPeriod(smoothStreamingMedia, manifest.timescale);\n manifest.Period_asArray = [manifest.Period];\n\n // Initialize period start time\n period = manifest.Period;\n period.start = 0;\n\n // Uncomment to test live to static manifests\n // if (manifest.type !== 'static') {\n // manifest.type = 'static';\n // manifest.mediaPresentationDuration = manifest.timeShiftBufferDepth;\n // manifest.timeShiftBufferDepth = null;\n // }\n\n // ContentProtection node\n if (protection !== undefined) {\n protectionHeader = xmlDoc.getElementsByTagName('ProtectionHeader')[0];\n\n // Some packagers put newlines into the ProtectionHeader base64 string, which is not good\n // because this cannot be correctly parsed. Let's just filter out any newlines found in there.\n protectionHeader.firstChild.data = protectionHeader.firstChild.data.replace(/\\n|\\r/g, '');\n\n // Get KID (in CENC format) from protection header\n KID = getKIDFromProtectionHeader(protectionHeader);\n\n // Create ContentProtection for PlayReady\n contentProtection = createPRContentProtection(protectionHeader);\n contentProtection['cenc:default_KID'] = KID;\n contentProtections.push(contentProtection);\n\n // Create ContentProtection for Widevine (as a CENC protection)\n contentProtection = createWidevineContentProtection(KID);\n contentProtection['cenc:default_KID'] = KID;\n contentProtections.push(contentProtection);\n\n manifest.ContentProtection = contentProtections;\n manifest.ContentProtection_asArray = contentProtections;\n }\n\n adaptations = period.AdaptationSet_asArray;\n\n for (i = 0; i < adaptations.length; i += 1) {\n adaptations[i].SegmentTemplate.initialization = '$Bandwidth$';\n // Propagate content protection information into each adaptation\n if (manifest.ContentProtection !== undefined) {\n adaptations[i].ContentProtection = manifest.ContentProtection;\n adaptations[i].ContentProtection_asArray = manifest.ContentProtection_asArray;\n }\n\n if (adaptations[i].contentType === 'video') {\n // Get video segment duration\n segmentDuration = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray[0].d / adaptations[i].SegmentTemplate.timescale;\n // Set minBufferTime to one segment duration\n manifest.minBufferTime = segmentDuration;\n\n if (manifest.type === 'dynamic' ) {\n // Set availabilityStartTime\n segments = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray;\n let endTime = (segments[segments.length - 1].t + segments[segments.length - 1].d) / adaptations[i].SegmentTemplate.timescale * 1000;\n manifest.availabilityStartTime = new Date(manifestLoadedTime.getTime() - endTime);\n\n // Match timeShiftBufferDepth to video segment timeline duration\n if (manifest.timeShiftBufferDepth > 0 &&\n manifest.timeShiftBufferDepth !== Infinity &&\n manifest.timeShiftBufferDepth > adaptations[i].SegmentTemplate.SegmentTimeline.duration) {\n manifest.timeShiftBufferDepth = adaptations[i].SegmentTemplate.SegmentTimeline.duration;\n }\n }\n }\n }\n\n // Cap minBufferTime to timeShiftBufferDepth\n manifest.minBufferTime = Math.min(manifest.minBufferTime, (manifest.timeShiftBufferDepth ? manifest.timeShiftBufferDepth : Infinity));\n\n // In case of live streams:\n // 1- configure player buffering properties according to target live delay\n // 2- adapt live delay and then buffers length in case timeShiftBufferDepth is too small compared to target live delay (see PlaybackController.computeLiveDelay())\n if (manifest.type === 'dynamic') {\n let targetLiveDelay = mediaPlayerModel.getLiveDelay();\n if (!targetLiveDelay) {\n const liveDelayFragmentCount = settings.get().streaming.liveDelayFragmentCount !== null && !isNaN(settings.get().streaming.liveDelayFragmentCount) ? settings.get().streaming.liveDelayFragmentCount : 4;\n targetLiveDelay = segmentDuration * liveDelayFragmentCount;\n }\n let targetDelayCapping = Math.max(manifest.timeShiftBufferDepth - 10/*END_OF_PLAYLIST_PADDING*/, manifest.timeShiftBufferDepth / 2);\n let liveDelay = Math.min(targetDelayCapping, targetLiveDelay);\n // Consider a margin of one segment in order to avoid Precondition Failed errors (412), for example if audio and video are not correctly synchronized\n let bufferTime = liveDelay - segmentDuration;\n\n // Store initial buffer settings\n initialBufferSettings = {\n 'streaming': {\n 'liveDelay': settings.get().streaming.liveDelay,\n 'stableBufferTime': settings.get().streaming.stableBufferTime,\n 'bufferTimeAtTopQuality': settings.get().streaming.bufferTimeAtTopQuality,\n 'bufferTimeAtTopQualityLongForm': settings.get().streaming.bufferTimeAtTopQualityLongForm\n }\n };\n\n settings.update({\n 'streaming': {\n 'liveDelay': liveDelay,\n 'stableBufferTime': bufferTime,\n 'bufferTimeAtTopQuality': bufferTime,\n 'bufferTimeAtTopQualityLongForm': bufferTime\n }\n });\n }\n\n // Delete Content Protection under root manifest node\n delete manifest.ContentProtection;\n delete manifest.ContentProtection_asArray;\n\n // In case of VOD streams, check if start time is greater than 0\n // Then determine timestamp offset according to higher audio/video start time\n // (use case = live stream delinearization)\n if (manifest.type === 'static') {\n // In case of start-over stream and manifest reloading (due to track switch)\n // we consider previous timestampOffset to keep timelines synchronized\n var prevManifest = manifestModel.getValue();\n if (prevManifest && prevManifest.timestampOffset) {\n timestampOffset = prevManifest.timestampOffset;\n } else {\n for (i = 0; i < adaptations.length; i++) {\n if (adaptations[i].contentType === constants.AUDIO || adaptations[i].contentType === constants.VIDEO) {\n segments = adaptations[i].SegmentTemplate.SegmentTimeline.S_asArray;\n startTime = segments[0].t / adaptations[i].SegmentTemplate.timescale;\n if (timestampOffset === undefined) {\n timestampOffset = startTime;\n }\n timestampOffset = Math.min(timestampOffset, startTime);\n // Correct content duration according to minimum adaptation's segment timeline duration\n // in order to force