shaka-player 3.2.0 → 3.2.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 (162) hide show
  1. package/.github/workflows/build_and_test.yaml +73 -0
  2. package/.github/workflows/release.yaml +53 -0
  3. package/AUTHORS +3 -0
  4. package/CHANGELOG.md +182 -1
  5. package/CONTRIBUTORS +3 -0
  6. package/README.md +4 -4
  7. package/build/checkversion.py +1 -1
  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/build/test.py +6 -0
  13. package/demo/common/assets.js +1 -1
  14. package/demo/index.html +1 -1
  15. package/dist/controls.css +2 -2
  16. package/dist/controls.css.map +1 -1
  17. package/dist/demo.compiled.debug.js +1 -1
  18. package/dist/demo.compiled.js +1 -1
  19. package/dist/deps.js +8 -8
  20. package/dist/locales.js +37 -37
  21. package/dist/receiver.compiled.debug.js +1 -1
  22. package/dist/receiver.compiled.js +1 -1
  23. package/dist/shaka-player.compiled.d.ts +195 -5
  24. package/dist/shaka-player.compiled.debug.d.ts +195 -5
  25. package/dist/shaka-player.compiled.debug.externs.js +226 -14
  26. package/dist/shaka-player.compiled.debug.js +424 -399
  27. package/dist/shaka-player.compiled.debug.map +4 -4
  28. package/dist/shaka-player.compiled.externs.js +226 -14
  29. package/dist/shaka-player.compiled.js +826 -812
  30. package/dist/shaka-player.compiled.map +4 -4
  31. package/dist/shaka-player.ui.d.ts +197 -16
  32. package/dist/shaka-player.ui.debug.d.ts +197 -16
  33. package/dist/shaka-player.ui.debug.externs.js +230 -27
  34. package/dist/shaka-player.ui.debug.js +466 -442
  35. package/dist/shaka-player.ui.debug.map +4 -4
  36. package/dist/shaka-player.ui.externs.js +230 -27
  37. package/dist/shaka-player.ui.js +946 -932
  38. package/dist/shaka-player.ui.map +4 -4
  39. package/docs/tutorials/fairplay.md +1 -1
  40. package/docs/tutorials/faq.md +14 -0
  41. package/docs/tutorials/ui.md +5 -5
  42. package/externs/ima.js +4 -0
  43. package/externs/shaka/ads.js +25 -0
  44. package/externs/shaka/player.js +8 -0
  45. package/externs/shaka/text.js +10 -0
  46. package/karma.conf.js +20 -15
  47. package/lib/ads/ad_manager.js +46 -26
  48. package/lib/ads/client_side_ad_manager.js +82 -88
  49. package/lib/ads/server_side_ad_manager.js +45 -13
  50. package/lib/cast/cast_proxy.js +6 -2
  51. package/lib/cast/cast_receiver.js +5 -1
  52. package/lib/cast/cast_sender.js +2 -2
  53. package/lib/cea/sei_processor.js +24 -17
  54. package/lib/dash/dash_parser.js +131 -24
  55. package/lib/dash/segment_list.js +1 -1
  56. package/lib/dash/segment_template.js +1 -1
  57. package/lib/hls/hls_parser.js +74 -17
  58. package/lib/hls/manifest_text_parser.js +1 -0
  59. package/lib/media/closed_caption_parser.js +3 -1
  60. package/lib/media/content_workarounds.js +12 -0
  61. package/lib/media/drm_engine.js +20 -1
  62. package/lib/media/gap_jumping_controller.js +8 -4
  63. package/lib/media/media_source_engine.js +1 -2
  64. package/lib/media/playhead.js +1 -1
  65. package/lib/media/region_observer.js +39 -33
  66. package/lib/media/region_timeline.js +17 -19
  67. package/lib/media/segment_index.js +2 -1
  68. package/lib/media/segment_reference.js +19 -1
  69. package/lib/media/streaming_engine.js +8 -4
  70. package/lib/net/networking_engine.js +6 -1
  71. package/lib/offline/download_manager.js +1 -2
  72. package/lib/offline/storage.js +8 -9
  73. package/lib/player.js +129 -59
  74. package/lib/polyfill/aria.js +12 -2
  75. package/lib/polyfill/encryption_scheme.js +2 -0
  76. package/lib/polyfill/fullscreen.js +2 -0
  77. package/lib/polyfill/mathround.js +2 -0
  78. package/lib/polyfill/media_capabilities.js +73 -21
  79. package/lib/polyfill/mediasource.js +8 -0
  80. package/lib/polyfill/orientation.js +3 -1
  81. package/lib/polyfill/patchedmediakeys_apple.js +6 -4
  82. package/lib/polyfill/patchedmediakeys_ms.js +6 -4
  83. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  84. package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
  85. package/lib/polyfill/pip_webkit.js +2 -0
  86. package/lib/polyfill/storage_estimate.js +2 -0
  87. package/lib/polyfill/video_play_promise.js +2 -0
  88. package/lib/polyfill/videoplaybackquality.js +2 -0
  89. package/lib/polyfill/vttcue.js +2 -0
  90. package/lib/text/cue.js +6 -0
  91. package/lib/text/mp4_ttml_parser.js +3 -0
  92. package/lib/text/text_engine.js +14 -2
  93. package/lib/text/ttml_text_parser.js +135 -87
  94. package/lib/text/ui_text_displayer.js +213 -80
  95. package/lib/text/vtt_text_parser.js +4 -2
  96. package/lib/text/web_vtt_generator.js +21 -12
  97. package/lib/util/fake_event.js +53 -7
  98. package/lib/util/fake_event_target.js +21 -1
  99. package/lib/util/mp4_box_parsers.js +1 -1
  100. package/lib/util/periods.js +4 -1
  101. package/lib/util/platform.js +13 -1
  102. package/lib/util/stream_utils.js +105 -13
  103. package/lib/util/xml_utils.js +50 -12
  104. package/package.json +3 -6
  105. package/roadmap.md +24 -22
  106. package/test/cast/cast_proxy_unit.js +12 -6
  107. package/test/cast/cast_receiver_integration.js +1 -1
  108. package/test/cast/cast_utils_unit.js +1 -1
  109. package/test/cea/mp4_cea_parser_unit.js +26 -0
  110. package/test/dash/dash_parser_live_unit.js +43 -0
  111. package/test/dash/dash_parser_manifest_unit.js +222 -3
  112. package/test/hls/hls_parser_unit.js +79 -1
  113. package/test/media/closed_caption_parser_unit.js +20 -0
  114. package/test/media/drm_engine_integration.js +86 -2
  115. package/test/media/drm_engine_unit.js +57 -0
  116. package/test/media/playhead_unit.js +27 -1
  117. package/test/media/region_observer_unit.js +40 -5
  118. package/test/media/region_timeline_unit.js +40 -22
  119. package/test/media/streaming_engine_integration.js +2 -1
  120. package/test/media/streaming_engine_unit.js +145 -0
  121. package/test/player_integration.js +79 -8
  122. package/test/player_src_equals_integration.js +41 -8
  123. package/test/player_unit.js +14 -4
  124. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  125. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  126. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  127. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  128. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  129. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  130. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  131. package/test/test/assets/3675/dash_0.mpd +30 -0
  132. package/test/test/assets/3675/dash_1.mpd +30 -0
  133. package/test/test/assets/3675/dash_2.mpd +30 -0
  134. package/test/test/assets/3675/dash_3.mpd +30 -0
  135. package/test/test/assets/3675/dash_4.mpd +30 -0
  136. package/test/test/assets/3675/dash_5.mpd +26 -0
  137. package/test/test/assets/3675/init-stream0.m4s +0 -0
  138. package/test/test/assets/chapters.vtt +2 -2
  139. package/test/test/assets/chapters2.vtt +10 -0
  140. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  141. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  142. package/test/test/util/fake_ad_manager.js +11 -1
  143. package/test/test/util/ttml_utils.js +81 -0
  144. package/test/test/util/util.js +10 -7
  145. package/test/text/mp4_ttml_parser_unit.js +11 -18
  146. package/test/text/ttml_text_parser_unit.js +542 -220
  147. package/test/text/ui_text_displayer_unit.js +93 -20
  148. package/test/text/vtt_text_parser_unit.js +17 -1
  149. package/test/text/web_vtt_generator_unit.js +58 -3
  150. package/test/ui/localization_unit.js +15 -14
  151. package/test/ui/text_displayer_layout_unit.js +21 -8
  152. package/test/util/mp4_box_parsers_unit.js +28 -0
  153. package/test/util/stream_utils_unit.js +60 -3
  154. package/ui/cast_button.js +2 -3
  155. package/ui/controls.js +11 -6
  156. package/ui/less/buttons.less +0 -4
  157. package/ui/less/containers.less +6 -7
  158. package/ui/locales/ru.json +6 -6
  159. package/ui/localization.js +40 -87
  160. package/ui/pip_button.js +2 -3
  161. package/ui/seek_bar.js +1 -2
  162. package/ui/text_selection.js +1 -0
@@ -473,8 +473,9 @@ declare namespace shaka.ads {
473
473
  /**
474
474
  * A class responsible for ad-related interactions.
475
475
  */
476
- class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager {
476
+ class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager , shaka.util.IReleasable {
477
477
  private noStructuralTyping_shaka_ads_AdManager : any;
478
+ getServerSideCuePoints ( ) : shaka.extern.AdCuePoint [] ;
478
479
  getStats ( ) : shaka.extern.AdsStats ;
479
480
  initClientSide (adContainer : any , video : any ) : any ;
480
481
  initServerSide (adContainer : any , video : any ) : any ;
@@ -482,6 +483,7 @@ declare namespace shaka.ads {
482
483
  onCueMetadataChange (value : any ) : any ;
483
484
  onDashTimedMetadata (region : any ) : any ;
484
485
  onHlsTimedMetadata (metadata : any , timestamp : any ) : any ;
486
+ release ( ) : any ;
485
487
  replaceServerSideAdTagParameters (adTagParameters : any ) : any ;
486
488
  requestClientSideAds (imaRequest : any ) : any ;
487
489
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -1117,7 +1119,7 @@ declare namespace shaka.media {
1117
1119
  */
1118
1120
  class SegmentReference {
1119
1121
  private noStructuralTyping_shaka_media_SegmentReference : any;
1120
- constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null ) ;
1122
+ constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null , tileDuration ? : number | null ) ;
1121
1123
  /**
1122
1124
  * Returns the offset from the start of the resource to the end of the
1123
1125
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1137,6 +1139,11 @@ declare namespace shaka.media {
1137
1139
  * Returns the segment's start time in seconds.
1138
1140
  */
1139
1141
  getStartTime ( ) : number ;
1142
+ /**
1143
+ * Returns the segment's explicit tile duration.
1144
+ * Only defined in image segments.
1145
+ */
1146
+ getTileDuration ( ) : number | null ;
1140
1147
  /**
1141
1148
  * Returns the segment's tiles layout. Only defined in image segments.
1142
1149
  */
@@ -1437,6 +1444,172 @@ declare namespace shaka {
1437
1444
  }
1438
1445
  }
1439
1446
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1447
+ declare namespace shaka.polyfill {
1448
+ class Aria {
1449
+ private noStructuralTyping_shaka_polyfill_Aria : any;
1450
+ /**
1451
+ * Install the polyfill if needed.
1452
+ */
1453
+ static install ( ) : any ;
1454
+ }
1455
+ }
1456
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1457
+ declare namespace shaka.polyfill {
1458
+ class EncryptionScheme {
1459
+ private noStructuralTyping_shaka_polyfill_EncryptionScheme : any;
1460
+ /**
1461
+ * Install the polyfill if needed.
1462
+ */
1463
+ static install ( ) : any ;
1464
+ }
1465
+ }
1466
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1467
+ declare namespace shaka.polyfill {
1468
+ class Fullscreen {
1469
+ private noStructuralTyping_shaka_polyfill_Fullscreen : any;
1470
+ /**
1471
+ * Install the polyfill if needed.
1472
+ */
1473
+ static install ( ) : any ;
1474
+ }
1475
+ }
1476
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1477
+ declare namespace shaka.polyfill {
1478
+ class MathRound {
1479
+ private noStructuralTyping_shaka_polyfill_MathRound : any;
1480
+ /**
1481
+ * Install the polyfill if needed.
1482
+ */
1483
+ static install ( ) : any ;
1484
+ }
1485
+ }
1486
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1487
+ declare namespace shaka.polyfill {
1488
+ class MediaCapabilities {
1489
+ private noStructuralTyping_shaka_polyfill_MediaCapabilities : any;
1490
+ /**
1491
+ * Install the polyfill if needed.
1492
+ */
1493
+ static install ( ) : any ;
1494
+ /**
1495
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1496
+ * garbage-collecting the polyfilled method on it. We make it public and export
1497
+ * it to ensure that it is not stripped out by the compiler.
1498
+ */
1499
+ static originalMcap : any | null ;
1500
+ }
1501
+ }
1502
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1503
+ declare namespace shaka.polyfill {
1504
+ class MediaSource {
1505
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1506
+ /**
1507
+ * Install the polyfill if needed.
1508
+ */
1509
+ static install ( ) : any ;
1510
+ }
1511
+ }
1512
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1513
+ declare namespace shaka.polyfill {
1514
+ class Orientation {
1515
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1516
+ /**
1517
+ * Install the polyfill if needed.
1518
+ */
1519
+ static install ( ) : any ;
1520
+ }
1521
+ }
1522
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1523
+ declare namespace shaka.polyfill {
1524
+ class PatchedMediaKeysApple {
1525
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1526
+ /**
1527
+ * Installs the polyfill if needed.
1528
+ */
1529
+ static install ( ) : any ;
1530
+ }
1531
+ }
1532
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1533
+ declare namespace shaka.polyfill {
1534
+ class PatchedMediaKeysMs {
1535
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1536
+ /**
1537
+ * Installs the polyfill if needed.
1538
+ */
1539
+ static install ( ) : any ;
1540
+ }
1541
+ }
1542
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1543
+ declare namespace shaka.polyfill {
1544
+ class PatchedMediaKeysNop {
1545
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1546
+ /**
1547
+ * Installs the polyfill if needed.
1548
+ */
1549
+ static install ( ) : any ;
1550
+ }
1551
+ }
1552
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1553
+ declare namespace shaka.polyfill {
1554
+ class PatchedMediaKeysWebkit {
1555
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1556
+ /**
1557
+ * Installs the polyfill if needed.
1558
+ */
1559
+ static install ( ) : any ;
1560
+ }
1561
+ }
1562
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1563
+ declare namespace shaka.polyfill {
1564
+ class PiPWebkit {
1565
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1566
+ /**
1567
+ * Install the polyfill if needed.
1568
+ */
1569
+ static install ( ) : any ;
1570
+ }
1571
+ }
1572
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1573
+ declare namespace shaka.polyfill {
1574
+ class StorageEstimate {
1575
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1576
+ /**
1577
+ * Install the polyfill if needed.
1578
+ */
1579
+ static install ( ) : any ;
1580
+ }
1581
+ }
1582
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1583
+ declare namespace shaka.polyfill {
1584
+ class VTTCue {
1585
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1586
+ /**
1587
+ * Install the polyfill if needed.
1588
+ */
1589
+ static install ( ) : any ;
1590
+ }
1591
+ }
1592
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1593
+ declare namespace shaka.polyfill {
1594
+ class VideoPlayPromise {
1595
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1596
+ /**
1597
+ * Install the polyfill if needed.
1598
+ */
1599
+ static install ( ) : any ;
1600
+ }
1601
+ }
1602
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1603
+ declare namespace shaka.polyfill {
1604
+ class VideoPlaybackQuality {
1605
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1606
+ /**
1607
+ * Install the polyfill if needed.
1608
+ */
1609
+ static install ( ) : any ;
1610
+ }
1611
+ }
1612
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
1440
1613
  declare namespace shaka.text {
1441
1614
  class Cue implements shaka.extern.Cue {
1442
1615
  private noStructuralTyping_shaka_text_Cue : any;
@@ -1457,6 +1630,7 @@ declare namespace shaka.text {
1457
1630
  fontStyle : any ;
1458
1631
  fontWeight : any ;
1459
1632
  id : any ;
1633
+ isContainer : any ;
1460
1634
  letterSpacing : any ;
1461
1635
  line : any ;
1462
1636
  /**
@@ -1925,17 +2099,9 @@ declare namespace shaka.ui {
1925
2099
  * If a string is not available, it will return the localized
1926
2100
  * form in the closest related locale.
1927
2101
  */
1928
- class Localization implements EventTarget {
2102
+ class Localization extends shaka.util.FakeEventTarget {
1929
2103
  private noStructuralTyping_shaka_ui_Localization : any;
1930
- /**
1931
- * Localization system provided by the shaka ui library.
1932
- * It can be used to store the various localized forms of
1933
- * strings that are expected to be displayed to the user.
1934
- * If a string is not available, it will return the localized
1935
- * form in the closest related locale.
1936
- */
1937
2104
  constructor (fallbackLocale : string ) ;
1938
- addEventListener (type : any , listener : any , options : any ) : any ;
1939
2105
  /**
1940
2106
  * Request the localization system to change which locale it serves. If any of
1941
2107
  * of the preferred locales cannot be found, the localization system will fire
@@ -1944,7 +2110,6 @@ declare namespace shaka.ui {
1944
2110
  * @param locales The locale codes for the requested locales in order of preference.
1945
2111
  */
1946
2112
  changeLocale (locales : Iterable < string > ) : any ;
1947
- dispatchEvent (event : any ) : any ;
1948
2113
  /**
1949
2114
  * Insert a set of localizations for a single locale. This will amend the
1950
2115
  * existing localizations for the given locale.
@@ -1953,7 +2118,7 @@ declare namespace shaka.ui {
1953
2118
  * @param conflictResolution The strategy used to resolve conflicts when the id of an existing entry matches the id of a new entry. Default to |USE_NEW|, where the new entry will replace the old entry.
1954
2119
  */
1955
2120
  insert (locale : string , localizations : Map < string , string > , conflictResolution ? : shaka.ui.Localization.ConflictResolution ) : shaka.ui.Localization ;
1956
- removeEventListener (type : any , listener : any , options : any ) : any ;
2121
+ release ( ) : any ;
1957
2122
  /**
1958
2123
  * Request the localized string under the given id. If there is no localized
1959
2124
  * version of the string, then the fallback localization will be given
@@ -2628,12 +2793,12 @@ declare namespace shaka.util {
2628
2793
  declare namespace shaka.util {
2629
2794
  class FakeEvent extends Event {
2630
2795
  private noStructuralTyping_shaka_util_FakeEvent : any;
2631
- constructor (type : string , dict ? : object | null ) ;
2796
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2632
2797
  }
2633
2798
  }
2634
2799
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.externs.js
2635
2800
  declare namespace shaka.util {
2636
- class FakeEventTarget implements EventTarget {
2801
+ class FakeEventTarget implements EventTarget , shaka.util.IReleasable {
2637
2802
  private noStructuralTyping_shaka_util_FakeEventTarget : any;
2638
2803
  /**
2639
2804
  * Add an event listener to this object.
@@ -2653,6 +2818,7 @@ declare namespace shaka.util {
2653
2818
  * @param listener The callback or listener object to invoke.
2654
2819
  */
2655
2820
  listenToAllEvents (listener : EventListener | null | ( (a : Event ) => any ) ) : any ;
2821
+ release ( ) : any ;
2656
2822
  /**
2657
2823
  * Remove an event listener from this object.
2658
2824
  * @param type The event type for which you wish to remove a listener.
@@ -3055,6 +3221,7 @@ declare namespace google.ima {
3055
3221
  constructor (container : google.ima.AdDisplayContainer ) ;
3056
3222
  addEventListener ( ) : any ;
3057
3223
  contentComplete ( ) : any ;
3224
+ destroy ( ) : any ;
3058
3225
  dispatchEvent ( ) : any ;
3059
3226
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
3060
3227
  removeEventListener ( ) : any ;
@@ -3066,6 +3233,7 @@ declare namespace google.ima {
3066
3233
  class AdsManager implements EventTarget {
3067
3234
  private noStructuralTyping_google_ima_AdsManager : any;
3068
3235
  addEventListener ( ) : any ;
3236
+ destroy ( ) : any ;
3069
3237
  dispatchEvent ( ) : any ;
3070
3238
  getAdSkippableState ( ) : boolean ;
3071
3239
  getCuePoints ( ) : number [] ;
@@ -3435,6 +3603,10 @@ declare namespace shaka.extern.AbrManager {
3435
3603
  type SwitchCallback = (a : shaka.extern.Variant , b ? : boolean , c ? : number ) => any ;
3436
3604
  }
3437
3605
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/ads.js
3606
+ declare namespace shaka.extern {
3607
+ type AdCuePoint = { end : number | null , start : number } ;
3608
+ }
3609
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/ads.js
3438
3610
  declare namespace shaka.extern {
3439
3611
  type AdsStats = { loadTimes : number [] , playedCompletely : number , skipped : number , started : number } ;
3440
3612
  }
@@ -3474,6 +3646,7 @@ declare namespace shaka.extern {
3474
3646
  * in the player.
3475
3647
  */
3476
3648
  interface IAdManager extends EventTarget {
3649
+ getServerSideCuePoints ( ) : shaka.extern.AdCuePoint [] ;
3477
3650
  /**
3478
3651
  * Get statistics for the current playback session. If the player is not
3479
3652
  * playing content, this will return an empty stats object.
@@ -3485,6 +3658,7 @@ declare namespace shaka.extern {
3485
3658
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
3486
3659
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3487
3660
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3661
+ release ( ) : any ;
3488
3662
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3489
3663
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3490
3664
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3950,7 +4124,7 @@ declare namespace shaka.extern {
3950
4124
  }
3951
4125
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3952
4126
  declare namespace shaka.extern {
3953
- type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4127
+ type Thumbnail = { duration : number , height : number , imageHeight : number , imageWidth : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3954
4128
  }
3955
4129
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3956
4130
  declare namespace shaka.extern {
@@ -4027,6 +4201,13 @@ declare namespace shaka.extern {
4027
4201
  * Id of the cue.
4028
4202
  */
4029
4203
  id : string ;
4204
+ /**
4205
+ * If true, this represents a container element that is "above" the main
4206
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
4207
+ * in a TTML file. This controls the flow of the final cues; any nested cues
4208
+ * within an "isContainer" cue will be laid out as separate lines.
4209
+ */
4210
+ isContainer : boolean ;
4030
4211
  /**
4031
4212
  * Text letter spacing as a CSS letter-spacing value.
4032
4213
  */
@@ -473,8 +473,9 @@ declare namespace shaka.ads {
473
473
  /**
474
474
  * A class responsible for ad-related interactions.
475
475
  */
476
- class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager {
476
+ class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager , shaka.util.IReleasable {
477
477
  private noStructuralTyping_shaka_ads_AdManager : any;
478
+ getServerSideCuePoints ( ) : shaka.extern.AdCuePoint [] ;
478
479
  getStats ( ) : shaka.extern.AdsStats ;
479
480
  initClientSide (adContainer : any , video : any ) : any ;
480
481
  initServerSide (adContainer : any , video : any ) : any ;
@@ -482,6 +483,7 @@ declare namespace shaka.ads {
482
483
  onCueMetadataChange (value : any ) : any ;
483
484
  onDashTimedMetadata (region : any ) : any ;
484
485
  onHlsTimedMetadata (metadata : any , timestamp : any ) : any ;
486
+ release ( ) : any ;
485
487
  replaceServerSideAdTagParameters (adTagParameters : any ) : any ;
486
488
  requestClientSideAds (imaRequest : any ) : any ;
487
489
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -1117,7 +1119,7 @@ declare namespace shaka.media {
1117
1119
  */
1118
1120
  class SegmentReference {
1119
1121
  private noStructuralTyping_shaka_media_SegmentReference : any;
1120
- constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null ) ;
1122
+ constructor (startTime : number , endTime : number , uris : ( ) => string [] , startByte : number , endByte : number | null , initSegmentReference : shaka.media.InitSegmentReference | null , timestampOffset : number , appendWindowStart : number , appendWindowEnd : number , partialReferences ? : shaka.media.SegmentReference [] , tilesLayout ? : string | null , tileDuration ? : number | null ) ;
1121
1123
  /**
1122
1124
  * Returns the offset from the start of the resource to the end of the
1123
1125
  * segment, inclusive. A value of null indicates that the segment extends to
@@ -1137,6 +1139,11 @@ declare namespace shaka.media {
1137
1139
  * Returns the segment's start time in seconds.
1138
1140
  */
1139
1141
  getStartTime ( ) : number ;
1142
+ /**
1143
+ * Returns the segment's explicit tile duration.
1144
+ * Only defined in image segments.
1145
+ */
1146
+ getTileDuration ( ) : number | null ;
1140
1147
  /**
1141
1148
  * Returns the segment's tiles layout. Only defined in image segments.
1142
1149
  */
@@ -1437,6 +1444,172 @@ declare namespace shaka {
1437
1444
  }
1438
1445
  }
1439
1446
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1447
+ declare namespace shaka.polyfill {
1448
+ class Aria {
1449
+ private noStructuralTyping_shaka_polyfill_Aria : any;
1450
+ /**
1451
+ * Install the polyfill if needed.
1452
+ */
1453
+ static install ( ) : any ;
1454
+ }
1455
+ }
1456
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1457
+ declare namespace shaka.polyfill {
1458
+ class EncryptionScheme {
1459
+ private noStructuralTyping_shaka_polyfill_EncryptionScheme : any;
1460
+ /**
1461
+ * Install the polyfill if needed.
1462
+ */
1463
+ static install ( ) : any ;
1464
+ }
1465
+ }
1466
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1467
+ declare namespace shaka.polyfill {
1468
+ class Fullscreen {
1469
+ private noStructuralTyping_shaka_polyfill_Fullscreen : any;
1470
+ /**
1471
+ * Install the polyfill if needed.
1472
+ */
1473
+ static install ( ) : any ;
1474
+ }
1475
+ }
1476
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1477
+ declare namespace shaka.polyfill {
1478
+ class MathRound {
1479
+ private noStructuralTyping_shaka_polyfill_MathRound : any;
1480
+ /**
1481
+ * Install the polyfill if needed.
1482
+ */
1483
+ static install ( ) : any ;
1484
+ }
1485
+ }
1486
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1487
+ declare namespace shaka.polyfill {
1488
+ class MediaCapabilities {
1489
+ private noStructuralTyping_shaka_polyfill_MediaCapabilities : any;
1490
+ /**
1491
+ * Install the polyfill if needed.
1492
+ */
1493
+ static install ( ) : any ;
1494
+ /**
1495
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1496
+ * garbage-collecting the polyfilled method on it. We make it public and export
1497
+ * it to ensure that it is not stripped out by the compiler.
1498
+ */
1499
+ static originalMcap : any | null ;
1500
+ }
1501
+ }
1502
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1503
+ declare namespace shaka.polyfill {
1504
+ class MediaSource {
1505
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1506
+ /**
1507
+ * Install the polyfill if needed.
1508
+ */
1509
+ static install ( ) : any ;
1510
+ }
1511
+ }
1512
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1513
+ declare namespace shaka.polyfill {
1514
+ class Orientation {
1515
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1516
+ /**
1517
+ * Install the polyfill if needed.
1518
+ */
1519
+ static install ( ) : any ;
1520
+ }
1521
+ }
1522
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1523
+ declare namespace shaka.polyfill {
1524
+ class PatchedMediaKeysApple {
1525
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1526
+ /**
1527
+ * Installs the polyfill if needed.
1528
+ */
1529
+ static install ( ) : any ;
1530
+ }
1531
+ }
1532
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1533
+ declare namespace shaka.polyfill {
1534
+ class PatchedMediaKeysMs {
1535
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1536
+ /**
1537
+ * Installs the polyfill if needed.
1538
+ */
1539
+ static install ( ) : any ;
1540
+ }
1541
+ }
1542
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1543
+ declare namespace shaka.polyfill {
1544
+ class PatchedMediaKeysNop {
1545
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1546
+ /**
1547
+ * Installs the polyfill if needed.
1548
+ */
1549
+ static install ( ) : any ;
1550
+ }
1551
+ }
1552
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1553
+ declare namespace shaka.polyfill {
1554
+ class PatchedMediaKeysWebkit {
1555
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1556
+ /**
1557
+ * Installs the polyfill if needed.
1558
+ */
1559
+ static install ( ) : any ;
1560
+ }
1561
+ }
1562
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1563
+ declare namespace shaka.polyfill {
1564
+ class PiPWebkit {
1565
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1566
+ /**
1567
+ * Install the polyfill if needed.
1568
+ */
1569
+ static install ( ) : any ;
1570
+ }
1571
+ }
1572
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1573
+ declare namespace shaka.polyfill {
1574
+ class StorageEstimate {
1575
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1576
+ /**
1577
+ * Install the polyfill if needed.
1578
+ */
1579
+ static install ( ) : any ;
1580
+ }
1581
+ }
1582
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1583
+ declare namespace shaka.polyfill {
1584
+ class VTTCue {
1585
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1586
+ /**
1587
+ * Install the polyfill if needed.
1588
+ */
1589
+ static install ( ) : any ;
1590
+ }
1591
+ }
1592
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1593
+ declare namespace shaka.polyfill {
1594
+ class VideoPlayPromise {
1595
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1596
+ /**
1597
+ * Install the polyfill if needed.
1598
+ */
1599
+ static install ( ) : any ;
1600
+ }
1601
+ }
1602
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1603
+ declare namespace shaka.polyfill {
1604
+ class VideoPlaybackQuality {
1605
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1606
+ /**
1607
+ * Install the polyfill if needed.
1608
+ */
1609
+ static install ( ) : any ;
1610
+ }
1611
+ }
1612
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
1440
1613
  declare namespace shaka.text {
1441
1614
  class Cue implements shaka.extern.Cue {
1442
1615
  private noStructuralTyping_shaka_text_Cue : any;
@@ -1457,6 +1630,7 @@ declare namespace shaka.text {
1457
1630
  fontStyle : any ;
1458
1631
  fontWeight : any ;
1459
1632
  id : any ;
1633
+ isContainer : any ;
1460
1634
  letterSpacing : any ;
1461
1635
  line : any ;
1462
1636
  /**
@@ -1925,17 +2099,9 @@ declare namespace shaka.ui {
1925
2099
  * If a string is not available, it will return the localized
1926
2100
  * form in the closest related locale.
1927
2101
  */
1928
- class Localization implements EventTarget {
2102
+ class Localization extends shaka.util.FakeEventTarget {
1929
2103
  private noStructuralTyping_shaka_ui_Localization : any;
1930
- /**
1931
- * Localization system provided by the shaka ui library.
1932
- * It can be used to store the various localized forms of
1933
- * strings that are expected to be displayed to the user.
1934
- * If a string is not available, it will return the localized
1935
- * form in the closest related locale.
1936
- */
1937
2104
  constructor (fallbackLocale : string ) ;
1938
- addEventListener (type : any , listener : any , options : any ) : any ;
1939
2105
  /**
1940
2106
  * Request the localization system to change which locale it serves. If any of
1941
2107
  * of the preferred locales cannot be found, the localization system will fire
@@ -1944,7 +2110,6 @@ declare namespace shaka.ui {
1944
2110
  * @param locales The locale codes for the requested locales in order of preference.
1945
2111
  */
1946
2112
  changeLocale (locales : Iterable < string > ) : any ;
1947
- dispatchEvent (event : any ) : any ;
1948
2113
  /**
1949
2114
  * Insert a set of localizations for a single locale. This will amend the
1950
2115
  * existing localizations for the given locale.
@@ -1953,7 +2118,7 @@ declare namespace shaka.ui {
1953
2118
  * @param conflictResolution The strategy used to resolve conflicts when the id of an existing entry matches the id of a new entry. Default to |USE_NEW|, where the new entry will replace the old entry.
1954
2119
  */
1955
2120
  insert (locale : string , localizations : Map < string , string > , conflictResolution ? : shaka.ui.Localization.ConflictResolution ) : shaka.ui.Localization ;
1956
- removeEventListener (type : any , listener : any , options : any ) : any ;
2121
+ release ( ) : any ;
1957
2122
  /**
1958
2123
  * Request the localized string under the given id. If there is no localized
1959
2124
  * version of the string, then the fallback localization will be given
@@ -2628,12 +2793,12 @@ declare namespace shaka.util {
2628
2793
  declare namespace shaka.util {
2629
2794
  class FakeEvent extends Event {
2630
2795
  private noStructuralTyping_shaka_util_FakeEvent : any;
2631
- constructor (type : string , dict ? : object | null ) ;
2796
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2632
2797
  }
2633
2798
  }
2634
2799
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.ui.debug.externs.js
2635
2800
  declare namespace shaka.util {
2636
- class FakeEventTarget implements EventTarget {
2801
+ class FakeEventTarget implements EventTarget , shaka.util.IReleasable {
2637
2802
  private noStructuralTyping_shaka_util_FakeEventTarget : any;
2638
2803
  /**
2639
2804
  * Add an event listener to this object.
@@ -2653,6 +2818,7 @@ declare namespace shaka.util {
2653
2818
  * @param listener The callback or listener object to invoke.
2654
2819
  */
2655
2820
  listenToAllEvents (listener : EventListener | null | ( (a : Event ) => any ) ) : any ;
2821
+ release ( ) : any ;
2656
2822
  /**
2657
2823
  * Remove an event listener from this object.
2658
2824
  * @param type The event type for which you wish to remove a listener.
@@ -3055,6 +3221,7 @@ declare namespace google.ima {
3055
3221
  constructor (container : google.ima.AdDisplayContainer ) ;
3056
3222
  addEventListener ( ) : any ;
3057
3223
  contentComplete ( ) : any ;
3224
+ destroy ( ) : any ;
3058
3225
  dispatchEvent ( ) : any ;
3059
3226
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
3060
3227
  removeEventListener ( ) : any ;
@@ -3066,6 +3233,7 @@ declare namespace google.ima {
3066
3233
  class AdsManager implements EventTarget {
3067
3234
  private noStructuralTyping_google_ima_AdsManager : any;
3068
3235
  addEventListener ( ) : any ;
3236
+ destroy ( ) : any ;
3069
3237
  dispatchEvent ( ) : any ;
3070
3238
  getAdSkippableState ( ) : boolean ;
3071
3239
  getCuePoints ( ) : number [] ;
@@ -3435,6 +3603,10 @@ declare namespace shaka.extern.AbrManager {
3435
3603
  type SwitchCallback = (a : shaka.extern.Variant , b ? : boolean , c ? : number ) => any ;
3436
3604
  }
3437
3605
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/ads.js
3606
+ declare namespace shaka.extern {
3607
+ type AdCuePoint = { end : number | null , start : number } ;
3608
+ }
3609
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/ads.js
3438
3610
  declare namespace shaka.extern {
3439
3611
  type AdsStats = { loadTimes : number [] , playedCompletely : number , skipped : number , started : number } ;
3440
3612
  }
@@ -3474,6 +3646,7 @@ declare namespace shaka.extern {
3474
3646
  * in the player.
3475
3647
  */
3476
3648
  interface IAdManager extends EventTarget {
3649
+ getServerSideCuePoints ( ) : shaka.extern.AdCuePoint [] ;
3477
3650
  /**
3478
3651
  * Get statistics for the current playback session. If the player is not
3479
3652
  * playing content, this will return an empty stats object.
@@ -3485,6 +3658,7 @@ declare namespace shaka.extern {
3485
3658
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
3486
3659
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3487
3660
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3661
+ release ( ) : any ;
3488
3662
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3489
3663
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3490
3664
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3950,7 +4124,7 @@ declare namespace shaka.extern {
3950
4124
  }
3951
4125
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3952
4126
  declare namespace shaka.extern {
3953
- type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
4127
+ type Thumbnail = { duration : number , height : number , imageHeight : number , imageWidth : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3954
4128
  }
3955
4129
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3956
4130
  declare namespace shaka.extern {
@@ -4027,6 +4201,13 @@ declare namespace shaka.extern {
4027
4201
  * Id of the cue.
4028
4202
  */
4029
4203
  id : string ;
4204
+ /**
4205
+ * If true, this represents a container element that is "above" the main
4206
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
4207
+ * in a TTML file. This controls the flow of the final cues; any nested cues
4208
+ * within an "isContainer" cue will be laid out as separate lines.
4209
+ */
4210
+ isContainer : boolean ;
4030
4211
  /**
4031
4212
  * Text letter spacing as a CSS letter-spacing value.
4032
4213
  */