From f1695ed41ddc3deb3ee1cd3bdee470321fcc5512 Mon Sep 17 00:00:00 2001 From: Dan Ziv Date: Fri, 5 Mar 2021 09:29:30 +0200 Subject: [PATCH 1/2] FEC-10941 --- flow-typed/interfaces/engine.js | 2 ++ flow-typed/interfaces/media-source-adapter.js | 3 ++- src/engines/html5/html5.js | 12 ++++++++++++ src/player.js | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/flow-typed/interfaces/engine.js b/flow-typed/interfaces/engine.js index c678454ce..eb3ab20dd 100644 --- a/flow-typed/interfaces/engine.js +++ b/flow-typed/interfaces/engine.js @@ -4,6 +4,7 @@ import AudioTrack from '../../src/track/audio-track'; import TextTrack from '../../src/track/text-track'; import FakeEventTarget from '../../src/event/fake-event-target'; import {ThumbnailInfo} from '../../src/thumbnail/thumbnail-info'; +import {ImageTrack} from '../../src/playkit'; declare interface IEngineStatic { id: string; @@ -28,6 +29,7 @@ declare interface IEngine extends FakeEventTarget { selectVideoTrack(videoTrack: VideoTrack): void; selectAudioTrack(audioTrack: AudioTrack): void; selectTextTrack(textTrack: TextTrack): void; + selectImageTrack(imageTrack: ImageTrack): void; isPictureInPictureSupported(): boolean; enterPictureInPicture(): void; exitPictureInPicture(): void; diff --git a/flow-typed/interfaces/media-source-adapter.js b/flow-typed/interfaces/media-source-adapter.js index f4f833dc1..7e842f6d3 100644 --- a/flow-typed/interfaces/media-source-adapter.js +++ b/flow-typed/interfaces/media-source-adapter.js @@ -2,7 +2,7 @@ import VideoTrack from '../../src/track/video-track'; import AudioTrack from '../../src/track/audio-track'; import TextTrack from '../../src/track/text-track'; -import {FakeEventTarget} from '../../src/playkit'; +import {FakeEventTarget, ImageTrack} from '../../src/playkit'; declare interface IMediaSourceAdapterStatic { +id: string; @@ -24,6 +24,7 @@ declare interface IMediaSourceAdapter extends FakeEventTarget { selectVideoTrack(videoTrack: VideoTrack): void; selectAudioTrack(audioTrack: AudioTrack): void; selectTextTrack(textTrack: TextTrack): void; + selectImageTrack(imageTrack: ImageTrack): void; hideTextTrack(): void; enableAdaptiveBitrate(): void; isAdaptiveBitrateEnabled(): boolean; diff --git a/src/engines/html5/html5.js b/src/engines/html5/html5.js index eabe81712..01e86a0d2 100644 --- a/src/engines/html5/html5.js +++ b/src/engines/html5/html5.js @@ -14,6 +14,7 @@ import Error from '../../error/error'; import getLogger from '../../utils/logger'; import {DroppedFramesWatcher} from '../dropped-frames-watcher'; import {ThumbnailInfo} from '../../thumbnail/thumbnail-info'; +import {ImageTrack} from '../../playkit'; /** * Html5 engine for playback. @@ -392,6 +393,17 @@ export default class Html5 extends FakeEventTarget implements IEngine { this._addCueChangeListener(); } + /** + * Select a new image track. + * @param {ImageTrack} imageTrack - The image track object to set. + * @returns {void} + */ + selectImageTrack(imageTrack: ImageTrack): void { + if (this._mediaSourceAdapter) { + this._mediaSourceAdapter.selectImageTrack(imageTrack); + } + } + /** * Hide the text track * @function hideTextTrack diff --git a/src/player.js b/src/player.js index 879d47eae..aee075d86 100644 --- a/src/player.js +++ b/src/player.js @@ -1237,6 +1237,8 @@ export default class Player extends FakeEventTarget { this._externalCaptionsHandler.hideTextTrack(); this._engine.selectTextTrack(track); } + } else if (track instanceof ImageTrack) { + this._engine.selectImageTrack(track); } } } From 044dd3b7d5fa02c089fa6dbb452db6e429a2d634 Mon Sep 17 00:00:00 2001 From: Dan Ziv Date: Mon, 8 Mar 2021 10:17:57 +0200 Subject: [PATCH 2/2] fix import --- src/engines/html5/html5.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engines/html5/html5.js b/src/engines/html5/html5.js index 01e86a0d2..e5d3b0554 100644 --- a/src/engines/html5/html5.js +++ b/src/engines/html5/html5.js @@ -7,6 +7,7 @@ import MediaSourceProvider from './media-source/media-source-provider'; import VideoTrack from '../../track/video-track'; import AudioTrack from '../../track/audio-track'; import PKTextTrack from '../../track/text-track'; +import ImageTrack from '../../track/image-track'; import {Cue} from '../../track/vtt-cue'; import * as Utils from '../../utils/util'; import Html5AutoPlayCapability from './capabilities/html5-autoplay'; @@ -14,7 +15,6 @@ import Error from '../../error/error'; import getLogger from '../../utils/logger'; import {DroppedFramesWatcher} from '../dropped-frames-watcher'; import {ThumbnailInfo} from '../../thumbnail/thumbnail-info'; -import {ImageTrack} from '../../playkit'; /** * Html5 engine for playback.