shaka-player 4.3.10 → 4.4.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 (316) hide show
  1. package/.github/workflows/release-please.yaml +7 -0
  2. package/AUTHORS +9 -0
  3. package/CHANGELOG.md +295 -200
  4. package/CONTRIBUTORS +8 -0
  5. package/LICENSE +32 -0
  6. package/README.md +63 -10
  7. package/demo/autoTemplate.txt +40 -5
  8. package/demo/close_button.js +11 -0
  9. package/demo/common/asset.js +13 -1
  10. package/demo/common/assets.js +53 -3
  11. package/demo/common/message_ids.js +25 -1
  12. package/demo/config.js +69 -10
  13. package/demo/customWarning.txt +2 -2
  14. package/demo/index.html +3 -1
  15. package/demo/locales/en.json +26 -2
  16. package/demo/locales/source.json +105 -9
  17. package/demo/main.js +52 -9
  18. package/demo/search.js +3 -1
  19. package/demo/service_worker.js +3 -0
  20. package/dist/controls.css +1 -1
  21. package/dist/controls.css.map +1 -1
  22. package/dist/demo.compiled.debug.js +124 -112
  23. package/dist/demo.compiled.debug.map +3 -3
  24. package/dist/demo.compiled.js +124 -112
  25. package/dist/demo.compiled.map +3 -3
  26. package/dist/deps.js +46 -28
  27. package/dist/locales.js +28 -28
  28. package/dist/receiver.compiled.debug.js +52 -46
  29. package/dist/receiver.compiled.debug.map +3 -3
  30. package/dist/receiver.compiled.js +52 -46
  31. package/dist/receiver.compiled.map +3 -3
  32. package/dist/shaka-player.compiled.d.ts +676 -391
  33. package/dist/shaka-player.compiled.debug.d.ts +676 -391
  34. package/dist/shaka-player.compiled.debug.externs.js +1188 -616
  35. package/dist/shaka-player.compiled.debug.js +1045 -700
  36. package/dist/shaka-player.compiled.debug.map +4 -4
  37. package/dist/shaka-player.compiled.externs.js +1188 -616
  38. package/dist/shaka-player.compiled.js +1094 -933
  39. package/dist/shaka-player.compiled.map +4 -4
  40. package/dist/shaka-player.ui.d.ts +677 -392
  41. package/dist/shaka-player.ui.debug.d.ts +677 -392
  42. package/dist/shaka-player.ui.debug.externs.js +1023 -451
  43. package/dist/shaka-player.ui.debug.js +1100 -739
  44. package/dist/shaka-player.ui.debug.map +4 -4
  45. package/dist/shaka-player.ui.externs.js +1023 -451
  46. package/dist/shaka-player.ui.js +1244 -1071
  47. package/dist/shaka-player.ui.map +4 -4
  48. package/docs/tutorials/ad_monetization.md +15 -1
  49. package/docs/tutorials/application-level-redirects.md +1 -1
  50. package/docs/tutorials/config.md +9 -5
  51. package/docs/tutorials/drm-config.md +61 -0
  52. package/docs/tutorials/fairplay.md +19 -4
  53. package/docs/tutorials/license-server-auth.md +4 -4
  54. package/docs/tutorials/license-wrapping.md +2 -2
  55. package/docs/tutorials/ui-customization.md +7 -3
  56. package/docs/tutorials/ui.md +7 -7
  57. package/docs/tutorials/upgrade.md +3 -0
  58. package/externs/ima.js +123 -2
  59. package/externs/isoboxer.js +217 -0
  60. package/externs/mediakeys.js +18 -0
  61. package/externs/mux.js +1 -105
  62. package/externs/pictureinpicture.js +48 -0
  63. package/externs/shaka/ads.js +61 -1
  64. package/externs/shaka/cea.js +110 -0
  65. package/externs/shaka/codecs.js +32 -0
  66. package/externs/shaka/manifest.js +101 -1
  67. package/externs/shaka/manifest_parser.js +0 -10
  68. package/externs/shaka/net.js +36 -7
  69. package/externs/shaka/offline.js +8 -1
  70. package/externs/shaka/player.js +220 -21
  71. package/externs/shaka/text.js +1 -382
  72. package/externs/shaka/transmuxer.js +59 -0
  73. package/karma.conf.js +13 -0
  74. package/lib/abr/simple_abr_manager.js +6 -3
  75. package/lib/ads/ad_manager.js +60 -2
  76. package/lib/ads/client_side_ad.js +86 -0
  77. package/lib/ads/client_side_ad_manager.js +79 -3
  78. package/lib/ads/server_side_ad.js +86 -0
  79. package/lib/ads/server_side_ad_manager.js +13 -0
  80. package/lib/cast/cast_utils.js +1 -0
  81. package/lib/cea/cea608_data_channel.js +24 -14
  82. package/lib/cea/cea608_memory.js +5 -2
  83. package/lib/cea/cea708_service.js +8 -9
  84. package/lib/cea/cea708_window.js +1 -2
  85. package/lib/cea/cea_decoder.js +23 -6
  86. package/lib/cea/cea_utils.js +25 -2
  87. package/lib/cea/dummy_caption_decoder.js +21 -0
  88. package/lib/cea/dummy_cea_parser.js +1 -3
  89. package/lib/cea/mp4_cea_parser.js +15 -10
  90. package/lib/cea/ts_cea_parser.js +69 -0
  91. package/lib/dash/content_protection.js +32 -2
  92. package/lib/dash/dash_parser.js +93 -31
  93. package/lib/dash/mpd_utils.js +6 -25
  94. package/lib/dash/segment_base.js +12 -14
  95. package/lib/dash/segment_list.js +10 -6
  96. package/lib/dash/segment_template.js +349 -32
  97. package/lib/dependencies/all.js +8 -0
  98. package/lib/hls/hls_classes.js +33 -8
  99. package/lib/hls/hls_parser.js +805 -191
  100. package/lib/hls/manifest_text_parser.js +4 -14
  101. package/lib/media/adaptation_set_criteria.js +43 -3
  102. package/lib/media/closed_caption_parser.js +74 -12
  103. package/lib/media/drm_engine.js +189 -49
  104. package/lib/media/gap_jumping_controller.js +1 -1
  105. package/lib/media/manifest_parser.js +34 -0
  106. package/lib/media/media_source_capabilities.js +10 -0
  107. package/lib/media/media_source_engine.js +475 -231
  108. package/lib/media/playhead.js +1 -1
  109. package/lib/media/presentation_timeline.js +62 -0
  110. package/lib/media/segment_index.js +50 -14
  111. package/lib/media/segment_prefetch.js +277 -0
  112. package/lib/media/segment_reference.js +70 -4
  113. package/lib/media/streaming_engine.js +258 -81
  114. package/lib/media/video_wrapper.js +15 -7
  115. package/lib/mss/content_protection.js +353 -0
  116. package/lib/mss/mss_parser.js +1081 -0
  117. package/lib/net/networking_engine.js +60 -10
  118. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  119. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  120. package/lib/offline/manifest_converter.js +6 -0
  121. package/lib/offline/storage.js +2 -4
  122. package/lib/player.js +309 -105
  123. package/lib/polyfill/media_capabilities.js +43 -3
  124. package/lib/polyfill/patchedmediakeys_apple.js +5 -0
  125. package/lib/polyfill/patchedmediakeys_nop.js +5 -0
  126. package/lib/polyfill/patchedmediakeys_webkit.js +5 -0
  127. package/lib/text/cue.js +208 -130
  128. package/lib/text/lrc_text_parser.js +2 -2
  129. package/lib/text/mp4_vtt_parser.js +2 -2
  130. package/lib/text/sbv_text_parser.js +1 -1
  131. package/lib/text/simple_text_displayer.js +2 -1
  132. package/lib/text/srt_text_parser.js +9 -1
  133. package/lib/text/ssa_text_parser.js +2 -2
  134. package/lib/text/text_engine.js +3 -21
  135. package/lib/text/text_utils.js +71 -20
  136. package/lib/text/ui_text_displayer.js +14 -14
  137. package/lib/text/vtt_text_parser.js +22 -14
  138. package/lib/transmuxer/aac_transmuxer.js +224 -0
  139. package/lib/transmuxer/ac3.js +142 -0
  140. package/lib/transmuxer/ac3_transmuxer.js +212 -0
  141. package/lib/transmuxer/adts.js +232 -0
  142. package/lib/transmuxer/ec3.js +103 -0
  143. package/lib/transmuxer/ec3_transmuxer.js +212 -0
  144. package/lib/transmuxer/h264.js +324 -0
  145. package/lib/transmuxer/mp3_transmuxer.js +204 -0
  146. package/lib/transmuxer/mpeg_audio.js +196 -0
  147. package/lib/transmuxer/mpeg_ts_transmuxer.js +182 -0
  148. package/lib/transmuxer/mss_transmuxer.js +389 -0
  149. package/lib/{media/transmuxer.js → transmuxer/muxjs_transmuxer.js} +34 -80
  150. package/lib/transmuxer/transmuxer_engine.js +161 -0
  151. package/lib/transmuxer/ts_transmuxer.js +738 -0
  152. package/lib/util/cmcd_manager.js +131 -71
  153. package/lib/util/error.js +62 -26
  154. package/lib/util/exp_golomb.js +220 -0
  155. package/lib/util/fairplay_utils.js +64 -13
  156. package/lib/util/id3_utils.js +56 -3
  157. package/lib/util/language_utils.js +11 -8
  158. package/lib/util/manifest_parser_utils.js +3 -0
  159. package/lib/util/mime_utils.js +44 -7
  160. package/lib/util/mp4_box_parsers.js +233 -5
  161. package/lib/util/mp4_generator.js +1381 -0
  162. package/lib/util/periods.js +40 -34
  163. package/lib/util/platform.js +17 -3
  164. package/lib/util/player_configuration.js +38 -1
  165. package/lib/util/stream_utils.js +138 -27
  166. package/lib/util/text_parser.js +1 -1
  167. package/lib/util/ts_parser.js +470 -47
  168. package/lib/util/xml_utils.js +16 -3
  169. package/maintained-branches.md +2 -2
  170. package/package.json +3 -1
  171. package/roadmap.md +21 -6
  172. package/shaka-player.uncompiled.js +18 -0
  173. package/test/abr/simple_abr_manager_unit.js +32 -4
  174. package/test/ads/ad_manager_unit.js +18 -2
  175. package/test/cast/cast_utils_unit.js +7 -2
  176. package/test/cea/cea608_memory_unit.js +24 -0
  177. package/test/cea/cea_decoder_unit.js +33 -0
  178. package/test/dash/dash_parser_content_protection_unit.js +93 -3
  179. package/test/dash/dash_parser_live_unit.js +56 -13
  180. package/test/dash/dash_parser_manifest_unit.js +70 -2
  181. package/test/dash/dash_parser_segment_base_unit.js +14 -9
  182. package/test/dash/dash_parser_segment_template_unit.js +286 -6
  183. package/test/demo/demo_unit.js +5 -1
  184. package/test/hls/hls_live_unit.js +188 -28
  185. package/test/hls/hls_parser_unit.js +250 -109
  186. package/test/hls/manifest_text_parser_unit.js +18 -13
  187. package/test/media/adaptation_set_criteria_unit.js +46 -14
  188. package/test/media/adaptation_set_unit.js +2 -0
  189. package/test/media/drm_engine_integration.js +11 -8
  190. package/test/media/drm_engine_unit.js +220 -7
  191. package/test/media/media_source_engine_integration.js +122 -38
  192. package/test/media/media_source_engine_unit.js +133 -153
  193. package/test/media/playhead_unit.js +3 -0
  194. package/test/media/presentation_timeline_unit.js +51 -0
  195. package/test/media/segment_index_unit.js +52 -0
  196. package/test/media/segment_prefetch_unit.js +243 -0
  197. package/test/media/streaming_engine_integration.js +9 -3
  198. package/test/media/streaming_engine_unit.js +440 -59
  199. package/test/mss/mss_parser_content_protection_unit.js +49 -0
  200. package/test/mss/mss_parser_unit.js +472 -0
  201. package/test/mss/mss_player_integration.js +123 -0
  202. package/test/offline/manifest_convert_unit.js +9 -0
  203. package/test/offline/storage_integration.js +6 -1
  204. package/test/player_unit.js +386 -133
  205. package/test/polyfill/media_capabilities_unit.js +18 -0
  206. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  207. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  208. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  209. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  210. package/test/test/assets/hls-raw-aac/manifest.m3u8 +4 -0
  211. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +14 -0
  212. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  213. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  214. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  215. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  216. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  217. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  218. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  219. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  220. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +31 -0
  221. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  222. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  223. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  224. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  225. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  226. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  227. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  228. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  229. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +31 -0
  230. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +13 -0
  231. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  232. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  233. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  234. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  235. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +4 -0
  236. package/test/test/assets/hls-ts-aac/playlist.m3u8 +23 -0
  237. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  238. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  239. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  240. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  241. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  242. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  243. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  244. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  245. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  246. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  247. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  248. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  249. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  250. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  251. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +19 -0
  252. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  253. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  254. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  255. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  256. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  257. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  258. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +19 -0
  259. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  260. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  261. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  262. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  263. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  264. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  265. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +25 -0
  266. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +13 -0
  267. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  268. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  269. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  270. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  271. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +17 -0
  272. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  273. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  274. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  275. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  276. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  277. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  278. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +4 -0
  279. package/test/test/boot.js +7 -2
  280. package/test/test/util/fake_ad.js +99 -0
  281. package/test/test/util/fake_ad_manager.js +7 -1
  282. package/test/test/util/fake_networking_engine.js +41 -14
  283. package/test/test/util/fake_segment_prefetch.js +81 -0
  284. package/test/test/util/manifest_generator.js +19 -5
  285. package/test/test/util/mss_parser_util.js +115 -0
  286. package/test/test/util/offline_utils.js +1 -0
  287. package/test/test/util/simple_fakes.js +12 -3
  288. package/test/test/util/streaming_engine_util.js +14 -4
  289. package/test/test/util/ttml_utils.js +2 -2
  290. package/test/text/cue_integration.js +1 -1
  291. package/test/text/srt_text_parser_unit.js +78 -0
  292. package/test/text/text_engine_unit.js +17 -8
  293. package/test/text/ui_text_displayer_unit.js +4 -4
  294. package/test/text/vtt_text_parser_unit.js +59 -40
  295. package/test/text/web_vtt_generator_unit.js +9 -3
  296. package/test/{media/transmuxer_integration.js → transmuxer/muxjs_transmuxer_integration.js} +30 -33
  297. package/test/transmuxer/transmuxer_engine_integration.js +60 -0
  298. package/test/transmuxer/transmuxer_integration.js +296 -0
  299. package/test/util/cmcd_manager_unit.js +162 -13
  300. package/test/util/language_utils_unit.js +9 -2
  301. package/test/util/mp4_box_parsers_unit.js +39 -4
  302. package/test/util/periods_unit.js +34 -26
  303. package/test/util/stream_utils_unit.js +60 -107
  304. package/ui/controls.js +19 -1
  305. package/ui/controls.less +1 -0
  306. package/ui/externs/ui.js +11 -1
  307. package/ui/language_utils.js +15 -0
  308. package/ui/less/thumbnails.less +26 -0
  309. package/ui/locales/oc.json +42 -0
  310. package/ui/pip_button.js +83 -2
  311. package/ui/range_element.js +15 -0
  312. package/ui/resolution_selection.js +9 -2
  313. package/ui/seek_bar.js +223 -0
  314. package/ui/ui.js +5 -0
  315. package/lib/cea/i_caption_decoder.js +0 -51
  316. package/lib/cea/i_cea_parser.js +0 -68
package/CONTRIBUTORS CHANGED
@@ -26,6 +26,7 @@ Aaron Vaage <vaage@google.com>
26
26
  Adrián Gómez Llorente <adgllorente@gmail.com>
27
27
  Agajan Jumakuliyev <agajan.tm@gmail.com>
28
28
  Aidan Ridley <aidan.ridley@charter.com>
29
+ Albin Larsson <albin.larsson@eyevinn.se>
29
30
  Alex Jones <alexedwardjones@gmail.com>
30
31
  Alvaro Velad Galvan <ladvan91@hotmail.com>
31
32
  Amila Sampath <lucksy@gmail.com>
@@ -43,12 +44,15 @@ Chris Fillmore <fillmore.chris@gmail.com>
43
44
  Costel Madalin Grecu <madalin.grecu@adswizz.com>
44
45
  Damien Deis <developer.deis@gmail.com>
45
46
  Dany L'Hébreux <danylhebreux@gmail.com>
47
+ Dave Nicholas <davenicholasuk@gmail.com>
48
+ Davide Zordan <mail@davide.dev>
46
49
  Dl Dador <dldador@gmail.com>
47
50
  Donato Borrello <donato@jwplayer.com>
48
51
  Duc Pham <duc.pham@edgeware.tv>
49
52
  Enson Choy <enson.choy@harmonicinc.com>
50
53
  Esteban Dosztal <edosztal@gmail.com>
51
54
  Fadomire <fadomire@gmail.com>
55
+ Fernando Neira <slocomber@gmail.com>
52
56
  François Beaufort <fbeaufort@google.com>
53
57
  Gerardo Meola <meola.gerardo@gmail.com>
54
58
  Gil Gonen <gil.gonen@gmail.com>
@@ -60,6 +64,7 @@ Isaac Ramirez <isaac.ramirez.herrera@gmail.com>
60
64
  Jacob Trimble <modmaker@google.com>
61
65
  Jaeseok Lee <devsunb@gmail.com>
62
66
  Jason Palmer <jason@jason-palmer.com>
67
+ Jean-alexandre Iragne <jairagne@gmail.com>
63
68
  Jeffrey Swan <jeffdswan@gmail.com>
64
69
  Jesper Haug Karsrud <jesper.karsrud@gmail.com>
65
70
  Jesse Gunsch <gunsch@google.com>
@@ -73,6 +78,7 @@ Jozef Chúťka <jozefchutka@gmail.com>
73
78
  Julian Domingo <juliandomingo@google.com>
74
79
  Jun Hong Chong <chongjunhong@gmail.com>
75
80
  Jürgen Kartnaller <kartnaller@lovelysystems.com>
81
+ Konstantin Grushetsky <github@grushetsky.net>
76
82
  Leandro Ribeiro Moreira <leandro.ribeiro.moreira@gmail.com>
77
83
  Lucas Gabriel Sánchez <unkiwii@gmail.com>
78
84
  Martin Stark <martin.stark@eyevinn.se>
@@ -114,6 +120,7 @@ Seth Madison <seth@philo.com>
114
120
  Tatsiana Gelahova <tatsiana.gelahova@gmail.com>
115
121
  Theodore Abshire <theodab@google.com>
116
122
  Thomas Stephens <thomas@ustudio.com>
123
+ Tian Shao <tyrelltle@gmail.com>
117
124
  Tim Plummer <objelisks@google.com>
118
125
  Timothy Drews <tdrews@google.com>
119
126
  Tomas Bucher <collapsingtesseract@gmail.com>
@@ -128,6 +135,7 @@ Vinod Balakrishnan <vinod.balakrishnan@v-nova.com>
128
135
  Wayne Morgan <wayne.morgan.dev@gmail.com>
129
136
  Wen Ren <renwen0615@gmail.com>
130
137
  Will Harris <will.harris@paramount.com>
138
+ Wojciech Tyczyński <tykus160@gmail.com>
131
139
  Yohann Connell <robinconnell@google.com>
132
140
  Raymond Cheng <raycheng100@gmail.com>
133
141
  Janroel Koppen <j.koppen@bluebillywig.com>
package/LICENSE CHANGED
@@ -225,3 +225,35 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
225
225
  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
226
226
  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
227
227
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
228
+
229
+ -----
230
+
231
+ Contains code from https://github.com/Dash-Industry-Forum/dash.js
232
+ (See lib/mss/mss_utils.js and lib/transmuxer/mss_transmuxer.js)
233
+
234
+ dash.js BSD License Agreement
235
+
236
+ Copyright 2015 Dash Industry Forum
237
+
238
+ Redistribution and use in source and binary forms, with or without
239
+ modification, are permitted provided that the following conditions are met:
240
+
241
+ - Redistributions of source code must retain the above copyright notice, this
242
+ list of conditions and the following disclaimer.
243
+ - Redistributions in binary form must reproduce the above copyright notice,
244
+ this list of conditions and the following disclaimer in the documentation
245
+ and/or other materials provided with the distribution.
246
+ - Neither the name of the Dash Industry Forum nor the names of its
247
+ contributors may be used to endorse or promote products derived from this
248
+ software without specific prior written permission.
249
+
250
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
251
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
252
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
253
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
254
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
255
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
256
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
257
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
258
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
259
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # ![Shaka Player](docs/shaka-player-logo.png)
2
2
 
3
3
  Shaka Player is an open-source JavaScript library for adaptive media. It plays
4
- adaptive media formats (such as [DASH][] and [HLS][]) in a browser, without
5
- using plugins or Flash. Instead, Shaka Player uses the open web standards
6
- [MediaSource Extensions][] and [Encrypted Media Extensions][].
4
+ adaptive media formats (such as [DASH][], [HLS][] and [MSS][]) in a browser,
5
+ without using plugins or Flash. Instead, Shaka Player uses the open web
6
+ standards [MediaSource Extensions][] and [Encrypted Media Extensions][].
7
7
 
8
8
  Shaka Player also supports [offline storage and playback][] of media using
9
9
  [IndexedDB][]. Content can be stored on any browser. Storage of licenses
@@ -18,6 +18,7 @@ For details on what's coming next, see our [development roadmap](roadmap.md).
18
18
 
19
19
  [DASH]: http://dashif.org/
20
20
  [HLS]: https://developer.apple.com/streaming/
21
+ [MSS]: https://learn.microsoft.com/en-us/iis/media/smooth-streaming/smooth-streaming-transport-protocol
21
22
  [MediaSource Extensions]: https://www.w3.org/TR/media-source/
22
23
  [Encrypted Media Extensions]: https://www.w3.org/TR/encrypted-media/
23
24
  [IndexedDB]: https://www.w3.org/TR/IndexedDB-2/
@@ -84,6 +85,7 @@ supported. This supports both DASH and HLS manifests.
84
85
  |:----:|:-------------:|:---:|:---:|:-------------------:|
85
86
  |DASH |**Y** |**Y**| - |**Y** |
86
87
  |HLS |**Y** |**Y**|**Y**| - |
88
+ |MSS |**Y** | - | - | - |
87
89
 
88
90
  You can also create a [manifest parser plugin][] to support custom manifest
89
91
  formats.
@@ -126,7 +128,8 @@ DASH features **not** supported:
126
128
 
127
129
  HLS features supported:
128
130
  - VOD, Live, and Event types
129
- - Low-latency streaming with partial segments, preload hints, and delta updates
131
+ - Low-latency streaming with partial segments, preload hints, delta updates and
132
+ blocking playlist reload
130
133
  - Discontinuity
131
134
  - ISO-BMFF / MP4 / CMAF support
132
135
  - MPEG-2 TS support (transmuxing provided by [mux.js][] v6.2.0+, must be
@@ -136,11 +139,10 @@ HLS features supported:
136
139
  - Encrypted content with PlayReady and Widevine
137
140
  - Encrypted content with FairPlay (Safari on macOS and iOS 13+ only)
138
141
  - Key rotation
139
- - Raw AAC, MP3, etc (without an MP4 container)
142
+ - Raw AAC, MP3, AC-3 and EC-3 (without an MP4 container)
140
143
 
141
144
  HLS features **not** supported:
142
145
  - I-frame-only playlists: https://github.com/shaka-project/shaka-player/issues/742
143
- - Low-latency streaming with blocking playlist reload
144
146
 
145
147
  [mux.js]: https://github.com/videojs/mux.js/releases
146
148
 
@@ -159,6 +161,20 @@ HLS features **not** supported:
159
161
  [MPEG-5 Part2 LCEVC]: https://www.lcevc.org
160
162
 
161
163
 
164
+ ## MSS features
165
+
166
+ MSS features supported:
167
+ - VOD
168
+ - AAC and H.264
169
+ - Encrypted content (PlayReady)
170
+ - TTML/DFXP
171
+ - Only supported with [codem-isoboxer][]
172
+
173
+ MSS features **not** supported:
174
+ - Live
175
+
176
+ [codem-isoboxer]: https://github.com/Dash-Industry-Forum/codem-isoboxer
177
+
162
178
  ## DRM support matrix
163
179
 
164
180
  |Browser |Widevine |PlayReady|FairPlay |ClearKey⁶ |
@@ -196,6 +212,7 @@ NOTES:
196
212
  |:--------:|:--------:|:-------:|:-------:|:--------:|
197
213
  |DASH |**Y** |**Y** | - |**Y** |
198
214
  |HLS |**Y** |**Y** |**Y** ¹ | - |
215
+ |MSS | - |**Y** | - | - |
199
216
 
200
217
  NOTES:
201
218
  - ¹: By default, FairPlay is handled using Apple's native HLS player, when on
@@ -211,6 +228,7 @@ Shaka Player supports:
211
228
  - Can parse "sidx" box for DASH's SegmentBase@indexRange and
212
229
  SegmentTemplate@index
213
230
  - Can find and parse "tfdt" box to find segment start time in HLS
231
+ - For MSS, [codem-isoboxer][] v0.3.7+ is required
214
232
  - WebM
215
233
  - Depends on browser support for the container via MediaSource
216
234
  - Can parse [cueing data][] elements for DASH's SegmentBase@indexRange and
@@ -225,11 +243,21 @@ Shaka Player supports:
225
243
  - TTML
226
244
  - Supported in both XML form and embedded in MP4
227
245
  - CEA-608
228
- - Supported embedded in MP4
229
- - With help from [mux.js][] v6.2.0+, supported embedded in TS
246
+ - Supported embedded in MP4 and TS
230
247
  - CEA-708
231
- - Supported embedded in MP4
232
- - With help from [mux.js][] v6.2.0+, supported embedded in TS
248
+ - Supported embedded in MP4 and TS
249
+ - Raw AAC
250
+ - Supported in raw AAC container and transmuxing to AAC in MP4 container
251
+ (depends on browser support via MediaSource).
252
+ - Raw MP3
253
+ - Supported in raw MP3 container and transmuxing to MP3 in MP4 container
254
+ (depends on browser support via MediaSource).
255
+ - Raw AC-3
256
+ - Supported in raw AC-3 container and transmuxing to AC-3 in MP4 container
257
+ (depends on browser support via MediaSource).
258
+ - Raw EC-3
259
+ - Supported in raw EC-3 container and transmuxing to EC-3 in MP4 container
260
+ (depends on browser support via MediaSource).
233
261
  - SubRip (SRT)
234
262
  - UTF-8 encoding only
235
263
  - LyRiCs (LRC)
@@ -248,6 +276,31 @@ attributes.
248
276
  <!-- TODO: replace with a link to a TextDisplayer tutorial -->
249
277
 
250
278
 
279
+ ## Transmuxer support
280
+
281
+ Shaka Player supports:
282
+ - Raw AAC to AAC in MP4
283
+ - Raw MP3 to MP3 in MP4
284
+ - Raw AC-3 to AC-3 in MP4
285
+ - Raw EC-3 to EC-3 in MP4
286
+ - AAC in MPEG-2 TS to AAC in MP4
287
+ - AC-3 in MPEG-2 TS to AC-3 in MP4
288
+ - EC-3 in MPEG-2 TS to EC-3 in MP4
289
+ - MP3 in MPEG-2 TS to MP3 in MP4
290
+ - MP3 in MPEG-2 TS to raw MP3
291
+ - H.264 in MPEG-2 TS to H.264 in MP4
292
+ - Muxed AAC and H.264 in MPEG-2 TS to AAC and H.264 in MP4,
293
+ with help from [mux.js][] v6.2.0+
294
+
295
+
296
+ ## Thumbnails support
297
+
298
+ Shaka Player supports:
299
+ - Internal DASH thumbnails. Using DASH-IF IOP Image Adaptation Set
300
+ - Internal HLS thumbnails. Using HLS Image Media Playlist
301
+ - External WebVTT with images/sprites (only for VoD)
302
+
303
+
251
304
  ## Documentation & Important Links ##
252
305
 
253
306
  * [Demo](https://shaka-player-demo.appspot.com)([sources](demo/))
@@ -1,17 +1,52 @@
1
- RE:customwarning
2
1
  **Have you read the [FAQ](https://bit.ly/ShakaFAQ) and checked for duplicate open issues?**
3
2
 
4
3
 
5
- **What link can we use to reproduce this?**
6
- RE:link
4
+ **If the problem is related to FairPlay, have you read the tutorial?**
5
+ <!-- NOTE: https://shaka-player-demo.appspot.com/docs/api/tutorial-fairplay.html -->
7
6
 
8
7
 
9
8
  **What version of Shaka Player are you using?**
10
- RE:player
9
+ `RE:player`
10
+ <!-- NOTE:
11
+ Only some versions of the application are maintained, if your version
12
+ is older, first update to a newer one. See:
13
+ https://github.com/shaka-project/shaka-player/blob/main/maintained-branches.md
14
+ --->
15
+
16
+
17
+ **Can you reproduce the issue with our latest release version?**
18
+
19
+
20
+ **Can you reproduce the issue with the latest code from `main`?**
21
+
22
+
23
+ **Are you using the demo app or your own custom app?**
24
+ The demo
25
+
26
+
27
+ **If custom app, can you reproduce the issue using our demo app?**
28
+ N/A
11
29
 
12
30
 
13
31
  **What browser and OS are you using?**
14
- RE:browser
32
+ `RE:browser`
33
+
34
+
35
+ **For embedded devices (smart TVs, etc.), what model and firmware version are you using?**
36
+ N/A
37
+
38
+
39
+ **What are the manifest and license server URIs?**
40
+ RE:customwarning
41
+ RE:uris
42
+
43
+
44
+ **What configuration are you using? What is the output of `player.getConfiguration()`?**
45
+ <!-- NOTE:
46
+ You can censor URLs to keep them private, but include them in the email. You
47
+ can also use JSON.stringify(obj, null, 2) to print nicely on platforms that
48
+ don't print objects well in the console. DON'T SEND '[object Object]'!
49
+ -->
15
50
 
16
51
 
17
52
  **What did you do?**
@@ -31,6 +31,17 @@ shakaDemo.CloseButton = class extends shaka.ui.Element {
31
31
  shakaDemoMain.unload();
32
32
  });
33
33
 
34
+ if ('documentPictureInPicture' in window) {
35
+ this.eventManager.listen(
36
+ window.documentPictureInPicture, 'enter', () => {
37
+ this.button_.style.display = 'none';
38
+ const pipWindow = window.documentPictureInPicture.window;
39
+ this.eventManager.listen(pipWindow, 'pagehide', () => {
40
+ this.button_.style.display = 'block';
41
+ });
42
+ });
43
+ }
44
+
34
45
  // TODO: Make sure that the screenreader description of this control is
35
46
  // localized!
36
47
  }
@@ -45,6 +45,8 @@ const ShakaDemoAssetInfo = class {
45
45
  this.disabled = false;
46
46
  /** @type {!Array.<!shakaAssets.ExtraText>} */
47
47
  this.extraText = [];
48
+ /** @type {!Array.<string>} */
49
+ this.extraThumbnail = [];
48
50
  /** @type {?string} */
49
51
  this.certificateUri = null;
50
52
  /** @type {?string} */
@@ -302,6 +304,15 @@ const ShakaDemoAssetInfo = class {
302
304
  return this;
303
305
  }
304
306
 
307
+ /**
308
+ * @param {string} uri
309
+ * @return {!ShakaDemoAssetInfo}
310
+ */
311
+ addExtraThumbnail(uri) {
312
+ this.extraThumbnail.push(uri);
313
+ return this;
314
+ }
315
+
305
316
  /**
306
317
  * If this is called, the asset will be focused on by the integration tests.
307
318
  * @return {!ShakaDemoAssetInfo}
@@ -372,7 +383,8 @@ const ShakaDemoAssetInfo = class {
372
383
  networkingEngine.clearAllResponseFilters();
373
384
 
374
385
  if (this.licenseRequestHeaders.size) {
375
- const filter = (requestType, request) => {
386
+ /** @type {!shaka.extern.RequestFilter} */
387
+ const filter = (requestType, request, context) => {
376
388
  return this.addLicenseRequestHeaders_(this.licenseRequestHeaders,
377
389
  requestType,
378
390
  request);
@@ -141,12 +141,17 @@ shakaAssets.Feature = {
141
141
  DASH: shakaDemo.MessageIds.DASH,
142
142
  // Set if the asset is an HLS manifest.
143
143
  HLS: shakaDemo.MessageIds.HLS,
144
+ // Set if the asset is an MSS manifest.
145
+ MSS: shakaDemo.MessageIds.MSS,
144
146
 
145
147
  // Set if the asset has at least one image stream.
146
148
  THUMBNAILS: shakaDemo.MessageIds.THUMBNAILS,
147
149
 
148
150
  // Set if the asset has LCEVC.
149
151
  LCEVC: shakaDemo.MessageIds.LCEVC,
152
+
153
+ // Set if the asset has Low Latency mode.
154
+ LOW_LATENCY_STREAM: shakaDemo.MessageIds.LOW_LATENCY_STREAM,
150
155
  };
151
156
 
152
157
 
@@ -827,7 +832,13 @@ shakaAssets.testAssets = [
827
832
  /* source= */ shakaAssets.Source.DASH_IF)
828
833
  .addFeature(shakaAssets.Feature.DASH)
829
834
  .addFeature(shakaAssets.Feature.LIVE)
830
- .addFeature(shakaAssets.Feature.MP4),
835
+ .addFeature(shakaAssets.Feature.MP4)
836
+ .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
837
+ .setExtraConfig({
838
+ streaming: {
839
+ lowLatencyMode: true,
840
+ },
841
+ }),
831
842
  new ShakaDemoAssetInfo(
832
843
  /* name= */ 'DASH-IF CEA-608 VOD',
833
844
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
@@ -852,7 +863,13 @@ shakaAssets.testAssets = [
852
863
  /* source= */ shakaAssets.Source.DASH_IF)
853
864
  .addFeature(shakaAssets.Feature.DASH)
854
865
  .addFeature(shakaAssets.Feature.LIVE)
855
- .addFeature(shakaAssets.Feature.MP4),
866
+ .addFeature(shakaAssets.Feature.MP4)
867
+ .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
868
+ .setExtraConfig({
869
+ streaming: {
870
+ lowLatencyMode: true,
871
+ },
872
+ }),
856
873
  new ShakaDemoAssetInfo(
857
874
  /* name= */ 'DASH-IF THUMBNAILS - Single adaptation set, 7 tiles at 10x1, each thumb 320x180',
858
875
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/dash_if_test_pattern.png',
@@ -946,6 +963,16 @@ shakaAssets.testAssets = [
946
963
  .addFeature(shakaAssets.Feature.HLS)
947
964
  .addFeature(shakaAssets.Feature.MP2TS)
948
965
  .addFeature(shakaAssets.Feature.OFFLINE),
966
+ new ShakaDemoAssetInfo(
967
+ /* name= */ 'Art of Motion (DASH) (external thumbnails)',
968
+ /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/art_of_motion.png',
969
+ /* manifestUri= */ 'https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd',
970
+ /* source= */ shakaAssets.Source.BITCODIN)
971
+ .addFeature(shakaAssets.Feature.DASH)
972
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
973
+ .addFeature(shakaAssets.Feature.MP4)
974
+ .addFeature(shakaAssets.Feature.THUMBNAILS)
975
+ .addExtraThumbnail('https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/thumbnails/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.vtt'),
949
976
  // End bitcodin assets }}}
950
977
 
951
978
  // MetaCDN assets {{{
@@ -1231,7 +1258,13 @@ shakaAssets.testAssets = [
1231
1258
  /* source= */ shakaAssets.Source.APPLE)
1232
1259
  .addFeature(shakaAssets.Feature.HLS)
1233
1260
  .addFeature(shakaAssets.Feature.LIVE)
1234
- .addFeature(shakaAssets.Feature.MP4),
1261
+ .addFeature(shakaAssets.Feature.MP4)
1262
+ .addFeature(shakaAssets.Feature.LOW_LATENCY_STREAM)
1263
+ .setExtraConfig({
1264
+ streaming: {
1265
+ lowLatencyMode: true,
1266
+ },
1267
+ }),
1235
1268
  new ShakaDemoAssetInfo(
1236
1269
  /* name= */ 'Audio only HLS with raw AAC',
1237
1270
  /* iconUri= */ 'https://storage.googleapis.com/shaka-asset-icons/apple_test_pattern.png',
@@ -1288,6 +1321,23 @@ shakaAssets.testAssets = [
1288
1321
  .addFeature(shakaAssets.Feature.MP4)
1289
1322
  .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1290
1323
  .addLicenseServer('com.microsoft.playready', 'http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(persist:false,ck:W31bfVt9W31bfVt9W31bfQ==,ckt:aescbc)'),
1324
+ new ShakaDemoAssetInfo(
1325
+ /* name= */ 'Super Speedway Trailer (MSS - Clear)',
1326
+ /* iconUri= */ 'https://reference.dashif.org/dash.js/latest/samples/lib/img/mss-1.jpg',
1327
+ /* manifestUri= */ 'https://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest',
1328
+ /* source= */ shakaAssets.Source.MICROSOFT)
1329
+ .addFeature(shakaAssets.Feature.MSS)
1330
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1331
+ .addFeature(shakaAssets.Feature.MP4),
1332
+ new ShakaDemoAssetInfo(
1333
+ /* name= */ 'Super Speedway Trailer (MSS - PlayReady)',
1334
+ /* iconUri= */ 'https://reference.dashif.org/dash.js/latest/samples/lib/img/mss-1.jpg',
1335
+ /* manifestUri= */ 'https://test.playready.microsoft.com/smoothstreaming/SSWSS720H264PR/SuperSpeedway_720.ism/Manifest',
1336
+ /* source= */ shakaAssets.Source.MICROSOFT)
1337
+ .addFeature(shakaAssets.Feature.MSS)
1338
+ .addFeature(shakaAssets.Feature.HIGH_DEFINITION)
1339
+ .addFeature(shakaAssets.Feature.MP4)
1340
+ .addLicenseServer('com.microsoft.playready', 'https://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(persist:false,sl:150)'),
1291
1341
  // }}}
1292
1342
 
1293
1343
  // MPEG-5 LCEVC assets {{{
@@ -21,6 +21,7 @@ shakaDemo.MessageIds = {
21
21
  LIVE: 'DEMO_LIVE',
22
22
  MP2TS: 'DEMO_MP2TS',
23
23
  MP4: 'DEMO_MP4',
24
+ MSS: 'DEMO_MSS',
24
25
  MULTIPLE_LANGUAGES: 'DEMO_MULTIPLE_LANGUAGES',
25
26
  OFFLINE: 'DEMO_OFFLINE',
26
27
  STORED: 'DEMO_STORED',
@@ -32,6 +33,7 @@ shakaDemo.MessageIds = {
32
33
  VOD: 'DEMO_VOD',
33
34
  WEBM: 'DEMO_WEBM',
34
35
  XLINK: 'DEMO_XLINK',
36
+ LOW_LATENCY_STREAM: 'DEMO_LOW_LATENCY_STREAM',
35
37
  /* Key systems. */
36
38
  CLEAR: 'DEMO_CLEAR',
37
39
  CLEAR_KEY: 'DEMO_CLEAR_KEY',
@@ -86,6 +88,7 @@ shakaDemo.MessageIds = {
86
88
  UNSUPPORTED_NO_OFFLINE: 'DEMO_UNSUPPORTED_NO_OFFLINE',
87
89
  UNSUPPORTED_NO_KEY_SUPPORT: 'DEMO_UNSUPPORTED_NO_KEY_SUPPORT',
88
90
  UNSUPPORTED_NO_LICENSE_SUPPORT: 'DEMO_UNSUPPORTED_NO_LICENSE_SUPPORT',
91
+ UNSUPPORTED_NO_MSS_SUPPORT: 'DEMO_UNSUPPORTED_NO_MSS_SUPPORT',
89
92
  /* Visualizer. */
90
93
  VISUALIZER_AUTO_SCREENSHOT_TOGGLE: 'DEMO_VISUALIZER_AUTO_SCREENSHOT_TOGGLE',
91
94
  VISUALIZER_BUTTON: 'DEMO_VISUALIZER_BUTTON',
@@ -150,10 +153,12 @@ shakaDemo.MessageIds = {
150
153
  /* Config panel. */
151
154
  ADAPTATION_RESTRICTIONS_SECTION_HEADER: 'DEMO_ADAPTATION_RESTRICTIONS_SECTION_HEADER',
152
155
  ADAPTATION_SECTION_HEADER: 'DEMO_ADAPTATION_SECTION_HEADER',
156
+ ADS_SECTION_HEADER: 'DEMO_ADS_SECTION_HEADER',
153
157
  ALWAYS_STREAM_TEXT: 'DEMO_ALWAYS_STREAM_TEXT',
154
158
  ALWAYS_STREAM_TEXT_WARNING: 'DEMO_ALWAYS_STREAM_TEXT_WARNING',
155
159
  AUDIO_CHANNEL_COUNT: 'DEMO_AUDIO_CHANNEL_COUNT',
156
160
  AUDIO_LANGUAGE: 'DEMO_AUDIO_LANGUAGE',
161
+ AUDIO_LABEL: 'DEMO_AUDIO_LABEL',
157
162
  AUDIO_ROBUSTNESS: 'DEMO_AUDIO_ROBUSTNESS',
158
163
  AUTO_CORRECT_DASH_DRIFT: 'DEMO_AUTO_CORRECT_DASH_DRIFT',
159
164
  AUTO_LOW_LATENCY: 'DEMO_AUTO_LOW_LATENCY',
@@ -170,10 +175,13 @@ shakaDemo.MessageIds = {
170
175
  BANDWIDTH_UPGRADE: 'DEMO_BANDWIDTH_UPGRADE',
171
176
  BUFFER_BEHIND: 'DEMO_BUFFER_BEHIND',
172
177
  BUFFERING_GOAL: 'DEMO_BUFFERING_GOAL',
178
+ CLEAR_BUFFER_SWITCH: 'DEMO_CLEAR_BUFFER_SWITCH',
173
179
  CLOCK_SYNC_URI: 'DEMO_CLOCK_SYNC_URI',
174
180
  CMCD_SECTION_HEADER: 'DEMO_CMCD_SECTION_HEADER',
175
181
  CONNECTION_TIMEOUT: 'DEMO_CONNECTION_TIMEOUT',
176
182
  CONTENT_ID: 'DEMO_CONTENT_ID',
183
+ CUSTOM_PLAYHEAD_TRACKER: 'DEMO_CUSTOM_PLAYHEAD_TRACKER',
184
+ DASH_SEQUENCE_MODE: 'DEMO_DASH_SEQUENCE_MODE',
177
185
  DEFAULT_AUDIO_CODEC: 'DEMO_DEFAULT_AUDIO_CODEC',
178
186
  DEFAULT_PRESENTATION_DELAY: 'DEMO_DEFAULT_PRESENTATION_DELAY',
179
187
  DEFAULT_VIDEO_CODEC: 'DEMO_DEFAULT_VIDEO_CODEC',
@@ -193,8 +201,17 @@ shakaDemo.MessageIds = {
193
201
  FAST_HALF_LIFE: 'DEMO_FAST_HALF_LIFE',
194
202
  FORCE_HTTPS: 'DEMO_FORCE_HTTPS',
195
203
  FORCE_TRANSMUX: 'DEMO_FORCE_TRANSMUX',
204
+ INSERT_FAKE_ENCRYPTION_IN_INIT: 'DEMO_INSERT_FAKE_ENCRYPTION_IN_INIT',
196
205
  FUZZ_FACTOR: 'DEMO_FUZZ_FACTOR',
197
206
  GAP_DETECTION_THRESHOLD: 'DEMO_GAP_DETECTION_THRESHOLD',
207
+ GAP_JUMP_TIMER_TIME: 'DEMO_GAP_JUMP_TIMER_TIME',
208
+ HDR_LEVEL: 'DEMO_HDR_LEVEL',
209
+ HDR_LEVEL_AUTO: 'DEMO_HDR_LEVEL_AUTO',
210
+ HDR_LEVEL_HLG: 'DEMO_HDR_LEVEL_HLG',
211
+ HDR_LEVEL_NONE: 'DEMO_HDR_LEVEL_NONE',
212
+ HDR_LEVEL_PQ: 'DEMO_HDR_LEVEL_PQ',
213
+ HDR_LEVEL_SDR: 'DEMO_HDR_LEVEL_SDR',
214
+ HLS_SEQUENCE_MODE: 'DEMO_HLS_SEQUENCE_MODE',
198
215
  IGNORE_DASH_EMPTY_ADAPTATION_SET: 'DEMO_IGNORE_DASH_EMPTY_ADAPTATION_SET',
199
216
  IGNORE_DASH_DRM: 'DEMO_IGNORE_DASH_DRM',
200
217
  IGNORE_DASH_MAX_SEGMENT_DURATION: 'DEMO_IGNORE_DASH_MAX_SEGMENT_DURATION',
@@ -203,6 +220,7 @@ shakaDemo.MessageIds = {
203
220
  IGNORE_HLS_IMAGE_FAILURES: 'DEMO_IGNORE_HLS_IMAGE_FAILURES',
204
221
  IGNORE_HLS_TEXT_FAILURES: 'DEMO_IGNORE_HLS_TEXT_FAILURES',
205
222
  IGNORE_MANIFEST_PROGRAM_DATE_TIME: 'DEMO_IGNORE_MANIFEST_PROGRAM_DATE_TIME',
223
+ IGNORE_MANIFEST_TIMESTAMPS_IN_SEGMENTS_MODE: 'DEMO_IGNORE_MANIFEST_TIMESTAMPS_IN_SEGMENTS_MODE',
206
224
  IGNORE_MIN_BUFFER_TIME: 'DEMO_IGNORE_MIN_BUFFER_TIME',
207
225
  IGNORE_TEXT_FAILURES: 'DEMO_IGNORE_TEXT_FAILURES',
208
226
  INACCURATE_MANIFEST_TOLERANCE: 'DEMO_INACCURATE_MANIFEST_TOLERANCE',
@@ -213,6 +231,9 @@ shakaDemo.MessageIds = {
213
231
  LCEVC_LOG_LEVEL: 'DEMO_LCEVC_LOG_LEVEL',
214
232
  LCEVC_SECTION_HEADER: 'DEMO_LCEVC_SECTION_HEADER',
215
233
  LIVE_SEGMENTS_DELAY: 'DEMO_LIVE_SEGMENTS_DELAY',
234
+ LIVE_SYNC: 'DEMO_LIVE_SYNC',
235
+ LIVE_SYNC_MAX_LATENCY: 'DEMO_LIVE_SYNC_MAX_LATENCY',
236
+ LIVE_SYNC_PLAYBACK_RATE: 'DEMO_LIVE_SYNC_PLAYBACK_RATE',
216
237
  LOG_LEVEL: 'DEMO_LOG_LEVEL',
217
238
  LOG_LEVEL_DEBUG: 'DEMO_LOG_LEVEL_DEBUG',
218
239
  LOG_LEVEL_INFO: 'DEMO_LOG_LEVEL_INFO',
@@ -232,11 +253,13 @@ shakaDemo.MessageIds = {
232
253
  MEDIA_SOURCE_SECTION_HEADER: 'DEMO_MEDIA_SOURCE_SECTION_HEADER',
233
254
  MIN_BANDWIDTH: 'DEMO_MIN_BANDWIDTH',
234
255
  MIN_BYTES: 'DEMO_MIN_BYTES',
256
+ MIN_HDCP_VERSION: 'DEMO_MIN_HDCP_VERSION',
235
257
  MIN_FRAMERATE: 'DEMO_MIN_FRAMERATE',
236
258
  MIN_HEIGHT: 'DEMO_MIN_HEIGHT',
237
259
  MIN_PIXELS: 'DEMO_MIN_PIXELS',
238
260
  MIN_TOTAL_BYTES: 'DEMO_MIN_TOTAL_BYTES',
239
261
  MIN_WIDTH: 'DEMO_MIN_WIDTH',
262
+ MSS_SEQUENCE_MODE: 'DEMO_MSS_SEQUENCE_MODE',
240
263
  NETWORK_INFORMATION: 'DEMO_NETWORK_INFORMATION',
241
264
  NUMBER_DECIMAL_WARNING: 'DEMO_NUMBER_DECIMAL_WARNING',
242
265
  NUMBER_INTEGER_WARNING: 'DEMO_NUMBER_INTEGER_WARNING',
@@ -251,10 +274,10 @@ shakaDemo.MessageIds = {
251
274
  RESTRICT_TO_ELEMENT_SIZE: 'DEMO_RESTRICT_TO_ELEMENT_SIZE',
252
275
  RESTRICT_TO_SCREEN_SIZE: 'DEMO_RESTRICT_TO_SCREEN_SIZE',
253
276
  RESTRICTIONS_SECTION_HEADER: 'DEMO_RESTRICTIONS_SECTION_HEADER',
277
+ SAFE_MARGIN_SWITCH: 'DEMO_SAFE_MARGIN_SWITCH',
254
278
  SAFE_SEEK_OFFSET: 'DEMO_SAFE_SEEK_OFFSET',
255
279
  SAFE_SKIP_DISTANCE: 'DEMO_SAFE_SKIP_DISTANCE',
256
280
  SEGMENT_RELATIVE_VTT_TIMING: 'DEMO_SEGMENT_RELATIVE_VTT_TIMING',
257
- SEQUENCE_MODE: 'DEMO_SEQUENCE_MODE',
258
281
  SESSION_ID: 'DEMO_SESSION_ID',
259
282
  SHAKA_CONTROLS: 'DEMO_SHAKA_CONTROLS',
260
283
  SLOW_HALF_LIFE: 'DEMO_SLOW_HALF_LIFE',
@@ -281,5 +304,6 @@ shakaDemo.MessageIds = {
281
304
  VIDEO_ROBUSTNESS: 'DEMO_VIDEO_ROBUSTNESS',
282
305
  VNOVA: 'DEMO_VNOVA',
283
306
  XLINK_FAIL_GRACEFULLY: 'DEMO_XLINK_FAIL_GRACEFULLY',
307
+ SEGMENT_PREFETCH_LIMIT: 'DEMO_SEGMENT_PREFETCH_LIMIT',
284
308
  };
285
309
  /* eslint-enable max-len */