2018-10-23 01:05:09 +03:00
! function ( e ) {
if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ;
else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ;
else {
var t ;
t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , t . flvjs = e ( )
}
} ( function ( ) {
var e ;
return function e ( t , n , i ) {
function r ( a , o ) {
if ( ! n [ a ] ) {
if ( ! t [ a ] ) {
var u = "function" == typeof require && require ;
if ( ! o && u ) return u ( a , ! 0 ) ;
if ( s ) return s ( a , ! 0 ) ;
var l = new Error ( "Cannot find module '" + a + "'" ) ;
throw l . code = "MODULE_NOT_FOUND" , l
}
var d = n [ a ] = {
exports : { }
} ;
t [ a ] [ 0 ] . call ( d . exports , function ( e ) {
var n = t [ a ] [ 1 ] [ e ] ;
return r ( n || e )
} , d , d . exports , e , t , n , i )
}
return n [ a ] . exports
}
for ( var s = "function" == typeof require && require , a = 0 ; a < i . length ; a ++ ) r ( i [ a ] ) ;
return r
} ( {
1 : [ function ( t , n , i ) {
( function ( r , s ) {
! function ( t , r ) {
"object" == typeof i && void 0 !== n ? n . exports = r ( ) : "function" == typeof e && e . amd ? e ( r ) : t . ES6Promise = r ( )
} ( this , function ( ) {
"use strict" ;
function e ( e ) {
return "function" == typeof e || "object" == typeof e && null !== e
}
function n ( e ) {
return "function" == typeof e
}
function i ( e ) {
K = e
}
function a ( e ) {
q = e
}
function o ( ) {
return void 0 !== H ? function ( ) {
H ( l )
} : u ( )
}
function u ( ) {
var e = setTimeout ;
return function ( ) {
return e ( l , 1 )
}
}
function l ( ) {
for ( var e = 0 ; e < z ; e += 2 ) {
( 0 , J [ e ] ) ( J [ e + 1 ] ) , J [ e ] = void 0 , J [ e + 1 ] = void 0
}
z = 0
}
function d ( e , t ) {
var n = arguments ,
i = this ,
r = new this . constructor ( f ) ;
void 0 === r [ ee ] && I ( r ) ;
var s = i . _state ;
return s ? function ( ) {
var e = n [ s - 1 ] ;
q ( function ( ) {
return O ( s , r , e , i . _result )
} )
} ( ) : L ( i , r , e , t ) , r
}
function h ( e ) {
var t = this ;
if ( e && "object" == typeof e && e . constructor === t ) return e ;
var n = new t ( f ) ;
return E ( n , e ) , n
}
function f ( ) { }
function c ( ) {
return new TypeError ( "You cannot resolve a promise with itself" )
}
function _ ( ) {
return new TypeError ( "A promises callback cannot return that same promise." )
}
function m ( e ) {
try {
return e . then
} catch ( e ) {
return re . error = e , re
}
}
function p ( e , t , n , i ) {
try {
e . call ( t , n , i )
} catch ( e ) {
return e
}
}
function v ( e , t , n ) {
q ( function ( e ) {
var i = ! 1 ,
r = p ( n , t , function ( n ) {
i || ( i = ! 0 , t !== n ? E ( e , n ) : S ( e , n ) )
} , function ( t ) {
i || ( i = ! 0 , k ( e , t ) )
} , "Settle: " + ( e . _label || " unknown promise" ) ) ;
! i && r && ( i = ! 0 , k ( e , r ) )
} , e )
}
function g ( e , t ) {
t . _state === ne ? S ( e , t . _result ) : t . _state === ie ? k ( e , t . _result ) : L ( t , void 0 , function ( t ) {
return E ( e , t )
} , function ( t ) {
return k ( e , t )
} )
}
function y ( e , t , i ) {
t . constructor === e . constructor && i === d && t . constructor . resolve === h ? g ( e , t ) : i === re ? ( k ( e , re . error ) , re . error = null ) : void 0 === i ? S ( e , t ) : n ( i ) ? v ( e , t , i ) : S ( e , t )
}
function E ( t , n ) {
t === n ? k ( t , c ( ) ) : e ( n ) ? y ( t , n , m ( n ) ) : S ( t , n )
}
function b ( e ) {
e . _onerror && e . _onerror ( e . _result ) , w ( e )
}
function S ( e , t ) {
e . _state === te && ( e . _result = t , e . _state = ne , 0 !== e . _subscribers . length && q ( w , e ) )
}
function k ( e , t ) {
e . _state === te && ( e . _state = ie , e . _result = t , q ( b , e ) )
}
function L ( e , t , n , i ) {
var r = e . _subscribers ,
s = r . length ;
e . _onerror = null , r [ s ] = t , r [ s + ne ] = n , r [ s + ie ] = i , 0 === s && e . _state && q ( w , e )
}
function w ( e ) {
var t = e . _subscribers ,
n = e . _state ;
if ( 0 !== t . length ) {
for ( var i = void 0 , r = void 0 , s = e . _result , a = 0 ; a < t . length ; a += 3 ) i = t [ a ] , r = t [ a + n ] , i ? O ( n , i , r , s ) : r ( s ) ;
e . _subscribers . length = 0
}
}
function R ( ) {
this . error = null
}
function A ( e , t ) {
try {
return e ( t )
} catch ( e ) {
return se . error = e , se
}
}
function O ( e , t , i , r ) {
var s = n ( i ) ,
a = void 0 ,
o = void 0 ,
u = void 0 ,
l = void 0 ;
if ( s ) {
if ( a = A ( i , r ) , a === se ? ( l = ! 0 , o = a . error , a . error = null ) : u = ! 0 , t === a ) return void k ( t , _ ( ) )
} else a = r , u = ! 0 ;
t . _state !== te || ( s && u ? E ( t , a ) : l ? k ( t , o ) : e === ne ? S ( t , a ) : e === ie && k ( t , a ) )
}
function T ( e , t ) {
try {
t ( function ( t ) {
E ( e , t )
} , function ( t ) {
k ( e , t )
} )
} catch ( t ) {
k ( e , t )
}
}
function C ( ) {
return ae ++
}
function I ( e ) {
e [ ee ] = ae ++ , e . _state = void 0 , e . _result = void 0 , e . _subscribers = [ ]
}
function x ( e , t ) {
this . _instanceConstructor = e , this . promise = new e ( f ) , this . promise [ ee ] || I ( this . promise ) , V ( t ) ? ( this . _input = t , this . length = t . length , this . _remaining = t . length , this . _result = new Array ( this . length ) , 0 === this . length ? S ( this . promise , this . _result ) : ( this . length = this . length || 0 , this . _enumerate ( ) , 0 === this . _remaining && S ( this . promise , this . _result ) ) ) : k ( this . promise , M ( ) )
}
function M ( ) {
return new Error ( "Array Methods must be provided an Array" )
}
function D ( e ) {
return new x ( this , e ) . promise
}
function B ( e ) {
var t = this ;
return new t ( V ( e ) ? function ( n , i ) {
for ( var r = e . length , s = 0 ; s < r ; s ++ ) t . resolve ( e [ s ] ) . then ( n , i )
} : function ( e , t ) {
return t ( new TypeError ( "You must pass an array to race." ) )
} )
}
function j ( e ) {
var t = this ,
n = new t ( f ) ;
return k ( n , e ) , n
}
function P ( ) {
throw new TypeError ( "You must pass a resolver function as the first argument to the promise constructor" )
}
function U ( ) {
throw new TypeError ( "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function." )
}
function N ( e ) {
this [ ee ] = C ( ) , this . _result = this . _state = void 0 , this . _subscribers = [ ] , f !== e && ( "function" != typeof e && P ( ) , this instanceof N ? T ( this , e ) : U ( ) )
}
function F ( ) {
var e = void 0 ;
if ( void 0 !== s ) e = s ;
else if ( "undefined" != typeof self ) e = self ;
else try {
e = Function ( "return this" ) ( )
} catch ( e ) {
throw new Error ( "polyfill failed because global object is unavailable in this environment" )
}
var t = e . Promise ;
if ( t ) {
var n = null ;
try {
n = Object . prototype . toString . call ( t . resolve ( ) )
} catch ( e ) { }
if ( "[object Promise]" === n && ! t . cast ) return
}
e . Promise = N
}
var G = void 0 ;
G = Array . isArray ? Array . isArray : function ( e ) {
return "[object Array]" === Object . prototype . toString . call ( e )
} ;
var V = G ,
z = 0 ,
H = void 0 ,
K = void 0 ,
q = function ( e , t ) {
J [ z ] = e , J [ z + 1 ] = t , 2 === ( z += 2 ) && ( K ? K ( l ) : $ ( ) )
} ,
W = "undefined" != typeof window ? window : void 0 ,
X = W || { } ,
Y = X . MutationObserver || X . WebKitMutationObserver ,
Z = "undefined" == typeof self && void 0 !== r && "[object process]" === { } . toString . call ( r ) ,
Q = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel ,
J = new Array ( 1e3 ) ,
$ = void 0 ;
$ = Z ? function ( ) {
return function ( ) {
return r . nextTick ( l )
}
} ( ) : Y ? function ( ) {
var e = 0 ,
t = new Y ( l ) ,
n = document . createTextNode ( "" ) ;
return t . observe ( n , {
characterData : ! 0
} ) ,
function ( ) {
n . data = e = ++ e % 2
}
} ( ) : Q ? function ( ) {
var e = new MessageChannel ;
return e . port1 . onmessage = l ,
function ( ) {
return e . port2 . postMessage ( 0 )
}
} ( ) : void 0 === W && "function" == typeof t ? function ( ) {
try {
var e = t ,
n = e ( "vertx" ) ;
return H = n . runOnLoop || n . runOnContext , o ( )
} catch ( e ) {
return u ( )
}
} ( ) : u ( ) ;
var ee = Math . random ( ) . toString ( 36 ) . substring ( 16 ) ,
te = void 0 ,
ne = 1 ,
ie = 2 ,
re = new R ,
se = new R ,
ae = 0 ;
return x . prototype . _enumerate = function ( ) {
for ( var e = this . length , t = this . _input , n = 0 ; this . _state === te && n < e ; n ++ ) this . _eachEntry ( t [ n ] , n )
} , x . prototype . _eachEntry = function ( e , t ) {
var n = this . _instanceConstructor ,
i = n . resolve ;
if ( i === h ) {
var r = m ( e ) ;
if ( r === d && e . _state !== te ) this . _settledAt ( e . _state , t , e . _result ) ;
else if ( "function" != typeof r ) this . _remaining -- , this . _result [ t ] = e ;
else if ( n === N ) {
var s = new n ( f ) ;
y ( s , e , r ) , this . _willSettleAt ( s , t )
} else this . _willSettleAt ( new n ( function ( t ) {
return t ( e )
} ) , t )
} else this . _willSettleAt ( i ( e ) , t )
} , x . prototype . _settledAt = function ( e , t , n ) {
var i = this . promise ;
i . _state === te && ( this . _remaining -- , e === ie ? k ( i , n ) : this . _result [ t ] = n ) , 0 === this . _remaining && S ( i , this . _result )
} , x . prototype . _willSettleAt = function ( e , t ) {
var n = this ;
L ( e , void 0 , function ( e ) {
return n . _settledAt ( ne , t , e )
} , function ( e ) {
return n . _settledAt ( ie , t , e )
} )
} , N . all = D , N . race = B , N . resolve = h , N . reject = j , N . _setScheduler = i , N . _setAsap = a , N . _asap = q , N . prototype = {
constructor : N ,
then : d ,
catch : function ( e ) {
return this . then ( null , e )
}
} , N . polyfill = F , N . Promise = N , N
} )
} ) . call ( this , t ( "_process" ) , "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } )
} , {
_process : 3
} ] ,
2 : [ function ( e , t , n ) {
function i ( ) {
this . _events = this . _events || { } , this . _maxListeners = this . _maxListeners || void 0
}
function r ( e ) {
return "function" == typeof e
}
function s ( e ) {
return "number" == typeof e
}
function a ( e ) {
return "object" == typeof e && null !== e
}
function o ( e ) {
return void 0 === e
}
t . exports = i , i . EventEmitter = i , i . prototype . _events = void 0 , i . prototype . _maxListeners = void 0 , i . defaultMaxListeners = 10 , i . prototype . setMaxListeners = function ( e ) {
if ( ! s ( e ) || e < 0 || isNaN ( e ) ) throw TypeError ( "n must be a positive number" ) ;
return this . _maxListeners = e , this
} , i . prototype . emit = function ( e ) {
var t , n , i , s , u , l ;
if ( this . _events || ( this . _events = { } ) , "error" === e && ( ! this . _events . error || a ( this . _events . error ) && ! this . _events . error . length ) ) {
if ( ( t = arguments [ 1 ] ) instanceof Error ) throw t ;
var d = new Error ( 'Uncaught, unspecified "error" event. (' + t + ")" ) ;
throw d . context = t , d
}
if ( n = this . _events [ e ] , o ( n ) ) return ! 1 ;
if ( r ( n ) ) switch ( arguments . length ) {
case 1 :
n . call ( this ) ;
break ;
case 2 :
n . call ( this , arguments [ 1 ] ) ;
break ;
case 3 :
n . call ( this , arguments [ 1 ] , arguments [ 2 ] ) ;
break ;
default :
s = Array . prototype . slice . call ( arguments , 1 ) , n . apply ( this , s )
} else if ( a ( n ) )
for ( s = Array . prototype . slice . call ( arguments , 1 ) , l = n . slice ( ) , i = l . length , u = 0 ; u < i ; u ++ ) l [ u ] . apply ( this , s ) ;
return ! 0
} , i . prototype . addListener = function ( e , t ) {
var n ;
if ( ! r ( t ) ) throw TypeError ( "listener must be a function" ) ;
return this . _events || ( this . _events = { } ) , this . _events . newListener && this . emit ( "newListener" , e , r ( t . listener ) ? t . listener : t ) , this . _events [ e ] ? a ( this . _events [ e ] ) ? this . _events [ e ] . push ( t ) : this . _events [ e ] = [ this . _events [ e ] , t ] : this . _events [ e ] = t , a ( this . _events [ e ] ) && ! this . _events [ e ] . warned && ( n = o ( this . _maxListeners ) ? i . defaultMaxListeners : this . _maxListeners ) && n > 0 && this . _events [ e ] . length > n && ( this . _events [ e ] . warned = ! 0 , console . error ( "(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit." , this . _events [ e ] . length ) , "function" == typeof console . trace && console . trace ( ) ) , this
} , i . prototype . on = i . prototype . addListener , i . prototype . once = function ( e , t ) {
function n ( ) {
this . removeListener ( e , n ) , i || ( i = ! 0 , t . apply ( this , arguments ) )
}
if ( ! r ( t ) ) throw TypeError ( "listener must be a function" ) ;
var i = ! 1 ;
return n . listener = t , this . on ( e , n ) , this
} , i . prototype . removeListener = function ( e , t ) {
var n , i , s , o ;
if ( ! r ( t ) ) throw TypeError ( "listener must be a function" ) ;
if ( ! this . _events || ! this . _events [ e ] ) return this ;
if ( n = this . _events [ e ] , s = n . length , i = - 1 , n === t || r ( n . listener ) && n . listener === t ) delete this . _events [ e ] , this . _events . removeListener && this . emit ( "removeListener" , e , t ) ;
else if ( a ( n ) ) {
for ( o = s ; o -- > 0 ; )
if ( n [ o ] === t || n [ o ] . listener && n [ o ] . listener === t ) {
i = o ;
break
} if ( i < 0 ) return this ;
1 === n . length ? ( n . length = 0 , delete this . _events [ e ] ) : n . splice ( i , 1 ) , this . _events . removeListener && this . emit ( "removeListener" , e , t )
}
return this
} , i . prototype . removeAllListeners = function ( e ) {
var t , n ;
if ( ! this . _events ) return this ;
if ( ! this . _events . removeListener ) return 0 === arguments . length ? this . _events = { } : this . _events [ e ] && delete this . _events [ e ] , this ;
if ( 0 === arguments . length ) {
for ( t in this . _events ) "removeListener" !== t && this . removeAllListeners ( t ) ;
return this . removeAllListeners ( "removeListener" ) , this . _events = { } , this
}
if ( n = this . _events [ e ] , r ( n ) ) this . removeListener ( e , n ) ;
else if ( n )
for ( ; n . length ; ) this . removeListener ( e , n [ n . length - 1 ] ) ;
return delete this . _events [ e ] , this
} , i . prototype . listeners = function ( e ) {
return this . _events && this . _events [ e ] ? r ( this . _events [ e ] ) ? [ this . _events [ e ] ] : this . _events [ e ] . slice ( ) : [ ]
} , i . prototype . listenerCount = function ( e ) {
if ( this . _events ) {
var t = this . _events [ e ] ;
if ( r ( t ) ) return 1 ;
if ( t ) return t . length
}
return 0
} , i . listenerCount = function ( e , t ) {
return e . listenerCount ( t )
}
} , { } ] ,
3 : [ function ( e , t , n ) {
function i ( ) {
throw new Error ( "setTimeout has not been defined" )
}
function r ( ) {
throw new Error ( "clearTimeout has not been defined" )
}
function s ( e ) {
if ( h === setTimeout ) return setTimeout ( e , 0 ) ;
if ( ( h === i || ! h ) && setTimeout ) return h = setTimeout , setTimeout ( e , 0 ) ;
try {
return h ( e , 0 )
} catch ( t ) {
try {
return h . call ( null , e , 0 )
} catch ( t ) {
return h . call ( this , e , 0 )
}
}
}
function a ( e ) {
if ( f === clearTimeout ) return clearTimeout ( e ) ;
if ( ( f === r || ! f ) && clearTimeout ) return f = clearTimeout , clearTimeout ( e ) ;
try {
return f ( e )
} catch ( t ) {
try {
return f . call ( null , e )
} catch ( t ) {
return f . call ( this , e )
}
}
}
function o ( ) {
p && _ && ( p = ! 1 , _ . length ? m = _ . concat ( m ) : v = - 1 , m . length && u ( ) )
}
function u ( ) {
if ( ! p ) {
var e = s ( o ) ;
p = ! 0 ;
for ( var t = m . length ; t ; ) {
for ( _ = m , m = [ ] ; ++ v < t ; ) _ && _ [ v ] . run ( ) ;
v = - 1 , t = m . length
}
_ = null , p = ! 1 , a ( e )
}
}
function l ( e , t ) {
this . fun = e , this . array = t
}
function d ( ) { }
var h , f , c = t . exports = { } ;
! function ( ) {
try {
h = "function" == typeof setTimeout ? setTimeout : i
} catch ( e ) {
h = i
}
try {
f = "function" == typeof clearTimeout ? clearTimeout : r
} catch ( e ) {
f = r
}
} ( ) ;
var _ , m = [ ] ,
p = ! 1 ,
v = - 1 ;
c . nextTick = function ( e ) {
var t = new Array ( arguments . length - 1 ) ;
if ( arguments . length > 1 )
for ( var n = 1 ; n < arguments . length ; n ++ ) t [ n - 1 ] = arguments [ n ] ;
m . push ( new l ( e , t ) ) , 1 !== m . length || p || s ( u )
} , l . prototype . run = function ( ) {
this . fun . apply ( null , this . array )
} , c . title = "browser" , c . browser = ! 0 , c . env = { } , c . argv = [ ] , c . version = "" , c . versions = { } , c . on = d , c . addListener = d , c . once = d , c . off = d , c . removeListener = d , c . removeAllListeners = d , c . emit = d , c . prependListener = d , c . prependOnceListener = d , c . listeners = function ( e ) {
return [ ]
} , c . binding = function ( e ) {
throw new Error ( "process.binding is not supported" )
} , c . cwd = function ( ) {
return "/"
} , c . chdir = function ( e ) {
throw new Error ( "process.chdir is not supported" )
} , c . umask = function ( ) {
return 0
}
} , { } ] ,
4 : [ function ( e , t , n ) {
var i = arguments [ 3 ] ,
r = arguments [ 4 ] ,
s = arguments [ 5 ] ,
a = JSON . stringify ;
t . exports = function ( e , t ) {
function n ( e ) {
p [ e ] = ! 0 ;
for ( var t in r [ e ] [ 1 ] ) {
var i = r [ e ] [ 1 ] [ t ] ;
p [ i ] || n ( i )
}
}
for ( var o , u = Object . keys ( s ) , l = 0 , d = u . length ; l < d ; l ++ ) {
var h = u [ l ] ,
f = s [ h ] . exports ;
if ( f === e || f && f . default === e ) {
o = h ;
break
}
}
if ( ! o ) {
o = Math . floor ( Math . pow ( 16 , 8 ) * Math . random ( ) ) . toString ( 16 ) ;
for ( var c = { } , l = 0 , d = u . length ; l < d ; l ++ ) {
var h = u [ l ] ;
c [ h ] = h
}
r [ o ] = [ Function ( [ "require" , "module" , "exports" ] , "(" + e + ")(self)" ) , c ]
}
var _ = Math . floor ( Math . pow ( 16 , 8 ) * Math . random ( ) ) . toString ( 16 ) ,
m = { } ;
m [ o ] = o , r [ _ ] = [ Function ( [ "require" ] , "var f = require(" + a ( o ) + ");(f.default ? f.default : f)(self);" ) , m ] ;
var p = { } ;
n ( _ ) ;
var v = "(" + i + ")({" + Object . keys ( p ) . map ( function ( e ) {
return a ( e ) + ":[" + r [ e ] [ 0 ] + "," + a ( r [ e ] [ 1 ] ) + "]"
} ) . join ( "," ) + "},{},[" + a ( _ ) + "])" ,
g = window . URL || window . webkitURL || window . mozURL || window . msURL ,
y = new Blob ( [ v ] , {
type : "text/javascript"
} ) ;
if ( t && t . bare ) return y ;
var E = g . createObjectURL ( y ) ,
b = new Worker ( E ) ;
return b . objectURL = E , b
}
} , { } ] ,
5 : [ function ( e , t , n ) {
"use strict" ;
function i ( ) {
return Object . assign ( { } , r )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) , n . createDefaultConfig = i ;
var r = n . defaultConfig = {
enableWorker : ! 1 ,
enableStashBuffer : ! 0 ,
stashInitialSize : void 0 ,
isLive : ! 1 ,
lazyLoad : ! 0 ,
lazyLoadMaxDuration : 180 ,
lazyLoadRecoverDuration : 30 ,
deferLoadAfterSourceOpen : ! 0 ,
autoCleanupMaxBackwardDuration : 180 ,
autoCleanupMinBackwardDuration : 120 ,
statisticsInfoReportInterval : 600 ,
fixAudioTimestampGap : ! 0 ,
accurateSeek : ! 1 ,
seekType : "range" ,
seekParamStart : "bstart" ,
seekParamEnd : "bend" ,
rangeLoadZeroStart : ! 1 ,
customSeekHandler : void 0 ,
reuseRedirectedURL : ! 1
}
} , { } ] ,
6 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = e ( "../io/io-controller.js" ) ,
a = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( s ) ,
o = e ( "../config.js" ) ,
u = function ( ) {
function e ( ) {
i ( this , e )
}
return r ( e , null , [ {
key : "supportMSEH264Playback" ,
value : function ( ) {
return window . MediaSource && window . MediaSource . isTypeSupported ( 'video/mp4; codecs="avc1.42E01E,mp4a.40.2"' )
}
} , {
key : "supportNetworkStreamIO" ,
value : function ( ) {
var e = new a . default ( { } , ( 0 , o . createDefaultConfig ) ( ) ) ,
t = e . loaderType ;
return e . destroy ( ) , "fetch-stream-loader" == t || "xhr-moz-chunked-loader" == t
}
} , {
key : "getNetworkLoaderTypeName" ,
value : function ( ) {
var e = new a . default ( { } , ( 0 , o . createDefaultConfig ) ( ) ) ,
t = e . loaderType ;
return e . destroy ( ) , t
}
} , {
key : "supportNativeMediaPlayback" ,
value : function ( t ) {
void 0 == e . videoElement && ( e . videoElement = window . document . createElement ( "video" ) ) ;
var n = e . videoElement . canPlayType ( t ) ;
return "probably" === n || "maybe" == n
}
} , {
key : "getFeatureList" ,
value : function ( ) {
var t = {
mseFlvPlayback : ! 1 ,
mseLiveFlvPlayback : ! 1 ,
networkStreamIO : ! 1 ,
networkLoaderName : "" ,
nativeMP4H264Playback : ! 1 ,
nativeWebmVP8Playback : ! 1 ,
nativeWebmVP9Playback : ! 1
} ;
return t . mseFlvPlayback = e . supportMSEH264Playback ( ) , t . networkStreamIO = e . supportNetworkStreamIO ( ) , t . networkLoaderName = e . getNetworkLoaderTypeName ( ) , t . mseLiveFlvPlayback = t . mseFlvPlayback && t . networkStreamIO , t . nativeMP4H264Playback = e . supportNativeMediaPlayback ( 'video/mp4; codecs="avc1.42001E, mp4a.40.2"' ) , t . nativeWebmVP8Playback = e . supportNativeMediaPlayback ( 'video/webm; codecs="vp8.0, vorbis"' ) , t . nativeWebmVP9Playback = e . supportNativeMediaPlayback ( 'video/webm; codecs="vp9"' ) , t
}
} ] ) , e
} ( ) ;
n . default = u
} , {
"../config.js" : 5 ,
"../io/io-controller.js" : 23
} ] ,
7 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( ) {
i ( this , e ) , this . mimeType = null , this . duration = null , this . hasAudio = null , this . hasVideo = null , this . audioCodec = null , this . videoCodec = null , this . audioDataRate = null , this . videoDataRate = null , this . audioSampleRate = null , this . audioChannelCount = null , this . width = null , this . height = null , this . fps = null , this . profile = null , this . level = null , this . refFrames = null , this . chromaFormat = null , this . sarNum = null , this . sarDen = null , this . metadata = null , this . segments = null , this . segmentCount = null , this . hasKeyframesIndex = null , this . keyframesIndex = null
}
return r ( e , [ {
key : "isComplete" ,
value : function ( ) {
var e = ! 1 === this . hasAudio || ! 0 === this . hasAudio && null != this . audioCodec && null != this . audioSampleRate && null != this . audioChannelCount ,
t = ! 1 === this . hasVideo || ! 0 === this . hasVideo && null != this . videoCodec && null != this . width && null != this . height && null != this . fps && null != this . profile && null != this . level && null != this . refFrames && null != this . chromaFormat && null != this . sarNum && null != this . sarDen ;
return null != this . mimeType && null != this . duration && null != this . metadata && null != this . hasKeyframesIndex && e && t
}
} , {
key : "isSeekable" ,
value : function ( ) {
return ! 0 === this . hasKeyframesIndex
}
} , {
key : "getNearestKeyframe" ,
value : function ( e ) {
if ( null == this . keyframesIndex ) return null ;
var t = this . keyframesIndex ,
n = this . _search ( t . times , e ) ;
return {
index : n ,
milliseconds : t . times [ n ] ,
fileposition : t . filepositions [ n ]
}
}
} , {
key : "_search" ,
value : function ( e , t ) {
var n = 0 ,
i = e . length - 1 ,
r = 0 ,
s = 0 ,
a = i ;
for ( t < e [ 0 ] && ( n = 0 , s = a + 1 ) ; s <= a ; ) {
if ( ( r = s + Math . floor ( ( a - s ) / 2 ) ) === i || t >= e [ r ] && t < e [ r + 1 ] ) {
n = r ;
break
}
e [ r ] < t ? s = r + 1 : a = r - 1
}
return n
}
} ] ) , e
} ( ) ;
n . default = s
} , { } ] ,
8 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ;
n . SampleInfo = function e ( t , n , r , s , a ) {
i ( this , e ) , this . dts = t , this . pts = n , this . duration = r , this . originalDts = s , this . isSyncPoint = a , this . fileposition = null
} , n . MediaSegmentInfo = function ( ) {
function e ( ) {
i ( this , e ) , this . beginDts = 0 , this . endDts = 0 , this . beginPts = 0 , this . endPts = 0 , this . originalBeginDts = 0 , this . originalEndDts = 0 , this . syncPoints = [ ] , this . firstSample = null , this . lastSample = null
}
return r ( e , [ {
key : "appendSyncPoint" ,
value : function ( e ) {
e . isSyncPoint = ! 0 , this . syncPoints . push ( e )
}
} ] ) , e
} ( ) , n . IDRSampleList = function ( ) {
function e ( ) {
i ( this , e ) , this . _list = [ ]
}
return r ( e , [ {
key : "clear" ,
value : function ( ) {
this . _list = [ ]
}
} , {
key : "appendArray" ,
value : function ( e ) {
var t = this . _list ;
0 !== e . length && ( t . length > 0 && e [ 0 ] . originalDts < t [ t . length - 1 ] . originalDts && this . clear ( ) , Array . prototype . push . apply ( t , e ) )
}
} , {
key : "getLastSyncPointBeforeDts" ,
value : function ( e ) {
if ( 0 == this . _list . length ) return null ;
var t = this . _list ,
n = 0 ,
i = t . length - 1 ,
r = 0 ,
s = 0 ,
a = i ;
for ( e < t [ 0 ] . dts && ( n = 0 , s = a + 1 ) ; s <= a ; ) {
if ( ( r = s + Math . floor ( ( a - s ) / 2 ) ) === i || e >= t [ r ] . dts && e < t [ r + 1 ] . dts ) {
n = r ;
break
}
t [ r ] . dts < e ? s = r + 1 : a = r - 1
}
return this . _list [ n ]
}
} ] ) , e
} ( ) , n . MediaSegmentInfoList = function ( ) {
function e ( t ) {
i ( this , e ) , this . _type = t , this . _list = [ ] , this . _lastAppendLocation = - 1
}
return r ( e , [ {
key : "isEmpty" ,
value : function ( ) {
return 0 === this . _list . length
}
} , {
key : "clear" ,
value : function ( ) {
this . _list = [ ] , this . _lastAppendLocation = - 1
}
} , {
key : "_searchNearestSegmentBefore" ,
value : function ( e ) {
var t = this . _list ;
if ( 0 === t . length ) return - 2 ;
var n = t . length - 1 ,
i = 0 ,
r = 0 ,
s = n ,
a = 0 ;
if ( e < t [ 0 ] . originalBeginDts ) return a = - 1 ;
for ( ; r <= s ; ) {
if ( ( i = r + Math . floor ( ( s - r ) / 2 ) ) === n || e > t [ i ] . lastSample . originalDts && e < t [ i + 1 ] . originalBeginDts ) {
a = i ;
break
}
t [ i ] . originalBeginDts < e ? r = i + 1 : s = i - 1
}
return a
}
} , {
key : "_searchNearestSegmentAfter" ,
value : function ( e ) {
return this . _searchNearestSegmentBefore ( e ) + 1
}
} , {
key : "append" ,
value : function ( e ) {
var t = this . _list ,
n = e ,
i = this . _lastAppendLocation ,
r = 0 ; - 1 !== i && i < t . length && n . originalBeginDts >= t [ i ] . lastSample . originalDts && ( i === t . length - 1 || i < t . length - 1 && n . originalBeginDts < t [ i + 1 ] . originalBeginDts ) ? r = i + 1 : t . length > 0 && ( r = this . _searchNearestSegmentBefore ( n . originalBeginDts ) + 1 ) , this . _lastAppendLocation = r , this . _list . splice ( r , 0 , n )
}
} , {
key : "getLastSegmentBefore" ,
value : function ( e ) {
var t = this . _searchNearestSegmentBefore ( e ) ;
return t >= 0 ? this . _list [ t ] : null
}
} , {
key : "getLastSampleBefore" ,
value : function ( e ) {
var t = this . getLastSegmentBefore ( e ) ;
return null != t ? t . lastSample : null
}
} , {
key : "getLastSyncPointBefore" ,
value : function ( e ) {
for ( var t = this . _searchNearestSegmentBefore ( e ) , n = this . _list [ t ] . syncPoints ; 0 === n . length && t > 0 ; ) t -- , n = this . _list [ t ] . syncPoints ;
return n . length > 0 ? n [ n . length - 1 ] : null
}
} , {
key : "type" ,
get : function ( ) {
return this . _type
}
} , {
key : "length" ,
get : function ( ) {
return this . _list . length
}
} ] ) , e
} ( )
} , { } ] ,
9 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "events" ) ,
o = i ( a ) ,
u = e ( "../utils/logger.js" ) ,
l = i ( u ) ,
d = e ( "../utils/browser.js" ) ,
h = i ( d ) ,
f = e ( "./mse-events.js" ) ,
c = i ( f ) ,
_ = e ( "./media-segment-info.js" ) ,
m = e ( "../utils/exception.js" ) ,
p = function ( ) {
function e ( t ) {
r ( this , e ) , this . TAG = "MSEController" , this . _config = t , this . _emitter = new o . default , this . _config . isLive && void 0 == this . _config . autoCleanupSourceBuffer && ( this . _config . autoCleanupSourceBuffer = ! 0 ) , this . e = {
onSourceOpen : this . _onSourceOpen . bind ( this ) ,
onSourceEnded : this . _onSourceEnded . bind ( this ) ,
onSourceClose : this . _onSourceClose . bind ( this ) ,
onSourceBufferError : this . _onSourceBufferError . bind ( this ) ,
onSourceBufferUpdateEnd : this . _onSourceBufferUpdateEnd . bind ( this )
} , this . _mediaSource = null , this . _mediaSourceObjectURL = null , this . _mediaElement = null , this . _isBufferFull = ! 1 , this . _hasPendingEos = ! 1 , this . _requireSetMediaDuration = ! 1 , this . _pendingMediaDuration = 0 , this . _pendingSourceBufferInit = [ ] , this . _mimeTypes = {
video : null ,
audio : null
} , this . _sourceBuffers = {
video : null ,
audio : null
} , this . _lastInitSegments = {
video : null ,
audio : null
} , this . _pendingSegments = {
video : [ ] ,
audio : [ ]
} , this . _pendingRemoveRanges = {
video : [ ] ,
audio : [ ]
} , this . _idrList = new _ . IDRSampleList
}
return s ( e , [ {
key : "destroy" ,
value : function ( ) {
( this . _mediaElement || this . _mediaSource ) && this . detachMediaElement ( ) , this . e = null , this . _emitter . removeAllListeners ( ) , this . _emitter = null
}
} , {
key : "on" ,
value : function ( e , t ) {
this . _emitter . addListener ( e , t )
}
} , {
key : "off" ,
value : function ( e , t ) {
this . _emitter . removeListener ( e , t )
}
} , {
key : "attachMediaElement" ,
value : function ( e ) {
if ( this . _mediaSource ) throw new m . IllegalStateException ( "MediaSource has been attached to an HTMLMediaElement!" ) ;
var t = this . _mediaSource = new window . MediaSource ;
t . addEventListener ( "sourceopen" , this . e . onSourceOpen ) , t . addEventListener ( "sourceended" , this . e . onSourceEnded ) , t . addEventListener ( "sourceclose" , this . e . onSourceClose ) , this . _mediaElement = e , this . _mediaSourceObjectURL = window . URL . createObjectURL ( this . _mediaSource ) , e . src = this . _mediaSourceObjectURL
}
} , {
key : "detachMediaElement" ,
value : function ( ) {
if ( this . _mediaSource ) {
var e = this . _mediaSource ;
for ( var t in this . _sourceBuffers ) {
var n = this . _pendingSegments [ t ] ;
n . splice ( 0 , n . length ) , this . _pendingSegments [ t ] = null , this . _pendingRemoveRanges [ t ] = null , this . _lastInitSegments [ t ] = null ;
var i = this . _sourceBuffers [ t ] ;
i && ( "closed" !== e . readyState && ( e . removeSourceBuffer ( i ) , i . removeEventListener ( "error" , this . e . onSourceBufferError ) , i . removeEventListener ( "updateend" , this . e . onSourceBufferUpdateEnd ) ) , this . _mimeTypes [ t ] = null , this . _sourceBuffers [ t ] = null )
}
if ( "open" === e . readyState ) try {
e . endOfStream ( )
} catch ( e ) {
l . default . e ( this . TAG , e . message )
}
e . removeEventListener ( "sourceopen" , this . e . onSourceOpen ) , e . removeEventListener ( "sourceended" , this . e . onSourceEnded ) , e . removeEventListener ( "sourceclose" , this . e . onSourceClose ) , this . _pendingSourceBufferInit = [ ] , this . _isBufferFull = ! 1 , this . _idrList . clear ( ) , this . _mediaSource = null
}
this . _mediaElement && ( this . _mediaElement . src = "" , this . _mediaElement . removeAttribute ( "src" ) , this . _mediaElement = null ) , this . _mediaSourceObjectURL && ( window . URL . revokeObjectURL ( this . _mediaSourceObjectURL ) , this . _mediaSourceObjectURL = null )
}
} , {
key : "appendInitSegment" ,
value : function ( e , t ) {
if ( ! this . _mediaSource || "open" !== this . _mediaSource . readyState ) return this . _pendingSourceBufferInit . push ( e ) , void this . _pendingSegments [ e . type ] . push ( e ) ;
var n = e ,
i = "" + n . container ;
n . codec && n . codec . length > 0 && ( i += ";codecs=" + n . codec ) ;
var r = ! 1 ;
if ( l . default . v ( this . TAG , "Received Initialization Segment, mimeType: " + i ) , this . _lastInitSegments [ n . type ] = n , i !== this . _mimeTypes [ n . type ] ) {
if ( this . _mimeTypes [ n . type ] ) l . default . v ( this . TAG , "Notice: " + n . type + " mimeType changed, origin: " + this . _mimeTypes [ n . type ] + ", target: " + i ) ;
else {
r = ! 0 ;
try {
var s = this . _sourceBuffers [ n . type ] = this . _mediaSource . addSourceBuffer ( i ) ;
s . addEventListener ( "error" , this . e . onSourceBufferError ) , s . addEventListener ( "updateend" , this . e . onSourceBufferUpdateEnd )
} catch ( e ) {
return l . default . e ( this . TAG , e . message ) , void this . _emitter . emit ( c . default . ERROR , {
code : e . code ,
msg : e . message
} )
}
}
this . _mimeTypes [ n . type ] = i
}
t || this . _pendingSegments [ n . type ] . push ( n ) , r || this . _sourceBuffers [ n . type ] && ! this . _sourceBuffers [ n . type ] . updating && this . _doAppendSegments ( ) , h . default . safari && "audio/mpeg" === n . container && n . mediaDuration > 0 && ( this . _requireSetMediaDuration = ! 0 , this . _pendingMediaDuration = n . mediaDuration / 1e3 , this . _updateMediaSourceDuration ( ) )
}
} , {
key : "appendMediaSegment" ,
value : function ( e ) {
var t = e ;
this . _pendingSegments [ t . type ] . push ( t ) , this . _config . autoCleanupSourceBuffer && this . _needCleanupSourceBuffer ( ) && this . _doCleanupSourceBuffer ( ) ;
var n = this . _sourceBuffers [ t . type ] ;
! n || n . updating || this . _hasPendingRemoveRanges ( ) || this . _doAppendSegments ( )
}
} , {
key : "seek" ,
value : function ( e ) {
for ( var t in this . _sourceBuffers )
if ( this . _sourceBuffers [ t ] ) {
var n = this . _sourceBuffers [ t ] ;
if ( "open" === this . _mediaSource . readyState ) try {
n . abort ( )
} catch ( e ) {
l . default . e ( this . TAG , e . message )
}
this . _idrList . clear ( ) ;
var i = this . _pendingSegments [ t ] ;
if ( i . splice ( 0 , i . length ) , "closed" !== this . _mediaSource . readyState ) {
for ( var r = 0 ; r < n . buffered . length ; r ++ ) {
var s = n . buffered . start ( r ) ,
a = n . buffered . end ( r ) ;
this . _pendingRemoveRanges [ t ] . push ( {
start : s ,
end : a
} )
}
if ( n . updating || this . _doRemoveRanges ( ) , h . default . safari ) {
var o = this . _lastInitSegments [ t ] ;
o && ( this . _pendingSegments [ t ] . push ( o ) , n . updating || this . _doAppendSegments ( ) )
}
}
}
}
} , {
key : "endOfStream" ,
value : function ( ) {
var e = this . _mediaSource ,
t = this . _sourceBuffers ;
if ( ! e || "open" !== e . readyState ) return void ( e && "closed" === e . readyState && this . _hasPendingSegments ( ) && ( this . _hasPendingEos = ! 0 ) ) ;
t . video && t . video . updating || t . audio && t . audio . updating ? this . _hasPendingEos = ! 0 : ( this . _hasPendingEos = ! 1 , e . endOfStream ( ) )
}
} , {
key : "getNearestKeyframe" ,
value : function ( e ) {
return this . _idrList . getLastSyncPointBeforeDts ( e )
}
} , {
key : "_needCleanupSourceBuffer" ,
value : function ( ) {
if ( ! this . _config . autoCleanupSourceBuffer ) return ! 1 ;
var e = this . _mediaElement . currentTime ;
for ( var t in this . _sourceBuffers ) {
var n = this . _sourceBuffers [ t ] ;
if ( n ) {
var i = n . buffered ;
if ( i . length >= 1 && e - i . start ( 0 ) >= this . _config . autoCleanupMaxBackwardDuration ) return ! 0
}
}
return ! 1
}
} , {
key : "_doCleanupSourceBuffer" ,
value : function ( ) {
var e = this . _mediaElement . currentTime ;
for ( var t in this . _sourceBuffers ) {
var n = this . _sourceBuffers [ t ] ;
if ( n ) {
for ( var i = n . buffered , r = ! 1 , s = 0 ; s < i . length ; s ++ ) {
var a = i . start ( s ) ,
o = i . end ( s ) ;
if ( a <= e && e < o + 3 ) {
if ( e - a >= this . _config . autoCleanupMaxBackwardDuration ) {
r = ! 0 ;
var u = e - this . _config . autoCleanupMinBackwardDuration ;
this . _pendingRemoveRanges [ t ] . push ( {
start : a ,
end : u
} )
}
} else o < e && ( r = ! 0 , this . _pendingRemoveRanges [ t ] . push ( {
start : a ,
end : o
} ) )
}
r && ! n . updating && this . _doRemoveRanges ( )
}
}
}
} , {
key : "_updateMediaSourceDuration" ,
value : function ( ) {
var e = this . _sourceBuffers ;
if ( 0 !== this . _mediaElement . readyState && "open" === this . _mediaSource . readyState && ! ( e . video && e . video . updating || e . audio && e . audio . updating ) ) {
var t = this . _mediaSource . duration ,
n = this . _pendingMediaDuration ;
n > 0 && ( isNaN ( t ) || n > t ) && ( l . default . v ( this . TAG , "Update MediaSource duration from " + t + " to " + n ) , this . _mediaSource . duration = n ) , this . _requireSetMediaDuration = ! 1 , this . _pendingMediaDuration = 0
}
}
} , {
key : "_doRemoveRanges" ,
value : function ( ) {
for ( var e in this . _pendingRemoveRanges )
if ( this . _sourceBuffers [ e ] && ! this . _sourceBuffers [ e ] . updating )
for ( var t = this . _sourceBuffers [ e ] , n = this . _pendingRemoveRanges [ e ] ; n . length && ! t . updating ; ) {
var i = n . shift ( ) ;
t . remove ( i . start , i . end )
}
}
} , {
key : "_doAppendSegments" ,
value : function ( ) {
var e = this . _pendingSegments ;
for ( var t in e )
if ( this . _sourceBuffers [ t ] && ! this . _sourceBuffers [ t ] . updating && e [ t ] . length > 0 ) {
var n = e [ t ] . shift ( ) ;
if ( n . timestampOffset ) {
var i = this . _sourceBuffers [ t ] . timestampOffset ,
r = n . timestampOffset / 1e3 ,
s = Math . abs ( i - r ) ;
s > . 1 && ( l . default . v ( this . TAG , "Update MPEG audio timestampOffset from " + i + " to " + r ) , this . _sourceBuffers [ t ] . timestampOffset = r ) , delete n . timestampOffset
}
if ( ! n . data || 0 === n . data . byteLength ) continue ;
try {
this . _sourceBuffers [ t ] . appendBuffer ( n . data ) , this . _isBufferFull = ! 1 , "video" === t && n . hasOwnProperty ( "info" ) && this . _idrList . appendArray ( n . info . syncPoints )
} catch ( e ) {
this . _pendingSegments [ t ] . unshift ( n ) , 22 === e . code ? ( this . _isBufferFull || this . _emitter . emit ( c . default . BUFFER _FULL ) , this . _isBufferFull = ! 0 ) : ( l . default . e ( this . TAG , e . message ) , this . _emitter . emit ( c . default . ERROR , {
code : e . code ,
msg : e . message
} ) )
}
}
}
} , {
key : "_onSourceOpen" ,
value : function ( ) {
if ( l . default . v ( this . TAG , "MediaSource onSourceOpen" ) , this . _mediaSource . removeEventListener ( "sourceopen" , this . e . onSourceOpen ) , this . _pendingSourceBufferInit . length > 0 )
for ( var e = this . _pendingSourceBufferInit ; e . length ; ) {
var t = e . shift ( ) ;
this . appendInitSegment ( t , ! 0 )
}
this . _hasPendingSegments ( ) && this . _doAppendSegments ( ) , this . _emitter . emit ( c . default . SOURCE _OPEN )
}
} , {
key : "_onSourceEnded" ,
value : function ( ) {
l . default . v ( this . TAG , "MediaSource onSourceEnded" )
}
} , {
key : "_onSourceClose" ,
value : function ( ) {
l . default . v ( this . TAG , "MediaSource onSourceClose" ) , this . _mediaSource && null != this . e && ( this . _mediaSource . removeEventListener ( "sourceopen" , this . e . onSourceOpen ) , this . _mediaSource . removeEventListener ( "sourceended" , this . e . onSourceEnded ) , this . _mediaSource . removeEventListener ( "sourceclose" , this . e . onSourceClose ) )
}
} , {
key : "_hasPendingSegments" ,
value : function ( ) {
var e = this . _pendingSegments ;
return e . video . length > 0 || e . audio . length > 0
}
} , {
key : "_hasPendingRemoveRanges" ,
value : function ( ) {
var e = this . _pendingRemoveRanges ;
return e . video . length > 0 || e . audio . length > 0
}
} , {
key : "_onSourceBufferUpdateEnd" ,
value : function ( ) {
this . _requireSetMediaDuration ? this . _updateMediaSourceDuration ( ) : this . _hasPendingRemoveRanges ( ) ? this . _doRemoveRanges ( ) : this . _hasPendingSegments ( ) ? this . _doAppendSegments ( ) : this . _hasPendingEos && this . endOfStream ( ) , this . _emitter . emit ( c . default . UPDATE _END )
}
} , {
key : "_onSourceBufferError" ,
value : function ( e ) {
l . default . e ( this . TAG , "SourceBuffer Error: " + e )
}
} ] ) , e
} ( ) ;
n . default = p
} , {
"../utils/browser.js" : 39 ,
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./media-segment-info.js" : 8 ,
"./mse-events.js" : 10 ,
events : 2
} ] ,
10 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var i = {
ERROR : "error" ,
SOURCE _OPEN : "source_open" ,
UPDATE _END : "update_end" ,
BUFFER _FULL : "buffer_full"
} ;
n . default = i
} , { } ] ,
11 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "events" ) ,
o = i ( a ) ,
u = e ( "../utils/logger.js" ) ,
l = i ( u ) ,
d = e ( "../utils/logging-control.js" ) ,
h = i ( d ) ,
f = e ( "./transmuxing-controller.js" ) ,
c = i ( f ) ,
_ = e ( "./transmuxing-events.js" ) ,
m = i ( _ ) ,
p = e ( "./transmuxing-worker.js" ) ,
v = i ( p ) ,
g = e ( "./media-info.js" ) ,
y = i ( g ) ,
E = function ( ) {
function t ( n , i ) {
if ( r ( this , t ) , this . TAG = "Transmuxer" , this . _emitter = new o . default , i . enableWorker && "undefined" != typeof Worker ) try {
var s = e ( "webworkify" ) ;
this . _worker = s ( v . default ) , this . _workerDestroying = ! 1 , this . _worker . addEventListener ( "message" , this . _onWorkerMessage . bind ( this ) ) , this . _worker . postMessage ( {
cmd : "init" ,
param : [ n , i ]
} ) , this . e = {
onLoggingConfigChanged : this . _onLoggingConfigChanged . bind ( this )
} , h . default . registerListener ( this . e . onLoggingConfigChanged ) , this . _worker . postMessage ( {
cmd : "logging_config" ,
param : h . default . getConfig ( )
} )
} catch ( e ) {
l . default . e ( this . TAG , "Error while initialize transmuxing worker, fallback to inline transmuxing" ) , this . _worker = null , this . _controller = new c . default ( n , i )
} else this . _controller = new c . default ( n , i ) ;
if ( this . _controller ) {
var a = this . _controller ;
a . on ( m . default . IO _ERROR , this . _onIOError . bind ( this ) ) , a . on ( m . default . DEMUX _ERROR , this . _onDemuxError . bind ( this ) ) , a . on ( m . default . INIT _SEGMENT , this . _onInitSegment . bind ( this ) ) , a . on ( m . default . MEDIA _SEGMENT , this . _onMediaSegment . bind ( this ) ) , a . on ( m . default . LOADING _COMPLETE , this . _onLoadingComplete . bind ( this ) ) , a . on ( m . default . RECOVERED _EARLY _EOF , this . _onRecoveredEarlyEof . bind ( this ) ) , a . on ( m . default . MEDIA _INFO , this . _onMediaInfo . bind ( this ) ) , a . on ( m . default . STATISTICS _INFO , this . _onStatisticsInfo . bind ( this ) ) , a . on ( m . default . RECOMMEND _SEEKPOINT , this . _onRecommendSeekpoint . bind ( this ) )
}
}
return s ( t , [ {
key : "destroy" ,
value : function ( ) {
this . _worker ? this . _workerDestroying || ( this . _workerDestroying = ! 0 , this . _worker . postMessage ( {
cmd : "destroy"
} ) , h . default . removeListener ( this . e . onLoggingConfigChanged ) , this . e = null ) : ( this . _controller . destroy ( ) , this . _controller = null ) , this . _emitter . removeAllListeners ( ) , this . _emitter = null
}
} , {
key : "on" ,
value : function ( e , t ) {
this . _emitter . addListener ( e , t )
}
} , {
key : "off" ,
value : function ( e , t ) {
this . _emitter . removeListener ( e , t )
}
} , {
key : "hasWorker" ,
value : function ( ) {
return null != this . _worker
}
} , {
key : "open" ,
value : function ( ) {
this . _worker ? this . _worker . postMessage ( {
cmd : "start"
} ) : this . _controller . start ( )
}
} , {
key : "close" ,
value : function ( ) {
this . _worker ? this . _worker . postMessage ( {
cmd : "stop"
} ) : this . _controller . stop ( )
}
} , {
key : "seek" ,
value : function ( e ) {
this . _worker ? this . _worker . postMessage ( {
cmd : "seek" ,
param : e
} ) : this . _controller . seek ( e )
}
} , {
key : "pause" ,
value : function ( ) {
this . _worker ? this . _worker . postMessage ( {
cmd : "pause"
} ) : this . _controller . pause ( )
}
} , {
key : "resume" ,
value : function ( ) {
this . _worker ? this . _worker . postMessage ( {
cmd : "resume"
} ) : this . _controller . resume ( )
}
} , {
key : "_onInitSegment" ,
value : function ( e , t ) {
var n = this ;
Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( m . default . INIT _SEGMENT , e , t )
} )
}
} , {
key : "_onMediaSegment" ,
value : function ( e , t ) {
var n = this ;
Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( m . default . MEDIA _SEGMENT , e , t )
} )
}
} , {
key : "_onLoadingComplete" ,
value : function ( ) {
var e = this ;
Promise . resolve ( ) . then ( function ( ) {
e . _emitter . emit ( m . default . LOADING _COMPLETE )
} )
}
} , {
key : "_onRecoveredEarlyEof" ,
value : function ( ) {
var e = this ;
Promise . resolve ( ) . then ( function ( ) {
e . _emitter . emit ( m . default . RECOVERED _EARLY _EOF )
} )
}
} , {
key : "_onMediaInfo" ,
value : function ( e ) {
var t = this ;
Promise . resolve ( ) . then ( function ( ) {
t . _emitter . emit ( m . default . MEDIA _INFO , e )
} )
}
} , {
key : "_onStatisticsInfo" ,
value : function ( e ) {
var t = this ;
Promise . resolve ( ) . then ( function ( ) {
t . _emitter . emit ( m . default . STATISTICS _INFO , e )
} )
}
} , {
key : "_onIOError" ,
value : function ( e , t ) {
var n = this ;
Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( m . default . IO _ERROR , e , t )
} )
}
} , {
key : "_onDemuxError" ,
value : function ( e , t ) {
var n = this ;
Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( m . default . DEMUX _ERROR , e , t )
} )
}
} , {
key : "_onRecommendSeekpoint" ,
value : function ( e ) {
var t = this ;
Promise . resolve ( ) . then ( function ( ) {
t . _emitter . emit ( m . default . RECOMMEND _SEEKPOINT , e )
} )
}
} , {
key : "_onLoggingConfigChanged" ,
value : function ( e ) {
this . _worker && this . _worker . postMessage ( {
cmd : "logging_config" ,
param : e
} )
}
} , {
key : "_onWorkerMessage" ,
value : function ( e ) {
var t = e . data ,
n = t . data ;
if ( "destroyed" === t . msg || this . _workerDestroying ) return this . _workerDestroying = ! 1 , this . _worker . terminate ( ) , void ( this . _worker = null ) ;
switch ( t . msg ) {
case m . default . INIT _SEGMENT :
case m . default . MEDIA _SEGMENT :
this . _emitter . emit ( t . msg , n . type , n . data ) ;
break ;
case m . default . LOADING _COMPLETE :
case m . default . RECOVERED _EARLY _EOF :
this . _emitter . emit ( t . msg ) ;
break ;
case m . default . MEDIA _INFO :
Object . setPrototypeOf ( n , y . default . prototype ) , this . _emitter . emit ( t . msg , n ) ;
break ;
case m . default . STATISTICS _INFO :
this . _emitter . emit ( t . msg , n ) ;
break ;
case m . default . IO _ERROR :
case m . default . DEMUX _ERROR :
this . _emitter . emit ( t . msg , n . type , n . info ) ;
break ;
case m . default . RECOMMEND _SEEKPOINT :
this . _emitter . emit ( t . msg , n ) ;
break ;
case "logcat_callback" :
l . default . emitter . emit ( "log" , n . type , n . logcat )
}
}
} ] ) , t
} ( ) ;
n . default = E
} , {
"../utils/logger.js" : 41 ,
"../utils/logging-control.js" : 42 ,
"./media-info.js" : 7 ,
"./transmuxing-controller.js" : 12 ,
"./transmuxing-events.js" : 13 ,
"./transmuxing-worker.js" : 14 ,
events : 2 ,
webworkify : 4
} ] ,
12 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "events" ) ,
o = i ( a ) ,
u = e ( "../utils/logger.js" ) ,
l = i ( u ) ,
d = e ( "../utils/browser.js" ) ,
h = i ( d ) ,
f = e ( "./media-info.js" ) ,
c = i ( f ) ,
_ = e ( "../demux/flv-demuxer.js" ) ,
m = i ( _ ) ,
p = e ( "../remux/mp4-remuxer.js" ) ,
v = i ( p ) ,
g = e ( "../demux/demux-errors.js" ) ,
y = i ( g ) ,
E = e ( "../io/io-controller.js" ) ,
b = i ( E ) ,
S = e ( "./transmuxing-events.js" ) ,
k = i ( S ) ,
L = ( e ( "../io/loader.js" ) , function ( ) {
function e ( t , n ) {
r ( this , e ) , this . TAG = "TransmuxingController" , this . _emitter = new o . default , this . _config = n , t . segments || ( t . segments = [ {
duration : t . duration ,
filesize : t . filesize ,
url : t . url
} ] ) , "boolean" != typeof t . cors && ( t . cors = ! 0 ) , "boolean" != typeof t . withCredentials && ( t . withCredentials = ! 1 ) , this . _mediaDataSource = t , this . _currentSegmentIndex = 0 ;
var i = 0 ;
this . _mediaDataSource . segments . forEach ( function ( e ) {
e . timestampBase = i , i += e . duration , e . cors = t . cors , e . withCredentials = t . withCredentials , n . referrerPolicy && ( e . referrerPolicy = n . referrerPolicy )
} ) , isNaN ( i ) || this . _mediaDataSource . duration === i || ( this . _mediaDataSource . duration = i ) , this . _mediaInfo = null , this . _demuxer = null , this . _remuxer = null , this . _ioctl = null , this . _pendingSeekTime = null , this . _pendingResolveSeekPoint = null , this . _statisticsReporter = null
}
return s ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _mediaInfo = null , this . _mediaDataSource = null , this . _statisticsReporter && this . _disableStatisticsReporter ( ) , this . _ioctl && ( this . _ioctl . destroy ( ) , this . _ioctl = null ) , this . _demuxer && ( this . _demuxer . destroy ( ) , this . _demuxer = null ) , this . _remuxer && ( this . _remuxer . destroy ( ) , this . _remuxer = null ) , this . _emitter . removeAllListeners ( ) , this . _emitter = null
}
} , {
key : "on" ,
value : function ( e , t ) {
this . _emitter . addListener ( e , t )
}
} , {
key : "off" ,
value : function ( e , t ) {
this . _emitter . removeListener ( e , t )
}
} , {
key : "start" ,
value : function ( ) {
this . _loadSegment ( 0 ) , this . _enableStatisticsReporter ( )
}
} , {
key : "_loadSegment" ,
value : function ( e , t ) {
this . _currentSegmentIndex = e ;
var n = this . _mediaDataSource . segments [ e ] ,
i = this . _ioctl = new b . default ( n , this . _config , e ) ;
i . onError = this . _onIOException . bind ( this ) , i . onSeeked = this . _onIOSeeked . bind ( this ) , i . onComplete = this . _onIOComplete . bind ( this ) , i . onRedirect = this . _onIORedirect . bind ( this ) , i . onRecoveredEarlyEof = this . _onIORecoveredEarlyEof . bind ( this ) , t ? this . _demuxer . bindDataSource ( this . _ioctl ) : i . onDataArrival = this . _onInitChunkArrival . bind ( this ) , i . open ( t )
}
} , {
key : "stop" ,
value : function ( ) {
this . _internalAbort ( ) , this . _disableStatisticsReporter ( )
}
} , {
key : "_internalAbort" ,
value : function ( ) {
this . _ioctl && ( this . _ioctl . destroy ( ) , this . _ioctl = null )
}
} , {
key : "pause" ,
value : function ( ) {
this . _ioctl && this . _ioctl . isWorking ( ) && ( this . _ioctl . pause ( ) , this . _disableStatisticsReporter ( ) )
}
} , {
key : "resume" ,
value : function ( ) {
this . _ioctl && this . _ioctl . isPaused ( ) && ( this . _ioctl . resume ( ) , this . _enableStatisticsReporter ( ) )
}
} , {
key : "seek" ,
value : function ( e ) {
if ( null != this . _mediaInfo && this . _mediaInfo . isSeekable ( ) ) {
var t = this . _searchSegmentIndexContains ( e ) ;
if ( t === this . _currentSegmentIndex ) {
var n = this . _mediaInfo . segments [ t ] ;
if ( void 0 == n ) this . _pendingSeekTime = e ;
else {
var i = n . getNearestKeyframe ( e ) ;
this . _remuxer . seek ( i . milliseconds ) , this . _ioctl . seek ( i . fileposition ) , this . _pendingResolveSeekPoint = i . milliseconds
}
} else {
var r = this . _mediaInfo . segments [ t ] ;
if ( void 0 == r ) this . _pendingSeekTime = e , this . _internalAbort ( ) , this . _remuxer . seek ( ) , this . _remuxer . insertDiscontinuity ( ) , this . _loadSegment ( t ) ;
else {
var s = r . getNearestKeyframe ( e ) ;
this . _internalAbort ( ) , this . _remuxer . seek ( e ) , this . _remuxer . insertDiscontinuity ( ) , this . _demuxer . resetMediaInfo ( ) , this . _demuxer . timestampBase = this . _mediaDataSource . segments [ t ] . timestampBase , this . _loadSegment ( t , s . fileposition ) , this . _pendingResolveSeekPoint = s . milliseconds , this . _reportSegmentMediaInfo ( t )
}
}
this . _enableStatisticsReporter ( )
}
}
} , {
key : "_searchSegmentIndexContains" ,
value : function ( e ) {
for ( var t = this . _mediaDataSource . segments , n = t . length - 1 , i = 0 ; i < t . length ; i ++ )
if ( e < t [ i ] . timestampBase ) {
n = i - 1 ;
break
} return n
}
} , {
key : "_onInitChunkArrival" ,
value : function ( e , t ) {
var n = this ,
i = null ,
r = 0 ;
if ( t > 0 ) this . _demuxer . bindDataSource ( this . _ioctl ) , this . _demuxer . timestampBase = this . _mediaDataSource . segments [ this . _currentSegmentIndex ] . timestampBase , r = this . _demuxer . parseChunks ( e , t ) ;
else if ( ( i = m . default . probe ( e ) ) . match ) {
this . _demuxer = new m . default ( i , this . _config ) , this . _remuxer || ( this . _remuxer = new v . default ( this . _config ) ) ;
var s = this . _mediaDataSource ;
void 0 == s . duration || isNaN ( s . duration ) || ( this . _demuxer . overridedDuration = s . duration ) , "boolean" == typeof s . hasAudio && ( this . _demuxer . overridedHasAudio = s . hasAudio ) , "boolean" == typeof s . hasVideo && ( this . _demuxer . overridedHasVideo = s . hasVideo ) , this . _demuxer . timestampBase = s . segments [ this . _currentSegmentIndex ] . timestampBase , this . _demuxer . onError = this . _onDemuxException . bind ( this ) , this . _demuxer . onMediaInfo = this . _onMediaInfo . bind ( this ) , this . _remuxer . bindDataSource ( this . _demuxer . bindDataSource ( this . _ioctl ) ) , this . _remuxer . onInitSegment = this . _onRemuxerInitSegmentArrival . bind ( this ) , this . _remuxer . onMediaSegment = this . _onRemuxerMediaSegmentArrival . bind ( this ) , r = this . _demuxer . parseChunks ( e , t )
} else i = null , l . default . e ( this . TAG , "Non-FLV, Unsupported media type!" ) , Promise . resolve ( ) . then ( function ( ) {
n . _internalAbort ( )
} ) , this . _emitter . emit ( k . default . DEMUX _ERROR , y . default . FORMAT _UNSUPPORTED , "Non-FLV, Unsupported media type" ) , r = 0 ;
return r
}
} , {
key : "_onMediaInfo" ,
value : function ( e ) {
var t = this ;
null == this . _mediaInfo && ( this . _mediaInfo = Object . assign ( { } , e ) , this . _mediaInfo . keyframesIndex = null , this . _mediaInfo . segments = [ ] , this . _mediaInfo . segmentCount = this . _mediaDataSource . segments . length , Object . setPrototypeOf ( this . _mediaInfo , c . default . prototype ) ) ;
var n = Object . assign ( { } , e ) ;
Object . setPrototypeOf ( n , c . default . prototype ) , this . _mediaInfo . segments [ this . _currentSegmentIndex ] = n , this . _reportSegmentMediaInfo ( this . _currentSegmentIndex ) , null != this . _pendingSeekTime && Promise . resolve ( ) . then ( function ( ) {
var e = t . _pendingSeekTime ;
t . _pendingSeekTime = null , t . seek ( e )
} )
}
} , {
key : "_onIOSeeked" ,
value : function ( ) {
this . _remuxer . insertDiscontinuity ( )
}
} , {
key : "_onIOComplete" ,
value : function ( e ) {
var t = e ,
n = t + 1 ;
n < this . _mediaDataSource . segments . length ? ( this . _internalAbort ( ) , this . _remuxer . flushStashedSamples ( ) , this . _loadSegment ( n ) ) : ( this . _remuxer . flushStashedSamples ( ) , this . _emitter . emit ( k . default . LOADING _COMPLETE ) , this . _disableStatisticsReporter ( ) )
}
} , {
key : "_onIORedirect" ,
value : function ( e ) {
var t = this . _ioctl . extraData ;
this . _mediaDataSource . segments [ t ] . redirectedURL = e
}
} , {
key : "_onIORecoveredEarlyEof" ,
value : function ( ) {
this . _emitter . emit ( k . default . RECOVERED _EARLY _EOF )
}
} , {
key : "_onIOException" ,
value : function ( e , t ) {
l . default . e ( this . TAG , "IOException: type = " + e + ", code = " + t . code + ", msg = " + t . msg ) , this . _emitter . emit ( k . default . IO _ERROR , e , t ) , this . _disableStatisticsReporter ( )
}
} , {
key : "_onDemuxException" ,
value : function ( e , t ) {
l . default . e ( this . TAG , "DemuxException: type = " + e + ", info = " + t ) , this . _emitter . emit ( k . default . DEMUX _ERROR , e , t )
}
} , {
key : "_onRemuxerInitSegmentArrival" ,
value : function ( e , t ) {
this . _emitter . emit ( k . default . INIT _SEGMENT , e , t )
}
} , {
key : "_onRemuxerMediaSegmentArrival" ,
value : function ( e , t ) {
if ( null == this . _pendingSeekTime && ( this . _emitter . emit ( k . default . MEDIA _SEGMENT , e , t ) , null != this . _pendingResolveSeekPoint && "video" === e ) ) {
var n = t . info . syncPoints ,
i = this . _pendingResolveSeekPoint ;
this . _pendingResolveSeekPoint = null , h . default . safari && n . length > 0 && n [ 0 ] . originalDts === i && ( i = n [ 0 ] . pts ) , this . _emitter . emit ( k . default . RECOMMEND _SEEKPOINT , i )
}
}
} , {
key : "_enableStatisticsReporter" ,
value : function ( ) {
null == this . _statisticsReporter && ( this . _statisticsReporter = self . setInterval ( this . _reportStatisticsInfo . bind ( this ) , this . _config . statisticsInfoReportInterval ) )
}
} , {
key : "_disableStatisticsReporter" ,
value : function ( ) {
this . _statisticsReporter && ( self . clearInterval ( this . _statisticsReporter ) , this . _statisticsReporter = null )
}
} , {
key : "_reportSegmentMediaInfo" ,
value : function ( e ) {
var t = this . _mediaInfo . segments [ e ] ,
n = Object . assign ( { } , t ) ;
n . duration = this . _mediaInfo . duration , n . segmentCount = this . _mediaInfo . segmentCount , delete n . segments , delete n . keyframesIndex , this . _emitter . emit ( k . default . MEDIA _INFO , n )
}
} , {
key : "_reportStatisticsInfo" ,
value : function ( ) {
var e = { } ;
e . url = this . _ioctl . currentURL , e . hasRedirect = this . _ioctl . hasRedirect , e . hasRedirect && ( e . redirectedURL = this . _ioctl . currentRedirectedURL ) , e . speed = this . _ioctl . currentSpeed , e . loaderType = this . _ioctl . loaderType , e . currentSegmentIndex = this . _currentSegmentIndex , e . totalSegmentCount = this . _mediaDataSource . segments . length , this . _emitter . emit ( k . default . STATISTICS _INFO , e )
}
} ] ) , e
} ( ) ) ;
n . default = L
} , {
"../demux/demux-errors.js" : 16 ,
"../demux/flv-demuxer.js" : 18 ,
"../io/io-controller.js" : 23 ,
"../io/loader.js" : 24 ,
"../remux/mp4-remuxer.js" : 38 ,
"../utils/browser.js" : 39 ,
"../utils/logger.js" : 41 ,
"./media-info.js" : 7 ,
"./transmuxing-events.js" : 13 ,
events : 2
} ] ,
13 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var i = {
IO _ERROR : "io_error" ,
DEMUX _ERROR : "demux_error" ,
INIT _SEGMENT : "init_segment" ,
MEDIA _SEGMENT : "media_segment" ,
LOADING _COMPLETE : "loading_complete" ,
RECOVERED _EARLY _EOF : "recovered_early_eof" ,
MEDIA _INFO : "media_info" ,
STATISTICS _INFO : "statistics_info" ,
RECOMMEND _SEEKPOINT : "recommend_seekpoint"
} ;
n . default = i
} , { } ] ,
14 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = e ( "../utils/logger.js" ) ,
s = ( i ( r ) , e ( "../utils/logging-control.js" ) ) ,
a = i ( s ) ,
o = e ( "../utils/polyfill.js" ) ,
u = i ( o ) ,
l = e ( "./transmuxing-controller.js" ) ,
d = i ( l ) ,
h = e ( "./transmuxing-events.js" ) ,
f = i ( h ) ,
c = function ( e ) {
function t ( t , n ) {
var i = {
msg : f . default . INIT _SEGMENT ,
data : {
type : t ,
data : n
}
} ;
e . postMessage ( i , [ n . data ] )
}
function n ( t , n ) {
var i = {
msg : f . default . MEDIA _SEGMENT ,
data : {
type : t ,
data : n
}
} ;
e . postMessage ( i , [ n . data ] )
}
function i ( ) {
var t = {
msg : f . default . LOADING _COMPLETE
} ;
e . postMessage ( t )
}
function r ( ) {
var t = {
msg : f . default . RECOVERED _EARLY _EOF
} ;
e . postMessage ( t )
}
function s ( t ) {
var n = {
msg : f . default . MEDIA _INFO ,
data : t
} ;
e . postMessage ( n )
}
function o ( t ) {
var n = {
msg : f . default . STATISTICS _INFO ,
data : t
} ;
e . postMessage ( n )
}
function l ( t , n ) {
e . postMessage ( {
msg : f . default . IO _ERROR ,
data : {
type : t ,
info : n
}
} )
}
function h ( t , n ) {
e . postMessage ( {
msg : f . default . DEMUX _ERROR ,
data : {
type : t ,
info : n
}
} )
}
function c ( t ) {
e . postMessage ( {
msg : f . default . RECOMMEND _SEEKPOINT ,
data : t
} )
}
function _ ( t , n ) {
e . postMessage ( {
msg : "logcat_callback" ,
data : {
type : t ,
logcat : n
}
} )
}
var m = null ,
p = _ . bind ( this ) ;
u . default . install ( ) , e . addEventListener ( "message" , function ( u ) {
switch ( u . data . cmd ) {
case "init" :
m = new d . default ( u . data . param [ 0 ] , u . data . param [ 1 ] ) , m . on ( f . default . IO _ERROR , l . bind ( this ) ) , m . on ( f . default . DEMUX _ERROR , h . bind ( this ) ) , m . on ( f . default . INIT _SEGMENT , t . bind ( this ) ) , m . on ( f . default . MEDIA _SEGMENT , n . bind ( this ) ) , m . on ( f . default . LOADING _COMPLETE , i . bind ( this ) ) , m . on ( f . default . RECOVERED _EARLY _EOF , r . bind ( this ) ) , m . on ( f . default . MEDIA _INFO , s . bind ( this ) ) , m . on ( f . default . STATISTICS _INFO , o . bind ( this ) ) , m . on ( f . default . RECOMMEND _SEEKPOINT , c . bind ( this ) ) ;
break ;
case "destroy" :
m && ( m . destroy ( ) , m = null ) , e . postMessage ( {
msg : "destroyed"
} ) ;
break ;
case "start" :
m . start ( ) ;
break ;
case "stop" :
m . stop ( ) ;
break ;
case "seek" :
m . seek ( u . data . param ) ;
break ;
case "pause" :
m . pause ( ) ;
break ;
case "resume" :
m . resume ( ) ;
break ;
case "logging_config" :
var _ = u . data . param ;
a . default . applyConfig ( _ ) , ! 0 === _ . enableCallback ? a . default . addLogListener ( p ) : a . default . removeLogListener ( p )
}
} )
} ;
n . default = c
} , {
"../utils/logger.js" : 41 ,
"../utils/logging-control.js" : 42 ,
"../utils/polyfill.js" : 43 ,
"./transmuxing-controller.js" : 12 ,
"./transmuxing-events.js" : 13
} ] ,
15 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "../utils/logger.js" ) ,
o = i ( a ) ,
u = e ( "../utils/utf8-conv.js" ) ,
l = i ( u ) ,
d = e ( "../utils/exception.js" ) ,
h = function ( ) {
var e = new ArrayBuffer ( 2 ) ;
return new DataView ( e ) . setInt16 ( 0 , 256 , ! 0 ) , 256 === new Int16Array ( e ) [ 0 ]
} ( ) ,
f = function ( ) {
function e ( ) {
r ( this , e )
}
return s ( e , null , [ {
key : "parseScriptData" ,
value : function ( t , n , i ) {
var r = { } ;
try {
var s = e . parseValue ( t , n , i ) ,
a = e . parseValue ( t , n + s . size , i - s . size ) ;
r [ s . data ] = a . data
} catch ( e ) {
o . default . e ( "AMF" , e . toString ( ) )
}
return r
}
} , {
key : "parseObject" ,
value : function ( t , n , i ) {
if ( i < 3 ) throw new d . IllegalStateException ( "Data not enough when parse ScriptDataObject" ) ;
var r = e . parseString ( t , n , i ) ,
s = e . parseValue ( t , n + r . size , i - r . size ) ,
a = s . objectEnd ;
return {
data : {
name : r . data ,
value : s . data
} ,
size : r . size + s . size ,
objectEnd : a
}
}
} , {
key : "parseVariable" ,
value : function ( t , n , i ) {
return e . parseObject ( t , n , i )
}
} , {
key : "parseString" ,
value : function ( e , t , n ) {
if ( n < 2 ) throw new d . IllegalStateException ( "Data not enough when parse String" ) ;
var i = new DataView ( e , t , n ) ,
r = i . getUint16 ( 0 , ! h ) ,
s = void 0 ;
return s = r > 0 ? ( 0 , l . default ) ( new Uint8Array ( e , t + 2 , r ) ) : "" , {
data : s ,
size : 2 + r
}
}
} , {
key : "parseLongString" ,
value : function ( e , t , n ) {
if ( n < 4 ) throw new d . IllegalStateException ( "Data not enough when parse LongString" ) ;
var i = new DataView ( e , t , n ) ,
r = i . getUint32 ( 0 , ! h ) ,
s = void 0 ;
return s = r > 0 ? ( 0 , l . default ) ( new Uint8Array ( e , t + 4 , r ) ) : "" , {
data : s ,
size : 4 + r
}
}
} , {
key : "parseDate" ,
value : function ( e , t , n ) {
if ( n < 10 ) throw new d . IllegalStateException ( "Data size invalid when parse Date" ) ;
var i = new DataView ( e , t , n ) ,
r = i . getFloat64 ( 0 , ! h ) ;
return r += 60 * i . getInt16 ( 8 , ! h ) * 1e3 , {
data : new Date ( r ) ,
size : 10
}
}
} , {
key : "parseValue" ,
value : function ( t , n , i ) {
if ( i < 1 ) throw new d . IllegalStateException ( "Data not enough when parse Value" ) ;
var r = new DataView ( t , n , i ) ,
s = 1 ,
a = r . getUint8 ( 0 ) ,
u = void 0 ,
l = ! 1 ;
try {
switch ( a ) {
case 0 :
u = r . getFloat64 ( 1 , ! h ) , s += 8 ;
break ;
case 1 :
u = ! ! r . getUint8 ( 1 ) , s += 1 ;
break ;
case 2 :
var f = e . parseString ( t , n + 1 , i - 1 ) ;
u = f . data , s += f . size ;
break ;
case 3 :
u = { } ;
var c = 0 ;
for ( 9 == ( 16777215 & r . getUint32 ( i - 4 , ! h ) ) && ( c = 3 ) ; s < i - 4 ; ) {
var _ = e . parseObject ( t , n + s , i - s - c ) ;
if ( _ . objectEnd ) break ;
u [ _ . data . name ] = _ . data . value , s += _ . size
}
if ( s <= i - 3 ) {
9 === ( 16777215 & r . getUint32 ( s - 1 , ! h ) ) && ( s += 3 )
}
break ;
case 8 :
u = { } , s += 4 ;
var m = 0 ;
for ( 9 == ( 16777215 & r . getUint32 ( i - 4 , ! h ) ) && ( m = 3 ) ; s < i - 8 ; ) {
var p = e . parseVariable ( t , n + s , i - s - m ) ;
if ( p . objectEnd ) break ;
u [ p . data . name ] = p . data . value , s += p . size
}
if ( s <= i - 3 ) {
9 === ( 16777215 & r . getUint32 ( s - 1 , ! h ) ) && ( s += 3 )
}
break ;
case 9 :
u = void 0 , s = 1 , l = ! 0 ;
break ;
case 10 :
u = [ ] ;
var v = r . getUint32 ( 1 , ! h ) ;
s += 4 ;
for ( var g = 0 ; g < v ; g ++ ) {
var y = e . parseValue ( t , n + s , i - s ) ;
u . push ( y . data ) , s += y . size
}
break ;
case 11 :
var E = e . parseDate ( t , n + 1 , i - 1 ) ;
u = E . data , s += E . size ;
break ;
case 12 :
var b = e . parseString ( t , n + 1 , i - 1 ) ;
u = b . data , s += b . size ;
break ;
default :
s = i , o . default . w ( "AMF" , "Unsupported AMF value type " + a )
}
} catch ( e ) {
o . default . e ( "AMF" , e . toString ( ) )
}
return {
data : u ,
size : s ,
objectEnd : l
}
}
} ] ) , e
} ( ) ;
n . default = f
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"../utils/utf8-conv.js" : 44
} ] ,
16 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var i = {
OK : "OK" ,
FORMAT _ERROR : "FormatError" ,
FORMAT _UNSUPPORTED : "FormatUnsupported" ,
CODEC _UNSUPPORTED : "CodecUnsupported"
} ;
n . default = i
} , { } ] ,
17 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = e ( "../utils/exception.js" ) ,
a = function ( ) {
function e ( t ) {
i ( this , e ) , this . TAG = "ExpGolomb" , this . _buffer = t , this . _buffer _index = 0 , this . _total _bytes = t . byteLength , this . _total _bits = 8 * t . byteLength , this . _current _word = 0 , this . _current _word _bits _left = 0
}
return r ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _buffer = null
}
} , {
key : "_fillCurrentWord" ,
value : function ( ) {
var e = this . _total _bytes - this . _buffer _index ;
if ( e <= 0 ) throw new s . IllegalStateException ( "ExpGolomb: _fillCurrentWord() but no bytes available" ) ;
var t = Math . min ( 4 , e ) ,
n = new Uint8Array ( 4 ) ;
n . set ( this . _buffer . subarray ( this . _buffer _index , this . _buffer _index + t ) ) , this . _current _word = new DataView ( n . buffer ) . getUint32 ( 0 , ! 1 ) , this . _buffer _index += t , this . _current _word _bits _left = 8 * t
}
} , {
key : "readBits" ,
value : function ( e ) {
if ( e > 32 ) throw new s . InvalidArgumentException ( "ExpGolomb: readBits() bits exceeded max 32bits!" ) ;
if ( e <= this . _current _word _bits _left ) {
var t = this . _current _word >>> 32 - e ;
return this . _current _word <<= e , this . _current _word _bits _left -= e , t
}
var n = this . _current _word _bits _left ? this . _current _word : 0 ;
n >>>= 32 - this . _current _word _bits _left ;
var i = e - this . _current _word _bits _left ;
this . _fillCurrentWord ( ) ;
var r = Math . min ( i , this . _current _word _bits _left ) ,
a = this . _current _word >>> 32 - r ;
return this . _current _word <<= r , this . _current _word _bits _left -= r , n = n << r | a
}
} , {
key : "readBool" ,
value : function ( ) {
return 1 === this . readBits ( 1 )
}
} , {
key : "readByte" ,
value : function ( ) {
return this . readBits ( 8 )
}
} , {
key : "_skipLeadingZero" ,
value : function ( ) {
var e = void 0 ;
for ( e = 0 ; e < this . _current _word _bits _left ; e ++ )
if ( 0 != ( this . _current _word & 2147483648 >>> e ) ) return this . _current _word <<= e , this . _current _word _bits _left -= e , e ;
return this . _fillCurrentWord ( ) , e + this . _skipLeadingZero ( )
}
} , {
key : "readUEG" ,
value : function ( ) {
var e = this . _skipLeadingZero ( ) ;
return this . readBits ( e + 1 ) - 1
}
} , {
key : "readSEG" ,
value : function ( ) {
var e = this . readUEG ( ) ;
return 1 & e ? e + 1 >>> 1 : - 1 * ( e >>> 1 )
}
} ] ) , e
} ( ) ;
n . default = a
} , {
"../utils/exception.js" : 40
} ] ,
18 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function s ( e , t ) {
return e [ t ] << 24 | e [ t + 1 ] << 16 | e [ t + 2 ] << 8 | e [ t + 3 ]
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var a = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
o = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
u = e ( "../utils/logger.js" ) ,
l = i ( u ) ,
d = e ( "./amf-parser.js" ) ,
h = i ( d ) ,
f = e ( "./sps-parser.js" ) ,
c = i ( f ) ,
_ = e ( "./demux-errors.js" ) ,
m = i ( _ ) ,
p = e ( "../core/media-info.js" ) ,
v = i ( p ) ,
g = e ( "../utils/exception.js" ) ,
y = function ( ) {
function e ( t , n ) {
r ( this , e ) , this . TAG = "FLVDemuxer" , this . _config = n , this . _onError = null , this . _onMediaInfo = null , this . _onTrackMetadata = null , this . _onDataAvailable = null , this . _dataOffset = t . dataOffset , this . _firstParse = ! 0 , this . _dispatch = ! 1 , this . _hasAudio = t . hasAudioTrack , this . _hasVideo = t . hasVideoTrack , this . _hasAudioFlagOverrided = ! 1 , this . _hasVideoFlagOverrided = ! 1 , this . _audioInitialMetadataDispatched = ! 1 , this . _videoInitialMetadataDispatched = ! 1 , this . _mediaInfo = new v . default , this . _mediaInfo . hasAudio = this . _hasAudio , this . _mediaInfo . hasVideo = this . _hasVideo , this . _metadata = null , this . _audioMetadata = null , this . _videoMetadata = null , this . _naluLengthSize = 4 , this . _timestampBase = 0 , this . _timescale = 1e3 , this . _duration = 0 , this . _durationOverrided = ! 1 , this . _referenceFrameRate = {
fixed : ! 0 ,
fps : 23.976 ,
fps _num : 23976 ,
fps _den : 1e3
} , this . _flvSoundRateTable = [ 5500 , 11025 , 22050 , 44100 , 48e3 ] , this . _mpegSamplingRates = [ 96e3 , 88200 , 64e3 , 48e3 , 44100 , 32e3 , 24e3 , 22050 , 16e3 , 12e3 , 11025 , 8e3 , 7350 ] , this . _mpegAudioV10SampleRateTable = [ 44100 , 48e3 , 32e3 , 0 ] , this . _mpegAudioV20SampleRateTable = [ 22050 , 24e3 , 16e3 , 0 ] , this . _mpegAudioV25SampleRateTable = [ 11025 , 12e3 , 8e3 , 0 ] , this . _mpegAudioL1BitRateTable = [ 0 , 32 , 64 , 96 , 128 , 160 , 192 , 224 , 256 , 288 , 320 , 352 , 384 , 416 , 448 , - 1 ] , this . _mpegAudioL2BitRateTable = [ 0 , 32 , 48 , 56 , 64 , 80 , 96 , 112 , 128 , 160 , 192 , 224 , 256 , 320 , 384 , - 1 ] , this . _mpegAudioL3BitRateTable = [ 0 , 32 , 40 , 48 , 56 , 64 , 80 , 96 , 112 , 128 , 160 , 192 , 224 , 256 , 320 , - 1 ] , this . _videoTrack = {
type : "video" ,
id : 1 ,
sequenceNumber : 0 ,
samples : [ ] ,
length : 0
} , this . _audioTrack = {
type : "audio" ,
id : 2 ,
sequenceNumber : 0 ,
samples : [ ] ,
length : 0
} , this . _littleEndian = function ( ) {
var e = new ArrayBuffer ( 2 ) ;
return new DataView ( e ) . setInt16 ( 0 , 256 , ! 0 ) , 256 === new Int16Array ( e ) [ 0 ]
} ( )
}
return o ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _mediaInfo = null , this . _metadata = null , this . _audioMetadata = null , this . _videoMetadata = null , this . _videoTrack = null , this . _audioTrack = null , this . _onError = null , this . _onMediaInfo = null , this . _onTrackMetadata = null , this . _onDataAvailable = null
}
} , {
key : "bindDataSource" ,
value : function ( e ) {
return e . onDataArrival = this . parseChunks . bind ( this ) , this
}
} , {
key : "resetMediaInfo" ,
value : function ( ) {
this . _mediaInfo = new v . default
}
} , {
key : "_isInitialMetadataDispatched" ,
value : function ( ) {
return this . _hasAudio && this . _hasVideo ? this . _audioInitialMetadataDispatched && this . _videoInitialMetadataDispatched : this . _hasAudio && ! this . _hasVideo ? this . _audioInitialMetadataDispatched : ! ( this . _hasAudio || ! this . _hasVideo ) && this . _videoInitialMetadataDispatched
}
} , {
key : "parseChunks" ,
value : function ( t , n ) {
if ( ! ( this . _onError && this . _onMediaInfo && this . _onTrackMetadata && this . _onDataAvailable ) ) throw new g . IllegalStateException ( "Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified" ) ;
var i = 0 ,
r = this . _littleEndian ;
if ( 0 === n ) {
if ( ! ( t . byteLength > 13 ) ) return 0 ;
i = e . probe ( t ) . dataOffset
}
if ( this . _firstParse ) {
this . _firstParse = ! 1 , n + i !== this . _dataOffset && l . default . w ( this . TAG , "First time parsing but chunk byteStart invalid!" ) ;
0 !== new DataView ( t , i ) . getUint32 ( 0 , ! r ) && l . default . w ( this . TAG , "PrevTagSize0 !== 0 !!!" ) , i += 4
}
for ( ; i < t . byteLength ; ) {
this . _dispatch = ! 0 ;
var s = new DataView ( t , i ) ;
if ( i + 11 + 4 > t . byteLength ) break ;
var a = s . getUint8 ( 0 ) ,
o = 16777215 & s . getUint32 ( 0 , ! r ) ;
if ( i + 11 + o + 4 > t . byteLength ) break ;
if ( 8 === a || 9 === a || 18 === a ) {
var u = s . getUint8 ( 4 ) ,
d = s . getUint8 ( 5 ) ,
h = s . getUint8 ( 6 ) ,
f = s . getUint8 ( 7 ) ,
c = h | d << 8 | u << 16 | f << 24 ;
0 !== ( 16777215 & s . getUint32 ( 7 , ! r ) ) && l . default . w ( this . TAG , "Meet tag which has StreamID != 0!" ) ;
var _ = i + 11 ;
switch ( a ) {
case 8 :
this . _parseAudioData ( t , _ , o , c ) ;
break ;
case 9 :
this . _parseVideoData ( t , _ , o , c , n + i ) ;
break ;
case 18 :
this . _parseScriptData ( t , _ , o )
}
var m = s . getUint32 ( 11 + o , ! r ) ;
m !== 11 + o && l . default . w ( this . TAG , "Invalid PrevTagSize " + m ) , i += 11 + o + 4
} else l . default . w ( this . TAG , "Unsupported tag type " + a + ", skipped" ) , i += 11 + o + 4
}
return this . _isInitialMetadataDispatched ( ) && this . _dispatch && ( this . _audioTrack . length || this . _videoTrack . length ) && this . _onDataAvailable ( this . _audioTrack , this . _videoTrack ) , i
}
} , {
key : "_parseScriptData" ,
value : function ( e , t , n ) {
var i = h . default . parseScriptData ( e , t , n ) ;
if ( i . hasOwnProperty ( "onMetaData" ) ) {
if ( null == i . onMetaData || "object" !== a ( i . onMetaData ) ) return void l . default . w ( this . TAG , "Invalid onMetaData structure!" ) ;
this . _metadata && l . default . w ( this . TAG , "Found another onMetaData tag!" ) , this . _metadata = i ;
var r = this . _metadata . onMetaData ;
if ( "boolean" == typeof r . hasAudio && ! 1 === this . _hasAudioFlagOverrided && ( this . _hasAudio = r . hasAudio , this . _mediaInfo . hasAudio = this . _hasAudio ) , "boolean" == typeof r . hasVideo && ! 1 === this . _hasVideoFlagOverrided && ( this . _hasVideo = r . hasVideo , this . _mediaInfo . hasVideo = this . _hasVideo ) , "number" == typeof r . audiodatarate && ( this . _mediaInfo . audioDataRate = r . audiodatarate ) , "number" == typeof r . videodatarate && ( this . _mediaInfo . videoDataRate = r . videodatarate ) , "number" == typeof r . width && ( this . _mediaInfo . width = r . width ) , "number" == typeof r . height && ( this . _mediaInfo . height = r . height ) , "number" == typeof r . duration ) {
if ( ! this . _durationOverrided ) {
var s = Math . floor ( r . duration * this . _timescale ) ;
this . _duration = s , this . _mediaInfo . duration = s
}
} else this . _mediaInfo . duration = 0 ;
if ( "number" == typeof r . framerate ) {
var o = Math . floor ( 1e3 * r . framerate ) ;
if ( o > 0 ) {
var u = o / 1e3 ;
this . _referenceFrameRate . fixed = ! 0 , this . _referenceFrameRate . fps = u , this . _referenceFrameRate . fps _num = o , this . _referenceFrameRate . fps _den = 1e3 , this . _mediaInfo . fps = u
}
}
if ( "object" === a ( r . keyframes ) ) {
this . _mediaInfo . hasKeyframesIndex = ! 0 ;
var d = r . keyframes ;
this . _mediaInfo . keyframesIndex = this . _parseKeyframesIndex ( d ) , r . keyframes = null
} else this . _mediaInfo . hasKeyframesIndex = ! 1 ;
this . _dispatch = ! 1 , this . _mediaInfo . metadata = r , l . default . v ( this . TAG , "Parsed onMetaData" ) , this . _mediaInfo . isComplete ( ) && this . _onMediaInfo ( this . _mediaInfo )
}
}
} , {
key : "_parseKeyframesIndex" ,
value : function ( e ) {
for ( var t = [ ] , n = [ ] , i = 1 ; i < e . times . length ; i ++ ) {
var r = this . _timestampBase + Math . floor ( 1e3 * e . times [ i ] ) ;
t . push ( r ) , n . push ( e . filepositions [ i ] )
}
return {
times : t ,
filepositions : n
}
}
} , {
key : "_parseAudioData" ,
value : function ( e , t , n , i ) {
if ( n <= 1 ) return void l . default . w ( this . TAG , "Flv: Invalid audio packet, missing SoundData payload!" ) ;
if ( ! 0 !== this . _hasAudioFlagOverrided || ! 1 !== this . _hasAudio ) {
var r = ( this . _littleEndian , new DataView ( e , t , n ) ) ,
s = r . getUint8 ( 0 ) ,
a = s >>> 4 ;
if ( 2 !== a && 10 !== a ) return void this . _onError ( m . default . CODEC _UNSUPPORTED , "Flv: Unsupported audio codec idx: " + a ) ;
var o = 0 ,
u = ( 12 & s ) >>> 2 ;
if ( ! ( u >= 0 && u <= 4 ) ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Invalid audio sample rate idx: " + u ) ;
o = this . _flvSoundRateTable [ u ] ;
var d = 1 & s ,
h = this . _audioMetadata ,
f = this . _audioTrack ;
if ( h || ( ! 1 === this . _hasAudio && ! 1 === this . _hasAudioFlagOverrided && ( this . _hasAudio = ! 0 , this . _mediaInfo . hasAudio = ! 0 ) , h = this . _audioMetadata = { } , h . type = "audio" , h . id = f . id , h . timescale = this . _timescale , h . duration = this . _duration , h . audioSampleRate = o , h . channelCount = 0 === d ? 1 : 2 ) , 10 === a ) {
var c = this . _parseAACAudioData ( e , t + 1 , n - 1 ) ;
if ( void 0 == c ) return ;
if ( 0 === c . packetType ) {
h . config && l . default . w ( this . TAG , "Found another AudioSpecificConfig!" ) ;
var _ = c . data ;
h . audioSampleRate = _ . samplingRate , h . channelCount = _ . channelCount , h . codec = _ . codec , h . originalCodec = _ . originalCodec , h . config = _ . config , h . refSampleDuration = 1024 / h . audioSampleRate * h . timescale , l . default . v ( this . TAG , "Parsed AudioSpecificConfig" ) , this . _isInitialMetadataDispatched ( ) ? this . _dispatch && ( this . _audioTrack . length || this . _videoTrack . length ) && this . _onDataAvailable ( this . _audioTrack , this . _videoTrack ) : this . _audioInitialMetadataDispatched = ! 0 , this . _dispatch = ! 1 , this . _onTrackMetadata ( "audio" , h ) ;
var p = this . _mediaInfo ;
p . audioCodec = h . originalCodec , p . audioSampleRate = h . audioSampleRate , p . audioChannelCount = h . channelCount , p . hasVideo ? null != p . videoCodec && ( p . mimeType = 'video/x-flv; codecs="' + p . videoCodec + "," + p . audioCodec + '"' ) : p . mimeType = 'video/x-flv; codecs="' + p . audioCodec + '"' , p . isComplete ( ) && this . _onMediaInfo ( p )
} else if ( 1 === c . packetType ) {
var v = this . _timestampBase + i ,
g = {
unit : c . data ,
length : c . data . byteLength ,
dts : v ,
pts : v
} ;
f . samples . push ( g ) , f . length += c . data . length
} else l . default . e ( this . TAG , "Flv: Unsupported AAC data type " + c . packetType )
} else if ( 2 === a ) {
if ( ! h . codec ) {
var y = this . _parseMP3AudioData ( e , t + 1 , n - 1 , ! 0 ) ;
if ( void 0 == y ) return ;
h . audioSampleRate = y . samplingRate , h . channelCount = y . channelCount , h . codec = y . codec , h . originalCodec = y . originalCodec , h . refSampleDuration = 1152 / h . audioSampleRate * h . timescale , l . default . v ( this . TAG , "Parsed MPEG Audio Frame Header" ) , this . _audioInitialMetadataDispatched = ! 0 , this . _onTrackMetadata ( "audio" , h ) ;
var E = this . _mediaInfo ;
E . audioCodec = h . codec , E . audioSampleRate = h . audioSampleRate , E . audioChannelCount = h . channelCount , E . audioDataRate = y . bitRate , E . hasVideo ? null != E . videoCodec && ( E . mimeType = 'video/x-flv; codecs="' + E . videoCodec + "," + E . audioCodec + '"' ) : E . mimeType = 'video/x-flv; codecs="' + E . audioCodec + '"' , E . isComplete ( ) && this . _onMediaInfo ( E )
}
var b = this . _parseMP3AudioData ( e , t + 1 , n - 1 , ! 1 ) ;
if ( void 0 == b ) return ;
var S = this . _timestampBase + i ,
k = {
unit : b ,
length : b . byteLength ,
dts : S ,
pts : S
} ;
f . samples . push ( k ) , f . length += b . length
}
}
}
} , {
key : "_parseAACAudioData" ,
value : function ( e , t , n ) {
if ( n <= 1 ) return void l . default . w ( this . TAG , "Flv: Invalid AAC packet, missing AACPacketType or/and Data!" ) ;
var i = { } ,
r = new Uint8Array ( e , t , n ) ;
return i . packetType = r [ 0 ] , 0 === r [ 0 ] ? i . data = this . _parseAACAudioSpecificConfig ( e , t + 1 , n - 1 ) : i . data = r . subarray ( 1 ) , i
}
} , {
key : "_parseAACAudioSpecificConfig" ,
value : function ( e , t , n ) {
var i = new Uint8Array ( e , t , n ) ,
r = null ,
s = 0 ,
a = 0 ,
o = 0 ,
u = null ;
if ( s = a = i [ 0 ] >>> 3 , ( o = ( 7 & i [ 0 ] ) << 1 | i [ 1 ] >>> 7 ) < 0 || o >= this . _mpegSamplingRates . length ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: AAC invalid sampling frequency index!" ) ;
var l = this . _mpegSamplingRates [ o ] ,
d = ( 120 & i [ 1 ] ) >>> 3 ;
if ( d < 0 || d >= 8 ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: AAC invalid channel configuration" ) ;
5 === s && ( u = ( 7 & i [ 1 ] ) << 1 | i [ 2 ] >>> 7 , i [ 2 ] ) ;
var h = self . navigator . userAgent . toLowerCase ( ) ;
return - 1 !== h . indexOf ( "firefox" ) ? o >= 6 ? ( s = 5 , r = new Array ( 4 ) , u = o - 3 ) : ( s = 2 , r = new Array ( 2 ) , u = o ) : - 1 !== h . indexOf ( "android" ) ? ( s = 2 , r = new Array ( 2 ) , u = o ) : ( s = 5 , u = o , r = new Array ( 4 ) , o >= 6 ? u = o - 3 : 1 === d && ( s = 2 , r = new Array ( 2 ) , u = o ) ) , r [ 0 ] = s << 3 , r [ 0 ] |= ( 15 & o ) >>> 1 , r [ 1 ] = ( 15 & o ) << 7 , r [ 1 ] |= ( 15 & d ) << 3 , 5 === s && ( r [ 1 ] |= ( 15 & u ) >>> 1 , r [ 2 ] = ( 1 & u ) << 7 , r [ 2 ] |= 8 , r [ 3 ] = 0 ) , {
config : r ,
samplingRate : l ,
channelCount : d ,
codec : "mp4a.40." + s ,
originalCodec : "mp4a.40." + a
}
}
} , {
key : "_parseMP3AudioData" ,
value : function ( e , t , n , i ) {
if ( n < 4 ) return void l . default . w ( this . TAG , "Flv: Invalid MP3 packet, header missing!" ) ;
var r = ( this . _littleEndian , new Uint8Array ( e , t , n ) ) ,
s = null ;
if ( i ) {
if ( 255 !== r [ 0 ] ) return ;
var a = r [ 1 ] >>> 3 & 3 ,
o = ( 6 & r [ 1 ] ) >> 1 ,
u = ( 240 & r [ 2 ] ) >>> 4 ,
d = ( 12 & r [ 2 ] ) >>> 2 ,
h = r [ 3 ] >>> 6 & 3 ,
f = 3 !== h ? 2 : 1 ,
c = 0 ,
_ = 0 ;
switch ( a ) {
case 0 :
c = this . _mpegAudioV25SampleRateTable [ d ] ;
break ;
case 2 :
c = this . _mpegAudioV20SampleRateTable [ d ] ;
break ;
case 3 :
c = this . _mpegAudioV10SampleRateTable [ d ]
}
switch ( o ) {
case 1 :
34 , u < this . _mpegAudioL3BitRateTable . length && ( _ = this . _mpegAudioL3BitRateTable [ u ] ) ;
break ;
case 2 :
33 , u < this . _mpegAudioL2BitRateTable . length && ( _ = this . _mpegAudioL2BitRateTable [ u ] ) ;
break ;
case 3 :
32 , u < this . _mpegAudioL1BitRateTable . length && ( _ = this . _mpegAudioL1BitRateTable [ u ] )
}
s = {
bitRate : _ ,
samplingRate : c ,
channelCount : f ,
codec : "mp3" ,
originalCodec : "mp3"
}
} else s = r ;
return s
}
} , {
key : "_parseVideoData" ,
value : function ( e , t , n , i , r ) {
if ( n <= 1 ) return void l . default . w ( this . TAG , "Flv: Invalid video packet, missing VideoData payload!" ) ;
if ( ! 0 !== this . _hasVideoFlagOverrided || ! 1 !== this . _hasVideo ) {
var s = new Uint8Array ( e , t , n ) [ 0 ] ,
a = ( 240 & s ) >>> 4 ,
o = 15 & s ;
if ( 7 !== o ) return void this . _onError ( m . default . CODEC _UNSUPPORTED , "Flv: Unsupported codec in video frame: " + o ) ;
this . _parseAVCVideoPacket ( e , t + 1 , n - 1 , i , r , a )
}
}
} , {
key : "_parseAVCVideoPacket" ,
value : function ( e , t , n , i , r , s ) {
if ( n < 4 ) return void l . default . w ( this . TAG , "Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime" ) ;
var a = this . _littleEndian ,
o = new DataView ( e , t , n ) ,
u = o . getUint8 ( 0 ) ,
d = 16777215 & o . getUint32 ( 0 , ! a ) ,
h = d << 8 >> 8 ;
if ( 0 === u ) this . _parseAVCDecoderConfigurationRecord ( e , t + 4 , n - 4 ) ;
else if ( 1 === u ) this . _parseAVCVideoData ( e , t + 4 , n - 4 , i , r , s , h ) ;
else if ( 2 !== u ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Invalid video packet type " + u )
}
} , {
key : "_parseAVCDecoderConfigurationRecord" ,
value : function ( e , t , n ) {
if ( n < 7 ) return void l . default . w ( this . TAG , "Flv: Invalid AVCDecoderConfigurationRecord, lack of data!" ) ;
var i = this . _videoMetadata ,
r = this . _videoTrack ,
s = this . _littleEndian ,
a = new DataView ( e , t , n ) ;
i ? void 0 !== i . avcc && l . default . w ( this . TAG , "Found another AVCDecoderConfigurationRecord!" ) : ( ! 1 === this . _hasVideo && ! 1 === this . _hasVideoFlagOverrided && ( this . _hasVideo = ! 0 , this . _mediaInfo . hasVideo = ! 0 ) , i = this . _videoMetadata = { } , i . type = "video" , i . id = r . id , i . timescale = this . _timescale , i . duration = this . _duration ) ;
var o = a . getUint8 ( 0 ) ,
u = a . getUint8 ( 1 ) ;
a . getUint8 ( 2 ) , a . getUint8 ( 3 ) ;
if ( 1 !== o || 0 === u ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Invalid AVCDecoderConfigurationRecord" ) ;
if ( this . _naluLengthSize = 1 + ( 3 & a . getUint8 ( 4 ) ) , 3 !== this . _naluLengthSize && 4 !== this . _naluLengthSize ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Strange NaluLengthSizeMinusOne: " + ( this . _naluLengthSize - 1 ) ) ;
var d = 31 & a . getUint8 ( 5 ) ;
if ( 0 === d ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Invalid AVCDecoderConfigurationRecord: No SPS" ) ;
d > 1 && l . default . w ( this . TAG , "Flv: Strange AVCDecoderConfigurationRecord: SPS Count = " + d ) ;
for ( var h = 6 , f = 0 ; f < d ; f ++ ) {
var _ = a . getUint16 ( h , ! s ) ;
if ( h += 2 , 0 !== _ ) {
var p = new Uint8Array ( e , t + h , _ ) ;
h += _ ;
var v = c . default . parseSPS ( p ) ;
if ( 0 === f ) {
i . codecWidth = v . codec _size . width , i . codecHeight = v . codec _size . height , i . presentWidth = v . present _size . width , i . presentHeight = v . present _size . height , i . profile = v . profile _string , i . level = v . level _string , i . bitDepth = v . bit _depth , i . chromaFormat = v . chroma _format , i . sarRatio = v . sar _ratio , i . frameRate = v . frame _rate , ! 1 !== v . frame _rate . fixed && 0 !== v . frame _rate . fps _num && 0 !== v . frame _rate . fps _den || ( i . frameRate = this . _referenceFrameRate ) ;
var g = i . frameRate . fps _den ,
y = i . frameRate . fps _num ;
i . refSampleDuration = i . timescale * ( g / y ) ;
for ( var E = p . subarray ( 1 , 4 ) , b = "avc1." , S = 0 ; S < 3 ; S ++ ) {
var k = E [ S ] . toString ( 16 ) ;
k . length < 2 && ( k = "0" + k ) , b += k
}
i . codec = b ;
var L = this . _mediaInfo ;
L . width = i . codecWidth , L . height = i . codecHeight , L . fps = i . frameRate . fps , L . profile = i . profile , L . level = i . level , L . refFrames = v . ref _frames , L . chromaFormat = v . chroma _format _string , L . sarNum = i . sarRatio . width , L . sarDen = i . sarRatio . height , L . videoCodec = b , L . hasAudio ? null != L . audioCodec && ( L . mimeType = 'video/x-flv; codecs="' + L . videoCodec + "," + L . audioCodec + '"' ) : L . mimeType = 'video/x-flv; codecs="' + L . videoCodec + '"' , L . isComplete ( ) && this . _onMediaInfo ( L )
}
}
}
var w = a . getUint8 ( h ) ;
if ( 0 === w ) return void this . _onError ( m . default . FORMAT _ERROR , "Flv: Invalid AVCDecoderConfigurationRecord: No PPS" ) ;
w > 1 && l . default . w ( this . TAG , "Flv: Strange AVCDecoderConfigurationRecord: PPS Count = " + w ) , h ++ ;
for ( var R = 0 ; R < w ; R ++ ) {
var A = a . getUint16 ( h , ! s ) ;
h += 2 , 0 !== A && ( h += A )
}
i . avcc = new Uint8Array ( n ) , i . avcc . set ( new Uint8Array ( e , t , n ) , 0 ) , l . default . v ( this . TAG , "Parsed AVCDecoderConfigurationRecord" ) , this . _isInitialMetadataDispatched ( ) ? this . _dispatch && ( this . _audioTrack . length || this . _videoTrack . length ) && this . _onDataAvailable ( this . _audioTrack , this . _videoTrack ) : this . _videoInitialMetadataDispatched = ! 0 , this . _dispatch = ! 1 , this . _onTrackMetadata ( "video" , i )
}
} , {
key : "_parseAVCVideoData" ,
value : function ( e , t , n , i , r , s , a ) {
for ( var o = this . _littleEndian , u = new DataView ( e , t , n ) , d = [ ] , h = 0 , f = 0 , c = this . _naluLengthSize , _ = this . _timestampBase + i , m = 1 === s ; f < n ; ) {
if ( f + 4 >= n ) {
l . default . w ( this . TAG , "Malformed Nalu near timestamp " + _ + ", offset = " + f + ", dataSize = " + n ) ;
break
}
var p = u . getUint32 ( f , ! o ) ;
if ( 3 === c && ( p >>>= 8 ) , p > n - c ) return void l . default . w ( this . TAG , "Malformed Nalus near timestamp " + _ + ", NaluSize > DataSize!" ) ;
var v = 31 & u . getUint8 ( f + c ) ;
5 === v && ( m = ! 0 ) ;
var g = new Uint8Array ( e , t + f , c + p ) ,
y = {
type : v ,
data : g
} ;
d . push ( y ) , h += g . byteLength , f += c + p
}
if ( d . length ) {
var E = this . _videoTrack ,
b = {
units : d ,
length : h ,
isKeyframe : m ,
dts : _ ,
cts : a ,
pts : _ + a
} ;
m && ( b . fileposition = r ) , E . samples . push ( b ) , E . length += h
}
}
} , {
key : "onTrackMetadata" ,
get : function ( ) {
return this . _onTrackMetadata
} ,
set : function ( e ) {
this . _onTrackMetadata = e
}
} , {
key : "onMediaInfo" ,
get : function ( ) {
return this . _onMediaInfo
} ,
set : function ( e ) {
this . _onMediaInfo = e
}
} , {
key : "onError" ,
get : function ( ) {
return this . _onError
} ,
set : function ( e ) {
this . _onError = e
}
} , {
key : "onDataAvailable" ,
get : function ( ) {
return this . _onDataAvailable
} ,
set : function ( e ) {
this . _onDataAvailable = e
}
} , {
key : "timestampBase" ,
get : function ( ) {
return this . _timestampBase
} ,
set : function ( e ) {
this . _timestampBase = e
}
} , {
key : "overridedDuration" ,
get : function ( ) {
return this . _duration
} ,
set : function ( e ) {
this . _durationOverrided = ! 0 , this . _duration = e , this . _mediaInfo . duration = e
}
} , {
key : "overridedHasAudio" ,
set : function ( e ) {
this . _hasAudioFlagOverrided = ! 0 , this . _hasAudio = e , this . _mediaInfo . hasAudio = e
}
} , {
key : "overridedHasVideo" ,
set : function ( e ) {
this . _hasVideoFlagOverrided = ! 0 , this . _hasVideo = e , this . _mediaInfo . hasVideo = e
}
} ] , [ {
key : "probe" ,
value : function ( e ) {
var t = new Uint8Array ( e ) ,
n = {
match : ! 1
} ;
if ( 70 !== t [ 0 ] || 76 !== t [ 1 ] || 86 !== t [ 2 ] || 1 !== t [ 3 ] ) return n ;
var i = ( 4 & t [ 4 ] ) >>> 2 != 0 ,
r = 0 != ( 1 & t [ 4 ] ) ,
a = s ( t , 5 ) ;
return a < 9 ? n : {
match : ! 0 ,
consumed : a ,
dataOffset : a ,
hasAudioTrack : i ,
hasVideoTrack : r
}
}
} ] ) , e
} ( ) ;
n . default = y
} , {
"../core/media-info.js" : 7 ,
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./amf-parser.js" : 15 ,
"./demux-errors.js" : 16 ,
"./sps-parser.js" : 19
} ] ,
19 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = e ( "./exp-golomb.js" ) ,
a = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( s ) ,
o = function ( ) {
function e ( ) {
i ( this , e )
}
return r ( e , null , [ {
key : "_ebsp2rbsp" ,
value : function ( e ) {
for ( var t = e , n = t . byteLength , i = new Uint8Array ( n ) , r = 0 , s = 0 ; s < n ; s ++ ) s >= 2 && 3 === t [ s ] && 0 === t [ s - 1 ] && 0 === t [ s - 2 ] || ( i [ r ] = t [ s ] , r ++ ) ;
return new Uint8Array ( i . buffer , 0 , r )
}
} , {
key : "parseSPS" ,
value : function ( t ) {
var n = e . _ebsp2rbsp ( t ) ,
i = new a . default ( n ) ;
i . readByte ( ) ;
var r = i . readByte ( ) ;
i . readByte ( ) ;
var s = i . readByte ( ) ;
i . readUEG ( ) ;
var o = e . getProfileString ( r ) ,
u = e . getLevelString ( s ) ,
l = 1 ,
d = 420 ,
h = [ 0 , 420 , 422 , 444 ] ,
f = 8 ;
if ( ( 100 === r || 110 === r || 122 === r || 244 === r || 44 === r || 83 === r || 86 === r || 118 === r || 128 === r || 138 === r || 144 === r ) && ( l = i . readUEG ( ) , 3 === l && i . readBits ( 1 ) , l <= 3 && ( d = h [ l ] ) , f = i . readUEG ( ) + 8 , i . readUEG ( ) , i . readBits ( 1 ) , i . readBool ( ) ) )
for ( var c = 3 !== l ? 8 : 12 , _ = 0 ; _ < c ; _ ++ ) i . readBool ( ) && ( _ < 6 ? e . _skipScalingList ( i , 16 ) : e . _skipScalingList ( i , 64 ) ) ;
i . readUEG ( ) ;
var m = i . readUEG ( ) ;
if ( 0 === m ) i . readUEG ( ) ;
else if ( 1 === m ) {
i . readBits ( 1 ) , i . readSEG ( ) , i . readSEG ( ) ;
for ( var p = i . readUEG ( ) , v = 0 ; v < p ; v ++ ) i . readSEG ( )
}
var g = i . readUEG ( ) ;
i . readBits ( 1 ) ;
var y = i . readUEG ( ) ,
E = i . readUEG ( ) ,
b = i . readBits ( 1 ) ;
0 === b && i . readBits ( 1 ) , i . readBits ( 1 ) ;
var S = 0 ,
k = 0 ,
L = 0 ,
w = 0 ;
i . readBool ( ) && ( S = i . readUEG ( ) , k = i . readUEG ( ) , L = i . readUEG ( ) , w = i . readUEG ( ) ) ;
var R = 1 ,
A = 1 ,
O = 0 ,
T = ! 0 ,
C = 0 ,
I = 0 ;
if ( i . readBool ( ) ) {
if ( i . readBool ( ) ) {
var x = i . readByte ( ) ,
M = [ 1 , 12 , 10 , 16 , 40 , 24 , 20 , 32 , 80 , 18 , 15 , 64 , 160 , 4 , 3 , 2 ] ,
D = [ 1 , 11 , 11 , 11 , 33 , 11 , 11 , 11 , 33 , 11 , 11 , 33 , 99 , 3 , 2 , 1 ] ;
x > 0 && x < 16 ? ( R = M [ x - 1 ] , A = D [ x - 1 ] ) : 255 === x && ( R = i . readByte ( ) << 8 | i . readByte ( ) , A = i . readByte ( ) << 8 | i . readByte ( ) )
}
if ( i . readBool ( ) && i . readBool ( ) , i . readBool ( ) && ( i . readBits ( 4 ) , i . readBool ( ) && i . readBits ( 24 ) ) , i . readBool ( ) && ( i . readUEG ( ) , i . readUEG ( ) ) , i . readBool ( ) ) {
var B = i . readBits ( 32 ) ,
j = i . readBits ( 32 ) ;
T = i . readBool ( ) , C = j , I = 2 * B , O = C / I
}
}
var P = 1 ;
1 === R && 1 === A || ( P = R / A ) ;
var U = 0 ,
N = 0 ;
if ( 0 === l ) U = 1 , N = 2 - b ;
else {
var F = 3 === l ? 1 : 2 ,
G = 1 === l ? 2 : 1 ;
U = F , N = G * ( 2 - b )
}
var V = 16 * ( y + 1 ) ,
z = 16 * ( E + 1 ) * ( 2 - b ) ;
V -= ( S + k ) * U , z -= ( L + w ) * N ;
var H = Math . ceil ( V * P ) ;
return i . destroy ( ) , i = null , {
profile _string : o ,
level _string : u ,
bit _depth : f ,
ref _frames : g ,
chroma _format : d ,
chroma _format _string : e . getChromaFormatString ( d ) ,
frame _rate : {
fixed : T ,
fps : O ,
fps _den : I ,
fps _num : C
} ,
sar _ratio : {
width : R ,
height : A
} ,
codec _size : {
width : V ,
height : z
} ,
present _size : {
width : H ,
height : z
}
}
}
} , {
key : "_skipScalingList" ,
value : function ( e , t ) {
for ( var n = 8 , i = 8 , r = 0 , s = 0 ; s < t ; s ++ ) 0 !== i && ( r = e . readSEG ( ) , i = ( n + r + 256 ) % 256 ) , n = 0 === i ? n : i
}
} , {
key : "getProfileString" ,
value : function ( e ) {
switch ( e ) {
case 66 :
return "Baseline" ;
case 77 :
return "Main" ;
case 88 :
return "Extended" ;
case 100 :
return "High" ;
case 110 :
return "High10" ;
case 122 :
return "High422" ;
case 244 :
return "High444" ;
default :
return "Unknown"
}
}
} , {
key : "getLevelString" ,
value : function ( e ) {
return ( e / 10 ) . toFixed ( 1 )
}
} , {
key : "getChromaFormatString" ,
value : function ( e ) {
switch ( e ) {
case 420 :
return "4:2:0" ;
case 422 :
return "4:2:2" ;
case 444 :
return "4:4:4" ;
default :
return "Unknown"
}
}
} ] ) , e
} ( ) ;
n . default = o
} , {
"./exp-golomb.js" : 17
} ] ,
20 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
var n = e ;
if ( null == n || "object" !== ( void 0 === n ? "undefined" : o ( n ) ) ) throw new b . InvalidArgumentException ( "MediaDataSource must be an javascript object!" ) ;
if ( ! n . hasOwnProperty ( "type" ) ) throw new b . InvalidArgumentException ( "MediaDataSource must has type field to indicate video file type!" ) ;
switch ( n . type ) {
case "flv" :
return new c . default ( n , t ) ;
default :
return new m . default ( n , t )
}
}
function s ( ) {
return h . default . supportMSEH264Playback ( )
}
function a ( ) {
return h . default . getFeatureList ( )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var o = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
u = e ( "./utils/polyfill.js" ) ,
l = i ( u ) ,
d = e ( "./core/features.js" ) ,
h = i ( d ) ,
f = e ( "./player/flv-player.js" ) ,
c = i ( f ) ,
_ = e ( "./player/native-player.js" ) ,
m = i ( _ ) ,
p = e ( "./player/player-events.js" ) ,
v = i ( p ) ,
g = e ( "./player/player-errors.js" ) ,
y = e ( "./utils/logging-control.js" ) ,
E = i ( y ) ,
b = e ( "./utils/exception.js" ) ;
l . default . install ( ) ;
var S = { } ;
S . createPlayer = r , S . isSupported = s , S . getFeatureList = a , S . Events = v . default , S . ErrorTypes = g . ErrorTypes , S . ErrorDetails = g . ErrorDetails , S . FlvPlayer = c . default , S . NativePlayer = m . default , S . LoggingControl = E . default , Object . defineProperty ( S , "version" , {
enumerable : ! 0 ,
get : function ( ) {
return "1.4.2"
}
} ) , n . default = S
} , {
"./core/features.js" : 6 ,
"./player/flv-player.js" : 32 ,
"./player/native-player.js" : 33 ,
"./player/player-errors.js" : 34 ,
"./player/player-events.js" : 35 ,
"./utils/exception.js" : 40 ,
"./utils/logging-control.js" : 42 ,
"./utils/polyfill.js" : 43
} ] ,
21 : [ function ( e , t , n ) {
"use strict" ;
t . exports = e ( "./flv.js" ) . default
} , {
"./flv.js" : 20
} ] ,
22 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function s ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function a ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var o = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
u = function e ( t , n , i ) {
null === t && ( t = Function . prototype ) ;
var r = Object . getOwnPropertyDescriptor ( t , n ) ;
if ( void 0 === r ) {
var s = Object . getPrototypeOf ( t ) ;
return null === s ? void 0 : e ( s , n , i )
}
if ( "value" in r ) return r . value ;
var a = r . get ;
if ( void 0 !== a ) return a . call ( i )
} ,
l = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
d = e ( "../utils/logger.js" ) ,
h = ( i ( d ) , e ( "../utils/browser.js" ) ) ,
f = i ( h ) ,
c = e ( "./loader.js" ) ,
_ = e ( "../utils/exception.js" ) ,
m = function ( e ) {
function t ( e , n ) {
r ( this , t ) ;
var i = s ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , "fetch-stream-loader" ) ) ;
return i . TAG = "FetchStreamLoader" , i . _seekHandler = e , i . _config = n , i . _needStash = ! 0 , i . _requestAbort = ! 1 , i . _contentLength = null , i . _receivedLength = 0 , i
}
return a ( t , e ) , l ( t , null , [ {
key : "isSupported" ,
value : function ( ) {
try {
var e = f . default . msedge && f . default . version . minor >= 15048 ,
t = ! f . default . msedge || e ;
return self . fetch && self . ReadableStream && t
} catch ( e ) {
return ! 1
}
}
} ] ) , l ( t , [ {
key : "destroy" ,
value : function ( ) {
this . isWorking ( ) && this . abort ( ) , u ( t . prototype . _ _proto _ _ || Object . getPrototypeOf ( t . prototype ) , "destroy" , this ) . call ( this )
}
} , {
key : "open" ,
value : function ( e , t ) {
var n = this ;
this . _dataSource = e , this . _range = t ;
var i = e . url ;
this . _config . reuseRedirectedURL && void 0 != e . redirectedURL && ( i = e . redirectedURL ) ;
var r = this . _seekHandler . getConfig ( i , t ) ,
s = new self . Headers ;
if ( "object" === o ( r . headers ) ) {
var a = r . headers ;
for ( var u in a ) a . hasOwnProperty ( u ) && s . append ( u , a [ u ] )
}
var l = {
method : "GET" ,
headers : s ,
mode : "cors" ,
cache : "default" ,
referrerPolicy : "no-referrer-when-downgrade"
} ;
! 1 === e . cors && ( l . mode = "same-origin" ) , e . withCredentials && ( l . credentials = "include" ) , e . referrerPolicy && ( l . referrerPolicy = e . referrerPolicy ) , this . _status = c . LoaderStatus . kConnecting , self . fetch ( r . url , l ) . then ( function ( e ) {
if ( n . _requestAbort ) return n . _requestAbort = ! 1 , void ( n . _status = c . LoaderStatus . kIdle ) ;
if ( e . ok && e . status >= 200 && e . status <= 299 ) {
if ( e . url !== r . url && n . _onURLRedirect ) {
var t = n . _seekHandler . removeURLParameters ( e . url ) ;
n . _onURLRedirect ( t )
}
var i = e . headers . get ( "Content-Length" ) ;
return null != i && ( n . _contentLength = parseInt ( i ) , 0 !== n . _contentLength && n . _onContentLengthKnown && n . _onContentLengthKnown ( n . _contentLength ) ) , n . _pump . call ( n , e . body . getReader ( ) )
}
if ( n . _status = c . LoaderStatus . kError , ! n . _onError ) throw new _ . RuntimeException ( "FetchStreamLoader: Http code invalid, " + e . status + " " + e . statusText ) ;
n . _onError ( c . LoaderErrors . HTTP _STATUS _CODE _INVALID , {
code : e . status ,
msg : e . statusText
} )
} ) . catch ( function ( e ) {
if ( n . _status = c . LoaderStatus . kError , ! n . _onError ) throw e ;
n . _onError ( c . LoaderErrors . EXCEPTION , {
code : - 1 ,
msg : e . message
} )
} )
}
} , {
key : "abort" ,
value : function ( ) {
this . _requestAbort = ! 0
}
} , {
key : "_pump" ,
value : function ( e ) {
var t = this ;
return e . read ( ) . then ( function ( n ) {
if ( n . done )
if ( null !== t . _contentLength && t . _receivedLength < t . _contentLength ) {
t . _status = c . LoaderStatus . kError ;
var i = c . LoaderErrors . EARLY _EOF ,
r = {
code : - 1 ,
msg : "Fetch stream meet Early-EOF"
} ;
if ( ! t . _onError ) throw new _ . RuntimeException ( r . msg ) ;
t . _onError ( i , r )
} else t . _status = c . LoaderStatus . kComplete , t . _onComplete && t . _onComplete ( t . _range . from , t . _range . from + t . _receivedLength - 1 ) ;
else {
if ( ! 0 === t . _requestAbort ) return t . _requestAbort = ! 1 , t . _status = c . LoaderStatus . kComplete , e . cancel ( ) ;
t . _status = c . LoaderStatus . kBuffering ;
var s = n . value . buffer ,
a = t . _range . from + t . _receivedLength ;
t . _receivedLength += s . byteLength , t . _onDataArrival && t . _onDataArrival ( s , a , t . _receivedLength ) , t . _pump ( e )
}
} ) . catch ( function ( e ) {
if ( 11 !== e . code || ! f . default . msedge ) {
t . _status = c . LoaderStatus . kError ;
var n = 0 ,
i = null ;
if ( 19 !== e . code && "network error" !== e . message || ! ( null === t . _contentLength || null !== t . _contentLength && t . _receivedLength < t . _contentLength ) ? ( n = c . LoaderErrors . EXCEPTION , i = {
code : e . code ,
msg : e . message
} ) : ( n = c . LoaderErrors . EARLY _EOF , i = {
code : e . code ,
msg : "Fetch stream meet Early-EOF"
} ) , ! t . _onError ) throw new _ . RuntimeException ( i . msg ) ;
t . _onError ( n , i )
}
} )
}
} ] ) , t
} ( c . BaseLoader ) ;
n . default = m
} , {
"../utils/browser.js" : 39 ,
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./loader.js" : 24
} ] ,
23 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "../utils/logger.js" ) ,
o = i ( a ) ,
u = e ( "./speed-sampler.js" ) ,
l = i ( u ) ,
d = e ( "./loader.js" ) ,
h = e ( "./fetch-stream-loader.js" ) ,
f = i ( h ) ,
c = e ( "./xhr-moz-chunked-loader.js" ) ,
_ = i ( c ) ,
m = e ( "./xhr-msstream-loader.js" ) ,
p = ( i ( m ) , e ( "./xhr-range-loader.js" ) ) ,
v = i ( p ) ,
g = e ( "./websocket-loader.js" ) ,
y = i ( g ) ,
E = e ( "./range-seek-handler.js" ) ,
b = i ( E ) ,
S = e ( "./param-seek-handler.js" ) ,
k = i ( S ) ,
L = e ( "../utils/exception.js" ) ,
w = function ( ) {
function e ( t , n , i ) {
r ( this , e ) , this . TAG = "IOController" , this . _config = n , this . _extraData = i , this . _stashInitialSize = 393216 , void 0 != n . stashInitialSize && n . stashInitialSize > 0 && ( this . _stashInitialSize = n . stashInitialSize ) , this . _stashUsed = 0 , this . _stashSize = this . _stashInitialSize , this . _bufferSize = 3145728 , this . _stashBuffer = new ArrayBuffer ( this . _bufferSize ) , this . _stashByteStart = 0 , this . _enableStash = ! 0 , ! 1 === n . enableStashBuffer && ( this . _enableStash = ! 1 ) , this . _loader = null , this . _loaderClass = null , this . _seekHandler = null , this . _dataSource = t , this . _isWebSocketURL = /wss?:\/\/(.+?)/ . test ( t . url ) , this . _refTotalLength = t . filesize ? t . filesize : null , this . _totalLength = this . _refTotalLength , this . _fullRequestFlag = ! 1 , this . _currentRange = null , this . _redirectedURL = null , this . _speedNormalized = 0 , this . _speedSampler = new l . default , this . _speedNormalizeList = [ 64 , 128 , 256 , 384 , 512 , 768 , 1024 , 1536 , 2048 , 3072 , 4096 ] , this . _isEarlyEofReconnecting = ! 1 , this . _paused = ! 1 , this . _resumeFrom = 0 , this . _onDataArrival = null , this . _onSeeked = null , this . _onError = null , this . _onComplete = null , this . _onRedirect = null , this . _onRecoveredEarlyEof = null , this . _selectSeekHandler ( ) , this . _selectLoader ( ) , this . _createLoader ( )
}
return s ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _loader . isWorking ( ) && this . _loader . abort ( ) , this . _loader . destroy ( ) , this . _loader = null , this . _loaderClass = null , this . _dataSource = null , this . _stashBuffer = null , this . _stashUsed = this . _stashSize = this . _bufferSize = this . _stashByteStart = 0 , this . _currentRange = null , this . _speedSampler = null , this . _isEarlyEofReconnecting = ! 1 , this . _onDataArrival = null , this . _onSeeked = null , this . _onError = null , this . _onComplete = null , this . _onRedirect = null , this . _onRecoveredEarlyEof = null , this . _extraData = null
}
} , {
key : "isWorking" ,
value : function ( ) {
return this . _loader && this . _loader . isWorking ( ) && ! this . _paused
}
} , {
key : "isPaused" ,
value : function ( ) {
return this . _paused
}
} , {
key : "_selectSeekHandler" ,
value : function ( ) {
var e = this . _config ;
if ( "range" === e . seekType ) this . _seekHandler = new b . default ( this . _config . rangeLoadZeroStart ) ;
else if ( "param" === e . seekType ) {
var t = e . seekParamStart || "bstart" ,
n = e . seekParamEnd || "bend" ;
this . _seekHandler = new k . default ( t , n )
} else {
if ( "custom" !== e . seekType ) throw new L . InvalidArgumentException ( "Invalid seekType in config: " + e . seekType ) ;
if ( "function" != typeof e . customSeekHandler ) throw new L . InvalidArgumentException ( "Custom seekType specified in config but invalid customSeekHandler!" ) ;
this . _seekHandler = new e . customSeekHandler
}
}
} , {
key : "_selectLoader" ,
value : function ( ) {
if ( this . _isWebSocketURL ) this . _loaderClass = y . default ;
else if ( f . default . isSupported ( ) ) this . _loaderClass = f . default ;
else if ( _ . default . isSupported ( ) ) this . _loaderClass = _ . default ;
else {
if ( ! v . default . isSupported ( ) ) throw new L . RuntimeException ( "Your browser doesn't support xhr with arraybuffer responseType!" ) ;
this . _loaderClass = v . default
}
}
} , {
key : "_createLoader" ,
value : function ( ) {
this . _loader = new this . _loaderClass ( this . _seekHandler , this . _config ) , ! 1 === this . _loader . needStashBuffer && ( this . _enableStash = ! 1 ) , this . _loader . onContentLengthKnown = this . _onContentLengthKnown . bind ( this ) , this . _loader . onURLRedirect = this . _onURLRedirect . bind ( this ) , this . _loader . onDataArrival = this . _onLoaderChunkArrival . bind ( this ) , this . _loader . onComplete = this . _onLoaderComplete . bind ( this ) , this . _loader . onError = this . _onLoaderError . bind ( this )
}
} , {
key : "open" ,
value : function ( e ) {
this . _currentRange = {
from : 0 ,
to : - 1
} , e && ( this . _currentRange . from = e ) , this . _speedSampler . reset ( ) , e || ( this . _fullRequestFlag = ! 0 ) , this . _loader . open ( this . _dataSource , Object . assign ( { } , this . _currentRange ) )
}
} , {
key : "abort" ,
value : function ( ) {
this . _loader . abort ( ) , this . _paused && ( this . _paused = ! 1 , this . _resumeFrom = 0 )
}
} , {
key : "pause" ,
value : function ( ) {
this . isWorking ( ) && ( this . _loader . abort ( ) , 0 !== this . _stashUsed ? ( this . _resumeFrom = this . _stashByteStart , this . _currentRange . to = this . _stashByteStart - 1 ) : this . _resumeFrom = this . _currentRange . to + 1 , this . _stashUsed = 0 , this . _stashByteStart = 0 , this . _paused = ! 0 )
}
} , {
key : "resume" ,
value : function ( ) {
if ( this . _paused ) {
this . _paused = ! 1 ;
var e = this . _resumeFrom ;
this . _resumeFrom = 0 , this . _internalSeek ( e , ! 0 )
}
}
} , {
key : "seek" ,
value : function ( e ) {
this . _paused = ! 1 , this . _stashUsed = 0 , this . _stashByteStart = 0 , this . _internalSeek ( e , ! 0 )
}
} , {
key : "_internalSeek" ,
value : function ( e , t ) {
this . _loader . isWorking ( ) && this . _loader . abort ( ) , this . _flushStashBuffer ( t ) , this . _loader . destroy ( ) , this . _loader = null ;
var n = {
from : e ,
to : - 1
} ;
this . _currentRange = {
from : n . from ,
to : - 1
} , this . _speedSampler . reset ( ) , this . _stashSize = this . _stashInitialSize , this . _createLoader ( ) , this . _loader . open ( this . _dataSource , n ) , this . _onSeeked && this . _onSeeked ( )
}
} , {
key : "updateUrl" ,
value : function ( e ) {
if ( ! e || "string" != typeof e || 0 === e . length ) throw new L . InvalidArgumentException ( "Url must be a non-empty string!" ) ;
this . _dataSource . url = e
}
} , {
key : "_expandBuffer" ,
value : function ( e ) {
for ( var t = this . _stashSize ; t + 1048576 < e ; ) t *= 2 ;
if ( ( t += 1048576 ) !== this . _bufferSize ) {
var n = new ArrayBuffer ( t ) ;
if ( this . _stashUsed > 0 ) {
var i = new Uint8Array ( this . _stashBuffer , 0 , this . _stashUsed ) ;
new Uint8Array ( n , 0 , t ) . set ( i , 0 )
}
this . _stashBuffer = n , this . _bufferSize = t
}
}
} , {
key : "_normalizeSpeed" ,
value : function ( e ) {
var t = this . _speedNormalizeList ,
n = t . length - 1 ,
i = 0 ,
r = 0 ,
s = n ;
if ( e < t [ 0 ] ) return t [ 0 ] ;
for ( ; r <= s ; ) {
if ( ( i = r + Math . floor ( ( s - r ) / 2 ) ) === n || e >= t [ i ] && e < t [ i + 1 ] ) return t [ i ] ;
t [ i ] < e ? r = i + 1 : s = i - 1
}
}
} , {
key : "_adjustStashSize" ,
value : function ( e ) {
var t = 0 ;
( t = this . _config . isLive ? e : e < 512 ? e : e >= 512 && e <= 1024 ? Math . floor ( 1.5 * e ) : 2 * e ) > 8192 && ( t = 8192 ) ;
var n = 1024 * t + 1048576 ;
this . _bufferSize < n && this . _expandBuffer ( n ) , this . _stashSize = 1024 * t
}
} , {
key : "_dispatchChunks" ,
value : function ( e , t ) {
return this . _currentRange . to = t + e . byteLength - 1 , this . _onDataArrival ( e , t )
}
} , {
key : "_onURLRedirect" ,
value : function ( e ) {
this . _redirectedURL = e , this . _onRedirect && this . _onRedirect ( e )
}
} , {
key : "_onContentLengthKnown" ,
value : function ( e ) {
e && this . _fullRequestFlag && ( this . _totalLength = e , this . _fullRequestFlag = ! 1 )
}
} , {
key : "_onLoaderChunkArrival" ,
value : function ( e , t , n ) {
if ( ! this . _onDataArrival ) throw new L . IllegalStateException ( "IOController: No existing consumer (onDataArrival) callback!" ) ;
if ( ! this . _paused ) {
this . _isEarlyEofReconnecting && ( this . _isEarlyEofReconnecting = ! 1 , this . _onRecoveredEarlyEof && this . _onRecoveredEarlyEof ( ) ) , this . _speedSampler . addBytes ( e . byteLength ) ;
var i = this . _speedSampler . lastSecondKBps ;
if ( 0 !== i ) {
var r = this . _normalizeSpeed ( i ) ;
this . _speedNormalized !== r && ( this . _speedNormalized = r , this . _adjustStashSize ( r ) )
}
if ( this . _enableStash )
if ( 0 === this . _stashUsed && 0 === this . _stashByteStart && ( this . _stashByteStart = t ) , this . _stashUsed + e . byteLength <= this . _stashSize ) {
var s = new Uint8Array ( this . _stashBuffer , 0 , this . _stashSize ) ;
s . set ( new Uint8Array ( e ) , this . _stashUsed ) , this . _stashUsed += e . byteLength
} else {
var a = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ;
if ( this . _stashUsed > 0 ) {
var o = this . _stashBuffer . slice ( 0 , this . _stashUsed ) ,
u = this . _dispatchChunks ( o , this . _stashByteStart ) ;
if ( u < o . byteLength ) {
if ( u > 0 ) {
var l = new Uint8Array ( o , u ) ;
a . set ( l , 0 ) , this . _stashUsed = l . byteLength , this . _stashByteStart += u
}
} else this . _stashUsed = 0 , this . _stashByteStart += u ;
this . _stashUsed + e . byteLength > this . _bufferSize && ( this . _expandBuffer ( this . _stashUsed + e . byteLength ) , a = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ) , a . set ( new Uint8Array ( e ) , this . _stashUsed ) , this . _stashUsed += e . byteLength
} else {
var d = this . _dispatchChunks ( e , t ) ;
if ( d < e . byteLength ) {
var h = e . byteLength - d ;
h > this . _bufferSize && ( this . _expandBuffer ( h ) , a = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ) , a . set ( new Uint8Array ( e , d ) , 0 ) , this . _stashUsed += h , this . _stashByteStart = t + d
}
}
}
else if ( 0 === this . _stashUsed ) {
var f = this . _dispatchChunks ( e , t ) ;
if ( f < e . byteLength ) {
var c = e . byteLength - f ;
c > this . _bufferSize && this . _expandBuffer ( c ) ;
var _ = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ;
_ . set ( new Uint8Array ( e , f ) , 0 ) , this . _stashUsed += c , this . _stashByteStart = t + f
}
} else {
this . _stashUsed + e . byteLength > this . _bufferSize && this . _expandBuffer ( this . _stashUsed + e . byteLength ) ;
var m = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ;
m . set ( new Uint8Array ( e ) , this . _stashUsed ) , this . _stashUsed += e . byteLength ;
var p = this . _dispatchChunks ( this . _stashBuffer . slice ( 0 , this . _stashUsed ) , this . _stashByteStart ) ;
if ( p < this . _stashUsed && p > 0 ) {
var v = new Uint8Array ( this . _stashBuffer , p ) ;
m . set ( v , 0 )
}
this . _stashUsed -= p , this . _stashByteStart += p
}
}
}
} , {
key : "_flushStashBuffer" ,
value : function ( e ) {
if ( this . _stashUsed > 0 ) {
var t = this . _stashBuffer . slice ( 0 , this . _stashUsed ) ,
n = this . _dispatchChunks ( t , this . _stashByteStart ) ,
i = t . byteLength - n ;
if ( n < t . byteLength ) {
if ( ! e ) {
if ( n > 0 ) {
var r = new Uint8Array ( this . _stashBuffer , 0 , this . _bufferSize ) ,
s = new Uint8Array ( t , n ) ;
r . set ( s , 0 ) , this . _stashUsed = s . byteLength , this . _stashByteStart += n
}
return 0
}
o . default . w ( this . TAG , i + " bytes unconsumed data remain when flush buffer, dropped" )
}
return this . _stashUsed = 0 , this . _stashByteStart = 0 , i
}
return 0
}
} , {
key : "_onLoaderComplete" ,
value : function ( e , t ) {
this . _flushStashBuffer ( ! 0 ) , this . _onComplete && this . _onComplete ( this . _extraData )
}
} , {
key : "_onLoaderError" ,
value : function ( e , t ) {
switch ( o . default . e ( this . TAG , "Loader error, code = " + t . code + ", msg = " + t . msg ) , this . _flushStashBuffer ( ! 1 ) , this . _isEarlyEofReconnecting && ( this . _isEarlyEofReconnecting = ! 1 , e = d . LoaderErrors . UNRECOVERABLE _EARLY _EOF ) , e ) {
case d . LoaderErrors . EARLY _EOF :
if ( ! this . _config . isLive && this . _totalLength ) {
var n = this . _currentRange . to + 1 ;
return void ( n < this . _totalLength && ( o . default . w ( this . TAG , "Connection lost, trying reconnect..." ) , this . _isEarlyEofReconnecting = ! 0 , this . _internalSeek ( n , ! 1 ) ) )
}
e = d . LoaderErrors . UNRECOVERABLE _EARLY _EOF ;
break ;
case d . LoaderErrors . UNRECOVERABLE _EARLY _EOF :
case d . LoaderErrors . CONNECTING _TIMEOUT :
case d . LoaderErrors . HTTP _STATUS _CODE _INVALID :
case d . LoaderErrors . EXCEPTION :
}
if ( ! this . _onError ) throw new L . RuntimeException ( "IOException: " + t . msg ) ;
this . _onError ( e , t )
}
} , {
key : "status" ,
get : function ( ) {
return this . _loader . status
}
} , {
key : "extraData" ,
get : function ( ) {
return this . _extraData
} ,
set : function ( e ) {
this . _extraData = e
}
} , {
key : "onDataArrival" ,
get : function ( ) {
return this . _onDataArrival
} ,
set : function ( e ) {
this . _onDataArrival = e
}
} , {
key : "onSeeked" ,
get : function ( ) {
return this . _onSeeked
} ,
set : function ( e ) {
this . _onSeeked = e
}
} , {
key : "onError" ,
get : function ( ) {
return this . _onError
} ,
set : function ( e ) {
this . _onError = e
}
} , {
key : "onComplete" ,
get : function ( ) {
return this . _onComplete
} ,
set : function ( e ) {
this . _onComplete = e
}
} , {
key : "onRedirect" ,
get : function ( ) {
return this . _onRedirect
} ,
set : function ( e ) {
this . _onRedirect = e
}
} , {
key : "onRecoveredEarlyEof" ,
get : function ( ) {
return this . _onRecoveredEarlyEof
} ,
set : function ( e ) {
this . _onRecoveredEarlyEof = e
}
} , {
key : "currentURL" ,
get : function ( ) {
return this . _dataSource . url
}
} , {
key : "hasRedirect" ,
get : function ( ) {
return null != this . _redirectedURL || void 0 != this . _dataSource . redirectedURL
}
} , {
key : "currentRedirectedURL" ,
get : function ( ) {
return this . _redirectedURL || this . _dataSource . redirectedURL
}
} , {
key : "currentSpeed" ,
get : function ( ) {
return this . _loaderClass === v . default ? this . _loader . currentSpeed : this . _speedSampler . lastSecondKBps
}
} , {
key : "loaderType" ,
get : function ( ) {
return this . _loader . type
}
} ] ) , e
} ( ) ;
n . default = w
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./fetch-stream-loader.js" : 22 ,
"./loader.js" : 24 ,
"./param-seek-handler.js" : 25 ,
"./range-seek-handler.js" : 26 ,
"./speed-sampler.js" : 27 ,
"./websocket-loader.js" : 28 ,
"./xhr-moz-chunked-loader.js" : 29 ,
"./xhr-msstream-loader.js" : 30 ,
"./xhr-range-loader.js" : 31
} ] ,
24 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) , n . BaseLoader = n . LoaderErrors = n . LoaderStatus = void 0 ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = e ( "../utils/exception.js" ) ,
a = n . LoaderStatus = {
kIdle : 0 ,
kConnecting : 1 ,
kBuffering : 2 ,
kError : 3 ,
kComplete : 4
} ;
n . LoaderErrors = {
OK : "OK" ,
EXCEPTION : "Exception" ,
HTTP _STATUS _CODE _INVALID : "HttpStatusCodeInvalid" ,
CONNECTING _TIMEOUT : "ConnectingTimeout" ,
EARLY _EOF : "EarlyEof" ,
UNRECOVERABLE _EARLY _EOF : "UnrecoverableEarlyEof"
} , n . BaseLoader = function ( ) {
function e ( t ) {
i ( this , e ) , this . _type = t || "undefined" , this . _status = a . kIdle , this . _needStash = ! 1 , this . _onContentLengthKnown = null , this . _onURLRedirect = null , this . _onDataArrival = null , this . _onError = null , this . _onComplete = null
}
return r ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _status = a . kIdle , this . _onContentLengthKnown = null , this . _onURLRedirect = null , this . _onDataArrival = null , this . _onError = null , this . _onComplete = null
}
} , {
key : "isWorking" ,
value : function ( ) {
return this . _status === a . kConnecting || this . _status === a . kBuffering
}
} , {
key : "open" ,
value : function ( e , t ) {
throw new s . NotImplementedException ( "Unimplemented abstract function!" )
}
} , {
key : "abort" ,
value : function ( ) {
throw new s . NotImplementedException ( "Unimplemented abstract function!" )
}
} , {
key : "type" ,
get : function ( ) {
return this . _type
}
} , {
key : "status" ,
get : function ( ) {
return this . _status
}
} , {
key : "needStashBuffer" ,
get : function ( ) {
return this . _needStash
}
} , {
key : "onContentLengthKnown" ,
get : function ( ) {
return this . _onContentLengthKnown
} ,
set : function ( e ) {
this . _onContentLengthKnown = e
}
} , {
key : "onURLRedirect" ,
get : function ( ) {
return this . _onURLRedirect
} ,
set : function ( e ) {
this . _onURLRedirect = e
}
} , {
key : "onDataArrival" ,
get : function ( ) {
return this . _onDataArrival
} ,
set : function ( e ) {
this . _onDataArrival = e
}
} , {
key : "onError" ,
get : function ( ) {
return this . _onError
} ,
set : function ( e ) {
this . _onError = e
}
} , {
key : "onComplete" ,
get : function ( ) {
return this . _onComplete
} ,
set : function ( e ) {
this . _onComplete = e
}
} ] ) , e
} ( )
} , {
"../utils/exception.js" : 40
} ] ,
25 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( t , n ) {
i ( this , e ) , this . _startName = t , this . _endName = n
}
return r ( e , [ {
key : "getConfig" ,
value : function ( e , t ) {
var n = e ;
if ( 0 !== t . from || - 1 !== t . to ) {
var i = ! 0 ; - 1 === n . indexOf ( "?" ) && ( n += "?" , i = ! 1 ) , i && ( n += "&" ) , n += this . _startName + "=" + t . from . toString ( ) , - 1 !== t . to && ( n += "&" + this . _endName + "=" + t . to . toString ( ) )
}
return {
url : n ,
headers : { }
}
}
} , {
key : "removeURLParameters" ,
value : function ( e ) {
var t = e . split ( "?" ) [ 0 ] ,
n = void 0 ,
i = e . indexOf ( "?" ) ; - 1 !== i && ( n = e . substring ( i + 1 ) ) ;
var r = "" ;
if ( void 0 != n && n . length > 0 )
for ( var s = n . split ( "&" ) , a = 0 ; a < s . length ; a ++ ) {
var o = s [ a ] . split ( "=" ) ,
u = a > 0 ;
o [ 0 ] !== this . _startName && o [ 0 ] !== this . _endName && ( u && ( r += "&" ) , r += s [ a ] )
}
return 0 === r . length ? t : t + "?" + r
}
} ] ) , e
} ( ) ;
n . default = s
} , { } ] ,
26 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( t ) {
i ( this , e ) , this . _zeroStart = t || ! 1
}
return r ( e , [ {
key : "getConfig" ,
value : function ( e , t ) {
var n = { } ;
if ( 0 !== t . from || - 1 !== t . to ) {
var i = void 0 ;
i = - 1 !== t . to ? "bytes=" + t . from . toString ( ) + "-" + t . to . toString ( ) : "bytes=" + t . from . toString ( ) + "-" , n . Range = i
} else this . _zeroStart && ( n . Range = "bytes=0-" ) ;
return {
url : e ,
headers : n
}
}
} , {
key : "removeURLParameters" ,
value : function ( e ) {
return e
}
} ] ) , e
} ( ) ;
n . default = s
} , { } ] ,
27 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( ) {
i ( this , e ) , this . _firstCheckpoint = 0 , this . _lastCheckpoint = 0 , this . _intervalBytes = 0 , this . _totalBytes = 0 , this . _lastSecondBytes = 0 , self . performance && self . performance . now ? this . _now = self . performance . now . bind ( self . performance ) : this . _now = Date . now
}
return r ( e , [ {
key : "reset" ,
value : function ( ) {
this . _firstCheckpoint = this . _lastCheckpoint = 0 , this . _totalBytes = this . _intervalBytes = 0 , this . _lastSecondBytes = 0
}
} , {
key : "addBytes" ,
value : function ( e ) {
0 === this . _firstCheckpoint ? ( this . _firstCheckpoint = this . _now ( ) , this . _lastCheckpoint = this . _firstCheckpoint , this . _intervalBytes += e , this . _totalBytes += e ) : this . _now ( ) - this . _lastCheckpoint < 1e3 ? ( this . _intervalBytes += e , this . _totalBytes += e ) : ( this . _lastSecondBytes = this . _intervalBytes , this . _intervalBytes = e , this . _totalBytes += e , this . _lastCheckpoint = this . _now ( ) )
}
} , {
key : "currentKBps" ,
get : function ( ) {
this . addBytes ( 0 ) ;
var e = ( this . _now ( ) - this . _lastCheckpoint ) / 1e3 ;
return 0 == e && ( e = 1 ) , this . _intervalBytes / e / 1024
}
} , {
key : "lastSecondKBps" ,
get : function ( ) {
return this . addBytes ( 0 ) , 0 !== this . _lastSecondBytes ? this . _lastSecondBytes / 1024 : this . _now ( ) - this . _lastCheckpoint >= 500 ? this . currentKBps : 0
}
} , {
key : "averageKBps" ,
get : function ( ) {
var e = ( this . _now ( ) - this . _firstCheckpoint ) / 1e3 ;
return this . _totalBytes / e / 1024
}
} ] ) , e
} ( ) ;
n . default = s
} , { } ] ,
28 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function r ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function s ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var a = function e ( t , n , i ) {
null === t && ( t = Function . prototype ) ;
var r = Object . getOwnPropertyDescriptor ( t , n ) ;
if ( void 0 === r ) {
var s = Object . getPrototypeOf ( t ) ;
return null === s ? void 0 : e ( s , n , i )
}
if ( "value" in r ) return r . value ;
var a = r . get ;
if ( void 0 !== a ) return a . call ( i )
} ,
o = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
u = e ( "../utils/logger.js" ) ,
l = ( function ( e ) {
e && e . _ _esModule
} ( u ) , e ( "./loader.js" ) ) ,
d = e ( "../utils/exception.js" ) ,
h = function ( e ) {
function t ( ) {
i ( this , t ) ;
var e = r ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , "websocket-loader" ) ) ;
return e . TAG = "WebSocketLoader" , e . _needStash = ! 0 , e . _ws = null , e . _requestAbort = ! 1 , e . _receivedLength = 0 , e
}
return s ( t , e ) , o ( t , null , [ {
key : "isSupported" ,
value : function ( ) {
try {
return void 0 !== self . WebSocket
} catch ( e ) {
return ! 1
}
}
} ] ) , o ( t , [ {
key : "destroy" ,
value : function ( ) {
this . _ws && this . abort ( ) , a ( t . prototype . _ _proto _ _ || Object . getPrototypeOf ( t . prototype ) , "destroy" , this ) . call ( this )
}
} , {
key : "open" ,
value : function ( e ) {
try {
var t = this . _ws = new self . WebSocket ( e . url ) ;
t . binaryType = "arraybuffer" , t . onopen = this . _onWebSocketOpen . bind ( this ) , t . onclose = this . _onWebSocketClose . bind ( this ) , t . onmessage = this . _onWebSocketMessage . bind ( this ) , t . onerror = this . _onWebSocketError . bind ( this ) , this . _status = l . LoaderStatus . kConnecting
} catch ( e ) {
this . _status = l . LoaderStatus . kError ;
var n = {
code : e . code ,
msg : e . message
} ;
if ( ! this . _onError ) throw new d . RuntimeException ( n . msg ) ;
this . _onError ( l . LoaderErrors . EXCEPTION , n )
}
}
} , {
key : "abort" ,
value : function ( ) {
var e = this . _ws ;
! e || 0 !== e . readyState && 1 !== e . readyState || ( this . _requestAbort = ! 0 , e . close ( ) ) , this . _ws = null , this . _status = l . LoaderStatus . kComplete
}
} , {
key : "_onWebSocketOpen" ,
value : function ( e ) {
this . _status = l . LoaderStatus . kBuffering
}
} , {
key : "_onWebSocketClose" ,
value : function ( e ) {
if ( ! 0 === this . _requestAbort ) return void ( this . _requestAbort = ! 1 ) ;
this . _status = l . LoaderStatus . kComplete , this . _onComplete && this . _onComplete ( 0 , this . _receivedLength - 1 )
}
} , {
key : "_onWebSocketMessage" ,
value : function ( e ) {
var t = this ;
if ( e . data instanceof ArrayBuffer ) this . _dispatchArrayBuffer ( e . data ) ;
else if ( e . data instanceof Blob ) {
var n = new FileReader ;
n . onload = function ( ) {
t . _dispatchArrayBuffer ( n . result )
} , n . readAsArrayBuffer ( e . data )
} else {
this . _status = l . LoaderStatus . kError ;
var i = {
code : - 1 ,
msg : "Unsupported WebSocket message type: " + e . data . constructor . name
} ;
if ( ! this . _onError ) throw new d . RuntimeException ( i . msg ) ;
this . _onError ( l . LoaderErrors . EXCEPTION , i )
}
}
} , {
key : "_dispatchArrayBuffer" ,
value : function ( e ) {
var t = e ,
n = this . _receivedLength ;
this . _receivedLength += t . byteLength , this . _onDataArrival && this . _onDataArrival ( t , n , this . _receivedLength )
}
} , {
key : "_onWebSocketError" ,
value : function ( e ) {
this . _status = l . LoaderStatus . kError ;
var t = {
code : e . code ,
msg : e . message
} ;
if ( ! this . _onError ) throw new d . RuntimeException ( t . msg ) ;
this . _onError ( l . LoaderErrors . EXCEPTION , t )
}
} ] ) , t
} ( l . BaseLoader ) ;
n . default = h
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./loader.js" : 24
} ] ,
29 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function r ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function s ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var a = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
o = function e ( t , n , i ) {
null === t && ( t = Function . prototype ) ;
var r = Object . getOwnPropertyDescriptor ( t , n ) ;
if ( void 0 === r ) {
var s = Object . getPrototypeOf ( t ) ;
return null === s ? void 0 : e ( s , n , i )
}
if ( "value" in r ) return r . value ;
var a = r . get ;
if ( void 0 !== a ) return a . call ( i )
} ,
u = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
l = e ( "../utils/logger.js" ) ,
d = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( l ) ,
h = e ( "./loader.js" ) ,
f = e ( "../utils/exception.js" ) ,
c = function ( e ) {
function t ( e , n ) {
i ( this , t ) ;
var s = r ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , "xhr-moz-chunked-loader" ) ) ;
return s . TAG = "MozChunkedLoader" , s . _seekHandler = e , s . _config = n , s . _needStash = ! 0 , s . _xhr = null , s . _requestAbort = ! 1 , s . _contentLength = null , s . _receivedLength = 0 , s
}
return s ( t , e ) , u ( t , null , [ {
key : "isSupported" ,
value : function ( ) {
try {
var e = new XMLHttpRequest ;
return e . open ( "GET" , "https://example.com" , ! 0 ) , e . responseType = "moz-chunked-arraybuffer" , "moz-chunked-arraybuffer" === e . responseType
} catch ( e ) {
return d . default . w ( "MozChunkedLoader" , e . message ) , ! 1
}
}
} ] ) , u ( t , [ {
key : "destroy" ,
value : function ( ) {
this . isWorking ( ) && this . abort ( ) , this . _xhr && ( this . _xhr . onreadystatechange = null , this . _xhr . onprogress = null , this . _xhr . onloadend = null , this . _xhr . onerror = null , this . _xhr = null ) , o ( t . prototype . _ _proto _ _ || Object . getPrototypeOf ( t . prototype ) , "destroy" , this ) . call ( this )
}
} , {
key : "open" ,
value : function ( e , t ) {
this . _dataSource = e , this . _range = t ;
var n = e . url ;
this . _config . reuseRedirectedURL && void 0 != e . redirectedURL && ( n = e . redirectedURL ) ;
var i = this . _seekHandler . getConfig ( n , t ) ;
this . _requestURL = i . url ;
var r = this . _xhr = new XMLHttpRequest ;
if ( r . open ( "GET" , i . url , ! 0 ) , r . responseType = "moz-chunked-arraybuffer" , r . onreadystatechange = this . _onReadyStateChange . bind ( this ) , r . onprogress = this . _onProgress . bind ( this ) , r . onloadend = this . _onLoadEnd . bind ( this ) , r . onerror = this . _onXhrError . bind ( this ) , e . withCredentials && ( r . withCredentials = ! 0 ) , "object" === a ( i . headers ) ) {
var s = i . headers ;
for ( var o in s ) s . hasOwnProperty ( o ) && r . setRequestHeader ( o , s [ o ] )
}
this . _status = h . LoaderStatus . kConnecting , r . send ( )
}
} , {
key : "abort" ,
value : function ( ) {
this . _requestAbort = ! 0 , this . _xhr && this . _xhr . abort ( ) , this . _status = h . LoaderStatus . kComplete
}
} , {
key : "_onReadyStateChange" ,
value : function ( e ) {
var t = e . target ;
if ( 2 === t . readyState ) {
if ( void 0 != t . responseURL && t . responseURL !== this . _requestURL && this . _onURLRedirect ) {
var n = this . _seekHandler . removeURLParameters ( t . responseURL ) ;
this . _onURLRedirect ( n )
}
if ( 0 !== t . status && ( t . status < 200 || t . status > 299 ) ) {
if ( this . _status = h . LoaderStatus . kError , ! this . _onError ) throw new f . RuntimeException ( "MozChunkedLoader: Http code invalid, " + t . status + " " + t . statusText ) ;
this . _onError ( h . LoaderErrors . HTTP _STATUS _CODE _INVALID , {
code : t . status ,
msg : t . statusText
} )
} else this . _status = h . LoaderStatus . kBuffering
}
}
} , {
key : "_onProgress" ,
value : function ( e ) {
if ( this . _status !== h . LoaderStatus . kError ) {
null === this . _contentLength && null !== e . total && 0 !== e . total && ( this . _contentLength = e . total , this . _onContentLengthKnown && this . _onContentLengthKnown ( this . _contentLength ) ) ;
var t = e . target . response ,
n = this . _range . from + this . _receivedLength ;
this . _receivedLength += t . byteLength , this . _onDataArrival && this . _onDataArrival ( t , n , this . _receivedLength )
}
}
} , {
key : "_onLoadEnd" ,
value : function ( e ) {
if ( ! 0 === this . _requestAbort ) return void ( this . _requestAbort = ! 1 ) ;
this . _status !== h . LoaderStatus . kError && ( this . _status = h . LoaderStatus . kComplete , this . _onComplete && this . _onComplete ( this . _range . from , this . _range . from + this . _receivedLength - 1 ) )
}
} , {
key : "_onXhrError" ,
value : function ( e ) {
this . _status = h . LoaderStatus . kError ;
var t = 0 ,
n = null ;
if ( this . _contentLength && e . loaded < this . _contentLength ? ( t = h . LoaderErrors . EARLY _EOF , n = {
code : - 1 ,
msg : "Moz-Chunked stream meet Early-Eof"
} ) : ( t = h . LoaderErrors . EXCEPTION , n = {
code : - 1 ,
msg : e . constructor . name + " " + e . type
} ) , ! this . _onError ) throw new f . RuntimeException ( n . msg ) ;
this . _onError ( t , n )
}
} ] ) , t
} ( h . BaseLoader ) ;
n . default = c
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./loader.js" : 24
} ] ,
30 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function r ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function s ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var a = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
o = function e ( t , n , i ) {
null === t && ( t = Function . prototype ) ;
var r = Object . getOwnPropertyDescriptor ( t , n ) ;
if ( void 0 === r ) {
var s = Object . getPrototypeOf ( t ) ;
return null === s ? void 0 : e ( s , n , i )
}
if ( "value" in r ) return r . value ;
var a = r . get ;
if ( void 0 !== a ) return a . call ( i )
} ,
u = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
l = e ( "../utils/logger.js" ) ,
d = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( l ) ,
h = e ( "./loader.js" ) ,
f = e ( "../utils/exception.js" ) ,
c = function ( e ) {
function t ( e , n ) {
i ( this , t ) ;
var s = r ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , "xhr-msstream-loader" ) ) ;
return s . TAG = "MSStreamLoader" , s . _seekHandler = e , s . _config = n , s . _needStash = ! 0 , s . _xhr = null , s . _reader = null , s . _totalRange = null , s . _currentRange = null , s . _currentRequestURL = null , s . _currentRedirectedURL = null , s . _contentLength = null , s . _receivedLength = 0 , s . _bufferLimit = 16777216 , s . _lastTimeBufferSize = 0 , s . _isReconnecting = ! 1 , s
}
return s ( t , e ) , u ( t , null , [ {
key : "isSupported" ,
value : function ( ) {
try {
if ( void 0 === self . MSStream || void 0 === self . MSStreamReader ) return ! 1 ;
var e = new XMLHttpRequest ;
return e . open ( "GET" , "https://example.com" , ! 0 ) , e . responseType = "ms-stream" , "ms-stream" === e . responseType
} catch ( e ) {
return d . default . w ( "MSStreamLoader" , e . message ) , ! 1
}
}
} ] ) , u ( t , [ {
key : "destroy" ,
value : function ( ) {
this . isWorking ( ) && this . abort ( ) , this . _reader && ( this . _reader . onprogress = null , this . _reader . onload = null , this . _reader . onerror = null , this . _reader = null ) , this . _xhr && ( this . _xhr . onreadystatechange = null , this . _xhr = null ) , o ( t . prototype . _ _proto _ _ || Object . getPrototypeOf ( t . prototype ) , "destroy" , this ) . call ( this )
}
} , {
key : "open" ,
value : function ( e , t ) {
this . _internalOpen ( e , t , ! 1 )
}
} , {
key : "_internalOpen" ,
value : function ( e , t , n ) {
this . _dataSource = e , n ? this . _currentRange = t : this . _totalRange = t ;
var i = e . url ;
this . _config . reuseRedirectedURL && ( void 0 != this . _currentRedirectedURL ? i = this . _currentRedirectedURL : void 0 != e . redirectedURL && ( i = e . redirectedURL ) ) ;
var r = this . _seekHandler . getConfig ( i , t ) ;
this . _currentRequestURL = r . url ;
var s = this . _reader = new self . MSStreamReader ;
s . onprogress = this . _msrOnProgress . bind ( this ) , s . onload = this . _msrOnLoad . bind ( this ) , s . onerror = this . _msrOnError . bind ( this ) ;
var o = this . _xhr = new XMLHttpRequest ;
if ( o . open ( "GET" , r . url , ! 0 ) , o . responseType = "ms-stream" , o . onreadystatechange = this . _xhrOnReadyStateChange . bind ( this ) , o . onerror = this . _xhrOnError . bind ( this ) , e . withCredentials && ( o . withCredentials = ! 0 ) , "object" === a ( r . headers ) ) {
var u = r . headers ;
for ( var l in u ) u . hasOwnProperty ( l ) && o . setRequestHeader ( l , u [ l ] )
}
this . _isReconnecting ? this . _isReconnecting = ! 1 : this . _status = h . LoaderStatus . kConnecting , o . send ( )
}
} , {
key : "abort" ,
value : function ( ) {
this . _internalAbort ( ) , this . _status = h . LoaderStatus . kComplete
}
} , {
key : "_internalAbort" ,
value : function ( ) {
this . _reader && ( 1 === this . _reader . readyState && this . _reader . abort ( ) , this . _reader . onprogress = null , this . _reader . onload = null , this . _reader . onerror = null , this . _reader = null ) , this . _xhr && ( this . _xhr . abort ( ) , this . _xhr . onreadystatechange = null , this . _xhr = null )
}
} , {
key : "_xhrOnReadyStateChange" ,
value : function ( e ) {
var t = e . target ;
if ( 2 === t . readyState )
if ( t . status >= 200 && t . status <= 299 ) {
if ( this . _status = h . LoaderStatus . kBuffering , void 0 != t . responseURL ) {
var n = this . _seekHandler . removeURLParameters ( t . responseURL ) ;
t . responseURL !== this . _currentRequestURL && n !== this . _currentRedirectedURL && ( this . _currentRedirectedURL = n , this . _onURLRedirect && this . _onURLRedirect ( n ) )
}
var i = t . getResponseHeader ( "Content-Length" ) ;
if ( null != i && null == this . _contentLength ) {
var r = parseInt ( i ) ;
r > 0 && ( this . _contentLength = r , this . _onContentLengthKnown && this . _onContentLengthKnown ( this . _contentLength ) )
}
} else {
if ( this . _status = h . LoaderStatus . kError , ! this . _onError ) throw new f . RuntimeException ( "MSStreamLoader: Http code invalid, " + t . status + " " + t . statusText ) ;
this . _onError ( h . LoaderErrors . HTTP _STATUS _CODE _INVALID , {
code : t . status ,
msg : t . statusText
} )
}
else if ( 3 === t . readyState && t . status >= 200 && t . status <= 299 ) {
this . _status = h . LoaderStatus . kBuffering ;
var s = t . response ;
this . _reader . readAsArrayBuffer ( s )
}
}
} , {
key : "_xhrOnError" ,
value : function ( e ) {
this . _status = h . LoaderStatus . kError ;
var t = h . LoaderErrors . EXCEPTION ,
n = {
code : - 1 ,
msg : e . constructor . name + " " + e . type
} ;
if ( ! this . _onError ) throw new f . RuntimeException ( n . msg ) ;
this . _onError ( t , n )
}
} , {
key : "_msrOnProgress" ,
value : function ( e ) {
var t = e . target ,
n = t . result ;
if ( null == n ) return void this . _doReconnectIfNeeded ( ) ;
var i = n . slice ( this . _lastTimeBufferSize ) ;
this . _lastTimeBufferSize = n . byteLength ;
var r = this . _totalRange . from + this . _receivedLength ;
this . _receivedLength += i . byteLength , this . _onDataArrival && this . _onDataArrival ( i , r , this . _receivedLength ) , n . byteLength >= this . _bufferLimit && ( d . default . v ( this . TAG , "MSStream buffer exceeded max size near " + ( r + i . byteLength ) + ", reconnecting..." ) , this . _doReconnectIfNeeded ( ) )
}
} , {
key : "_doReconnectIfNeeded" ,
value : function ( ) {
if ( null == this . _contentLength || this . _receivedLength < this . _contentLength ) {
this . _isReconnecting = ! 0 , this . _lastTimeBufferSize = 0 , this . _internalAbort ( ) ;
var e = {
from : this . _totalRange . from + this . _receivedLength ,
to : - 1
} ;
this . _internalOpen ( this . _dataSource , e , ! 0 )
}
}
} , {
key : "_msrOnLoad" ,
value : function ( e ) {
this . _status = h . LoaderStatus . kComplete , this . _onComplete && this . _onComplete ( this . _totalRange . from , this . _totalRange . from + this . _receivedLength - 1 )
}
} , {
key : "_msrOnError" ,
value : function ( e ) {
this . _status = h . LoaderStatus . kError ;
var t = 0 ,
n = null ;
if ( this . _contentLength && this . _receivedLength < this . _contentLength ? ( t = h . LoaderErrors . EARLY _EOF , n = {
code : - 1 ,
msg : "MSStream meet Early-Eof"
} ) : ( t = h . LoaderErrors . EARLY _EOF , n = {
code : - 1 ,
msg : e . constructor . name + " " + e . type
} ) , ! this . _onError ) throw new f . RuntimeException ( n . msg ) ;
this . _onError ( t , n )
}
} ] ) , t
} ( h . BaseLoader ) ;
n . default = c
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./loader.js" : 24
} ] ,
31 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
function s ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function a ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var o = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
u = function e ( t , n , i ) {
null === t && ( t = Function . prototype ) ;
var r = Object . getOwnPropertyDescriptor ( t , n ) ;
if ( void 0 === r ) {
var s = Object . getPrototypeOf ( t ) ;
return null === s ? void 0 : e ( s , n , i )
}
if ( "value" in r ) return r . value ;
var a = r . get ;
if ( void 0 !== a ) return a . call ( i )
} ,
l = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
d = e ( "../utils/logger.js" ) ,
h = i ( d ) ,
f = e ( "./speed-sampler.js" ) ,
c = i ( f ) ,
_ = e ( "./loader.js" ) ,
m = e ( "../utils/exception.js" ) ,
p = function ( e ) {
function t ( e , n ) {
r ( this , t ) ;
var i = s ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , "xhr-range-loader" ) ) ;
return i . TAG = "RangeLoader" , i . _seekHandler = e , i . _config = n , i . _needStash = ! 1 , i . _chunkSizeKBList = [ 128 , 256 , 384 , 512 , 768 , 1024 , 1536 , 2048 , 3072 , 4096 , 5120 , 6144 , 7168 , 8192 ] , i . _currentChunkSizeKB = 384 , i . _currentSpeedNormalized = 0 , i . _zeroSpeedChunkCount = 0 , i . _xhr = null , i . _speedSampler = new c . default , i . _requestAbort = ! 1 , i . _waitForTotalLength = ! 1 , i . _totalLengthReceived = ! 1 , i . _currentRequestURL = null , i . _currentRedirectedURL = null , i . _currentRequestRange = null , i . _totalLength = null , i . _contentLength = null , i . _receivedLength = 0 , i . _lastTimeLoaded = 0 , i
}
return a ( t , e ) , l ( t , null , [ {
key : "isSupported" ,
value : function ( ) {
try {
var e = new XMLHttpRequest ;
return e . open ( "GET" , "https://example.com" , ! 0 ) , e . responseType = "arraybuffer" , "arraybuffer" === e . responseType
} catch ( e ) {
return h . default . w ( "RangeLoader" , e . message ) , ! 1
}
}
} ] ) , l ( t , [ {
key : "destroy" ,
value : function ( ) {
this . isWorking ( ) && this . abort ( ) , this . _xhr && ( this . _xhr . onreadystatechange = null , this . _xhr . onprogress = null , this . _xhr . onload = null , this . _xhr . onerror = null , this . _xhr = null ) , u ( t . prototype . _ _proto _ _ || Object . getPrototypeOf ( t . prototype ) , "destroy" , this ) . call ( this )
}
} , {
key : "open" ,
value : function ( e , t ) {
this . _dataSource = e , this . _range = t , this . _status = _ . LoaderStatus . kConnecting ;
var n = ! 1 ;
void 0 != this . _dataSource . filesize && 0 !== this . _dataSource . filesize && ( n = ! 0 , this . _totalLength = this . _dataSource . filesize ) , this . _totalLengthReceived || n ? this . _openSubRange ( ) : ( this . _waitForTotalLength = ! 0 , this . _internalOpen ( this . _dataSource , {
from : 0 ,
to : - 1
} ) )
}
} , {
key : "_openSubRange" ,
value : function ( ) {
var e = 1024 * this . _currentChunkSizeKB ,
t = this . _range . from + this . _receivedLength ,
n = t + e ;
null != this . _contentLength && n - this . _range . from >= this . _contentLength && ( n = this . _range . from + this . _contentLength - 1 ) , this . _currentRequestRange = {
from : t ,
to : n
} , this . _internalOpen ( this . _dataSource , this . _currentRequestRange )
}
} , {
key : "_internalOpen" ,
value : function ( e , t ) {
this . _lastTimeLoaded = 0 ;
var n = e . url ;
this . _config . reuseRedirectedURL && ( void 0 != this . _currentRedirectedURL ? n = this . _currentRedirectedURL : void 0 != e . redirectedURL && ( n = e . redirectedURL ) ) ;
var i = this . _seekHandler . getConfig ( n , t ) ;
this . _currentRequestURL = i . url ;
var r = this . _xhr = new XMLHttpRequest ;
if ( r . open ( "GET" , i . url , ! 0 ) , r . responseType = "arraybuffer" , r . onreadystatechange = this . _onReadyStateChange . bind ( this ) , r . onprogress = this . _onProgress . bind ( this ) , r . onload = this . _onLoad . bind ( this ) , r . onerror = this . _onXhrError . bind ( this ) , e . withCredentials && ( r . withCredentials = ! 0 ) , "object" === o ( i . headers ) ) {
var s = i . headers ;
for ( var a in s ) s . hasOwnProperty ( a ) && r . setRequestHeader ( a , s [ a ] )
}
r . send ( )
}
} , {
key : "abort" ,
value : function ( ) {
this . _requestAbort = ! 0 , this . _internalAbort ( ) , this . _status = _ . LoaderStatus . kComplete
}
} , {
key : "_internalAbort" ,
value : function ( ) {
this . _xhr && ( this . _xhr . onreadystatechange = null , this . _xhr . onprogress = null , this . _xhr . onload = null , this . _xhr . onerror = null , this . _xhr . abort ( ) , this . _xhr = null )
}
} , {
key : "_onReadyStateChange" ,
value : function ( e ) {
var t = e . target ;
if ( 2 === t . readyState ) {
if ( void 0 != t . responseURL ) {
var n = this . _seekHandler . removeURLParameters ( t . responseURL ) ;
t . responseURL !== this . _currentRequestURL && n !== this . _currentRedirectedURL && ( this . _currentRedirectedURL = n , this . _onURLRedirect && this . _onURLRedirect ( n ) )
}
if ( t . status >= 200 && t . status <= 299 ) {
if ( this . _waitForTotalLength ) return ;
this . _status = _ . LoaderStatus . kBuffering
} else {
if ( this . _status = _ . LoaderStatus . kError , ! this . _onError ) throw new m . RuntimeException ( "RangeLoader: Http code invalid, " + t . status + " " + t . statusText ) ;
this . _onError ( _ . LoaderErrors . HTTP _STATUS _CODE _INVALID , {
code : t . status ,
msg : t . statusText
} )
}
}
}
} , {
key : "_onProgress" ,
value : function ( e ) {
if ( this . _status !== _ . LoaderStatus . kError ) {
if ( null === this . _contentLength ) {
var t = ! 1 ;
if ( this . _waitForTotalLength ) {
this . _waitForTotalLength = ! 1 , this . _totalLengthReceived = ! 0 , t = ! 0 ;
var n = e . total ;
this . _internalAbort ( ) , null != n & 0 !== n && ( this . _totalLength = n )
}
if ( - 1 === this . _range . to ? this . _contentLength = this . _totalLength - this . _range . from : this . _contentLength = this . _range . to - this . _range . from + 1 , t ) return void this . _openSubRange ( ) ;
this . _onContentLengthKnown && this . _onContentLengthKnown ( this . _contentLength )
}
var i = e . loaded - this . _lastTimeLoaded ;
this . _lastTimeLoaded = e . loaded , this . _speedSampler . addBytes ( i )
}
}
} , {
key : "_normalizeSpeed" ,
value : function ( e ) {
var t = this . _chunkSizeKBList ,
n = t . length - 1 ,
i = 0 ,
r = 0 ,
s = n ;
if ( e < t [ 0 ] ) return t [ 0 ] ;
for ( ; r <= s ; ) {
if ( ( i = r + Math . floor ( ( s - r ) / 2 ) ) === n || e >= t [ i ] && e < t [ i + 1 ] ) return t [ i ] ;
t [ i ] < e ? r = i + 1 : s = i - 1
}
}
} , {
key : "_onLoad" ,
value : function ( e ) {
if ( this . _status !== _ . LoaderStatus . kError ) {
if ( this . _waitForTotalLength ) return void ( this . _waitForTotalLength = ! 1 ) ;
this . _lastTimeLoaded = 0 ;
var t = this . _speedSampler . lastSecondKBps ;
if ( 0 === t && ++ this . _zeroSpeedChunkCount >= 3 && ( t = this . _speedSampler . currentKBps ) , 0 !== t ) {
var n = this . _normalizeSpeed ( t ) ;
this . _currentSpeedNormalized !== n && ( this . _currentSpeedNormalized = n , this . _currentChunkSizeKB = n )
}
var i = e . target . response ,
r = this . _range . from + this . _receivedLength ;
this . _receivedLength += i . byteLength ;
var s = ! 1 ;
null != this . _contentLength && this . _receivedLength < this . _contentLength ? this . _openSubRange ( ) : s = ! 0 , this . _onDataArrival && this . _onDataArrival ( i , r , this . _receivedLength ) , s && ( this . _status = _ . LoaderStatus . kComplete , this . _onComplete && this . _onComplete ( this . _range . from , this . _range . from + this . _receivedLength - 1 ) )
}
}
} , {
key : "_onXhrError" ,
value : function ( e ) {
this . _status = _ . LoaderStatus . kError ;
var t = 0 ,
n = null ;
if ( this . _contentLength && this . _receivedLength > 0 && this . _receivedLength < this . _contentLength ? ( t = _ . LoaderErrors . EARLY _EOF , n = {
code : - 1 ,
msg : "RangeLoader meet Early-Eof"
} ) : ( t = _ . LoaderErrors . EXCEPTION , n = {
code : - 1 ,
msg : e . constructor . name + " " + e . type
} ) , ! this . _onError ) throw new m . RuntimeException ( n . msg ) ;
this . _onError ( t , n )
}
} , {
key : "currentSpeed" ,
get : function ( ) {
return this . _speedSampler . lastSecondKBps
}
} ] ) , t
} ( _ . BaseLoader ) ;
n . default = p
} , {
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./loader.js" : 24 ,
"./speed-sampler.js" : 27
} ] ,
32 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
a = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
o = e ( "events" ) ,
u = i ( o ) ,
l = e ( "../utils/logger.js" ) ,
d = i ( l ) ,
h = e ( "../utils/browser.js" ) ,
f = i ( h ) ,
c = e ( "./player-events.js" ) ,
_ = i ( c ) ,
m = e ( "../core/transmuxer.js" ) ,
p = i ( m ) ,
v = e ( "../core/transmuxing-events.js" ) ,
g = i ( v ) ,
y = e ( "../core/mse-controller.js" ) ,
E = i ( y ) ,
b = e ( "../core/mse-events.js" ) ,
S = i ( b ) ,
k = e ( "./player-errors.js" ) ,
L = e ( "../config.js" ) ,
w = e ( "../utils/exception.js" ) ,
R = function ( ) {
function e ( t , n ) {
if ( r ( this , e ) , this . TAG = "FlvPlayer" , this . _type = "FlvPlayer" , this . _emitter = new u . default , this . _config = ( 0 , L . createDefaultConfig ) ( ) , "object" === ( void 0 === n ? "undefined" : s ( n ) ) && Object . assign ( this . _config , n ) , "flv" !== t . type . toLowerCase ( ) ) throw new w . InvalidArgumentException ( "FlvPlayer requires an flv MediaDataSource input!" ) ;
! 0 === t . isLive && ( this . _config . isLive = ! 0 ) , this . e = {
onvLoadedMetadata : this . _onvLoadedMetadata . bind ( this ) ,
onvSeeking : this . _onvSeeking . bind ( this ) ,
onvCanPlay : this . _onvCanPlay . bind ( this ) ,
onvStalled : this . _onvStalled . bind ( this ) ,
onvProgress : this . _onvProgress . bind ( this )
} , self . performance && self . performance . now ? this . _now = self . performance . now . bind ( self . performance ) : this . _now = Date . now , this . _pendingSeekTime = null , this . _requestSetTime = ! 1 , this . _seekpointRecord = null , this . _progressChecker = null , this . _mediaDataSource = t , this . _mediaElement = null , this . _msectl = null , this . _transmuxer = null , this . _mseSourceOpened = ! 1 , this . _hasPendingLoad = ! 1 , this . _receivedCanPlay = ! 1 , this . _mediaInfo = null , this . _statisticsInfo = null ;
var i = f . default . chrome && ( f . default . version . major < 50 || 50 === f . default . version . major && f . default . version . build < 2661 ) ;
this . _alwaysSeekKeyframe = ! ! ( i || f . default . msedge || f . default . msie ) , this . _alwaysSeekKeyframe && ( this . _config . accurateSeek = ! 1 )
}
return a ( e , [ {
key : "destroy" ,
value : function ( ) {
null != this . _progressChecker && ( window . clearInterval ( this . _progressChecker ) , this . _progressChecker = null ) , this . _transmuxer && this . unload ( ) , this . _mediaElement && this . detachMediaElement ( ) , this . e = null , this . _mediaDataSource = null , this . _emitter . removeAllListeners ( ) , this . _emitter = null
}
} , {
key : "on" ,
value : function ( e , t ) {
var n = this ;
e === _ . default . MEDIA _INFO ? null != this . _mediaInfo && Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( _ . default . MEDIA _INFO , n . mediaInfo )
} ) : e === _ . default . STATISTICS _INFO && null != this . _statisticsInfo && Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( _ . default . STATISTICS _INFO , n . statisticsInfo )
} ) , this . _emitter . addListener ( e , t )
}
} , {
key : "off" ,
value : function ( e , t ) {
this . _emitter . removeListener ( e , t )
}
} , {
key : "attachMediaElement" ,
value : function ( e ) {
var t = this ;
if ( this . _mediaElement = e , e . addEventListener ( "loadedmetadata" , this . e . onvLoadedMetadata ) , e . addEventListener ( "seeking" , this . e . onvSeeking ) , e . addEventListener ( "canplay" , this . e . onvCanPlay ) , e . addEventListener ( "stalled" , this . e . onvStalled ) , e . addEventListener ( "progress" , this . e . onvProgress ) , this . _msectl = new E . default ( this . _config ) , this . _msectl . on ( S . default . UPDATE _END , this . _onmseUpdateEnd . bind ( this ) ) , this . _msectl . on ( S . default . BUFFER _FULL , this . _onmseBufferFull . bind ( this ) ) , this . _msectl . on ( S . default . SOURCE _OPEN , function ( ) {
t . _mseSourceOpened = ! 0 , t . _hasPendingLoad && ( t . _hasPendingLoad = ! 1 , t . load ( ) )
} ) , this . _msectl . on ( S . default . ERROR , function ( e ) {
t . _emitter . emit ( _ . default . ERROR , k . ErrorTypes . MEDIA _ERROR , k . ErrorDetails . MEDIA _MSE _ERROR , e )
} ) , this . _msectl . attachMediaElement ( e ) , null != this . _pendingSeekTime ) try {
e . currentTime = this . _pendingSeekTime , this . _pendingSeekTime = null
} catch ( e ) { }
}
} , {
key : "detachMediaElement" ,
value : function ( ) {
this . _mediaElement && ( this . _msectl . detachMediaElement ( ) , this . _mediaElement . removeEventListener ( "loadedmetadata" , this . e . onvLoadedMetadata ) , this . _mediaElement . removeEventListener ( "seeking" , this . e . onvSeeking ) , this . _mediaElement . removeEventListener ( "canplay" , this . e . onvCanPlay ) , this . _mediaElement . removeEventListener ( "stalled" , this . e . onvStalled ) , this . _mediaElement . removeEventListener ( "progress" , this . e . onvProgress ) , this . _mediaElement = null ) , this . _msectl && ( this . _msectl . destroy ( ) , this . _msectl = null )
}
} , {
key : "load" ,
value : function ( ) {
var e = this ;
if ( ! this . _mediaElement ) throw new w . IllegalStateException ( "HTMLMediaElement must be attached before load()!" ) ;
if ( this . _transmuxer ) throw new w . IllegalStateException ( "FlvPlayer.load() has been called, please call unload() first!" ) ;
if ( ! this . _hasPendingLoad ) {
if ( this . _config . deferLoadAfterSourceOpen && ! 1 === this . _mseSourceOpened ) return void ( this . _hasPendingLoad = ! 0 ) ;
this . _mediaElement . readyState > 0 && ( this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = 0 ) , this . _transmuxer = new p . default ( this . _mediaDataSource , this . _config ) , this . _transmuxer . on ( g . default . INIT _SEGMENT , function ( t , n ) {
e . _msectl . appendInitSegment ( n )
} ) , this . _transmuxer . on ( g . default . MEDIA _SEGMENT , function ( t , n ) {
if ( e . _msectl . appendMediaSegment ( n ) , e . _config . lazyLoad && ! e . _config . isLive ) {
var i = e . _mediaElement . currentTime ;
n . info . endDts >= 1e3 * ( i + e . _config . lazyLoadMaxDuration ) && null == e . _progressChecker && ( d . default . v ( e . TAG , "Maximum buffering duration exceeded, suspend transmuxing task" ) , e . _suspendTransmuxer ( ) )
}
} ) , this . _transmuxer . on ( g . default . LOADING _COMPLETE , function ( ) {
e . _msectl . endOfStream ( ) , e . _emitter . emit ( _ . default . LOADING _COMPLETE )
} ) ,
this . _transmuxer . on ( g . default . RECOVERED _EARLY _EOF , function ( ) {
e . _emitter . emit ( _ . default . RECOVERED _EARLY _EOF )
} ) , this . _transmuxer . on ( g . default . IO _ERROR , function ( t , n ) {
e . _emitter . emit ( _ . default . ERROR , k . ErrorTypes . NETWORK _ERROR , t , n )
} ) , this . _transmuxer . on ( g . default . DEMUX _ERROR , function ( t , n ) {
e . _emitter . emit ( _ . default . ERROR , k . ErrorTypes . MEDIA _ERROR , t , {
code : - 1 ,
msg : n
} )
} ) , this . _transmuxer . on ( g . default . MEDIA _INFO , function ( t ) {
e . _mediaInfo = t , e . _emitter . emit ( _ . default . MEDIA _INFO , Object . assign ( { } , t ) )
} ) , this . _transmuxer . on ( g . default . STATISTICS _INFO , function ( t ) {
e . _statisticsInfo = e . _fillStatisticsInfo ( t ) , e . _emitter . emit ( _ . default . STATISTICS _INFO , Object . assign ( { } , e . _statisticsInfo ) )
} ) , this . _transmuxer . on ( g . default . RECOMMEND _SEEKPOINT , function ( t ) {
e . _mediaElement && ! e . _config . accurateSeek && ( e . _requestSetTime = ! 0 , e . _mediaElement . currentTime = t / 1e3 )
} ) , this . _transmuxer . open ( )
}
}
} , {
key : "unload" ,
value : function ( ) {
this . _mediaElement && this . _mediaElement . pause ( ) , this . _msectl && this . _msectl . seek ( 0 ) , this . _transmuxer && ( this . _transmuxer . close ( ) , this . _transmuxer . destroy ( ) , this . _transmuxer = null )
}
} , {
key : "play" ,
value : function ( ) {
return this . _mediaElement . play ( )
}
} , {
key : "pause" ,
value : function ( ) {
this . _mediaElement . pause ( )
}
} , {
key : "_fillStatisticsInfo" ,
value : function ( e ) {
if ( e . playerType = this . _type , ! ( this . _mediaElement instanceof HTMLVideoElement ) ) return e ;
var t = ! 0 ,
n = 0 ,
i = 0 ;
if ( this . _mediaElement . getVideoPlaybackQuality ) {
var r = this . _mediaElement . getVideoPlaybackQuality ( ) ;
n = r . totalVideoFrames , i = r . droppedVideoFrames
} else void 0 != this . _mediaElement . webkitDecodedFrameCount ? ( n = this . _mediaElement . webkitDecodedFrameCount , i = this . _mediaElement . webkitDroppedFrameCount ) : t = ! 1 ;
return t && ( e . decodedFrames = n , e . droppedFrames = i ) , e
}
} , {
key : "_onmseUpdateEnd" ,
value : function ( ) {
if ( this . _config . lazyLoad && ! this . _config . isLive ) {
for ( var e = this . _mediaElement . buffered , t = this . _mediaElement . currentTime , n = 0 , i = 0 ; i < e . length ; i ++ ) {
var r = e . start ( i ) ,
s = e . end ( i ) ;
if ( r <= t && t < s ) {
r ,
n = s ;
break
}
}
n >= t + this . _config . lazyLoadMaxDuration && null == this . _progressChecker && ( d . default . v ( this . TAG , "Maximum buffering duration exceeded, suspend transmuxing task" ) , this . _suspendTransmuxer ( ) )
}
}
} , {
key : "_onmseBufferFull" ,
value : function ( ) {
d . default . v ( this . TAG , "MSE SourceBuffer is full, suspend transmuxing task" ) , null == this . _progressChecker && this . _suspendTransmuxer ( )
}
} , {
key : "_suspendTransmuxer" ,
value : function ( ) {
this . _transmuxer && ( this . _transmuxer . pause ( ) , null == this . _progressChecker && ( this . _progressChecker = window . setInterval ( this . _checkProgressAndResume . bind ( this ) , 1e3 ) ) )
}
} , {
key : "_checkProgressAndResume" ,
value : function ( ) {
for ( var e = this . _mediaElement . currentTime , t = this . _mediaElement . buffered , n = ! 1 , i = 0 ; i < t . length ; i ++ ) {
var r = t . start ( i ) ,
s = t . end ( i ) ;
if ( e >= r && e < s ) {
e >= s - this . _config . lazyLoadRecoverDuration && ( n = ! 0 ) ;
break
}
}
n && ( window . clearInterval ( this . _progressChecker ) , this . _progressChecker = null , n && ( d . default . v ( this . TAG , "Continue loading from paused position" ) , this . _transmuxer . resume ( ) ) )
}
} , {
key : "_isTimepointBuffered" ,
value : function ( e ) {
for ( var t = this . _mediaElement . buffered , n = 0 ; n < t . length ; n ++ ) {
var i = t . start ( n ) ,
r = t . end ( n ) ;
if ( e >= i && e < r ) return ! 0
}
return ! 1
}
} , {
key : "_internalSeek" ,
value : function ( e ) {
var t = this . _isTimepointBuffered ( e ) ,
n = ! 1 ,
i = 0 ;
if ( e < 1 && this . _mediaElement . buffered . length > 0 ) {
var r = this . _mediaElement . buffered . start ( 0 ) ;
( r < 1 && e < r || f . default . safari ) && ( n = ! 0 , i = f . default . safari ? . 1 : r )
}
if ( n ) this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = i ;
else if ( t ) {
if ( this . _alwaysSeekKeyframe ) {
var s = this . _msectl . getNearestKeyframe ( Math . floor ( 1e3 * e ) ) ;
this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = null != s ? s . dts / 1e3 : e
} else this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = e ;
null != this . _progressChecker && this . _checkProgressAndResume ( )
} else null != this . _progressChecker && ( window . clearInterval ( this . _progressChecker ) , this . _progressChecker = null ) , this . _msectl . seek ( e ) , this . _transmuxer . seek ( Math . floor ( 1e3 * e ) ) , this . _config . accurateSeek && ( this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = e )
}
} , {
key : "_checkAndApplyUnbufferedSeekpoint" ,
value : function ( ) {
if ( this . _seekpointRecord )
if ( this . _seekpointRecord . recordTime <= this . _now ( ) - 100 ) {
var e = this . _mediaElement . currentTime ;
this . _seekpointRecord = null , this . _isTimepointBuffered ( e ) || ( null != this . _progressChecker && ( window . clearTimeout ( this . _progressChecker ) , this . _progressChecker = null ) , this . _msectl . seek ( e ) , this . _transmuxer . seek ( Math . floor ( 1e3 * e ) ) , this . _config . accurateSeek && ( this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = e ) )
} else window . setTimeout ( this . _checkAndApplyUnbufferedSeekpoint . bind ( this ) , 50 )
}
} , {
key : "_checkAndResumeStuckPlayback" ,
value : function ( e ) {
var t = this . _mediaElement ;
if ( e || ! this . _receivedCanPlay || t . readyState < 2 ) {
var n = t . buffered ;
n . length > 0 && t . currentTime < n . start ( 0 ) && ( d . default . w ( this . TAG , "Playback seems stuck at " + t . currentTime + ", seek to " + n . start ( 0 ) ) , this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = n . start ( 0 ) , this . _mediaElement . removeEventListener ( "progress" , this . e . onvProgress ) )
} else this . _mediaElement . removeEventListener ( "progress" , this . e . onvProgress )
}
} , {
key : "_onvLoadedMetadata" ,
value : function ( e ) {
null != this . _pendingSeekTime && ( this . _mediaElement . currentTime = this . _pendingSeekTime , this . _pendingSeekTime = null )
}
} , {
key : "_onvSeeking" ,
value : function ( e ) {
var t = this . _mediaElement . currentTime ,
n = this . _mediaElement . buffered ;
if ( this . _requestSetTime ) return void ( this . _requestSetTime = ! 1 ) ;
if ( t < 1 && n . length > 0 ) {
var i = n . start ( 0 ) ;
if ( i < 1 && t < i || f . default . safari ) return this . _requestSetTime = ! 0 , void ( this . _mediaElement . currentTime = f . default . safari ? . 1 : i )
}
if ( this . _isTimepointBuffered ( t ) ) {
if ( this . _alwaysSeekKeyframe ) {
var r = this . _msectl . getNearestKeyframe ( Math . floor ( 1e3 * t ) ) ;
null != r && ( this . _requestSetTime = ! 0 , this . _mediaElement . currentTime = r . dts / 1e3 )
}
return void ( null != this . _progressChecker && this . _checkProgressAndResume ( ) )
}
this . _seekpointRecord = {
seekPoint : t ,
recordTime : this . _now ( )
} , window . setTimeout ( this . _checkAndApplyUnbufferedSeekpoint . bind ( this ) , 50 )
}
} , {
key : "_onvCanPlay" ,
value : function ( e ) {
this . _receivedCanPlay = ! 0 , this . _mediaElement . removeEventListener ( "canplay" , this . e . onvCanPlay )
}
} , {
key : "_onvStalled" ,
value : function ( e ) {
this . _checkAndResumeStuckPlayback ( ! 0 )
}
} , {
key : "_onvProgress" ,
value : function ( e ) {
this . _checkAndResumeStuckPlayback ( )
}
} , {
key : "type" ,
get : function ( ) {
return this . _type
}
} , {
key : "buffered" ,
get : function ( ) {
return this . _mediaElement . buffered
}
} , {
key : "duration" ,
get : function ( ) {
return this . _mediaElement . duration
}
} , {
key : "volume" ,
get : function ( ) {
return this . _mediaElement . volume
} ,
set : function ( e ) {
this . _mediaElement . volume = e
}
} , {
key : "muted" ,
get : function ( ) {
return this . _mediaElement . muted
} ,
set : function ( e ) {
this . _mediaElement . muted = e
}
} , {
key : "currentTime" ,
get : function ( ) {
return this . _mediaElement ? this . _mediaElement . currentTime : 0
} ,
set : function ( e ) {
this . _mediaElement ? this . _internalSeek ( e ) : this . _pendingSeekTime = e
}
} , {
key : "mediaInfo" ,
get : function ( ) {
return Object . assign ( { } , this . _mediaInfo )
}
} , {
key : "statisticsInfo" ,
get : function ( ) {
return null == this . _statisticsInfo && ( this . _statisticsInfo = { } ) , this . _statisticsInfo = this . _fillStatisticsInfo ( this . _statisticsInfo ) , Object . assign ( { } , this . _statisticsInfo )
}
} ] ) , e
} ( ) ;
n . default = R
} , {
"../config.js" : 5 ,
"../core/mse-controller.js" : 9 ,
"../core/mse-events.js" : 10 ,
"../core/transmuxer.js" : 11 ,
"../core/transmuxing-events.js" : 13 ,
"../utils/browser.js" : 39 ,
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./player-errors.js" : 34 ,
"./player-events.js" : 35 ,
events : 2
} ] ,
33 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) {
return typeof e
} : function ( e ) {
return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e
} ,
a = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
o = e ( "events" ) ,
u = i ( o ) ,
l = e ( "./player-events.js" ) ,
d = i ( l ) ,
h = e ( "../config.js" ) ,
f = e ( "../utils/exception.js" ) ,
c = function ( ) {
function e ( t , n ) {
if ( r ( this , e ) , this . TAG = "NativePlayer" , this . _type = "NativePlayer" , this . _emitter = new u . default , this . _config = ( 0 , h . createDefaultConfig ) ( ) , "object" === ( void 0 === n ? "undefined" : s ( n ) ) && Object . assign ( this . _config , n ) , "flv" === t . type . toLowerCase ( ) ) throw new f . InvalidArgumentException ( "NativePlayer does't support flv MediaDataSource input!" ) ;
if ( t . hasOwnProperty ( "segments" ) ) throw new f . InvalidArgumentException ( "NativePlayer(" + t . type + ") doesn't support multipart playback!" ) ;
this . e = {
onvLoadedMetadata : this . _onvLoadedMetadata . bind ( this )
} , this . _pendingSeekTime = null , this . _statisticsReporter = null , this . _mediaDataSource = t , this . _mediaElement = null
}
return a ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _mediaElement && ( this . unload ( ) , this . detachMediaElement ( ) ) , this . e = null , this . _mediaDataSource = null , this . _emitter . removeAllListeners ( ) , this . _emitter = null
}
} , {
key : "on" ,
value : function ( e , t ) {
var n = this ;
e === d . default . MEDIA _INFO ? null != this . _mediaElement && 0 !== this . _mediaElement . readyState && Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( d . default . MEDIA _INFO , n . mediaInfo )
} ) : e === d . default . STATISTICS _INFO && null != this . _mediaElement && 0 !== this . _mediaElement . readyState && Promise . resolve ( ) . then ( function ( ) {
n . _emitter . emit ( d . default . STATISTICS _INFO , n . statisticsInfo )
} ) , this . _emitter . addListener ( e , t )
}
} , {
key : "off" ,
value : function ( e , t ) {
this . _emitter . removeListener ( e , t )
}
} , {
key : "attachMediaElement" ,
value : function ( e ) {
if ( this . _mediaElement = e , e . addEventListener ( "loadedmetadata" , this . e . onvLoadedMetadata ) , null != this . _pendingSeekTime ) try {
e . currentTime = this . _pendingSeekTime , this . _pendingSeekTime = null
} catch ( e ) { }
}
} , {
key : "detachMediaElement" ,
value : function ( ) {
this . _mediaElement && ( this . _mediaElement . src = "" , this . _mediaElement . removeAttribute ( "src" ) , this . _mediaElement . removeEventListener ( "loadedmetadata" , this . e . onvLoadedMetadata ) , this . _mediaElement = null ) , null != this . _statisticsReporter && ( window . clearInterval ( this . _statisticsReporter ) , this . _statisticsReporter = null )
}
} , {
key : "load" ,
value : function ( ) {
if ( ! this . _mediaElement ) throw new f . IllegalStateException ( "HTMLMediaElement must be attached before load()!" ) ;
this . _mediaElement . src = this . _mediaDataSource . url , this . _mediaElement . readyState > 0 && ( this . _mediaElement . currentTime = 0 ) , this . _mediaElement . preload = "auto" , this . _mediaElement . load ( ) , this . _statisticsReporter = window . setInterval ( this . _reportStatisticsInfo . bind ( this ) , this . _config . statisticsInfoReportInterval )
}
} , {
key : "unload" ,
value : function ( ) {
this . _mediaElement && ( this . _mediaElement . src = "" , this . _mediaElement . removeAttribute ( "src" ) ) , null != this . _statisticsReporter && ( window . clearInterval ( this . _statisticsReporter ) , this . _statisticsReporter = null )
}
} , {
key : "play" ,
value : function ( ) {
return this . _mediaElement . play ( )
}
} , {
key : "pause" ,
value : function ( ) {
this . _mediaElement . pause ( )
}
} , {
key : "_onvLoadedMetadata" ,
value : function ( e ) {
null != this . _pendingSeekTime && ( this . _mediaElement . currentTime = this . _pendingSeekTime , this . _pendingSeekTime = null ) , this . _emitter . emit ( d . default . MEDIA _INFO , this . mediaInfo )
}
} , {
key : "_reportStatisticsInfo" ,
value : function ( ) {
this . _emitter . emit ( d . default . STATISTICS _INFO , this . statisticsInfo )
}
} , {
key : "type" ,
get : function ( ) {
return this . _type
}
} , {
key : "buffered" ,
get : function ( ) {
return this . _mediaElement . buffered
}
} , {
key : "duration" ,
get : function ( ) {
return this . _mediaElement . duration
}
} , {
key : "volume" ,
get : function ( ) {
return this . _mediaElement . volume
} ,
set : function ( e ) {
this . _mediaElement . volume = e
}
} , {
key : "muted" ,
get : function ( ) {
return this . _mediaElement . muted
} ,
set : function ( e ) {
this . _mediaElement . muted = e
}
} , {
key : "currentTime" ,
get : function ( ) {
return this . _mediaElement ? this . _mediaElement . currentTime : 0
} ,
set : function ( e ) {
this . _mediaElement ? this . _mediaElement . currentTime = e : this . _pendingSeekTime = e
}
} , {
key : "mediaInfo" ,
get : function ( ) {
var e = this . _mediaElement instanceof HTMLAudioElement ? "audio/" : "video/" ,
t = {
mimeType : e + this . _mediaDataSource . type
} ;
return this . _mediaElement && ( t . duration = Math . floor ( 1e3 * this . _mediaElement . duration ) , this . _mediaElement instanceof HTMLVideoElement && ( t . width = this . _mediaElement . videoWidth , t . height = this . _mediaElement . videoHeight ) ) , t
}
} , {
key : "statisticsInfo" ,
get : function ( ) {
var e = {
playerType : this . _type ,
url : this . _mediaDataSource . url
} ;
if ( ! ( this . _mediaElement instanceof HTMLVideoElement ) ) return e ;
var t = ! 0 ,
n = 0 ,
i = 0 ;
if ( this . _mediaElement . getVideoPlaybackQuality ) {
var r = this . _mediaElement . getVideoPlaybackQuality ( ) ;
n = r . totalVideoFrames , i = r . droppedVideoFrames
} else void 0 != this . _mediaElement . webkitDecodedFrameCount ? ( n = this . _mediaElement . webkitDecodedFrameCount , i = this . _mediaElement . webkitDroppedFrameCount ) : t = ! 1 ;
return t && ( e . decodedFrames = n , e . droppedFrames = i ) , e
}
} ] ) , e
} ( ) ;
n . default = c
} , {
"../config.js" : 5 ,
"../utils/exception.js" : 40 ,
"./player-events.js" : 35 ,
events : 2
} ] ,
34 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) , n . ErrorDetails = n . ErrorTypes = void 0 ;
var i = e ( "../io/loader.js" ) ,
r = e ( "../demux/demux-errors.js" ) ,
s = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( r ) ;
n . ErrorTypes = {
NETWORK _ERROR : "NetworkError" ,
MEDIA _ERROR : "MediaError" ,
OTHER _ERROR : "OtherError"
} , n . ErrorDetails = {
NETWORK _EXCEPTION : i . LoaderErrors . EXCEPTION ,
NETWORK _STATUS _CODE _INVALID : i . LoaderErrors . HTTP _STATUS _CODE _INVALID ,
NETWORK _TIMEOUT : i . LoaderErrors . CONNECTING _TIMEOUT ,
NETWORK _UNRECOVERABLE _EARLY _EOF : i . LoaderErrors . UNRECOVERABLE _EARLY _EOF ,
MEDIA _MSE _ERROR : "MediaMSEError" ,
MEDIA _FORMAT _ERROR : s . default . FORMAT _ERROR ,
MEDIA _FORMAT _UNSUPPORTED : s . default . FORMAT _UNSUPPORTED ,
MEDIA _CODEC _UNSUPPORTED : s . default . CODEC _UNSUPPORTED
}
} , {
"../demux/demux-errors.js" : 16 ,
"../io/loader.js" : 24
} ] ,
35 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var i = {
ERROR : "error" ,
LOADING _COMPLETE : "loading_complete" ,
RECOVERED _EARLY _EOF : "recovered_early_eof" ,
MEDIA _INFO : "media_info" ,
STATISTICS _INFO : "statistics_info"
} ;
n . default = i
} , { } ] ,
36 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( ) {
i ( this , e )
}
return r ( e , null , [ {
key : "getSilentFrame" ,
value : function ( e , t ) {
if ( "mp4a.40.2" === e ) {
if ( 1 === t ) return new Uint8Array ( [ 0 , 200 , 0 , 128 , 35 , 128 ] ) ;
if ( 2 === t ) return new Uint8Array ( [ 33 , 0 , 73 , 144 , 2 , 25 , 0 , 35 , 128 ] ) ;
if ( 3 === t ) return new Uint8Array ( [ 0 , 200 , 0 , 128 , 32 , 132 , 1 , 38 , 64 , 8 , 100 , 0 , 142 ] ) ;
if ( 4 === t ) return new Uint8Array ( [ 0 , 200 , 0 , 128 , 32 , 132 , 1 , 38 , 64 , 8 , 100 , 0 , 128 , 44 , 128 , 8 , 2 , 56 ] ) ;
if ( 5 === t ) return new Uint8Array ( [ 0 , 200 , 0 , 128 , 32 , 132 , 1 , 38 , 64 , 8 , 100 , 0 , 130 , 48 , 4 , 153 , 0 , 33 , 144 , 2 , 56 ] ) ;
if ( 6 === t ) return new Uint8Array ( [ 0 , 200 , 0 , 128 , 32 , 132 , 1 , 38 , 64 , 8 , 100 , 0 , 130 , 48 , 4 , 153 , 0 , 33 , 144 , 2 , 0 , 178 , 0 , 32 , 8 , 224 ] )
} else {
if ( 1 === t ) return new Uint8Array ( [ 1 , 64 , 34 , 128 , 163 , 78 , 230 , 128 , 186 , 8 , 0 , 0 , 0 , 28 , 6 , 241 , 193 , 10 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 94 ] ) ;
if ( 2 === t ) return new Uint8Array ( [ 1 , 64 , 34 , 128 , 163 , 94 , 230 , 128 , 186 , 8 , 0 , 0 , 0 , 0 , 149 , 0 , 6 , 241 , 161 , 10 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 94 ] ) ;
if ( 3 === t ) return new Uint8Array ( [ 1 , 64 , 34 , 128 , 163 , 94 , 230 , 128 , 186 , 8 , 0 , 0 , 0 , 0 , 149 , 0 , 6 , 241 , 161 , 10 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 90 , 94 ] )
}
return null
}
} ] ) , e
} ( ) ;
n . default = s
} , { } ] ,
37 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function e ( ) {
i ( this , e )
}
return r ( e , null , [ {
key : "init" ,
value : function ( ) {
e . types = {
avc1 : [ ] ,
avcC : [ ] ,
btrt : [ ] ,
dinf : [ ] ,
dref : [ ] ,
esds : [ ] ,
ftyp : [ ] ,
hdlr : [ ] ,
mdat : [ ] ,
mdhd : [ ] ,
mdia : [ ] ,
mfhd : [ ] ,
minf : [ ] ,
moof : [ ] ,
moov : [ ] ,
mp4a : [ ] ,
mvex : [ ] ,
mvhd : [ ] ,
sdtp : [ ] ,
stbl : [ ] ,
stco : [ ] ,
stsc : [ ] ,
stsd : [ ] ,
stsz : [ ] ,
stts : [ ] ,
tfdt : [ ] ,
tfhd : [ ] ,
traf : [ ] ,
trak : [ ] ,
trun : [ ] ,
trex : [ ] ,
tkhd : [ ] ,
vmhd : [ ] ,
smhd : [ ] ,
".mp3" : [ ]
} ;
for ( var t in e . types ) e . types . hasOwnProperty ( t ) && ( e . types [ t ] = [ t . charCodeAt ( 0 ) , t . charCodeAt ( 1 ) , t . charCodeAt ( 2 ) , t . charCodeAt ( 3 ) ] ) ;
var n = e . constants = { } ;
n . FTYP = new Uint8Array ( [ 105 , 115 , 111 , 109 , 0 , 0 , 0 , 1 , 105 , 115 , 111 , 109 , 97 , 118 , 99 , 49 ] ) , n . STSD _PREFIX = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] ) , n . STTS = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , n . STSC = n . STCO = n . STTS , n . STSZ = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , n . HDLR _VIDEO = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 118 , 105 , 100 , 101 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 86 , 105 , 100 , 101 , 111 , 72 , 97 , 110 , 100 , 108 , 101 , 114 , 0 ] ) , n . HDLR _AUDIO = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 115 , 111 , 117 , 110 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 83 , 111 , 117 , 110 , 100 , 72 , 97 , 110 , 100 , 108 , 101 , 114 , 0 ] ) , n . DREF = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 12 , 117 , 114 , 108 , 32 , 0 , 0 , 0 , 1 ] ) , n . SMHD = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , n . VMHD = new Uint8Array ( [ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] )
}
} , {
key : "box" ,
value : function ( e ) {
for ( var t = 8 , n = null , i = Array . prototype . slice . call ( arguments , 1 ) , r = i . length , s = 0 ; s < r ; s ++ ) t += i [ s ] . byteLength ;
n = new Uint8Array ( t ) , n [ 0 ] = t >>> 24 & 255 , n [ 1 ] = t >>> 16 & 255 , n [ 2 ] = t >>> 8 & 255 , n [ 3 ] = 255 & t , n . set ( e , 4 ) ;
for ( var a = 8 , o = 0 ; o < r ; o ++ ) n . set ( i [ o ] , a ) , a += i [ o ] . byteLength ;
return n
}
} , {
key : "generateInitSegment" ,
value : function ( t ) {
var n = e . box ( e . types . ftyp , e . constants . FTYP ) ,
i = e . moov ( t ) ,
r = new Uint8Array ( n . byteLength + i . byteLength ) ;
return r . set ( n , 0 ) , r . set ( i , n . byteLength ) , r
}
} , {
key : "moov" ,
value : function ( t ) {
var n = e . mvhd ( t . timescale , t . duration ) ,
i = e . trak ( t ) ,
r = e . mvex ( t ) ;
return e . box ( e . types . moov , n , i , r )
}
} , {
key : "mvhd" ,
value : function ( t , n ) {
return e . box ( e . types . mvhd , new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , t >>> 24 & 255 , t >>> 16 & 255 , t >>> 8 & 255 , 255 & t , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 64 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 255 , 255 , 255 , 255 ] ) )
}
} , {
key : "trak" ,
value : function ( t ) {
return e . box ( e . types . trak , e . tkhd ( t ) , e . mdia ( t ) )
}
} , {
key : "tkhd" ,
value : function ( t ) {
var n = t . id ,
i = t . duration ,
r = t . presentWidth ,
s = t . presentHeight ;
return e . box ( e . types . tkhd , new Uint8Array ( [ 0 , 0 , 0 , 7 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n , 0 , 0 , 0 , 0 , i >>> 24 & 255 , i >>> 16 & 255 , i >>> 8 & 255 , 255 & i , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 64 , 0 , 0 , 0 , r >>> 8 & 255 , 255 & r , 0 , 0 , s >>> 8 & 255 , 255 & s , 0 , 0 ] ) )
}
} , {
key : "mdia" ,
value : function ( t ) {
return e . box ( e . types . mdia , e . mdhd ( t ) , e . hdlr ( t ) , e . minf ( t ) )
}
} , {
key : "mdhd" ,
value : function ( t ) {
var n = t . timescale ,
i = t . duration ;
return e . box ( e . types . mdhd , new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n , i >>> 24 & 255 , i >>> 16 & 255 , i >>> 8 & 255 , 255 & i , 85 , 196 , 0 , 0 ] ) )
}
} , {
key : "hdlr" ,
value : function ( t ) {
var n = null ;
return n = "audio" === t . type ? e . constants . HDLR _AUDIO : e . constants . HDLR _VIDEO , e . box ( e . types . hdlr , n )
}
} , {
key : "minf" ,
value : function ( t ) {
var n = null ;
return n = "audio" === t . type ? e . box ( e . types . smhd , e . constants . SMHD ) : e . box ( e . types . vmhd , e . constants . VMHD ) , e . box ( e . types . minf , n , e . dinf ( ) , e . stbl ( t ) )
}
} , {
key : "dinf" ,
value : function ( ) {
return e . box ( e . types . dinf , e . box ( e . types . dref , e . constants . DREF ) )
}
} , {
key : "stbl" ,
value : function ( t ) {
return e . box ( e . types . stbl , e . stsd ( t ) , e . box ( e . types . stts , e . constants . STTS ) , e . box ( e . types . stsc , e . constants . STSC ) , e . box ( e . types . stsz , e . constants . STSZ ) , e . box ( e . types . stco , e . constants . STCO ) )
}
} , {
key : "stsd" ,
value : function ( t ) {
return "audio" === t . type ? "mp3" === t . codec ? e . box ( e . types . stsd , e . constants . STSD _PREFIX , e . mp3 ( t ) ) : e . box ( e . types . stsd , e . constants . STSD _PREFIX , e . mp4a ( t ) ) : e . box ( e . types . stsd , e . constants . STSD _PREFIX , e . avc1 ( t ) )
}
} , {
key : "mp3" ,
value : function ( t ) {
var n = t . channelCount ,
i = t . audioSampleRate ,
r = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , n , 0 , 16 , 0 , 0 , 0 , 0 , i >>> 8 & 255 , 255 & i , 0 , 0 ] ) ;
return e . box ( e . types [ ".mp3" ] , r )
}
} , {
key : "mp4a" ,
value : function ( t ) {
var n = t . channelCount ,
i = t . audioSampleRate ,
r = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , n , 0 , 16 , 0 , 0 , 0 , 0 , i >>> 8 & 255 , 255 & i , 0 , 0 ] ) ;
return e . box ( e . types . mp4a , r , e . esds ( t ) )
}
} , {
key : "esds" ,
value : function ( t ) {
var n = t . config || [ ] ,
i = n . length ,
r = new Uint8Array ( [ 0 , 0 , 0 , 0 , 3 , 23 + i , 0 , 1 , 0 , 4 , 15 + i , 64 , 21 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 ] . concat ( [ i ] ) . concat ( n ) . concat ( [ 6 , 1 , 2 ] ) ) ;
return e . box ( e . types . esds , r )
}
} , {
key : "avc1" ,
value : function ( t ) {
var n = t . avcc ,
i = t . codecWidth ,
r = t . codecHeight ,
s = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , i >>> 8 & 255 , 255 & i , r >>> 8 & 255 , 255 & r , 0 , 72 , 0 , 0 , 0 , 72 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 10 , 120 , 113 , 113 , 47 , 102 , 108 , 118 , 46 , 106 , 115 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 24 , 255 , 255 ] ) ;
return e . box ( e . types . avc1 , s , e . box ( e . types . avcC , n ) )
}
} , {
key : "mvex" ,
value : function ( t ) {
return e . box ( e . types . mvex , e . trex ( t ) )
}
} , {
key : "trex" ,
value : function ( t ) {
var n = t . id ,
i = new Uint8Array ( [ 0 , 0 , 0 , 0 , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 ] ) ;
return e . box ( e . types . trex , i )
}
} , {
key : "moof" ,
value : function ( t , n ) {
return e . box ( e . types . moof , e . mfhd ( t . sequenceNumber ) , e . traf ( t , n ) )
}
} , {
key : "mfhd" ,
value : function ( t ) {
var n = new Uint8Array ( [ 0 , 0 , 0 , 0 , t >>> 24 & 255 , t >>> 16 & 255 , t >>> 8 & 255 , 255 & t ] ) ;
return e . box ( e . types . mfhd , n )
}
} , {
key : "traf" ,
value : function ( t , n ) {
var i = t . id ,
r = e . box ( e . types . tfhd , new Uint8Array ( [ 0 , 0 , 0 , 0 , i >>> 24 & 255 , i >>> 16 & 255 , i >>> 8 & 255 , 255 & i ] ) ) ,
s = e . box ( e . types . tfdt , new Uint8Array ( [ 0 , 0 , 0 , 0 , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n ] ) ) ,
a = e . sdtp ( t ) ,
o = e . trun ( t , a . byteLength + 16 + 16 + 8 + 16 + 8 + 8 ) ;
return e . box ( e . types . traf , r , s , o , a )
}
} , {
key : "sdtp" ,
value : function ( t ) {
for ( var n = t . samples || [ ] , i = n . length , r = new Uint8Array ( 4 + i ) , s = 0 ; s < i ; s ++ ) {
var a = n [ s ] . flags ;
r [ s + 4 ] = a . isLeading << 6 | a . dependsOn << 4 | a . isDependedOn << 2 | a . hasRedundancy
}
return e . box ( e . types . sdtp , r )
}
} , {
key : "trun" ,
value : function ( t , n ) {
var i = t . samples || [ ] ,
r = i . length ,
s = 12 + 16 * r ,
a = new Uint8Array ( s ) ;
n += 8 + s , a . set ( [ 0 , 0 , 15 , 1 , r >>> 24 & 255 , r >>> 16 & 255 , r >>> 8 & 255 , 255 & r , n >>> 24 & 255 , n >>> 16 & 255 , n >>> 8 & 255 , 255 & n ] , 0 ) ;
for ( var o = 0 ; o < r ; o ++ ) {
var u = i [ o ] . duration ,
l = i [ o ] . size ,
d = i [ o ] . flags ,
h = i [ o ] . cts ;
a . set ( [ u >>> 24 & 255 , u >>> 16 & 255 , u >>> 8 & 255 , 255 & u , l >>> 24 & 255 , l >>> 16 & 255 , l >>> 8 & 255 , 255 & l , d . isLeading << 2 | d . dependsOn , d . isDependedOn << 6 | d . hasRedundancy << 4 | d . isNonSync , 0 , 0 , h >>> 24 & 255 , h >>> 16 & 255 , h >>> 8 & 255 , 255 & h ] , 12 + 16 * o )
}
return e . box ( e . types . trun , a )
}
} , {
key : "mdat" ,
value : function ( t ) {
return e . box ( e . types . mdat , t )
}
} ] ) , e
} ( ) ;
s . init ( ) , n . default = s
} , { } ] ,
38 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "../utils/logger.js" ) ,
o = i ( a ) ,
u = e ( "./mp4-generator.js" ) ,
l = i ( u ) ,
d = e ( "./aac-silent.js" ) ,
h = i ( d ) ,
f = e ( "../utils/browser.js" ) ,
c = i ( f ) ,
_ = e ( "../core/media-segment-info.js" ) ,
m = e ( "../utils/exception.js" ) ,
p = function ( ) {
function e ( t ) {
r ( this , e ) , this . TAG = "MP4Remuxer" , this . _config = t , this . _isLive = ! 0 === t . isLive , this . _dtsBase = - 1 , this . _dtsBaseInited = ! 1 , this . _audioDtsBase = 1 / 0 , this . _videoDtsBase = 1 / 0 , this . _audioNextDts = void 0 , this . _videoNextDts = void 0 , this . _audioStashedLastSample = null , this . _videoStashedLastSample = null , this . _audioMeta = null , this . _videoMeta = null , this . _audioSegmentInfoList = new _ . MediaSegmentInfoList ( "audio" ) , this . _videoSegmentInfoList = new _ . MediaSegmentInfoList ( "video" ) , this . _onInitSegment = null , this . _onMediaSegment = null , this . _forceFirstIDR = ! ( ! c . default . chrome || ! ( c . default . version . major < 50 || 50 === c . default . version . major && c . default . version . build < 2661 ) ) , this . _fillSilentAfterSeek = c . default . msedge || c . default . msie , this . _mp3UseMpegAudio = ! c . default . firefox , this . _fillAudioTimestampGap = this . _config . fixAudioTimestampGap
}
return s ( e , [ {
key : "destroy" ,
value : function ( ) {
this . _dtsBase = - 1 , this . _dtsBaseInited = ! 1 , this . _audioMeta = null , this . _videoMeta = null , this . _audioSegmentInfoList . clear ( ) , this . _audioSegmentInfoList = null , this . _videoSegmentInfoList . clear ( ) , this . _videoSegmentInfoList = null , this . _onInitSegment = null , this . _onMediaSegment = null
}
} , {
key : "bindDataSource" ,
value : function ( e ) {
return e . onDataAvailable = this . remux . bind ( this ) , e . onTrackMetadata = this . _onTrackMetadataReceived . bind ( this ) , this
}
} , {
key : "insertDiscontinuity" ,
value : function ( ) {
this . _audioNextDts = this . _videoNextDts = void 0
}
} , {
key : "seek" ,
value : function ( e ) {
this . _audioStashedLastSample = null , this . _videoStashedLastSample = null , this . _videoSegmentInfoList . clear ( ) , this . _audioSegmentInfoList . clear ( )
}
} , {
key : "remux" ,
value : function ( e , t ) {
if ( ! this . _onMediaSegment ) throw new m . IllegalStateException ( "MP4Remuxer: onMediaSegment callback must be specificed!" ) ;
this . _dtsBaseInited || this . _calculateDtsBase ( e , t ) , this . _remuxVideo ( t ) , this . _remuxAudio ( e )
}
} , {
key : "_onTrackMetadataReceived" ,
value : function ( e , t ) {
var n = null ,
i = "mp4" ,
r = t . codec ;
if ( "audio" === e ) this . _audioMeta = t , "mp3" === t . codec && this . _mp3UseMpegAudio ? ( i = "mpeg" , r = "" , n = new Uint8Array ) : n = l . default . generateInitSegment ( t ) ;
else {
if ( "video" !== e ) return ;
this . _videoMeta = t , n = l . default . generateInitSegment ( t )
}
if ( ! this . _onInitSegment ) throw new m . IllegalStateException ( "MP4Remuxer: onInitSegment callback must be specified!" ) ;
this . _onInitSegment ( e , {
type : e ,
data : n . buffer ,
codec : r ,
container : e + "/" + i ,
mediaDuration : t . duration
} )
}
} , {
key : "_calculateDtsBase" ,
value : function ( e , t ) {
this . _dtsBaseInited || ( e . samples && e . samples . length && ( this . _audioDtsBase = e . samples [ 0 ] . dts ) , t . samples && t . samples . length && ( this . _videoDtsBase = t . samples [ 0 ] . dts ) , this . _dtsBase = Math . min ( this . _audioDtsBase , this . _videoDtsBase ) , this . _dtsBaseInited = ! 0 )
}
} , {
key : "flushStashedSamples" ,
value : function ( ) {
var e = this . _videoStashedLastSample ,
t = this . _audioStashedLastSample ,
n = {
type : "video" ,
id : 1 ,
sequenceNumber : 0 ,
samples : [ ] ,
length : 0
} ;
null != e && ( n . samples . push ( e ) , n . length = e . length ) ;
var i = {
type : "audio" ,
id : 2 ,
sequenceNumber : 0 ,
samples : [ ] ,
length : 0
} ;
null != t && ( i . samples . push ( t ) , i . length = t . length ) , this . _videoStashedLastSample = null , this . _audioStashedLastSample = null , this . _remuxVideo ( n , ! 0 ) , this . _remuxAudio ( i , ! 0 )
}
} , {
key : "_remuxAudio" ,
value : function ( e , t ) {
if ( null != this . _audioMeta ) {
var n = e ,
i = n . samples ,
r = void 0 ,
s = - 1 ,
a = - 1 ,
u = this . _audioMeta . refSampleDuration ,
d = "mp3" === this . _audioMeta . codec && this . _mp3UseMpegAudio ,
f = this . _dtsBaseInited && void 0 === this . _audioNextDts ,
m = ! 1 ;
if ( i && 0 !== i . length && ( 1 !== i . length || t ) ) {
var p = 0 ,
v = null ,
g = 0 ;
d ? ( p = 0 , g = n . length ) : ( p = 8 , g = 8 + n . length ) ;
var y = null ;
if ( i . length > 1 && ( y = i . pop ( ) , g -= y . length ) , null != this . _audioStashedLastSample ) {
var E = this . _audioStashedLastSample ;
this . _audioStashedLastSample = null , i . unshift ( E ) , g += E . length
}
null != y && ( this . _audioStashedLastSample = y ) ;
var b = i [ 0 ] . dts - this . _dtsBase ;
if ( this . _audioNextDts ) r = b - this . _audioNextDts ;
else if ( this . _audioSegmentInfoList . isEmpty ( ) ) r = 0 , this . _fillSilentAfterSeek && ! this . _videoSegmentInfoList . isEmpty ( ) && "mp3" !== this . _audioMeta . originalCodec && ( m = ! 0 ) ;
else {
var S = this . _audioSegmentInfoList . getLastSampleBefore ( b ) ;
if ( null != S ) {
var k = b - ( S . originalDts + S . duration ) ;
k <= 3 && ( k = 0 ) ;
var L = S . dts + S . duration + k ;
r = b - L
} else r = 0
}
if ( m ) {
var w = b - r ,
R = this . _videoSegmentInfoList . getLastSegmentBefore ( b ) ;
if ( null != R && R . beginDts < w ) {
var A = h . default . getSilentFrame ( this . _audioMeta . originalCodec , this . _audioMeta . channelCount ) ;
if ( A ) {
var O = R . beginDts ,
T = w - R . beginDts ;
o . default . v ( this . TAG , "InsertPrefixSilentAudio: dts: " + O + ", duration: " + T ) , i . unshift ( {
unit : A ,
dts : O ,
pts : O
} ) , g += A . byteLength
}
} else m = ! 1
}
for ( var C = [ ] , I = 0 ; I < i . length ; I ++ ) {
var x = i [ I ] ,
M = x . unit ,
D = x . dts - this . _dtsBase ,
B = D - r ; - 1 === s && ( s = B ) ;
var j = 0 ;
if ( I !== i . length - 1 ) {
j = i [ I + 1 ] . dts - this . _dtsBase - r - B
} else if ( null != y ) {
var P = y . dts - this . _dtsBase - r ;
j = P - B
} else j = C . length >= 1 ? C [ C . length - 1 ] . duration : Math . floor ( u ) ;
var U = ! 1 ,
N = null ;
if ( j > 1.5 * u && "mp3" !== this . _audioMeta . codec && this . _fillAudioTimestampGap && ! c . default . safari ) {
U = ! 0 ;
var F = Math . abs ( j - u ) ,
G = Math . ceil ( F / u ) ,
V = B + u ;
o . default . w ( this . TAG , "Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: " + ( B + j ) + " ms, expected: " + ( B + Math . round ( u ) ) + " ms, delta: " + Math . round ( F ) + " ms, generate: " + G + " frames" ) ;
var z = h . default . getSilentFrame ( this . _audioMeta . originalCodec , this . _audioMeta . channelCount ) ;
null == z && ( o . default . w ( this . TAG , "Unable to generate silent frame for " + this . _audioMeta . originalCodec + " with " + this . _audioMeta . channelCount + " channels, repeat last frame" ) , z = M ) , N = [ ] ;
for ( var H = 0 ; H < G ; H ++ ) {
var K = Math . round ( V ) ;
if ( N . length > 0 ) {
var q = N [ N . length - 1 ] ;
q . duration = K - q . dts
}
var W = {
dts : K ,
pts : K ,
cts : 0 ,
unit : z ,
size : z . byteLength ,
duration : 0 ,
originalDts : D ,
flags : {
isLeading : 0 ,
dependsOn : 1 ,
isDependedOn : 0 ,
hasRedundancy : 0
}
} ;
N . push ( W ) , g += M . byteLength , V += u
}
var X = N [ N . length - 1 ] ;
X . duration = B + j - X . dts , j = Math . round ( u )
}
C . push ( {
dts : B ,
pts : B ,
cts : 0 ,
unit : x . unit ,
size : x . unit . byteLength ,
duration : j ,
originalDts : D ,
flags : {
isLeading : 0 ,
dependsOn : 1 ,
isDependedOn : 0 ,
hasRedundancy : 0
}
} ) , U && C . push . apply ( C , N )
}
d ? v = new Uint8Array ( g ) : ( v = new Uint8Array ( g ) , v [ 0 ] = g >>> 24 & 255 , v [ 1 ] = g >>> 16 & 255 , v [ 2 ] = g >>> 8 & 255 , v [ 3 ] = 255 & g , v . set ( l . default . types . mdat , 4 ) ) ;
for ( var Y = 0 ; Y < C . length ; Y ++ ) {
var Z = C [ Y ] . unit ;
v . set ( Z , p ) , p += Z . byteLength
}
var Q = C [ C . length - 1 ] ;
a = Q . dts + Q . duration , this . _audioNextDts = a ;
var J = new _ . MediaSegmentInfo ;
J . beginDts = s , J . endDts = a , J . beginPts = s , J . endPts = a , J . originalBeginDts = C [ 0 ] . originalDts , J . originalEndDts = Q . originalDts + Q . duration , J . firstSample = new _ . SampleInfo ( C [ 0 ] . dts , C [ 0 ] . pts , C [ 0 ] . duration , C [ 0 ] . originalDts , ! 1 ) , J . lastSample = new _ . SampleInfo ( Q . dts , Q . pts , Q . duration , Q . originalDts , ! 1 ) , this . _isLive || this . _audioSegmentInfoList . append ( J ) , n . samples = C , n . sequenceNumber ++ ;
var $ = null ;
$ = d ? new Uint8Array : l . default . moof ( n , s ) , n . samples = [ ] , n . length = 0 ;
var ee = {
type : "audio" ,
data : this . _mergeBoxes ( $ , v ) . buffer ,
sampleCount : C . length ,
info : J
} ;
d && f && ( ee . timestampOffset = s ) , this . _onMediaSegment ( "audio" , ee )
}
}
}
} , {
key : "_remuxVideo" ,
value : function ( e , t ) {
if ( null != this . _videoMeta ) {
var n = e ,
i = n . samples ,
r = void 0 ,
s = - 1 ,
a = - 1 ,
o = - 1 ,
u = - 1 ;
if ( i && 0 !== i . length && ( 1 !== i . length || t ) ) {
var d = 8 ,
h = null ,
f = 8 + e . length ,
c = null ;
if ( i . length > 1 && ( c = i . pop ( ) , f -= c . length ) , null != this . _videoStashedLastSample ) {
var m = this . _videoStashedLastSample ;
this . _videoStashedLastSample = null , i . unshift ( m ) , f += m . length
}
null != c && ( this . _videoStashedLastSample = c ) ;
var p = i [ 0 ] . dts - this . _dtsBase ;
if ( this . _videoNextDts ) r = p - this . _videoNextDts ;
else if ( this . _videoSegmentInfoList . isEmpty ( ) ) r = 0 ;
else {
var v = this . _videoSegmentInfoList . getLastSampleBefore ( p ) ;
if ( null != v ) {
var g = p - ( v . originalDts + v . duration ) ;
g <= 3 && ( g = 0 ) ;
var y = v . dts + v . duration + g ;
r = p - y
} else r = 0
}
for ( var E = new _ . MediaSegmentInfo , b = [ ] , S = 0 ; S < i . length ; S ++ ) {
var k = i [ S ] ,
L = k . dts - this . _dtsBase ,
w = k . isKeyframe ,
R = L - r ,
A = k . cts ,
O = R + A ; - 1 === s && ( s = R , o = O ) ;
var T = 0 ;
if ( S !== i . length - 1 ) {
T = i [ S + 1 ] . dts - this . _dtsBase - r - R
} else if ( null != c ) {
var C = c . dts - this . _dtsBase - r ;
T = C - R
} else T = b . length >= 1 ? b [ b . length - 1 ] . duration : Math . floor ( this . _videoMeta . refSampleDuration ) ;
if ( w ) {
var I = new _ . SampleInfo ( R , O , T , k . dts , ! 0 ) ;
I . fileposition = k . fileposition , E . appendSyncPoint ( I )
}
b . push ( {
dts : R ,
pts : O ,
cts : A ,
units : k . units ,
size : k . length ,
isKeyframe : w ,
duration : T ,
originalDts : L ,
flags : {
isLeading : 0 ,
dependsOn : w ? 2 : 1 ,
isDependedOn : w ? 1 : 0 ,
hasRedundancy : 0 ,
isNonSync : w ? 0 : 1
}
} )
}
h = new Uint8Array ( f ) , h [ 0 ] = f >>> 24 & 255 , h [ 1 ] = f >>> 16 & 255 , h [ 2 ] = f >>> 8 & 255 , h [ 3 ] = 255 & f , h . set ( l . default . types . mdat , 4 ) ;
for ( var x = 0 ; x < b . length ; x ++ )
for ( var M = b [ x ] . units ; M . length ; ) {
var D = M . shift ( ) ,
B = D . data ;
h . set ( B , d ) , d += B . byteLength
}
var j = b [ b . length - 1 ] ;
if ( a = j . dts + j . duration , u = j . pts + j . duration , this . _videoNextDts = a , E . beginDts = s , E . endDts = a , E . beginPts = o , E . endPts = u , E . originalBeginDts = b [ 0 ] . originalDts , E . originalEndDts = j . originalDts + j . duration , E . firstSample = new _ . SampleInfo ( b [ 0 ] . dts , b [ 0 ] . pts , b [ 0 ] . duration , b [ 0 ] . originalDts , b [ 0 ] . isKeyframe ) , E . lastSample = new _ . SampleInfo ( j . dts , j . pts , j . duration , j . originalDts , j . isKeyframe ) , this . _isLive || this . _videoSegmentInfoList . append ( E ) , n . samples = b , n . sequenceNumber ++ , this . _forceFirstIDR ) {
var P = b [ 0 ] . flags ;
P . dependsOn = 2 , P . isNonSync = 0
}
var U = l . default . moof ( n , s ) ;
n . samples = [ ] , n . length = 0 , this . _onMediaSegment ( "video" , {
type : "video" ,
data : this . _mergeBoxes ( U , h ) . buffer ,
sampleCount : b . length ,
info : E
} )
}
}
}
} , {
key : "_mergeBoxes" ,
value : function ( e , t ) {
var n = new Uint8Array ( e . byteLength + t . byteLength ) ;
return n . set ( e , 0 ) , n . set ( t , e . byteLength ) , n
}
} , {
key : "onInitSegment" ,
get : function ( ) {
return this . _onInitSegment
} ,
set : function ( e ) {
this . _onInitSegment = e
}
} , {
key : "onMediaSegment" ,
get : function ( ) {
return this . _onMediaSegment
} ,
set : function ( e ) {
this . _onMediaSegment = e
}
} ] ) , e
} ( ) ;
n . default = p
} , {
"../core/media-segment-info.js" : 8 ,
"../utils/browser.js" : 39 ,
"../utils/exception.js" : 40 ,
"../utils/logger.js" : 41 ,
"./aac-silent.js" : 36 ,
"./mp4-generator.js" : 37
} ] ,
39 : [ function ( e , t , n ) {
"use strict" ;
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var i = { } ;
! function ( ) {
var e = self . navigator . userAgent . toLowerCase ( ) ,
t = /(edge)\/([\w.]+)/ . exec ( e ) || /(opr)[\/]([\w.]+)/ . exec ( e ) || /(chrome)[ \/]([\w.]+)/ . exec ( e ) || /(iemobile)[\/]([\w.]+)/ . exec ( e ) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/ . exec ( e ) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/ . exec ( e ) || /(webkit)[ \/]([\w.]+)/ . exec ( e ) || /(opera)(?:.*version|)[ \/]([\w.]+)/ . exec ( e ) || /(msie) ([\w.]+)/ . exec ( e ) || e . indexOf ( "trident" ) >= 0 && /(rv)(?::| )([\w.]+)/ . exec ( e ) || e . indexOf ( "compatible" ) < 0 && /(firefox)[ \/]([\w.]+)/ . exec ( e ) || [ ] ,
n = /(ipad)/ . exec ( e ) || /(ipod)/ . exec ( e ) || /(windows phone)/ . exec ( e ) || /(iphone)/ . exec ( e ) || /(kindle)/ . exec ( e ) || /(android)/ . exec ( e ) || /(windows)/ . exec ( e ) || /(mac)/ . exec ( e ) || /(linux)/ . exec ( e ) || /(cros)/ . exec ( e ) || [ ] ,
r = {
browser : t [ 5 ] || t [ 3 ] || t [ 1 ] || "" ,
version : t [ 2 ] || t [ 4 ] || "0" ,
majorVersion : t [ 4 ] || t [ 2 ] || "0" ,
platform : n [ 0 ] || ""
} ,
s = { } ;
if ( r . browser ) {
s [ r . browser ] = ! 0 ;
var a = r . majorVersion . split ( "." ) ;
s . version = {
major : parseInt ( r . majorVersion , 10 ) ,
string : r . version
} , a . length > 1 && ( s . version . minor = parseInt ( a [ 1 ] , 10 ) ) , a . length > 2 && ( s . version . build = parseInt ( a [ 2 ] , 10 ) )
}
r . platform && ( s [ r . platform ] = ! 0 ) , ( s . chrome || s . opr || s . safari ) && ( s . webkit = ! 0 ) , ( s . rv || s . iemobile ) && ( s . rv && delete s . rv , r . browser = "msie" , s . msie = ! 0 ) , s . edge && ( delete s . edge , r . browser = "msedge" , s . msedge = ! 0 ) , s . opr && ( r . browser = "opera" , s . opera = ! 0 ) , s . safari && s . android && ( r . browser = "android" , s . android = ! 0 ) , s . name = r . browser , s . platform = r . platform ;
for ( var o in i ) i . hasOwnProperty ( o ) && delete i [ o ] ;
Object . assign ( i , s )
} ( ) , n . default = i
} , { } ] ,
40 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ;
return ! t || "object" != typeof t && "function" != typeof t ? e : t
}
function r ( e , t ) {
if ( "function" != typeof t && null !== t ) throw new TypeError ( "Super expression must either be null or a function, not " + typeof t ) ;
e . prototype = Object . create ( t && t . prototype , {
constructor : {
value : e ,
enumerable : ! 1 ,
writable : ! 0 ,
configurable : ! 0
}
} ) , t && ( Object . setPrototypeOf ? Object . setPrototypeOf ( e , t ) : e . _ _proto _ _ = t )
}
function s ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var a = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
o = n . RuntimeException = function ( ) {
function e ( t ) {
s ( this , e ) , this . _message = t
}
return a ( e , [ {
key : "toString" ,
value : function ( ) {
return this . name + ": " + this . message
}
} , {
key : "name" ,
get : function ( ) {
return "RuntimeException"
}
} , {
key : "message" ,
get : function ( ) {
return this . _message
}
} ] ) , e
} ( ) ;
n . IllegalStateException = function ( e ) {
function t ( e ) {
return s ( this , t ) , i ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , e ) )
}
return r ( t , e ) , a ( t , [ {
key : "name" ,
get : function ( ) {
return "IllegalStateException"
}
} ] ) , t
} ( o ) , n . InvalidArgumentException = function ( e ) {
function t ( e ) {
return s ( this , t ) , i ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , e ) )
}
return r ( t , e ) , a ( t , [ {
key : "name" ,
get : function ( ) {
return "InvalidArgumentException"
}
} ] ) , t
} ( o ) , n . NotImplementedException = function ( e ) {
function t ( e ) {
return s ( this , t ) , i ( this , ( t . _ _proto _ _ || Object . getPrototypeOf ( t ) ) . call ( this , e ) )
}
return r ( t , e ) , a ( t , [ {
key : "name" ,
get : function ( ) {
return "NotImplementedException"
}
} ] ) , t
} ( o )
} , { } ] ,
41 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = e ( "events" ) ,
a = function ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
} ( s ) ,
o = function ( ) {
function e ( ) {
i ( this , e )
}
return r ( e , null , [ {
key : "e" ,
value : function ( t , n ) {
t && ! e . FORCE _GLOBAL _TAG || ( t = e . GLOBAL _TAG ) ;
var i = "[" + t + "] > " + n ;
e . ENABLE _CALLBACK && e . emitter . emit ( "log" , "error" , i ) , e . ENABLE _ERROR && ( console . error ? console . error ( i ) : console . warn ? console . warn ( i ) : console . log ( i ) )
}
} , {
key : "i" ,
value : function ( t , n ) {
t && ! e . FORCE _GLOBAL _TAG || ( t = e . GLOBAL _TAG ) ;
var i = "[" + t + "] > " + n ;
e . ENABLE _CALLBACK && e . emitter . emit ( "log" , "info" , i ) , e . ENABLE _INFO && ( console . info ? console . info ( i ) : console . log ( i ) )
}
} , {
key : "w" ,
value : function ( t , n ) {
t && ! e . FORCE _GLOBAL _TAG || ( t = e . GLOBAL _TAG ) ;
var i = "[" + t + "] > " + n ;
e . ENABLE _CALLBACK && e . emitter . emit ( "log" , "warn" , i ) , e . ENABLE _WARN && ( console . warn ? console . warn ( i ) : console . log ( i ) )
}
} , {
key : "d" ,
value : function ( t , n ) {
t && ! e . FORCE _GLOBAL _TAG || ( t = e . GLOBAL _TAG ) ;
var i = "[" + t + "] > " + n ;
e . ENABLE _CALLBACK && e . emitter . emit ( "log" , "debug" , i ) , e . ENABLE _DEBUG && ( console . debug ? console . debug ( i ) : console . log ( i ) )
}
} , {
key : "v" ,
value : function ( t , n ) {
t && ! e . FORCE _GLOBAL _TAG || ( t = e . GLOBAL _TAG ) ;
var i = "[" + t + "] > " + n ;
e . ENABLE _CALLBACK && e . emitter . emit ( "log" , "verbose" , i ) , e . ENABLE _VERBOSE && console . log ( i )
}
} ] ) , e
} ( ) ;
o . GLOBAL _TAG = "flv.js" , o . FORCE _GLOBAL _TAG = ! 1 , o . ENABLE _ERROR = ! 0 , o . ENABLE _INFO = ! 0 , o . ENABLE _WARN = ! 0 , o . ENABLE _DEBUG = ! 0 , o . ENABLE _VERBOSE = ! 0 , o . ENABLE _CALLBACK = ! 1 , o . emitter = new a . default , n . default = o
} , {
events : 2
} ] ,
42 : [ function ( e , t , n ) {
"use strict" ;
function i ( e ) {
return e && e . _ _esModule ? e : {
default : e
}
}
function r ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var s = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
a = e ( "events" ) ,
o = i ( a ) ,
u = e ( "./logger.js" ) ,
l = i ( u ) ,
d = function ( ) {
function e ( ) {
r ( this , e )
}
return s ( e , null , [ {
key : "getConfig" ,
value : function ( ) {
return {
globalTag : l . default . GLOBAL _TAG ,
forceGlobalTag : l . default . FORCE _GLOBAL _TAG ,
enableVerbose : l . default . ENABLE _VERBOSE ,
enableDebug : l . default . ENABLE _DEBUG ,
enableInfo : l . default . ENABLE _INFO ,
enableWarn : l . default . ENABLE _WARN ,
enableError : l . default . ENABLE _ERROR ,
enableCallback : l . default . ENABLE _CALLBACK
}
}
} , {
key : "applyConfig" ,
value : function ( e ) {
l . default . GLOBAL _TAG = e . globalTag , l . default . FORCE _GLOBAL _TAG = e . forceGlobalTag , l . default . ENABLE _VERBOSE = e . enableVerbose , l . default . ENABLE _DEBUG = e . enableDebug , l . default . ENABLE _INFO = e . enableInfo , l . default . ENABLE _WARN = e . enableWarn , l . default . ENABLE _ERROR = e . enableError , l . default . ENABLE _CALLBACK = e . enableCallback
}
} , {
key : "_notifyChange" ,
value : function ( ) {
var t = e . emitter ;
if ( t . listenerCount ( "change" ) > 0 ) {
var n = e . getConfig ( ) ;
t . emit ( "change" , n )
}
}
} , {
key : "registerListener" ,
value : function ( t ) {
e . emitter . addListener ( "change" , t )
}
} , {
key : "removeListener" ,
value : function ( t ) {
e . emitter . removeListener ( "change" , t )
}
} , {
key : "addLogListener" ,
value : function ( t ) {
l . default . emitter . addListener ( "log" , t ) , l . default . emitter . listenerCount ( "log" ) > 0 && ( l . default . ENABLE _CALLBACK = ! 0 , e . _notifyChange ( ) )
}
} , {
key : "removeLogListener" ,
value : function ( t ) {
l . default . emitter . removeListener ( "log" , t ) , 0 === l . default . emitter . listenerCount ( "log" ) && ( l . default . ENABLE _CALLBACK = ! 1 , e . _notifyChange ( ) )
}
} , {
key : "forceGlobalTag" ,
get : function ( ) {
return l . default . FORCE _GLOBAL _TAG
} ,
set : function ( t ) {
l . default . FORCE _GLOBAL _TAG = t , e . _notifyChange ( )
}
} , {
key : "globalTag" ,
get : function ( ) {
return l . default . GLOBAL _TAG
} ,
set : function ( t ) {
l . default . GLOBAL _TAG = t , e . _notifyChange ( )
}
} , {
key : "enableAll" ,
get : function ( ) {
return l . default . ENABLE _VERBOSE && l . default . ENABLE _DEBUG && l . default . ENABLE _INFO && l . default . ENABLE _WARN && l . default . ENABLE _ERROR
} ,
set : function ( t ) {
l . default . ENABLE _VERBOSE = t , l . default . ENABLE _DEBUG = t , l . default . ENABLE _INFO = t , l . default . ENABLE _WARN = t , l . default . ENABLE _ERROR = t , e . _notifyChange ( )
}
} , {
key : "enableDebug" ,
get : function ( ) {
return l . default . ENABLE _DEBUG
} ,
set : function ( t ) {
l . default . ENABLE _DEBUG = t , e . _notifyChange ( )
}
} , {
key : "enableVerbose" ,
get : function ( ) {
return l . default . ENABLE _VERBOSE
} ,
set : function ( t ) {
l . default . ENABLE _VERBOSE = t , e . _notifyChange ( )
}
} , {
key : "enableInfo" ,
get : function ( ) {
return l . default . ENABLE _INFO
} ,
set : function ( t ) {
l . default . ENABLE _INFO = t , e . _notifyChange ( )
}
} , {
key : "enableWarn" ,
get : function ( ) {
return l . default . ENABLE _WARN
} ,
set : function ( t ) {
l . default . ENABLE _WARN = t , e . _notifyChange ( )
}
} , {
key : "enableError" ,
get : function ( ) {
return l . default . ENABLE _ERROR
} ,
set : function ( t ) {
l . default . ENABLE _ERROR = t , e . _notifyChange ( )
}
} ] ) , e
} ( ) ;
d . emitter = new o . default , n . default = d
} , {
"./logger.js" : 41 ,
events : 2
} ] ,
43 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t ) {
if ( ! ( e instanceof t ) ) throw new TypeError ( "Cannot call a class as a function" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) ;
var r = function ( ) {
function e ( e , t ) {
for ( var n = 0 ; n < t . length ; n ++ ) {
var i = t [ n ] ;
i . enumerable = i . enumerable || ! 1 , i . configurable = ! 0 , "value" in i && ( i . writable = ! 0 ) , Object . defineProperty ( e , i . key , i )
}
}
return function ( t , n , i ) {
return n && e ( t . prototype , n ) , i && e ( t , i ) , t
}
} ( ) ,
s = function ( ) {
function t ( ) {
i ( this , t )
}
return r ( t , null , [ {
key : "install" ,
value : function ( ) {
Object . setPrototypeOf = Object . setPrototypeOf || function ( e , t ) {
return e . _ _proto _ _ = t , e
} , Object . assign = Object . assign || function ( e ) {
if ( void 0 === e || null === e ) throw new TypeError ( "Cannot convert undefined or null to object" ) ;
for ( var t = Object ( e ) , n = 1 ; n < arguments . length ; n ++ ) {
var i = arguments [ n ] ;
if ( void 0 !== i && null !== i )
for ( var r in i ) i . hasOwnProperty ( r ) && ( t [ r ] = i [ r ] )
}
return t
} , "function" != typeof self . Promise && e ( "es6-promise" ) . polyfill ( )
}
} ] ) , t
} ( ) ;
s . install ( ) , n . default = s
} , {
"es6-promise" : 1
} ] ,
44 : [ function ( e , t , n ) {
"use strict" ;
function i ( e , t , n ) {
var i = e ;
if ( t + n < i . length ) {
for ( ; n -- ; )
if ( 128 != ( 192 & i [ ++ t ] ) ) return ! 1 ;
return ! 0
}
return ! 1
}
function r ( e ) {
for ( var t = [ ] , n = e , r = 0 , s = e . length ; r < s ; )
if ( n [ r ] < 128 ) t . push ( String . fromCharCode ( n [ r ] ) ) , ++ r ;
else {
if ( n [ r ] < 192 ) ;
else if ( n [ r ] < 224 ) {
if ( i ( n , r , 1 ) ) {
var a = ( 31 & n [ r ] ) << 6 | 63 & n [ r + 1 ] ;
if ( a >= 128 ) {
t . push ( String . fromCharCode ( 65535 & a ) ) , r += 2 ;
continue
}
}
} else if ( n [ r ] < 240 ) {
if ( i ( n , r , 2 ) ) {
var o = ( 15 & n [ r ] ) << 12 | ( 63 & n [ r + 1 ] ) << 6 | 63 & n [ r + 2 ] ;
if ( o >= 2048 && 55296 != ( 63488 & o ) ) {
t . push ( String . fromCharCode ( 65535 & o ) ) , r += 3 ;
continue
}
}
} else if ( n [ r ] < 248 && i ( n , r , 3 ) ) {
var u = ( 7 & n [ r ] ) << 18 | ( 63 & n [ r + 1 ] ) << 12 | ( 63 & n [ r + 2 ] ) << 6 | 63 & n [ r + 3 ] ;
if ( u > 65536 && u < 1114112 ) {
u -= 65536 , t . push ( String . fromCharCode ( u >>> 10 | 55296 ) ) , t . push ( String . fromCharCode ( 1023 & u | 56320 ) ) , r += 4 ;
continue
}
}
t . push ( String . fromCharCode ( 65533 ) ) , ++ r
} return t . join ( "" )
}
Object . defineProperty ( n , "__esModule" , {
value : ! 0
} ) , n . default = r
} , { } ]
} , { } , [ 21 ] ) ( 21 )
} ) ;
//# sourceMappingURL=flv.min.js.map