shaka-player 4.0.2 → 4.1.1

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 (86) hide show
  1. package/AUTHORS +1 -0
  2. package/CHANGELOG.md +36 -16
  3. package/CONTRIBUTORS +2 -0
  4. package/build/test.py +1 -1
  5. package/demo/common/assets.js +1 -1
  6. package/demo/common/message_ids.js +1 -0
  7. package/demo/config.js +3 -1
  8. package/demo/locales/en.json +1 -0
  9. package/demo/locales/source.json +4 -0
  10. package/demo/main.js +3 -3
  11. package/dist/demo.compiled.debug.js +7 -7
  12. package/dist/demo.compiled.debug.map +2 -2
  13. package/dist/demo.compiled.js +7 -7
  14. package/dist/demo.compiled.map +2 -2
  15. package/dist/deps.js +2 -2
  16. package/dist/locales.js +30 -30
  17. package/dist/receiver.compiled.debug.js +3 -3
  18. package/dist/receiver.compiled.debug.map +2 -2
  19. package/dist/receiver.compiled.js +3 -3
  20. package/dist/receiver.compiled.map +2 -2
  21. package/dist/shaka-player.compiled.d.ts +14 -8
  22. package/dist/shaka-player.compiled.debug.d.ts +14 -8
  23. package/dist/shaka-player.compiled.debug.externs.js +13 -4
  24. package/dist/shaka-player.compiled.debug.js +296 -282
  25. package/dist/shaka-player.compiled.debug.map +4 -4
  26. package/dist/shaka-player.compiled.externs.js +13 -4
  27. package/dist/shaka-player.compiled.js +781 -773
  28. package/dist/shaka-player.compiled.map +4 -4
  29. package/dist/shaka-player.ui.d.ts +15 -9
  30. package/dist/shaka-player.ui.debug.d.ts +15 -9
  31. package/dist/shaka-player.ui.debug.externs.js +13 -4
  32. package/dist/shaka-player.ui.debug.js +345 -326
  33. package/dist/shaka-player.ui.debug.map +4 -4
  34. package/dist/shaka-player.ui.externs.js +13 -4
  35. package/dist/shaka-player.ui.js +955 -949
  36. package/dist/shaka-player.ui.map +4 -4
  37. package/docs/design/chromecast.md +3 -1
  38. package/docs/tutorials/drm-config.md +16 -0
  39. package/docs/tutorials/ui.md +26 -0
  40. package/externs/chromecast.js +9 -2
  41. package/externs/shaka/manifest.js +7 -0
  42. package/externs/shaka/player.js +25 -4
  43. package/externs/shaka/text.js +7 -0
  44. package/lib/cast/cast_proxy.js +19 -8
  45. package/lib/cast/cast_receiver.js +3 -3
  46. package/lib/cast/cast_sender.js +12 -2
  47. package/lib/hls/hls_parser.js +189 -69
  48. package/lib/media/drm_engine.js +17 -8
  49. package/lib/media/gap_jumping_controller.js +23 -1
  50. package/lib/media/playhead.js +47 -4
  51. package/lib/media/segment_index.js +26 -1
  52. package/lib/media/segment_reference.js +10 -3
  53. package/lib/media/stall_detector.js +19 -2
  54. package/lib/media/streaming_engine.js +9 -2
  55. package/lib/offline/manifest_converter.js +1 -0
  56. package/lib/player.js +175 -69
  57. package/lib/text/cue.js +6 -0
  58. package/lib/text/ui_text_displayer.js +1 -0
  59. package/lib/text/vtt_text_parser.js +4 -0
  60. package/lib/util/error.js +6 -0
  61. package/lib/util/fake_event.js +39 -0
  62. package/lib/util/player_configuration.js +2 -0
  63. package/lib/util/stats.js +28 -1
  64. package/lib/util/stream_utils.js +8 -0
  65. package/package.json +2 -2
  66. package/test/cast/cast_proxy_unit.js +3 -1
  67. package/test/cast/cast_sender_unit.js +21 -6
  68. package/test/demo/demo_unit.js +2 -1
  69. package/test/hls/hls_parser_unit.js +102 -8
  70. package/test/media/adaptation_set_unit.js +1 -0
  71. package/test/media/playhead_unit.js +114 -25
  72. package/test/media/stall_detector_unit.js +20 -2
  73. package/test/media/streaming_engine_integration.js +2 -1
  74. package/test/media/streaming_engine_unit.js +1 -0
  75. package/test/player_integration.js +3 -0
  76. package/test/player_unit.js +142 -1
  77. package/test/test/util/manifest_generator.js +2 -0
  78. package/test/test/util/simple_fakes.js +14 -0
  79. package/test/test/util/streaming_engine_util.js +1 -0
  80. package/test/text/vtt_text_parser_unit.js +4 -0
  81. package/test/ui/ui_unit.js +18 -5
  82. package/test/util/stream_utils_unit.js +108 -0
  83. package/ui/controls.js +12 -8
  84. package/ui/externs/ui.js +10 -1
  85. package/ui/statistics_button.js +10 -0
  86. package/ui/ui.js +12 -1
@@ -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 ;
@@ -2734,6 +2735,7 @@ declare namespace shaka.util.Error {
2734
2735
  REQUEST_FILTER_ERROR = 1006.0 ,
2735
2736
  RESPONSE_FILTER_ERROR = 1007.0 ,
2736
2737
  RESTRICTIONS_CANNOT_BE_MET = 4012.0 ,
2738
+ SEGMENT_MISSING = 1011.0 ,
2737
2739
  SERVER_CERTIFICATE_REQUEST_FAILED = 6017.0 ,
2738
2740
  SERVER_CERTIFICATE_REQUIRED = 6015.0 ,
2739
2741
  SS_AD_MANAGER_NOT_INITIALIZED = 10003.0 ,
@@ -3344,7 +3346,7 @@ declare namespace chrome.cast {
3344
3346
  declare namespace chrome.cast {
3345
3347
  class SessionRequest {
3346
3348
  private noStructuralTyping_chrome_cast_SessionRequest : any;
3347
- constructor (appId : string ) ;
3349
+ constructor (appId : string , capabilities : ( object | null ) [] | null , timeout : number | null , androidReceiverCompatible : boolean , credentialsData : object | null ) ;
3348
3350
  }
3349
3351
  }
3350
3352
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/chromecast.js
@@ -3900,7 +3902,7 @@ declare namespace shaka.extern {
3900
3902
  }
3901
3903
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3902
3904
  declare namespace shaka.extern {
3903
- 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 } ;
3904
3906
  }
3905
3907
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest_parser.js
3906
3908
  declare namespace shaka.extern {
@@ -4260,7 +4262,7 @@ declare namespace shaka.extern {
4260
4262
  }
4261
4263
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4262
4264
  declare namespace shaka.extern {
4263
- type Chapter = { endTime : number , startTime : number , title : string } ;
4265
+ type Chapter = { endTime : number , id : string , startTime : number , title : string } ;
4264
4266
  }
4265
4267
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4266
4268
  declare namespace shaka.extern {
@@ -4272,7 +4274,7 @@ declare namespace shaka.extern {
4272
4274
  }
4273
4275
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4274
4276
  declare namespace shaka.extern {
4275
- 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 , 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 } ;
4276
4278
  }
4277
4279
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4278
4280
  declare namespace shaka.extern {
@@ -4320,11 +4322,11 @@ declare namespace shaka.extern {
4320
4322
  }
4321
4323
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4322
4324
  declare namespace shaka.extern {
4323
- 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 } ;
4324
4326
  }
4325
4327
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4326
4328
  declare namespace shaka.extern {
4327
- 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 } ;
4328
4330
  }
4329
4331
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4330
4332
  declare namespace shaka.extern {
@@ -4503,6 +4505,10 @@ declare namespace shaka.extern {
4503
4505
  * and line through. Empty array means no decoration.
4504
4506
  */
4505
4507
  textDecoration : shaka.text.Cue.textDecoration [] ;
4508
+ /**
4509
+ * Text shadow color as a CSS text-shadow value.
4510
+ */
4511
+ textShadow : string ;
4506
4512
  /**
4507
4513
  * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
4508
4514
  */
@@ -4797,7 +4803,7 @@ nameSpan : HTMLElement ;
4797
4803
  }
4798
4804
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4799
4805
  declare namespace shaka.extern {
4800
- 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 } ;
4801
4807
  }
4802
4808
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4803
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 ;
@@ -2734,6 +2735,7 @@ declare namespace shaka.util.Error {
2734
2735
  REQUEST_FILTER_ERROR = 1006.0 ,
2735
2736
  RESPONSE_FILTER_ERROR = 1007.0 ,
2736
2737
  RESTRICTIONS_CANNOT_BE_MET = 4012.0 ,
2738
+ SEGMENT_MISSING = 1011.0 ,
2737
2739
  SERVER_CERTIFICATE_REQUEST_FAILED = 6017.0 ,
2738
2740
  SERVER_CERTIFICATE_REQUIRED = 6015.0 ,
2739
2741
  SS_AD_MANAGER_NOT_INITIALIZED = 10003.0 ,
@@ -3344,7 +3346,7 @@ declare namespace chrome.cast {
3344
3346
  declare namespace chrome.cast {
3345
3347
  class SessionRequest {
3346
3348
  private noStructuralTyping_chrome_cast_SessionRequest : any;
3347
- constructor (appId : string ) ;
3349
+ constructor (appId : string , capabilities : ( object | null ) [] | null , timeout : number | null , androidReceiverCompatible : boolean , credentialsData : object | null ) ;
3348
3350
  }
3349
3351
  }
3350
3352
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/chromecast.js
@@ -3900,7 +3902,7 @@ declare namespace shaka.extern {
3900
3902
  }
3901
3903
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest.js
3902
3904
  declare namespace shaka.extern {
3903
- 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 } ;
3904
3906
  }
3905
3907
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/manifest_parser.js
3906
3908
  declare namespace shaka.extern {
@@ -4260,7 +4262,7 @@ declare namespace shaka.extern {
4260
4262
  }
4261
4263
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4262
4264
  declare namespace shaka.extern {
4263
- type Chapter = { endTime : number , startTime : number , title : string } ;
4265
+ type Chapter = { endTime : number , id : string , startTime : number , title : string } ;
4264
4266
  }
4265
4267
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4266
4268
  declare namespace shaka.extern {
@@ -4272,7 +4274,7 @@ declare namespace shaka.extern {
4272
4274
  }
4273
4275
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4274
4276
  declare namespace shaka.extern {
4275
- 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 , 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 } ;
4276
4278
  }
4277
4279
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4278
4280
  declare namespace shaka.extern {
@@ -4320,11 +4322,11 @@ declare namespace shaka.extern {
4320
4322
  }
4321
4323
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4322
4324
  declare namespace shaka.extern {
4323
- 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 } ;
4324
4326
  }
4325
4327
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4326
4328
  declare namespace shaka.extern {
4327
- 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 } ;
4328
4330
  }
4329
4331
  // Generated from /home/runner/work/shaka-player/shaka-player/externs/shaka/player.js
4330
4332
  declare namespace shaka.extern {
@@ -4503,6 +4505,10 @@ declare namespace shaka.extern {
4503
4505
  * and line through. Empty array means no decoration.
4504
4506
  */
4505
4507
  textDecoration : shaka.text.Cue.textDecoration [] ;
4508
+ /**
4509
+ * Text shadow color as a CSS text-shadow value.
4510
+ */
4511
+ textShadow : string ;
4506
4512
  /**
4507
4513
  * Text stroke color as a CSS color, e.g. "#FFFFFF" or "white".
4508
4514
  */
@@ -4797,7 +4803,7 @@ nameSpan : HTMLElement ;
4797
4803
  }
4798
4804
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4799
4805
  declare namespace shaka.extern {
4800
- 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 } ;
4801
4807
  }
4802
4808
  // Generated from /home/runner/work/shaka-player/shaka-player/ui/externs/ui.js
4803
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,
@@ -651,6 +652,10 @@ shaka.text.Cue.prototype.backgroundImage;
651
652
  * @override
652
653
  */
653
654
  shaka.text.Cue.prototype.border;
655
+ /**
656
+ * @override
657
+ */
658
+ shaka.text.Cue.prototype.textShadow;
654
659
  /**
655
660
  * @override
656
661
  */
@@ -1798,8 +1803,9 @@ shaka.media.SegmentReference = class {
1798
1803
  * If not provided, the duration should be automatically calculated based on
1799
1804
  * the duration of the reference.
1800
1805
  * @param {?number=} syncTime
1801
- * A time value, expressed in the same scale as the start and end time, which
1802
- * is used to synchronize between streams.
1806
+ * A time value, expressed in seconds since 1970, which is used to
1807
+ * synchronize between streams. Both produced and consumed by the HLS
1808
+ * parser. Other components should not need this value.
1803
1809
  * @param {shaka.media.SegmentReference.Status=} status
1804
1810
  * The segment status is used to indicate that a segment does not exist or is
1805
1811
  * not available.
@@ -3301,8 +3307,10 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
3301
3307
  * @param {string} receiverAppId The ID of the cast receiver application.
3302
3308
  * If blank, casting will not be available, but the proxy will still
3303
3309
  * function otherwise.
3310
+ * @param {boolean} androidReceiverCompatible Indicates if the app is
3311
+ * compatible with an Android Receiver.
3304
3312
  */
3305
- constructor(video, player, receiverAppId) {}
3313
+ constructor(video, player, receiverAppId, androidReceiverCompatible) {}
3306
3314
  /**
3307
3315
  * Destroys the proxy and the underlying local Player.
3308
3316
  * @param {boolean=} forceDisconnect If true, force the receiver app to shut
@@ -3357,8 +3365,9 @@ shaka.cast.CastProxy = class extends shaka.util.FakeEventTarget {
3357
3365
  forceDisconnect() {}
3358
3366
  /**
3359
3367
  * @param {string} newAppId
3368
+ * @param {boolean=} newCastAndroidReceiver
3360
3369
  */
3361
- changeReceiverId(newAppId) {}
3370
+ changeReceiverId(newAppId, newCastAndroidReceiver) {}
3362
3371
  };
3363
3372
  /**
3364
3373
  * A receiver to communicate between the Chromecast-hosted player and the