bigscreen-player
Advanced tools
Comparing version 3.15.1 to 3.16.0
{ | ||
"name": "bigscreen-player", | ||
"version": "3.15.1", | ||
"version": "3.16.0", | ||
"description": "Simplified media playback for bigscreen devices.", | ||
@@ -49,3 +49,3 @@ "main": "script/bigscreenplayer.js", | ||
"dependencies": { | ||
"dashjs": "github:bbc/dash.js#smp-v2.9.3-4" | ||
"dashjs": "github:bbc/dash.js#smp-v3.0.0-7" | ||
}, | ||
@@ -52,0 +52,0 @@ "repository": { |
@@ -25,3 +25,2 @@ require( | ||
var mockDashMediaPlayer; | ||
var mockDashDebug; | ||
var mockPlugins; | ||
@@ -51,7 +50,6 @@ var mockPluginsInterface; | ||
mockDashMediaPlayer = jasmine.createSpyObj('mockDashMediaPlayer', ['create']); | ||
mockDashDebug = jasmine.createSpyObj('mockDashDebug', ['setLogToBrowserConsole']); | ||
mockDashInstance = jasmine.createSpyObj('mockDashInstance', | ||
['initialize', 'retrieveManifest', 'getDebug', 'getSource', 'on', 'off', 'time', 'duration', 'attachSource', | ||
'reset', 'isPaused', 'pause', 'play', 'seek', 'isReady', 'refreshManifest', 'getDashMetrics', 'getMetricsFor', 'setBufferToKeep', | ||
'setBufferAheadToKeep', 'setBufferTimeAtTopQuality', 'setBufferTimeAtTopQualityLongForm', 'getBitrateInfoListFor', 'getAverageThroughput', 'getDVRWindowSize', 'setLiveDelay']); | ||
'reset', 'isPaused', 'pause', 'play', 'seek', 'isReady', 'refreshManifest', 'getDashMetrics', 'getDashAdapter', | ||
'getBitrateInfoListFor', 'getAverageThroughput', 'getDVRWindowSize', 'updateSettings']); | ||
mockPluginsInterface = jasmine.createSpyObj('interface', ['onErrorCleared', 'onBuffering', 'onBufferingCleared', 'onError', 'onFatalError', 'onErrorHandled', 'onPlayerInfoUpdated']); | ||
@@ -85,4 +83,2 @@ mockPlugins = { | ||
mockDashInstance.isReady.and.returnValue(true); | ||
mockDashInstance.getDebug.and.returnValue(mockDashDebug); | ||
mockDashInstance.getMetricsFor.and.returnValue(true); | ||
mockDashInstance.getDVRWindowSize.and.returnValue(101); | ||
@@ -115,3 +111,6 @@ | ||
return 1; | ||
}, | ||
} | ||
}); | ||
mockDashInstance.getDashAdapter.and.returnValue({ | ||
getIndexForRepresentation: function () { | ||
@@ -902,7 +901,47 @@ return 0; | ||
it('should not publish error event on initial segment download error', function () { | ||
var mockEvent = { | ||
error: { | ||
message: 'initial segment download error', | ||
code: 28 | ||
} | ||
}; | ||
setUpMSE(); | ||
var mockErrorCallback = jasmine.createSpy(); | ||
mseStrategy.addErrorCallback(null, mockErrorCallback); | ||
mseStrategy.load(null, 0); | ||
dashEventCallback(dashjsMediaPlayerEvents.ERROR, mockEvent); | ||
expect(mockErrorCallback).not.toHaveBeenCalled(); | ||
}); | ||
it('should not publish error event on segment index download error', function () { | ||
var mockEvent = { | ||
error: { | ||
message: 'segment index download error', | ||
code: 26 | ||
} | ||
}; | ||
setUpMSE(); | ||
var mockErrorCallback = jasmine.createSpy(); | ||
mseStrategy.addErrorCallback(null, mockErrorCallback); | ||
mseStrategy.load(null, 0); | ||
dashEventCallback(dashjsMediaPlayerEvents.ERROR, mockEvent); | ||
expect(mockErrorCallback).not.toHaveBeenCalled(); | ||
}); | ||
it('should not publish error event on content download error', function () { | ||
var mockEvent = { | ||
error: 'download', | ||
event: { | ||
id: 'content' | ||
error: { | ||
message: 'content download error', | ||
code: 27 | ||
} | ||
@@ -920,3 +959,3 @@ }; | ||
expect(mockErrorCallback).not.toHaveBeenCalledWith(); | ||
expect(mockErrorCallback).not.toHaveBeenCalled(); | ||
}); | ||
@@ -926,5 +965,5 @@ | ||
var mockEvent = { | ||
error: 'download', | ||
event: { | ||
id: 'manifest' | ||
error: { | ||
message: 'manifest download error', | ||
code: 25 | ||
} | ||
@@ -947,5 +986,5 @@ }; | ||
var mockEvent = { | ||
error: 'download', | ||
event: { | ||
id: 'manifest' | ||
error: { | ||
message: 'manifest download error', | ||
code: 25 | ||
} | ||
@@ -973,5 +1012,5 @@ }; | ||
var mockEvent = { | ||
error: 'download', | ||
event: { | ||
id: 'manifest' | ||
error: { | ||
message: 'manifest download error', | ||
code: 25 | ||
} | ||
@@ -978,0 +1017,0 @@ }; |
@@ -33,3 +33,2 @@ define('bigscreenplayer/playbackstrategy/msestrategy', | ||
var mediaMetrics; | ||
var dashMetrics; | ||
@@ -55,3 +54,3 @@ | ||
DOWNLOAD_CONTENT_ERROR_CODE: 27, | ||
DOWNLOAD_ERROR_MESSAGE: 'download', | ||
DOWNLOAD_INIT_SEGMENT_ERROR_CODE: 28, | ||
MANIFEST_VALIDITY_CHANGED: 'manifestValidityChanged', | ||
@@ -103,3 +102,3 @@ QUALITY_CHANGE_RENDERED: 'qualityChangeRendered', | ||
var IN_STREAM_BUFFERING_SECONDS = 20; | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo(mediaPlayer.getMetricsFor('video')); | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo('video'); | ||
@@ -127,22 +126,15 @@ if (dvrInfo && windowType === WindowTypes.SLIDING) { | ||
if (event.error) { | ||
if (event.error.message) { | ||
DebugTool.info('MSE Error: ' + event.error.message); | ||
if (event.error && event.error.message) { | ||
DebugTool.info('MSE Error: ' + event.error.message); | ||
// Don't raise an error on fragment download error | ||
if (event.error.code === DashJSEvents.DOWNLOAD_SIDX_ERROR_CODE || | ||
event.error.code === DashJSEvents.DOWNLOAD_CONTENT_ERROR_CODE || | ||
event.error.code === DashJSEvents.DOWNLOAD_MANIFEST_ERROR_CODE) { | ||
return; | ||
} | ||
} else { | ||
DebugTool.info('MSE Error: ' + event.error); | ||
// Don't raise an error on fragment download error | ||
if (event.error.code === DashJSEvents.DOWNLOAD_SIDX_ERROR_CODE || | ||
event.error.code === DashJSEvents.DOWNLOAD_CONTENT_ERROR_CODE || | ||
event.error.code === DashJSEvents.DOWNLOAD_INIT_SEGMENT_ERROR_CODE) { | ||
return; | ||
} | ||
if (event.error === DashJSEvents.DOWNLOAD_ERROR_MESSAGE && event.event.id === 'content') { | ||
return; | ||
} | ||
if (event.error === DashJSEvents.DOWNLOAD_ERROR_MESSAGE && event.event.id === 'manifest') { | ||
manifestDownloadError(event); | ||
return; | ||
} | ||
if (event.error.code === DashJSEvents.DOWNLOAD_MANIFEST_ERROR_CODE) { | ||
manifestDownloadError(event); | ||
return; | ||
} | ||
@@ -202,3 +194,3 @@ } | ||
function currentPlaybackBitrate (mediaKind) { | ||
var representationSwitch = mediaPlayer.getDashMetrics().getCurrentRepresentationSwitch(mediaPlayer.getMetricsFor(mediaKind)); | ||
var representationSwitch = mediaPlayer.getDashMetrics().getCurrentRepresentationSwitch(mediaKind); | ||
var representation = representationSwitch ? representationSwitch.to : ''; | ||
@@ -209,3 +201,3 @@ return playbackBitrateForRepresentation(representation, mediaKind); | ||
function playbackBitrateForRepresentation (representation, mediaKind) { | ||
var repIdx = mediaPlayer.getDashMetrics().getIndexForRepresentation(representation, 0); | ||
var repIdx = mediaPlayer.getDashAdapter().getIndexForRepresentation(representation, 0); | ||
return playbackBitrateForRepresentationIndex(repIdx, mediaKind); | ||
@@ -262,7 +254,6 @@ } | ||
if (event.mediaType === mediaKind && event.metric === 'BufferLevel') { | ||
mediaMetrics = mediaPlayer.getMetricsFor(event.mediaType); | ||
dashMetrics = mediaPlayer.getDashMetrics(); | ||
if (mediaMetrics && dashMetrics) { | ||
playerMetadata.bufferLength = dashMetrics.getCurrentBufferLevel(mediaMetrics); | ||
if (dashMetrics) { | ||
playerMetadata.bufferLength = dashMetrics.getCurrentBufferLevel(event.mediaType); | ||
DebugTool.keyValue({ key: 'Buffer Length', value: playerMetadata.bufferLength }); | ||
@@ -336,11 +327,18 @@ Plugins.interface.onPlayerInfoUpdated({ | ||
mediaPlayer = dashjs.MediaPlayer().create(); | ||
mediaPlayer.getDebug().setLogToBrowserConsole(false); | ||
mediaPlayer.setLiveDelay(LIVE_DELAY_SECONDS); | ||
mediaPlayer.updateSettings({ | ||
'debug': { | ||
'logLevel': 2 | ||
} | ||
}); | ||
mediaPlayer.setBufferToKeep(0); | ||
mediaPlayer.setBufferAheadToKeep(20); | ||
mediaPlayer.updateSettings({ | ||
'streaming': { | ||
'liveDelay': LIVE_DELAY_SECONDS, | ||
'bufferToKeep': 0, | ||
'bufferAheadToKeep': 20, | ||
'bufferTimeAtTopQuality': 12, | ||
'bufferTimeAtTopQualityLongForm': 12 | ||
} | ||
}); | ||
mediaPlayer.setBufferTimeAtTopQuality(12); | ||
mediaPlayer.setBufferTimeAtTopQualityLongForm(12); | ||
mediaPlayer.initialize(mediaElement, null, true); | ||
@@ -407,3 +405,3 @@ modifySource(playbackTime); | ||
if (mediaPlayer && mediaPlayer.isReady() && windowType !== WindowTypes.STATIC) { | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo(mediaPlayer.getMetricsFor(mediaKind)); | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo(mediaKind); | ||
if (dvrInfo) { | ||
@@ -450,3 +448,3 @@ return { | ||
if (windowType === WindowTypes.SLIDING) { | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo(mediaPlayer.getMetricsFor(mediaKind)); | ||
var dvrInfo = mediaPlayer.getDashMetrics().getCurrentDVRInfo(mediaKind); | ||
var offset = TimeUtils.calculateSlidingWindowSeekOffset(time, dvrInfo.range.start, timeCorrection, slidingWindowPausedTime); | ||
@@ -536,3 +534,2 @@ slidingWindowPausedTime = 0; | ||
isEnded = undefined; | ||
mediaMetrics = undefined; | ||
dashMetrics = undefined; | ||
@@ -539,0 +536,0 @@ playerMetadata = { |
define('bigscreenplayer/version', | ||
function () { | ||
return '3.15.1'; | ||
return '3.16.0'; | ||
} | ||
); |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
GitHub dependency
Supply chain riskContains a dependency which resolves to a GitHub URL. Dependencies fetched from GitHub specifiers are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
GitHub dependency
Supply chain riskContains a dependency which resolves to a GitHub URL. Dependencies fetched from GitHub specifiers are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
645186
14126
1