shaka-player 4.6.3 → 4.7.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 (608) hide show
  1. package/README.md +1 -0
  2. package/dist/controls.css +1 -1
  3. package/dist/controls.css.map +1 -1
  4. package/dist/deps.js +13 -9
  5. package/dist/locales.js +33 -33
  6. package/dist/shaka-player.compiled.d.ts +47 -4
  7. package/dist/shaka-player.compiled.debug.d.ts +47 -4
  8. package/dist/shaka-player.compiled.debug.externs.js +50 -2
  9. package/dist/shaka-player.compiled.debug.js +408 -376
  10. package/dist/shaka-player.compiled.debug.map +4 -4
  11. package/dist/shaka-player.compiled.externs.js +50 -2
  12. package/dist/shaka-player.compiled.js +1134 -1118
  13. package/dist/shaka-player.compiled.map +4 -4
  14. package/dist/shaka-player.ui.d.ts +69 -5
  15. package/dist/shaka-player.ui.debug.d.ts +69 -5
  16. package/dist/shaka-player.ui.debug.externs.js +82 -2
  17. package/dist/shaka-player.ui.debug.js +457 -420
  18. package/dist/shaka-player.ui.debug.map +4 -4
  19. package/dist/shaka-player.ui.externs.js +82 -2
  20. package/dist/shaka-player.ui.js +1305 -1289
  21. package/dist/shaka-player.ui.map +4 -4
  22. package/externs/mediasession.js +7 -0
  23. package/externs/shaka/abr_manager.js +8 -0
  24. package/externs/shaka/manifest.js +3 -3
  25. package/externs/shaka/player.js +59 -4
  26. package/lib/abr/simple_abr_manager.js +41 -15
  27. package/lib/ads/client_side_ad_manager.js +4 -0
  28. package/lib/ads/media_tailor_ad_manager.js +5 -0
  29. package/lib/ads/server_side_ad_manager.js +4 -0
  30. package/lib/cea/cea708_service.js +1 -1
  31. package/lib/cea/cea708_window.js +95 -7
  32. package/lib/dash/dash_parser.js +55 -11
  33. package/lib/hls/hls_parser.js +17 -5
  34. package/lib/media/adaptation_set_criteria.js +76 -10
  35. package/lib/media/drm_engine.js +0 -3
  36. package/lib/media/media_source_engine.js +42 -18
  37. package/lib/media/segment_reference.js +12 -0
  38. package/lib/media/streaming_engine.js +58 -5
  39. package/lib/media/video_wrapper.js +4 -3
  40. package/lib/player.js +95 -11
  41. package/lib/text/simple_text_displayer.js +8 -7
  42. package/lib/text/text_utils.js +39 -13
  43. package/lib/text/ui_text_displayer.js +20 -11
  44. package/lib/text/web_vtt_generator.js +1 -1
  45. package/lib/util/cmsd_manager.js +269 -0
  46. package/lib/util/content_steering_manager.js +5 -1
  47. package/lib/util/mime_utils.js +6 -2
  48. package/lib/util/periods.js +108 -39
  49. package/lib/util/player_configuration.js +19 -5
  50. package/lib/util/stream_utils.js +82 -13
  51. package/package.json +1 -1
  52. package/ui/audio_language_selection.js +3 -0
  53. package/ui/controls.js +60 -0
  54. package/ui/externs/ui.js +12 -1
  55. package/ui/hidden_fast_forward_button.js +32 -0
  56. package/ui/hidden_rewind_button.js +32 -0
  57. package/ui/hidden_seek_button.js +121 -0
  58. package/ui/less/buttons.less +50 -0
  59. package/ui/less/containers.less +18 -0
  60. package/ui/resolution_selection.js +2 -0
  61. package/ui/ui.js +2 -0
  62. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
  63. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
  64. package/.github/ISSUE_TEMPLATE/question.md +0 -26
  65. package/.github/config.yml +0 -1
  66. package/.github/workflows/appspot.yaml +0 -39
  67. package/.github/workflows/build-and-test.yaml +0 -222
  68. package/.github/workflows/compute-incremental-coverage.py +0 -265
  69. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
  70. package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
  71. package/.github/workflows/deflake.yaml +0 -31
  72. package/.github/workflows/demo-version-index.yaml +0 -43
  73. package/.github/workflows/nightly-demo.yaml +0 -42
  74. package/.github/workflows/release-please.yaml +0 -193
  75. package/.github/workflows/report-incremental-coverage.yaml +0 -39
  76. package/.github/workflows/safari-homedir-launcher.sh +0 -18
  77. package/.github/workflows/selenium-lab-tests.yaml +0 -370
  78. package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
  79. package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
  80. package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
  81. package/.github/workflows/shaka-bot-commands/main.sh +0 -51
  82. package/.github/workflows/sync-labels.yaml +0 -33
  83. package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
  84. package/.github/workflows/update-issues.yaml +0 -31
  85. package/.github/workflows/update-screenshots.yaml +0 -142
  86. package/.github/workflows/validate-pr-title.yaml +0 -27
  87. package/CHANGELOG.md +0 -5764
  88. package/CODE_OF_CONDUCT.md +0 -93
  89. package/CONTRIBUTING.md +0 -76
  90. package/demo/TengwarTelcontar.woff2 +0 -0
  91. package/demo/app_logo_144.png +0 -0
  92. package/demo/app_logo_192.png +0 -0
  93. package/demo/app_logo_256.png +0 -0
  94. package/demo/app_logo_384.png +0 -0
  95. package/demo/app_logo_512.png +0 -0
  96. package/demo/app_manifest.json +0 -29
  97. package/demo/asset_card.js +0 -410
  98. package/demo/autoTemplate.txt +0 -61
  99. package/demo/cast_receiver/idle1.jpg +0 -0
  100. package/demo/cast_receiver/idle2.jpg +0 -0
  101. package/demo/cast_receiver/idle3.jpg +0 -0
  102. package/demo/cast_receiver/index.html +0 -75
  103. package/demo/cast_receiver/receiver_app.css +0 -111
  104. package/demo/cast_receiver/receiver_app.js +0 -158
  105. package/demo/close_button.js +0 -60
  106. package/demo/common/asset.js +0 -511
  107. package/demo/common/assets.js +0 -1635
  108. package/demo/config.js +0 -859
  109. package/demo/custom.js +0 -907
  110. package/demo/customWarning.txt +0 -8
  111. package/demo/demo.less +0 -591
  112. package/demo/demo_uncompiled.js +0 -11
  113. package/demo/demo_utils.js +0 -113
  114. package/demo/favicon.ico +0 -0
  115. package/demo/front.js +0 -156
  116. package/demo/icons/README.md +0 -4
  117. package/demo/icons/baseline-audiotrack-24px.svg +0 -1
  118. package/demo/icons/baseline-closed_caption-24px.svg +0 -1
  119. package/demo/icons/baseline-fast_forward-24px.svg +0 -1
  120. package/demo/icons/baseline-language-24px.svg +0 -1
  121. package/demo/icons/baseline-live_tv-24px.svg +0 -1
  122. package/demo/icons/baseline-subtitles-24px.svg +0 -1
  123. package/demo/icons/baseline-surround_sound-24px.svg +0 -1
  124. package/demo/icons/custom_ad.svg +0 -1
  125. package/demo/icons/custom_box_with_text.svg +0 -1
  126. package/demo/icons/custom_clear_key.svg +0 -1
  127. package/demo/icons/custom_high_definition.svg +0 -1
  128. package/demo/icons/custom_playready.svg +0 -1
  129. package/demo/icons/custom_ultra_high_definition.svg +0 -1
  130. package/demo/icons/custom_widevine.svg +0 -1
  131. package/demo/index.html +0 -173
  132. package/demo/input.js +0 -270
  133. package/demo/input_container.js +0 -218
  134. package/demo/load.js +0 -156
  135. package/demo/main.js +0 -1854
  136. package/demo/search.js +0 -452
  137. package/demo/service_worker.js +0 -355
  138. package/demo/shaka_logo_trans.png +0 -0
  139. package/demo/tooltip.js +0 -29
  140. package/demo/visualizer.js +0 -335
  141. package/demo/visualizer_button.js +0 -84
  142. package/dist/demo.compiled.debug.js +0 -340
  143. package/dist/demo.compiled.debug.map +0 -8
  144. package/dist/demo.compiled.js +0 -340
  145. package/dist/demo.compiled.map +0 -8
  146. package/dist/demo.css +0 -6
  147. package/dist/demo.css.map +0 -1
  148. package/dist/receiver.compiled.debug.js +0 -187
  149. package/dist/receiver.compiled.debug.map +0 -8
  150. package/dist/receiver.compiled.js +0 -187
  151. package/dist/receiver.compiled.map +0 -8
  152. package/docs/announcement-list-join-group.png +0 -0
  153. package/docs/api-mainpage.md +0 -28
  154. package/docs/design/REDESIGN.md +0 -283
  155. package/docs/design/architecture.md +0 -13
  156. package/docs/design/bg-fetch-after.gv +0 -29
  157. package/docs/design/bg-fetch-after.gv.png +0 -0
  158. package/docs/design/bg-fetch-before.gv +0 -18
  159. package/docs/design/bg-fetch-before.gv.png +0 -0
  160. package/docs/design/bg-fetch.md +0 -134
  161. package/docs/design/cast.gv +0 -35
  162. package/docs/design/cast.gv.png +0 -0
  163. package/docs/design/chromecast.md +0 -151
  164. package/docs/design/codec_preferences.md +0 -158
  165. package/docs/design/dash-audio-channels.md +0 -123
  166. package/docs/design/dash-manifests.md +0 -248
  167. package/docs/design/dash-timeline.svg +0 -4
  168. package/docs/design/dataflow.gv +0 -66
  169. package/docs/design/dataflow.gv.png +0 -0
  170. package/docs/design/export.md +0 -70
  171. package/docs/design/fuzzy-locale-matching.md +0 -40
  172. package/docs/design/gap-jumping.md +0 -151
  173. package/docs/design/lcevc-architecture.png +0 -0
  174. package/docs/design/lcevc-demo.png +0 -0
  175. package/docs/design/lcevc-integration.md +0 -72
  176. package/docs/design/locale_compatibility.svg +0 -1
  177. package/docs/design/locales_tree.svg +0 -1
  178. package/docs/design/localization-design-principles.md +0 -158
  179. package/docs/design/newdemo.gv +0 -83
  180. package/docs/design/newdemo.gv.png +0 -0
  181. package/docs/design/offline.gv +0 -43
  182. package/docs/design/offline.gv.png +0 -0
  183. package/docs/design/offline.md +0 -153
  184. package/docs/design/ownership.gv +0 -76
  185. package/docs/design/ownership.gv.png +0 -0
  186. package/docs/design/preload.md +0 -299
  187. package/docs/design/preload.png +0 -0
  188. package/docs/design/talking-about-languages.md +0 -46
  189. package/docs/design/timeline.svg +0 -152
  190. package/docs/design/ui.md +0 -31
  191. package/docs/design/ui_player_relationships.svg +0 -1
  192. package/docs/jsdoc-plugin.js +0 -74
  193. package/docs/jsdoc-template/README.md +0 -1
  194. package/docs/jsdoc-template/publish.js +0 -879
  195. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  196. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
  197. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  198. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  199. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  200. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  201. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  202. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
  203. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  204. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
  205. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
  206. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
  207. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  208. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  209. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  210. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  211. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
  212. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  213. package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
  214. package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
  215. package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
  216. package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
  217. package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
  218. package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
  219. package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
  220. package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
  221. package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
  222. package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
  223. package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
  224. package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
  225. package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
  226. package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
  227. package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
  228. package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
  229. package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
  230. package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
  231. package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
  232. package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
  233. package/docs/jsdoc.conf.json +0 -38
  234. package/docs/shaka-player-logo.png +0 -0
  235. package/docs/style.md +0 -174
  236. package/docs/tutorials/a11y.md +0 -64
  237. package/docs/tutorials/ad_monetization.md +0 -292
  238. package/docs/tutorials/application-level-redirects.md +0 -94
  239. package/docs/tutorials/architecture.md +0 -32
  240. package/docs/tutorials/basic-usage.md +0 -89
  241. package/docs/tutorials/blob-url.md +0 -15
  242. package/docs/tutorials/config.md +0 -148
  243. package/docs/tutorials/debugging.md +0 -189
  244. package/docs/tutorials/drm-config.md +0 -274
  245. package/docs/tutorials/errors.md +0 -95
  246. package/docs/tutorials/fairplay.md +0 -242
  247. package/docs/tutorials/faq.md +0 -252
  248. package/docs/tutorials/index.json +0 -29
  249. package/docs/tutorials/lcevc.md +0 -118
  250. package/docs/tutorials/license-server-auth.md +0 -248
  251. package/docs/tutorials/license-wrapping.md +0 -168
  252. package/docs/tutorials/manifest-parser.md +0 -365
  253. package/docs/tutorials/network-and-buffering-config.md +0 -119
  254. package/docs/tutorials/offline.md +0 -683
  255. package/docs/tutorials/plugins.md +0 -184
  256. package/docs/tutorials/selenium-grid-config.md +0 -174
  257. package/docs/tutorials/service-worker.md +0 -106
  258. package/docs/tutorials/ui-customization.md +0 -288
  259. package/docs/tutorials/ui.md +0 -230
  260. package/docs/tutorials/upgrade-manifest.md +0 -281
  261. package/docs/tutorials/upgrade.md +0 -104
  262. package/docs/tutorials/welcome.md +0 -108
  263. package/docs/tutorials/widevine-service-certs.md +0 -45
  264. package/karma.conf.js +0 -879
  265. package/maintained-branches.md +0 -15
  266. package/roadmap.md +0 -186
  267. package/test/abr/simple_abr_manager_unit.js +0 -398
  268. package/test/ads/ad_manager_unit.js +0 -260
  269. package/test/assumptions/uint8_array_unit.js +0 -22
  270. package/test/cast/cast_proxy_unit.js +0 -736
  271. package/test/cast/cast_receiver_integration.js +0 -488
  272. package/test/cast/cast_receiver_unit.js +0 -1183
  273. package/test/cast/cast_sender_unit.js +0 -973
  274. package/test/cast/cast_utils_unit.js +0 -311
  275. package/test/cea/cea608_memory_unit.js +0 -411
  276. package/test/cea/cea708_service_unit.js +0 -674
  277. package/test/cea/cea708_window_unit.js +0 -373
  278. package/test/cea/cea_decoder_unit.js +0 -615
  279. package/test/cea/dtvcc_packet_builder_unit.js +0 -158
  280. package/test/cea/dtvcc_packet_unit.js +0 -60
  281. package/test/cea/mp4_cea_parser_unit.js +0 -127
  282. package/test/codec_switching/codec_switching_integration.js +0 -182
  283. package/test/dash/dash_parser_content_protection_unit.js +0 -998
  284. package/test/dash/dash_parser_integration.js +0 -74
  285. package/test/dash/dash_parser_live_unit.js +0 -1542
  286. package/test/dash/dash_parser_manifest_unit.js +0 -3121
  287. package/test/dash/dash_parser_segment_base_unit.js +0 -421
  288. package/test/dash/dash_parser_segment_list_unit.js +0 -380
  289. package/test/dash/dash_parser_segment_template_unit.js +0 -910
  290. package/test/dash/mpd_utils_unit.js +0 -794
  291. package/test/demo/demo_unit.js +0 -108
  292. package/test/deprecate/enforcer_unit.js +0 -74
  293. package/test/deprecate/version_unit.js +0 -57
  294. package/test/hls/hls_live_unit.js +0 -1330
  295. package/test/hls/hls_parser_unit.js +0 -5276
  296. package/test/hls/manifest_text_parser_unit.js +0 -545
  297. package/test/media/adaptation_set_criteria_unit.js +0 -806
  298. package/test/media/adaptation_set_unit.js +0 -229
  299. package/test/media/buffering_observer_unit.js +0 -143
  300. package/test/media/closed_caption_parser_unit.js +0 -18
  301. package/test/media/content_workarounds_unit.js +0 -43
  302. package/test/media/drm_engine_integration.js +0 -356
  303. package/test/media/drm_engine_unit.js +0 -2778
  304. package/test/media/media_source_engine_integration.js +0 -691
  305. package/test/media/media_source_engine_unit.js +0 -1512
  306. package/test/media/mp4_segment_index_parser_unit.js +0 -80
  307. package/test/media/play_rate_controller_unit.js +0 -69
  308. package/test/media/playhead_unit.js +0 -1394
  309. package/test/media/presentation_timeline_unit.js +0 -477
  310. package/test/media/quality_observer_unit.js +0 -138
  311. package/test/media/region_observer_unit.js +0 -374
  312. package/test/media/region_timeline_unit.js +0 -139
  313. package/test/media/segment_index_unit.js +0 -1080
  314. package/test/media/segment_prefetch_unit.js +0 -243
  315. package/test/media/segment_reference_unit.js +0 -63
  316. package/test/media/stall_detector_unit.js +0 -184
  317. package/test/media/streaming_engine_integration.js +0 -632
  318. package/test/media/streaming_engine_unit.js +0 -4211
  319. package/test/media/time_ranges_utils_unit.js +0 -123
  320. package/test/media/webm_segment_index_parser_unit.js +0 -90
  321. package/test/mss/mss_parser_content_protection_unit.js +0 -49
  322. package/test/mss/mss_parser_unit.js +0 -474
  323. package/test/mss/mss_player_integration.js +0 -124
  324. package/test/net/data_uri_plugin_unit.js +0 -105
  325. package/test/net/http_plugin_unit.js +0 -439
  326. package/test/net/networking_engine_unit.js +0 -1236
  327. package/test/net/networking_utils_unit.js +0 -37
  328. package/test/offline/download_progress_estimator_unit.js +0 -90
  329. package/test/offline/indexeddb_storage_unit.js +0 -192
  330. package/test/offline/manifest_convert_unit.js +0 -622
  331. package/test/offline/offline_integration.js +0 -168
  332. package/test/offline/offline_manifest_parser_unit.js +0 -231
  333. package/test/offline/offline_scheme_unit.js +0 -154
  334. package/test/offline/offline_uri_unit.js +0 -59
  335. package/test/offline/storage_compatibility_unit.js +0 -344
  336. package/test/offline/storage_integration.js +0 -1858
  337. package/test/player_external.js +0 -237
  338. package/test/player_integration.js +0 -1371
  339. package/test/player_load_graph_integration.js +0 -865
  340. package/test/player_src_equals_external.js +0 -154
  341. package/test/player_src_equals_integration.js +0 -527
  342. package/test/player_unit.js +0 -4434
  343. package/test/polyfill/media_capabilities_unit.js +0 -277
  344. package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
  345. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  346. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  347. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  348. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  349. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  350. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  351. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  352. package/test/test/assets/3675/dash_0.mpd +0 -30
  353. package/test/test/assets/3675/dash_1.mpd +0 -30
  354. package/test/test/assets/3675/dash_2.mpd +0 -30
  355. package/test/test/assets/3675/dash_3.mpd +0 -30
  356. package/test/test/assets/3675/dash_4.mpd +0 -30
  357. package/test/test/assets/3675/dash_5.mpd +0 -26
  358. package/test/test/assets/3675/init-stream0.m4s +0 -0
  359. package/test/test/assets/audio-xhe-aac.mp4 +0 -0
  360. package/test/test/assets/audio.ts +0 -0
  361. package/test/test/assets/captions-test.ts +0 -0
  362. package/test/test/assets/cea-init.mp4 +0 -0
  363. package/test/test/assets/cea-segment.mp4 +0 -0
  364. package/test/test/assets/chapters.srt +0 -11
  365. package/test/test/assets/chapters.vtt +0 -10
  366. package/test/test/assets/chapters2.vtt +0 -10
  367. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  368. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  369. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  370. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  371. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  372. package/test/test/assets/dash-aes-128/dash.mpd +0 -18
  373. package/test/test/assets/dash-aes-128/license +0 -1
  374. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  375. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  376. package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
  377. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  378. package/test/test/assets/db-dump-v1.json +0 -1
  379. package/test/test/assets/db-dump-v2-broken.json +0 -1
  380. package/test/test/assets/db-dump-v2-clean.json +0 -1
  381. package/test/test/assets/db-dump-v3.json +0 -1
  382. package/test/test/assets/db-dump-v4-broken.json +0 -1
  383. package/test/test/assets/db-dump-v5.json +0 -1
  384. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  385. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  386. package/test/test/assets/encrypted-sintel-audio-init.mp4 +0 -0
  387. package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
  388. package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
  389. package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
  390. package/test/test/assets/green-pixel.mp4 +0 -0
  391. package/test/test/assets/green-pixel.txt +0 -15
  392. package/test/test/assets/h265-cea-init.mp4 +0 -0
  393. package/test/test/assets/h265-cea-segment.mp4 +0 -0
  394. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  395. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  396. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  397. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  398. package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
  399. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
  400. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  401. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  402. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  403. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  404. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  405. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  406. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  407. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  408. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
  409. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  410. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  411. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  412. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  413. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  414. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  415. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  416. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  417. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
  418. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
  419. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  420. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  421. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  422. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  423. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
  424. package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
  425. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  426. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  427. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  428. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  429. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  430. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  431. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  432. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  433. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  434. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  435. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  436. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  437. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  438. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  439. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
  440. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  441. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  442. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  443. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  444. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  445. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  446. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
  447. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  448. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  449. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  450. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  451. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  452. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  453. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
  454. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  455. package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
  456. package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
  457. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
  458. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  459. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  460. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  461. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  462. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
  463. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  464. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  465. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  466. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  467. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  468. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  469. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
  470. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  471. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  472. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
  473. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
  474. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  475. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  476. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  477. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  478. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  479. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  480. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  481. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  482. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  483. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  484. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
  485. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
  486. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  487. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  488. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  489. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  490. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  491. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  492. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  493. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  494. package/test/test/assets/id3-metadata.aac +0 -0
  495. package/test/test/assets/id3-metadata.ts +0 -0
  496. package/test/test/assets/index-segment.mp4 +0 -0
  497. package/test/test/assets/index-segment.webm +0 -0
  498. package/test/test/assets/init-segment.webm +0 -0
  499. package/test/test/assets/large_file.mpd +0 -4930
  500. package/test/test/assets/multidrm-audio-init.mp4 +0 -0
  501. package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
  502. package/test/test/assets/multidrm-video-init.mp4 +0 -0
  503. package/test/test/assets/multidrm-video-segment.mp4 +0 -0
  504. package/test/test/assets/multiple-trun-init.mp4 +0 -0
  505. package/test/test/assets/multiple-trun-segment.mp4 +0 -0
  506. package/test/test/assets/sintel-audio-init.mp4 +0 -0
  507. package/test/test/assets/sintel-audio-segment.mp4 +0 -0
  508. package/test/test/assets/sintel-video-init.mp4 +0 -0
  509. package/test/test/assets/sintel-video-segment.mp4 +0 -0
  510. package/test/test/assets/small.mp4 +0 -0
  511. package/test/test/assets/text-clip-alt.vtt +0 -63
  512. package/test/test/assets/text-clip.vtt +0 -63
  513. package/test/test/assets/thumbnails-sprites.vtt +0 -10
  514. package/test/test/assets/thumbnails.vtt +0 -10
  515. package/test/test/assets/ttml-init.mp4 +0 -0
  516. package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
  517. package/test/test/assets/ttml-segment.mp4 +0 -0
  518. package/test/test/assets/video.ts +0 -0
  519. package/test/test/assets/vtt-init.mp4 +0 -0
  520. package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
  521. package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
  522. package/test/test/assets/vtt-segment-settings.mp4 +0 -0
  523. package/test/test/assets/vtt-segment.mp4 +0 -0
  524. package/test/test/boot.js +0 -495
  525. package/test/test/externs/filters.js +0 -44
  526. package/test/test/externs/fontfaceonload.js +0 -29
  527. package/test/test/externs/jasmine.js +0 -670
  528. package/test/test/externs/karma.js +0 -26
  529. package/test/test/externs/require.js +0 -21
  530. package/test/test/externs/sprintf.js +0 -18
  531. package/test/test/namespace.js +0 -10
  532. package/test/test/util/canned_idb.js +0 -379
  533. package/test/test/util/cea_utils.js +0 -60
  534. package/test/test/util/dash_parser_util.js +0 -329
  535. package/test/test/util/fake_ad.js +0 -321
  536. package/test/test/util/fake_ad_manager.js +0 -122
  537. package/test/test/util/fake_demo_main.js +0 -144
  538. package/test/test/util/fake_drm_engine.js +0 -103
  539. package/test/test/util/fake_media_source_engine.js +0 -464
  540. package/test/test/util/fake_networking_engine.js +0 -381
  541. package/test/test/util/fake_segment_prefetch.js +0 -84
  542. package/test/test/util/fake_text_displayer.js +0 -60
  543. package/test/test/util/id3_generator.js +0 -100
  544. package/test/test/util/indexeddb_utils.js +0 -124
  545. package/test/test/util/jasmine_fetch.js +0 -382
  546. package/test/test/util/layout_tests.js +0 -434
  547. package/test/test/util/loader.js +0 -88
  548. package/test/test/util/manifest_generator.js +0 -705
  549. package/test/test/util/manifest_parser_util.js +0 -101
  550. package/test/test/util/mss_parser_util.js +0 -119
  551. package/test/test/util/offline_utils.js +0 -105
  552. package/test/test/util/simple_fakes.js +0 -535
  553. package/test/test/util/stream_generator.js +0 -676
  554. package/test/test/util/streaming_engine_util.js +0 -506
  555. package/test/test/util/test_scheme.js +0 -778
  556. package/test/test/util/ttml_utils.js +0 -77
  557. package/test/test/util/ui_utils.js +0 -183
  558. package/test/test/util/util.js +0 -374
  559. package/test/test/util/waiter.js +0 -406
  560. package/test/text/cue_integration.js +0 -51
  561. package/test/text/lrc_text_parser_unit.js +0 -98
  562. package/test/text/mp4_ttml_parser_unit.js +0 -171
  563. package/test/text/mp4_vtt_parser_unit.js +0 -195
  564. package/test/text/sbv_text_parser_unit.js +0 -81
  565. package/test/text/simple_text_displayer_unit.js +0 -468
  566. package/test/text/srt_text_parser_unit.js +0 -163
  567. package/test/text/ssa_text_parser_unit.js +0 -382
  568. package/test/text/text_displayer_layout_unit.js +0 -323
  569. package/test/text/text_engine_unit.js +0 -500
  570. package/test/text/text_track_integration.js +0 -186
  571. package/test/text/ttml_text_parser_unit.js +0 -2176
  572. package/test/text/ui_text_displayer_unit.js +0 -608
  573. package/test/text/vtt_text_parser_unit.js +0 -1363
  574. package/test/text/web_vtt_generator_unit.js +0 -144
  575. package/test/text/web_vtt_layout_integration.js +0 -524
  576. package/test/transmuxer/transmuxer_engine_integration.js +0 -69
  577. package/test/transmuxer/transmuxer_integration.js +0 -443
  578. package/test/ui/ad_ui_unit.js +0 -369
  579. package/test/ui/localization_unit.js +0 -508
  580. package/test/ui/ui_customization_unit.js +0 -208
  581. package/test/ui/ui_integration.js +0 -669
  582. package/test/ui/ui_unit.js +0 -902
  583. package/test/util/abortable_operation_unit.js +0 -624
  584. package/test/util/array_utils_unit.js +0 -58
  585. package/test/util/buffer_utils_unit.js +0 -185
  586. package/test/util/cmcd_manager_unit.js +0 -440
  587. package/test/util/content_steering_manager_unit.js +0 -427
  588. package/test/util/data_view_reader_unit.js +0 -254
  589. package/test/util/ebml_parser_unit.js +0 -297
  590. package/test/util/event_manager_unit.js +0 -185
  591. package/test/util/fake_event_target_unit.js +0 -123
  592. package/test/util/id3_utils_unit.js +0 -168
  593. package/test/util/iterables_unit.js +0 -68
  594. package/test/util/language_utils_unit.js +0 -240
  595. package/test/util/manifest_parser_utils_unit.js +0 -55
  596. package/test/util/mime_utils_unit.js +0 -64
  597. package/test/util/mp4_box_parsers_unit.js +0 -246
  598. package/test/util/mp4_parser_unit.js +0 -373
  599. package/test/util/multi_map_unit.js +0 -94
  600. package/test/util/object_utils_unit.js +0 -79
  601. package/test/util/periods_unit.js +0 -1623
  602. package/test/util/pssh_unit.js +0 -226
  603. package/test/util/state_history_unit.js +0 -101
  604. package/test/util/stream_utils_unit.js +0 -1068
  605. package/test/util/string_utils_unit.js +0 -166
  606. package/test/util/text_parser_unit.js +0 -165
  607. package/test/util/ts_parser_unit.js +0 -77
  608. package/test/util/xml_utils_unit.js +0 -444
@@ -1,15 +0,0 @@
1
- # Maintained Shaka Player Branches
2
-
3
- We are currently maintaining the following branches of Shaka Player:
4
-
5
- - v4.6 (latest)
6
- - v4.5 (previous)
7
- - v4.3 (in use by the Cast Application Framework)
8
- - No active LTS branches at this time
9
-
10
- Other branches are no longer receiving bug fixes, and we recommend you upgrade
11
- to a maintained branch. For details on upgrading, please see our
12
- [upgrade guide](https://shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html).
13
-
14
- For more information on how these branches are chosen, please refer to our
15
- [Branch Maintenance Policy](https://shaka-project.github.io/maintenance/shaka-player.html#branch-maintenance-policy).
package/roadmap.md DELETED
@@ -1,186 +0,0 @@
1
- # Shaka Player Roadmap
2
-
3
- This doc shows all past and planned future milestones for Shaka Player, with
4
- brief details about the goals and rough dates of each milestone. This is not a
5
- comprehensive list of features or fixes for each release. For that, see
6
- CHANGELOG.md.
7
-
8
- The goals of future milestones are fluid until we begin that development cycle,
9
- so the exact milestone for future features is not pre-determined.
10
-
11
- Candidate features for future release cycles:
12
- - Official TypeScript defs, generated from source
13
- https://github.com/shaka-project/shaka-player/issues/1030
14
- - Background fetch for offline storage
15
- https://github.com/shaka-project/shaka-player/issues/879
16
- - A method to stitch together clips
17
- https://github.com/shaka-project/shaka-player/issues/764
18
- - Predict next segment in DASH SegmentTimeline
19
- https://github.com/shaka-project/shaka-player/issues/898
20
- - Smaller, more modular binary
21
-
22
- v5.0 - 2024 Q1
23
- - Preload API
24
- https://github.com/shaka-project/shaka-player/issues/880
25
- - Common Media Server Data (CMSD)
26
- https://github.com/shaka-project/shaka-player/issues/5890
27
-
28
- =====
29
-
30
- v4.6 - 2023 Q4
31
- - Content Steering
32
- https://github.com/shaka-project/shaka-player/issues/5704
33
- - New DASH protocol for Low Latency.
34
- - ManagedMediaSource
35
- https://github.com/shaka-project/shaka-player/issues/5271
36
- - Add thumbnails support in src=
37
- - Remove state engine
38
-
39
- v4.5 - 2023 Q4
40
- - Built-in transmuxer support for muxed content streams (audio+video)
41
- - Built-in transmuxer support for H265 streams
42
- - Remove optional mux.js dependency
43
- - Codec switching
44
- https://github.com/shaka-project/shaka-player/issues/1528
45
- - AES-128 in DASH.
46
- https://github.com/shaka-project/shaka-player/issues/5622
47
- - AWS Elemental MediaTailor
48
-
49
- v4.4 - 2023 Q3
50
- - Built-in transmuxer for common cases, no mux.js required:
51
- - Raw AAC, AC3, or EC3 to MP4 container
52
- - AAC, AC3, EC3, MP3, or H264 in TS to MP4 container
53
- - MP3-in-TS to raw MP3
54
- - Ads API improvements
55
- - CEA parser for TS
56
- - HLS support for non-sequence mode (as we had in v3)
57
- - Partial support for large timestamps
58
- - UI support for thumbnails on seek
59
- - Microsoft SmoothStreaming support
60
- - Segment prefetch
61
- - Low latency improvements
62
-
63
- v4.3 - 2022 Q4
64
- - Support ID3 tags in mp4
65
- https://github.com/shaka-project/shaka-player/issues/3351
66
- - Lazy-load HLS playlists on adaptation
67
- https://github.com/shaka-project/shaka-player/issues/1936
68
- - HLS key rotation
69
- https://github.com/shaka-project/shaka-player/issues/741
70
-
71
- v4.2 - 2022 Q3
72
- - Automatic ABR quality restrictions based on size
73
- https://github.com/shaka-project/shaka-player/issues/2333
74
- - HLS support for AES-128 encryption
75
- https://github.com/shaka-project/shaka-player/issues/850
76
-
77
- v4.1 - 2022 Q2
78
- - HLS support for EXT-X-GAP
79
- https://github.com/shaka-project/shaka-player/issues/1308
80
- - Temporarily disable the active variant after `HTTP_ERROR`
81
- https://github.com/shaka-project/shaka-player/issues/1542
82
-
83
- v4.0 - 2022 Q2
84
- - MSE support for FairPlay
85
- https://github.com/shaka-project/shaka-player/issues/3346
86
- - Support containerless formats
87
- https://github.com/shaka-project/shaka-player/issues/2337
88
-
89
- v3.3 - 2022 Q1
90
- - Common Media Client Data (CMCD) logging support
91
- https://github.com/shaka-project/shaka-player/issues/3619
92
- - Non-linear IMA CS ads
93
- https://github.com/shaka-project/shaka-player/pull/3639
94
-
95
- v3.2 - 2021 Q3
96
- - MediaCapabilities to make performance-based decisions
97
- https://github.com/shaka-project/shaka-player/issues/1391
98
- - Configurable key-system priority
99
- https://github.com/shaka-project/shaka-player/issues/3002
100
- - Codec order preferences
101
- https://github.com/shaka-project/shaka-player/issues/2179
102
-
103
- v3.1 - 2021 Q2
104
- - Low-latency live (LL-HLS, LL-DASH)
105
- https://github.com/shaka-project/shaka-player/issues/1525
106
- - Own CEA parser, use mux.js only for TS
107
- https://github.com/shaka-project/shaka-player/issues/2648
108
- - Thumbnail tracks
109
- DASH: https://github.com/shaka-project/shaka-player/issues/559
110
- HLS: https://github.com/shaka-project/shaka-player/issues/2429
111
-
112
- v3.0 - 2020 Q2
113
- - Code health improvements
114
- - Conversion to ES6
115
- - Isolate DASH periods to the DASH parser
116
- - HLS discontinuity support
117
- - IMA ad SDK integration
118
- - Ad controls in the UI
119
- - Concurrent Storage operations
120
-
121
- v2.5 - 2019 Q2
122
- - Video controls UI API
123
- - FairPlay & iOS support
124
- - CEA captions in HLS/CMAF and DASH w/ mux.js
125
- - Single-file playback
126
- - DASH drift tolerance
127
-
128
- v2.4 - 2018 Q2
129
- - TTML and VTT regions
130
- - CEA captions in HLS/TS
131
- - Attach/detach API
132
-
133
- v2.3 - 2017 Q4
134
- - HLS live
135
- - Transmux TS w/ mux.js
136
- - NetworkInformation API to improve bandwidth estimates
137
- - ES6 transition begins
138
-
139
- v2.2 - 2017 Q3
140
- - HLS event-type playlists
141
- - TextDisplayer interface
142
- - DASH xlink support
143
-
144
- v2.1 - 2017 Q2
145
- - HLS VOD, clear & Widevine only, no CEA
146
- - DASH trick mode tracks
147
- - Async network filters
148
-
149
- v2.0 - 2016 Q3
150
- - Multi-period DASH
151
- - Chromecast API
152
- - TTML, VTT-in-MP4, and TTML-in-MP4
153
- - Safari, Firefox, & Opera support
154
- - Plugin system (manifest parsers, network filters, text parsers)
155
- - DASH emsg box support
156
- - DASH IPR support
157
-
158
- v1.6 - 2015 Q4
159
- - IE11, Edge, & PlayReady support
160
- - Chromecast added to demo app
161
-
162
- v1.5 - 2015 Q3
163
- - Unified configuration system
164
- - Multiple DASH BaseURL elements for failover
165
- - Side-loaded text streams
166
-
167
- v1.4 - 2015 Q3
168
- - Code health release
169
- - DASH Location element support
170
- - Buffering config API
171
- - License preprocessing API
172
-
173
- v1.3 - 2015 Q2
174
- - DASH live
175
- - Offline playback
176
-
177
- v1.2 - 2015 Q1
178
- - DASH Role element support
179
-
180
- v1.1 - 2015 Q1
181
- - EME API updates
182
-
183
- v1.0 - 2014 Q4
184
- - DASH VOD (MP4 & WebM)
185
- - VTT subtitles, rendered by the browser
186
- - Widevine support
@@ -1,398 +0,0 @@
1
- /*! @license
2
- * Shaka Player
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- describe('SimpleAbrManager', () => {
8
- const sufficientBWMultiplier = 1.06;
9
- const defaultBandwidthEstimate = 500e3; // 500kbps
10
- const oldDateNow = Date.now;
11
-
12
- /** @type {shaka.extern.AbrConfiguration} */
13
- let config;
14
- /** @type {!jasmine.Spy} */
15
- let switchCallback;
16
- /** @type {!shaka.abr.SimpleAbrManager} */
17
- let abrManager;
18
- /** @type {shaka.extern.Manifest} */
19
- let manifest;
20
- /** @type {!Array.<shaka.extern.Variant>} */
21
- let variants;
22
-
23
- beforeEach(() => {
24
- Date.now = () => 0;
25
- switchCallback = jasmine.createSpy('switchCallback');
26
-
27
- // Keep unsorted.
28
- manifest = shaka.test.ManifestGenerator.generate((manifest) => {
29
- manifest.addVariant(100, (variant) => {
30
- variant.bandwidth = 4e5; // 400 kbps
31
- variant.addAudio(0);
32
- variant.addVideo(1);
33
- });
34
- manifest.addVariant(101, (variant) => {
35
- variant.bandwidth = 1e6; // 1000 kbps
36
- variant.addAudio(2);
37
- variant.addVideo(3);
38
- });
39
- manifest.addVariant(102, (variant) => {
40
- variant.bandwidth = 5e5; // 500 kbps
41
- variant.addAudio(4);
42
- variant.addVideo(5);
43
- });
44
- manifest.addVariant(103, (variant) => {
45
- variant.bandwidth = 2e6;
46
- variant.addAudio(6);
47
- variant.addVideo(7);
48
- });
49
- manifest.addVariant(104, (variant) => {
50
- variant.bandwidth = 2e6; // Identical on purpose.
51
- variant.addAudio(8);
52
- variant.addVideo(9);
53
- });
54
- manifest.addVariant(105, (variant) => {
55
- variant.bandwidth = 6e5;
56
- variant.addAudio(10);
57
- variant.addVideo(11);
58
- });
59
- manifest.addTextStream(20);
60
- manifest.addTextStream(21);
61
- });
62
-
63
- config = shaka.util.PlayerConfiguration.createDefault().abr;
64
- config.defaultBandwidthEstimate = defaultBandwidthEstimate;
65
- config.useNetworkInformation = false;
66
-
67
- variants = manifest.variants;
68
-
69
- abrManager = new shaka.abr.SimpleAbrManager();
70
- abrManager.init(shaka.test.Util.spyFunc(switchCallback));
71
- abrManager.configure(config);
72
- abrManager.setVariants(variants);
73
- });
74
-
75
- afterEach(() => {
76
- abrManager.stop();
77
- Date.now = oldDateNow;
78
- });
79
-
80
- it('can choose audio and video Streams right away', () => {
81
- const chosen = abrManager.chooseVariant();
82
- expect(chosen).not.toBe(null);
83
- });
84
-
85
- it('uses custom default estimate', () => {
86
- config.defaultBandwidthEstimate = 3e6;
87
- abrManager.configure(config);
88
- const chosen = abrManager.chooseVariant();
89
- expect(chosen.id).toBe(103);
90
- });
91
-
92
- it('can handle empty variants', () => {
93
- abrManager.setVariants([]);
94
- const chosen = abrManager.chooseVariant();
95
- expect(chosen).toBe(null);
96
- });
97
-
98
- it('can choose from audio only variants', () => {
99
- manifest = shaka.test.ManifestGenerator.generate((manifest) => {
100
- manifest.addVariant(0, (variant) => {
101
- variant.bandwidth = 4e5;
102
- variant.addAudio(0);
103
- });
104
- manifest.addVariant(1, (variant) => {
105
- variant.bandwidth = 1e6;
106
- variant.addAudio(2);
107
- });
108
- });
109
-
110
- abrManager.setVariants(manifest.variants);
111
- const chosen = abrManager.chooseVariant();
112
- expect(chosen).not.toBe(null);
113
- expect(chosen.audio).not.toBe(null);
114
- expect(chosen.video).toBe(null);
115
- });
116
-
117
- it('can choose from video only variants', () => {
118
- manifest = shaka.test.ManifestGenerator.generate((manifest) => {
119
- manifest.addVariant(0, (variant) => {
120
- variant.bandwidth = 4e5;
121
- variant.addVideo(0);
122
- });
123
- manifest.addVariant(1, (variant) => {
124
- variant.bandwidth = 1e6;
125
- variant.addVideo(2);
126
- });
127
- });
128
-
129
- abrManager.setVariants(manifest.variants);
130
- const chosen = abrManager.chooseVariant();
131
- expect(chosen).not.toBe(null);
132
- expect(chosen.audio).toBe(null);
133
- expect(chosen.video).not.toBe(null);
134
- });
135
-
136
- for (const bandwidth of [5e5, 6e5]) {
137
- // Simulate some segments being downloaded just above the desired
138
- // bandwidth.
139
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
140
-
141
- const bandwidthKbps = bandwidth / 1000.0;
142
- const description = 'picks correct Variant at ' + bandwidthKbps + ' kbps';
143
-
144
- it(description, () => {
145
- abrManager.setVariants(variants);
146
- abrManager.chooseVariant();
147
-
148
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
149
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
150
-
151
- abrManager.enable();
152
-
153
- // Make another call to segmentDownloaded() so switchCallback() is
154
- // called.
155
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
156
-
157
- // Expect variants 2 to be chosen for bandwidth = 5e5
158
- // and variant 5 - for bandwidth = 6e5
159
- const expectedVariant = (bandwidth == 6e5) ? variants[5] : variants[2];
160
-
161
- expect(switchCallback).toHaveBeenCalledWith(expectedVariant, false, 0);
162
- });
163
- }
164
-
165
- it('can handle 0 duration segments', () => {
166
- // Makes sure bandwidth estimate doesn't get set to NaN
167
- // when a 0 duration segment is encountered.
168
- // https://github.com/shaka-project/shaka-player/issues/582
169
- const bandwidth = 5e5;
170
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
171
-
172
- abrManager.setVariants(variants);
173
- abrManager.chooseVariant();
174
-
175
- // 0 duration segment shouldn't cause us to get stuck on the lowest variant
176
- abrManager.segmentDownloaded(0, bytesPerSecond, true);
177
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
178
-
179
- abrManager.enable();
180
-
181
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
182
-
183
- expect(abrManager.getBandwidthEstimate()).toBeTruthy();
184
- });
185
-
186
- it('picks lowest variant when there is insufficient bandwidth', () => {
187
- const bandwidth = 2e6;
188
-
189
- abrManager.setVariants(variants);
190
- abrManager.chooseVariant();
191
-
192
- // Simulate some segments being downloaded just above the desired
193
- // bandwidth.
194
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
195
-
196
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
197
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
198
-
199
- abrManager.enable();
200
-
201
- // Make another call to segmentDownloaded() so switchCallback() is
202
- // called.
203
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
204
-
205
- // Expect variants 4 to be chosen
206
- const expectedVariant = variants[3];
207
-
208
- expect(switchCallback).toHaveBeenCalledWith(expectedVariant, false, 0);
209
- });
210
-
211
- it('does not call switchCallback() if not enabled', () => {
212
- const bandwidth = 5e5;
213
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
214
-
215
- abrManager.setVariants(variants);
216
- abrManager.chooseVariant();
217
-
218
- // Don't enable AbrManager.
219
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
220
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
221
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
222
- expect(switchCallback).not.toHaveBeenCalled();
223
- });
224
-
225
- it('does not call switchCallback() in switch interval', () => {
226
- let bandwidth = 5e5;
227
- let bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
228
-
229
- abrManager.setVariants(variants);
230
- abrManager.chooseVariant();
231
-
232
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
233
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
234
-
235
- abrManager.enable();
236
-
237
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
238
- expect(switchCallback).toHaveBeenCalled();
239
- switchCallback.calls.reset();
240
-
241
- // Simulate drop in bandwidth.
242
- bandwidth = 2e6;
243
- bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
244
-
245
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
246
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
247
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
248
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
249
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
250
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
251
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
252
-
253
- // Stay inside switch interval.
254
- Date.now = () => (config.switchInterval - 2) * 1e3;
255
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
256
-
257
- expect(switchCallback).not.toHaveBeenCalled();
258
-
259
- // Move outside switch interval.
260
- Date.now = () => (config.switchInterval + 2) * 1e3;
261
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
262
-
263
- expect(switchCallback).toHaveBeenCalled();
264
- });
265
-
266
- it('does not clear the buffer on upgrade', () => {
267
- // Simulate some segments being downloaded at a high rate, to trigger an
268
- // upgrade.
269
- const bandwidth = 5e5;
270
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
271
-
272
- abrManager.setVariants(variants);
273
- abrManager.chooseVariant();
274
-
275
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
276
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
277
-
278
- abrManager.enable();
279
-
280
- // Make another call to segmentDownloaded(). switchCallback() will be
281
- // called to upgrade.
282
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
283
-
284
- // The second parameter is missing to indicate that the buffer should not be
285
- // cleared.
286
- expect(switchCallback).toHaveBeenCalledWith(jasmine.any(Object), false, 0);
287
- });
288
-
289
- it('does clear the buffer on upgrade with safemargin to 4', () => {
290
- // Simulate some segments being downloaded at a high rate, to trigger an
291
- // upgrade.
292
- const bandwidth = 5e5;
293
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
294
-
295
- // Set the clear buffer to true and the safe margin to 4.
296
- config.clearBufferSwitch = true;
297
- config.safeMarginSwitch = 4;
298
- abrManager.configure(config);
299
-
300
- abrManager.setVariants(variants);
301
- abrManager.chooseVariant();
302
-
303
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
304
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
305
-
306
- abrManager.enable();
307
-
308
- // Make another call to segmentDownloaded(). switchCallback() will be
309
- // called to upgrade.
310
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
311
-
312
- // The second parameter is missing to indicate that the buffer should not be
313
- // cleared.
314
- expect(switchCallback).toHaveBeenCalledWith(jasmine.any(Object), true, 4);
315
- });
316
-
317
- it('does not clear the buffer on downgrade', () => {
318
- // Simulate some segments being downloaded at a low rate, to trigger a
319
- // downgrade.
320
- const bandwidth = 5e5;
321
- const bytesPerSecond = sufficientBWMultiplier * bandwidth / 8.0;
322
-
323
- // Set the default high so that the initial choice will be high-quality.
324
- config.defaultBandwidthEstimate = 4e6;
325
- abrManager.configure(config);
326
-
327
- abrManager.setVariants(variants);
328
- abrManager.chooseVariant();
329
-
330
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
331
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
332
-
333
- abrManager.enable();
334
-
335
- // Make another call to segmentDownloaded(). switchCallback() will be
336
- // called to downgrade.
337
- abrManager.segmentDownloaded(1000, bytesPerSecond, true);
338
-
339
- // The second parameter is missing to indicate that the buffer should not be
340
- // cleared.
341
- expect(switchCallback).toHaveBeenCalledWith(jasmine.any(Object), false, 0);
342
- });
343
-
344
- it('will respect restrictions', () => {
345
- manifest = shaka.test.ManifestGenerator.generate((manifest) => {
346
- manifest.addVariant(10, (variant) => {
347
- variant.bandwidth = 1e5;
348
- variant.addVideo(0, (stream) => {
349
- stream.size(50, 50);
350
- });
351
- });
352
- manifest.addVariant(11, (variant) => {
353
- variant.bandwidth = 2e5;
354
- variant.addVideo(1, (stream) => {
355
- stream.size(200, 200);
356
- });
357
- });
358
- });
359
-
360
- abrManager.setVariants(manifest.variants);
361
- let chosen = abrManager.chooseVariant();
362
- expect(chosen.id).toBe(11);
363
-
364
- config.restrictions.maxWidth = 100;
365
- abrManager.configure(config);
366
-
367
- chosen = abrManager.chooseVariant();
368
- expect(chosen.id).toBe(10);
369
- });
370
-
371
- it('uses lowest-bandwidth variant when restrictions cannot be met', () => {
372
- manifest = shaka.test.ManifestGenerator.generate((manifest) => {
373
- manifest.addVariant(10, (variant) => {
374
- variant.bandwidth = 1e5;
375
- variant.addVideo(0, (stream) => {
376
- stream.size(50, 50);
377
- });
378
- });
379
- manifest.addVariant(11, (variant) => {
380
- variant.bandwidth = 2e5;
381
- variant.addVideo(1, (stream) => {
382
- stream.size(200, 200);
383
- });
384
- });
385
- });
386
-
387
- abrManager.setVariants(manifest.variants);
388
- let chosen = abrManager.chooseVariant();
389
- expect(chosen.id).toBe(11);
390
-
391
- // This restriction cannot be met, but we shouldn't fail.
392
- config.restrictions.maxWidth = 1;
393
- abrManager.configure(config);
394
-
395
- chosen = abrManager.chooseVariant();
396
- expect(chosen.id).toBe(10);
397
- });
398
- });