shaka-player 4.0.0 → 4.1.0

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 (114) hide show
  1. package/.github/config.yml +1 -0
  2. package/.github/workflows/release-please.yaml +6 -11
  3. package/CHANGELOG.md +33 -0
  4. package/CONTRIBUTORS +1 -0
  5. package/README.md +4 -4
  6. package/build/misspellings.txt +1 -0
  7. package/demo/common/message_ids.js +1 -0
  8. package/demo/config.js +3 -1
  9. package/demo/demo.less +0 -1
  10. package/demo/locales/en.json +1 -0
  11. package/demo/locales/source.json +4 -0
  12. package/dist/controls.css +3 -3
  13. package/dist/controls.css.map +1 -1
  14. package/dist/demo.compiled.debug.js +4 -4
  15. package/dist/demo.compiled.debug.map +2 -2
  16. package/dist/demo.compiled.js +4 -4
  17. package/dist/demo.compiled.map +2 -2
  18. package/dist/demo.css +1 -1
  19. package/dist/demo.css.map +1 -1
  20. package/dist/deps.js +3 -3
  21. package/dist/locales.js +32 -32
  22. package/dist/receiver.compiled.debug.js +2 -2
  23. package/dist/receiver.compiled.debug.map +2 -2
  24. package/dist/receiver.compiled.js +2 -2
  25. package/dist/receiver.compiled.map +2 -2
  26. package/dist/shaka-player.compiled.d.ts +15 -8
  27. package/dist/shaka-player.compiled.debug.d.ts +15 -8
  28. package/dist/shaka-player.compiled.debug.externs.js +11 -2
  29. package/dist/shaka-player.compiled.debug.js +266 -253
  30. package/dist/shaka-player.compiled.debug.map +3 -3
  31. package/dist/shaka-player.compiled.externs.js +11 -2
  32. package/dist/shaka-player.compiled.js +792 -784
  33. package/dist/shaka-player.compiled.map +3 -3
  34. package/dist/shaka-player.ui.d.ts +16 -9
  35. package/dist/shaka-player.ui.debug.d.ts +16 -9
  36. package/dist/shaka-player.ui.debug.externs.js +11 -2
  37. package/dist/shaka-player.ui.debug.js +299 -282
  38. package/dist/shaka-player.ui.debug.map +3 -3
  39. package/dist/shaka-player.ui.externs.js +11 -2
  40. package/dist/shaka-player.ui.js +948 -941
  41. package/dist/shaka-player.ui.map +3 -3
  42. package/docs/design/chromecast.md +3 -1
  43. package/docs/tutorials/drm-config.md +16 -0
  44. package/docs/tutorials/ui.md +26 -0
  45. package/docs/tutorials/upgrade.md +4 -2
  46. package/externs/chromecast.js +9 -2
  47. package/externs/shaka/manifest.js +7 -0
  48. package/externs/shaka/player.js +32 -2
  49. package/externs/shaka/text.js +7 -0
  50. package/karma.conf.js +4 -0
  51. package/lib/abr/simple_abr_manager.js +2 -1
  52. package/lib/cast/cast_proxy.js +19 -8
  53. package/lib/cast/cast_receiver.js +3 -3
  54. package/lib/cast/cast_sender.js +12 -2
  55. package/lib/dash/dash_parser.js +2 -2
  56. package/lib/hls/hls_parser.js +46 -15
  57. package/lib/media/drm_engine.js +36 -8
  58. package/lib/media/gap_jumping_controller.js +23 -1
  59. package/lib/media/media_source_engine.js +91 -37
  60. package/lib/media/playhead.js +47 -4
  61. package/lib/media/stall_detector.js +19 -2
  62. package/lib/media/streaming_engine.js +9 -3
  63. package/lib/offline/indexeddb/storage_mechanism.js +4 -2
  64. package/lib/offline/manifest_converter.js +1 -0
  65. package/lib/player.js +339 -175
  66. package/lib/text/cue.js +6 -0
  67. package/lib/text/ui_text_displayer.js +1 -0
  68. package/lib/text/vtt_text_parser.js +11 -7
  69. package/lib/util/config_utils.js +25 -0
  70. package/lib/util/error.js +13 -0
  71. package/lib/util/fake_event.js +39 -0
  72. package/lib/util/manifest_parser_utils.js +1 -1
  73. package/lib/util/mime_utils.js +62 -6
  74. package/lib/util/periods.js +5 -4
  75. package/lib/util/player_configuration.js +16 -14
  76. package/lib/util/stats.js +28 -1
  77. package/lib/util/stream_utils.js +11 -2
  78. package/package.json +5 -2
  79. package/test/cast/cast_proxy_unit.js +3 -1
  80. package/test/cast/cast_sender_unit.js +21 -6
  81. package/test/demo/demo_unit.js +2 -1
  82. package/test/hls/hls_live_unit.js +79 -7
  83. package/test/hls/manifest_text_parser_unit.js +19 -0
  84. package/test/media/adaptation_set_unit.js +1 -0
  85. package/test/media/playhead_unit.js +114 -25
  86. package/test/media/stall_detector_unit.js +20 -2
  87. package/test/media/streaming_engine_integration.js +2 -1
  88. package/test/media/streaming_engine_unit.js +1 -0
  89. package/test/offline/indexeddb_storage_unit.js +1 -1
  90. package/test/offline/storage_compatibility_unit.js +1 -1
  91. package/test/player_external.js +7 -1
  92. package/test/player_integration.js +9 -10
  93. package/test/player_src_equals_integration.js +81 -83
  94. package/test/player_unit.js +240 -2
  95. package/test/test/boot.js +9 -0
  96. package/test/test/externs/filters.js +4 -0
  97. package/test/test/util/manifest_generator.js +2 -0
  98. package/test/test/util/simple_fakes.js +45 -2
  99. package/test/test/util/streaming_engine_util.js +1 -0
  100. package/test/text/vtt_text_parser_unit.js +68 -5
  101. package/test/ui/ui_unit.js +18 -5
  102. package/test/util/mime_utils_unit.js +54 -0
  103. package/test/util/periods_unit.js +79 -0
  104. package/test/util/stream_utils_unit.js +108 -0
  105. package/ui/controls.js +12 -8
  106. package/ui/externs/ui.js +10 -1
  107. package/ui/less/containers.less +1 -1
  108. package/ui/less/general.less +1 -1
  109. package/ui/less/range_elements.less +1 -0
  110. package/ui/resolution_selection.js +1 -1
  111. package/ui/statistics_button.js +10 -0
  112. package/ui/ui.js +12 -1
  113. package/.github/pull_request_template.md +0 -10
  114. package/docs/tutorials/gsoc-ideas-list.md +0 -3
@@ -671,10 +671,10 @@ declare namespace shaka.ads {
671
671
  declare namespace shaka.cast {
672
672
  class CastProxy extends shaka.util.FakeEventTarget implements shaka.util.IDestroyable {
673
673
  private noStructuralTyping_shaka_cast_CastProxy : any;
674
- constructor (video : HTMLMediaElement , player : shaka.Player , receiverAppId : string ) ;
674
+ constructor (video : HTMLMediaElement , player : shaka.Player , receiverAppId : string , androidReceiverCompatible : boolean ) ;
675
675
  canCast ( ) : boolean ;
676
676
  cast ( ) : Promise < any > ;
677
- changeReceiverId (newAppId : string ) : any ;
677
+ changeReceiverId (newAppId : string , newCastAndroidReceiver ? : boolean ) : any ;
678
678
  /**
679
679
  * Destroys the proxy and the underlying local Player.
680
680
  * @param forceDisconnect If true, force the receiver app to shut down by disconnecting. Does nothing if not connected.
@@ -1652,6 +1652,7 @@ declare namespace shaka.text {
1652
1652
  startTime : any ;
1653
1653
  textAlign : any ;
1654
1654
  textDecoration : any ;
1655
+ textShadow : any ;
1655
1656
  textStrokeColor : any ;
1656
1657
  textStrokeWidth : any ;
1657
1658
  wrapLine : any ;
@@ -2647,6 +2648,7 @@ declare namespace shaka.util.Error {
2647
2648
  CAST_CANCELED_BY_USER = 8004.0 ,
2648
2649
  CAST_CONNECTION_TIMED_OUT = 8005.0 ,
2649
2650
  CAST_RECEIVER_APP_UNAVAILABLE = 8006.0 ,
2651
+ CHAPTERS_TRACK_FAILED = 2015.0 ,
2650
2652
  CONTENT_NOT_LOADED = 7004.0 ,
2651
2653
  CONTENT_TRANSFORMATION_FAILED = 3019.0 ,
2652
2654
  CONTENT_UNSUPPORTED_BY_BROWSER = 4032.0 ,
@@ -2733,6 +2735,7 @@ declare namespace shaka.util.Error {
2733
2735
  REQUEST_FILTER_ERROR = 1006.0 ,
2734
2736
  RESPONSE_FILTER_ERROR = 1007.0 ,
2735
2737
  RESTRICTIONS_CANNOT_BE_MET = 4012.0 ,
2738
+ SEGMENT_MISSING = 1011.0 ,
2736
2739
  SERVER_CERTIFICATE_REQUEST_FAILED = 6017.0 ,
2737
2740
  SERVER_CERTIFICATE_REQUIRED = 6015.0 ,
2738
2741
  SS_AD_MANAGER_NOT_INITIALIZED = 10003.0 ,
@@ -3343,7 +3346,7 @@ declare namespace chrome.cast {
3343
3346
  declare namespace chrome.cast {
3344
3347
  class SessionRequest {
3345
3348
  private noStructuralTyping_chrome_cast_SessionRequest : any;
3346
- constructor (appId : string ) ;
3349
+ constructor (appId : string , capabilities : ( object | null ) [] | null , timeout : number | null , androidReceiverCompatible : boolean , credentialsData : object | null ) ;
3347
3350
  }
3348
3351
  }
3349
3352
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/chromecast.js
@@ -3899,7 +3902,7 @@ declare namespace shaka.extern {
3899
3902
  }
3900
3903
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3901
3904
  declare namespace shaka.extern {
3902
- type Variant = { allowedByApplication : boolean , allowedByKeySystem : boolean , audio : shaka.extern.Stream | null , bandwidth : number , decodingInfos : ( any | null ) [] , id : number , language : string , primary : boolean , video : shaka.extern.Stream | null } ;
3905
+ type Variant = { allowedByApplication : boolean , allowedByKeySystem : boolean , audio : shaka.extern.Stream | null , bandwidth : number , decodingInfos : ( any | null ) [] , disabledUntilTime : number , id : number , language : string , primary : boolean , video : shaka.extern.Stream | null } ;
3903
3906
  }
3904
3907
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest_parser.js
3905
3908
  declare namespace shaka.extern {
@@ -4259,7 +4262,7 @@ declare namespace shaka.extern {
4259
4262
  }
4260
4263
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4261
4264
  declare namespace shaka.extern {
4262
- type Chapter = { endTime : number , startTime : number , title : string } ;
4265
+ type Chapter = { endTime : number , id : string , startTime : number , title : string } ;
4263
4266
  }
4264
4267
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4265
4268
  declare namespace shaka.extern {
@@ -4271,7 +4274,7 @@ declare namespace shaka.extern {
4271
4274
  }
4272
4275
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4273
4276
  declare namespace shaka.extern {
4274
- type DrmConfiguration = { advanced : { [ key: string ]: shaka.extern.AdvancedDrmConfiguration } | null , clearKeys : { [ key: string ]: string } , delayLicenseRequestUntilPlayed : boolean , logLicenseExchange : boolean , preferredKeySystems : string [] , retryParameters : shaka.extern.RetryParameters , servers : { [ key: string ]: string } , updateExpirationTime : number } ;
4277
+ type DrmConfiguration = { advanced : { [ key: string ]: shaka.extern.AdvancedDrmConfiguration } | null , clearKeys : { [ key: string ]: string } , delayLicenseRequestUntilPlayed : boolean , initDataTransform ? : (a : Uint8Array , b : string , c : shaka.extern.DrmInfo | null ) => Uint8Array , keySystemsMapping : { [ key: string ]: string } , logLicenseExchange : boolean , preferredKeySystems : string [] , retryParameters : shaka.extern.RetryParameters , servers : { [ key: string ]: string } , updateExpirationTime : number } ;
4275
4278
  }
4276
4279
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4277
4280
  declare namespace shaka.extern {
@@ -4319,11 +4322,11 @@ declare namespace shaka.extern {
4319
4322
  }
4320
4323
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4321
4324
  declare namespace shaka.extern {
4322
- type Stats = { bufferingTime : number , completionPercent : number , corruptedFrames : number , decodedFrames : number , drmTimeSeconds : number , droppedFrames : number , estimatedBandwidth : number , height : number , licenseTime : number , liveLatency : number , loadLatency : number , manifestTimeSeconds : number , maxSegmentDuration : number , pauseTime : number , playTime : number , stateHistory : shaka.extern.StateChange [] , streamBandwidth : number , switchHistory : shaka.extern.TrackChoice [] , width : number } ;
4325
+ type Stats = { bufferingTime : number , completionPercent : number , corruptedFrames : number , decodedFrames : number , drmTimeSeconds : number , droppedFrames : number , estimatedBandwidth : number , gapsJumped : number , height : number , licenseTime : number , liveLatency : number , loadLatency : number , manifestTimeSeconds : number , maxSegmentDuration : number , pauseTime : number , playTime : number , stallsDetected : number , stateHistory : shaka.extern.StateChange [] , streamBandwidth : number , switchHistory : shaka.extern.TrackChoice [] , width : number } ;
4323
4326
  }
4324
4327
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4325
4328
  declare namespace shaka.extern {
4326
- type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , dispatchAllEmsgBoxes : boolean , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , lowLatencyMode : boolean , observeQualityChanges : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4329
+ type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , dispatchAllEmsgBoxes : boolean , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , lowLatencyMode : boolean , maxDisabledTime : number , observeQualityChanges : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4327
4330
  }
4328
4331
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4329
4332
  declare namespace shaka.extern {
@@ -4502,6 +4505,10 @@ declare namespace shaka.extern {
4502
4505
  * and line through. Empty array means no decoration.
4503
4506
  */
4504
4507
  textDecoration : shaka.text.Cue.textDecoration [] ;
4508
+ /**
4509
+ * Text shadow color as a CSS text-shadow value.
4510
+ */
4511
+ textShadow : string ;
4505
4512
  /**
4506
4513
  * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
4507
4514
  */
@@ -4796,7 +4803,7 @@ nameSpan : HTMLElement ;
4796
4803
  }
4797
4804
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4798
4805
  declare namespace shaka.extern {
4799
- type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , contextMenuElements : string [] , controlPanelElements : string [] , customContextMenu : boolean , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , enableTooltips : boolean , fadeDelay : number , fastForwardRates : number [] , forceLandscapeOnFullscreen : boolean , overflowMenuButtons : string [] , playbackRates : number [] , rewindRates : number [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , singleClickForPlayAndPause : boolean , statisticsList : string [] , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4806
+ type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castAndroidReceiverCompatible : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , contextMenuElements : string [] , controlPanelElements : string [] , customContextMenu : boolean , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , enableTooltips : boolean , fadeDelay : number , fastForwardRates : number [] , forceLandscapeOnFullscreen : boolean , keyboardSeekDistance : number , overflowMenuButtons : string [] , playbackRates : number [] , rewindRates : number [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , singleClickForPlayAndPause : boolean , statisticsList : string [] , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4800
4807
  }
4801
4808
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4802
4809
  declare namespace shaka.extern {
@@ -671,10 +671,10 @@ declare namespace shaka.ads {
671
671
  declare namespace shaka.cast {
672
672
  class CastProxy extends shaka.util.FakeEventTarget implements shaka.util.IDestroyable {
673
673
  private noStructuralTyping_shaka_cast_CastProxy : any;
674
- constructor (video : HTMLMediaElement , player : shaka.Player , receiverAppId : string ) ;
674
+ constructor (video : HTMLMediaElement , player : shaka.Player , receiverAppId : string , androidReceiverCompatible : boolean ) ;
675
675
  canCast ( ) : boolean ;
676
676
  cast ( ) : Promise < any > ;
677
- changeReceiverId (newAppId : string ) : any ;
677
+ changeReceiverId (newAppId : string , newCastAndroidReceiver ? : boolean ) : any ;
678
678
  /**
679
679
  * Destroys the proxy and the underlying local Player.
680
680
  * @param forceDisconnect If true, force the receiver app to shut down by disconnecting. Does nothing if not connected.
@@ -1652,6 +1652,7 @@ declare namespace shaka.text {
1652
1652
  startTime : any ;
1653
1653
  textAlign : any ;
1654
1654
  textDecoration : any ;
1655
+ textShadow : any ;
1655
1656
  textStrokeColor : any ;
1656
1657
  textStrokeWidth : any ;
1657
1658
  wrapLine : any ;
@@ -2647,6 +2648,7 @@ declare namespace shaka.util.Error {
2647
2648
  CAST_CANCELED_BY_USER = 8004.0 ,
2648
2649
  CAST_CONNECTION_TIMED_OUT = 8005.0 ,
2649
2650
  CAST_RECEIVER_APP_UNAVAILABLE = 8006.0 ,
2651
+ CHAPTERS_TRACK_FAILED = 2015.0 ,
2650
2652
  CONTENT_NOT_LOADED = 7004.0 ,
2651
2653
  CONTENT_TRANSFORMATION_FAILED = 3019.0 ,
2652
2654
  CONTENT_UNSUPPORTED_BY_BROWSER = 4032.0 ,
@@ -2733,6 +2735,7 @@ declare namespace shaka.util.Error {
2733
2735
  REQUEST_FILTER_ERROR = 1006.0 ,
2734
2736
  RESPONSE_FILTER_ERROR = 1007.0 ,
2735
2737
  RESTRICTIONS_CANNOT_BE_MET = 4012.0 ,
2738
+ SEGMENT_MISSING = 1011.0 ,
2736
2739
  SERVER_CERTIFICATE_REQUEST_FAILED = 6017.0 ,
2737
2740
  SERVER_CERTIFICATE_REQUIRED = 6015.0 ,
2738
2741
  SS_AD_MANAGER_NOT_INITIALIZED = 10003.0 ,
@@ -3343,7 +3346,7 @@ declare namespace chrome.cast {
3343
3346
  declare namespace chrome.cast {
3344
3347
  class SessionRequest {
3345
3348
  private noStructuralTyping_chrome_cast_SessionRequest : any;
3346
- constructor (appId : string ) ;
3349
+ constructor (appId : string , capabilities : ( object | null ) [] | null , timeout : number | null , androidReceiverCompatible : boolean , credentialsData : object | null ) ;
3347
3350
  }
3348
3351
  }
3349
3352
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/chromecast.js
@@ -3899,7 +3902,7 @@ declare namespace shaka.extern {
3899
3902
  }
3900
3903
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3901
3904
  declare namespace shaka.extern {
3902
- type Variant = { allowedByApplication : boolean , allowedByKeySystem : boolean , audio : shaka.extern.Stream | null , bandwidth : number , decodingInfos : ( any | null ) [] , id : number , language : string , primary : boolean , video : shaka.extern.Stream | null } ;
3905
+ type Variant = { allowedByApplication : boolean , allowedByKeySystem : boolean , audio : shaka.extern.Stream | null , bandwidth : number , decodingInfos : ( any | null ) [] , disabledUntilTime : number , id : number , language : string , primary : boolean , video : shaka.extern.Stream | null } ;
3903
3906
  }
3904
3907
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest_parser.js
3905
3908
  declare namespace shaka.extern {
@@ -4259,7 +4262,7 @@ declare namespace shaka.extern {
4259
4262
  }
4260
4263
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4261
4264
  declare namespace shaka.extern {
4262
- type Chapter = { endTime : number , startTime : number , title : string } ;
4265
+ type Chapter = { endTime : number , id : string , startTime : number , title : string } ;
4263
4266
  }
4264
4267
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4265
4268
  declare namespace shaka.extern {
@@ -4271,7 +4274,7 @@ declare namespace shaka.extern {
4271
4274
  }
4272
4275
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4273
4276
  declare namespace shaka.extern {
4274
- type DrmConfiguration = { advanced : { [ key: string ]: shaka.extern.AdvancedDrmConfiguration } | null , clearKeys : { [ key: string ]: string } , delayLicenseRequestUntilPlayed : boolean , logLicenseExchange : boolean , preferredKeySystems : string [] , retryParameters : shaka.extern.RetryParameters , servers : { [ key: string ]: string } , updateExpirationTime : number } ;
4277
+ type DrmConfiguration = { advanced : { [ key: string ]: shaka.extern.AdvancedDrmConfiguration } | null , clearKeys : { [ key: string ]: string } , delayLicenseRequestUntilPlayed : boolean , initDataTransform ? : (a : Uint8Array , b : string , c : shaka.extern.DrmInfo | null ) => Uint8Array , keySystemsMapping : { [ key: string ]: string } , logLicenseExchange : boolean , preferredKeySystems : string [] , retryParameters : shaka.extern.RetryParameters , servers : { [ key: string ]: string } , updateExpirationTime : number } ;
4275
4278
  }
4276
4279
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4277
4280
  declare namespace shaka.extern {
@@ -4319,11 +4322,11 @@ declare namespace shaka.extern {
4319
4322
  }
4320
4323
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4321
4324
  declare namespace shaka.extern {
4322
- type Stats = { bufferingTime : number , completionPercent : number , corruptedFrames : number , decodedFrames : number , drmTimeSeconds : number , droppedFrames : number , estimatedBandwidth : number , height : number , licenseTime : number , liveLatency : number , loadLatency : number , manifestTimeSeconds : number , maxSegmentDuration : number , pauseTime : number , playTime : number , stateHistory : shaka.extern.StateChange [] , streamBandwidth : number , switchHistory : shaka.extern.TrackChoice [] , width : number } ;
4325
+ type Stats = { bufferingTime : number , completionPercent : number , corruptedFrames : number , decodedFrames : number , drmTimeSeconds : number , droppedFrames : number , estimatedBandwidth : number , gapsJumped : number , height : number , licenseTime : number , liveLatency : number , loadLatency : number , manifestTimeSeconds : number , maxSegmentDuration : number , pauseTime : number , playTime : number , stallsDetected : number , stateHistory : shaka.extern.StateChange [] , streamBandwidth : number , switchHistory : shaka.extern.TrackChoice [] , width : number } ;
4323
4326
  }
4324
4327
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4325
4328
  declare namespace shaka.extern {
4326
- type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , dispatchAllEmsgBoxes : boolean , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , lowLatencyMode : boolean , observeQualityChanges : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4329
+ type StreamingConfiguration = { alwaysStreamText : boolean , autoLowLatencyMode : boolean , bufferBehind : number , bufferingGoal : number , dispatchAllEmsgBoxes : boolean , durationBackoff : number , failureCallback : (a : shaka.util.Error ) => any , forceHTTPS : boolean , forceTransmuxTS : boolean , gapDetectionThreshold : number , ignoreTextStreamFailures : boolean , inaccurateManifestTolerance : number , lowLatencyMode : boolean , maxDisabledTime : number , observeQualityChanges : boolean , preferNativeHls : boolean , rebufferingGoal : number , retryParameters : shaka.extern.RetryParameters , safeSeekOffset : number , stallEnabled : boolean , stallSkip : number , stallThreshold : number , startAtSegmentBoundary : boolean , updateIntervalSeconds : number , useNativeHlsOnSafari : boolean } ;
4327
4330
  }
4328
4331
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4329
4332
  declare namespace shaka.extern {
@@ -4502,6 +4505,10 @@ declare namespace shaka.extern {
4502
4505
  * and line through. Empty array means no decoration.
4503
4506
  */
4504
4507
  textDecoration : shaka.text.Cue.textDecoration [] ;
4508
+ /**
4509
+ * Text shadow color as a CSS text-shadow value.
4510
+ */
4511
+ textShadow : string ;
4505
4512
  /**
4506
4513
  * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
4507
4514
  */
@@ -4796,7 +4803,7 @@ nameSpan : HTMLElement ;
4796
4803
  }
4797
4804
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4798
4805
  declare namespace shaka.extern {
4799
- type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , contextMenuElements : string [] , controlPanelElements : string [] , customContextMenu : boolean , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , enableTooltips : boolean , fadeDelay : number , fastForwardRates : number [] , forceLandscapeOnFullscreen : boolean , overflowMenuButtons : string [] , playbackRates : number [] , rewindRates : number [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , singleClickForPlayAndPause : boolean , statisticsList : string [] , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4806
+ type UIConfiguration = { addBigPlayButton : boolean , addSeekBar : boolean , castAndroidReceiverCompatible : boolean , castReceiverAppId : string , clearBufferOnQualityChange : boolean , contextMenuElements : string [] , controlPanelElements : string [] , customContextMenu : boolean , doubleClickForFullscreen : boolean , enableFullscreenOnRotation : boolean , enableKeyboardPlaybackControls : boolean , enableTooltips : boolean , fadeDelay : number , fastForwardRates : number [] , forceLandscapeOnFullscreen : boolean , keyboardSeekDistance : number , overflowMenuButtons : string [] , playbackRates : number [] , rewindRates : number [] , seekBarColors : shaka.extern.UISeekBarColors , showUnbufferedStart : boolean , singleClickForPlayAndPause : boolean , statisticsList : string [] , trackLabelFormat : shaka.ui.Overlay.TrackLabelFormat , volumeBarColors : shaka.extern.UIVolumeBarColors } ;
4800
4807
  }
4801
4808
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4802
4809
  declare namespace shaka.extern {
@@ -198,6 +198,7 @@ shaka.util.Error.Code = {
198
198
  'MALFORMED_TEST_URI': 1008,
199
199
  'UNEXPECTED_TEST_REQUEST': 1009,
200
200
  'ATTEMPTS_EXHAUSTED': 1010,
201
+ 'SEGMENT_MISSING': 1011,
201
202
  'INVALID_TEXT_HEADER': 2000,
202
203
  'INVALID_TEXT_CUE': 2001,
203
204
  'UNABLE_TO_DETECT_ENCODING': 2003,
@@ -211,6 +212,7 @@ shaka.util.Error.Code = {
211
212
  'CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS': 2012,
212
213
  'TEXT_ONLY_WEBVTT_SRC_EQUALS': 2013,
213
214
  'MISSING_TEXT_PLUGIN': 2014,
215
+ 'CHAPTERS_TRACK_FAILED': 2015,
214
216
  'BUFFER_READ_OUT_OF_BOUNDS': 3000,
215
217
  'JS_INTEGER_OVERFLOW': 3001,
216
218
  'EBML_OVERFLOW': 3002,
@@ -650,6 +652,10 @@ shaka.text.Cue.prototype.backgroundImage;
650
652
  * @override
651
653
  */
652
654
  shaka.text.Cue.prototype.border;
655
+ /**
656
+ * @override
657
+ */
658
+ shaka.text.Cue.prototype.textShadow;
653
659
  /**
654
660
  * @override
655
661
  */
@@ -3300,8 +3306,10 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
3300
3306
  * @param {string} receiverAppId The ID of the cast receiver application.
3301
3307
  * If blank, casting will not be available, but the proxy will still
3302
3308
  * function otherwise.
3309
+ * @param {boolean} androidReceiverCompatible Indicates if the app is
3310
+ * compatible with an Android Receiver.
3303
3311
  */
3304
- constructor(video, player, receiverAppId) {}
3312
+ constructor(video, player, receiverAppId, androidReceiverCompatible) {}
3305
3313
  /**
3306
3314
  * Destroys the proxy and the underlying local Player.
3307
3315
  * @param {boolean=} forceDisconnect If true, force the receiver app to shut
@@ -3356,8 +3364,9 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
3356
3364
  forceDisconnect() {}
3357
3365
  /**
3358
3366
  * @param {string} newAppId
3367
+ * @param {boolean=} newCastAndroidReceiver
3359
3368
  */
3360
- changeReceiverId(newAppId) {}
3369
+ changeReceiverId(newAppId, newCastAndroidReceiver) {}
3361
3370
  };
3362
3371
  /**
3363
3372
  * A receiver to communicate between the Chromecast-hosted player and the