bigscreen-player 8.9.1 → 8.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{imscsubtitles-e2151ee1.js → imscsubtitles-7553075b.js} +1 -1
- package/dist/esm/{legacysubtitles-9f94b60a.js → legacysubtitles-dac98ca0.js} +1 -1
- package/dist/esm/{main-7b498fab.js → main-774dbe30.js} +219 -134
- package/dist/esm/main.d.ts +26 -0
- package/dist/esm/main.js +1 -1
- package/dist/esm/{msestrategy-4bf7955f.js → msestrategy-33edd320.js} +73 -2
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { fromXML, generateISD, renderHTML } from 'smp-imsc';
|
|
2
|
-
import { f as findSegmentTemplate, L as LoadUrl, a as DebugToolInstance, P as Plugins, U as Utils, D as DOMHelpers } from './main-
|
|
2
|
+
import { f as findSegmentTemplate, L as LoadUrl, a as DebugToolInstance, P as Plugins, U as Utils, D as DOMHelpers } from './main-774dbe30.js';
|
|
3
3
|
|
|
4
4
|
const SEGMENTS_BUFFER_SIZE = 3;
|
|
5
5
|
const LOAD_ERROR_COUNT_MAX = 3;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as DOMHelpers, a as DebugToolInstance, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-
|
|
1
|
+
import { D as DOMHelpers, a as DebugToolInstance, P as Plugins, L as LoadUrl, T as TransportControlPosition } from './main-774dbe30.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Safely checks if an attribute exists on an element.
|
|
@@ -5961,7 +5961,7 @@ BasicStrategy.getLiveSupport = () => LiveSupport.SEEKABLE;
|
|
|
5961
5961
|
function StrategyPicker() {
|
|
5962
5962
|
return new Promise((resolve, reject) => {
|
|
5963
5963
|
if (window.bigscreenPlayer.playbackStrategy === PlaybackStrategy.MSE) {
|
|
5964
|
-
return import('./msestrategy-
|
|
5964
|
+
return import('./msestrategy-33edd320.js')
|
|
5965
5965
|
.then(({ default: MSEStrategy }) => resolve(MSEStrategy))
|
|
5966
5966
|
.catch(() => {
|
|
5967
5967
|
reject({ error: "strategyDynamicLoadError" });
|
|
@@ -5979,7 +5979,8 @@ function PlayerComponent(
|
|
|
5979
5979
|
mediaSources,
|
|
5980
5980
|
windowType,
|
|
5981
5981
|
stateUpdateCallback,
|
|
5982
|
-
errorCallback
|
|
5982
|
+
errorCallback,
|
|
5983
|
+
callBroadcastMixADCallbacks
|
|
5983
5984
|
) {
|
|
5984
5985
|
const transferFormat = bigscreenPlayerData.media.transferFormat;
|
|
5985
5986
|
|
|
@@ -6003,7 +6004,9 @@ function PlayerComponent(
|
|
|
6003
6004
|
mediaKind,
|
|
6004
6005
|
playbackElement,
|
|
6005
6006
|
bigscreenPlayerData.media.isUHD,
|
|
6006
|
-
bigscreenPlayerData.media.playerSettings
|
|
6007
|
+
bigscreenPlayerData.media.playerSettings,
|
|
6008
|
+
bigscreenPlayerData.enableBroadcastMixAD,
|
|
6009
|
+
callBroadcastMixADCallbacks
|
|
6007
6010
|
);
|
|
6008
6011
|
|
|
6009
6012
|
playbackStrategy.addEventCallback(this, eventCallback);
|
|
@@ -6064,6 +6067,22 @@ function PlayerComponent(
|
|
|
6064
6067
|
return playbackStrategy && playbackStrategy.getSeekableRange()
|
|
6065
6068
|
}
|
|
6066
6069
|
|
|
6070
|
+
function isBroadcastMixADAvailable() {
|
|
6071
|
+
return playbackStrategy && playbackStrategy.isBroadcastMixADAvailable?.()
|
|
6072
|
+
}
|
|
6073
|
+
|
|
6074
|
+
function isBroadcastMixADEnabled() {
|
|
6075
|
+
return playbackStrategy && playbackStrategy.isBroadcastMixADEnabled?.()
|
|
6076
|
+
}
|
|
6077
|
+
|
|
6078
|
+
function setBroadcastMixADOn() {
|
|
6079
|
+
playbackStrategy && playbackStrategy.setBroadcastMixADOn?.();
|
|
6080
|
+
}
|
|
6081
|
+
|
|
6082
|
+
function setBroadcastMixADOff() {
|
|
6083
|
+
playbackStrategy && playbackStrategy.setBroadcastMixADOff?.();
|
|
6084
|
+
}
|
|
6085
|
+
|
|
6067
6086
|
function isPaused() {
|
|
6068
6087
|
return playbackStrategy && playbackStrategy.isPaused()
|
|
6069
6088
|
}
|
|
@@ -6369,6 +6388,10 @@ function PlayerComponent(
|
|
|
6369
6388
|
getPlayerElement,
|
|
6370
6389
|
isPaused,
|
|
6371
6390
|
tearDown,
|
|
6391
|
+
isBroadcastMixADAvailable,
|
|
6392
|
+
isBroadcastMixADEnabled,
|
|
6393
|
+
setBroadcastMixADOn,
|
|
6394
|
+
setBroadcastMixADOff,
|
|
6372
6395
|
}
|
|
6373
6396
|
}
|
|
6374
6397
|
|
|
@@ -6384,49 +6407,54 @@ const PauseTriggers = {
|
|
|
6384
6407
|
DEVICE: 3,
|
|
6385
6408
|
};
|
|
6386
6409
|
|
|
6387
|
-
var Version = "8.
|
|
6388
|
-
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
|
|
6400
|
-
|
|
6401
|
-
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6410
|
+
var Version = "8.10.1";
|
|
6411
|
+
|
|
6412
|
+
/* eslint-disable no-use-before-define */
|
|
6413
|
+
|
|
6414
|
+
let sourceList;
|
|
6415
|
+
let source;
|
|
6416
|
+
let cdn;
|
|
6417
|
+
|
|
6418
|
+
let timeUpdateCallbacks = [];
|
|
6419
|
+
let subtitleCallbacks = [];
|
|
6420
|
+
let stateChangeCallbacks = [];
|
|
6421
|
+
let broadcastMixADCallbacks = [];
|
|
6422
|
+
|
|
6423
|
+
let currentTime;
|
|
6424
|
+
let isSeeking;
|
|
6425
|
+
let seekableRange;
|
|
6426
|
+
let duration;
|
|
6427
|
+
let liveWindowStart;
|
|
6428
|
+
let pausedState = true;
|
|
6429
|
+
let endedState;
|
|
6430
|
+
let mediaKind;
|
|
6431
|
+
let windowType;
|
|
6432
|
+
let subtitlesAvailable;
|
|
6433
|
+
let subtitlesEnabled;
|
|
6434
|
+
let subtitlesHidden;
|
|
6435
|
+
let broadcastMixADAvailable;
|
|
6436
|
+
let broadcastMixADEnabled;
|
|
6437
|
+
let endOfStream;
|
|
6438
|
+
let canSeekState;
|
|
6439
|
+
let canPauseState;
|
|
6440
|
+
let shallowClone;
|
|
6441
|
+
const mockModes = {
|
|
6414
6442
|
NONE: 0,
|
|
6415
6443
|
PLAIN: 1,
|
|
6416
6444
|
JASMINE: 2,
|
|
6417
6445
|
};
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6446
|
+
let mockStatus = { currentlyMocked: false, mode: mockModes.NONE };
|
|
6447
|
+
let initialised;
|
|
6448
|
+
let fatalErrorBufferingTimeout;
|
|
6421
6449
|
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
6450
|
+
let autoProgress;
|
|
6451
|
+
let autoProgressInterval;
|
|
6452
|
+
let initialBuffering = false;
|
|
6425
6453
|
|
|
6426
|
-
|
|
6427
|
-
|
|
6454
|
+
let liveWindowData;
|
|
6455
|
+
let manifestError;
|
|
6428
6456
|
|
|
6429
|
-
|
|
6457
|
+
let excludedFuncs = [
|
|
6430
6458
|
"getDebugLogs",
|
|
6431
6459
|
"mock",
|
|
6432
6460
|
"mockJasmine",
|
|
@@ -6442,10 +6470,10 @@ var excludedFuncs = [
|
|
|
6442
6470
|
];
|
|
6443
6471
|
|
|
6444
6472
|
function startProgress(progressCause) {
|
|
6445
|
-
setTimeout(
|
|
6473
|
+
setTimeout(() => {
|
|
6446
6474
|
if (!autoProgressInterval) {
|
|
6447
6475
|
mockingHooks.changeState(MediaState.PLAYING, progressCause);
|
|
6448
|
-
autoProgressInterval = setInterval(
|
|
6476
|
+
autoProgressInterval = setInterval(() => {
|
|
6449
6477
|
if (windowType !== WindowTypes.STATIC && seekableRange.start && seekableRange.end) {
|
|
6450
6478
|
seekableRange.start += 0.5;
|
|
6451
6479
|
seekableRange.end += 0.5;
|
|
@@ -6471,7 +6499,7 @@ function mock(BigscreenPlayer, opts) {
|
|
|
6471
6499
|
autoProgress = opts && opts.autoProgress;
|
|
6472
6500
|
|
|
6473
6501
|
if (opts && opts.excludedFuncs) {
|
|
6474
|
-
excludedFuncs = excludedFuncs
|
|
6502
|
+
excludedFuncs = [...excludedFuncs, ...opts.excludedFuncs];
|
|
6475
6503
|
}
|
|
6476
6504
|
|
|
6477
6505
|
if (mockStatus.currentlyMocked) {
|
|
@@ -6480,15 +6508,15 @@ function mock(BigscreenPlayer, opts) {
|
|
|
6480
6508
|
shallowClone = Utils.clone(BigscreenPlayer);
|
|
6481
6509
|
|
|
6482
6510
|
// Divert existing functions
|
|
6483
|
-
for (
|
|
6511
|
+
for (const func in BigscreenPlayer) {
|
|
6484
6512
|
if (BigscreenPlayer[func] && mockFunctions[func]) {
|
|
6485
6513
|
BigscreenPlayer[func] = mockFunctions[func];
|
|
6486
6514
|
} else if (!Utils.contains(excludedFuncs, func)) {
|
|
6487
|
-
throw new Error(func
|
|
6515
|
+
throw new Error(`${func} was not mocked or included in the exclusion list`)
|
|
6488
6516
|
}
|
|
6489
6517
|
}
|
|
6490
6518
|
// Add extra functions
|
|
6491
|
-
for (
|
|
6519
|
+
for (const hook in mockingHooks) {
|
|
6492
6520
|
BigscreenPlayer[hook] = mockingHooks[hook];
|
|
6493
6521
|
}
|
|
6494
6522
|
mockStatus = { currentlyMocked: true, mode: mockModes.PLAIN };
|
|
@@ -6498,23 +6526,22 @@ function mockJasmine(BigscreenPlayer, opts) {
|
|
|
6498
6526
|
autoProgress = opts && opts.autoProgress;
|
|
6499
6527
|
|
|
6500
6528
|
if (opts && opts.excludedFuncs) {
|
|
6501
|
-
excludedFuncs = excludedFuncs
|
|
6529
|
+
excludedFuncs = [...excludedFuncs, ...opts.excludedFuncs];
|
|
6502
6530
|
}
|
|
6503
6531
|
|
|
6504
6532
|
if (mockStatus.currentlyMocked) {
|
|
6505
6533
|
throw new Error("mockJasmine() was called while BigscreenPlayer was already mocked")
|
|
6506
6534
|
}
|
|
6507
6535
|
|
|
6508
|
-
for (
|
|
6536
|
+
for (const fn in BigscreenPlayer) {
|
|
6509
6537
|
if (BigscreenPlayer[fn] && mockFunctions[fn]) {
|
|
6510
|
-
// eslint-disable-next-line no-undef
|
|
6511
6538
|
spyOn(BigscreenPlayer, fn).and.callFake(mockFunctions[fn]);
|
|
6512
6539
|
} else if (!Utils.contains(excludedFuncs, fn)) {
|
|
6513
|
-
throw new Error(fn
|
|
6540
|
+
throw new Error(`${fn} was not mocked or included in the exclusion list`)
|
|
6514
6541
|
}
|
|
6515
6542
|
}
|
|
6516
6543
|
|
|
6517
|
-
for (
|
|
6544
|
+
for (const hook in mockingHooks) {
|
|
6518
6545
|
BigscreenPlayer[hook] = mockingHooks[hook];
|
|
6519
6546
|
}
|
|
6520
6547
|
mockStatus = { currentlyMocked: true, mode: mockModes.JASMINE };
|
|
@@ -6526,12 +6553,12 @@ function unmock(BigscreenPlayer) {
|
|
|
6526
6553
|
}
|
|
6527
6554
|
|
|
6528
6555
|
// Remove extra functions
|
|
6529
|
-
for (
|
|
6556
|
+
for (const hook in mockingHooks) {
|
|
6530
6557
|
delete BigscreenPlayer[hook];
|
|
6531
6558
|
}
|
|
6532
6559
|
// Undo divert existing functions (plain mock only)
|
|
6533
6560
|
if (mockStatus.mode === mockModes.PLAIN) {
|
|
6534
|
-
for (
|
|
6561
|
+
for (const func in shallowClone) {
|
|
6535
6562
|
BigscreenPlayer[func] = shallowClone[func];
|
|
6536
6563
|
}
|
|
6537
6564
|
}
|
|
@@ -6543,11 +6570,11 @@ function unmock(BigscreenPlayer) {
|
|
|
6543
6570
|
}
|
|
6544
6571
|
|
|
6545
6572
|
function callSubtitlesCallbacks(enabled) {
|
|
6546
|
-
CallCallbacks(subtitleCallbacks, { enabled
|
|
6573
|
+
CallCallbacks(subtitleCallbacks, { enabled });
|
|
6547
6574
|
}
|
|
6548
6575
|
|
|
6549
|
-
|
|
6550
|
-
init
|
|
6576
|
+
const mockFunctions = {
|
|
6577
|
+
init(playbackElement, bigscreenPlayerData, newWindowType, enableSubtitles, callbacks) {
|
|
6551
6578
|
currentTime = (bigscreenPlayerData && bigscreenPlayerData.initialPlaybackTime) || 0;
|
|
6552
6579
|
liveWindowStart = undefined;
|
|
6553
6580
|
pausedState = true;
|
|
@@ -6556,6 +6583,8 @@ var mockFunctions = {
|
|
|
6556
6583
|
windowType = newWindowType || WindowTypes.STATIC;
|
|
6557
6584
|
subtitlesAvailable = true;
|
|
6558
6585
|
subtitlesEnabled = enableSubtitles;
|
|
6586
|
+
broadcastMixADAvailable = false;
|
|
6587
|
+
broadcastMixADEnabled = false;
|
|
6559
6588
|
canSeekState = true;
|
|
6560
6589
|
canPauseState = true;
|
|
6561
6590
|
sourceList = bigscreenPlayerData && bigscreenPlayerData.media && bigscreenPlayerData.media.urls;
|
|
@@ -6588,34 +6617,35 @@ var mockFunctions = {
|
|
|
6588
6617
|
callbacks.onSuccess();
|
|
6589
6618
|
}
|
|
6590
6619
|
},
|
|
6591
|
-
registerForTimeUpdates
|
|
6620
|
+
registerForTimeUpdates(callback) {
|
|
6592
6621
|
timeUpdateCallbacks.push(callback);
|
|
6593
6622
|
return callback
|
|
6594
6623
|
},
|
|
6595
|
-
unregisterForTimeUpdates
|
|
6596
|
-
timeUpdateCallbacks = timeUpdateCallbacks.filter(
|
|
6597
|
-
return callback !== existingCallback
|
|
6598
|
-
});
|
|
6624
|
+
unregisterForTimeUpdates(callback) {
|
|
6625
|
+
timeUpdateCallbacks = timeUpdateCallbacks.filter((existingCallback) => callback !== existingCallback);
|
|
6599
6626
|
},
|
|
6600
|
-
registerForSubtitleChanges
|
|
6627
|
+
registerForSubtitleChanges(callback) {
|
|
6601
6628
|
subtitleCallbacks.push(callback);
|
|
6602
6629
|
return callback
|
|
6603
6630
|
},
|
|
6604
|
-
unregisterForSubtitleChanges
|
|
6605
|
-
subtitleCallbacks = subtitleCallbacks.filter(
|
|
6606
|
-
|
|
6607
|
-
|
|
6631
|
+
unregisterForSubtitleChanges(callback) {
|
|
6632
|
+
subtitleCallbacks = subtitleCallbacks.filter((existingCallback) => callback !== existingCallback);
|
|
6633
|
+
},
|
|
6634
|
+
registerForBroadcastMixADChanges(callback) {
|
|
6635
|
+
broadcastMixADCallbacks.push(callback);
|
|
6636
|
+
return callback
|
|
6637
|
+
},
|
|
6638
|
+
unregisterForBroadcastMixADChanges(callback) {
|
|
6639
|
+
broadcastMixADCallbacks = broadcastMixADCallbacks.filter((existingCallback) => callback !== existingCallback);
|
|
6608
6640
|
},
|
|
6609
|
-
registerForStateChanges
|
|
6641
|
+
registerForStateChanges(callback) {
|
|
6610
6642
|
stateChangeCallbacks.push(callback);
|
|
6611
6643
|
return callback
|
|
6612
6644
|
},
|
|
6613
|
-
unregisterForStateChanges
|
|
6614
|
-
stateChangeCallbacks = stateChangeCallbacks.filter(
|
|
6615
|
-
return callback !== existingCallback
|
|
6616
|
-
});
|
|
6645
|
+
unregisterForStateChanges(callback) {
|
|
6646
|
+
stateChangeCallbacks = stateChangeCallbacks.filter((existingCallback) => callback !== existingCallback);
|
|
6617
6647
|
},
|
|
6618
|
-
setCurrentTime
|
|
6648
|
+
setCurrentTime(time) {
|
|
6619
6649
|
currentTime = time;
|
|
6620
6650
|
isSeeking = true;
|
|
6621
6651
|
if (autoProgress) {
|
|
@@ -6627,86 +6657,93 @@ var mockFunctions = {
|
|
|
6627
6657
|
mockingHooks.progressTime(currentTime);
|
|
6628
6658
|
}
|
|
6629
6659
|
},
|
|
6630
|
-
getCurrentTime
|
|
6660
|
+
getCurrentTime() {
|
|
6631
6661
|
return currentTime
|
|
6632
6662
|
},
|
|
6633
|
-
getMediaKind
|
|
6663
|
+
getMediaKind() {
|
|
6634
6664
|
return mediaKind
|
|
6635
6665
|
},
|
|
6636
|
-
getWindowType
|
|
6666
|
+
getWindowType() {
|
|
6637
6667
|
return windowType
|
|
6638
6668
|
},
|
|
6639
|
-
getSeekableRange
|
|
6669
|
+
getSeekableRange() {
|
|
6640
6670
|
return seekableRange
|
|
6641
6671
|
},
|
|
6642
|
-
getDuration
|
|
6672
|
+
getDuration() {
|
|
6643
6673
|
return duration
|
|
6644
6674
|
},
|
|
6645
|
-
isPaused
|
|
6675
|
+
isPaused() {
|
|
6646
6676
|
return pausedState
|
|
6647
6677
|
},
|
|
6648
|
-
isEnded
|
|
6678
|
+
isEnded() {
|
|
6649
6679
|
return endedState
|
|
6650
6680
|
},
|
|
6651
|
-
play
|
|
6681
|
+
play() {
|
|
6652
6682
|
if (autoProgress) {
|
|
6653
6683
|
startProgress("other");
|
|
6654
6684
|
} else {
|
|
6655
6685
|
mockingHooks.changeState(MediaState.PLAYING, "other");
|
|
6656
6686
|
}
|
|
6657
6687
|
},
|
|
6658
|
-
pause
|
|
6688
|
+
pause(opts) {
|
|
6659
6689
|
mockingHooks.changeState(MediaState.PAUSED, "other", opts);
|
|
6660
6690
|
},
|
|
6661
|
-
setSubtitlesEnabled
|
|
6691
|
+
setSubtitlesEnabled(value) {
|
|
6662
6692
|
subtitlesEnabled = value;
|
|
6663
6693
|
callSubtitlesCallbacks(value);
|
|
6664
6694
|
},
|
|
6665
|
-
isSubtitlesEnabled
|
|
6695
|
+
isSubtitlesEnabled() {
|
|
6666
6696
|
return subtitlesEnabled
|
|
6667
6697
|
},
|
|
6668
|
-
isSubtitlesAvailable
|
|
6698
|
+
isSubtitlesAvailable() {
|
|
6669
6699
|
return subtitlesAvailable
|
|
6670
6700
|
},
|
|
6671
|
-
customiseSubtitles
|
|
6672
|
-
renderSubtitleExample
|
|
6673
|
-
|
|
6674
|
-
|
|
6701
|
+
customiseSubtitles() {},
|
|
6702
|
+
renderSubtitleExample() {},
|
|
6703
|
+
setBroadcastMixADEnabled(value) {
|
|
6704
|
+
broadcastMixADEnabled = value;
|
|
6705
|
+
},
|
|
6706
|
+
isBroadcastMixADEnabled() {
|
|
6707
|
+
return broadcastMixADEnabled
|
|
6708
|
+
},
|
|
6709
|
+
isBroadcastMixADAvailable() {
|
|
6710
|
+
return broadcastMixADAvailable
|
|
6711
|
+
},
|
|
6712
|
+
setTransportControlsPosition() {},
|
|
6713
|
+
canSeek() {
|
|
6675
6714
|
return canSeekState
|
|
6676
6715
|
},
|
|
6677
|
-
canPause
|
|
6716
|
+
canPause() {
|
|
6678
6717
|
return canPauseState
|
|
6679
6718
|
},
|
|
6680
|
-
convertVideoTimeSecondsToEpochMs
|
|
6719
|
+
convertVideoTimeSecondsToEpochMs(seconds) {
|
|
6681
6720
|
return liveWindowStart ? liveWindowStart + seconds * 1000 : undefined
|
|
6682
6721
|
},
|
|
6683
|
-
transitions
|
|
6722
|
+
transitions() {
|
|
6684
6723
|
return {
|
|
6685
|
-
canBePaused
|
|
6724
|
+
canBePaused() {
|
|
6686
6725
|
return true
|
|
6687
6726
|
},
|
|
6688
|
-
canBeginSeek
|
|
6727
|
+
canBeginSeek() {
|
|
6689
6728
|
return true
|
|
6690
6729
|
},
|
|
6691
6730
|
}
|
|
6692
6731
|
},
|
|
6693
|
-
isPlayingAtLiveEdge
|
|
6732
|
+
isPlayingAtLiveEdge() {
|
|
6694
6733
|
return false
|
|
6695
6734
|
},
|
|
6696
|
-
resize
|
|
6735
|
+
resize() {
|
|
6697
6736
|
subtitlesHidden = this.isSubtitlesEnabled();
|
|
6698
6737
|
this.setSubtitlesEnabled(subtitlesHidden);
|
|
6699
6738
|
},
|
|
6700
|
-
clearResize
|
|
6739
|
+
clearResize() {
|
|
6701
6740
|
this.setSubtitlesEnabled(subtitlesHidden);
|
|
6702
6741
|
},
|
|
6703
|
-
getPlayerElement
|
|
6704
|
-
|
|
6705
|
-
},
|
|
6706
|
-
getFrameworkVersion: function () {
|
|
6742
|
+
getPlayerElement() {},
|
|
6743
|
+
getFrameworkVersion() {
|
|
6707
6744
|
return Version
|
|
6708
6745
|
},
|
|
6709
|
-
tearDown
|
|
6746
|
+
tearDown() {
|
|
6710
6747
|
manifestError = false;
|
|
6711
6748
|
if (!initialised) {
|
|
6712
6749
|
return
|
|
@@ -6733,13 +6770,13 @@ var mockFunctions = {
|
|
|
6733
6770
|
|
|
6734
6771
|
initialised = false;
|
|
6735
6772
|
},
|
|
6736
|
-
registerPlugin
|
|
6773
|
+
registerPlugin(plugin) {
|
|
6737
6774
|
Plugins.registerPlugin(plugin);
|
|
6738
6775
|
},
|
|
6739
|
-
unregisterPlugin
|
|
6776
|
+
unregisterPlugin(plugin) {
|
|
6740
6777
|
Plugins.unregisterPlugin(plugin);
|
|
6741
6778
|
},
|
|
6742
|
-
getLiveWindowData
|
|
6779
|
+
getLiveWindowData() {
|
|
6743
6780
|
if (windowType === WindowTypes.STATIC) {
|
|
6744
6781
|
return {}
|
|
6745
6782
|
}
|
|
@@ -6752,9 +6789,9 @@ var mockFunctions = {
|
|
|
6752
6789
|
},
|
|
6753
6790
|
};
|
|
6754
6791
|
|
|
6755
|
-
|
|
6756
|
-
changeState
|
|
6757
|
-
|
|
6792
|
+
const mockingHooks = {
|
|
6793
|
+
changeState(state, eventTrigger, opts) {
|
|
6794
|
+
const pauseTrigger = opts && opts.userPause === false ? PauseTriggers.APP : PauseTriggers.USER;
|
|
6758
6795
|
|
|
6759
6796
|
pausedState = state === MediaState.PAUSED || state === MediaState.STOPPED || state === MediaState.ENDED;
|
|
6760
6797
|
endedState = state === MediaState.ENDED;
|
|
@@ -6787,7 +6824,7 @@ var mockingHooks = {
|
|
|
6787
6824
|
);
|
|
6788
6825
|
}
|
|
6789
6826
|
|
|
6790
|
-
|
|
6827
|
+
const stateObject = { state };
|
|
6791
6828
|
if (state === MediaState.PAUSED) {
|
|
6792
6829
|
stateObject.trigger = pauseTrigger;
|
|
6793
6830
|
endOfStream = false;
|
|
@@ -6805,51 +6842,51 @@ var mockingHooks = {
|
|
|
6805
6842
|
CallCallbacks(stateChangeCallbacks, stateObject);
|
|
6806
6843
|
|
|
6807
6844
|
if (autoProgress) {
|
|
6808
|
-
if (state
|
|
6809
|
-
stopProgress();
|
|
6810
|
-
} else {
|
|
6845
|
+
if (state === MediaState.PLAYING) {
|
|
6811
6846
|
startProgress();
|
|
6847
|
+
} else {
|
|
6848
|
+
stopProgress();
|
|
6812
6849
|
}
|
|
6813
6850
|
}
|
|
6814
6851
|
},
|
|
6815
|
-
progressTime
|
|
6852
|
+
progressTime(time) {
|
|
6816
6853
|
currentTime = time;
|
|
6817
6854
|
CallCallbacks(timeUpdateCallbacks, {
|
|
6818
6855
|
currentTime: time,
|
|
6819
|
-
endOfStream
|
|
6856
|
+
endOfStream,
|
|
6820
6857
|
});
|
|
6821
6858
|
},
|
|
6822
|
-
setEndOfStream
|
|
6859
|
+
setEndOfStream(isEndOfStream) {
|
|
6823
6860
|
endOfStream = isEndOfStream;
|
|
6824
6861
|
},
|
|
6825
|
-
setDuration
|
|
6862
|
+
setDuration(mediaDuration) {
|
|
6826
6863
|
duration = mediaDuration;
|
|
6827
6864
|
},
|
|
6828
|
-
setSeekableRange
|
|
6865
|
+
setSeekableRange(newSeekableRange) {
|
|
6829
6866
|
seekableRange = newSeekableRange;
|
|
6830
6867
|
},
|
|
6831
|
-
setMediaKind
|
|
6868
|
+
setMediaKind(kind) {
|
|
6832
6869
|
mediaKind = kind;
|
|
6833
6870
|
},
|
|
6834
|
-
setWindowType
|
|
6871
|
+
setWindowType(type) {
|
|
6835
6872
|
windowType = type;
|
|
6836
6873
|
},
|
|
6837
|
-
setCanSeek
|
|
6874
|
+
setCanSeek(value) {
|
|
6838
6875
|
canSeekState = value;
|
|
6839
6876
|
},
|
|
6840
|
-
setCanPause
|
|
6877
|
+
setCanPause(value) {
|
|
6841
6878
|
canPauseState = value;
|
|
6842
6879
|
},
|
|
6843
|
-
setLiveWindowStart
|
|
6880
|
+
setLiveWindowStart(value) {
|
|
6844
6881
|
liveWindowStart = value;
|
|
6845
6882
|
},
|
|
6846
|
-
setSubtitlesAvailable
|
|
6883
|
+
setSubtitlesAvailable(value) {
|
|
6847
6884
|
subtitlesAvailable = value;
|
|
6848
6885
|
},
|
|
6849
|
-
getSource
|
|
6886
|
+
getSource() {
|
|
6850
6887
|
return source
|
|
6851
6888
|
},
|
|
6852
|
-
triggerError
|
|
6889
|
+
triggerError() {
|
|
6853
6890
|
fatalErrorBufferingTimeout = false;
|
|
6854
6891
|
Plugins.interface.onError(
|
|
6855
6892
|
new PluginData({
|
|
@@ -6861,10 +6898,10 @@ var mockingHooks = {
|
|
|
6861
6898
|
this.changeState(MediaState.WAITING);
|
|
6862
6899
|
stopProgress();
|
|
6863
6900
|
},
|
|
6864
|
-
triggerManifestError
|
|
6901
|
+
triggerManifestError() {
|
|
6865
6902
|
manifestError = true;
|
|
6866
6903
|
},
|
|
6867
|
-
triggerErrorHandled
|
|
6904
|
+
triggerErrorHandled() {
|
|
6868
6905
|
if (sourceList && sourceList.length > 1) {
|
|
6869
6906
|
sourceList.shift();
|
|
6870
6907
|
source = sourceList[0].url;
|
|
@@ -6885,7 +6922,7 @@ var mockingHooks = {
|
|
|
6885
6922
|
status: PluginEnums.STATUS.FAILOVER,
|
|
6886
6923
|
stateType: PluginEnums.TYPE.ERROR,
|
|
6887
6924
|
isBufferingTimeoutError: fatalErrorBufferingTimeout,
|
|
6888
|
-
cdn
|
|
6925
|
+
cdn,
|
|
6889
6926
|
})
|
|
6890
6927
|
);
|
|
6891
6928
|
|
|
@@ -6894,18 +6931,18 @@ var mockingHooks = {
|
|
|
6894
6931
|
startProgress();
|
|
6895
6932
|
}
|
|
6896
6933
|
},
|
|
6897
|
-
setInitialBuffering
|
|
6934
|
+
setInitialBuffering(value) {
|
|
6898
6935
|
initialBuffering = value;
|
|
6899
6936
|
},
|
|
6900
|
-
setLiveWindowData
|
|
6937
|
+
setLiveWindowData(newLiveWindowData) {
|
|
6901
6938
|
liveWindowData = newLiveWindowData;
|
|
6902
6939
|
},
|
|
6903
6940
|
};
|
|
6904
6941
|
|
|
6905
6942
|
var MockBigscreenPlayer = {
|
|
6906
|
-
mock
|
|
6907
|
-
unmock
|
|
6908
|
-
mockJasmine
|
|
6943
|
+
mock,
|
|
6944
|
+
unmock,
|
|
6945
|
+
mockJasmine,
|
|
6909
6946
|
};
|
|
6910
6947
|
|
|
6911
6948
|
function durationToSeconds(duration) {
|
|
@@ -7735,7 +7772,7 @@ function Subtitles(mediaPlayer, autoStart, playbackElement, defaultStyleOpts, me
|
|
|
7735
7772
|
|
|
7736
7773
|
if (available()) {
|
|
7737
7774
|
if (useLegacySubs) {
|
|
7738
|
-
import('./legacysubtitles-
|
|
7775
|
+
import('./legacysubtitles-dac98ca0.js')
|
|
7739
7776
|
.then(({ default: LegacySubtitles }) => {
|
|
7740
7777
|
subtitlesContainer = LegacySubtitles(mediaPlayer, autoStart, playbackElement, mediaSources, defaultStyleOpts);
|
|
7741
7778
|
callback(subtitlesEnabled);
|
|
@@ -7744,7 +7781,7 @@ function Subtitles(mediaPlayer, autoStart, playbackElement, defaultStyleOpts, me
|
|
|
7744
7781
|
Plugins.interface.onSubtitlesDynamicLoadError();
|
|
7745
7782
|
});
|
|
7746
7783
|
} else {
|
|
7747
|
-
import('./imscsubtitles-
|
|
7784
|
+
import('./imscsubtitles-7553075b.js')
|
|
7748
7785
|
.then(({ default: IMSCSubtitles }) => {
|
|
7749
7786
|
subtitlesContainer = IMSCSubtitles(mediaPlayer, autoStart, playbackElement, mediaSources, defaultStyleOpts);
|
|
7750
7787
|
callback(subtitlesEnabled);
|
|
@@ -7845,6 +7882,7 @@ function BigscreenPlayer() {
|
|
|
7845
7882
|
let stateChangeCallbacks = [];
|
|
7846
7883
|
let timeUpdateCallbacks = [];
|
|
7847
7884
|
let subtitleCallbacks = [];
|
|
7885
|
+
let broadcastMixADCallbacks = [];
|
|
7848
7886
|
|
|
7849
7887
|
let playerReadyCallback;
|
|
7850
7888
|
let playerErrorCallback;
|
|
@@ -7953,7 +7991,8 @@ function BigscreenPlayer() {
|
|
|
7953
7991
|
mediaSources,
|
|
7954
7992
|
windowType,
|
|
7955
7993
|
mediaStateUpdateCallback,
|
|
7956
|
-
playerErrorCallback
|
|
7994
|
+
playerErrorCallback,
|
|
7995
|
+
callBroadcastMixADCallbacks
|
|
7957
7996
|
);
|
|
7958
7997
|
|
|
7959
7998
|
subtitles = Subtitles(
|
|
@@ -8001,6 +8040,10 @@ function BigscreenPlayer() {
|
|
|
8001
8040
|
return subtitles ? subtitles.available() : false
|
|
8002
8041
|
}
|
|
8003
8042
|
|
|
8043
|
+
function callBroadcastMixADCallbacks(enabled) {
|
|
8044
|
+
CallCallbacks(broadcastMixADCallbacks, { enabled });
|
|
8045
|
+
}
|
|
8046
|
+
|
|
8004
8047
|
return /** @alias module:bigscreenplayer/bigscreenplayer */ {
|
|
8005
8048
|
/**
|
|
8006
8049
|
* Call first to initialise bigscreen player for playback.
|
|
@@ -8075,6 +8118,7 @@ function BigscreenPlayer() {
|
|
|
8075
8118
|
stateChangeCallbacks = [];
|
|
8076
8119
|
timeUpdateCallbacks = [];
|
|
8077
8120
|
subtitleCallbacks = [];
|
|
8121
|
+
broadcastMixADCallbacks = [];
|
|
8078
8122
|
endOfStream = undefined;
|
|
8079
8123
|
mediaKind = undefined;
|
|
8080
8124
|
pauseTrigger = undefined;
|
|
@@ -8151,6 +8195,28 @@ function BigscreenPlayer() {
|
|
|
8151
8195
|
}
|
|
8152
8196
|
},
|
|
8153
8197
|
|
|
8198
|
+
/**
|
|
8199
|
+
* Pass a function to be called whenever BroadcastMixAD is enabled or disabled.
|
|
8200
|
+
* @function
|
|
8201
|
+
* @param {Function} callback
|
|
8202
|
+
*/
|
|
8203
|
+
registerForBroadcastMixADChanges: (callback) => {
|
|
8204
|
+
broadcastMixADCallbacks.push(callback);
|
|
8205
|
+
return callback
|
|
8206
|
+
},
|
|
8207
|
+
|
|
8208
|
+
/**
|
|
8209
|
+
* Unregisters a previously registered callback for changes to BroadcastMixAD.
|
|
8210
|
+
* @function
|
|
8211
|
+
* @param {Function} callback
|
|
8212
|
+
*/
|
|
8213
|
+
unregisterForBroadcastMixADChanges: (callback) => {
|
|
8214
|
+
const indexOf = broadcastMixADCallbacks.indexOf(callback);
|
|
8215
|
+
if (indexOf !== -1) {
|
|
8216
|
+
broadcastMixADCallbacks.splice(indexOf, 1);
|
|
8217
|
+
}
|
|
8218
|
+
},
|
|
8219
|
+
|
|
8154
8220
|
/**
|
|
8155
8221
|
* Sets the current time of the media asset.
|
|
8156
8222
|
* @function
|
|
@@ -8373,6 +8439,25 @@ function BigscreenPlayer() {
|
|
|
8373
8439
|
}
|
|
8374
8440
|
},
|
|
8375
8441
|
|
|
8442
|
+
/**
|
|
8443
|
+
* @function
|
|
8444
|
+
* @returns {boolean} true if there if an AD track is available
|
|
8445
|
+
*/
|
|
8446
|
+
isBroadcastMixADAvailable: () => playerComponent && playerComponent.isBroadcastMixADAvailable(),
|
|
8447
|
+
|
|
8448
|
+
/**
|
|
8449
|
+
* @function
|
|
8450
|
+
* @returns {boolean} true if there is an the AD audio track is current being used
|
|
8451
|
+
*/
|
|
8452
|
+
isBroadcastMixADEnabled: () => playerComponent && playerComponent.isBroadcastMixADEnabled(),
|
|
8453
|
+
|
|
8454
|
+
/**
|
|
8455
|
+
* @function
|
|
8456
|
+
*/
|
|
8457
|
+
setBroadcastMixADEnabled: (enabled) => {
|
|
8458
|
+
enabled ? playerComponent.setBroadcastMixADOn() : playerComponent.setBroadcastMixADOff();
|
|
8459
|
+
},
|
|
8460
|
+
|
|
8376
8461
|
/**
|
|
8377
8462
|
*
|
|
8378
8463
|
* An enum may be used to set the on-screen position of any transport controls
|
package/dist/esm/main.d.ts
CHANGED
|
@@ -122,6 +122,18 @@ declare function BigscreenPlayer(): {
|
|
|
122
122
|
* @param {Function} callback
|
|
123
123
|
*/
|
|
124
124
|
unregisterForSubtitleChanges: (callback: Function) => void;
|
|
125
|
+
/**
|
|
126
|
+
* Pass a function to be called whenever BroadcastMixAD is enabled or disabled.
|
|
127
|
+
* @function
|
|
128
|
+
* @param {Function} callback
|
|
129
|
+
*/
|
|
130
|
+
registerForBroadcastMixADChanges: (callback: Function) => Function;
|
|
131
|
+
/**
|
|
132
|
+
* Unregisters a previously registered callback for changes to BroadcastMixAD.
|
|
133
|
+
* @function
|
|
134
|
+
* @param {Function} callback
|
|
135
|
+
*/
|
|
136
|
+
unregisterForBroadcastMixADChanges: (callback: Function) => void;
|
|
125
137
|
/**
|
|
126
138
|
* Sets the current time of the media asset.
|
|
127
139
|
* @function
|
|
@@ -259,6 +271,20 @@ declare function BigscreenPlayer(): {
|
|
|
259
271
|
* Clear the example subtitle string
|
|
260
272
|
*/
|
|
261
273
|
clearSubtitleExample: () => void;
|
|
274
|
+
/**
|
|
275
|
+
* @function
|
|
276
|
+
* @returns {boolean} true if there if an AD track is available
|
|
277
|
+
*/
|
|
278
|
+
isBroadcastMixADAvailable: () => boolean;
|
|
279
|
+
/**
|
|
280
|
+
* @function
|
|
281
|
+
* @returns {boolean} true if there is an the AD audio track is current being used
|
|
282
|
+
*/
|
|
283
|
+
isBroadcastMixADEnabled: () => boolean;
|
|
284
|
+
/**
|
|
285
|
+
* @function
|
|
286
|
+
*/
|
|
287
|
+
setBroadcastMixADEnabled: (enabled: any) => void;
|
|
262
288
|
/**
|
|
263
289
|
*
|
|
264
290
|
* An enum may be used to set the on-screen position of any transport controls
|
package/dist/esm/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, c as LiveSupport, M as MediaKinds, g as MediaState, h as MockBigscreenPlayer, b as PauseTriggers, i as PlaybackStrategy, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, k as isMessage, l as isMetric, m as isTrace } from './main-
|
|
1
|
+
export { B as BigscreenPlayer, a as DebugTool, E as EntryCategory, c as LiveSupport, M as MediaKinds, g as MediaState, h as MockBigscreenPlayer, b as PauseTriggers, i as PlaybackStrategy, j as TransferFormat, T as TransportControlPosition, W as WindowTypes, k as isMessage, l as isMetric, m as isTrace } from './main-774dbe30.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MediaPlayer } from 'dashjs/index_mediaplayerOnly';
|
|
2
|
-
import { W as WindowTypes, U as Utils, b as PauseTriggers, c as LiveSupport, M as MediaKinds, a as DebugToolInstance, d as TimeUtils, e as DynamicWindowUtils, g as MediaState, P as Plugins, D as DOMHelpers } from './main-
|
|
2
|
+
import { W as WindowTypes, U as Utils, b as PauseTriggers, c as LiveSupport, M as MediaKinds, a as DebugToolInstance, d as TimeUtils, e as DynamicWindowUtils, g as MediaState, P as Plugins, D as DOMHelpers } from './main-774dbe30.js';
|
|
3
3
|
|
|
4
4
|
function filter(manifest, representationOptions) {
|
|
5
5
|
const constantFps = representationOptions.constantFps;
|
|
@@ -175,7 +175,16 @@ const DEFAULT_SETTINGS = {
|
|
|
175
175
|
seekDurationPadding: 1.1,
|
|
176
176
|
};
|
|
177
177
|
|
|
178
|
-
function MSEStrategy(
|
|
178
|
+
function MSEStrategy(
|
|
179
|
+
mediaSources,
|
|
180
|
+
windowType,
|
|
181
|
+
mediaKind,
|
|
182
|
+
playbackElement,
|
|
183
|
+
isUHD,
|
|
184
|
+
customPlayerSettings,
|
|
185
|
+
enableBroadcastMixAD,
|
|
186
|
+
callBroadcastMixADCallbacks
|
|
187
|
+
) {
|
|
179
188
|
let mediaPlayer;
|
|
180
189
|
let mediaElement;
|
|
181
190
|
|
|
@@ -253,6 +262,7 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
253
262
|
STREAM_INITIALIZED: "streamInitialized",
|
|
254
263
|
FRAGMENT_CONTENT_LENGTH_MISMATCH: "fragmentContentLengthMismatch",
|
|
255
264
|
QUOTA_EXCEEDED: "quotaExceeded",
|
|
265
|
+
CURRENT_TRACK_CHANGED: "currentTrackChanged",
|
|
256
266
|
};
|
|
257
267
|
|
|
258
268
|
function onLoadedMetaData() {
|
|
@@ -600,6 +610,16 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
600
610
|
Plugins.interface.onFragmentContentLengthMismatch(event);
|
|
601
611
|
}
|
|
602
612
|
|
|
613
|
+
function onCurrentTrackChanged(event) {
|
|
614
|
+
const mediaType = event.newMediaInfo.type;
|
|
615
|
+
DebugToolInstance.info(
|
|
616
|
+
`${mediaType} track changed.${
|
|
617
|
+
mediaType === "audio" ? (isBroadcastMixADEnabled() ? " BroadcastMixAD on." : " BroadcastMixAD off.") : ""
|
|
618
|
+
}`
|
|
619
|
+
);
|
|
620
|
+
callBroadcastMixADCallbacks(isBroadcastMixADEnabled());
|
|
621
|
+
}
|
|
622
|
+
|
|
603
623
|
function publishMediaState(mediaState) {
|
|
604
624
|
for (let index = 0; index < eventCallbacks.length; index++) {
|
|
605
625
|
eventCallbacks[index](mediaState);
|
|
@@ -672,6 +692,14 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
672
692
|
mediaPlayer = MediaPlayer().create();
|
|
673
693
|
mediaPlayer.updateSettings(dashSettings);
|
|
674
694
|
mediaPlayer.initialize(mediaElement, null, true);
|
|
695
|
+
|
|
696
|
+
if (enableBroadcastMixAD) {
|
|
697
|
+
mediaPlayer.setInitialMediaSettingsFor("audio", {
|
|
698
|
+
role: "alternate",
|
|
699
|
+
accessibility: { schemeIdUri: "urn:tva:metadata:cs:AudioPurposeCS:2007", value: "1" },
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
|
|
675
703
|
modifySource(playbackTime);
|
|
676
704
|
}
|
|
677
705
|
|
|
@@ -719,6 +747,7 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
719
747
|
mediaPlayer.on(DashJSEvents.GAP_JUMP_TO_END, onGapJump);
|
|
720
748
|
mediaPlayer.on(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded);
|
|
721
749
|
mediaPlayer.on(DashJSEvents.MANIFEST_LOADING_FINISHED, manifestLoadingFinished);
|
|
750
|
+
mediaPlayer.on(DashJSEvents.CURRENT_TRACK_CHANGED, onCurrentTrackChanged);
|
|
722
751
|
}
|
|
723
752
|
|
|
724
753
|
function manifestLoadingFinished(event) {
|
|
@@ -809,6 +838,43 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
809
838
|
);
|
|
810
839
|
}
|
|
811
840
|
|
|
841
|
+
function isTrackBroadcastMixAD(track) {
|
|
842
|
+
return (
|
|
843
|
+
track.roles.includes("alternate") &&
|
|
844
|
+
track.accessibilitiesWithSchemeIdUri.some(
|
|
845
|
+
(scheme) => scheme.schemeIdUri === "urn:tva:metadata:cs:AudioPurposeCS:2007" && scheme.value === "1"
|
|
846
|
+
)
|
|
847
|
+
)
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
function getBroadcastMixADTrack() {
|
|
851
|
+
const audioTracks = mediaPlayer.getTracksFor("audio");
|
|
852
|
+
return audioTracks.find((track) => isTrackBroadcastMixAD(track))
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
function isBroadcastMixADAvailable() {
|
|
856
|
+
const audioTracks = mediaPlayer.getTracksFor("audio");
|
|
857
|
+
return audioTracks.some((track) => isTrackBroadcastMixAD(track))
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
function isBroadcastMixADEnabled() {
|
|
861
|
+
const currentAudioTrack = mediaPlayer.getCurrentTrackFor("audio");
|
|
862
|
+
return currentAudioTrack ? isTrackBroadcastMixAD(currentAudioTrack) : false
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
function setBroadcastMixADOff() {
|
|
866
|
+
const audioTracks = mediaPlayer.getTracksFor("audio");
|
|
867
|
+
const mainTrack = audioTracks.find((track) => track.roles.includes("main"));
|
|
868
|
+
mediaPlayer.setCurrentTrack(mainTrack);
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
function setBroadcastMixADOn() {
|
|
872
|
+
const ADTrack = getBroadcastMixADTrack();
|
|
873
|
+
if (ADTrack) {
|
|
874
|
+
mediaPlayer.setCurrentTrack(ADTrack);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
812
878
|
function cleanUpMediaPlayer() {
|
|
813
879
|
if (mediaPlayer) {
|
|
814
880
|
mediaPlayer.destroy();
|
|
@@ -827,6 +893,7 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
827
893
|
mediaPlayer.off(DashJSEvents.GAP_JUMP, onGapJump);
|
|
828
894
|
mediaPlayer.off(DashJSEvents.GAP_JUMP_TO_END, onGapJump);
|
|
829
895
|
mediaPlayer.off(DashJSEvents.QUOTA_EXCEEDED, onQuotaExceeded);
|
|
896
|
+
mediaPlayer.off(DashJSEvents.TRACK_CHANGE_RENDERED, onCurrentTrackChanged);
|
|
830
897
|
|
|
831
898
|
mediaPlayer = undefined;
|
|
832
899
|
}
|
|
@@ -866,6 +933,10 @@ function MSEStrategy(mediaSources, windowType, mediaKind, playbackElement, isUHD
|
|
|
866
933
|
load,
|
|
867
934
|
getSeekableRange,
|
|
868
935
|
getCurrentTime,
|
|
936
|
+
isBroadcastMixADAvailable,
|
|
937
|
+
isBroadcastMixADEnabled,
|
|
938
|
+
setBroadcastMixADOn,
|
|
939
|
+
setBroadcastMixADOff,
|
|
869
940
|
getDuration,
|
|
870
941
|
getPlayerElement: () => mediaElement,
|
|
871
942
|
tearDown: () => {
|