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.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
+ }
1453
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.externs.js
1411
1564
  declare namespace shaka.text {
1412
1565
  class Cue implements shaka.extern.Cue {
1413
1566
  private noStructuralTyping_shaka_text_Cue : any;
@@ -2139,7 +2292,7 @@ declare namespace shaka.util {
2139
2292
  declare namespace shaka.util {
2140
2293
  class FakeEvent extends Event {
2141
2294
  private noStructuralTyping_shaka_util_FakeEvent : any;
2142
- constructor (type : string , dict ? : object | null ) ;
2295
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2143
2296
  }
2144
2297
  }
2145
2298
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.externs.js
@@ -2566,6 +2719,7 @@ declare namespace google.ima {
2566
2719
  constructor (container : google.ima.AdDisplayContainer ) ;
2567
2720
  addEventListener ( ) : any ;
2568
2721
  contentComplete ( ) : any ;
2722
+ destroy ( ) : any ;
2569
2723
  dispatchEvent ( ) : any ;
2570
2724
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
2571
2725
  removeEventListener ( ) : any ;
@@ -2577,6 +2731,7 @@ declare namespace google.ima {
2577
2731
  class AdsManager implements EventTarget {
2578
2732
  private noStructuralTyping_google_ima_AdsManager : any;
2579
2733
  addEventListener ( ) : any ;
2734
+ destroy ( ) : any ;
2580
2735
  dispatchEvent ( ) : any ;
2581
2736
  getAdSkippableState ( ) : boolean ;
2582
2737
  getCuePoints ( ) : number [] ;
@@ -2996,6 +3151,7 @@ declare namespace shaka.extern {
2996
3151
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
2997
3152
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
2998
3153
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3154
+ release ( ) : any ;
2999
3155
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3000
3156
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3001
3157
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3136,7 +3292,7 @@ declare namespace shaka.extern {
3136
3292
  }
3137
3293
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3138
3294
  declare namespace shaka.extern {
3139
- 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 [] } ;
3295
+ 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 [] } ;
3140
3296
  }
3141
3297
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3142
3298
  declare namespace shaka.extern {
@@ -3457,7 +3613,7 @@ declare namespace shaka.extern {
3457
3613
  }
3458
3614
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3459
3615
  declare namespace shaka.extern {
3460
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
3616
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3461
3617
  }
3462
3618
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3463
3619
  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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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.compiled.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;
@@ -2139,7 +2292,7 @@ declare namespace shaka.util {
2139
2292
  declare namespace shaka.util {
2140
2293
  class FakeEvent extends Event {
2141
2294
  private noStructuralTyping_shaka_util_FakeEvent : any;
2142
- constructor (type : string , dict ? : object | null ) ;
2295
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2143
2296
  }
2144
2297
  }
2145
2298
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
@@ -2566,6 +2719,7 @@ declare namespace google.ima {
2566
2719
  constructor (container : google.ima.AdDisplayContainer ) ;
2567
2720
  addEventListener ( ) : any ;
2568
2721
  contentComplete ( ) : any ;
2722
+ destroy ( ) : any ;
2569
2723
  dispatchEvent ( ) : any ;
2570
2724
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
2571
2725
  removeEventListener ( ) : any ;
@@ -2577,6 +2731,7 @@ declare namespace google.ima {
2577
2731
  class AdsManager implements EventTarget {
2578
2732
  private noStructuralTyping_google_ima_AdsManager : any;
2579
2733
  addEventListener ( ) : any ;
2734
+ destroy ( ) : any ;
2580
2735
  dispatchEvent ( ) : any ;
2581
2736
  getAdSkippableState ( ) : boolean ;
2582
2737
  getCuePoints ( ) : number [] ;
@@ -2996,6 +3151,7 @@ declare namespace shaka.extern {
2996
3151
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
2997
3152
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
2998
3153
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3154
+ release ( ) : any ;
2999
3155
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3000
3156
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3001
3157
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3136,7 +3292,7 @@ declare namespace shaka.extern {
3136
3292
  }
3137
3293
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3138
3294
  declare namespace shaka.extern {
3139
- 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 [] } ;
3295
+ 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 [] } ;
3140
3296
  }
3141
3297
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/net.js
3142
3298
  declare namespace shaka.extern {
@@ -3457,7 +3613,7 @@ declare namespace shaka.extern {
3457
3613
  }
3458
3614
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3459
3615
  declare namespace shaka.extern {
3460
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
3616
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3461
3617
  }
3462
3618
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3463
3619
  declare namespace shaka.extern {