shaka-player 4.5.0 → 4.6.1

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 (214) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. package/AUTHORS +2 -0
  3. package/CHANGELOG.md +109 -0
  4. package/CODE_OF_CONDUCT.md +1 -1
  5. package/CONTRIBUTORS +2 -0
  6. package/README.md +38 -32
  7. package/demo/common/asset.js +11 -17
  8. package/demo/common/assets.js +117 -11
  9. package/demo/config.js +28 -1
  10. package/demo/custom.js +52 -38
  11. package/demo/main.js +11 -3
  12. package/demo/search.js +7 -0
  13. package/dist/controls.css +1 -1
  14. package/dist/controls.css.map +1 -1
  15. package/dist/demo.compiled.debug.js +133 -124
  16. package/dist/demo.compiled.debug.map +3 -3
  17. package/dist/demo.compiled.js +133 -124
  18. package/dist/demo.compiled.map +3 -3
  19. package/dist/deps.js +20 -18
  20. package/dist/locales.js +34 -30
  21. package/dist/receiver.compiled.debug.js +58 -50
  22. package/dist/receiver.compiled.debug.map +3 -3
  23. package/dist/receiver.compiled.js +58 -50
  24. package/dist/receiver.compiled.map +3 -3
  25. package/dist/shaka-player.compiled.d.ts +440 -390
  26. package/dist/shaka-player.compiled.debug.d.ts +440 -390
  27. package/dist/shaka-player.compiled.debug.externs.js +162 -77
  28. package/dist/shaka-player.compiled.debug.js +789 -738
  29. package/dist/shaka-player.compiled.debug.map +4 -4
  30. package/dist/shaka-player.compiled.externs.js +162 -77
  31. package/dist/shaka-player.compiled.js +1147 -1113
  32. package/dist/shaka-player.compiled.map +4 -4
  33. package/dist/shaka-player.ui.d.ts +491 -437
  34. package/dist/shaka-player.ui.debug.d.ts +491 -437
  35. package/dist/shaka-player.ui.debug.externs.js +167 -77
  36. package/dist/shaka-player.ui.debug.js +857 -791
  37. package/dist/shaka-player.ui.debug.map +4 -4
  38. package/dist/shaka-player.ui.externs.js +167 -77
  39. package/dist/shaka-player.ui.js +1359 -1314
  40. package/dist/shaka-player.ui.map +4 -4
  41. package/docs/tutorials/ad_monetization.md +54 -0
  42. package/docs/tutorials/basic-usage.md +2 -1
  43. package/docs/tutorials/errors.md +2 -1
  44. package/docs/tutorials/offline.md +10 -8
  45. package/docs/tutorials/plugins.md +5 -0
  46. package/docs/tutorials/ui-customization.md +13 -0
  47. package/docs/tutorials/ui.md +2 -1
  48. package/docs/tutorials/upgrade.md +3 -0
  49. package/externs/managedmediasource.js +24 -0
  50. package/externs/shaka/abr_manager.js +6 -2
  51. package/externs/shaka/cea.js +7 -0
  52. package/externs/shaka/codecs.js +5 -3
  53. package/externs/shaka/manifest.js +21 -5
  54. package/externs/shaka/manifest_parser.js +17 -0
  55. package/externs/shaka/net.js +2 -2
  56. package/externs/shaka/offline.js +9 -2
  57. package/externs/shaka/player.js +53 -7
  58. package/externs/shaka/text.js +3 -1
  59. package/externs/shaka/transmuxer.js +1 -1
  60. package/lib/abr/simple_abr_manager.js +25 -8
  61. package/lib/ads/media_tailor_ad_manager.js +14 -3
  62. package/lib/cast/cast_receiver.js +1 -1
  63. package/lib/cea/cea_decoder.js +28 -0
  64. package/lib/cea/dummy_caption_decoder.js +5 -0
  65. package/lib/dash/dash_parser.js +251 -84
  66. package/lib/dash/mpd_utils.js +52 -31
  67. package/lib/dash/segment_base.js +4 -5
  68. package/lib/dash/segment_list.js +5 -4
  69. package/lib/dash/segment_template.js +92 -29
  70. package/lib/hls/hls_classes.js +28 -43
  71. package/lib/hls/hls_parser.js +770 -652
  72. package/lib/hls/hls_utils.js +64 -5
  73. package/lib/hls/manifest_text_parser.js +7 -11
  74. package/lib/media/adaptation_set.js +20 -13
  75. package/lib/media/adaptation_set_criteria.js +70 -18
  76. package/lib/media/closed_caption_parser.js +13 -0
  77. package/lib/media/content_workarounds.js +6 -0
  78. package/lib/media/drm_engine.js +8 -13
  79. package/lib/media/manifest_parser.js +8 -113
  80. package/lib/media/media_source_capabilities.js +10 -3
  81. package/lib/media/media_source_engine.js +75 -21
  82. package/lib/media/play_rate_controller.js +8 -38
  83. package/lib/media/presentation_timeline.js +7 -1
  84. package/lib/media/quality_observer.js +1 -1
  85. package/lib/media/segment_index.js +5 -5
  86. package/lib/media/segment_prefetch.js +92 -24
  87. package/lib/media/segment_reference.js +67 -1
  88. package/lib/media/segment_utils.js +343 -0
  89. package/lib/media/stall_detector.js +0 -3
  90. package/lib/media/streaming_engine.js +72 -44
  91. package/lib/mss/mss_parser.js +18 -2
  92. package/lib/net/networking_engine.js +66 -12
  93. package/lib/net/networking_utils.js +95 -0
  94. package/lib/offline/indexeddb/v1_storage_cell.js +2 -0
  95. package/lib/offline/indexeddb/v2_storage_cell.js +2 -0
  96. package/lib/offline/manifest_converter.js +2 -0
  97. package/lib/offline/offline_manifest_parser.js +10 -0
  98. package/lib/offline/storage.js +11 -7
  99. package/lib/player.js +998 -1503
  100. package/lib/polyfill/mediasource.js +22 -1
  101. package/lib/text/mp4_ttml_parser.js +2 -2
  102. package/lib/text/srt_text_parser.js +2 -2
  103. package/lib/text/stub_text_displayer.js +51 -0
  104. package/lib/text/text_engine.js +3 -2
  105. package/lib/text/ttml_text_parser.js +28 -5
  106. package/lib/text/ui_text_displayer.js +4 -0
  107. package/lib/text/vtt_text_parser.js +7 -2
  108. package/lib/transmuxer/aac_transmuxer.js +1 -1
  109. package/lib/transmuxer/ac3_transmuxer.js +1 -1
  110. package/lib/transmuxer/ec3_transmuxer.js +1 -1
  111. package/lib/transmuxer/h264.js +5 -4
  112. package/lib/transmuxer/h265.js +5 -4
  113. package/lib/transmuxer/mp3_transmuxer.js +1 -1
  114. package/lib/transmuxer/mpeg_ts_transmuxer.js +1 -1
  115. package/lib/transmuxer/mss_transmuxer.js +1 -1
  116. package/lib/transmuxer/ts_transmuxer.js +33 -13
  117. package/lib/util/buffer_utils.js +26 -4
  118. package/lib/util/content_steering_manager.js +358 -0
  119. package/lib/util/error.js +2 -6
  120. package/lib/util/fairplay_utils.js +1 -1
  121. package/lib/util/fake_event.js +5 -1
  122. package/lib/util/id3_utils.js +50 -1
  123. package/lib/util/manifest_parser_utils.js +12 -8
  124. package/lib/util/mp4_generator.js +2 -4
  125. package/lib/util/mutex.js +59 -0
  126. package/lib/util/object_utils.js +1 -1
  127. package/lib/util/periods.js +154 -179
  128. package/lib/util/platform.js +4 -3
  129. package/lib/util/player_configuration.js +35 -6
  130. package/lib/util/stream_utils.js +105 -98
  131. package/lib/util/ts_parser.js +124 -73
  132. package/lib/util/uint8array_utils.js +5 -1
  133. package/lib/util/xml_utils.js +5 -0
  134. package/maintained-branches.md +2 -2
  135. package/package.json +1 -1
  136. package/roadmap.md +15 -5
  137. package/shaka-player.uncompiled.js +0 -1
  138. package/test/abr/simple_abr_manager_unit.js +33 -33
  139. package/test/ads/ad_manager_unit.js +3 -2
  140. package/test/cast/cast_receiver_integration.js +3 -4
  141. package/test/cast/cast_utils_unit.js +2 -0
  142. package/test/cea/cea_decoder_unit.js +7 -0
  143. package/test/codec_switching/codec_switching_integration.js +2 -1
  144. package/test/dash/dash_parser_integration.js +2 -1
  145. package/test/dash/dash_parser_live_unit.js +0 -19
  146. package/test/dash/dash_parser_manifest_unit.js +494 -2
  147. package/test/dash/mpd_utils_unit.js +61 -30
  148. package/test/hls/hls_live_unit.js +12 -3
  149. package/test/hls/hls_parser_unit.js +417 -27
  150. package/test/hls/manifest_text_parser_unit.js +32 -99
  151. package/test/media/adaptation_set_criteria_unit.js +172 -21
  152. package/test/media/adaptation_set_unit.js +1 -0
  153. package/test/media/content_workarounds_unit.js +1 -1
  154. package/test/media/drm_engine_unit.js +3 -3
  155. package/test/media/media_source_engine_unit.js +1 -1
  156. package/test/media/play_rate_controller_unit.js +0 -48
  157. package/test/media/segment_index_unit.js +2 -1
  158. package/test/mss/mss_player_integration.js +3 -2
  159. package/test/net/networking_engine_unit.js +3 -3
  160. package/test/{media/manifest_parser_unit.js → net/networking_utils_unit.js} +2 -2
  161. package/test/offline/manifest_convert_unit.js +9 -0
  162. package/test/offline/offline_integration.js +2 -1
  163. package/test/offline/storage_integration.js +21 -9
  164. package/test/player_external.js +4 -2
  165. package/test/player_integration.js +15 -4
  166. package/test/player_load_graph_integration.js +47 -151
  167. package/test/player_src_equals_external.js +1 -0
  168. package/test/player_src_equals_integration.js +71 -4
  169. package/test/player_unit.js +80 -27
  170. package/test/test/util/fake_media_source_engine.js +5 -0
  171. package/test/test/util/fake_networking_engine.js +9 -1
  172. package/test/test/util/fake_segment_prefetch.js +3 -0
  173. package/test/test/util/manifest_generator.js +4 -0
  174. package/test/test/util/manifest_parser_util.js +14 -2
  175. package/test/test/util/offline_utils.js +1 -0
  176. package/test/test/util/simple_fakes.js +2 -2
  177. package/test/test/util/streaming_engine_util.js +3 -0
  178. package/test/test/util/test_scheme.js +6 -0
  179. package/test/test/util/ui_utils.js +4 -3
  180. package/test/text/mp4_ttml_parser_unit.js +4 -4
  181. package/test/text/srt_text_parser_unit.js +1 -1
  182. package/test/text/text_displayer_layout_unit.js +1 -1
  183. package/test/text/text_engine_unit.js +6 -0
  184. package/test/text/ttml_text_parser_unit.js +33 -2
  185. package/test/transmuxer/transmuxer_engine_integration.js +9 -0
  186. package/test/transmuxer/transmuxer_integration.js +33 -3
  187. package/test/ui/ad_ui_unit.js +2 -2
  188. package/test/ui/ui_customization_unit.js +17 -16
  189. package/test/ui/ui_integration.js +30 -20
  190. package/test/ui/ui_unit.js +25 -19
  191. package/test/util/buffer_utils_unit.js +1 -1
  192. package/test/util/content_steering_manager_unit.js +427 -0
  193. package/test/util/id3_utils_unit.js +52 -0
  194. package/test/util/stream_utils_unit.js +17 -113
  195. package/test/util/ts_parser_unit.js +3 -3
  196. package/third_party/closure-uri/uri.js +13 -1
  197. package/ui/audio_language_selection.js +9 -2
  198. package/ui/externs/ui.js +17 -2
  199. package/ui/language_utils.js +43 -8
  200. package/ui/less/range_elements.less +33 -0
  201. package/ui/locales/en.json +1 -0
  202. package/ui/locales/es-419.json +1 -0
  203. package/ui/locales/es.json +1 -0
  204. package/ui/locales/source.json +4 -0
  205. package/ui/localization.js +10 -0
  206. package/ui/remote_button.js +3 -1
  207. package/ui/resolution_selection.js +47 -10
  208. package/ui/seek_bar.js +296 -3
  209. package/ui/text_selection.js +2 -1
  210. package/ui/ui.js +6 -2
  211. package/lib/routing/node.js +0 -23
  212. package/lib/routing/payload.js +0 -47
  213. package/lib/routing/walker.js +0 -587
  214. package/test/routing/walker_unit.js +0 -505
@@ -44,7 +44,7 @@ assignees: ''
44
44
 
45
45
  **What are the manifest and license server URIs?**
46
46
  <!-- NOTE:
47
- You can send the URIs to <shaka-player-issues@google.com> instead,
47
+ You can send the URIs to <shaka-player-maintainers@googlegroups.com> instead,
48
48
  but please use GitHub and the template for the rest.
49
49
  A copy of the manifest text or an attached manifest will **not** be
50
50
  enough to reproduce your issue, and we **will** ask you to send a
package/AUTHORS CHANGED
@@ -21,6 +21,7 @@ Alugha GmbH <*@alugha.com>
21
21
  Alvaro Velad Galvan <ladvan91@hotmail.com>
22
22
  Amila Sampath <lucksy@gmail.com>
23
23
  Anthony Stansbridge <github@anthonystansbridge.co.uk>
24
+ Armand Zangue <armand.zangue@gmail.com>
24
25
  Benjamin Wallberg <me@bwallberg.com>
25
26
  Bonnier Broadcasting <*@bonnierbroadcasting.com>
26
27
  Bryan Huh <bhh1988@gmail.com>
@@ -41,6 +42,7 @@ Gil Gonen <gil.gonen@gmail.com>
41
42
  Giorgio Gamberoni <giorgio.gamberoni@gmail.com>
42
43
  Giuseppe Samela <giuseppe.samela@gmail.com>
43
44
  Google Inc. <*@google.com>
45
+ Ivan Kohut <i.kohut@yahoo.com>
44
46
  Itay Kinnrot <Itay.Kinnrot@Kaltura.com>
45
47
  Jaeseok Lee <devsunb@gmail.com>
46
48
  Jason Palmer <jason@jason-palmer.com>
package/CHANGELOG.md CHANGED
@@ -1,5 +1,114 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.6.1](https://github.com/shaka-project/shaka-player/compare/v4.6.0...v4.6.1) (2023-11-22)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **DASH:** Fix false redirect detection ([#5910](https://github.com/shaka-project/shaka-player/issues/5910)) ([eca7bfb](https://github.com/shaka-project/shaka-player/commit/eca7bfb4bf2d89fbcabc4ba9b9325896db584237))
9
+ * **DASH:** SegmentTemplate@media not updated after change in manifest ([#5899](https://github.com/shaka-project/shaka-player/issues/5899)) ([a61538a](https://github.com/shaka-project/shaka-player/commit/a61538aef0409822c424cf843c5c1a337b936902))
10
+ * Fix language comparison in addTextTrackAsync ([#5904](https://github.com/shaka-project/shaka-player/issues/5904)) ([686a083](https://github.com/shaka-project/shaka-player/commit/686a083ec358323c9e7eca1b30fec8f88bd076ff))
11
+ * **HLS:** Recognize CEA subtitles when CLOSED-CAPTIONS attribute is missing ([#5916](https://github.com/shaka-project/shaka-player/issues/5916)) ([8560842](https://github.com/shaka-project/shaka-player/commit/85608424c25a0825eddcc41d86d4b6b8660bd251))
12
+ * Unmask errors on LL ([#5908](https://github.com/shaka-project/shaka-player/issues/5908)) ([7a7e83b](https://github.com/shaka-project/shaka-player/commit/7a7e83b206dbe81adcc2c0e19e342c8690f2917f))
13
+
14
+ ## [4.6.0](https://github.com/shaka-project/shaka-player/compare/v4.5.0...v4.6.0) (2023-11-16)
15
+
16
+
17
+ ### Features
18
+
19
+ * Add a stub text display class ([#5804](https://github.com/shaka-project/shaka-player/issues/5804)) ([#5806](https://github.com/shaka-project/shaka-player/issues/5806)) ([700d181](https://github.com/shaka-project/shaka-player/commit/700d181a576982617b211c948d990099306e1df5))
20
+ * Add config to ignore duplicate init data ([#5853](https://github.com/shaka-project/shaka-player/issues/5853)) ([acf23f8](https://github.com/shaka-project/shaka-player/commit/acf23f86af9691932f56e126bc9bf9d25ac19ec3))
21
+ * Add partial info to shaka.media.SegmentReference ([#5822](https://github.com/shaka-project/shaka-player/issues/5822)) ([766b0a1](https://github.com/shaka-project/shaka-player/commit/766b0a139e869a01a0170260e3f87a1378ca4860))
22
+ * Add support for WPE based browsers in RDK set-top boxes ([#5852](https://github.com/shaka-project/shaka-player/issues/5852)) ([2eedb12](https://github.com/shaka-project/shaka-player/commit/2eedb12a1e76044a410e5fd97ff5bda0a5c07db0))
23
+ * Add thumbnails support in src= ([#5802](https://github.com/shaka-project/shaka-player/issues/5802)) ([88e4cd4](https://github.com/shaka-project/shaka-player/commit/88e4cd41164c75dce44745c2fe89615b5d8c50a8))
24
+ * Add video progress events ([#5850](https://github.com/shaka-project/shaka-player/issues/5850)) ([c3beee6](https://github.com/shaka-project/shaka-player/commit/c3beee6f2a5dd929da2549ebeef1ee5018beafad))
25
+ * Allow prefetch init segments ([#5825](https://github.com/shaka-project/shaka-player/issues/5825)) ([3f392c0](https://github.com/shaka-project/shaka-player/commit/3f392c00dce6c8dcd57432c16aa683936bcf16df))
26
+ * **DASH:** Add initial support for "urn:mpeg:dash:ssr:2023" ([#5762](https://github.com/shaka-project/shaka-player/issues/5762)) ([508e5cf](https://github.com/shaka-project/shaka-player/commit/508e5cfbbaa36112d1f57841d83b232d2367e5dc))
27
+ * **DASH:** Add support for Content Steering ([#5710](https://github.com/shaka-project/shaka-player/issues/5710)) ([42f491f](https://github.com/shaka-project/shaka-player/commit/42f491f782f5c2c011fd8cd5b468d627529914f2))
28
+ * **DASH:** Add support for Content Steering in AdaptationSet BaseURL ([#5884](https://github.com/shaka-project/shaka-player/issues/5884)) ([1c6f1fa](https://github.com/shaka-project/shaka-player/commit/1c6f1fa7b32d32ab71e2420ec0f57b69cdbfb82a))
29
+ * **DASH:** Add support for minimum values in service descriptions ([#5844](https://github.com/shaka-project/shaka-player/issues/5844)) ([5f94a62](https://github.com/shaka-project/shaka-player/commit/5f94a6253ba3a598fdc086a11cedd1f061c7c291))
30
+ * **Demo:** Add CBCS content to demo ([#5862](https://github.com/shaka-project/shaka-player/issues/5862)) ([9777c52](https://github.com/shaka-project/shaka-player/commit/9777c524b6d7ea8a3cf8779affb01b887b048d09))
31
+ * **Demo:** Add Content Steering assets ([#5888](https://github.com/shaka-project/shaka-player/issues/5888)) ([8e0ee8a](https://github.com/shaka-project/shaka-player/commit/8e0ee8a8a783d1b881928d96f0cb8ab96f6d2621))
32
+ * **demo:** Add icon for new demo asset ([#5866](https://github.com/shaka-project/shaka-player/issues/5866)) ([f7448b7](https://github.com/shaka-project/shaka-player/commit/f7448b7bdb19f575c92854af3f90686890ee2761))
33
+ * **Demo:** Add new 3D movie stream from Apple ([#5872](https://github.com/shaka-project/shaka-player/issues/5872)) ([a5adf31](https://github.com/shaka-project/shaka-player/commit/a5adf3176fa1b74b2d3ccda10e9144ebd6bb627c))
34
+ * **HLS:** Add new config for allow LL-HLS byterange optimization ([#5877](https://github.com/shaka-project/shaka-player/issues/5877)) ([3e91e8e](https://github.com/shaka-project/shaka-player/commit/3e91e8eb0c584b3817421a8846bceba149ffd0dd))
35
+ * **HLS:** Add new config to get codecs from media segment for playlists without CODECS attribute ([#5772](https://github.com/shaka-project/shaka-player/issues/5772)) ([80630bb](https://github.com/shaka-project/shaka-player/commit/80630bb49581b056fb84afded0ac90a53fe54c36)), closes [#5769](https://github.com/shaka-project/shaka-player/issues/5769)
36
+ * **HLS:** Add support for Content Steering ([#5881](https://github.com/shaka-project/shaka-player/issues/5881)) ([b75ca1d](https://github.com/shaka-project/shaka-player/commit/b75ca1df63181976e1a39977360d25fc9a2e43e9))
37
+ * **HLS:** Add support for mjpg I-Frames playlist ([#5856](https://github.com/shaka-project/shaka-player/issues/5856)) ([801131f](https://github.com/shaka-project/shaka-player/commit/801131f84cf0cfadf79c4d069f82e1ff4c463a00))
38
+ * **HLS:** Add support for QUERYPARAM variable type in #EXT-X-DEFINE ([#5801](https://github.com/shaka-project/shaka-player/issues/5801)) ([fda3189](https://github.com/shaka-project/shaka-player/commit/fda3189fd2fb8a89946cdb2d8fd0c57bcbed3ab6))
39
+ * **HLS:** Add support for REQ-VIDEO-LAYOUT ([#5809](https://github.com/shaka-project/shaka-player/issues/5809)) ([81fc82b](https://github.com/shaka-project/shaka-player/commit/81fc82b6b24c2f17e60e6bfe89ee6870972efd72))
40
+ * **HLS:** Build closed captions metadata for media playlist on-the-fly. ([#5811](https://github.com/shaka-project/shaka-player/issues/5811)) ([754bfac](https://github.com/shaka-project/shaka-player/commit/754bfacf077226173eb46c3938696110bcbbfc55))
41
+ * **HLS:** Improve the stream info when EXT-X-MEDIA has not uri ([#5886](https://github.com/shaka-project/shaka-player/issues/5886)) ([b5b6a0f](https://github.com/shaka-project/shaka-player/commit/b5b6a0fd8455efbc635f75dd8c477c6c59474ee3))
42
+ * **ID3:** decode APIC frames ([#5857](https://github.com/shaka-project/shaka-player/issues/5857)) ([6a862d2](https://github.com/shaka-project/shaka-player/commit/6a862d265ac3b8e713e8f86bee3c641a1f0f38e5))
43
+ * Improve latency in LL DASH streams ([#5820](https://github.com/shaka-project/shaka-player/issues/5820)) ([20b4abf](https://github.com/shaka-project/shaka-player/commit/20b4abf81674e17fe5557d2cce58611faff7094c))
44
+ * **net:** Add shaka.net.NetworkingUtils ([#5756](https://github.com/shaka-project/shaka-player/issues/5756)) ([be96fd0](https://github.com/shaka-project/shaka-player/commit/be96fd0a2b0092efaecd1a09699ce78785266f52))
45
+ * Stop setting playbackRate to 0 to control buffering state ([#5696](https://github.com/shaka-project/shaka-player/issues/5696)) ([6156dce](https://github.com/shaka-project/shaka-player/commit/6156dced6bddc5e2cd0cc52071295cff63cadfcd))
46
+ * **thumbnails:** Add Player.getAllThumbnails ([#5783](https://github.com/shaka-project/shaka-player/issues/5783)) ([9f7576b](https://github.com/shaka-project/shaka-player/commit/9f7576be32c1c5292620ca1dc36325adde493626)), closes [#5781](https://github.com/shaka-project/shaka-player/issues/5781)
47
+ * **UI:** Add chapter titles and dividers on the seek bar ([#5863](https://github.com/shaka-project/shaka-player/issues/5863)) ([c1198df](https://github.com/shaka-project/shaka-player/commit/c1198df82f44f2fa402a5ff8d933219820ac9e8e))
48
+ * **UI:** Bucketize resolution names in the UI ([#5816](https://github.com/shaka-project/shaka-player/issues/5816)) ([b56b9df](https://github.com/shaka-project/shaka-player/commit/b56b9df602dfaff5012f95acfeea329f86dde618))
49
+ * **UI:** Display frame rates in the quality selector ([#5753](https://github.com/shaka-project/shaka-player/issues/5753)) ([3096378](https://github.com/shaka-project/shaka-player/commit/30963788be1d1840f9d8671cf8e91cbeaa721f10))
50
+ * **UI:** Show the channel count in the audio selector ([#5868](https://github.com/shaka-project/shaka-player/issues/5868)) ([1681acd](https://github.com/shaka-project/shaka-player/commit/1681acdd2439a542a976abc1aa252e377e4411d6))
51
+ * Use ManagedMediaSource when available ([#5683](https://github.com/shaka-project/shaka-player/issues/5683)) ([01da5fa](https://github.com/shaka-project/shaka-player/commit/01da5fa8a4b32c14582bd3cb865b5d5eca591d7f))
52
+
53
+
54
+ ### Bug Fixes
55
+
56
+ * **ABR:** Fix HLS playback after internet connection is restored ([#5879](https://github.com/shaka-project/shaka-player/issues/5879)) ([f5777e5](https://github.com/shaka-project/shaka-player/commit/f5777e5625994a6c5483a33f68d5af9dec1e1335))
57
+ * AD_STARTED fires before ad started with AWS Media Tailor ([#5855](https://github.com/shaka-project/shaka-player/issues/5855)) ([b39f334](https://github.com/shaka-project/shaka-player/commit/b39f33466ebdeb8aba2df2edd1cf16bbccbd46dd))
58
+ * Add Orange platform to requiresEncryptionInfoInAllInitSegments ([#5895](https://github.com/shaka-project/shaka-player/issues/5895)) ([9d23a87](https://github.com/shaka-project/shaka-player/commit/9d23a87f859f1bed1a2e10c2f32f18de8ce0a579))
59
+ * Allow get seekRange on manifestparsed event in some cases ([#5892](https://github.com/shaka-project/shaka-player/issues/5892)) ([606d693](https://github.com/shaka-project/shaka-player/commit/606d693900a653fcc84dac64abeb7dda974101ca))
60
+ * Allow parseXmlString when createNodeIterator is not available ([#5805](https://github.com/shaka-project/shaka-player/issues/5805)) ([ea7764d](https://github.com/shaka-project/shaka-player/commit/ea7764d0a772bca59ad78f1e3bbc9a7e2734f456))
61
+ * ban new Uint16Array(buffer) ([#5838](https://github.com/shaka-project/shaka-player/issues/5838)) ([155befb](https://github.com/shaka-project/shaka-player/commit/155befb0a0e240adc331fe4b8b1967e344e5b0df))
62
+ * CEA decoder should return early if packet is not large enough ([#5893](https://github.com/shaka-project/shaka-player/issues/5893)) ([9a694b5](https://github.com/shaka-project/shaka-player/commit/9a694b59f824f7d3bf9d7ca64364abf6e60b0de4))
63
+ * **DASH:** Fix bad url when specify MPD BaseURL and AdaptationSet BaseURL ([#5883](https://github.com/shaka-project/shaka-player/issues/5883)) ([5f891d9](https://github.com/shaka-project/shaka-player/commit/5f891d98d65805f40c9ecab7fcc60a5b1cd00c3b))
64
+ * **DASH:** Fix manifest update time for Live manifests ([#5763](https://github.com/shaka-project/shaka-player/issues/5763)) ([65449d1](https://github.com/shaka-project/shaka-player/commit/65449d1a1c43c2f0741a3e8eed620fb5a374da84))
65
+ * **DASH:** Fix manifest update time for LL-DASH ([#5736](https://github.com/shaka-project/shaka-player/issues/5736)) ([8b7141f](https://github.com/shaka-project/shaka-player/commit/8b7141f92342044c8515679f6532efe635e205dc))
66
+ * **dash:** fix race condition in segment template ([#5842](https://github.com/shaka-project/shaka-player/issues/5842)) ([8d2b657](https://github.com/shaka-project/shaka-player/commit/8d2b6574de6d0510ae752637c3507df93fbf3591))
67
+ * **DASH:** Handle minimumUpdatePeriod=0 with urn:mpeg:dash:event:2012 (EMSG) ([#5823](https://github.com/shaka-project/shaka-player/issues/5823)) ([f8438df](https://github.com/shaka-project/shaka-player/commit/f8438df7b0f2834e77685eadc6d206f251730510))
68
+ * **DASH:** Segments being fetched out of the range of the timeline ([#5889](https://github.com/shaka-project/shaka-player/issues/5889)) ([d8aa24f](https://github.com/shaka-project/shaka-player/commit/d8aa24f41d79c9efb58014c3069c5183738f26d4))
69
+ * Dispatch streamDataCallback correctly in SegmentPrefetchOperation ([#5764](https://github.com/shaka-project/shaka-player/issues/5764)) ([bab8153](https://github.com/shaka-project/shaka-player/commit/bab81537626a0662ee291e4f5bccf488fd2c1870))
70
+ * Fix bug with live start time ([#5835](https://github.com/shaka-project/shaka-player/issues/5835)) ([577d141](https://github.com/shaka-project/shaka-player/commit/577d141f42b316a6a3708e9455453b49a6386be7))
71
+ * Fix chooseCodecsAndFilterManifest for similar frameRate ([#5817](https://github.com/shaka-project/shaka-player/issues/5817)) ([8ff204d](https://github.com/shaka-project/shaka-player/commit/8ff204d49dbf5f99189cb92f4a8d3ae4dd5494d4))
72
+ * Fix chooseCodecsAndFilterManifest for some HLS manifest ([#5800](https://github.com/shaka-project/shaka-player/issues/5800)) ([51870e9](https://github.com/shaka-project/shaka-player/commit/51870e9d7cced20ee98783184b69584bea90446e))
73
+ * Fix converts legacy avc1 codec strings on transmuxer ([#5790](https://github.com/shaka-project/shaka-player/issues/5790)) ([8944ca9](https://github.com/shaka-project/shaka-player/commit/8944ca9b0ff7731889c35dbd62d6a57bd9f2060c))
74
+ * Fix crash while playing HLS AES 128 streams ([#5830](https://github.com/shaka-project/shaka-player/issues/5830)) ([64b12c1](https://github.com/shaka-project/shaka-player/commit/64b12c15792be2aa8e7f79b57f4231dfcb549fbd))
75
+ * Fix DRM workaround for Tizen and Xbox with ac-4 boxes ([#5812](https://github.com/shaka-project/shaka-player/issues/5812)) ([72a5de3](https://github.com/shaka-project/shaka-player/commit/72a5de337357fa9808509efc0e63a6b1ba4f4077))
76
+ * Fix incompatible codec is selected in Windows Edge for Widevine ([#5831](https://github.com/shaka-project/shaka-player/issues/5831)) ([5aa3597](https://github.com/shaka-project/shaka-player/commit/5aa359707469cca3cac3efdc7e7efcff1a180216))
77
+ * Fix mangled property in compiled mode in Content Steering ([#5887](https://github.com/shaka-project/shaka-player/issues/5887)) ([0e62b8e](https://github.com/shaka-project/shaka-player/commit/0e62b8e00713a0b56a5d81b9758b3b4e1d98dfcf))
78
+ * Fix missing audio streams ([#5869](https://github.com/shaka-project/shaka-player/issues/5869)) ([d6aab6b](https://github.com/shaka-project/shaka-player/commit/d6aab6befaf72eb87e431f5b27cb6c6bc368b56d))
79
+ * Fix nalu parsing and improve performance in the transmuxer ([#5846](https://github.com/shaka-project/shaka-player/issues/5846)) ([ae423b4](https://github.com/shaka-project/shaka-player/commit/ae423b4239141a62cf9d8acea622398048a60936))
80
+ * Fix selectAudioLanguage using channelsCount param ([#5875](https://github.com/shaka-project/shaka-player/issues/5875)) ([c830a99](https://github.com/shaka-project/shaka-player/commit/c830a99041e2d8d2f105ab569485c959fc8c5530))
81
+ * Fix variant filtering by preferredAudioChannelCount ([#5859](https://github.com/shaka-project/shaka-player/issues/5859)) ([51edeae](https://github.com/shaka-project/shaka-player/commit/51edeaefa02a0d01706bf2d18d601ad8d2763202))
82
+ * For text content is not necessary codec switching ([#5731](https://github.com/shaka-project/shaka-player/issues/5731)) ([bdbaae5](https://github.com/shaka-project/shaka-player/commit/bdbaae5182c1f4f650822edb2a95246a918ad5df))
83
+ * **hisense:** set stallSkip to 0 for HiSense devices ([#5833](https://github.com/shaka-project/shaka-player/issues/5833)) ([c457db8](https://github.com/shaka-project/shaka-player/commit/c457db835fee8292b840dc27451424706f238d78))
84
+ * **HLS:** Fix accessibilityPurpose detection ([#5840](https://github.com/shaka-project/shaka-player/issues/5840)) ([ceaa9fa](https://github.com/shaka-project/shaka-player/commit/ceaa9faba92465bf58cd9ea78ddac77158eabac1))
85
+ * **HLS:** Fix bad detection in some MediaPlaylist ([#5878](https://github.com/shaka-project/shaka-player/issues/5878)) ([5e797bd](https://github.com/shaka-project/shaka-player/commit/5e797bd734ca95be0cf68f59022645fad8dc9077))
86
+ * **HLS:** Fix decryption of AES-128 ([#5871](https://github.com/shaka-project/shaka-player/issues/5871)) ([da38b36](https://github.com/shaka-project/shaka-player/commit/da38b362e8146521e509599f4f2cbdef41a077d8))
87
+ * **HLS:** Fix init segment when EXT-X-MAP is preceded by EXT-X-BYTERANGE ([#5732](https://github.com/shaka-project/shaka-player/issues/5732)) ([24e5de3](https://github.com/shaka-project/shaka-player/commit/24e5de34ba2bd8a1e03204a1e8b96436c6aed296))
88
+ * **HLS:** Fix kind detection for 'captions' text tracks ([#5819](https://github.com/shaka-project/shaka-player/issues/5819)) ([8e442b3](https://github.com/shaka-project/shaka-player/commit/8e442b3884cb308df69e5327d06c773c2baeff04))
89
+ * **HLS:** Fix LL-HLS with byterange optimization using segments mode ([#5876](https://github.com/shaka-project/shaka-player/issues/5876)) ([c79e5a5](https://github.com/shaka-project/shaka-player/commit/c79e5a505878084c8691d28eae0813bb1755c927))
90
+ * **HLS:** Fix url management in HLS ([#5722](https://github.com/shaka-project/shaka-player/issues/5722)) ([8deab71](https://github.com/shaka-project/shaka-player/commit/8deab717f358502b9c79a0fbd504531cc3173ddd))
91
+ * **Offline:** Fix download of some HLS manifests ([#5861](https://github.com/shaka-project/shaka-player/issues/5861)) ([c2c8320](https://github.com/shaka-project/shaka-player/commit/c2c8320251526a0e755debf5448913a2fa896371))
92
+ * **offline:** Fix server certificate error when trying to store content ([#5848](https://github.com/shaka-project/shaka-player/issues/5848)) ([f4a35f2](https://github.com/shaka-project/shaka-player/commit/f4a35f2c3fa55449c6a12dd45f207893bc9eabca))
93
+ * **TTML:** Fix support of urls in smpte:backgroundImage ([#5851](https://github.com/shaka-project/shaka-player/issues/5851)) ([fa93d53](https://github.com/shaka-project/shaka-player/commit/fa93d5353acf785e450c8e7e664f7012e0d99bdc))
94
+ * **UI:** Console error on remote.cancelwatchavailability() method in remote playback feature ([#5793](https://github.com/shaka-project/shaka-player/issues/5793)) ([b66a8e8](https://github.com/shaka-project/shaka-player/commit/b66a8e871b3d541890f1fe431eb1c4c294c26a6e))
95
+ * **UI:** Fix text selector when the trackLabelFormat is set to LABEL ([#5751](https://github.com/shaka-project/shaka-player/issues/5751)) ([bba0651](https://github.com/shaka-project/shaka-player/commit/bba0651e23bdebc5ba12dc17f7d6d2a33c0bb51a))
96
+ * UITextDisplayer font-family is overridden by UI's Roboto font ([#5829](https://github.com/shaka-project/shaka-player/issues/5829)) ([cb8a5ed](https://github.com/shaka-project/shaka-player/commit/cb8a5edd7071a504d2d0f654944d86436d2632a8))
97
+ * **WebVTT:** Fix wrong writing-mode in nested cues ([#5807](https://github.com/shaka-project/shaka-player/issues/5807)) ([ea7d83e](https://github.com/shaka-project/shaka-player/commit/ea7d83ed8760d98119e771ea0b48baa1ba4eb4ea))
98
+
99
+
100
+ ### Performance Improvements
101
+
102
+ * **dash:** improve readability and reduce number of loops in dash parser ([#5768](https://github.com/shaka-project/shaka-player/issues/5768)) ([17a4363](https://github.com/shaka-project/shaka-player/commit/17a4363e331fab3c4674504e54100b354fa0f0b8))
103
+ * **DASH:** PeriodCombiner optimisations ([#5837](https://github.com/shaka-project/shaka-player/issues/5837)) ([ade93b0](https://github.com/shaka-project/shaka-player/commit/ade93b0d004b379841dfaf0bcf7e2f04b8f14345))
104
+ * **DASH:** reduce looping and remove chaining awaits in period ([#5774](https://github.com/shaka-project/shaka-player/issues/5774)) ([be755e8](https://github.com/shaka-project/shaka-player/commit/be755e899536e169a8ef524e52f384e7a6abd001))
105
+ * **HLS:** Improve detection of all partial segments ([#5761](https://github.com/shaka-project/shaka-player/issues/5761)) ([2a35579](https://github.com/shaka-project/shaka-player/commit/2a3557915f05f72cb44406eb1497a386c8fecbab))
106
+ * Improve transmuxer performance ([#5789](https://github.com/shaka-project/shaka-player/issues/5789)) ([aa41e87](https://github.com/shaka-project/shaka-player/commit/aa41e8733f04948d6370dc066a96a2d7e394bc59))
107
+ * **manifest:** avoid unnecessary looping in uri resolver ([#5773](https://github.com/shaka-project/shaka-player/issues/5773)) ([4d5caee](https://github.com/shaka-project/shaka-player/commit/4d5caee6615c04acf591d0bd04ae6ca4a1ffbdb0))
108
+ * simplify and improve performance of parsing initData when deduping ([#5775](https://github.com/shaka-project/shaka-player/issues/5775)) ([041a08f](https://github.com/shaka-project/shaka-player/commit/041a08f88d2855e9457e7853014ee10b23a7612b))
109
+ * **utils:** use WeakSet to track object references ([#5791](https://github.com/shaka-project/shaka-player/issues/5791)) ([daa9d1f](https://github.com/shaka-project/shaka-player/commit/daa9d1f206652b775c406ecb4887e0f2bc7c533f))
110
+ * **Xbox:** drop incompatible variants for XBOX early ([#5777](https://github.com/shaka-project/shaka-player/issues/5777)) ([170a40c](https://github.com/shaka-project/shaka-player/commit/170a40c3083a8e4a0c6fabcf96439c2008ffcb63))
111
+
3
112
  ## [4.5.0](https://github.com/shaka-project/shaka-player/compare/v4.4.0...v4.5.0) (2023-10-04)
4
113
 
5
114
 
@@ -69,7 +69,7 @@ dispute. If you are unable to resolve the matter for any reason, or if the
69
69
  behavior is threatening or harassing, report it. We are dedicated to providing
70
70
  an environment where participants feel welcome and safe.
71
71
 
72
- Reports should be directed to *shaka-player-issues@google.com*, the
72
+ Reports should be directed to *shaka-player-maintainers@googlegroups.com*, the
73
73
  Project Steward(s) for *Shaka Player*. It is the Project Steward’s duty to
74
74
  receive and address reported violations of the code of conduct. They will then
75
75
  work with a committee consisting of representatives from the Open Source
package/CONTRIBUTORS CHANGED
@@ -32,6 +32,7 @@ Alvaro Velad Galvan <ladvan91@hotmail.com>
32
32
  Amila Sampath <lucksy@gmail.com>
33
33
  Andy Hochhaus <ahochhaus@samegoal.com>
34
34
  Anthony Stansbridge <github@anthonystansbridge.co.uk>
35
+ Armand Zangue <armand.zangue@gmail.com>
35
36
  Ashutosh Kumar Mukhiya <ashukm4@gmail.com>
36
37
  Benjamin Wallberg <benjamin.wallberg@bonnierbroadcasting.com>
37
38
  Benjamin Wallberg <me@bwallberg.com>
@@ -59,6 +60,7 @@ Gil Gonen <gil.gonen@gmail.com>
59
60
  Giorgio Gamberoni <giorgio.gamberoni@gmail.com>
60
61
  Giuseppe Samela <giuseppe.samela@gmail.com>
61
62
  Hichem Taoufik <hichem@code-it.fr>
63
+ Ivan Kohut <i.kohut@yahoo.com>
62
64
  Itay Kinnrot <itay.kinnrot@kaltura.com>
63
65
  Isaac Ramirez <isaac.ramirez.herrera@gmail.com>
64
66
  Jacob Trimble <modmaker@google.com>
package/README.md CHANGED
@@ -33,24 +33,24 @@ for the up-to-date list of maintained branches of Shaka Player.
33
33
 
34
34
  ## Platform and browser support matrix
35
35
 
36
- |Browser |Windows |Mac |Linux |Android |iOS >= 13 |ChromeOS|Other|
37
- |:---------:|:--------:|:-------:|:-------:|:-------:|:--------:|:------:|:---:|
38
- |Chrome¹ |**Y** |**Y** |**Y** |**Y** |**Native**|**Y** | - |
39
- |Firefox¹ |**Y** |**Y** |**Y** |untested⁵|**Native**| - | - |
40
- |Edge¹ |**Y** | - | - | - | - | - | - |
41
- |Edge Chromium|**Y** |**Y** |**Y** |untested⁵|**Native**| - | - |
42
- |IE | N | - | - | - | - | - | - |
43
- |Safari¹ | - |**Y** | - | - |**iPadOS 13<br>Native**| - | - |
44
- |Opera¹ |untested⁵ |untested⁵|untested⁵|untested⁵|**Native**| - | - |
45
- |Chromecast²| - | - | - | - | - | - |**Y**|
46
- |Tizen TV³ | - | - | - | - | - | - |**Y**|
47
- |WebOS⁶ | - | - | - | - | - | - |**Y**|
48
- |Xbox One | - | - | - | - | - | - |**Y**|
49
- |Playstation 4⁷| - | - | - | - | - | - |**Y**|
50
- |Playstation 5⁷| - | - | - | - | - | - |**Y**|
36
+ |Browser |Windows |Mac |Linux |Android |iOS >= 9 |iOS >= 17.1|iPadOS >= 13|ChromeOS|Other|
37
+ |:------------:|:--------:|:-------:|:-------:|:-------:|:--------:|:---------:|:----------:|:------:|:---:|
38
+ |Chrome¹ |**Y** |**Y** |**Y** |**Y** |**Native**|**Native** |**Native** |**Y** | - |
39
+ |Firefox¹ |**Y** |**Y** |**Y** |untested⁵|**Native**|**Native** |**Native** | - | - |
40
+ |Edge¹ |**Y** | - | - | - | - | - | - | - | - |
41
+ |Edge Chromium |**Y** |**Y** |**Y** |untested⁵|**Native**|**Native** |**Native** | - | - |
42
+ |IE | N | - | - | - | - | - | - | - | - |
43
+ |Safari¹ | - |**Y** | - | - |**Native**|**Y** |**Y** | - | - |
44
+ |Opera¹ |untested⁵ |untested⁵|untested⁵|untested⁵|**Native**| - | - | - | - |
45
+ |Chromecast². | - | - | - | - | - | - | - | - |**Y**|
46
+ |Tizen TV³ | - | - | - | - | - | - | - | - |**Y**|
47
+ |WebOS⁶ | - | - | - | - | - | - | - | - |**Y**|
48
+ |Xbox One | - | - | - | - | - | - | - | - |**Y**|
49
+ |Playstation 4⁷| - | - | - | - | - | - | - | - |**Y**|
50
+ |Playstation 5⁷| - | - | - | - | - | - | - | - |**Y**|
51
51
 
52
52
  NOTES:
53
- - ¹: On macOS, only Safari 13+ is supported. On iOS, only iOS 13+ is
53
+ - ¹: On macOS, only Safari 9+ is supported. On iOS, only iOS 9+ is
54
54
  supported. Older versions will be rejected.
55
55
  - ²: The latest stable Chromecast firmware is tested. Both sender and receiver
56
56
  can be implemented with Shaka Player.
@@ -65,18 +65,12 @@ NOTES:
65
65
  - ⁷: These are expected to work, but are community-supported and untested by
66
66
  us.
67
67
 
68
- We support iOS 13+ through Apple's native HLS player. We provide the same
69
- top-level API, but we just set the video's `src` element to the manifest/media.
70
- So we are dependent on the browser supporting the manifests.
71
-
72
- ### Shaka Player Embedded (for native iOS)
73
-
74
- We have another project called [Shaka Player Embedded][] which offers the same
75
- features and similar APIs for native apps on iOS. This project uses its own
76
- media stack, which allows it to play content that would otherwise not be
77
- supported. This supports both DASH and HLS manifests.
78
-
79
- [Shaka Player Embedded]: https://github.com/shaka-project/shaka-player-embedded
68
+ NOTES for iOS and iPadOS:
69
+ - We support iOS 9+ through Apple's native HLS player. We provide the same
70
+ top-level API, but we just set the video's `src` element to the manifest/media.
71
+ So we are dependent on the browser supporting the manifests.
72
+ - Since iPadOS 13 [MediaSource Extensions][] is supported
73
+ - Since iPadOS 17 and iOS 17.1 [ManagedMediaSource Extensions][] is supported
80
74
 
81
75
 
82
76
  ## Manifest format support matrix
@@ -135,12 +129,11 @@ HLS features supported:
135
129
  - WebVTT and TTML
136
130
  - CEA-608/708 captions
137
131
  - Encrypted content with PlayReady and Widevine
138
- - Encrypted content with FairPlay (Safari on macOS and iOS 13+ only)
132
+ - Encrypted content with FairPlay (Safari on macOS and iOS 9+ only)
139
133
  - Key rotation
140
134
  - Raw AAC, MP3, AC-3 and EC-3 (without an MP4 container)
141
-
142
- HLS features **not** supported:
143
- - I-frame-only playlists: https://github.com/shaka-project/shaka-player/issues/742
135
+ - I-frame-only playlists with mjpg codec for thumbnails
136
+ - #EXT-X-IMAGE-STREAM-INF for thumbnails
144
137
 
145
138
 
146
139
  ## MPEG-5 Part2 LCEVC Support
@@ -294,6 +287,7 @@ Shaka Player supports:
294
287
  Shaka Player supports:
295
288
  - Internal DASH thumbnails. Using DASH-IF IOP Image Adaptation Set
296
289
  - Internal HLS thumbnails. Using HLS Image Media Playlist
290
+ - Internal HLS thumbnails. Using I-frame-only playlists with mjpg codec
297
291
  - External WebVTT with images/sprites (only for VoD)
298
292
 
299
293
 
@@ -307,6 +301,18 @@ Shaka Player supports:
307
301
  - AWS MediaTailor overlays
308
302
 
309
303
 
304
+ ## Content Steering support
305
+ Shaka Player supports Content Steering (v1) in DASH.
306
+
307
+ Content Steering features supported:
308
+ - TTL, if missing, the default value is 300 seconds.
309
+ - RELOAD-URI, if missing we use the url provided in the manifest as fallback.
310
+ - PATHWAY-PRIORITY only HOST replacement
311
+
312
+ Content Steering features **not** supported:
313
+ - PATHWAY-CLONES other replacements than HOST.
314
+
315
+
310
316
  ## Documentation & Important Links ##
311
317
 
312
318
  * [Demo](https://shaka-player-demo.appspot.com)([sources](demo/))
@@ -45,6 +45,8 @@ const ShakaDemoAssetInfo = class {
45
45
  this.extraText = [];
46
46
  /** @type {!Array.<string>} */
47
47
  this.extraThumbnail = [];
48
+ /** @type {!Array.<!shakaAssets.ExtraChapter>} */
49
+ this.extraChapter = [];
48
50
  /** @type {?string} */
49
51
  this.certificateUri = null;
50
52
  /** @type {?string} */
@@ -83,8 +85,6 @@ const ShakaDemoAssetInfo = class {
83
85
  this.mediaTailorAdsParams = null;
84
86
  /** @type {?string} */
85
87
  this.mimeType = null;
86
- /** @type {?string} */
87
- this.mediaPlaylistFullMimeType = null;
88
88
 
89
89
 
90
90
  // Offline storage values.
@@ -174,15 +174,6 @@ const ShakaDemoAssetInfo = class {
174
174
  return this.drm.length == 1 && this.drm[0] == shakaAssets.KeySystem.AES128;
175
175
  }
176
176
 
177
- /**
178
- * @param {string} mediaPlaylistFullMimeType
179
- * @return {!ShakaDemoAssetInfo}
180
- */
181
- setMediaPlaylistFullMimeType(mediaPlaylistFullMimeType) {
182
- this.mediaPlaylistFullMimeType = mediaPlaylistFullMimeType;
183
- return this;
184
- }
185
-
186
177
  /**
187
178
  * @param {!Object} extraConfig
188
179
  * @return {!ShakaDemoAssetInfo}
@@ -321,7 +312,6 @@ const ShakaDemoAssetInfo = class {
321
312
  * @return {!ShakaDemoAssetInfo}
322
313
  */
323
314
  addExtraText(extraText) {
324
- // TODO: At no point do we actually use the extraText... why does it exist?
325
315
  this.extraText.push(extraText);
326
316
  return this;
327
317
  }
@@ -335,6 +325,15 @@ const ShakaDemoAssetInfo = class {
335
325
  return this;
336
326
  }
337
327
 
328
+ /**
329
+ * @param {shakaAssets.ExtraChapter} extraChapter
330
+ * @return {!ShakaDemoAssetInfo}
331
+ */
332
+ addExtraChapter(extraChapter) {
333
+ this.extraChapter.push(extraChapter);
334
+ return this;
335
+ }
336
+
338
337
  /**
339
338
  * If this is called, the asset will be focused on by the integration tests.
340
339
  * @return {!ShakaDemoAssetInfo}
@@ -436,11 +435,6 @@ const ShakaDemoAssetInfo = class {
436
435
  }
437
436
  }
438
437
 
439
- if (this.mediaPlaylistFullMimeType) {
440
- config.manifest.hls.mediaPlaylistFullMimeType =
441
- this.mediaPlaylistFullMimeType;
442
- }
443
-
444
438
  if (this.licenseServers.size) {
445
439
  config.drm.servers = config.drm.servers || {};
446
440
  this.licenseServers.forEach((value, key) => {
@@ -41,6 +41,7 @@ shakaAssets.Source = {
41
41
  MICROSOFT: 'Microsoft',
42
42
  VNOVA: 'V-Nova',
43
43
  AWS: 'AWS',
44
+ BRIGHTCOVE: 'Brightcove',
44
45
  };
45
46
 
46
47
 
@@ -131,6 +132,9 @@ shakaAssets.Feature = {
131
132
  // Set if the asset has at least one containerless stream (AAC, etc).
132
133
  CONTAINERLESS: 'Containerless',
133
134
 
135
+ // Set if the asset requires Dolby Vision with MV-HEVC (for 3D) support.
136
+ DOLBY_VISION_3D: 'Dolby Vision 3D',
137
+
134
138
  // Set if the asset has at least one stream that is at least 720p.
135
139
  HIGH_DEFINITION: 'High definition',
136
140
  // Set if the asset has at least one stream that is at least 4k.
@@ -149,11 +153,17 @@ shakaAssets.Feature = {
149
153
  // Set if the asset has at least one image stream.
150
154
  THUMBNAILS: 'Thumbnails',
151
155
 
156
+ // Set if the asset has at least one chapter stream.
157
+ CHAPTERS: 'Chapters',
158
+
152
159
  // Set if the asset has LCEVC.
153
160
  LCEVC: 'LCEVC',
154
161
 
155
162
  // Set if the asset has Low Latency mode.
156
163
  LOW_LATENCY: 'Low Latency',
164
+
165
+ // Set if the asset has Content Steering.
166
+ CONTENT_STEERING: 'Content Steering',
157
167
  };
158
168
 
159
169
 
@@ -178,6 +188,23 @@ shakaAssets.Feature = {
178
188
  * (optional) The codecs string, if needed to refine the MIME type.
179
189
  */
180
190
  shakaAssets.ExtraText;
191
+
192
+
193
+ /**
194
+ * @typedef {{
195
+ * uri: string,
196
+ * language: string,
197
+ * mime: string
198
+ * }}
199
+ *
200
+ * @property {string} uri
201
+ * The URI of the chapter.
202
+ * @property {string} language
203
+ * The language of the chapter (e.g. 'en').
204
+ * @property {string} mime
205
+ * The MIME type of the chapter (e.g. 'text/vtt')
206
+ */
207
+ shakaAssets.ExtraChapter;
181
208
  // End types and enums }}}
182
209
 
183
210
 
@@ -314,8 +341,7 @@ shakaAssets.testAssets = [
314
341
  /* source= */ shakaAssets.Source.SHAKA)
315
342
  .addFeature(shakaAssets.Feature.HLS)
316
343
  .addFeature(shakaAssets.Feature.MP4)
317
- .addFeature(shakaAssets.Feature.OFFLINE)
318
- .setMediaPlaylistFullMimeType('video/mp4; codecs="avc1.4d401f"'),
344
+ .addFeature(shakaAssets.Feature.OFFLINE),
319
345
  new ShakaDemoAssetInfo(
320
346
  /* name= */ 'Angel One (HLS, MP4, multilingual, Widevine)',
321
347
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/angel_one.png',
@@ -381,11 +407,17 @@ shakaAssets.testAssets = [
381
407
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel/dash.mpd',
382
408
  /* source= */ shakaAssets.Source.SHAKA)
383
409
  .addFeature(shakaAssets.Feature.DASH)
384
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
410
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
385
411
  .addFeature(shakaAssets.Feature.MP4)
386
412
  .addFeature(shakaAssets.Feature.SUBTITLES)
387
413
  .addFeature(shakaAssets.Feature.WEBM)
388
- .addFeature(shakaAssets.Feature.OFFLINE),
414
+ .addFeature(shakaAssets.Feature.OFFLINE)
415
+ .addFeature(shakaAssets.Feature.CHAPTERS)
416
+ .addExtraChapter({
417
+ uri: 'https://storage.googleapis.com/shaka-demo-assets/sintel-chapters.vtt',
418
+ language: 'en',
419
+ mime: 'text/vtt',
420
+ }),
389
421
  new ShakaDemoAssetInfo(
390
422
  /* name= */ 'Sintel w/ trick mode (MP4 only, 720p)',
391
423
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/sintel.png',
@@ -404,7 +436,7 @@ shakaAssets.testAssets = [
404
436
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-webm-only/dash.mpd',
405
437
  /* source= */ shakaAssets.Source.SHAKA)
406
438
  .addFeature(shakaAssets.Feature.DASH)
407
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
439
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
408
440
  .addFeature(shakaAssets.Feature.SUBTITLES)
409
441
  .addFeature(shakaAssets.Feature.WEBM)
410
442
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -414,7 +446,7 @@ shakaAssets.testAssets = [
414
446
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-mp4-only/dash.mpd',
415
447
  /* source= */ shakaAssets.Source.SHAKA)
416
448
  .addFeature(shakaAssets.Feature.DASH)
417
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
449
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
418
450
  .addFeature(shakaAssets.Feature.MP4)
419
451
  .addFeature(shakaAssets.Feature.SUBTITLES)
420
452
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -425,7 +457,7 @@ shakaAssets.testAssets = [
425
457
  /* source= */ shakaAssets.Source.SHAKA)
426
458
  .addKeySystem(shakaAssets.KeySystem.WIDEVINE)
427
459
  .addFeature(shakaAssets.Feature.DASH)
428
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
460
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
429
461
  .addFeature(shakaAssets.Feature.MP4)
430
462
  .addFeature(shakaAssets.Feature.SUBTITLES)
431
463
  .addFeature(shakaAssets.Feature.WEBM)
@@ -451,7 +483,7 @@ shakaAssets.testAssets = [
451
483
  .setAdTagUri(shakaAssets.AdTag.AD_POD_PREROLL_MIDROLL_POSTROLL)
452
484
  .addKeySystem(shakaAssets.KeySystem.WIDEVINE)
453
485
  .addFeature(shakaAssets.Feature.DASH)
454
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
486
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
455
487
  .addFeature(shakaAssets.Feature.MP4)
456
488
  .addFeature(shakaAssets.Feature.SUBTITLES)
457
489
  .addFeature(shakaAssets.Feature.WEBM)
@@ -463,7 +495,7 @@ shakaAssets.testAssets = [
463
495
  /* manifestUri= */ 'https://storage.googleapis.com/shaka-demo-assets/sintel-mp4-wvtt/dash.mpd',
464
496
  /* source= */ shakaAssets.Source.SHAKA)
465
497
  .addFeature(shakaAssets.Feature.DASH)
466
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
498
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
467
499
  .addFeature(shakaAssets.Feature.MP4)
468
500
  .addFeature(shakaAssets.Feature.SUBTITLES)
469
501
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -696,6 +728,21 @@ shakaAssets.testAssets = [
696
728
  .addFeature(shakaAssets.Feature.HLS)
697
729
  .addFeature(shakaAssets.Feature.LIVE)
698
730
  .addFeature(shakaAssets.Feature.MP4),
731
+ new ShakaDemoAssetInfo(
732
+ /* name= */ 'Multi-DRM (CBCS), multi-key',
733
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/tears_of_steel.png',
734
+ /* manifestUri= */ 'https://media.axprod.net/TestVectors/MultiKey/Cmaf_h264_1080p_cbcs/manifest.mpd',
735
+ /* source= */ shakaAssets.Source.AXINOM)
736
+ .addKeySystem(shakaAssets.KeySystem.PLAYREADY)
737
+ .addKeySystem(shakaAssets.KeySystem.WIDEVINE)
738
+ .addFeature(shakaAssets.Feature.DASH)
739
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
740
+ .addFeature(shakaAssets.Feature.MP4)
741
+ .addFeature(shakaAssets.Feature.MULTIPLE_LANGUAGES)
742
+ .addFeature(shakaAssets.Feature.SUBTITLES)
743
+ .addLicenseServer('com.widevine.alpha', 'https://drm-widevine-licensing.axprod.net/AcquireLicense')
744
+ .addLicenseServer('com.microsoft.playready', 'https://drm-playready-licensing.axtest.net/AcquireLicense')
745
+ .addLicenseRequestHeader('X-AxDRM-Message', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJ2ZXJzaW9uIjogMSwKICAiY29tX2tleV9pZCI6ICI2OWU1NDA4OC1lOWUwLTQ1MzAtOGMxYS0xZWI2ZGNkMGQxNGUiLAogICJtZXNzYWdlIjogewogICAgInR5cGUiOiAiZW50aXRsZW1lbnRfbWVzc2FnZSIsCiAgICAidmVyc2lvbiI6IDIsCiAgICAibGljZW5zZSI6IHsKICAgICAgImFsbG93X3BlcnNpc3RlbmNlIjogdHJ1ZQogICAgfSwKICAgICJjb250ZW50X2tleXNfc291cmNlIjogewogICAgICAiaW5saW5lIjogWwogICAgICAgIHsKICAgICAgICAgICJpZCI6ICJiNTRlYzkxNC0xOTJkLTRlYTEtYWMxOS1mNDI5ZWI0OTgyNjgiLAogICAgICAgICAgImVuY3J5cHRlZF9rZXkiOiAiR1ZERnJZUU9Bb1kzZmpxVVVtamswQT09IiwKICAgICAgICAgICJ1c2FnZV9wb2xpY3kiOiAiUG9saWN5IEEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiaWQiOiAiYzgzYzRlYTgtMGYyYS00NTIzLTg1MWMtZmJlY2NkYzBmMjAyIiwKICAgICAgICAgICJlbmNyeXB0ZWRfa2V5IjogIlRKZGZsWmJLYmZXQXl5K1dta21UUEE9PSIsCiAgICAgICAgICAidXNhZ2VfcG9saWN5IjogIlBvbGljeSBBIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImlkIjogImM4NjhjNzAyLWM3MWItNDA2NC1hZTJiLWMyNGY3Y2MxMDc5MiIsCiAgICAgICAgICAiZW5jcnlwdGVkX2tleSI6ICJ4QXJpUkpOcUFTdXp6RExDRzNXSjdnPT0iLAogICAgICAgICAgInVzYWdlX3BvbGljeSI6ICJQb2xpY3kgQSIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICAiY29udGVudF9rZXlfdXNhZ2VfcG9saWNpZXMiOiBbCiAgICAgIHsKICAgICAgICAibmFtZSI6ICJQb2xpY3kgQSIsCiAgICAgICAgInBsYXlyZWFkeSI6IHsKICAgICAgICAgICJtaW5fZGV2aWNlX3NlY3VyaXR5X2xldmVsIjogMTUwLAogICAgICAgICAgInBsYXlfZW5hYmxlcnMiOiBbCiAgICAgICAgICAgICI3ODY2MjdEOC1DMkE2LTQ0QkUtOEY4OC0wOEFFMjU1QjAxQTciCiAgICAgICAgICBdCiAgICAgICAgfQogICAgICB9CiAgICBdCiAgfQp9.XC0YIbZpKGFc3IZROklP4LvISc6cZGpE9UL-XcpcqWg'),
699
746
  // End Axinom assets }}}
700
747
 
701
748
  // Unified Streaming assets {{{
@@ -920,7 +967,6 @@ shakaAssets.testAssets = [
920
967
  /* manifestUri= */ 'https://livesim2.dashif.org/livesim2/testpic_2s/Manifest_thumbs.mpd',
921
968
  /* source= */ shakaAssets.Source.DASH_IF)
922
969
  .addFeature(shakaAssets.Feature.DASH)
923
- .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
924
970
  .addFeature(shakaAssets.Feature.MP4)
925
971
  .addFeature(shakaAssets.Feature.LIVE)
926
972
  .addFeature(shakaAssets.Feature.THUMBNAILS),
@@ -964,7 +1010,7 @@ shakaAssets.testAssets = [
964
1010
  /* source= */ shakaAssets.Source.BITCODIN)
965
1011
  // Disabled because the audio playlist ends about 9 seconds early somehow.
966
1012
  .markAsDisabled()
967
- .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1013
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
968
1014
  .addFeature(shakaAssets.Feature.HLS)
969
1015
  .addFeature(shakaAssets.Feature.MP2TS)
970
1016
  .addFeature(shakaAssets.Feature.OFFLINE),
@@ -978,6 +1024,25 @@ shakaAssets.testAssets = [
978
1024
  .addFeature(shakaAssets.Feature.MP4)
979
1025
  .addFeature(shakaAssets.Feature.THUMBNAILS)
980
1026
  .addExtraThumbnail('https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt'),
1027
+ new ShakaDemoAssetInfo(
1028
+ /* name= */ 'Art of Motion (HLS) (external thumbnails)',
1029
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
1030
+ /* manifestUri= */ 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8',
1031
+ /* source= */ shakaAssets.Source.BITCODIN)
1032
+ .addFeature(shakaAssets.Feature.HLS)
1033
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1034
+ .addFeature(shakaAssets.Feature.MP2TS)
1035
+ .addFeature(shakaAssets.Feature.THUMBNAILS)
1036
+ .addExtraThumbnail('https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt'),
1037
+ new ShakaDemoAssetInfo(
1038
+ /* name= */ 'Art of Motion (MP4) (external thumbnails)',
1039
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
1040
+ /* manifestUri= */ 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/MI201109210084_mpeg-4_hd_high_1080p25_10mbits.mp4',
1041
+ /* source= */ shakaAssets.Source.BITCODIN)
1042
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1043
+ .addFeature(shakaAssets.Feature.MP4)
1044
+ .addFeature(shakaAssets.Feature.THUMBNAILS)
1045
+ .addExtraThumbnail('https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt'),
981
1046
  // End bitcodin assets }}}
982
1047
 
983
1048
  // MetaCDN assets {{{
@@ -1298,6 +1363,25 @@ shakaAssets.testAssets = [
1298
1363
  .addFeature(shakaAssets.Feature.CONTAINERLESS)
1299
1364
  .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1300
1365
  .addFeature(shakaAssets.Feature.OFFLINE),
1366
+ new ShakaDemoAssetInfo(
1367
+ /* name= */ 'Advanced stream HLS Stream (UHD/4K/HDR/ATMOS)',
1368
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/becoming_you.png',
1369
+ /* manifestUri= */ 'https://devstreaming-cdn.apple.com/videos/streaming/examples/adv_dv_atmos/main.m3u8',
1370
+ /* source= */ shakaAssets.Source.APPLE)
1371
+ .addFeature(shakaAssets.Feature.HLS)
1372
+ .addFeature(shakaAssets.Feature.MP4)
1373
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
1374
+ .addFeature(shakaAssets.Feature.OFFLINE)
1375
+ .addFeature(shakaAssets.Feature.THUMBNAILS),
1376
+ new ShakaDemoAssetInfo(
1377
+ /* name= */ '3D movie stream',
1378
+ /* iconUri= */ '',
1379
+ /* manifestUri= */ 'https://devstreaming-cdn.apple.com/videos/streaming/examples/historic_planet_content_2023-10-26-3d-video/main.m3u8',
1380
+ /* source= */ shakaAssets.Source.APPLE)
1381
+ .addFeature(shakaAssets.Feature.HLS)
1382
+ .addFeature(shakaAssets.Feature.ULTRA_HIGH_DEFINITION)
1383
+ .addFeature(shakaAssets.Feature.DOLBY_VISION_3D)
1384
+ .addFeature(shakaAssets.Feature.OFFLINE),
1301
1385
  // }}}
1302
1386
 
1303
1387
  // IRT assets {{{
@@ -1525,5 +1609,27 @@ shakaAssets.testAssets = [
1525
1609
  .addFeature(shakaAssets.Feature.LIVE)
1526
1610
  .setMediaTailor('https://d305rncpy6ne2q.cloudfront.net/v1/session/94063eadf7d8c56e9e2edd84fdf897826a70d0df/SFP-MediaTailor-Live-HLS-Overlays/channel/sfp-channel2/hls.m3u8'),
1527
1611
  // }}}
1612
+
1613
+ // Brightcove assets {{{
1614
+ /* Brightcove Contents */
1615
+ new ShakaDemoAssetInfo(
1616
+ /* name= */ 'Content Steering HLS',
1617
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/big_buck_bunny.png',
1618
+ /* manifestUri= */ 'https://fastly.content-steering.com/bbb_hls/master_steering_fastly_https.m3u8',
1619
+ /* source= */ shakaAssets.Source.BRIGHTCOVE)
1620
+ .addFeature(shakaAssets.Feature.HLS)
1621
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1622
+ .addFeature(shakaAssets.Feature.MP4)
1623
+ .addFeature(shakaAssets.Feature.CONTENT_STEERING),
1624
+ new ShakaDemoAssetInfo(
1625
+ /* name= */ 'Content Steering DASH',
1626
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/big_buck_bunny.png',
1627
+ /* manifestUri= */ 'https://fastly.content-steering.com/bbb/playlist_steering_fastly_https_cdn-a_cdn-c_cdn-b.mpd',
1628
+ /* source= */ shakaAssets.Source.BRIGHTCOVE)
1629
+ .addFeature(shakaAssets.Feature.DASH)
1630
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1631
+ .addFeature(shakaAssets.Feature.MP4)
1632
+ .addFeature(shakaAssets.Feature.CONTENT_STEERING),
1633
+ // }}}
1528
1634
  ];
1529
1635
  /* eslint-enable max-len */