shaka-player 4.2.4 → 4.3.0

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 (137) hide show
  1. package/.github/workflows/sync-labels.yaml +1 -1
  2. package/.github/workflows/update-issues.yaml +1 -1
  3. package/AUTHORS +4 -0
  4. package/CHANGELOG.md +85 -54
  5. package/CONTRIBUTORS +4 -0
  6. package/README.md +14 -0
  7. package/demo/common/assets.js +58 -0
  8. package/demo/common/message_ids.js +22 -1
  9. package/demo/config.js +89 -5
  10. package/demo/demo.less +7 -1
  11. package/demo/index.html +8 -1
  12. package/demo/locales/en.json +21 -1
  13. package/demo/locales/source.json +82 -2
  14. package/demo/main.js +57 -1
  15. package/demo/search.js +2 -0
  16. package/demo/visualizer.js +337 -0
  17. package/demo/visualizer_button.js +103 -0
  18. package/dist/controls.css +1 -1
  19. package/dist/controls.css.map +1 -1
  20. package/dist/demo.compiled.debug.js +83 -58
  21. package/dist/demo.compiled.debug.map +4 -4
  22. package/dist/demo.compiled.js +83 -58
  23. package/dist/demo.compiled.map +4 -4
  24. package/dist/demo.css +1 -1
  25. package/dist/demo.css.map +1 -1
  26. package/dist/deps.js +16 -9
  27. package/dist/locales.js +32 -32
  28. package/dist/receiver.compiled.debug.js +23 -19
  29. package/dist/receiver.compiled.debug.map +3 -3
  30. package/dist/receiver.compiled.js +23 -19
  31. package/dist/receiver.compiled.map +3 -3
  32. package/dist/shaka-player.compiled.d.ts +173 -26
  33. package/dist/shaka-player.compiled.debug.d.ts +173 -26
  34. package/dist/shaka-player.compiled.debug.externs.js +161 -31
  35. package/dist/shaka-player.compiled.debug.js +464 -401
  36. package/dist/shaka-player.compiled.debug.map +4 -4
  37. package/dist/shaka-player.compiled.externs.js +161 -31
  38. package/dist/shaka-player.compiled.js +897 -862
  39. package/dist/shaka-player.compiled.map +4 -4
  40. package/dist/shaka-player.ui.d.ts +173 -26
  41. package/dist/shaka-player.ui.debug.d.ts +173 -26
  42. package/dist/shaka-player.ui.debug.externs.js +161 -31
  43. package/dist/shaka-player.ui.debug.js +488 -422
  44. package/dist/shaka-player.ui.debug.map +4 -4
  45. package/dist/shaka-player.ui.externs.js +161 -31
  46. package/dist/shaka-player.ui.js +1053 -1018
  47. package/dist/shaka-player.ui.map +4 -4
  48. package/docs/design/lcevc-architecture.png +0 -0
  49. package/docs/design/lcevc-demo.png +0 -0
  50. package/docs/design/lcevc-integration.md +72 -0
  51. package/docs/tutorials/fairplay.md +7 -0
  52. package/docs/tutorials/faq.md +1 -1
  53. package/docs/tutorials/ui.md +7 -7
  54. package/docs/tutorials/upgrade.md +6 -0
  55. package/externs/ima.js +13 -1
  56. package/externs/lcevc.js +81 -0
  57. package/externs/mux.js +1 -42
  58. package/externs/shaka/ads.js +11 -1
  59. package/externs/shaka/manifest_parser.js +5 -1
  60. package/externs/shaka/player.js +178 -15
  61. package/lib/abr/simple_abr_manager.js +7 -0
  62. package/lib/ads/ad_manager.js +0 -8
  63. package/lib/ads/client_side_ad.js +15 -0
  64. package/lib/ads/client_side_ad_manager.js +21 -8
  65. package/lib/ads/server_side_ad.js +15 -0
  66. package/lib/ads/server_side_ad_manager.js +3 -3
  67. package/lib/cast/cast_utils.js +2 -0
  68. package/lib/cea/dummy_cea_parser.js +28 -0
  69. package/lib/cea/i_cea_parser.js +14 -2
  70. package/lib/cea/mp4_cea_parser.js +87 -5
  71. package/lib/config/auto_show_text.js +33 -0
  72. package/lib/dash/dash_parser.js +1 -1
  73. package/lib/hls/hls_parser.js +790 -374
  74. package/lib/lcevc/lcevc_dil.js +152 -0
  75. package/lib/media/closed_caption_parser.js +9 -6
  76. package/lib/media/drm_engine.js +14 -6
  77. package/lib/media/media_source_engine.js +106 -26
  78. package/lib/media/presentation_timeline.js +26 -11
  79. package/lib/media/segment_reference.js +49 -1
  80. package/lib/media/streaming_engine.js +142 -12
  81. package/lib/media/transmuxer.js +73 -18
  82. package/lib/offline/storage.js +1 -0
  83. package/lib/player.js +454 -75
  84. package/lib/polyfill/patchedmediakeys_apple.js +55 -1
  85. package/lib/text/ui_text_displayer.js +5 -5
  86. package/lib/text/vtt_text_parser.js +35 -1
  87. package/lib/util/dom_utils.js +0 -1
  88. package/lib/util/error.js +17 -0
  89. package/lib/util/fake_event.js +2 -0
  90. package/lib/util/id3_utils.js +300 -0
  91. package/lib/util/mime_utils.js +3 -6
  92. package/lib/util/mp4_box_parsers.js +15 -5
  93. package/lib/util/platform.js +9 -1
  94. package/lib/util/player_configuration.js +23 -1
  95. package/lib/util/ts_parser.js +499 -0
  96. package/maintained-branches.md +2 -2
  97. package/package.json +4 -1
  98. package/roadmap.md +5 -3
  99. package/test/ads/ad_manager_unit.js +180 -29
  100. package/test/cast/cast_utils_unit.js +3 -1
  101. package/test/dash/dash_parser_content_protection_unit.js +1 -0
  102. package/test/dash/dash_parser_live_unit.js +1 -0
  103. package/test/dash/dash_parser_manifest_unit.js +93 -1
  104. package/test/dash/dash_parser_segment_base_unit.js +1 -0
  105. package/test/dash/dash_parser_segment_list_unit.js +1 -0
  106. package/test/dash/dash_parser_segment_template_unit.js +1 -0
  107. package/test/demo/demo_unit.js +2 -1
  108. package/test/hls/hls_live_unit.js +253 -19
  109. package/test/hls/hls_parser_unit.js +500 -12
  110. package/test/media/closed_caption_parser_unit.js +2 -1
  111. package/test/media/drm_engine_integration.js +3 -1
  112. package/test/media/media_source_engine_integration.js +71 -6
  113. package/test/media/media_source_engine_unit.js +10 -5
  114. package/test/media/streaming_engine_integration.js +4 -1
  115. package/test/media/streaming_engine_unit.js +144 -1
  116. package/test/media/transmuxer_integration.js +21 -10
  117. package/test/player_integration.js +224 -82
  118. package/test/player_unit.js +5 -2
  119. package/test/polyfill/patchedmediakeys_apple_unit.js +124 -0
  120. package/test/test/assets/id3-metadata.aac +0 -0
  121. package/test/test/assets/id3-metadata.ts +0 -0
  122. package/test/test/assets/thumbnails-sprites.vtt +10 -0
  123. package/test/test/assets/thumbnails.vtt +10 -0
  124. package/test/test/util/dash_parser_util.js +2 -0
  125. package/test/test/util/fake_ad.js +21 -0
  126. package/test/test/util/fake_media_source_engine.js +7 -0
  127. package/test/test/util/id3_generator.js +100 -0
  128. package/test/test/util/manifest_generator.js +3 -6
  129. package/test/test/util/simple_fakes.js +4 -0
  130. package/test/test/util/stream_generator.js +38 -0
  131. package/test/test/util/test_scheme.js +43 -14
  132. package/test/text/vtt_text_parser_unit.js +11 -0
  133. package/test/ui/text_displayer_layout_unit.js +14 -0
  134. package/test/util/id3_utils_unit.js +116 -0
  135. package/test/util/ts_parser_unit.js +77 -0
  136. package/ui/less/containers.less +7 -0
  137. package/ui/ui.js +43 -4
@@ -18,7 +18,7 @@ jobs:
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
20
  - name: Checkout code
21
- uses: actions/checkout@v2
21
+ uses: actions/checkout@v3
22
22
  with:
23
23
  repository: shaka-project/shaka-github-tools
24
24
 
@@ -16,7 +16,7 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  steps:
18
18
  - name: Checkout code
19
- uses: actions/checkout@v2
19
+ uses: actions/checkout@v3
20
20
  with:
21
21
  repository: shaka-project/shaka-github-tools
22
22
 
package/AUTHORS CHANGED
@@ -48,6 +48,7 @@ Jun Hong Chong <chongjunhong@gmail.com>
48
48
  Jürgen Kartnaller <kartnaller@lovelysystems.com>
49
49
  JW Player <*@jwplayer.com>
50
50
  Lucas Gabriel Sánchez <unkiwii@gmail.com>
51
+ Martin Stark <martin.stark@eyevinn.se>
51
52
  Matthias Van Parijs <matvp91@gmail.com>
52
53
  Mattias Wadman <mattias.wadman@gmail.com>
53
54
  Mohamed Rashid <ge_rashid@hotmail.co.uk>
@@ -64,6 +65,7 @@ Philo Inc. <*@philo.com>
64
65
  Prakash <duggaraju@gmail.com>
65
66
  Robert Colantuoni <rgc@colantuoni.com>
66
67
  Robert Galluccio <robertnw5@gmail.com>
68
+ Rodolphe Breton <robloche@gmail.com>
67
69
  Roi Lipman <roilipman@gmail.com>
68
70
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
69
71
  Rostislav Hejduk <Ross-cz@users.noreply.github.com>
@@ -82,7 +84,9 @@ uStudio Inc. <*@ustudio.com>
82
84
  Verizon Digital Media Services <*@verizondigitalmedia.com>
83
85
  ViacomCBS <*@viacomcbs.com>
84
86
  Vincent Valot <valot.vince@gmail.com>
87
+ V-Nova Limited <*@v-nova.com>
85
88
  Wayne Morgan <wayne.morgan.dev@gmail.com>
86
89
  Raymond Cheng <raycheng100@gmail.com>
87
90
  Blue Billywig <*@bluebillywig.com>
91
+ João Nabais <jlnabais@gmail.com>
88
92
  Koen Romers <koenromers@gmail.com>
package/CHANGELOG.md CHANGED
@@ -1,66 +1,97 @@
1
1
  # Changelog
2
2
 
3
- ## [4.2.4](https://github.com/shaka-project/shaka-player/compare/v4.2.3...v4.2.4) (2022-11-09)
3
+ ## [4.3.0](https://github.com/shaka-project/shaka-player/compare/v4.2.0...v4.3.0) (2022-11-10)
4
4
 
5
5
 
6
- ### Bug Fixes
7
-
8
- * Allow overriding special handling of 404s ([#4635](https://github.com/shaka-project/shaka-player/issues/4635)) ([bf3e4e8](https://github.com/shaka-project/shaka-player/commit/bf3e4e8967ab938c95861d3f02eb1bcf76722a5c)), closes [#4548](https://github.com/shaka-project/shaka-player/issues/4548)
9
- * **cast:** Reduce size of Cast update messages ([#4644](https://github.com/shaka-project/shaka-player/issues/4644)) ([2ee9803](https://github.com/shaka-project/shaka-player/commit/2ee9803f295bbdf7911740c4b5f35b81e8a7488c))
10
- * Content reload starttime with HLS on iOS ([#4575](https://github.com/shaka-project/shaka-player/issues/4575)) ([f02e25a](https://github.com/shaka-project/shaka-player/commit/f02e25af91eeb18939f16460702b8f9ec226b54c)), closes [#4244](https://github.com/shaka-project/shaka-player/issues/4244)
11
- * embed cc not shown when seeking back ([#4643](https://github.com/shaka-project/shaka-player/issues/4643)) ([3743fe8](https://github.com/shaka-project/shaka-player/commit/3743fe8ab70ce8bebd46ff4a667ddce188ec49c6)), closes [#4641](https://github.com/shaka-project/shaka-player/issues/4641)
12
- * Fix detection of ac4, dts, and dolby h265 ([#4657](https://github.com/shaka-project/shaka-player/issues/4657)) ([9da2b47](https://github.com/shaka-project/shaka-player/commit/9da2b47deba36f4c50fed10c859f46a432e20576))
13
- * focus on first element when back to the settings menu ([#4653](https://github.com/shaka-project/shaka-player/issues/4653)) ([f507c89](https://github.com/shaka-project/shaka-player/commit/f507c89bf63b0ec5b7802cd31ac3f3cca05ff237)), closes [#4652](https://github.com/shaka-project/shaka-player/issues/4652)
14
- * **HLS:** Fix detection of WebVTT subtitles in HLS by extension ([#4663](https://github.com/shaka-project/shaka-player/issues/4663)) ([731bd96](https://github.com/shaka-project/shaka-player/commit/731bd96644cbbd3fa39992fd62a4ae6de8389e74))
15
- * **HLS:** Infer missing codecs from config ([#4656](https://github.com/shaka-project/shaka-player/issues/4656)) ([507d96e](https://github.com/shaka-project/shaka-player/commit/507d96e74239973fb904d6ade4615ac8888a9d57))
16
- * **ui:** Fix exception on screen rotation if fullscreen is not supported ([#4669](https://github.com/shaka-project/shaka-player/issues/4669)) ([6c54db9](https://github.com/shaka-project/shaka-player/commit/6c54db91e03c4ff4a2c073b45dcb05e8591295d0))
17
-
18
- ## [4.2.3](https://github.com/shaka-project/shaka-player/compare/v4.2.2...v4.2.3) (2022-10-29)
19
-
20
-
21
- ### Bug Fixes
22
-
23
- * **ads:** Fix IMA crash when autoplay is rejected ([#4518](https://github.com/shaka-project/shaka-player/issues/4518)) ([871a3c0](https://github.com/shaka-project/shaka-player/commit/871a3c0315a2965c91ebdde9815c7f6c5e0a59de)), closes [#4179](https://github.com/shaka-project/shaka-player/issues/4179)
24
- * Fix HLS live stream subtitle offsets ([#4586](https://github.com/shaka-project/shaka-player/issues/4586)) ([ec0b4dc](https://github.com/shaka-project/shaka-player/commit/ec0b4dcb0e288ceb1a01874db99063ef54fb3e47))
25
- * Fix multi-period DASH with descriptive audio ([#4629](https://github.com/shaka-project/shaka-player/issues/4629)) ([0e70b87](https://github.com/shaka-project/shaka-player/commit/0e70b874cf8558207b0620516c5608c6a201018d)), closes [#4500](https://github.com/shaka-project/shaka-player/issues/4500)
26
- * fix support clear and encrypted periods ([#4606](https://github.com/shaka-project/shaka-player/issues/4606)) ([8ece8ea](https://github.com/shaka-project/shaka-player/commit/8ece8ea225fb8b9ec9027dacef0865cceb3fd93b))
27
- * Force using mcap polyfill on EOS browsers ([#4630](https://github.com/shaka-project/shaka-player/issues/4630)) ([6b9f806](https://github.com/shaka-project/shaka-player/commit/6b9f806df54cc7b8761ef1683cefe5ed8d576a03))
28
- * **hls:** Fix raw format detection when the main playlist hasn't type ([#4583](https://github.com/shaka-project/shaka-player/issues/4583)) ([4053088](https://github.com/shaka-project/shaka-player/commit/4053088847eff6d7ddb7a969701fa881f6e90e8a))
29
- * Limit key ids to 32 characters ([#4614](https://github.com/shaka-project/shaka-player/issues/4614)) ([6fc1455](https://github.com/shaka-project/shaka-player/commit/6fc145584ffc0798a6e97c5672409b1e1613f164))
30
- * Make XML parsing secure ([#4598](https://github.com/shaka-project/shaka-player/issues/4598)) ([2e45696](https://github.com/shaka-project/shaka-player/commit/2e45696c10f3c2199a372a7a5f311579e627cd8e))
31
- * **offline:** Add storage muxer init timeout ([#4566](https://github.com/shaka-project/shaka-player/issues/4566)) ([6022907](https://github.com/shaka-project/shaka-player/commit/6022907df5e3a18b552a49e537d2c1daeebbc2c6))
32
- * **playhead:** Safeguard getStallsDetected as stallDetector can be null ([#4581](https://github.com/shaka-project/shaka-player/issues/4581)) ([c4ee14f](https://github.com/shaka-project/shaka-player/commit/c4ee14f2abcdd83b21e64230b67ab121c1db037e))
33
- * Resolve load failures for TS-based content on Android-based Cast devices ([#4569](https://github.com/shaka-project/shaka-player/issues/4569)). ([#4570](https://github.com/shaka-project/shaka-player/issues/4570)) ([4a4f48d](https://github.com/shaka-project/shaka-player/commit/4a4f48d2cac726e2a5a1d4e51e89f0b854e281ef))
34
-
35
- ## [4.2.2](https://github.com/shaka-project/shaka-player/compare/v4.2.1...v4.2.2) (2022-10-07)
36
-
37
-
38
- ### Bug Fixes
39
-
40
- * allow build without text ([#4506](https://github.com/shaka-project/shaka-player/issues/4506)) ([7e93720](https://github.com/shaka-project/shaka-player/commit/7e9372097567d8d0f93c04e241fb917945da05bf))
41
- * allow the playback on platforms when low latency APIs are not supported ([#4485](https://github.com/shaka-project/shaka-player/issues/4485)) ([cf8c857](https://github.com/shaka-project/shaka-player/commit/cf8c857e58f041e24373e8b4f7d560287197cf13))
42
- * check for negative rows before moving ([#4510](https://github.com/shaka-project/shaka-player/issues/4510)) ([23f39d7](https://github.com/shaka-project/shaka-player/commit/23f39d7393c771440fc76ac9016b166d658710b2)), closes [#4508](https://github.com/shaka-project/shaka-player/issues/4508)
43
- * Filter unsupported H.264 streams in Xbox ([#4493](https://github.com/shaka-project/shaka-player/issues/4493)) ([914a08a](https://github.com/shaka-project/shaka-player/commit/914a08a4d08bed284a072aed52b0bf8fcbdc6986))
44
- * Fix choppy HLS startup ([#4553](https://github.com/shaka-project/shaka-player/issues/4553)) ([950ce69](https://github.com/shaka-project/shaka-player/commit/950ce699a06bb9e7668b431f4f08052c005f2e8a)), closes [#4516](https://github.com/shaka-project/shaka-player/issues/4516)
45
- * Fix errors with TS segments on Chromecast ([#4543](https://github.com/shaka-project/shaka-player/issues/4543)) ([8204db6](https://github.com/shaka-project/shaka-player/commit/8204db6ebc152cb01c36db941ca60bc82ccbe443))
46
- * Fix hang when seeking to the last segment ([#4537](https://github.com/shaka-project/shaka-player/issues/4537)) ([3d6c768](https://github.com/shaka-project/shaka-player/commit/3d6c768cb302de42138aec8fdf51dff8317c5607))
47
- * Fix HLS dynamic to static transition ([d9ecbf3](https://github.com/shaka-project/shaka-player/commit/d9ecbf3fccb886e10a491c43e05e681fe2103a2d))
48
- * Fix HLS dynamic to static transition ([#4483](https://github.com/shaka-project/shaka-player/issues/4483)) ([d9ecbf3](https://github.com/shaka-project/shaka-player/commit/d9ecbf3fccb886e10a491c43e05e681fe2103a2d)), closes [#4431](https://github.com/shaka-project/shaka-player/issues/4431)
49
- * Fix in-band key rotation on Xbox One ([#4478](https://github.com/shaka-project/shaka-player/issues/4478)) ([bc0a588](https://github.com/shaka-project/shaka-player/commit/bc0a588676828eb68bdca62efe52cb503feb947d)), closes [#4401](https://github.com/shaka-project/shaka-player/issues/4401)
50
- * Missing AES-128 key of last HLS segment ([#4519](https://github.com/shaka-project/shaka-player/issues/4519)) ([2c2677f](https://github.com/shaka-project/shaka-player/commit/2c2677fe7af10e1280ea8253b90ef6527bdcbbc0)), closes [#4517](https://github.com/shaka-project/shaka-player/issues/4517)
51
- * Respect existing app usage of Cast SDK ([#4523](https://github.com/shaka-project/shaka-player/issues/4523)) ([3db2568](https://github.com/shaka-project/shaka-player/commit/3db2568508cfc827fd9efc644096a45220eb617b)), closes [#4521](https://github.com/shaka-project/shaka-player/issues/4521)
52
- * **ttml:** Default TTML background color to transparent if unspecified ([#4496](https://github.com/shaka-project/shaka-player/issues/4496)) ([0b5c985](https://github.com/shaka-project/shaka-player/commit/0b5c9853a6a39cb24ab1270598bf34d2ac1eacf0)), closes [#4468](https://github.com/shaka-project/shaka-player/issues/4468)
6
+ ### Features
53
7
 
54
- ## [4.2.1](https://github.com/shaka-project/shaka-player/compare/v4.2.0...v4.2.1) (2022-08-31)
8
+ * Add AAC transmuxer ([#4632](https://github.com/shaka-project/shaka-player/issues/4632)) ([8623a5d](https://github.com/shaka-project/shaka-player/commit/8623a5d0304dd3e65c613b176b4afa38a6dc96b5))
9
+ * Add config for sequenceMode in DASH ([#4607](https://github.com/shaka-project/shaka-player/issues/4607)) ([aff2a5d](https://github.com/shaka-project/shaka-player/commit/aff2a5d9e81e5fdfaeb91275aaa0821aa189d34f))
10
+ * Add external thumbnails support ([#4497](https://github.com/shaka-project/shaka-player/issues/4497)) ([3582f0a](https://github.com/shaka-project/shaka-player/commit/3582f0a7274d6bb6f0bbfdf2ad51c5ecfb6f974b))
11
+ * Add external thumbnails with sprites support ([#4584](https://github.com/shaka-project/shaka-player/issues/4584)) ([86cb3e7](https://github.com/shaka-project/shaka-player/commit/86cb3e714cc3f59cff8f0b33adb291e128c32609))
12
+ * Add limited support for HLS "identity" key format ([#4451](https://github.com/shaka-project/shaka-player/issues/4451)) ([b1e81a6](https://github.com/shaka-project/shaka-player/commit/b1e81a684afe086b7a37ea29bbbfc972575ba332)), closes [#2146](https://github.com/shaka-project/shaka-player/issues/2146)
13
+ * Adds ChannelCount as a filter to the Player Select Audio Track Method ([#4552](https://github.com/shaka-project/shaka-player/issues/4552)) ([9dd945c](https://github.com/shaka-project/shaka-player/commit/9dd945c3df7364b90a9c3cb3150021492ebb7d81)), closes [#4550](https://github.com/shaka-project/shaka-player/issues/4550)
14
+ * **ads:** Add getDescription to CS and SS ads ([#4526](https://github.com/shaka-project/shaka-player/issues/4526)) ([7d2a170](https://github.com/shaka-project/shaka-player/commit/7d2a170336b828e8aac871ff276dbb8b42c384a4))
15
+ * **ads:** Add getTitle to CS and SS ads ([#4513](https://github.com/shaka-project/shaka-player/issues/4513)) ([a019065](https://github.com/shaka-project/shaka-player/commit/a019065d5d19598c9d0ba6ce5d4d79070f3e3cba))
16
+ * **ads:** Ignore ad events with no associated ad ([#4488](https://github.com/shaka-project/shaka-player/issues/4488)) ([e826eb8](https://github.com/shaka-project/shaka-player/commit/e826eb8eec207dd2ebd4d4ee1e44510ebff22b71)), closes [#4481](https://github.com/shaka-project/shaka-player/issues/4481)
17
+ * Allow add extra features to MediaSource.addSourceBuffer ([#4527](https://github.com/shaka-project/shaka-player/issues/4527)) ([4033be7](https://github.com/shaka-project/shaka-player/commit/4033be7c5b1d1c397d5a4840ef7333a26ca93983))
18
+ * Allow clearKey configuration in base64 or hex ([#4627](https://github.com/shaka-project/shaka-player/issues/4627)) ([29ffc89](https://github.com/shaka-project/shaka-player/commit/29ffc89a117e6f4285c0133dce555e44a1414228))
19
+ * Allow customization of HLS Live behavior ([#4578](https://github.com/shaka-project/shaka-player/issues/4578)) ([4914201](https://github.com/shaka-project/shaka-player/commit/4914201f86f6e683b64c7cc3338cdf67cee544cf))
20
+ * Allow playback of HLS Media Playlist with AAC by default ([#4564](https://github.com/shaka-project/shaka-player/issues/4564)) ([757b34e](https://github.com/shaka-project/shaka-player/commit/757b34e5959f14c9a5b5aed173cc99d98a794a40))
21
+ * Allow playback of HLS Media Playlist with RAW formats by default and support ID3 ([#4591](https://github.com/shaka-project/shaka-player/issues/4591)) ([18d8367](https://github.com/shaka-project/shaka-player/commit/18d836746e20164409c070c787e08b8bcf4da180))
22
+ * Automatic ABR quality restrictions based on screen size ([#4515](https://github.com/shaka-project/shaka-player/issues/4515)) ([b5935a8](https://github.com/shaka-project/shaka-player/commit/b5935a8a6b3b05c0c4cd10774a9625b0bbaf1cf6))
23
+ * **demo:** Demo visualizer for buffered ranges. ([#4417](https://github.com/shaka-project/shaka-player/issues/4417)) ([55d0a15](https://github.com/shaka-project/shaka-player/commit/55d0a1556a273b6af0da16197b424796a175adf8))
24
+ * enable uninstalling PatchedMediaKeysApple ([#4471](https://github.com/shaka-project/shaka-player/issues/4471)) ([7166f0c](https://github.com/shaka-project/shaka-player/commit/7166f0c1d09ad458abf0ee18e961c88f415afefc)), closes [#4469](https://github.com/shaka-project/shaka-player/issues/4469)
25
+ * **HLS:** Add support for EXT-X-SESSION-KEY tag ([#4655](https://github.com/shaka-project/shaka-player/issues/4655)) ([172c9f8](https://github.com/shaka-project/shaka-player/commit/172c9f834ab6575cf9cdb2f825abd9961b9ad7fb)), closes [#917](https://github.com/shaka-project/shaka-player/issues/917)
26
+ * **HLS:** allow customize live segments delay ([#4585](https://github.com/shaka-project/shaka-player/issues/4585)) ([1f558a8](https://github.com/shaka-project/shaka-player/commit/1f558a82c14e3d68a3a67cbb58879f2ab12549d0))
27
+ * **HLS:** Allow mp3 playback with mp4a.40.34 ([#4592](https://github.com/shaka-project/shaka-player/issues/4592)) ([8f892b1](https://github.com/shaka-project/shaka-player/commit/8f892b136f4cadce6a4d0585f88d4eccaf065f1b))
28
+ * **HLS:** Lazy-load HLS media playlists ([#4511](https://github.com/shaka-project/shaka-player/issues/4511)) ([b2f279d](https://github.com/shaka-project/shaka-player/commit/b2f279db1b111e3c8a02706551f466468621cd97)), closes [#1936](https://github.com/shaka-project/shaka-player/issues/1936)
29
+ * **HLS:** Support for HLS key rotation ([#4568](https://github.com/shaka-project/shaka-player/issues/4568)) ([3846eea](https://github.com/shaka-project/shaka-player/commit/3846eeac3f3777c35e61f479958015062f4275af)), closes [#741](https://github.com/shaka-project/shaka-player/issues/741)
30
+ * Improved LCEVC integration ([#4560](https://github.com/shaka-project/shaka-player/issues/4560)) ([50062f5](https://github.com/shaka-project/shaka-player/commit/50062f58adea248a403461b50b65c3a585de31b4))
31
+ * LCEVC Integration ([#4050](https://github.com/shaka-project/shaka-player/issues/4050)) ([284ea63](https://github.com/shaka-project/shaka-player/commit/284ea63a60178cbc87ce2fde769eb06bdb8fb8ea))
32
+ * New autoShowText config to change initial text visibility behavior ([#3421](https://github.com/shaka-project/shaka-player/issues/3421)) ([5c24410](https://github.com/shaka-project/shaka-player/commit/5c24410560d8afa13e6f2492590f13506419b59e))
33
+ * Parse and surface "prft" boxes as events ([#4389](https://github.com/shaka-project/shaka-player/issues/4389)) ([89777dd](https://github.com/shaka-project/shaka-player/commit/89777dd7043ae2b5fa213ab73e43f93482bb86d0)), closes [#4382](https://github.com/shaka-project/shaka-player/issues/4382)
34
+ * Parse ID3 metadata ([#4409](https://github.com/shaka-project/shaka-player/issues/4409)) ([95bbf72](https://github.com/shaka-project/shaka-player/commit/95bbf72f426f9df899193f6083197a77191c0c4f))
35
+ * Support HTML-escaped cues in VTT ([#4660](https://github.com/shaka-project/shaka-player/issues/4660)) ([2b8b387](https://github.com/shaka-project/shaka-player/commit/2b8b38788ab5b6fc297eaa3537e97bc348d2b389))
36
+ * TS parser improvements ([#4612](https://github.com/shaka-project/shaka-player/issues/4612)) ([5157b44](https://github.com/shaka-project/shaka-player/commit/5157b44b2d644ec9cdc13b03b4ac762ed8e0f183))
55
37
 
56
38
 
57
39
  ### Bug Fixes
58
40
 
59
- * Fix bitmap-based cue size ([#4453](https://github.com/shaka-project/shaka-player/issues/4453)) ([6329cf2](https://github.com/shaka-project/shaka-player/commit/6329cf25b1a3265361e50386d48b0438e294536e))
60
- * Fix drm.keySystemsMapping config ([#4425](https://github.com/shaka-project/shaka-player/issues/4425)) ([40235ef](https://github.com/shaka-project/shaka-player/commit/40235ef4f7675a853daf315d4c089ad7be7b2188)), closes [#4422](https://github.com/shaka-project/shaka-player/issues/4422)
61
- * Fix vanishing tracks while offline ([#4426](https://github.com/shaka-project/shaka-player/issues/4426)) ([d668790](https://github.com/shaka-project/shaka-player/commit/d668790f5b9eef990a190128bd11972204e98480)), closes [#4408](https://github.com/shaka-project/shaka-player/issues/4408)
62
- * return width and height in the stats when we are using src= ([#4435](https://github.com/shaka-project/shaka-player/issues/4435)) ([aad8769](https://github.com/shaka-project/shaka-player/commit/aad8769807bcf58b2bc5c6298e9a10f428c73806))
63
- * **UI:** Ad position and ad counter are too close to each other ([#4416](https://github.com/shaka-project/shaka-player/issues/4416)) ([a7333a5](https://github.com/shaka-project/shaka-player/commit/a7333a560aae4c8f915b3546ecc4e34dc501c5f2))
41
+ * **ads:** Fix IMA crash when autoplay is rejected ([#4518](https://github.com/shaka-project/shaka-player/issues/4518)) ([d27f7d2](https://github.com/shaka-project/shaka-player/commit/d27f7d24bb3e1000fc489a6aa125fca359dd77e1)), closes [#4179](https://github.com/shaka-project/shaka-player/issues/4179)
42
+ * allow build without text ([#4506](https://github.com/shaka-project/shaka-player/issues/4506)) ([340b04a](https://github.com/shaka-project/shaka-player/commit/340b04ad4798c9b68ed9510ae71912192a61348b))
43
+ * Allow overriding special handling of 404s ([#4635](https://github.com/shaka-project/shaka-player/issues/4635)) ([427f126](https://github.com/shaka-project/shaka-player/commit/427f126ea3958541d69474505e1af0eb892d8dde)), closes [#4548](https://github.com/shaka-project/shaka-player/issues/4548)
44
+ * allow the playback on platforms when low latency APIs are not supported ([#4485](https://github.com/shaka-project/shaka-player/issues/4485)) ([c1753e1](https://github.com/shaka-project/shaka-player/commit/c1753e1a02881cfbbafd863eeb582411c45df92c))
45
+ * **cast:** Reduce size of Cast update messages ([#4644](https://github.com/shaka-project/shaka-player/issues/4644)) ([4e75ec6](https://github.com/shaka-project/shaka-player/commit/4e75ec64be76414b1d4945cbfbf7bc52b5ff3b01))
46
+ * **cea:** Fix not rendering CEA-608 Closed Captions ([#4683](https://github.com/shaka-project/shaka-player/issues/4683)) ([a489282](https://github.com/shaka-project/shaka-player/commit/a489282ff26796a55f96e035b55d331abfc14142)), closes [#4605](https://github.com/shaka-project/shaka-player/issues/4605) [#3659](https://github.com/shaka-project/shaka-player/issues/3659)
47
+ * check for negative rows before moving ([#4510](https://github.com/shaka-project/shaka-player/issues/4510)) ([b3621c2](https://github.com/shaka-project/shaka-player/commit/b3621c26a86897ba80c17b68f316e22aba61b30b)), closes [#4508](https://github.com/shaka-project/shaka-player/issues/4508)
48
+ * Content reload starttime with HLS on iOS ([#4575](https://github.com/shaka-project/shaka-player/issues/4575)) ([59d4360](https://github.com/shaka-project/shaka-player/commit/59d4360b686421f07aa0d7f28eb944f0c51ff5a2)), closes [#4244](https://github.com/shaka-project/shaka-player/issues/4244)
49
+ * DAI ID3 metadata parsing ([#4616](https://github.com/shaka-project/shaka-player/issues/4616)) ([0d67ecd](https://github.com/shaka-project/shaka-player/commit/0d67ecd7cba253eb1919ae6e15a80f34e08fc132))
50
+ * embed cc not shown when seeking back ([#4643](https://github.com/shaka-project/shaka-player/issues/4643)) ([2a6b0d0](https://github.com/shaka-project/shaka-player/commit/2a6b0d02e550cfa5749b838f5915b8b6cf7b2099)), closes [#4641](https://github.com/shaka-project/shaka-player/issues/4641)
51
+ * Filter unsupported H.264 streams in Xbox ([#4493](https://github.com/shaka-project/shaka-player/issues/4493)) ([8475214](https://github.com/shaka-project/shaka-player/commit/8475214bc46e8321f7b60a6fc7fabee484a40800))
52
+ * Fix bitmap-based cue size ([#4453](https://github.com/shaka-project/shaka-player/issues/4453)) ([4a197e1](https://github.com/shaka-project/shaka-player/commit/4a197e1288c8f20a950cf491041eca9dde7033cb))
53
+ * Fix choppy HLS startup ([#4553](https://github.com/shaka-project/shaka-player/issues/4553)) ([59ef54a](https://github.com/shaka-project/shaka-player/commit/59ef54a158e14da2f7c6ab04e1fd9409bf63c6f0)), closes [#4516](https://github.com/shaka-project/shaka-player/issues/4516)
54
+ * Fix detection of ac4, dts, and dolby h265 ([#4657](https://github.com/shaka-project/shaka-player/issues/4657)) ([319a358](https://github.com/shaka-project/shaka-player/commit/319a358b8dc1838a89d8977109cab4296a558841))
55
+ * Fix dispatch ID3 metadata when transmuxing AAC ([#4639](https://github.com/shaka-project/shaka-player/issues/4639)) ([bf813f2](https://github.com/shaka-project/shaka-player/commit/bf813f2553dfc56efa79b708c54cbddee0f3ee2e))
56
+ * Fix drm.keySystemsMapping config ([#4425](https://github.com/shaka-project/shaka-player/issues/4425)) ([d945084](https://github.com/shaka-project/shaka-player/commit/d9450846e11224e0b1add6cc20a64844d6c09fcf)), closes [#4422](https://github.com/shaka-project/shaka-player/issues/4422)
57
+ * Fix errors with TS segments on Chromecast ([#4543](https://github.com/shaka-project/shaka-player/issues/4543)) ([593c280](https://github.com/shaka-project/shaka-player/commit/593c280dd578ee19cbb6a47f22962ff7fdd2cb45))
58
+ * Fix hang when seeking to the last segment ([#4537](https://github.com/shaka-project/shaka-player/issues/4537)) ([19a4842](https://github.com/shaka-project/shaka-player/commit/19a48422901440ff88fbbedfea5803c6dda07127))
59
+ * Fix HLS dynamic to static transition ([a16b1ac](https://github.com/shaka-project/shaka-player/commit/a16b1ac8a4c8f367f65747fc789a7d8c160e29e3))
60
+ * Fix HLS dynamic to static transition ([#4483](https://github.com/shaka-project/shaka-player/issues/4483)) ([a16b1ac](https://github.com/shaka-project/shaka-player/commit/a16b1ac8a4c8f367f65747fc789a7d8c160e29e3)), closes [#4431](https://github.com/shaka-project/shaka-player/issues/4431)
61
+ * Fix HLS lazy-loading exception during update ([#4648](https://github.com/shaka-project/shaka-player/issues/4648)) ([777c27e](https://github.com/shaka-project/shaka-player/commit/777c27ee558d803b3f166a0ac8b9778b08196654)), closes [#4647](https://github.com/shaka-project/shaka-player/issues/4647)
62
+ * Fix HLS lazy-loading exception on switch ([#4645](https://github.com/shaka-project/shaka-player/issues/4645)) ([941ed4e](https://github.com/shaka-project/shaka-player/commit/941ed4ed286e4463d4973e994d322250678cfdcb)), closes [#4621](https://github.com/shaka-project/shaka-player/issues/4621)
63
+ * Fix HLS lazy-loading with DRM ([#4646](https://github.com/shaka-project/shaka-player/issues/4646)) ([a7f0be7](https://github.com/shaka-project/shaka-player/commit/a7f0be726d5b801ac2365bb0c9b6db9e576c964f)), closes [#4622](https://github.com/shaka-project/shaka-player/issues/4622)
64
+ * Fix HLS live stream subtitle offsets ([#4586](https://github.com/shaka-project/shaka-player/issues/4586)) ([3b9af2e](https://github.com/shaka-project/shaka-player/commit/3b9af2efa6be06c8c8a13e5d715828e2875d75d7))
65
+ * Fix ID3 parsing in TS segments ([#4609](https://github.com/shaka-project/shaka-player/issues/4609)) ([3b534fd](https://github.com/shaka-project/shaka-player/commit/3b534fd405ad3254d37a86fd1895ceeb96dc8094))
66
+ * Fix in-band key rotation on Xbox One ([#4478](https://github.com/shaka-project/shaka-player/issues/4478)) ([4e93311](https://github.com/shaka-project/shaka-player/commit/4e933116984beb630d31ce7a0b8c9bc6f8b48c06)), closes [#4401](https://github.com/shaka-project/shaka-player/issues/4401)
67
+ * Fix metadata assert when the ID3 is future (coming in a previous segment) ([#4640](https://github.com/shaka-project/shaka-player/issues/4640)) ([216bdd7](https://github.com/shaka-project/shaka-player/commit/216bdd7657d7be8bb33f71c3a62f649ecc25ace5))
68
+ * Fix multi-period DASH with descriptive audio ([#4629](https://github.com/shaka-project/shaka-player/issues/4629)) ([81ccd5c](https://github.com/shaka-project/shaka-player/commit/81ccd5c73ba5e021466b82c05f8b607b0c345849)), closes [#4500](https://github.com/shaka-project/shaka-player/issues/4500)
69
+ * fix support clear and encrypted periods ([#4606](https://github.com/shaka-project/shaka-player/issues/4606)) ([6256db3](https://github.com/shaka-project/shaka-player/commit/6256db3af5065ea1db1951ea7583d4608ce5e28d))
70
+ * Fix vanishing tracks while offline ([#4426](https://github.com/shaka-project/shaka-player/issues/4426)) ([c935cc1](https://github.com/shaka-project/shaka-player/commit/c935cc17703297a44b3ce3bda75d8f2ea37f4147)), closes [#4408](https://github.com/shaka-project/shaka-player/issues/4408)
71
+ * Fixed LCEVC decode breaking dependencies issue and read me addition ([#4565](https://github.com/shaka-project/shaka-player/issues/4565)) ([3c75d1a](https://github.com/shaka-project/shaka-player/commit/3c75d1a71aea039c802555031fffbf3cad77f6fc))
72
+ * focus on first element when back to the settings menu ([#4653](https://github.com/shaka-project/shaka-player/issues/4653)) ([b40b6e7](https://github.com/shaka-project/shaka-player/commit/b40b6e7669d4ccf8677a6d262767f3e155eb02e6)), closes [#4652](https://github.com/shaka-project/shaka-player/issues/4652)
73
+ * Force using mcap polyfill on EOS browsers ([#4630](https://github.com/shaka-project/shaka-player/issues/4630)) ([6191d58](https://github.com/shaka-project/shaka-player/commit/6191d5894deb679ed68da54357dc1f6831edeb23))
74
+ * **HLS:** Add a guard on closeSegmentIndex ([#4615](https://github.com/shaka-project/shaka-player/issues/4615)) ([57ce56b](https://github.com/shaka-project/shaka-player/commit/57ce56b8d2bd5d2b1626b38594e6d54defd10255))
75
+ * **HLS:** Fix detection of WebVTT subtitles in HLS by extension ([#4663](https://github.com/shaka-project/shaka-player/issues/4663)) ([8f698c6](https://github.com/shaka-project/shaka-player/commit/8f698c6eaad6e1019f388e2d36f28883a142ddfb))
76
+ * **HLS:** Fix lazy-loading of TS content ([#4601](https://github.com/shaka-project/shaka-player/issues/4601)) ([dd7356d](https://github.com/shaka-project/shaka-player/commit/dd7356d0e0655f59792b3f992841d4c0c8d5540a))
77
+ * **hls:** Fix raw format detection when the main playlist hasn't type ([#4583](https://github.com/shaka-project/shaka-player/issues/4583)) ([d319718](https://github.com/shaka-project/shaka-player/commit/d319718eded6e36f4fc705588de84a301a428d49))
78
+ * **hls:** Fix single-variant HLS streams ([#4573](https://github.com/shaka-project/shaka-player/issues/4573)) ([62906bd](https://github.com/shaka-project/shaka-player/commit/62906bdc9a26456d213a0c5d33f00b4454cdfb5b)), closes [#1936](https://github.com/shaka-project/shaka-player/issues/1936) [#3536](https://github.com/shaka-project/shaka-player/issues/3536)
79
+ * **HLS:** Infer missing codecs from config ([#4656](https://github.com/shaka-project/shaka-player/issues/4656)) ([08fc7dd](https://github.com/shaka-project/shaka-player/commit/08fc7dd717390c61dcc3304c58bfff5c87c77833))
80
+ * **HLS:** Return 0-0 seek range until fully loaded ([#4590](https://github.com/shaka-project/shaka-player/issues/4590)) ([bf50ada](https://github.com/shaka-project/shaka-player/commit/bf50ada6874879b33ac1acd34ec7e5375eb4c45d))
81
+ * Limit key ids to 32 characters ([#4614](https://github.com/shaka-project/shaka-player/issues/4614)) ([9531b07](https://github.com/shaka-project/shaka-player/commit/9531b07296163d8cc5c8416f0baa4ffd29c0a90d))
82
+ * Make XML parsing secure ([#4598](https://github.com/shaka-project/shaka-player/issues/4598)) ([a731eba](https://github.com/shaka-project/shaka-player/commit/a731eba804ae1a3f3ee3061550fa43ea82e06313))
83
+ * Missing AES-128 key of last HLS segment ([#4519](https://github.com/shaka-project/shaka-player/issues/4519)) ([3d0f752](https://github.com/shaka-project/shaka-player/commit/3d0f752c7d0677f750dbbd9bcd2895358358628f)), closes [#4517](https://github.com/shaka-project/shaka-player/issues/4517)
84
+ * **offline:** Add storage muxer init timeout ([#4566](https://github.com/shaka-project/shaka-player/issues/4566)) ([d4d3740](https://github.com/shaka-project/shaka-player/commit/d4d37407c87b7c032a16679e96b318146bbdee22))
85
+ * **playhead:** Safeguard getStallsDetected as stallDetector can be null ([#4581](https://github.com/shaka-project/shaka-player/issues/4581)) ([21ceaca](https://github.com/shaka-project/shaka-player/commit/21ceacab9e9577c18cef7f6c76f57f39eca3dca9))
86
+ * Resolve load failures for TS-based content on Android-based Cast devices ([#4569](https://github.com/shaka-project/shaka-player/issues/4569)). ([#4570](https://github.com/shaka-project/shaka-player/issues/4570)) ([65903aa](https://github.com/shaka-project/shaka-player/commit/65903aa27b5723632ff16a92059cb20c4879fc59))
87
+ * Respect existing app usage of Cast SDK ([#4523](https://github.com/shaka-project/shaka-player/issues/4523)) ([8d3d556](https://github.com/shaka-project/shaka-player/commit/8d3d556edaa817af686e1577f0a0bad92d0c74d4)), closes [#4521](https://github.com/shaka-project/shaka-player/issues/4521)
88
+ * return width and height in the stats when we are using src= ([#4435](https://github.com/shaka-project/shaka-player/issues/4435)) ([9bbfb57](https://github.com/shaka-project/shaka-player/commit/9bbfb57cb4e2c0653e6eb5681e10714cb939bad9))
89
+ * Simplify transmuxer to allow more mimetypes in the future ([#4642](https://github.com/shaka-project/shaka-player/issues/4642)) ([a14e84b](https://github.com/shaka-project/shaka-player/commit/a14e84b5c9a6feb8f7f2efcbae52fe9691d48412))
90
+ * **ttml:** Default TTML background color to transparent if unspecified ([#4496](https://github.com/shaka-project/shaka-player/issues/4496)) ([32b0a90](https://github.com/shaka-project/shaka-player/commit/32b0a90a8c583bba03a3d7b035a1244d325e3da6)), closes [#4468](https://github.com/shaka-project/shaka-player/issues/4468)
91
+ * **UI:** Ad position and ad counter are too close to each other ([#4416](https://github.com/shaka-project/shaka-player/issues/4416)) ([8376410](https://github.com/shaka-project/shaka-player/commit/83764104277363b6ce0e05d8e53449ff454c6f0e))
92
+ * **ui:** Fix exception on screen rotation if fullscreen is not supported ([#4669](https://github.com/shaka-project/shaka-player/issues/4669)) ([fd93f6a](https://github.com/shaka-project/shaka-player/commit/fd93f6ae1bc917061c035abcfb835855e336bb06))
93
+ * Virgin Media set top box is incorrectly categorized as Apple/Safari ([df79470](https://github.com/shaka-project/shaka-player/commit/df79470af088089f8beba2f44a236593820d655a))
94
+ * WebVTT line not correctly positioned in UITextDisplayer ([#4567](https://github.com/shaka-project/shaka-player/issues/4567)) ([#4682](https://github.com/shaka-project/shaka-player/issues/4682)) ([140aefe](https://github.com/shaka-project/shaka-player/commit/140aefee04718faa631ba090d6313e372b608fc1))
64
95
 
65
96
  ## [4.2.0](https://github.com/shaka-project/shaka-player/compare/v4.1.0...v4.2.0) (2022-08-16)
66
97
 
package/CONTRIBUTORS CHANGED
@@ -75,6 +75,7 @@ Jun Hong Chong <chongjunhong@gmail.com>
75
75
  Jürgen Kartnaller <kartnaller@lovelysystems.com>
76
76
  Leandro Ribeiro Moreira <leandro.ribeiro.moreira@gmail.com>
77
77
  Lucas Gabriel Sánchez <unkiwii@gmail.com>
78
+ Martin Stark <martin.stark@eyevinn.se>
78
79
  Matias Russitto <russitto@gmail.com>
79
80
  Matthias Van Parijs <matvp91@gmail.com>
80
81
  Mattias Wadman <mattias.wadman@gmail.com>
@@ -95,6 +96,7 @@ Peter Nycander <peter.nycander@gmail.com>
95
96
  Prakash Duggaraju <duggaraju@gmail.com>
96
97
  Robert Colantuoni <rgc@colantuoni.com>
97
98
  Robert Galluccio <robertnw5@gmail.com>
99
+ Rodolphe Breton <robloche@gmail.com>
98
100
  Rohit Makasana <rohitbm@google.com>
99
101
  Roi Lipman <roilipman@gmail.com>
100
102
  Roksolana Ivanyshyn <roksolana.ivanyshyn.pub@gmail.com>
@@ -121,8 +123,10 @@ Toshihiro Suzuki <t.suzuki326@gmail.com>
121
123
  Vasanth Polipelli <vasanthap@google.com>
122
124
  Vignesh Venkatasubramanian <vigneshv@google.com>
123
125
  Vincent Valot <valot.vince@gmail.com>
126
+ Vinod Balakrishnan <vinod.balakrishnan@v-nova.com>
124
127
  Wayne Morgan <wayne.morgan.dev@gmail.com>
125
128
  Yohann Connell <robinconnell@google.com>
126
129
  Raymond Cheng <raycheng100@gmail.com>
127
130
  Janroel Koppen <j.koppen@bluebillywig.com>
131
+ João Nabais <jlnabais@gmail.com>
128
132
  Koen Romers <koenromers@gmail.com>
package/README.md CHANGED
@@ -144,6 +144,20 @@ HLS features **not** supported:
144
144
 
145
145
  [mux.js]: https://github.com/videojs/mux.js/releases
146
146
 
147
+ ## MPEG-5 Part2 LCEVC Support
148
+
149
+ **Only supported on browsers with Media Source Extensions SourceBuffer support**
150
+
151
+ - MPEG-5 Part2 LCEVC decoding support (decoding provided by [lcevc_dil.js][], must be
152
+ separately included)
153
+
154
+ - Integration documentation : [docs](docs/design/lcevc-integration.md)
155
+
156
+ - More on [MPEG-5 Part2 LCEVC][]
157
+
158
+ [lcevc_dil.js]: https://www.npmjs.com/package/lcevc_dil.js
159
+ [MPEG-5 Part2 LCEVC]: https://www.lcevc.org
160
+
147
161
 
148
162
  ## DRM support matrix
149
163
 
@@ -40,6 +40,7 @@ shakaAssets.Source = {
40
40
  APPLE: shakaDemo.MessageIds.APPLE,
41
41
  IRT: shakaDemo.MessageIds.IRT,
42
42
  MICROSOFT: shakaDemo.MessageIds.MICROSOFT,
43
+ VNOVA: shakaDemo.MessageIds.VNOVA,
43
44
  };
44
45
 
45
46
 
@@ -143,6 +144,9 @@ shakaAssets.Feature = {
143
144
 
144
145
  // Set if the asset has at least one image stream.
145
146
  THUMBNAILS: shakaDemo.MessageIds.THUMBNAILS,
147
+
148
+ // Set if the asset has LCEVC.
149
+ LCEVC: shakaDemo.MessageIds.LCEVC,
146
150
  };
147
151
 
148
152
 
@@ -1283,5 +1287,59 @@ shakaAssets.testAssets = [
1283
1287
  .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1284
1288
  .addLicenseServer('com.microsoft.playready', 'http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(persist:false,ck:W31bfVt9W31bfVt9W31bfQ==,ckt:aescbc)'),
1285
1289
  // }}}
1290
+
1291
+ // MPEG-5 LCEVC assets {{{
1292
+ /* LCEVC Enabled Content with LCEVC Encoded Stream */
1293
+ new ShakaDemoAssetInfo(
1294
+ /* name= */ 'Big Buck Bunny (LCEVC H264)',
1295
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/big_buck_bunny.png',
1296
+ /* manifestUri= */ 'https://dyctis843rxh5.cloudfront.net/vnIAZIaowG1K7qOt/master.m3u8',
1297
+ /* source= */ shakaAssets.Source.VNOVA)
1298
+ .addFeature(shakaAssets.Feature.HLS)
1299
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1300
+ .addFeature(shakaAssets.Feature.MP4)
1301
+ .addFeature(shakaAssets.Feature.WEBM)
1302
+ .addFeature(shakaAssets.Feature.OFFLINE)
1303
+ .addFeature(shakaAssets.Feature.LCEVC)
1304
+ .addDescription('H264 HLS stream with LCEVC enhancement')
1305
+ .markAsFeatured('Big Buck Bunny (LCEVC H264)')
1306
+ .setExtraConfig({
1307
+ streaming: {
1308
+ useNativeHlsOnSafari: false,
1309
+ forceTransmux: true,
1310
+ },
1311
+ lcevc: {
1312
+ enabled: true,
1313
+ dynamicPerformanceScaling: true,
1314
+ logLevel: 0,
1315
+ drawLogo: false,
1316
+ },
1317
+ }),
1318
+ new ShakaDemoAssetInfo(
1319
+ /* name= */ 'Game (LCEVC H264)',
1320
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/big_buck_bunny.png',
1321
+ /* manifestUri= */ 'https://dyctis843rxh5.cloudfront.net/vny72tI8aXJDcTYX/master.m3u8',
1322
+ /* source= */ shakaAssets.Source.VNOVA)
1323
+ .addFeature(shakaAssets.Feature.HLS)
1324
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1325
+ .addFeature(shakaAssets.Feature.MP4)
1326
+ .addFeature(shakaAssets.Feature.WEBM)
1327
+ .addFeature(shakaAssets.Feature.OFFLINE)
1328
+ .addFeature(shakaAssets.Feature.LCEVC)
1329
+ .addDescription('H264 HLS stream with LCEVC enhancement')
1330
+ .markAsFeatured('Game (LCEVC H264)')
1331
+ .setExtraConfig({
1332
+ streaming: {
1333
+ useNativeHlsOnSafari: false,
1334
+ forceTransmux: true,
1335
+ },
1336
+ lcevc: {
1337
+ enabled: true,
1338
+ dynamicPerformanceScaling: true,
1339
+ logLevel: 0,
1340
+ drawLogo: false,
1341
+ },
1342
+ }),
1343
+ // }}}
1286
1344
  ];
1287
1345
  /* eslint-enable max-len */
@@ -17,6 +17,7 @@ shakaDemo.MessageIds = {
17
17
  DASH: 'DEMO_DASH',
18
18
  HIGH_DEFINITION: 'DEMO_HIGH_DEFINITION',
19
19
  HLS: 'DEMO_HLS',
20
+ LCEVC: 'DEMO_LCEVC',
20
21
  LIVE: 'DEMO_LIVE',
21
22
  MP2TS: 'DEMO_MP2TS',
22
23
  MP4: 'DEMO_MP4',
@@ -85,6 +86,10 @@ shakaDemo.MessageIds = {
85
86
  UNSUPPORTED_NO_OFFLINE: 'DEMO_UNSUPPORTED_NO_OFFLINE',
86
87
  UNSUPPORTED_NO_KEY_SUPPORT: 'DEMO_UNSUPPORTED_NO_KEY_SUPPORT',
87
88
  UNSUPPORTED_NO_LICENSE_SUPPORT: 'DEMO_UNSUPPORTED_NO_LICENSE_SUPPORT',
89
+ /* Visualizer. */
90
+ VISUALIZER_AUTO_SCREENSHOT_TOGGLE: 'DEMO_VISUALIZER_AUTO_SCREENSHOT_TOGGLE',
91
+ VISUALIZER_BUTTON: 'DEMO_VISUALIZER_BUTTON',
92
+ VISUALIZER_SCREENSHOT_BUTTON: 'DEMO_VISUALIZER_SCREENSHOT_BUTTON',
88
93
  /* Asset card. */
89
94
  DELETE_STORED_PROMPT: 'DEMO_DELETE_STORED_PROMPT',
90
95
  UNSUPPORTED: 'DEMO_UNSUPPORTED',
@@ -151,6 +156,11 @@ shakaDemo.MessageIds = {
151
156
  AUDIO_ROBUSTNESS: 'DEMO_AUDIO_ROBUSTNESS',
152
157
  AUTO_CORRECT_DASH_DRIFT: 'DEMO_AUTO_CORRECT_DASH_DRIFT',
153
158
  AUTO_LOW_LATENCY: 'DEMO_AUTO_LOW_LATENCY',
159
+ AUTO_SHOW_TEXT: 'DEMO_AUTO_SHOW_TEXT',
160
+ AUTO_SHOW_TEXT_NEVER: 'DEMO_AUTO_SHOW_TEXT_NEVER',
161
+ AUTO_SHOW_TEXT_ALWAYS: 'DEMO_AUTO_SHOW_TEXT_ALWAYS',
162
+ AUTO_SHOW_TEXT_IF_PREFERRED_TEXT_LANGUAGE: 'DEMO_AUTO_SHOW_TEXT_IF_PREFERRED_TEXT_LANGUAGE',
163
+ AUTO_SHOW_TEXT_IF_SUBTITLES_MAY_BE_NEEDED: 'DEMO_AUTO_SHOW_TEXT_IF_SUBTITLES_MAY_BE_NEEDED',
154
164
  AVAILABILITY_WINDOW_OVERRIDE: 'DEMO_AVAILABILITY_WINDOW_OVERRIDE',
155
165
  BACKOFF_FACTOR: 'DEMO_BACKOFF_FACTOR',
156
166
  BASE_DELAY: 'DEMO_BASE_DELAY',
@@ -181,7 +191,7 @@ shakaDemo.MessageIds = {
181
191
  ENABLED: 'DEMO_ENABLED',
182
192
  FAST_HALF_LIFE: 'DEMO_FAST_HALF_LIFE',
183
193
  FORCE_HTTPS: 'DEMO_FORCE_HTTPS',
184
- FORCE_TRANSMUX_TS: 'DEMO_FORCE_TRANSMUX_TS',
194
+ FORCE_TRANSMUX: 'DEMO_FORCE_TRANSMUX',
185
195
  FUZZ_FACTOR: 'DEMO_FUZZ_FACTOR',
186
196
  GAP_DETECTION_THRESHOLD: 'DEMO_GAP_DETECTION_THRESHOLD',
187
197
  IGNORE_DASH_EMPTY_ADAPTATION_SET: 'DEMO_IGNORE_DASH_EMPTY_ADAPTATION_SET',
@@ -197,6 +207,11 @@ shakaDemo.MessageIds = {
197
207
  INACCURATE_MANIFEST_TOLERANCE: 'DEMO_INACCURATE_MANIFEST_TOLERANCE',
198
208
  INITIAL_SEGMENT_LIMIT: 'DEMO_INITIAL_SEGMENT_LIMIT',
199
209
  LANGUAGE_SECTION_HEADER: 'DEMO_LANGUAGE_SECTION_HEADER',
210
+ LCEVC_DRAW_LOGO: 'DEMO_LCEVC_DRAW_LOGO',
211
+ LCEVC_DYNAMIC_PERFORMANCE_SCALING: 'DEMO_LCEVC_DYNAMIC_PERFORMANCE_SCALING',
212
+ LCEVC_LOG_LEVEL: 'DEMO_LCEVC_LOG_LEVEL',
213
+ LCEVC_SECTION_HEADER: 'DEMO_LCEVC_SECTION_HEADER',
214
+ LIVE_SEGMENTS_DELAY: 'DEMO_LIVE_SEGMENTS_DELAY',
200
215
  LOG_LEVEL: 'DEMO_LOG_LEVEL',
201
216
  LOG_LEVEL_DEBUG: 'DEMO_LOG_LEVEL_DEBUG',
202
217
  LOG_LEVEL_INFO: 'DEMO_LOG_LEVEL_INFO',
@@ -213,6 +228,7 @@ shakaDemo.MessageIds = {
213
228
  MAX_HEIGHT: 'DEMO_MAX_HEIGHT',
214
229
  MAX_PIXELS: 'DEMO_MAX_PIXELS',
215
230
  MAX_WIDTH: 'DEMO_MAX_WIDTH',
231
+ MEDIA_SOURCE_SECTION_HEADER: 'DEMO_MEDIA_SOURCE_SECTION_HEADER',
216
232
  MIN_BANDWIDTH: 'DEMO_MIN_BANDWIDTH',
217
233
  MIN_BYTES: 'DEMO_MIN_BYTES',
218
234
  MIN_FRAMERATE: 'DEMO_MIN_FRAMERATE',
@@ -232,13 +248,16 @@ shakaDemo.MessageIds = {
232
248
  PREFER_NATIVE_HLS: 'DEMO_PREFER_NATIVE_HLS',
233
249
  REBUFFERING_GOAL: 'DEMO_REBUFFERING_GOAL',
234
250
  RESTRICT_TO_ELEMENT_SIZE: 'DEMO_RESTRICT_TO_ELEMENT_SIZE',
251
+ RESTRICT_TO_SCREEN_SIZE: 'DEMO_RESTRICT_TO_SCREEN_SIZE',
235
252
  RESTRICTIONS_SECTION_HEADER: 'DEMO_RESTRICTIONS_SECTION_HEADER',
236
253
  SAFE_SEEK_OFFSET: 'DEMO_SAFE_SEEK_OFFSET',
237
254
  SAFE_SKIP_DISTANCE: 'DEMO_SAFE_SKIP_DISTANCE',
238
255
  SEGMENT_RELATIVE_VTT_TIMING: 'DEMO_SEGMENT_RELATIVE_VTT_TIMING',
256
+ SEQUENCE_MODE: 'DEMO_SEQUENCE_MODE',
239
257
  SESSION_ID: 'DEMO_SESSION_ID',
240
258
  SHAKA_CONTROLS: 'DEMO_SHAKA_CONTROLS',
241
259
  SLOW_HALF_LIFE: 'DEMO_SLOW_HALF_LIFE',
260
+ SOURCE_BUFFER_EXTRA_FEATURES: 'DEMO_SOURCE_BUFFER_EXTRA_FEATURES',
242
261
  STALL_DETECTOR_ENABLED: 'DEMO_STALL_DETECTOR_ENABLED',
243
262
  STALL_THRESHOLD: 'DEMO_STALL_THRESHOLD',
244
263
  STALL_TIMEOUT: 'DEMO_STALL_TIMEOUT',
@@ -257,7 +276,9 @@ shakaDemo.MessageIds = {
257
276
  USE_HEADERS: 'DEMO_USE_HEADERS',
258
277
  USE_NATIVE_HLS_SAFARI: 'DEMO_USE_NATIVE_HLS_SAFARI',
259
278
  USE_PERSISTENT_LICENSES: 'DEMO_USE_PERSISTENT_LICENSES',
279
+ USE_SAFARI_BEHAVIOR_FOR_LIVE: 'DEMO_USE_SAFARI_BEHAVIOR_FOR_LIVE',
260
280
  VIDEO_ROBUSTNESS: 'DEMO_VIDEO_ROBUSTNESS',
281
+ VNOVA: 'DEMO_VNOVA',
261
282
  XLINK_FAIL_GRACEFULLY: 'DEMO_XLINK_FAIL_GRACEFULLY',
262
283
  };
263
284
  /* eslint-enable max-len */
package/demo/config.js CHANGED
@@ -92,10 +92,12 @@ shakaDemo.Config = class {
92
92
  this.addOfflineSection_();
93
93
  this.addDrmSection_();
94
94
  this.addStreamingSection_();
95
+ this.addMediaSourceSection_();
95
96
  this.addManifestSection_();
96
97
  this.addRetrictionsSection_('',
97
98
  shakaDemo.MessageIds.RESTRICTIONS_SECTION_HEADER);
98
99
  this.addCmcdSection_();
100
+ this.addLcevcSection_();
99
101
  }
100
102
 
101
103
  /**
@@ -216,6 +218,10 @@ shakaDemo.Config = class {
216
218
  'manifest.hls.defaultVideoCodec')
217
219
  .addBoolInput_(MessageIds.IGNORE_MANIFEST_PROGRAM_DATE_TIME,
218
220
  'manifest.hls.ignoreManifestProgramDateTime')
221
+ .addBoolInput_(MessageIds.USE_SAFARI_BEHAVIOR_FOR_LIVE,
222
+ 'manifest.hls.useSafariBehaviorForLive')
223
+ .addNumberInput_(MessageIds.LIVE_SEGMENTS_DELAY,
224
+ 'manifest.hls.liveSegmentsDelay')
219
225
  .addNumberInput_(MessageIds.AVAILABILITY_WINDOW_OVERRIDE,
220
226
  'manifest.availabilityWindowOverride',
221
227
  /* canBeDecimal= */ true,
@@ -231,6 +237,8 @@ shakaDemo.Config = class {
231
237
  /* canBeDecimal= */ false,
232
238
  /* canBeZero= */ false,
233
239
  /* canBeUnset= */ true)
240
+ .addBoolInput_(MessageIds.SEQUENCE_MODE,
241
+ 'manifest.dash.sequenceMode')
234
242
  .addBoolInput_(MessageIds.DISABLE_AUDIO,
235
243
  'manifest.disableAudio')
236
244
  .addBoolInput_(MessageIds.DISABLE_VIDEO,
@@ -276,6 +284,8 @@ shakaDemo.Config = class {
276
284
  /* canBeDecimal= */ true)
277
285
  .addBoolInput_(MessageIds.RESTRICT_TO_ELEMENT_SIZE,
278
286
  'abr.restrictToElementSize')
287
+ .addBoolInput_(MessageIds.RESTRICT_TO_SCREEN_SIZE,
288
+ 'abr.restrictToScreenSize')
279
289
  .addBoolInput_(MessageIds.IGNORE_DEVICE_PIXEL_RATIO,
280
290
  'abr.ignoreDevicePixelRatio');
281
291
  this.addRetrictionsSection_('abr',
@@ -293,6 +303,18 @@ shakaDemo.Config = class {
293
303
  .addBoolInput_(MessageIds.USE_HEADERS, 'cmcd.useHeaders');
294
304
  }
295
305
 
306
+ /** @private */
307
+ addLcevcSection_() {
308
+ const MessageIds = shakaDemo.MessageIds;
309
+ const docLink = this.resolveExternLink_('.LcevcConfiguration');
310
+ this.addSection_(MessageIds.LCEVC_SECTION_HEADER, docLink)
311
+ .addBoolInput_(MessageIds.ENABLED, 'lcevc.enabled')
312
+ .addBoolInput_(MessageIds.LCEVC_DYNAMIC_PERFORMANCE_SCALING,
313
+ 'lcevc.dynamicPerformanceScaling')
314
+ .addNumberInput_(MessageIds.LCEVC_LOG_LEVEL, 'lcevc.logLevel')
315
+ .addBoolInput_(MessageIds.LCEVC_DRAW_LOGO, 'lcevc.drawLogo');
316
+ }
317
+
296
318
  /**
297
319
  * @param {string} category
298
320
  * @param {!shakaDemo.MessageIds} sectionName
@@ -414,8 +436,8 @@ shakaDemo.Config = class {
414
436
  this.latestInput_.input().checked = true;
415
437
  }
416
438
 
417
- this.addBoolInput_(MessageIds.FORCE_TRANSMUX_TS,
418
- 'streaming.forceTransmuxTS')
439
+ this.addBoolInput_(MessageIds.FORCE_TRANSMUX,
440
+ 'streaming.forceTransmux')
419
441
  .addBoolInput_(MessageIds.START_AT_SEGMENT_BOUNDARY,
420
442
  'streaming.startAtSegmentBoundary')
421
443
  .addBoolInput_(MessageIds.IGNORE_TEXT_FAILURES,
@@ -428,14 +450,40 @@ shakaDemo.Config = class {
428
450
  MessageIds.STREAMING_RETRY_SECTION_HEADER);
429
451
  }
430
452
 
453
+ /** @private */
454
+ addMediaSourceSection_() {
455
+ const MessageIds = shakaDemo.MessageIds;
456
+ const docLink = this.resolveExternLink_('.MediaSourceConfiguration');
457
+ this.addSection_(MessageIds.MEDIA_SOURCE_SECTION_HEADER, docLink)
458
+ .addTextInput_(MessageIds.SOURCE_BUFFER_EXTRA_FEATURES,
459
+ 'mediaSource.sourceBufferExtraFeatures');
460
+ }
461
+
431
462
  /** @private */
432
463
  addLanguageSection_() {
433
464
  const MessageIds = shakaDemo.MessageIds;
434
465
  const docLink = this.resolveExternLink_('.PlayerConfiguration');
466
+
467
+ const autoShowTextOptions = shaka.config.AutoShowText;
468
+ const localize = (name) => shakaDemoMain.getLocalizedString(name);
469
+ const autoShowTextOptionNames = {
470
+ 'NEVER': localize(MessageIds.AUTO_SHOW_TEXT_NEVER),
471
+ 'ALWAYS': localize(MessageIds.AUTO_SHOW_TEXT_ALWAYS),
472
+ 'IF_PREFERRED_TEXT_LANGUAGE':
473
+ localize(MessageIds.AUTO_SHOW_TEXT_IF_PREFERRED_TEXT_LANGUAGE),
474
+ 'IF_SUBTITLES_MAY_BE_NEEDED':
475
+ localize(MessageIds.AUTO_SHOW_TEXT_IF_SUBTITLES_MAY_BE_NEEDED),
476
+ };
477
+
435
478
  this.addSection_(MessageIds.LANGUAGE_SECTION_HEADER, docLink)
436
479
  .addTextInput_(MessageIds.AUDIO_LANGUAGE, 'preferredAudioLanguage')
437
480
  .addTextInput_(MessageIds.TEXT_LANGUAGE, 'preferredTextLanguage')
438
- .addTextInput_(MessageIds.TEXT_ROLE, 'preferredTextRole');
481
+ .addTextInput_(MessageIds.TEXT_ROLE, 'preferredTextRole')
482
+ .addSelectInput_(
483
+ MessageIds.AUTO_SHOW_TEXT,
484
+ 'autoShowText',
485
+ autoShowTextOptions,
486
+ autoShowTextOptionNames);
439
487
  const onChange = (input) => {
440
488
  shakaDemoMain.setUILocale(input.value);
441
489
  shakaDemoMain.remakeHash();
@@ -525,7 +573,7 @@ shakaDemo.Config = class {
525
573
  }
526
574
  shakaDemoMain.remakeHash();
527
575
  };
528
- this.addSelectInput_(MessageIds.LOG_LEVEL, logLevels, onChange);
576
+ this.addCustomSelectInput_(MessageIds.LOG_LEVEL, logLevels, onChange);
529
577
  const input = this.latestInput_.input();
530
578
  switch (shaka['log']['currentLevel']) {
531
579
  case Level['DEBUG']:
@@ -707,7 +755,7 @@ shakaDemo.Config = class {
707
755
  * @return {!shakaDemo.Config}
708
756
  * @private
709
757
  */
710
- addSelectInput_(name, values, onChange, tooltipMessage) {
758
+ addCustomSelectInput_(name, values, onChange, tooltipMessage) {
711
759
  this.createRow_(name, tooltipMessage);
712
760
  // The input is not provided a name, as (in this enclosed space) it makes
713
761
  // the actual field unreadable.
@@ -716,6 +764,42 @@ shakaDemo.Config = class {
716
764
  return this;
717
765
  }
718
766
 
767
+ /**
768
+ * @param {!shakaDemo.MessageIds} name
769
+ * @param {string} valueName
770
+ * @param {!Object.<string, ?>} options
771
+ * @param {!Object.<string, string>} optionNames
772
+ * @param {shakaDemo.MessageIds=} tooltipMessage
773
+ * @return {!shakaDemo.Config}
774
+ * @private
775
+ */
776
+ addSelectInput_(name, valueName, options, optionNames, tooltipMessage) {
777
+ const onChange = (input) => {
778
+ shakaDemoMain.configure(valueName, options[input.value]);
779
+ shakaDemoMain.remakeHash();
780
+ };
781
+
782
+ // If there are any translations missing for option names, fill in the
783
+ // constant from the enum. This ensures new enum values are usable in the
784
+ // demo in some form, even if they are forgotten in the demo config.
785
+ for (const key in options) {
786
+ if (!(key in optionNames)) {
787
+ optionNames[key] = key;
788
+ }
789
+ }
790
+
791
+ this.addCustomSelectInput_(name, optionNames, onChange, tooltipMessage);
792
+
793
+ const initialValue = shakaDemoMain.getCurrentConfigValue(valueName);
794
+ for (const key in options) {
795
+ if (options[key] == initialValue) {
796
+ this.latestInput_.input().value = key;
797
+ }
798
+ }
799
+
800
+ return this;
801
+ }
802
+
719
803
  /**
720
804
  * @param {!shakaDemo.MessageIds} name
721
805
  * @param {shakaDemo.MessageIds=} tooltipMessage