shaka-player 4.9.33 → 4.9.34

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.
Files changed (47) hide show
  1. package/dist/deps.js +2 -2
  2. package/dist/locales.js +34 -34
  3. package/dist/shaka-player.compiled.d.ts +11 -3
  4. package/dist/shaka-player.compiled.debug.d.ts +11 -3
  5. package/dist/shaka-player.compiled.debug.externs.js +8 -5
  6. package/dist/shaka-player.compiled.debug.js +305 -293
  7. package/dist/shaka-player.compiled.debug.map +3 -3
  8. package/dist/shaka-player.compiled.externs.js +8 -5
  9. package/dist/shaka-player.compiled.js +1279 -1272
  10. package/dist/shaka-player.compiled.map +3 -3
  11. package/dist/shaka-player.ui.d.ts +11 -3
  12. package/dist/shaka-player.ui.debug.d.ts +11 -3
  13. package/dist/shaka-player.ui.debug.externs.js +8 -5
  14. package/dist/shaka-player.ui.debug.js +384 -372
  15. package/dist/shaka-player.ui.debug.map +3 -3
  16. package/dist/shaka-player.ui.externs.js +8 -5
  17. package/dist/shaka-player.ui.js +1466 -1459
  18. package/dist/shaka-player.ui.map +3 -3
  19. package/externs/shaka/codecs.js +21 -0
  20. package/externs/shaka/offline.js +4 -0
  21. package/lib/cast/cast_utils.js +1 -0
  22. package/lib/hls/hls_parser.js +26 -5
  23. package/lib/media/drm_engine.js +55 -12
  24. package/lib/media/media_source_engine.js +115 -33
  25. package/lib/media/segment_utils.js +50 -44
  26. package/lib/offline/download_info.js +5 -0
  27. package/lib/offline/download_manager.js +54 -0
  28. package/lib/offline/manifest_converter.js +1 -0
  29. package/lib/offline/storage.js +11 -2
  30. package/lib/player.js +49 -19
  31. package/lib/polyfill/media_capabilities.js +1 -1
  32. package/lib/text/simple_text_displayer.js +9 -1
  33. package/lib/text/ui_text_displayer.js +2 -14
  34. package/lib/transmuxer/aac_transmuxer.js +11 -3
  35. package/lib/transmuxer/ac3_transmuxer.js +11 -3
  36. package/lib/transmuxer/ec3_transmuxer.js +11 -3
  37. package/lib/transmuxer/h264.js +143 -70
  38. package/lib/transmuxer/mp3_transmuxer.js +11 -3
  39. package/lib/transmuxer/ts_transmuxer.js +68 -28
  40. package/lib/util/drm_utils.js +20 -0
  41. package/lib/util/stream_utils.js +0 -60
  42. package/lib/util/ts_parser.js +111 -85
  43. package/package.json +1 -1
  44. package/ui/controls.js +4 -0
  45. package/ui/fast_forward_button.js +7 -0
  46. package/ui/play_button.js +1 -1
  47. package/ui/rewind_button.js +7 -0
package/dist/deps.js CHANGED
@@ -102,7 +102,7 @@ goog.addDependency('../../../../lib/net/http_plugin_utils.js', ['shaka.net.HttpP
102
102
  goog.addDependency('../../../../lib/net/http_xhr_plugin.js', ['shaka.net.HttpXHRPlugin'], ['goog.asserts', 'shaka.net.HttpPluginUtils', 'shaka.net.NetworkingEngine', 'shaka.util.AbortableOperation', 'shaka.util.Error'], {'lang': 'es6'});
103
103
  goog.addDependency('../../../../lib/net/networking_engine.js', ['shaka.net.NetworkingEngine', 'shaka.net.NetworkingEngine.AdvancedRequestType', 'shaka.net.NetworkingEngine.PendingRequest', 'shaka.net.NetworkingEngine.RequestType'], ['goog.Uri', 'goog.asserts', 'shaka.net.Backoff', 'shaka.util.AbortableOperation', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IDestroyable', 'shaka.util.ObjectUtils', 'shaka.util.OperationManager', 'shaka.util.Timer'], {'lang': 'es6'});
104
104
  goog.addDependency('../../../../lib/net/networking_utils.js', ['shaka.net.NetworkingUtils'], ['goog.Uri', 'shaka.net.NetworkingEngine', 'shaka.util.Error'], {'lang': 'es8'});
105
- goog.addDependency('../../../../lib/offline/download_info.js', ['shaka.offline.DownloadInfo'], ['shaka.util.Networking'], {'lang': 'es6'});
105
+ goog.addDependency('../../../../lib/offline/download_info.js', ['shaka.offline.DownloadInfo'], ['shaka.util.Networking', 'shaka.util.Uint8ArrayUtils'], {'lang': 'es6'});
106
106
  goog.addDependency('../../../../lib/offline/download_manager.js', ['shaka.offline.DownloadManager'], ['shaka.net.NetworkingEngine', 'shaka.offline.DownloadProgressEstimator', 'shaka.util.ArrayUtils', 'shaka.util.BufferUtils', 'shaka.util.Destroyer', 'shaka.util.Error', 'shaka.util.IDestroyable', 'shaka.util.Pssh'], {'lang': 'es8'});
107
107
  goog.addDependency('../../../../lib/offline/download_progress_estimator.js', ['shaka.offline.DownloadProgressEstimator'], [], {'lang': 'es6'});
108
108
  goog.addDependency('../../../../lib/offline/indexeddb/base_storage_cell.js', ['shaka.offline.indexeddb.BaseStorageCell'], ['shaka.offline.indexeddb.DBConnection', 'shaka.util.Error'], {'lang': 'es8'});
@@ -154,7 +154,7 @@ goog.addDependency('../../../../lib/text/stub_text_displayer.js', ['shaka.text.S
154
154
  goog.addDependency('../../../../lib/text/text_engine.js', ['shaka.text.TextEngine'], ['goog.asserts', 'shaka.Deprecate', 'shaka.media.ClosedCaptionParser', 'shaka.text.Cue', 'shaka.util.BufferUtils', 'shaka.util.IDestroyable', 'shaka.util.MimeUtils'], {'lang': 'es8'});
155
155
  goog.addDependency('../../../../lib/text/text_utils.js', ['shaka.text.Utils'], ['shaka.log', 'shaka.text.Cue'], {'lang': 'es6'});
156
156
  goog.addDependency('../../../../lib/text/ttml_text_parser.js', ['shaka.text.TtmlTextParser'], ['goog.Uri', 'goog.asserts', 'shaka.log', 'shaka.text.Cue', 'shaka.text.CueRegion', 'shaka.text.TextEngine', 'shaka.util.ArrayUtils', 'shaka.util.Error', 'shaka.util.StringUtils', 'shaka.util.TXml'], {'lang': 'es6'});
157
- goog.addDependency('../../../../lib/text/ui_text_displayer.js', ['shaka.text.UITextDisplayer'], ['goog.asserts', 'shaka.Deprecate', 'shaka.log', 'shaka.text.Cue', 'shaka.text.CueRegion', 'shaka.text.Utils', 'shaka.util.Dom', 'shaka.util.EventManager', 'shaka.util.Timer'], {'lang': 'es6'});
157
+ goog.addDependency('../../../../lib/text/ui_text_displayer.js', ['shaka.text.UITextDisplayer'], ['goog.asserts', 'shaka.log', 'shaka.text.Cue', 'shaka.text.CueRegion', 'shaka.text.Utils', 'shaka.util.Dom', 'shaka.util.EventManager', 'shaka.util.Timer'], {'lang': 'es6'});
158
158
  goog.addDependency('../../../../lib/text/vtt_text_parser.js', ['shaka.text.VttTextParser'], ['goog.asserts', 'shaka.log', 'shaka.media.ManifestParser', 'shaka.text.Cue', 'shaka.text.CueRegion', 'shaka.text.TextEngine', 'shaka.util.Error', 'shaka.util.StringUtils', 'shaka.util.TXml', 'shaka.util.TextParser'], {'lang': 'es6'});
159
159
  goog.addDependency('../../../../lib/text/web_vtt_generator.js', ['shaka.text.WebVttGenerator'], ['shaka.text.Cue', 'shaka.text.Utils'], {'lang': 'es6'});
160
160
  goog.addDependency('../../../../lib/transmuxer/aac_transmuxer.js', ['shaka.transmuxer.AacTransmuxer'], ['shaka.media.Capabilities', 'shaka.transmuxer.ADTS', 'shaka.transmuxer.TransmuxerEngine', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.Id3Utils', 'shaka.util.ManifestParserUtils', 'shaka.util.MimeUtils', 'shaka.util.Mp4Generator', 'shaka.util.Uint8ArrayUtils'], {'lang': 'es6'});
package/dist/locales.js CHANGED
@@ -761,49 +761,49 @@ shaka.ui.Locales.addTo = function(localization) {
761
761
  * @const
762
762
  */
763
763
  shaka.ui.Locales.Ids = {
764
+ AUTO_QUALITY: 'AUTO_QUALITY',
765
+ AD_PROGRESS: 'AD_PROGRESS',
766
+ BACK: 'BACK',
764
767
  FAST_FORWARD: 'FAST_FORWARD',
765
- UNMUTE: 'UNMUTE',
766
- LIVE: 'LIVE',
767
- ON: 'ON',
768
- RECENTER_VR: 'RECENTER_VR',
769
- UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
770
- OFF: 'OFF',
771
- PLAY: 'PLAY',
772
- AD_DURATION: 'AD_DURATION',
773
- PAUSE: 'PAUSE',
774
- MORE_SETTINGS: 'MORE_SETTINGS',
768
+ ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
775
769
  SUBTITLE_FORCED: 'SUBTITLE_FORCED',
776
- FULL_SCREEN: 'FULL_SCREEN',
777
- UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
778
- AD_PROGRESS: 'AD_PROGRESS',
770
+ AD_STATISTICS: 'AD_STATISTICS',
779
771
  SKIP_TO_LIVE: 'SKIP_TO_LIVE',
780
- SURROUND: 'SURROUND',
781
- STATISTICS: 'STATISTICS',
782
- CAST: 'CAST',
783
- AIRPLAY: 'AIRPLAY',
784
- BACK: 'BACK',
772
+ VOLUME: 'VOLUME',
773
+ AD_DURATION: 'AD_DURATION',
774
+ UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
785
775
  QUALITY: 'QUALITY',
776
+ TOGGLE_STEREOSCOPIC: 'TOGGLE_STEREOSCOPIC',
786
777
  SEEK: 'SEEK',
787
- EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
788
- AD_TIME: 'AD_TIME',
778
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
779
+ OFF: 'OFF',
789
780
  SKIP_AD: 'SKIP_AD',
790
- EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
791
- REWIND: 'REWIND',
781
+ ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
782
+ EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
792
783
  REPLAY: 'REPLAY',
793
- CAPTIONS: 'CAPTIONS',
784
+ PLAY: 'PLAY',
785
+ FULL_SCREEN: 'FULL_SCREEN',
786
+ RESOLUTION: 'RESOLUTION',
787
+ PAUSE: 'PAUSE',
788
+ MUTE: 'MUTE',
789
+ EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
790
+ ON: 'ON',
791
+ SURROUND: 'SURROUND',
792
+ AIRPLAY: 'AIRPLAY',
793
+ AD_TIME: 'AD_TIME',
794
+ STATISTICS: 'STATISTICS',
795
+ EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
796
+ LIVE: 'LIVE',
797
+ UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
794
798
  PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
795
- ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
799
+ RECENTER_VR: 'RECENTER_VR',
800
+ CAPTIONS: 'CAPTIONS',
801
+ LOOP: 'LOOP',
796
802
  PLAYBACK_RATE: 'PLAYBACK_RATE',
797
- MUTE: 'MUTE',
798
- VOLUME: 'VOLUME',
799
- AD_STATISTICS: 'AD_STATISTICS',
803
+ MORE_SETTINGS: 'MORE_SETTINGS',
804
+ UNMUTE: 'UNMUTE',
805
+ REWIND: 'REWIND',
800
806
  MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
801
- LOOP: 'LOOP',
802
- RESOLUTION: 'RESOLUTION',
803
- AUTO_QUALITY: 'AUTO_QUALITY',
804
- ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
805
807
  LANGUAGE: 'LANGUAGE',
806
- TOGGLE_STEREOSCOPIC: 'TOGGLE_STEREOSCOPIC',
807
- EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
808
- NOT_APPLICABLE: 'NOT_APPLICABLE',
808
+ CAST: 'CAST',
809
809
  };
@@ -274,6 +274,10 @@ declare namespace shaka {
274
274
  * return <code>false</code>.
275
275
  */
276
276
  isBuffering ( ) : boolean ;
277
+ /**
278
+ * Indicate if the video has ended.
279
+ */
280
+ isEnded ( ) : boolean ;
277
281
  /**
278
282
  * Get if the player is playing in-progress content. If the player has not
279
283
  * loaded content, this will return <code>false</code>.
@@ -2581,7 +2585,7 @@ declare namespace shaka.text {
2581
2585
  * The text displayer plugin for the Shaka Player UI. Can also be used directly
2582
2586
  * by providing an appropriate container element.
2583
2587
  */
2584
- constructor (video : HTMLMediaElement | null , videoContainer : HTMLElement | null , config : shaka.extern.TextDisplayerConfiguration ) ;
2588
+ constructor (video : HTMLMediaElement | null , videoContainer : HTMLElement | null ) ;
2585
2589
  append (cues : any ) : any ;
2586
2590
  configure (config : any ) : any ;
2587
2591
  destroy ( ) : any ;
@@ -3694,7 +3698,7 @@ declare namespace shaka.util {
3694
3698
  * The code is based on hls.js
3695
3699
  * Credit to https://github.com/video-dev/hls.js/blob/master/src/demux/tsdemuxer.ts
3696
3700
  */
3697
- parseNalus (pes : shaka.extern.MPEG_PES , lastNalu ? : shaka.extern.VideoNalu | null , lastState ? : number | null ) : shaka.extern.VideoNalu [] ;
3701
+ parseNalus (pes : shaka.extern.MPEG_PES , lastInfo : { nalu : shaka.extern.VideoNalu | null , state : number | null } ) : shaka.extern.VideoNalu [] ;
3698
3702
  static Timescale : number ;
3699
3703
  /**
3700
3704
  * Check if the passed data corresponds to an MPEG2-TS
@@ -4057,6 +4061,10 @@ declare namespace shaka.extern {
4057
4061
  declare namespace shaka.extern {
4058
4062
  type VideoNalu = { data : Uint8Array , fullData : Uint8Array , time : number | null , type : number } ;
4059
4063
  }
4064
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/codecs.js
4065
+ declare namespace shaka.extern {
4066
+ type VideoSample = { data : Uint8Array , dts : number | null , frame : boolean , isKeyframe : boolean , nalus : shaka.extern.VideoNalu [] , pts : number | null } ;
4067
+ }
4060
4068
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/error.js
4061
4069
  declare namespace shaka.extern {
4062
4070
  interface Error {
@@ -4464,7 +4472,7 @@ declare namespace shaka.extern {
4464
4472
  }
4465
4473
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/offline.js
4466
4474
  declare namespace shaka.extern {
4467
- type StreamDB = { audioSamplingRate : number | null , channelsCount : number | null , closedCaptions : Map < string , string > | null , codecs : string , colorGamut ? : string , encrypted : boolean , external : boolean , fastSwitching : boolean , forced : boolean , frameRate ? : number , groupId : string | null , hdr ? : string , height : number | null , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , mimeType : string , originalId : string | null , originalLanguage ? : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segments : shaka.extern.SegmentDB [] , spatialAudio : boolean , tilesLayout ? : string , type : string , variantIds : number [] , videoLayout ? : string , width : number | null } ;
4475
+ type StreamDB = { audioSamplingRate : number | null , channelsCount : number | null , closedCaptions : Map < string , string > | null , codecs : string , colorGamut ? : string , encrypted : boolean , external : boolean , fastSwitching : boolean , forced : boolean , frameRate ? : number , groupId : string | null , hdr ? : string , height : number | null , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , mimeType : string , mssPrivateData ? : shaka.extern.MssPrivateData , originalId : string | null , originalLanguage ? : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segments : shaka.extern.SegmentDB [] , spatialAudio : boolean , tilesLayout ? : string , type : string , variantIds : number [] , videoLayout ? : string , width : number | null } ;
4468
4476
  }
4469
4477
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/offline_compat_v1.js
4470
4478
  declare namespace shaka.extern {
@@ -274,6 +274,10 @@ declare namespace shaka {
274
274
  * return <code>false</code>.
275
275
  */
276
276
  isBuffering ( ) : boolean ;
277
+ /**
278
+ * Indicate if the video has ended.
279
+ */
280
+ isEnded ( ) : boolean ;
277
281
  /**
278
282
  * Get if the player is playing in-progress content. If the player has not
279
283
  * loaded content, this will return <code>false</code>.
@@ -2581,7 +2585,7 @@ declare namespace shaka.text {
2581
2585
  * The text displayer plugin for the Shaka Player UI. Can also be used directly
2582
2586
  * by providing an appropriate container element.
2583
2587
  */
2584
- constructor (video : HTMLMediaElement | null , videoContainer : HTMLElement | null , config : shaka.extern.TextDisplayerConfiguration ) ;
2588
+ constructor (video : HTMLMediaElement | null , videoContainer : HTMLElement | null ) ;
2585
2589
  append (cues : any ) : any ;
2586
2590
  configure (config : any ) : any ;
2587
2591
  destroy ( ) : any ;
@@ -3694,7 +3698,7 @@ declare namespace shaka.util {
3694
3698
  * The code is based on hls.js
3695
3699
  * Credit to https://github.com/video-dev/hls.js/blob/master/src/demux/tsdemuxer.ts
3696
3700
  */
3697
- parseNalus (pes : shaka.extern.MPEG_PES , lastNalu ? : shaka.extern.VideoNalu | null , lastState ? : number | null ) : shaka.extern.VideoNalu [] ;
3701
+ parseNalus (pes : shaka.extern.MPEG_PES , lastInfo : { nalu : shaka.extern.VideoNalu | null , state : number | null } ) : shaka.extern.VideoNalu [] ;
3698
3702
  static Timescale : number ;
3699
3703
  /**
3700
3704
  * Check if the passed data corresponds to an MPEG2-TS
@@ -4057,6 +4061,10 @@ declare namespace shaka.extern {
4057
4061
  declare namespace shaka.extern {
4058
4062
  type VideoNalu = { data : Uint8Array , fullData : Uint8Array , time : number | null , type : number } ;
4059
4063
  }
4064
+ // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/codecs.js
4065
+ declare namespace shaka.extern {
4066
+ type VideoSample = { data : Uint8Array , dts : number | null , frame : boolean , isKeyframe : boolean , nalus : shaka.extern.VideoNalu [] , pts : number | null } ;
4067
+ }
4060
4068
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/error.js
4061
4069
  declare namespace shaka.extern {
4062
4070
  interface Error {
@@ -4464,7 +4472,7 @@ declare namespace shaka.extern {
4464
4472
  }
4465
4473
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/offline.js
4466
4474
  declare namespace shaka.extern {
4467
- type StreamDB = { audioSamplingRate : number | null , channelsCount : number | null , closedCaptions : Map < string , string > | null , codecs : string , colorGamut ? : string , encrypted : boolean , external : boolean , fastSwitching : boolean , forced : boolean , frameRate ? : number , groupId : string | null , hdr ? : string , height : number | null , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , mimeType : string , originalId : string | null , originalLanguage ? : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segments : shaka.extern.SegmentDB [] , spatialAudio : boolean , tilesLayout ? : string , type : string , variantIds : number [] , videoLayout ? : string , width : number | null } ;
4475
+ type StreamDB = { audioSamplingRate : number | null , channelsCount : number | null , closedCaptions : Map < string , string > | null , codecs : string , colorGamut ? : string , encrypted : boolean , external : boolean , fastSwitching : boolean , forced : boolean , frameRate ? : number , groupId : string | null , hdr ? : string , height : number | null , id : number , keyIds : Set < string > , kind ? : string , label : string | null , language : string , mimeType : string , mssPrivateData ? : shaka.extern.MssPrivateData , originalId : string | null , originalLanguage ? : string | null , pixelAspectRatio ? : string , primary : boolean , roles : string [] , segments : shaka.extern.SegmentDB [] , spatialAudio : boolean , tilesLayout ? : string , type : string , variantIds : number [] , videoLayout ? : string , width : number | null } ;
4468
4476
  }
4469
4477
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/offline_compat_v1.js
4470
4478
  declare namespace shaka.extern {
@@ -2296,11 +2296,10 @@ shaka.util.TsParser = class {
2296
2296
  * The code is based on hls.js
2297
2297
  * Credit to https://github.com/video-dev/hls.js/blob/master/src/demux/tsdemuxer.ts
2298
2298
  * @param {shaka.extern.MPEG_PES} pes
2299
- * @param {?shaka.extern.VideoNalu=} lastNalu
2300
- * @param {?number=} lastState
2299
+ * @param {{nalu: ?shaka.extern.VideoNalu, state: ?number}} lastInfo
2301
2300
  * @return {!Array.<shaka.extern.VideoNalu>}
2302
2301
  */
2303
- parseNalus(pes, lastNalu, lastState) {}
2302
+ parseNalus(pes, lastInfo) {}
2304
2303
  /**
2305
2304
  * Return the ID3 metadata
2306
2305
  * @return {!Array.<shaka.extern.ID3Metadata>}
@@ -3066,9 +3065,8 @@ shaka.text.UITextDisplayer = class {
3066
3065
  * Constructor.
3067
3066
  * @param {HTMLMediaElement} video
3068
3067
  * @param {HTMLElement} videoContainer
3069
- * @param {shaka.extern.TextDisplayerConfiguration} config
3070
3068
  */
3071
- constructor(video, videoContainer, config) {}
3069
+ constructor(video, videoContainer) {}
3072
3070
  /**
3073
3071
  * @override
3074
3072
  */
@@ -3737,6 +3735,11 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
3737
3735
  * @param {HTMLElement} videoContainer
3738
3736
  */
3739
3737
  setVideoContainer(videoContainer) {}
3738
+ /**
3739
+ * Indicate if the video has ended.
3740
+ * @return {boolean}
3741
+ */
3742
+ isEnded() {}
3740
3743
  };
3741
3744
  /**
3742
3745
  * In order to know what method of loading the player used for some content, we