shaka-player 3.1.0 → 3.1.4

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 (181) hide show
  1. package/AUTHORS +8 -2
  2. package/CHANGELOG.md +209 -0
  3. package/CONTRIBUTORS +10 -3
  4. package/README.md +3 -0
  5. package/build/apps.py +2 -2
  6. package/build/check.py +2 -2
  7. package/build/conformance.textproto +0 -9
  8. package/build/generateExterns.js +1 -1
  9. package/build/misspellings.txt +1 -0
  10. package/build/shakaBuildHelpers.py +6 -5
  11. package/build/subprocessWindowsPatch.py +103 -0
  12. package/demo/common/asset.js +11 -0
  13. package/demo/common/assets.js +1 -1
  14. package/demo/common/message_ids.js +5 -0
  15. package/demo/config.js +2 -1
  16. package/demo/custom.js +84 -3
  17. package/demo/demo.less +13 -1
  18. package/demo/demo_utils.js +1 -0
  19. package/demo/input.js +31 -12
  20. package/demo/input_container.js +24 -1
  21. package/demo/locales/en.json +6 -1
  22. package/demo/locales/source.json +20 -0
  23. package/demo/main.js +5 -1
  24. package/dist/controls.css +2 -2
  25. package/dist/controls.css.map +1 -1
  26. package/dist/demo.compiled.debug.js +99 -91
  27. package/dist/demo.compiled.debug.map +3 -3
  28. package/dist/demo.compiled.js +99 -91
  29. package/dist/demo.compiled.map +3 -3
  30. package/dist/demo.css +1 -1
  31. package/dist/demo.css.map +1 -1
  32. package/dist/deps.js +9 -9
  33. package/dist/locales.js +36 -34
  34. package/dist/receiver.compiled.debug.js +74 -70
  35. package/dist/receiver.compiled.debug.map +3 -3
  36. package/dist/receiver.compiled.js +74 -70
  37. package/dist/receiver.compiled.map +3 -3
  38. package/dist/shaka-player.compiled.d.ts +165 -9
  39. package/dist/shaka-player.compiled.debug.d.ts +165 -9
  40. package/dist/shaka-player.compiled.debug.externs.js +179 -11
  41. package/dist/shaka-player.compiled.debug.js +367 -339
  42. package/dist/shaka-player.compiled.debug.map +4 -4
  43. package/dist/shaka-player.compiled.externs.js +179 -11
  44. package/dist/shaka-player.compiled.js +818 -807
  45. package/dist/shaka-player.compiled.map +4 -4
  46. package/dist/shaka-player.ui.d.ts +165 -9
  47. package/dist/shaka-player.ui.debug.d.ts +165 -9
  48. package/dist/shaka-player.ui.debug.externs.js +181 -13
  49. package/dist/shaka-player.ui.debug.js +459 -429
  50. package/dist/shaka-player.ui.debug.map +4 -4
  51. package/dist/shaka-player.ui.externs.js +181 -13
  52. package/dist/shaka-player.ui.js +973 -961
  53. package/dist/shaka-player.ui.map +4 -4
  54. package/docs/tutorials/fairplay.md +1 -1
  55. package/docs/tutorials/faq.md +25 -0
  56. package/docs/tutorials/index.json +2 -2
  57. package/docs/tutorials/upgrade-v3.md +38 -0
  58. package/docs/tutorials/upgrade.md +3 -3
  59. package/externs/ima.js +4 -0
  60. package/externs/media_capabilities.js +16 -0
  61. package/externs/shaka/ads.js +2 -0
  62. package/externs/shaka/net.js +2 -2
  63. package/externs/shaka/player.js +6 -0
  64. package/karma.conf.js +1 -0
  65. package/lib/abr/simple_abr_manager.js +1 -1
  66. package/lib/ads/ad_manager.js +29 -11
  67. package/lib/ads/client_side_ad_manager.js +76 -86
  68. package/lib/ads/server_side_ad_manager.js +26 -11
  69. package/lib/cast/cast_proxy.js +3 -2
  70. package/lib/cast/cast_receiver.js +2 -1
  71. package/lib/cast/cast_sender.js +2 -2
  72. package/lib/cea/sei_processor.js +24 -17
  73. package/lib/dash/dash_parser.js +107 -4
  74. package/lib/dash/segment_list.js +1 -1
  75. package/lib/dash/segment_template.js +45 -15
  76. package/lib/dependencies/all.js +15 -15
  77. package/lib/hls/hls_parser.js +46 -18
  78. package/lib/media/closed_caption_parser.js +3 -1
  79. package/lib/media/content_workarounds.js +18 -0
  80. package/lib/media/drm_engine.js +20 -1
  81. package/lib/media/gap_jumping_controller.js +8 -4
  82. package/lib/media/media_source_engine.js +1 -2
  83. package/lib/media/playhead.js +1 -1
  84. package/lib/media/presentation_timeline.js +3 -1
  85. package/lib/media/segment_index.js +38 -12
  86. package/lib/media/segment_reference.js +8 -0
  87. package/lib/media/streaming_engine.js +30 -21
  88. package/lib/net/http_fetch_plugin.js +2 -2
  89. package/lib/net/networking_engine.js +3 -2
  90. package/lib/offline/storage.js +4 -0
  91. package/lib/player.js +113 -56
  92. package/lib/polyfill/encryption_scheme.js +2 -0
  93. package/lib/polyfill/fullscreen.js +2 -0
  94. package/lib/polyfill/mathround.js +2 -0
  95. package/lib/polyfill/media_capabilities.js +62 -23
  96. package/lib/polyfill/mediasource.js +8 -0
  97. package/lib/polyfill/orientation.js +3 -1
  98. package/lib/polyfill/patchedmediakeys_apple.js +6 -4
  99. package/lib/polyfill/patchedmediakeys_ms.js +6 -4
  100. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  101. package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
  102. package/lib/polyfill/pip_webkit.js +2 -0
  103. package/lib/polyfill/storage_estimate.js +2 -0
  104. package/lib/polyfill/video_play_promise.js +2 -0
  105. package/lib/polyfill/videoplaybackquality.js +2 -0
  106. package/lib/polyfill/vttcue.js +2 -0
  107. package/lib/text/cue.js +11 -0
  108. package/lib/text/mp4_ttml_parser.js +3 -0
  109. package/lib/text/text_engine.js +14 -2
  110. package/lib/text/ttml_text_parser.js +52 -30
  111. package/lib/text/ui_text_displayer.js +255 -82
  112. package/lib/text/vtt_text_parser.js +4 -2
  113. package/lib/util/error.js +1 -4
  114. package/lib/util/fake_event.js +53 -7
  115. package/lib/util/mime_utils.js +33 -0
  116. package/lib/util/mp4_box_parsers.js +1 -1
  117. package/lib/util/mp4_parser.js +14 -0
  118. package/lib/util/networking.js +1 -1
  119. package/lib/util/periods.js +132 -37
  120. package/lib/util/platform.js +13 -1
  121. package/lib/util/stream_utils.js +46 -7
  122. package/package.json +3 -3
  123. package/test/cast/cast_proxy_unit.js +12 -6
  124. package/test/cast/cast_receiver_integration.js +1 -1
  125. package/test/cast/cast_utils_unit.js +1 -1
  126. package/test/cea/mp4_cea_parser_unit.js +26 -0
  127. package/test/dash/dash_parser_live_unit.js +1 -0
  128. package/test/dash/dash_parser_manifest_unit.js +187 -1
  129. package/test/dash/dash_parser_segment_template_unit.js +3 -3
  130. package/test/demo/demo_unit.js +0 -1
  131. package/test/hls/hls_parser_unit.js +45 -1
  132. package/test/media/closed_caption_parser_unit.js +20 -0
  133. package/test/media/drm_engine_unit.js +59 -3
  134. package/test/media/playhead_unit.js +27 -1
  135. package/test/media/presentation_timeline_unit.js +19 -0
  136. package/test/media/segment_index_unit.js +76 -3
  137. package/test/media/streaming_engine_unit.js +3 -3
  138. package/test/player_integration.js +38 -0
  139. package/test/player_unit.js +125 -6
  140. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  141. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  142. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  143. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  144. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  145. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  146. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  147. package/test/test/assets/3675/dash_0.mpd +30 -0
  148. package/test/test/assets/3675/dash_1.mpd +30 -0
  149. package/test/test/assets/3675/dash_2.mpd +30 -0
  150. package/test/test/assets/3675/dash_3.mpd +30 -0
  151. package/test/test/assets/3675/dash_4.mpd +30 -0
  152. package/test/test/assets/3675/dash_5.mpd +26 -0
  153. package/test/test/assets/3675/init-stream0.m4s +0 -0
  154. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  155. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  156. package/test/test/util/fake_ad_manager.js +4 -1
  157. package/test/test/util/simple_fakes.js +5 -3
  158. package/test/test/util/waiter.js +36 -2
  159. package/test/text/ttml_text_parser_unit.js +55 -0
  160. package/test/text/ui_text_displayer_unit.js +95 -18
  161. package/test/text/vtt_text_parser_unit.js +17 -1
  162. package/test/ui/localization_unit.js +15 -14
  163. package/test/ui/text_displayer_layout_unit.js +52 -1
  164. package/test/ui/ui_unit.js +4 -0
  165. package/test/util/mp4_box_parsers_unit.js +28 -0
  166. package/test/util/periods_unit.js +190 -2
  167. package/test/util/stream_utils_unit.js +56 -5
  168. package/ui/airplay_button.js +5 -0
  169. package/ui/big_play_button.js +10 -0
  170. package/ui/cast_button.js +2 -3
  171. package/ui/controls.js +9 -7
  172. package/ui/less/containers.less +10 -5
  173. package/ui/locales/en.json +1 -0
  174. package/ui/locales/ru.json +6 -6
  175. package/ui/locales/source.json +4 -0
  176. package/ui/localization.js +28 -51
  177. package/ui/pip_button.js +2 -3
  178. package/ui/play_button.js +10 -10
  179. package/ui/small_play_button.js +12 -0
  180. package/ui/ui.js +1 -1
  181. package/docs/tutorials/upgrade-v2-4.md +0 -481
@@ -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 > ;
@@ -758,7 +759,7 @@ declare namespace shaka {
758
759
  */
759
760
  static add (key : shaka.dependencies.Allowed , dep : any ) : any ;
760
761
  /**
761
- * Check if we have a dependency for the key
762
+ * Check if we have a dependency for the key.
762
763
  * @param key key
763
764
  */
764
765
  static has (key : shaka.dependencies.Allowed ) : boolean ;
@@ -1017,9 +1018,10 @@ declare namespace shaka.media {
1017
1018
  /**
1018
1019
  * Returns a new iterator that initially points to the segment that contains
1019
1020
  * the given time. Like the normal iterator, next() must be called first to
1020
- * get to the first element.
1021
+ * get to the first element. Returns null if we do not find a segment at the
1022
+ * requested time.
1021
1023
  */
1022
- getIteratorForTime (time : number ) : shaka.media.SegmentIterator ;
1024
+ getIteratorForTime (time : number ) : shaka.media.SegmentIterator | null ;
1023
1025
  /**
1024
1026
  * Marks the index as immutable. Segments cannot be added or removed after
1025
1027
  * this point. This doesn't affect the references themselves. This also
@@ -1029,7 +1031,8 @@ declare namespace shaka.media {
1029
1031
  markImmutable ( ) : any ;
1030
1032
  /**
1031
1033
  * Merges the given SegmentReferences. Supports extending the original
1032
- * references only. Will not replace old references or interleave new ones.
1034
+ * references only. Will replace old references with equivalent new ones, and
1035
+ * keep any unique old ones.
1033
1036
  * Used, for example, by the DASH and HLS parser, where manifests may not list
1034
1037
  * all available references, so we must keep available references in memory to
1035
1038
  * fill the availability window.
@@ -1200,7 +1203,7 @@ declare namespace shaka.net {
1200
1203
  /**
1201
1204
  * Makes a simple network request for the given URIs.
1202
1205
  */
1203
- static makeRequest (uris : string [] , retryParams : shaka.extern.RetryParameters , streamDataCallback ? : ( (a : ArrayBuffer | ArrayBufferView ) => any ) | null ) : shaka.extern.Request ;
1206
+ static makeRequest (uris : string [] , retryParams : shaka.extern.RetryParameters , streamDataCallback ? : ( (a : ArrayBuffer | ArrayBufferView ) => Promise < any > ) | null ) : shaka.extern.Request ;
1204
1207
  /**
1205
1208
  * Registers a scheme plugin. This plugin will handle all requests with the
1206
1209
  * given scheme. If a plugin with the same scheme already exists, it is
@@ -1408,6 +1411,156 @@ declare namespace shaka {
1408
1411
  }
1409
1412
  }
1410
1413
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.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.ui.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.ui.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.ui.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
+ }
1453
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1454
+ declare namespace shaka.polyfill {
1455
+ class MediaSource {
1456
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1457
+ /**
1458
+ * Install the polyfill if needed.
1459
+ */
1460
+ static install ( ) : any ;
1461
+ }
1462
+ }
1463
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1464
+ declare namespace shaka.polyfill {
1465
+ class Orientation {
1466
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1467
+ /**
1468
+ * Install the polyfill if needed.
1469
+ */
1470
+ static install ( ) : any ;
1471
+ }
1472
+ }
1473
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1474
+ declare namespace shaka.polyfill {
1475
+ class PatchedMediaKeysApple {
1476
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1477
+ /**
1478
+ * Installs the polyfill if needed.
1479
+ */
1480
+ static install ( ) : any ;
1481
+ }
1482
+ }
1483
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1484
+ declare namespace shaka.polyfill {
1485
+ class PatchedMediaKeysMs {
1486
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1487
+ /**
1488
+ * Installs the polyfill if needed.
1489
+ */
1490
+ static install ( ) : any ;
1491
+ }
1492
+ }
1493
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1494
+ declare namespace shaka.polyfill {
1495
+ class PatchedMediaKeysNop {
1496
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1497
+ /**
1498
+ * Installs the polyfill if needed.
1499
+ */
1500
+ static install ( ) : any ;
1501
+ }
1502
+ }
1503
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1504
+ declare namespace shaka.polyfill {
1505
+ class PatchedMediaKeysWebkit {
1506
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1507
+ /**
1508
+ * Installs the polyfill if needed.
1509
+ */
1510
+ static install ( ) : any ;
1511
+ }
1512
+ }
1513
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1514
+ declare namespace shaka.polyfill {
1515
+ class PiPWebkit {
1516
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1517
+ /**
1518
+ * Install the polyfill if needed.
1519
+ */
1520
+ static install ( ) : any ;
1521
+ }
1522
+ }
1523
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1524
+ declare namespace shaka.polyfill {
1525
+ class StorageEstimate {
1526
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1527
+ /**
1528
+ * Install the polyfill if needed.
1529
+ */
1530
+ static install ( ) : any ;
1531
+ }
1532
+ }
1533
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1534
+ declare namespace shaka.polyfill {
1535
+ class VTTCue {
1536
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1537
+ /**
1538
+ * Install the polyfill if needed.
1539
+ */
1540
+ static install ( ) : any ;
1541
+ }
1542
+ }
1543
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1544
+ declare namespace shaka.polyfill {
1545
+ class VideoPlayPromise {
1546
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1547
+ /**
1548
+ * Install the polyfill if needed.
1549
+ */
1550
+ static install ( ) : any ;
1551
+ }
1552
+ }
1553
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1554
+ declare namespace shaka.polyfill {
1555
+ class VideoPlaybackQuality {
1556
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1557
+ /**
1558
+ * Install the polyfill if needed.
1559
+ */
1560
+ static install ( ) : any ;
1561
+ }
1562
+ }
1563
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1411
1564
  declare namespace shaka.text {
1412
1565
  class Cue implements shaka.extern.Cue {
1413
1566
  private noStructuralTyping_shaka_text_Cue : any;
@@ -2598,7 +2751,7 @@ declare namespace shaka.util {
2598
2751
  declare namespace shaka.util {
2599
2752
  class FakeEvent extends Event {
2600
2753
  private noStructuralTyping_shaka_util_FakeEvent : any;
2601
- constructor (type : string , dict ? : object | null ) ;
2754
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2602
2755
  }
2603
2756
  }
2604
2757
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
@@ -3025,6 +3178,7 @@ declare namespace google.ima {
3025
3178
  constructor (container : google.ima.AdDisplayContainer ) ;
3026
3179
  addEventListener ( ) : any ;
3027
3180
  contentComplete ( ) : any ;
3181
+ destroy ( ) : any ;
3028
3182
  dispatchEvent ( ) : any ;
3029
3183
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
3030
3184
  removeEventListener ( ) : any ;
@@ -3036,6 +3190,7 @@ declare namespace google.ima {
3036
3190
  class AdsManager implements EventTarget {
3037
3191
  private noStructuralTyping_google_ima_AdsManager : any;
3038
3192
  addEventListener ( ) : any ;
3193
+ destroy ( ) : any ;
3039
3194
  dispatchEvent ( ) : any ;
3040
3195
  getAdSkippableState ( ) : boolean ;
3041
3196
  getCuePoints ( ) : number [] ;
@@ -3455,6 +3610,7 @@ declare namespace shaka.extern {
3455
3610
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
3456
3611
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3457
3612
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3613
+ release ( ) : any ;
3458
3614
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3459
3615
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3460
3616
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3595,7 +3751,7 @@ declare namespace shaka.extern {
3595
3751
  }
3596
3752
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3597
3753
  declare namespace shaka.extern {
3598
- type Request = { allowCrossSiteCredentials : boolean , body : ArrayBuffer | ArrayBufferView | null , headers : { [ key: string ]: string } , licenseRequestType : string | null , method : string , retryParameters : shaka.extern.RetryParameters , sessionId : string | null , streamDataCallback : ( (a : ArrayBuffer | ArrayBufferView ) => any ) | null , uris : string [] } ;
3754
+ type Request = { allowCrossSiteCredentials : boolean , body : ArrayBuffer | ArrayBufferView | null , headers : { [ key: string ]: string } , licenseRequestType : string | null , method : string , retryParameters : shaka.extern.RetryParameters , sessionId : string | null , streamDataCallback : ( (a : ArrayBuffer | ArrayBufferView ) => Promise < any > ) | null , uris : string [] } ;
3599
3755
  }
3600
3756
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3601
3757
  declare namespace shaka.extern {
@@ -3916,7 +4072,7 @@ declare namespace shaka.extern {
3916
4072
  }
3917
4073
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3918
4074
  declare namespace shaka.extern {
3919
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
4075
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3920
4076
  }
3921
4077
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3922
4078
  declare namespace shaka.extern {
@@ -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 > ;
@@ -758,7 +759,7 @@ declare namespace shaka {
758
759
  */
759
760
  static add (key : shaka.dependencies.Allowed , dep : any ) : any ;
760
761
  /**
761
- * Check if we have a dependency for the key
762
+ * Check if we have a dependency for the key.
762
763
  * @param key key
763
764
  */
764
765
  static has (key : shaka.dependencies.Allowed ) : boolean ;
@@ -1017,9 +1018,10 @@ declare namespace shaka.media {
1017
1018
  /**
1018
1019
  * Returns a new iterator that initially points to the segment that contains
1019
1020
  * the given time. Like the normal iterator, next() must be called first to
1020
- * get to the first element.
1021
+ * get to the first element. Returns null if we do not find a segment at the
1022
+ * requested time.
1021
1023
  */
1022
- getIteratorForTime (time : number ) : shaka.media.SegmentIterator ;
1024
+ getIteratorForTime (time : number ) : shaka.media.SegmentIterator | null ;
1023
1025
  /**
1024
1026
  * Marks the index as immutable. Segments cannot be added or removed after
1025
1027
  * this point. This doesn't affect the references themselves. This also
@@ -1029,7 +1031,8 @@ declare namespace shaka.media {
1029
1031
  markImmutable ( ) : any ;
1030
1032
  /**
1031
1033
  * Merges the given SegmentReferences. Supports extending the original
1032
- * references only. Will not replace old references or interleave new ones.
1034
+ * references only. Will replace old references with equivalent new ones, and
1035
+ * keep any unique old ones.
1033
1036
  * Used, for example, by the DASH and HLS parser, where manifests may not list
1034
1037
  * all available references, so we must keep available references in memory to
1035
1038
  * fill the availability window.
@@ -1200,7 +1203,7 @@ declare namespace shaka.net {
1200
1203
  /**
1201
1204
  * Makes a simple network request for the given URIs.
1202
1205
  */
1203
- static makeRequest (uris : string [] , retryParams : shaka.extern.RetryParameters , streamDataCallback ? : ( (a : ArrayBuffer | ArrayBufferView ) => any ) | null ) : shaka.extern.Request ;
1206
+ static makeRequest (uris : string [] , retryParams : shaka.extern.RetryParameters , streamDataCallback ? : ( (a : ArrayBuffer | ArrayBufferView ) => Promise < any > ) | null ) : shaka.extern.Request ;
1204
1207
  /**
1205
1208
  * Registers a scheme plugin. This plugin will handle all requests with the
1206
1209
  * given scheme. If a plugin with the same scheme already exists, it is
@@ -1408,6 +1411,156 @@ declare namespace shaka {
1408
1411
  }
1409
1412
  }
1410
1413
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.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.ui.debug.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.ui.debug.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.ui.debug.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
+ }
1453
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1454
+ declare namespace shaka.polyfill {
1455
+ class MediaSource {
1456
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1457
+ /**
1458
+ * Install the polyfill if needed.
1459
+ */
1460
+ static install ( ) : any ;
1461
+ }
1462
+ }
1463
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1464
+ declare namespace shaka.polyfill {
1465
+ class Orientation {
1466
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1467
+ /**
1468
+ * Install the polyfill if needed.
1469
+ */
1470
+ static install ( ) : any ;
1471
+ }
1472
+ }
1473
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1474
+ declare namespace shaka.polyfill {
1475
+ class PatchedMediaKeysApple {
1476
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1477
+ /**
1478
+ * Installs the polyfill if needed.
1479
+ */
1480
+ static install ( ) : any ;
1481
+ }
1482
+ }
1483
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1484
+ declare namespace shaka.polyfill {
1485
+ class PatchedMediaKeysMs {
1486
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1487
+ /**
1488
+ * Installs the polyfill if needed.
1489
+ */
1490
+ static install ( ) : any ;
1491
+ }
1492
+ }
1493
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1494
+ declare namespace shaka.polyfill {
1495
+ class PatchedMediaKeysNop {
1496
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1497
+ /**
1498
+ * Installs the polyfill if needed.
1499
+ */
1500
+ static install ( ) : any ;
1501
+ }
1502
+ }
1503
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1504
+ declare namespace shaka.polyfill {
1505
+ class PatchedMediaKeysWebkit {
1506
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1507
+ /**
1508
+ * Installs the polyfill if needed.
1509
+ */
1510
+ static install ( ) : any ;
1511
+ }
1512
+ }
1513
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1514
+ declare namespace shaka.polyfill {
1515
+ class PiPWebkit {
1516
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1517
+ /**
1518
+ * Install the polyfill if needed.
1519
+ */
1520
+ static install ( ) : any ;
1521
+ }
1522
+ }
1523
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1524
+ declare namespace shaka.polyfill {
1525
+ class StorageEstimate {
1526
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1527
+ /**
1528
+ * Install the polyfill if needed.
1529
+ */
1530
+ static install ( ) : any ;
1531
+ }
1532
+ }
1533
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1534
+ declare namespace shaka.polyfill {
1535
+ class VTTCue {
1536
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1537
+ /**
1538
+ * Install the polyfill if needed.
1539
+ */
1540
+ static install ( ) : any ;
1541
+ }
1542
+ }
1543
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1544
+ declare namespace shaka.polyfill {
1545
+ class VideoPlayPromise {
1546
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1547
+ /**
1548
+ * Install the polyfill if needed.
1549
+ */
1550
+ static install ( ) : any ;
1551
+ }
1552
+ }
1553
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1554
+ declare namespace shaka.polyfill {
1555
+ class VideoPlaybackQuality {
1556
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1557
+ /**
1558
+ * Install the polyfill if needed.
1559
+ */
1560
+ static install ( ) : any ;
1561
+ }
1562
+ }
1563
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1411
1564
  declare namespace shaka.text {
1412
1565
  class Cue implements shaka.extern.Cue {
1413
1566
  private noStructuralTyping_shaka_text_Cue : any;
@@ -2598,7 +2751,7 @@ declare namespace shaka.util {
2598
2751
  declare namespace shaka.util {
2599
2752
  class FakeEvent extends Event {
2600
2753
  private noStructuralTyping_shaka_util_FakeEvent : any;
2601
- constructor (type : string , dict ? : object | null ) ;
2754
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2602
2755
  }
2603
2756
  }
2604
2757
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
@@ -3025,6 +3178,7 @@ declare namespace google.ima {
3025
3178
  constructor (container : google.ima.AdDisplayContainer ) ;
3026
3179
  addEventListener ( ) : any ;
3027
3180
  contentComplete ( ) : any ;
3181
+ destroy ( ) : any ;
3028
3182
  dispatchEvent ( ) : any ;
3029
3183
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
3030
3184
  removeEventListener ( ) : any ;
@@ -3036,6 +3190,7 @@ declare namespace google.ima {
3036
3190
  class AdsManager implements EventTarget {
3037
3191
  private noStructuralTyping_google_ima_AdsManager : any;
3038
3192
  addEventListener ( ) : any ;
3193
+ destroy ( ) : any ;
3039
3194
  dispatchEvent ( ) : any ;
3040
3195
  getAdSkippableState ( ) : boolean ;
3041
3196
  getCuePoints ( ) : number [] ;
@@ -3455,6 +3610,7 @@ declare namespace shaka.extern {
3455
3610
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
3456
3611
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3457
3612
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3613
+ release ( ) : any ;
3458
3614
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3459
3615
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3460
3616
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3595,7 +3751,7 @@ declare namespace shaka.extern {
3595
3751
  }
3596
3752
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3597
3753
  declare namespace shaka.extern {
3598
- type Request = { allowCrossSiteCredentials : boolean , body : ArrayBuffer | ArrayBufferView | null , headers : { [ key: string ]: string } , licenseRequestType : string | null , method : string , retryParameters : shaka.extern.RetryParameters , sessionId : string | null , streamDataCallback : ( (a : ArrayBuffer | ArrayBufferView ) => any ) | null , uris : string [] } ;
3754
+ type Request = { allowCrossSiteCredentials : boolean , body : ArrayBuffer | ArrayBufferView | null , headers : { [ key: string ]: string } , licenseRequestType : string | null , method : string , retryParameters : shaka.extern.RetryParameters , sessionId : string | null , streamDataCallback : ( (a : ArrayBuffer | ArrayBufferView ) => Promise < any > ) | null , uris : string [] } ;
3599
3755
  }
3600
3756
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3601
3757
  declare namespace shaka.extern {
@@ -3916,7 +4072,7 @@ declare namespace shaka.extern {
3916
4072
  }
3917
4073
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3918
4074
  declare namespace shaka.extern {
3919
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
4075
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3920
4076
  }
3921
4077
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3922
4078
  declare namespace shaka.extern {