shaka-player 3.1.1 → 3.1.5

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 (151) hide show
  1. package/AUTHORS +7 -2
  2. package/CHANGELOG.md +199 -0
  3. package/CONTRIBUTORS +9 -3
  4. package/build/generateExterns.js +1 -1
  5. package/build/misspellings.txt +1 -0
  6. package/build/shakaBuildHelpers.py +6 -5
  7. package/build/subprocessWindowsPatch.py +103 -0
  8. package/demo/common/assets.js +1 -1
  9. package/dist/controls.css +2 -2
  10. package/dist/controls.css.map +1 -1
  11. package/dist/demo.compiled.debug.js +1 -1
  12. package/dist/demo.compiled.js +1 -1
  13. package/dist/deps.js +7 -7
  14. package/dist/locales.js +35 -33
  15. package/dist/receiver.compiled.debug.js +1 -1
  16. package/dist/receiver.compiled.js +1 -1
  17. package/dist/shaka-player.compiled.d.ts +171 -3
  18. package/dist/shaka-player.compiled.debug.d.ts +171 -3
  19. package/dist/shaka-player.compiled.debug.externs.js +179 -1
  20. package/dist/shaka-player.compiled.debug.js +365 -344
  21. package/dist/shaka-player.compiled.debug.map +3 -3
  22. package/dist/shaka-player.compiled.externs.js +179 -1
  23. package/dist/shaka-player.compiled.js +806 -798
  24. package/dist/shaka-player.compiled.map +3 -3
  25. package/dist/shaka-player.ui.d.ts +171 -3
  26. package/dist/shaka-player.ui.debug.d.ts +171 -3
  27. package/dist/shaka-player.ui.debug.externs.js +181 -3
  28. package/dist/shaka-player.ui.debug.js +458 -435
  29. package/dist/shaka-player.ui.debug.map +4 -4
  30. package/dist/shaka-player.ui.externs.js +181 -3
  31. package/dist/shaka-player.ui.js +927 -918
  32. package/dist/shaka-player.ui.map +4 -4
  33. package/docs/tutorials/fairplay.md +1 -1
  34. package/docs/tutorials/faq.md +14 -0
  35. package/docs/tutorials/index.json +2 -2
  36. package/docs/tutorials/upgrade-v3.md +38 -0
  37. package/docs/tutorials/upgrade.md +3 -3
  38. package/externs/ima.js +4 -0
  39. package/externs/shaka/ads.js +2 -0
  40. package/externs/shaka/player.js +6 -0
  41. package/externs/shaka/text.js +10 -0
  42. package/karma.conf.js +1 -0
  43. package/lib/ads/ad_manager.js +29 -11
  44. package/lib/ads/client_side_ad_manager.js +76 -86
  45. package/lib/ads/server_side_ad_manager.js +26 -11
  46. package/lib/cast/cast_proxy.js +3 -2
  47. package/lib/cast/cast_receiver.js +2 -1
  48. package/lib/cast/cast_sender.js +2 -2
  49. package/lib/cea/sei_processor.js +24 -17
  50. package/lib/dash/dash_parser.js +100 -5
  51. package/lib/dash/segment_list.js +1 -1
  52. package/lib/dash/segment_template.js +7 -4
  53. package/lib/hls/hls_parser.js +44 -17
  54. package/lib/media/closed_caption_parser.js +3 -1
  55. package/lib/media/content_workarounds.js +12 -0
  56. package/lib/media/drm_engine.js +20 -1
  57. package/lib/media/gap_jumping_controller.js +8 -4
  58. package/lib/media/media_source_engine.js +1 -2
  59. package/lib/media/playhead.js +1 -1
  60. package/lib/media/presentation_timeline.js +3 -1
  61. package/lib/media/segment_reference.js +8 -0
  62. package/lib/media/streaming_engine.js +28 -19
  63. package/lib/net/networking_engine.js +2 -1
  64. package/lib/player.js +108 -54
  65. package/lib/polyfill/encryption_scheme.js +2 -0
  66. package/lib/polyfill/fullscreen.js +2 -0
  67. package/lib/polyfill/mathround.js +2 -0
  68. package/lib/polyfill/media_capabilities.js +76 -22
  69. package/lib/polyfill/mediasource.js +8 -0
  70. package/lib/polyfill/orientation.js +3 -1
  71. package/lib/polyfill/patchedmediakeys_apple.js +6 -4
  72. package/lib/polyfill/patchedmediakeys_ms.js +6 -4
  73. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  74. package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
  75. package/lib/polyfill/pip_webkit.js +2 -0
  76. package/lib/polyfill/storage_estimate.js +2 -0
  77. package/lib/polyfill/video_play_promise.js +2 -0
  78. package/lib/polyfill/videoplaybackquality.js +2 -0
  79. package/lib/polyfill/vttcue.js +2 -0
  80. package/lib/text/cue.js +17 -0
  81. package/lib/text/mp4_ttml_parser.js +3 -0
  82. package/lib/text/text_engine.js +14 -2
  83. package/lib/text/ttml_text_parser.js +135 -87
  84. package/lib/text/ui_text_displayer.js +233 -83
  85. package/lib/text/vtt_text_parser.js +4 -2
  86. package/lib/util/fake_event.js +53 -7
  87. package/lib/util/mp4_box_parsers.js +1 -1
  88. package/lib/util/periods.js +111 -35
  89. package/lib/util/platform.js +13 -1
  90. package/lib/util/stream_utils.js +79 -10
  91. package/lib/util/xml_utils.js +19 -0
  92. package/package.json +2 -2
  93. package/test/cast/cast_proxy_unit.js +12 -6
  94. package/test/cast/cast_receiver_integration.js +1 -1
  95. package/test/cast/cast_utils_unit.js +1 -1
  96. package/test/cea/mp4_cea_parser_unit.js +26 -0
  97. package/test/dash/dash_parser_live_unit.js +1 -0
  98. package/test/dash/dash_parser_manifest_unit.js +220 -2
  99. package/test/dash/dash_parser_segment_template_unit.js +3 -3
  100. package/test/hls/hls_parser_unit.js +5 -1
  101. package/test/media/closed_caption_parser_unit.js +20 -0
  102. package/test/media/drm_engine_unit.js +56 -0
  103. package/test/media/playhead_unit.js +27 -1
  104. package/test/media/presentation_timeline_unit.js +19 -0
  105. package/test/media/streaming_engine_integration.js +2 -1
  106. package/test/media/streaming_engine_unit.js +148 -3
  107. package/test/player_integration.js +38 -0
  108. package/test/player_unit.js +101 -0
  109. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  110. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  111. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  112. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  113. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  114. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  115. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  116. package/test/test/assets/3675/dash_0.mpd +30 -0
  117. package/test/test/assets/3675/dash_1.mpd +30 -0
  118. package/test/test/assets/3675/dash_2.mpd +30 -0
  119. package/test/test/assets/3675/dash_3.mpd +30 -0
  120. package/test/test/assets/3675/dash_4.mpd +30 -0
  121. package/test/test/assets/3675/dash_5.mpd +26 -0
  122. package/test/test/assets/3675/init-stream0.m4s +0 -0
  123. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  124. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  125. package/test/test/util/fake_ad_manager.js +4 -1
  126. package/test/test/util/simple_fakes.js +5 -3
  127. package/test/test/util/ttml_utils.js +81 -0
  128. package/test/text/mp4_ttml_parser_unit.js +11 -18
  129. package/test/text/ttml_text_parser_unit.js +542 -220
  130. package/test/text/ui_text_displayer_unit.js +95 -18
  131. package/test/text/vtt_text_parser_unit.js +17 -1
  132. package/test/ui/localization_unit.js +15 -14
  133. package/test/ui/text_displayer_layout_unit.js +52 -1
  134. package/test/util/mp4_box_parsers_unit.js +28 -0
  135. package/test/util/periods_unit.js +190 -2
  136. package/test/util/stream_utils_unit.js +59 -2
  137. package/ui/airplay_button.js +5 -0
  138. package/ui/big_play_button.js +10 -0
  139. package/ui/cast_button.js +2 -3
  140. package/ui/controls.js +8 -6
  141. package/ui/less/buttons.less +0 -4
  142. package/ui/less/containers.less +10 -5
  143. package/ui/locales/en.json +1 -0
  144. package/ui/locales/ru.json +6 -6
  145. package/ui/locales/source.json +4 -0
  146. package/ui/localization.js +28 -51
  147. package/ui/pip_button.js +2 -3
  148. package/ui/play_button.js +10 -10
  149. package/ui/small_play_button.js +12 -0
  150. package/ui/text_selection.js +1 -0
  151. package/docs/tutorials/upgrade-v2-4.md +0 -481
package/dist/deps.js CHANGED
@@ -17,12 +17,12 @@ goog.addDependency('../../../../dist/locales.js', ['shaka.ui.Locales'], ['shaka.
17
17
  goog.addDependency('../../../../lib/abr/ewma.js', ['shaka.abr.Ewma'], ['goog.asserts'], {});
18
18
  goog.addDependency('../../../../lib/abr/ewma_bandwidth_estimator.js', ['shaka.abr.EwmaBandwidthEstimator'], ['shaka.abr.Ewma'], {});
19
19
  goog.addDependency('../../../../lib/abr/simple_abr_manager.js', ['shaka.abr.SimpleAbrManager'], ['goog.asserts', 'shaka.abr.EwmaBandwidthEstimator', 'shaka.log', 'shaka.util.Iterables', 'shaka.util.StreamUtils'], {});
20
- goog.addDependency('../../../../lib/ads/ad_manager.js', ['shaka.ads.AdManager', 'shaka.ads.CuePoint'], ['shaka.Player', 'shaka.ads.AdsStats', 'shaka.ads.ClientSideAdManager', 'shaka.ads.ServerSideAdManager', 'shaka.log', 'shaka.util.Error', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget'], {});
20
+ goog.addDependency('../../../../lib/ads/ad_manager.js', ['shaka.ads.AdManager', 'shaka.ads.CuePoint'], ['shaka.Player', 'shaka.ads.AdsStats', 'shaka.ads.ClientSideAdManager', 'shaka.ads.ServerSideAdManager', 'shaka.log', 'shaka.util.Error', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IReleasable'], {});
21
21
  goog.addDependency('../../../../lib/ads/ads_stats.js', ['shaka.ads.AdsStats'], [], {});
22
22
  goog.addDependency('../../../../lib/ads/client_side_ad.js', ['shaka.ads.ClientSideAd'], ['shaka.util.EventManager'], {});
23
- goog.addDependency('../../../../lib/ads/client_side_ad_manager.js', ['shaka.ads.ClientSideAdManager'], ['goog.asserts', 'shaka.ads.ClientSideAd'], {});
23
+ goog.addDependency('../../../../lib/ads/client_side_ad_manager.js', ['shaka.ads.ClientSideAdManager'], ['goog.asserts', 'shaka.ads.ClientSideAd', 'shaka.util.IReleasable'], {});
24
24
  goog.addDependency('../../../../lib/ads/server_side_ad.js', ['shaka.ads.ServerSideAd'], [], {});
25
- goog.addDependency('../../../../lib/ads/server_side_ad_manager.js', ['shaka.ads.ServerSideAdManager'], ['goog.asserts', 'shaka.ads.ServerSideAd', 'shaka.log'], {});
25
+ goog.addDependency('../../../../lib/ads/server_side_ad_manager.js', ['shaka.ads.ServerSideAdManager'], ['goog.asserts', 'shaka.ads.ServerSideAd', 'shaka.log', 'shaka.util.IReleasable'], {});
26
26
  goog.addDependency('../../../../lib/cast/cast_proxy.js', ['shaka.cast.CastProxy'], ['goog.asserts', 'shaka.Player', 'shaka.cast.CastSender', 'shaka.cast.CastUtils', 'shaka.log', 'shaka.util.Error', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IDestroyable'], {});
27
27
  goog.addDependency('../../../../lib/cast/cast_receiver.js', ['shaka.cast.CastReceiver'], ['goog.asserts', 'shaka.Player', 'shaka.cast.CastUtils', 'shaka.log', 'shaka.util.Error', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IDestroyable', 'shaka.util.Platform', 'shaka.util.Timer'], {});
28
28
  goog.addDependency('../../../../lib/cast/cast_sender.js', ['shaka.cast.CastSender'], ['goog.asserts', 'shaka.cast.CastUtils', 'shaka.log', 'shaka.util.Error', 'shaka.util.FakeEvent', 'shaka.util.IDestroyable', 'shaka.util.PublicPromise', 'shaka.util.Timer'], {});
@@ -148,7 +148,7 @@ goog.addDependency('../../../../lib/util/ebml_parser.js', ['shaka.util.EbmlEleme
148
148
  goog.addDependency('../../../../lib/util/error.js', ['shaka.util.Error'], [], {});
149
149
  goog.addDependency('../../../../lib/util/event_manager.js', ['shaka.util.EventManager'], ['goog.asserts', 'shaka.util.IReleasable', 'shaka.util.MultiMap'], {});
150
150
  goog.addDependency('../../../../lib/util/fairplay_utils.js', ['shaka.util.FairPlayUtils'], ['goog.Uri', 'goog.asserts', 'shaka.util.BufferUtils', 'shaka.util.Error', 'shaka.util.StringUtils'], {});
151
- goog.addDependency('../../../../lib/util/fake_event.js', ['shaka.util.FakeEvent'], [], {});
151
+ goog.addDependency('../../../../lib/util/fake_event.js', ['shaka.util.FakeEvent'], ['goog.asserts'], {});
152
152
  goog.addDependency('../../../../lib/util/fake_event_target.js', ['shaka.util.FakeEventTarget'], ['goog.asserts', 'shaka.log', 'shaka.util.FakeEvent', 'shaka.util.MultiMap'], {});
153
153
  goog.addDependency('../../../../lib/util/functional.js', ['shaka.util.Functional'], ['shaka.Deprecate'], {});
154
154
  goog.addDependency('../../../../lib/util/i_destroyable.js', ['shaka.util.IDestroyable'], [], {});
@@ -187,7 +187,7 @@ goog.addDependency('../../../../ui/ad_counter.js', ['shaka.ui.AdCounter'], ['goo
187
187
  goog.addDependency('../../../../ui/ad_position.js', ['shaka.ui.AdPosition'], ['shaka.ads.AdManager', 'shaka.ui.Element', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.Utils', 'shaka.util.Dom'], {});
188
188
  goog.addDependency('../../../../ui/airplay_button.js', ['shaka.ui.AirPlayButton'], ['goog.asserts', 'shaka.Player', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.Utils', 'shaka.util.Dom'], {});
189
189
  goog.addDependency('../../../../ui/audio_language_selection.js', ['shaka.ui.AudioLanguageSelection'], ['shaka.ui.Constants', 'shaka.ui.Enums', 'shaka.ui.LanguageUtils', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.SettingsMenu', 'shaka.ui.Utils', 'shaka.util.FakeEvent'], {});
190
- goog.addDependency('../../../../ui/big_play_button.js', ['shaka.ui.BigPlayButton'], ['shaka.ui.PlayButton'], {});
190
+ goog.addDependency('../../../../ui/big_play_button.js', ['shaka.ui.BigPlayButton'], ['shaka.ui.Locales', 'shaka.ui.PlayButton'], {});
191
191
  goog.addDependency('../../../../ui/cast_button.js', ['shaka.ui.CastButton'], ['shaka.cast.CastProxy', 'shaka.ui.Constants', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.Error', 'shaka.util.FakeEvent'], {});
192
192
  goog.addDependency('../../../../ui/constants.js', ['shaka.ui.Constants'], [], {});
193
193
  goog.addDependency('../../../../ui/controls.js', ['shaka.ui.Controls', 'shaka.ui.ControlsPanel'], ['goog.asserts', 'shaka.Deprecate', 'shaka.ads.AdManager', 'shaka.cast.CastProxy', 'shaka.log', 'shaka.ui.AdCounter', 'shaka.ui.AdPosition', 'shaka.ui.BigPlayButton', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.SeekBar', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.EventManager', 'shaka.util.FakeEvent', 'shaka.util.FakeEventTarget', 'shaka.util.IDestroyable', 'shaka.util.Timer'], {});
@@ -201,7 +201,7 @@ goog.addDependency('../../../../ui/loop_button.js', ['shaka.ui.LoopButton'], ['s
201
201
  goog.addDependency('../../../../ui/mute_button.js', ['shaka.ui.MuteButton'], ['shaka.ads.AdManager', 'shaka.ui.Constants', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.util.Dom'], {});
202
202
  goog.addDependency('../../../../ui/overflow_menu.js', ['shaka.ui.OverflowMenu'], ['goog.asserts', 'shaka.ads.AdManager', 'shaka.log', 'shaka.ui.Constants', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.Iterables'], {});
203
203
  goog.addDependency('../../../../ui/pip_button.js', ['shaka.ui.PipButton'], ['shaka.ui.Constants', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.FakeEvent'], {});
204
- goog.addDependency('../../../../ui/play_button.js', ['shaka.ui.PlayButton'], ['shaka.ads.AdManager', 'shaka.ui.Constants', 'shaka.ui.Element', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.util.Dom'], {});
204
+ goog.addDependency('../../../../ui/play_button.js', ['shaka.ui.PlayButton'], ['shaka.ads.AdManager', 'shaka.ui.Element', 'shaka.ui.Localization', 'shaka.util.Dom'], {});
205
205
  goog.addDependency('../../../../ui/playback_rate_selection.js', ['shaka.ui.PlaybackRateSelection'], ['shaka.ui.Constants', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.SettingsMenu', 'shaka.ui.Utils', 'shaka.util.Dom'], {});
206
206
  goog.addDependency('../../../../ui/presentation_time.js', ['shaka.ui.PresentationTimeTracker'], ['shaka.ui.Constants', 'shaka.ui.Controls', 'shaka.ui.Element', 'shaka.ui.Locales', 'shaka.ui.Utils', 'shaka.util.Dom'], {});
207
207
  goog.addDependency('../../../../ui/range_element.js', ['shaka.ui.RangeElement'], ['shaka.ui.Element', 'shaka.util.Dom', 'shaka.util.Timer'], {});
@@ -210,7 +210,7 @@ goog.addDependency('../../../../ui/rewind_button.js', ['shaka.ui.RewindButton'],
210
210
  goog.addDependency('../../../../ui/seek_bar.js', ['shaka.ui.SeekBar'], ['shaka.ads.AdManager', 'shaka.ui.Constants', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.RangeElement', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.Timer'], {});
211
211
  goog.addDependency('../../../../ui/settings_menu.js', ['shaka.ui.SettingsMenu'], ['shaka.ui.Element', 'shaka.ui.Enums', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.FakeEvent'], {});
212
212
  goog.addDependency('../../../../ui/skip_ad_button.js', ['shaka.ui.SkipAdButton'], ['goog.asserts', 'shaka.ads.AdManager', 'shaka.ui.Element', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.Timer'], {});
213
- goog.addDependency('../../../../ui/small_play_button.js', ['shaka.ui.SmallPlayButton'], ['shaka.ui.Controls', 'shaka.ui.Enums', 'shaka.ui.PlayButton'], {});
213
+ goog.addDependency('../../../../ui/small_play_button.js', ['shaka.ui.SmallPlayButton'], ['shaka.ui.Controls', 'shaka.ui.Enums', 'shaka.ui.Locales', 'shaka.ui.PlayButton'], {});
214
214
  goog.addDependency('../../../../ui/spacer.js', ['shaka.ui.Spacer'], ['shaka.ui.Controls', 'shaka.ui.Element', 'shaka.util.Dom'], {});
215
215
  goog.addDependency('../../../../ui/text_selection.js', ['shaka.ui.TextSelection'], ['shaka.ui.Constants', 'shaka.ui.Enums', 'shaka.ui.LanguageUtils', 'shaka.ui.Locales', 'shaka.ui.Localization', 'shaka.ui.OverflowMenu', 'shaka.ui.SettingsMenu', 'shaka.ui.Utils', 'shaka.util.Dom', 'shaka.util.FakeEvent'], {});
216
216
  goog.addDependency('../../../../ui/ui.js', ['shaka.ui.Overlay', 'shaka.ui.Overlay.FailReasonCode', 'shaka.ui.Overlay.TrackLabelFormat'], ['goog.asserts', 'shaka.Player', 'shaka.log', 'shaka.polyfill', 'shaka.ui.Controls', 'shaka.util.ConfigUtils', 'shaka.util.Dom', 'shaka.util.FakeEvent', 'shaka.util.IDestroyable', 'shaka.util.Platform'], {});
package/dist/locales.js CHANGED
@@ -128,6 +128,7 @@ shaka.ui.Locales.addTo = function(localization) {
128
128
  ['PICTURE_IN_PICTURE', 'Picture-in-Picture'],
129
129
  ['PLAY', 'Play'],
130
130
  ['PLAYBACK_RATE', 'Playback speed'],
131
+ ['REPLAY', 'Replay'],
131
132
  ['RESOLUTION', 'Resolution'],
132
133
  ['REWIND', 'Rewind'],
133
134
  ['SEEK', 'Seek'],
@@ -522,12 +523,12 @@ shaka.ui.Locales.addTo = function(localization) {
522
523
  ['VOLUME', 'Volume'],
523
524
  ]));
524
525
  localization.insert('ru', new Map([
525
- ['AD_DURATION', 'Продолжительность объявления'],
526
- ['AD_PROGRESS', 'Объявление [AD_ON] из [NUM_ADS]'],
527
- ['AD_TIME', 'Объявление: [AD_TIME]'],
526
+ ['AD_DURATION', 'Продолжительность рекламы'],
527
+ ['AD_PROGRESS', 'Реклама [AD_ON] из [NUM_ADS]'],
528
+ ['AD_TIME', 'Реклама: [AD_TIME]'],
528
529
  ['AUTO_QUALITY', 'Авто'],
529
530
  ['BACK', 'Назад'],
530
- ['CAPTIONS', 'Титры'],
531
+ ['CAPTIONS', 'Субтитры'],
531
532
  ['CAST', 'Транслировать...'],
532
533
  ['ENTER_LOOP_MODE', 'Зациклить текущее видео'],
533
534
  ['ENTER_PICTURE_IN_PICTURE', 'Перейти в режим "Картинка в картинке"'],
@@ -543,8 +544,8 @@ shaka.ui.Locales.addTo = function(localization) {
543
544
  ['MULTIPLE_LANGUAGES', 'Несколько языков'],
544
545
  ['MUTE', 'Отключить звук'],
545
546
  ['NOT_APPLICABLE', 'Неприменимо'],
546
- ['OFF', 'Включить'],
547
- ['ON', 'Отключить'],
547
+ ['OFF', 'Выкл.'],
548
+ ['ON', 'Вкл.'],
548
549
  ['PAUSE', 'Пауза'],
549
550
  ['PICTURE_IN_PICTURE', 'Картинка в картинке'],
550
551
  ['PLAY', 'Воспроизвести'],
@@ -718,42 +719,43 @@ shaka.ui.Locales.addTo = function(localization) {
718
719
  * @const
719
720
  */
720
721
  shaka.ui.Locales.Ids = {
721
- ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
722
- RESOLUTION: 'RESOLUTION',
723
- EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
724
- UNMUTE: 'UNMUTE',
725
- UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
726
- PLAYBACK_RATE: 'PLAYBACK_RATE',
727
- MUTE: 'MUTE',
728
- AD_DURATION: 'AD_DURATION',
729
- PLAY: 'PLAY',
722
+ ON: 'ON',
723
+ FULL_SCREEN: 'FULL_SCREEN',
724
+ LANGUAGE: 'LANGUAGE',
730
725
  SKIP_TO_LIVE: 'SKIP_TO_LIVE',
726
+ AD_DURATION: 'AD_DURATION',
727
+ MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
728
+ PLAYBACK_RATE: 'PLAYBACK_RATE',
731
729
  SEEK: 'SEEK',
732
- UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
733
- FULL_SCREEN: 'FULL_SCREEN',
730
+ LIVE: 'LIVE',
734
731
  PAUSE: 'PAUSE',
735
- ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
732
+ EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
733
+ BACK: 'BACK',
734
+ UNRECOGNIZED_LANGUAGE: 'UNRECOGNIZED_LANGUAGE',
735
+ REWIND: 'REWIND',
736
+ UNMUTE: 'UNMUTE',
737
+ FAST_FORWARD: 'FAST_FORWARD',
736
738
  CAPTIONS: 'CAPTIONS',
737
- CAST: 'CAST',
738
- AUTO_QUALITY: 'AUTO_QUALITY',
739
+ MORE_SETTINGS: 'MORE_SETTINGS',
740
+ UNDETERMINED_LANGUAGE: 'UNDETERMINED_LANGUAGE',
739
741
  AIRPLAY: 'AIRPLAY',
740
- MULTIPLE_LANGUAGES: 'MULTIPLE_LANGUAGES',
741
- REWIND: 'REWIND',
742
+ CAST: 'CAST',
743
+ REPLAY: 'REPLAY',
742
744
  SUBTITLE_FORCED: 'SUBTITLE_FORCED',
743
- ON: 'ON',
744
745
  EXIT_FULL_SCREEN: 'EXIT_FULL_SCREEN',
745
- AD_PROGRESS: 'AD_PROGRESS',
746
- LANGUAGE: 'LANGUAGE',
747
- MORE_SETTINGS: 'MORE_SETTINGS',
746
+ AUTO_QUALITY: 'AUTO_QUALITY',
748
747
  VOLUME: 'VOLUME',
749
- SKIP_AD: 'SKIP_AD',
750
- FAST_FORWARD: 'FAST_FORWARD',
751
- EXIT_PICTURE_IN_PICTURE: 'EXIT_PICTURE_IN_PICTURE',
748
+ MUTE: 'MUTE',
752
749
  LOOP: 'LOOP',
753
- OFF: 'OFF',
754
- NOT_APPLICABLE: 'NOT_APPLICABLE',
755
- LIVE: 'LIVE',
756
750
  AD_TIME: 'AD_TIME',
751
+ RESOLUTION: 'RESOLUTION',
752
+ ENTER_LOOP_MODE: 'ENTER_LOOP_MODE',
753
+ AD_PROGRESS: 'AD_PROGRESS',
754
+ PLAY: 'PLAY',
757
755
  PICTURE_IN_PICTURE: 'PICTURE_IN_PICTURE',
758
- BACK: 'BACK',
756
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
757
+ SKIP_AD: 'SKIP_AD',
758
+ OFF: 'OFF',
759
+ ENTER_PICTURE_IN_PICTURE: 'ENTER_PICTURE_IN_PICTURE',
760
+ EXIT_LOOP_MODE: 'EXIT_LOOP_MODE',
759
761
  };
@@ -157,7 +157,7 @@ shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shaka
157
157
  (new ShakaDemoAssetInfo('"Dig the Uke" by Stefan Kartenberg (audio only, multicodec, Widevine)',"https://storage.googleapis.com/shaka-asset-icons/audio_only.png","https://storage.googleapis.com/shaka-demo-assets/dig-the-uke/dash.mpd",shakaAssets.Source.SHAKA)).addKeySystem(shakaAssets.KeySystem.WIDEVINE).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.AUDIO_ONLY).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE).addLicenseServer("com.widevine.alpha",
158
158
  "https://cwip-shaka-proxy.appspot.com/no_auth"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, TTML)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),
159
159
  (new ShakaDemoAssetInfo("Tears of Steel (HLS, Server Side ads)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos/hls.m3u8",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.HLS).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.OFFLINE).setIMAContentSourceId("2528370").setIMAVideoId("tears-of-steel"),(new ShakaDemoAssetInfo("Tears of Steel (live, DASH, Server Side ads)",
160
- "https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.LIVE).setIMAAssetKey("_lDu24IaSYaYAMEfixipNQ"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
160
+ "https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.LIVE).setIMAAssetKey("PSzZMzAkSXCmlJOWDmRj8Q"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
161
161
  "https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SURROUND).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo, single skippable ad)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd",
162
162
  shakaAssets.Source.SHAKA)).setAdTagUri(shakaAssets.AdTag.SINGLE_SKIPPABLE_AD).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SURROUND).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),(new ShakaDemoAssetInfo("Shaka Player History (multicodec, live, DASH)","https://storage.googleapis.com/shaka-asset-icons/shaka.png","https://storage.googleapis.com/shaka-live-assets/player-source.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.LIVE).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.WEBM),
163
163
  (new ShakaDemoAssetInfo("Shaka Player History (live, HLS)","https://storage.googleapis.com/shaka-asset-icons/shaka.png","https://storage.googleapis.com/shaka-live-assets/player-source.m3u8",shakaAssets.Source.SHAKA)).addDescription("A self-indulgent HLS livestream.").markAsFeatured("Shaka Player History").addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.HLS).addFeature(shakaAssets.Feature.LIVE).addFeature(shakaAssets.Feature.MP4),(new ShakaDemoAssetInfo("Multi-DRM","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
@@ -157,7 +157,7 @@ shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shaka
157
157
  (new ShakaDemoAssetInfo('"Dig the Uke" by Stefan Kartenberg (audio only, multicodec, Widevine)',"https://storage.googleapis.com/shaka-asset-icons/audio_only.png","https://storage.googleapis.com/shaka-demo-assets/dig-the-uke/dash.mpd",shakaAssets.Source.SHAKA)).addKeySystem(shakaAssets.KeySystem.WIDEVINE).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.AUDIO_ONLY).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE).addLicenseServer("com.widevine.alpha",
158
158
  "https://cwip-shaka-proxy.appspot.com/no_auth"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, TTML)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),
159
159
  (new ShakaDemoAssetInfo("Tears of Steel (HLS, Server Side ads)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos/hls.m3u8",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.HLS).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.OFFLINE).setIMAContentSourceId("2528370").setIMAVideoId("tears-of-steel"),(new ShakaDemoAssetInfo("Tears of Steel (live, DASH, Server Side ads)",
160
- "https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.LIVE).setIMAAssetKey("_lDu24IaSYaYAMEfixipNQ"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
160
+ "https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-ttml/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SUBTITLES).addFeature(shakaAssets.Feature.LIVE).setIMAAssetKey("PSzZMzAkSXCmlJOWDmRj8Q"),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
161
161
  "https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SURROUND).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),(new ShakaDemoAssetInfo("Tears of Steel (multicodec, surround + stereo, single skippable ad)","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png","https://storage.googleapis.com/shaka-demo-assets/tos-surround/dash.mpd",
162
162
  shakaAssets.Source.SHAKA)).setAdTagUri(shakaAssets.AdTag.SINGLE_SKIPPABLE_AD).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.SURROUND).addFeature(shakaAssets.Feature.WEBM).addFeature(shakaAssets.Feature.OFFLINE),(new ShakaDemoAssetInfo("Shaka Player History (multicodec, live, DASH)","https://storage.googleapis.com/shaka-asset-icons/shaka.png","https://storage.googleapis.com/shaka-live-assets/player-source.mpd",shakaAssets.Source.SHAKA)).addFeature(shakaAssets.Feature.DASH).addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.LIVE).addFeature(shakaAssets.Feature.MP4).addFeature(shakaAssets.Feature.WEBM),
163
163
  (new ShakaDemoAssetInfo("Shaka Player History (live, HLS)","https://storage.googleapis.com/shaka-asset-icons/shaka.png","https://storage.googleapis.com/shaka-live-assets/player-source.m3u8",shakaAssets.Source.SHAKA)).addDescription("A self-indulgent HLS livestream.").markAsFeatured("Shaka Player History").addFeature(shakaAssets.Feature.HIGH_DEFINITION).addFeature(shakaAssets.Feature.HLS).addFeature(shakaAssets.Feature.LIVE).addFeature(shakaAssets.Feature.MP4),(new ShakaDemoAssetInfo("Multi-DRM","https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png",
@@ -451,7 +451,7 @@ declare namespace shaka.ads {
451
451
  /**
452
452
  * A class responsible for ad-related interactions.
453
453
  */
454
- class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager {
454
+ class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager , shaka.util.IReleasable {
455
455
  private noStructuralTyping_shaka_ads_AdManager : any;
456
456
  getStats ( ) : shaka.extern.AdsStats ;
457
457
  initClientSide (adContainer : any , video : any ) : any ;
@@ -460,6 +460,7 @@ declare namespace shaka.ads {
460
460
  onCueMetadataChange (value : any ) : any ;
461
461
  onDashTimedMetadata (region : any ) : any ;
462
462
  onHlsTimedMetadata (metadata : any , timestamp : any ) : any ;
463
+ release ( ) : any ;
463
464
  replaceServerSideAdTagParameters (adTagParameters : any ) : any ;
464
465
  requestClientSideAds (imaRequest : any ) : any ;
465
466
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -1410,6 +1411,162 @@ declare namespace shaka {
1410
1411
  }
1411
1412
  }
1412
1413
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1414
+ declare namespace shaka.polyfill {
1415
+ class EncryptionScheme {
1416
+ private noStructuralTyping_shaka_polyfill_EncryptionScheme : any;
1417
+ /**
1418
+ * Install the polyfill if needed.
1419
+ */
1420
+ static install ( ) : any ;
1421
+ }
1422
+ }
1423
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1424
+ declare namespace shaka.polyfill {
1425
+ class Fullscreen {
1426
+ private noStructuralTyping_shaka_polyfill_Fullscreen : any;
1427
+ /**
1428
+ * Install the polyfill if needed.
1429
+ */
1430
+ static install ( ) : any ;
1431
+ }
1432
+ }
1433
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1434
+ declare namespace shaka.polyfill {
1435
+ class MathRound {
1436
+ private noStructuralTyping_shaka_polyfill_MathRound : any;
1437
+ /**
1438
+ * Install the polyfill if needed.
1439
+ */
1440
+ static install ( ) : any ;
1441
+ }
1442
+ }
1443
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1444
+ declare namespace shaka.polyfill {
1445
+ class MediaCapabilities {
1446
+ private noStructuralTyping_shaka_polyfill_MediaCapabilities : any;
1447
+ /**
1448
+ * Install the polyfill if needed.
1449
+ */
1450
+ static install ( ) : any ;
1451
+ /**
1452
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1453
+ * garbage-collecting the polyfilled method on it. We make it public and export
1454
+ * it to ensure that it is not stripped out by the compiler.
1455
+ */
1456
+ static originalMcap : any | null ;
1457
+ }
1458
+ }
1459
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1460
+ declare namespace shaka.polyfill {
1461
+ class MediaSource {
1462
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1463
+ /**
1464
+ * Install the polyfill if needed.
1465
+ */
1466
+ static install ( ) : any ;
1467
+ }
1468
+ }
1469
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1470
+ declare namespace shaka.polyfill {
1471
+ class Orientation {
1472
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1473
+ /**
1474
+ * Install the polyfill if needed.
1475
+ */
1476
+ static install ( ) : any ;
1477
+ }
1478
+ }
1479
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1480
+ declare namespace shaka.polyfill {
1481
+ class PatchedMediaKeysApple {
1482
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1483
+ /**
1484
+ * Installs the polyfill if needed.
1485
+ */
1486
+ static install ( ) : any ;
1487
+ }
1488
+ }
1489
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1490
+ declare namespace shaka.polyfill {
1491
+ class PatchedMediaKeysMs {
1492
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1493
+ /**
1494
+ * Installs the polyfill if needed.
1495
+ */
1496
+ static install ( ) : any ;
1497
+ }
1498
+ }
1499
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1500
+ declare namespace shaka.polyfill {
1501
+ class PatchedMediaKeysNop {
1502
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1503
+ /**
1504
+ * Installs the polyfill if needed.
1505
+ */
1506
+ static install ( ) : any ;
1507
+ }
1508
+ }
1509
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1510
+ declare namespace shaka.polyfill {
1511
+ class PatchedMediaKeysWebkit {
1512
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1513
+ /**
1514
+ * Installs the polyfill if needed.
1515
+ */
1516
+ static install ( ) : any ;
1517
+ }
1518
+ }
1519
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1520
+ declare namespace shaka.polyfill {
1521
+ class PiPWebkit {
1522
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1523
+ /**
1524
+ * Install the polyfill if needed.
1525
+ */
1526
+ static install ( ) : any ;
1527
+ }
1528
+ }
1529
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1530
+ declare namespace shaka.polyfill {
1531
+ class StorageEstimate {
1532
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1533
+ /**
1534
+ * Install the polyfill if needed.
1535
+ */
1536
+ static install ( ) : any ;
1537
+ }
1538
+ }
1539
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1540
+ declare namespace shaka.polyfill {
1541
+ class VTTCue {
1542
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1543
+ /**
1544
+ * Install the polyfill if needed.
1545
+ */
1546
+ static install ( ) : any ;
1547
+ }
1548
+ }
1549
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1550
+ declare namespace shaka.polyfill {
1551
+ class VideoPlayPromise {
1552
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1553
+ /**
1554
+ * Install the polyfill if needed.
1555
+ */
1556
+ static install ( ) : any ;
1557
+ }
1558
+ }
1559
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1560
+ declare namespace shaka.polyfill {
1561
+ class VideoPlaybackQuality {
1562
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1563
+ /**
1564
+ * Install the polyfill if needed.
1565
+ */
1566
+ static install ( ) : any ;
1567
+ }
1568
+ }
1569
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
1413
1570
  declare namespace shaka.text {
1414
1571
  class Cue implements shaka.extern.Cue {
1415
1572
  private noStructuralTyping_shaka_text_Cue : any;
@@ -1430,6 +1587,7 @@ declare namespace shaka.text {
1430
1587
  fontStyle : any ;
1431
1588
  fontWeight : any ;
1432
1589
  id : any ;
1590
+ isContainer : any ;
1433
1591
  letterSpacing : any ;
1434
1592
  line : any ;
1435
1593
  /**
@@ -2141,7 +2299,7 @@ declare namespace shaka.util {
2141
2299
  declare namespace shaka.util {
2142
2300
  class FakeEvent extends Event {
2143
2301
  private noStructuralTyping_shaka_util_FakeEvent : any;
2144
- constructor (type : string , dict ? : object | null ) ;
2302
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2145
2303
  }
2146
2304
  }
2147
2305
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
@@ -2568,6 +2726,7 @@ declare namespace google.ima {
2568
2726
  constructor (container : google.ima.AdDisplayContainer ) ;
2569
2727
  addEventListener ( ) : any ;
2570
2728
  contentComplete ( ) : any ;
2729
+ destroy ( ) : any ;
2571
2730
  dispatchEvent ( ) : any ;
2572
2731
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
2573
2732
  removeEventListener ( ) : any ;
@@ -2579,6 +2738,7 @@ declare namespace google.ima {
2579
2738
  class AdsManager implements EventTarget {
2580
2739
  private noStructuralTyping_google_ima_AdsManager : any;
2581
2740
  addEventListener ( ) : any ;
2741
+ destroy ( ) : any ;
2582
2742
  dispatchEvent ( ) : any ;
2583
2743
  getAdSkippableState ( ) : boolean ;
2584
2744
  getCuePoints ( ) : number [] ;
@@ -2998,6 +3158,7 @@ declare namespace shaka.extern {
2998
3158
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
2999
3159
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3000
3160
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3161
+ release ( ) : any ;
3001
3162
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3002
3163
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3003
3164
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3459,7 +3620,7 @@ declare namespace shaka.extern {
3459
3620
  }
3460
3621
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3461
3622
  declare namespace shaka.extern {
3462
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
3623
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3463
3624
  }
3464
3625
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3465
3626
  declare namespace shaka.extern {
@@ -3536,6 +3697,13 @@ declare namespace shaka.extern {
3536
3697
  * Id of the cue.
3537
3698
  */
3538
3699
  id : string ;
3700
+ /**
3701
+ * If true, this represents a container element that is "above" the main
3702
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
3703
+ * in a TTML file. This controls the flow of the final cues; any nested cues
3704
+ * within an "isContainer" cue will be laid out as separate lines.
3705
+ */
3706
+ isContainer : boolean ;
3539
3707
  /**
3540
3708
  * Text letter spacing as a CSS letter-spacing value.
3541
3709
  */