diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 2c9de26897..ecae533644 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -394,10 +394,10 @@ function supportsTextTracks() { // Listen for error events. player.addEventListener('error', this.onShakaError.bind(this)); - self._shakaPlayer = player; + this._shakaPlayer = player; // This is needed in setCurrentTrackElement - self._currentSrc = url; + this._currentSrc = url; // Try to load a manifest. // This is an asynchronous process. @@ -555,7 +555,7 @@ function supportsTextTracks() { setTracks(elem, tracks, options.item, options.mediaSource); - return setSrcWithShakaPlayer(self, elem, options, val); + return setSrcWithShakaPlayer(this, elem, options, val); } else*/ if (browser.chromecast && val.indexOf('.m3u8') !== -1 && options.mediaSource.RunTimeTicks) { @@ -722,9 +722,9 @@ function supportsTextTracks() { * @private */ getSupportedAudioStreams() { - const profile = self._lastProfile; + const profile = this._lastProfile; - return getMediaStreamAudioTracks(self._currentPlayOptions.mediaSource).filter((stream) => { + return getMediaStreamAudioTracks(this._currentPlayOptions.mediaSource).filter((stream) => { return this.isAudioStreamSupported(stream, profile); }); } @@ -739,12 +739,8 @@ function supportsTextTracks() { } let audioIndex = -1; - let i; - let length; - let stream; - for (i = 0, length = streams.length; i < length; i++) { - stream = streams[i]; + for (const stream of streams) { audioIndex++; @@ -757,7 +753,7 @@ function supportsTextTracks() { return; } - const elem = self._mediaElement; + const elem = this._mediaElement; if (!elem) { return; } @@ -767,16 +763,15 @@ function supportsTextTracks() { const elemAudioTracks = elem.audioTracks || []; console.debug('found ' + elemAudioTracks.length + ' audio tracks'); - for (i = 0, length = elemAudioTracks.length; i < length; i++) { - + elemAudioTracks.forEach((audioTrack, i) => { if (audioIndex === i) { - console.debug('setting audio track ' + i + ' to enabled'); - elemAudioTracks[i].enabled = true; + console.debug(`setting audio track ${i} to enabled`); + audioTrack.enabled = true; } else { - console.debug('setting audio track ' + i + ' to disabled'); - elemAudioTracks[i].enabled = false; + console.debug(`setting audio track ${i} to disabled`); + audioTrack.enabled = false; } - } + }); } stop(destroyPlayer) { @@ -896,8 +891,8 @@ function supportsTextTracks() { // If this causes a failure during navigation we end up in an awkward UI state this.setCurrentTrackElement(this.subtitleTrackIndexToSetOnPlaying); - if (this.audioTrackIndexToSetOnPlaying != null && self.canSetAudioStreamIndex()) { - self.setAudioStreamIndex(this.audioTrackIndexToSetOnPlaying); + if (this.audioTrackIndexToSetOnPlaying != null && this.canSetAudioStreamIndex()) { + this.setAudioStreamIndex(this.audioTrackIndexToSetOnPlaying); } } @@ -1005,8 +1000,8 @@ function supportsTextTracks() { break; case 3: // MEDIA_ERR_DECODE - if (self._hlsPlayer) { - htmlMediaHelper.handleHlsJsMediaError(self); + if (this._hlsPlayer) { + htmlMediaHelper.handleHlsJsMediaError(this); return; } else { type = 'mediadecodeerror'; @@ -1046,12 +1041,9 @@ function supportsTextTracks() { if (videoElement) { const allTracks = videoElement.textTracks || []; // get list of tracks - for (let i = 0; i < allTracks.length; i++) { - - const currentTrack = allTracks[i]; - - if (currentTrack.label.indexOf('manualTrack') !== -1) { - currentTrack.mode = 'disabled'; + for (const track of allTracks) { + if (track.label.includes('manualTrack')) { + track.mode = 'disabled'; } } } @@ -1129,7 +1121,7 @@ function supportsTextTracks() { } this.resetSubtitleOffset(); - const item = self._currentPlayOptions.item; + const item = this._currentPlayOptions.item; this.destroyCustomTrack(videoElement); this.customTrackIndex = track.Index; @@ -1141,7 +1133,7 @@ function supportsTextTracks() { * @private */ renderSsaAss(videoElement, track, item) { - const attachments = self._currentPlayOptions.mediaSource.MediaAttachments || []; + const attachments = this._currentPlayOptions.mediaSource.MediaAttachments || []; const apiClient = connectionManager.getApiClient(item); const options = { video: videoElement, @@ -1152,7 +1144,7 @@ function supportsTextTracks() { workerUrl: appRouter.baseUrl() + '/libraries/subtitles-octopus-worker.js', legacyWorkerUrl: appRouter.baseUrl() + '/libraries/subtitles-octopus-worker-legacy.js', onError() { - htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror'); + htmlMediaHelper.onErrorInternal(this, 'mediadecodeerror'); }, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, @@ -1254,10 +1246,8 @@ function supportsTextTracks() { * @private */ setCueAppearance() { - Promise.all([import('userSettings'), import('subtitleAppearanceHelper')]).then(([userSettings, subtitleAppearanceHelper]) => { - - const elementId = self.id + "-cuestyle"; + const elementId = this.id + "-cuestyle"; let styleElem = document.querySelector("#" + elementId); if (!styleElem) { @@ -1348,11 +1338,9 @@ function supportsTextTracks() { if (trackEvents && subtitleTextElement) { const ticks = timeMs * 10000; let selectedTrackEvent; - for (let i = 0; i < trackEvents.length; i++) { - - const currentTrackEvent = trackEvents[i]; - if (currentTrackEvent.StartPositionTicks <= ticks && currentTrackEvent.EndPositionTicks >= ticks) { - selectedTrackEvent = currentTrackEvent; + for (const trackEvent of trackEvents) { + if (trackEvent.StartPositionTicks <= ticks && trackEvent.EndPositionTicks >= ticks) { + selectedTrackEvent = trackEvent; break; } } @@ -1960,4 +1948,4 @@ function supportsTextTracks() { } /* eslint-enable indent */ -export default HtmlVideoPlayer; +export default () => new HtmlVideoPlayer();