shaka-player 3.1.1 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/AUTHORS +7 -2
  2. package/CHANGELOG.md +199 -0
  3. package/CONTRIBUTORS +9 -3
  4. package/build/generateExterns.js +1 -1
  5. package/build/misspellings.txt +1 -0
  6. package/build/shakaBuildHelpers.py +6 -5
  7. package/build/subprocessWindowsPatch.py +103 -0
  8. package/demo/common/assets.js +1 -1
  9. package/dist/controls.css +2 -2
  10. package/dist/controls.css.map +1 -1
  11. package/dist/demo.compiled.debug.js +1 -1
  12. package/dist/demo.compiled.js +1 -1
  13. package/dist/deps.js +7 -7
  14. package/dist/locales.js +35 -33
  15. package/dist/receiver.compiled.debug.js +1 -1
  16. package/dist/receiver.compiled.js +1 -1
  17. package/dist/shaka-player.compiled.d.ts +171 -3
  18. package/dist/shaka-player.compiled.debug.d.ts +171 -3
  19. package/dist/shaka-player.compiled.debug.externs.js +179 -1
  20. package/dist/shaka-player.compiled.debug.js +365 -344
  21. package/dist/shaka-player.compiled.debug.map +3 -3
  22. package/dist/shaka-player.compiled.externs.js +179 -1
  23. package/dist/shaka-player.compiled.js +806 -798
  24. package/dist/shaka-player.compiled.map +3 -3
  25. package/dist/shaka-player.ui.d.ts +171 -3
  26. package/dist/shaka-player.ui.debug.d.ts +171 -3
  27. package/dist/shaka-player.ui.debug.externs.js +181 -3
  28. package/dist/shaka-player.ui.debug.js +458 -435
  29. package/dist/shaka-player.ui.debug.map +4 -4
  30. package/dist/shaka-player.ui.externs.js +181 -3
  31. package/dist/shaka-player.ui.js +927 -918
  32. package/dist/shaka-player.ui.map +4 -4
  33. package/docs/tutorials/fairplay.md +1 -1
  34. package/docs/tutorials/faq.md +14 -0
  35. package/docs/tutorials/index.json +2 -2
  36. package/docs/tutorials/upgrade-v3.md +38 -0
  37. package/docs/tutorials/upgrade.md +3 -3
  38. package/externs/ima.js +4 -0
  39. package/externs/shaka/ads.js +2 -0
  40. package/externs/shaka/player.js +6 -0
  41. package/externs/shaka/text.js +10 -0
  42. package/karma.conf.js +1 -0
  43. package/lib/ads/ad_manager.js +29 -11
  44. package/lib/ads/client_side_ad_manager.js +76 -86
  45. package/lib/ads/server_side_ad_manager.js +26 -11
  46. package/lib/cast/cast_proxy.js +3 -2
  47. package/lib/cast/cast_receiver.js +2 -1
  48. package/lib/cast/cast_sender.js +2 -2
  49. package/lib/cea/sei_processor.js +24 -17
  50. package/lib/dash/dash_parser.js +100 -5
  51. package/lib/dash/segment_list.js +1 -1
  52. package/lib/dash/segment_template.js +7 -4
  53. package/lib/hls/hls_parser.js +44 -17
  54. package/lib/media/closed_caption_parser.js +3 -1
  55. package/lib/media/content_workarounds.js +12 -0
  56. package/lib/media/drm_engine.js +20 -1
  57. package/lib/media/gap_jumping_controller.js +8 -4
  58. package/lib/media/media_source_engine.js +1 -2
  59. package/lib/media/playhead.js +1 -1
  60. package/lib/media/presentation_timeline.js +3 -1
  61. package/lib/media/segment_reference.js +8 -0
  62. package/lib/media/streaming_engine.js +28 -19
  63. package/lib/net/networking_engine.js +2 -1
  64. package/lib/player.js +108 -54
  65. package/lib/polyfill/encryption_scheme.js +2 -0
  66. package/lib/polyfill/fullscreen.js +2 -0
  67. package/lib/polyfill/mathround.js +2 -0
  68. package/lib/polyfill/media_capabilities.js +76 -22
  69. package/lib/polyfill/mediasource.js +8 -0
  70. package/lib/polyfill/orientation.js +3 -1
  71. package/lib/polyfill/patchedmediakeys_apple.js +6 -4
  72. package/lib/polyfill/patchedmediakeys_ms.js +6 -4
  73. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  74. package/lib/polyfill/patchedmediakeys_webkit.js +6 -4
  75. package/lib/polyfill/pip_webkit.js +2 -0
  76. package/lib/polyfill/storage_estimate.js +2 -0
  77. package/lib/polyfill/video_play_promise.js +2 -0
  78. package/lib/polyfill/videoplaybackquality.js +2 -0
  79. package/lib/polyfill/vttcue.js +2 -0
  80. package/lib/text/cue.js +17 -0
  81. package/lib/text/mp4_ttml_parser.js +3 -0
  82. package/lib/text/text_engine.js +14 -2
  83. package/lib/text/ttml_text_parser.js +135 -87
  84. package/lib/text/ui_text_displayer.js +233 -83
  85. package/lib/text/vtt_text_parser.js +4 -2
  86. package/lib/util/fake_event.js +53 -7
  87. package/lib/util/mp4_box_parsers.js +1 -1
  88. package/lib/util/periods.js +111 -35
  89. package/lib/util/platform.js +13 -1
  90. package/lib/util/stream_utils.js +79 -10
  91. package/lib/util/xml_utils.js +19 -0
  92. package/package.json +2 -2
  93. package/test/cast/cast_proxy_unit.js +12 -6
  94. package/test/cast/cast_receiver_integration.js +1 -1
  95. package/test/cast/cast_utils_unit.js +1 -1
  96. package/test/cea/mp4_cea_parser_unit.js +26 -0
  97. package/test/dash/dash_parser_live_unit.js +1 -0
  98. package/test/dash/dash_parser_manifest_unit.js +220 -2
  99. package/test/dash/dash_parser_segment_template_unit.js +3 -3
  100. package/test/hls/hls_parser_unit.js +5 -1
  101. package/test/media/closed_caption_parser_unit.js +20 -0
  102. package/test/media/drm_engine_unit.js +56 -0
  103. package/test/media/playhead_unit.js +27 -1
  104. package/test/media/presentation_timeline_unit.js +19 -0
  105. package/test/media/streaming_engine_integration.js +2 -1
  106. package/test/media/streaming_engine_unit.js +148 -3
  107. package/test/player_integration.js +38 -0
  108. package/test/player_unit.js +101 -0
  109. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  110. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  111. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  112. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  113. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  114. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  115. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  116. package/test/test/assets/3675/dash_0.mpd +30 -0
  117. package/test/test/assets/3675/dash_1.mpd +30 -0
  118. package/test/test/assets/3675/dash_2.mpd +30 -0
  119. package/test/test/assets/3675/dash_3.mpd +30 -0
  120. package/test/test/assets/3675/dash_4.mpd +30 -0
  121. package/test/test/assets/3675/dash_5.mpd +26 -0
  122. package/test/test/assets/3675/init-stream0.m4s +0 -0
  123. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  124. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  125. package/test/test/util/fake_ad_manager.js +4 -1
  126. package/test/test/util/simple_fakes.js +5 -3
  127. package/test/test/util/ttml_utils.js +81 -0
  128. package/test/text/mp4_ttml_parser_unit.js +11 -18
  129. package/test/text/ttml_text_parser_unit.js +542 -220
  130. package/test/text/ui_text_displayer_unit.js +95 -18
  131. package/test/text/vtt_text_parser_unit.js +17 -1
  132. package/test/ui/localization_unit.js +15 -14
  133. package/test/ui/text_displayer_layout_unit.js +52 -1
  134. package/test/util/mp4_box_parsers_unit.js +28 -0
  135. package/test/util/periods_unit.js +190 -2
  136. package/test/util/stream_utils_unit.js +59 -2
  137. package/ui/airplay_button.js +5 -0
  138. package/ui/big_play_button.js +10 -0
  139. package/ui/cast_button.js +2 -3
  140. package/ui/controls.js +8 -6
  141. package/ui/less/buttons.less +0 -4
  142. package/ui/less/containers.less +10 -5
  143. package/ui/locales/en.json +1 -0
  144. package/ui/locales/ru.json +6 -6
  145. package/ui/locales/source.json +4 -0
  146. package/ui/localization.js +28 -51
  147. package/ui/pip_button.js +2 -3
  148. package/ui/play_button.js +10 -10
  149. package/ui/small_play_button.js +12 -0
  150. package/ui/text_selection.js +1 -0
  151. package/docs/tutorials/upgrade-v2-4.md +0 -481
@@ -451,7 +451,7 @@ declare namespace shaka.ads {
451
451
  /**
452
452
  * A class responsible for ad-related interactions.
453
453
  */
454
- class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager {
454
+ class AdManager extends shaka.util.FakeEventTarget implements shaka.extern.IAdManager , shaka.util.IReleasable {
455
455
  private noStructuralTyping_shaka_ads_AdManager : any;
456
456
  getStats ( ) : shaka.extern.AdsStats ;
457
457
  initClientSide (adContainer : any , video : any ) : any ;
@@ -460,6 +460,7 @@ declare namespace shaka.ads {
460
460
  onCueMetadataChange (value : any ) : any ;
461
461
  onDashTimedMetadata (region : any ) : any ;
462
462
  onHlsTimedMetadata (metadata : any , timestamp : any ) : any ;
463
+ release ( ) : any ;
463
464
  replaceServerSideAdTagParameters (adTagParameters : any ) : any ;
464
465
  requestClientSideAds (imaRequest : any ) : any ;
465
466
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -1410,6 +1411,162 @@ declare namespace shaka {
1410
1411
  }
1411
1412
  }
1412
1413
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.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
+ * A copy of the MediaCapabilities instance, to prevent Safari from
1453
+ * garbage-collecting the polyfilled method on it. We make it public and export
1454
+ * it to ensure that it is not stripped out by the compiler.
1455
+ */
1456
+ static originalMcap : any | null ;
1457
+ }
1458
+ }
1459
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1460
+ declare namespace shaka.polyfill {
1461
+ class MediaSource {
1462
+ private noStructuralTyping_shaka_polyfill_MediaSource : any;
1463
+ /**
1464
+ * Install the polyfill if needed.
1465
+ */
1466
+ static install ( ) : any ;
1467
+ }
1468
+ }
1469
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1470
+ declare namespace shaka.polyfill {
1471
+ class Orientation {
1472
+ private noStructuralTyping_shaka_polyfill_Orientation : any;
1473
+ /**
1474
+ * Install the polyfill if needed.
1475
+ */
1476
+ static install ( ) : any ;
1477
+ }
1478
+ }
1479
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1480
+ declare namespace shaka.polyfill {
1481
+ class PatchedMediaKeysApple {
1482
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysApple : any;
1483
+ /**
1484
+ * Installs the polyfill if needed.
1485
+ */
1486
+ static install ( ) : any ;
1487
+ }
1488
+ }
1489
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1490
+ declare namespace shaka.polyfill {
1491
+ class PatchedMediaKeysMs {
1492
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysMs : any;
1493
+ /**
1494
+ * Installs the polyfill if needed.
1495
+ */
1496
+ static install ( ) : any ;
1497
+ }
1498
+ }
1499
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1500
+ declare namespace shaka.polyfill {
1501
+ class PatchedMediaKeysNop {
1502
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysNop : any;
1503
+ /**
1504
+ * Installs the polyfill if needed.
1505
+ */
1506
+ static install ( ) : any ;
1507
+ }
1508
+ }
1509
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1510
+ declare namespace shaka.polyfill {
1511
+ class PatchedMediaKeysWebkit {
1512
+ private noStructuralTyping_shaka_polyfill_PatchedMediaKeysWebkit : any;
1513
+ /**
1514
+ * Installs the polyfill if needed.
1515
+ */
1516
+ static install ( ) : any ;
1517
+ }
1518
+ }
1519
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1520
+ declare namespace shaka.polyfill {
1521
+ class PiPWebkit {
1522
+ private noStructuralTyping_shaka_polyfill_PiPWebkit : any;
1523
+ /**
1524
+ * Install the polyfill if needed.
1525
+ */
1526
+ static install ( ) : any ;
1527
+ }
1528
+ }
1529
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1530
+ declare namespace shaka.polyfill {
1531
+ class StorageEstimate {
1532
+ private noStructuralTyping_shaka_polyfill_StorageEstimate : any;
1533
+ /**
1534
+ * Install the polyfill if needed.
1535
+ */
1536
+ static install ( ) : any ;
1537
+ }
1538
+ }
1539
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1540
+ declare namespace shaka.polyfill {
1541
+ class VTTCue {
1542
+ private noStructuralTyping_shaka_polyfill_VTTCue : any;
1543
+ /**
1544
+ * Install the polyfill if needed.
1545
+ */
1546
+ static install ( ) : any ;
1547
+ }
1548
+ }
1549
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1550
+ declare namespace shaka.polyfill {
1551
+ class VideoPlayPromise {
1552
+ private noStructuralTyping_shaka_polyfill_VideoPlayPromise : any;
1553
+ /**
1554
+ * Install the polyfill if needed.
1555
+ */
1556
+ static install ( ) : any ;
1557
+ }
1558
+ }
1559
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1560
+ declare namespace shaka.polyfill {
1561
+ class VideoPlaybackQuality {
1562
+ private noStructuralTyping_shaka_polyfill_VideoPlaybackQuality : any;
1563
+ /**
1564
+ * Install the polyfill if needed.
1565
+ */
1566
+ static install ( ) : any ;
1567
+ }
1568
+ }
1569
+ // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
1413
1570
  declare namespace shaka.text {
1414
1571
  class Cue implements shaka.extern.Cue {
1415
1572
  private noStructuralTyping_shaka_text_Cue : any;
@@ -1430,6 +1587,7 @@ declare namespace shaka.text {
1430
1587
  fontStyle : any ;
1431
1588
  fontWeight : any ;
1432
1589
  id : any ;
1590
+ isContainer : any ;
1433
1591
  letterSpacing : any ;
1434
1592
  line : any ;
1435
1593
  /**
@@ -2141,7 +2299,7 @@ declare namespace shaka.util {
2141
2299
  declare namespace shaka.util {
2142
2300
  class FakeEvent extends Event {
2143
2301
  private noStructuralTyping_shaka_util_FakeEvent : any;
2144
- constructor (type : string , dict ? : object | null ) ;
2302
+ constructor (type : string , dict ? : Map < string , object | null > | null ) ;
2145
2303
  }
2146
2304
  }
2147
2305
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/dist/shaka-player.compiled.debug.externs.js
@@ -2568,6 +2726,7 @@ declare namespace google.ima {
2568
2726
  constructor (container : google.ima.AdDisplayContainer ) ;
2569
2727
  addEventListener ( ) : any ;
2570
2728
  contentComplete ( ) : any ;
2729
+ destroy ( ) : any ;
2571
2730
  dispatchEvent ( ) : any ;
2572
2731
  getSettings ( ) : google.ima.ImaSdkSettings | null ;
2573
2732
  removeEventListener ( ) : any ;
@@ -2579,6 +2738,7 @@ declare namespace google.ima {
2579
2738
  class AdsManager implements EventTarget {
2580
2739
  private noStructuralTyping_google_ima_AdsManager : any;
2581
2740
  addEventListener ( ) : any ;
2741
+ destroy ( ) : any ;
2582
2742
  dispatchEvent ( ) : any ;
2583
2743
  getAdSkippableState ( ) : boolean ;
2584
2744
  getCuePoints ( ) : number [] ;
@@ -2998,6 +3158,7 @@ declare namespace shaka.extern {
2998
3158
  onCueMetadataChange (value : shaka.extern.ID3Metadata ) : any ;
2999
3159
  onDashTimedMetadata (region : shaka.extern.TimelineRegionInfo ) : any ;
3000
3160
  onHlsTimedMetadata (metadata : shaka.extern.ID3Metadata , timestampOffset : number ) : any ;
3161
+ release ( ) : any ;
3001
3162
  replaceServerSideAdTagParameters (adTagParameters : object | null ) : any ;
3002
3163
  requestClientSideAds (imaRequest : google.ima.AdsRequest ) : any ;
3003
3164
  requestServerSideStream (imaRequest : google.ima.dai.api.StreamRequest , backupUrl ? : string ) : Promise < string > ;
@@ -3459,7 +3620,7 @@ declare namespace shaka.extern {
3459
3620
  }
3460
3621
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3461
3622
  declare namespace shaka.extern {
3462
- type Thumbnail = { height : number , positionX : number , positionY : number , uris : string [] , width : number } ;
3623
+ type Thumbnail = { duration : number , height : number , positionX : number , positionY : number , startTime : number , uris : string [] , width : number } ;
3463
3624
  }
3464
3625
  // Generated from /usr/local/google/home/joeyparrish/hacking/shaka/clean/externs/shaka/player.js
3465
3626
  declare namespace shaka.extern {
@@ -3536,6 +3697,13 @@ declare namespace shaka.extern {
3536
3697
  * Id of the cue.
3537
3698
  */
3538
3699
  id : string ;
3700
+ /**
3701
+ * If true, this represents a container element that is "above" the main
3702
+ * cues. For example, the <body> and <div> tags that contain the <p> tags
3703
+ * in a TTML file. This controls the flow of the final cues; any nested cues
3704
+ * within an "isContainer" cue will be laid out as separate lines.
3705
+ */
3706
+ isContainer : boolean ;
3539
3707
  /**
3540
3708
  * Text letter spacing as a CSS letter-spacing value.
3541
3709
  */
@@ -715,6 +715,10 @@ shaka.text.Cue.prototype.id;
715
715
  * @override
716
716
  */
717
717
  shaka.text.Cue.prototype.nestedCues;
718
+ /**
719
+ * @override
720
+ */
721
+ shaka.text.Cue.prototype.isContainer;
718
722
  /**
719
723
  * @override
720
724
  */
@@ -1192,7 +1196,7 @@ shaka.util.AbortableOperation.prototype.promise;
1192
1196
  shaka.util.FakeEvent = class {
1193
1197
  /**
1194
1198
  * @param {string} type
1195
- * @param {Object=} dict
1199
+ * @param {Map.<string, Object>=} dict
1196
1200
  */
1197
1201
  constructor(type, dict) {}
1198
1202
  };
@@ -2707,6 +2711,7 @@ shaka.ads.ServerSideAd = class {
2707
2711
  /**
2708
2712
  * A class responsible for ad-related interactions.
2709
2713
  * @implements {shaka.extern.IAdManager}
2714
+ * @implements {shaka.util.IReleasable}
2710
2715
  */
2711
2716
  shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
2712
2717
  /** */
@@ -2719,6 +2724,10 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget {
2719
2724
  * @override
2720
2725
  */
2721
2726
  initClientSide(adContainer, video) {}
2727
+ /**
2728
+ * @override
2729
+ */
2730
+ release() {}
2722
2731
  /**
2723
2732
  * @override
2724
2733
  */
@@ -3357,6 +3366,175 @@ shaka.polyfill = class {
3357
3366
  */
3358
3367
  static register(polyfill, priority) {}
3359
3368
  };
3369
+ /**
3370
+ * @summary A polyfill to add support for EncryptionScheme queries in EME.
3371
+ * @see https://wicg.github.io/encrypted-media-encryption-scheme/
3372
+ * @see https://github.com/w3c/encrypted-media/pull/457
3373
+ * @see https://github.com/google/eme-encryption-scheme-polyfill
3374
+ */
3375
+ shaka.polyfill.EncryptionScheme = class {
3376
+ /**
3377
+ * Install the polyfill if needed.
3378
+ * @suppress {missingRequire}
3379
+ */
3380
+ static install() {}
3381
+ };
3382
+ /**
3383
+ * @summary A polyfill to unify fullscreen APIs across browsers.
3384
+ * Many browsers have prefixed fullscreen methods on Element and document.
3385
+ * See {@link https://mzl.la/2K0xcHo Using fullscreen mode} on MDN for more
3386
+ * information.
3387
+ */
3388
+ shaka.polyfill.Fullscreen = class {
3389
+ /**
3390
+ * Install the polyfill if needed.
3391
+ */
3392
+ static install() {}
3393
+ };
3394
+ /**
3395
+ * @summary A polyfill to patch math round bug on some browsers.
3396
+ * @see https://stackoverflow.com/q/12830742
3397
+ */
3398
+ shaka.polyfill.MathRound = class {
3399
+ /**
3400
+ * Install the polyfill if needed.
3401
+ */
3402
+ static install() {}
3403
+ };
3404
+ /**
3405
+ * @summary A polyfill to provide navigator.mediaCapabilities on all browsers.
3406
+ * This is necessary for Tizen 3, Xbox One and possibly others we have yet to
3407
+ * discover.
3408
+ */
3409
+ shaka.polyfill.MediaCapabilities = class {
3410
+ /**
3411
+ * Install the polyfill if needed.
3412
+ * @suppress {const}
3413
+ */
3414
+ static install() {}
3415
+ };
3416
+ /**
3417
+ * A copy of the MediaCapabilities instance, to prevent Safari from
3418
+ * garbage-collecting the polyfilled method on it. We make it public and export
3419
+ * it to ensure that it is not stripped out by the compiler.
3420
+ * @type {MediaCapabilities}
3421
+ */
3422
+ shaka.polyfill.MediaCapabilities.originalMcap;
3423
+ /**
3424
+ * @summary A polyfill to patch MSE bugs.
3425
+ */
3426
+ shaka.polyfill.MediaSource = class {
3427
+ /**
3428
+ * Install the polyfill if needed.
3429
+ */
3430
+ static install() {}
3431
+ };
3432
+ /**
3433
+ * @summary A polyfill for systems that do not implement screen.orientation.
3434
+ * For now, this only handles systems that implement the deprecated
3435
+ * window.orientation feature... e.g. iPad.
3436
+ */
3437
+ shaka.polyfill.Orientation = class {
3438
+ /**
3439
+ * Install the polyfill if needed.
3440
+ */
3441
+ static install() {}
3442
+ };
3443
+ /**
3444
+ * @summary A polyfill to implement modern, standardized EME on top of Apple's
3445
+ * prefixed EME in Safari.
3446
+ */
3447
+ shaka.polyfill.PatchedMediaKeysApple = class {
3448
+ /**
3449
+ * Installs the polyfill if needed.
3450
+ */
3451
+ static install() {}
3452
+ };
3453
+ /**
3454
+ * @summary A polyfill to implement
3455
+ * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015}
3456
+ * on top of ms-prefixed
3457
+ * {@link https://www.w3.org/TR/2014/WD-encrypted-media-20140218/ EME v20140218}
3458
+ */
3459
+ shaka.polyfill.PatchedMediaKeysMs = class {
3460
+ /**
3461
+ * Installs the polyfill if needed.
3462
+ */
3463
+ static install() {}
3464
+ };
3465
+ /**
3466
+ * @summary A polyfill to stub out
3467
+ * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on browsers without
3468
+ * EME.
3469
+ * All methods will fail.
3470
+ */
3471
+ shaka.polyfill.PatchedMediaKeysNop = class {
3472
+ /**
3473
+ * Installs the polyfill if needed.
3474
+ */
3475
+ static install() {}
3476
+ };
3477
+ /**
3478
+ * @summary A polyfill to implement
3479
+ * {@link https://bit.ly/EmeMar15 EME draft 12 March 2015} on top of
3480
+ * webkit-prefixed {@link https://bit.ly/Eme01b EME v0.1b}.
3481
+ */
3482
+ shaka.polyfill.PatchedMediaKeysWebkit = class {
3483
+ /**
3484
+ * Installs the polyfill if needed.
3485
+ */
3486
+ static install() {}
3487
+ };
3488
+ /**
3489
+ * @summary A polyfill to provide PiP support in Safari.
3490
+ * Note that Safari only supports PiP on video elements, not audio.
3491
+ */
3492
+ shaka.polyfill.PiPWebkit = class {
3493
+ /**
3494
+ * Install the polyfill if needed.
3495
+ */
3496
+ static install() {}
3497
+ };
3498
+ /**
3499
+ * @summary A polyfill to provide navigator.storage.estimate in old
3500
+ * webkit browsers.
3501
+ * See: https://developers.google.com/web/updates/2017/08/estimating-available-storage-space#the-present
3502
+ */
3503
+ shaka.polyfill.StorageEstimate = class {
3504
+ /**
3505
+ * Install the polyfill if needed.
3506
+ */
3507
+ static install() {}
3508
+ };
3509
+ /**
3510
+ * @summary A polyfill to silence the play() Promise in HTML5 video.
3511
+ */
3512
+ shaka.polyfill.VideoPlayPromise = class {
3513
+ /**
3514
+ * Install the polyfill if needed.
3515
+ */
3516
+ static install() {}
3517
+ };
3518
+ /**
3519
+ * @summary A polyfill to provide MSE VideoPlaybackQuality metrics.
3520
+ * Many browsers do not yet provide this API, and Chrome currently provides
3521
+ * similar data through individual prefixed attributes on HTMLVideoElement.
3522
+ */
3523
+ shaka.polyfill.VideoPlaybackQuality = class {
3524
+ /**
3525
+ * Install the polyfill if needed.
3526
+ */
3527
+ static install() {}
3528
+ };
3529
+ /**
3530
+ * @summary A polyfill to provide VTTCue.
3531
+ */
3532
+ shaka.polyfill.VTTCue = class {
3533
+ /**
3534
+ * Install the polyfill if needed.
3535
+ */
3536
+ static install() {}
3537
+ };
3360
3538
  /**
3361
3539
  * LRC file format: https://en.wikipedia.org/wiki/LRC_(file_format)
3362
3540
  * @implements {shaka.extern.TextParser}