shaka-player 4.6.4 → 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 (598) 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 +9 -5
  5. package/dist/locales.js +29 -29
  6. package/dist/shaka-player.compiled.d.ts +46 -3
  7. package/dist/shaka-player.compiled.debug.d.ts +46 -3
  8. package/dist/shaka-player.compiled.debug.externs.js +45 -0
  9. package/dist/shaka-player.compiled.debug.js +382 -351
  10. package/dist/shaka-player.compiled.debug.map +4 -4
  11. package/dist/shaka-player.compiled.externs.js +45 -0
  12. package/dist/shaka-player.compiled.js +1135 -1121
  13. package/dist/shaka-player.compiled.map +4 -4
  14. package/dist/shaka-player.ui.d.ts +68 -4
  15. package/dist/shaka-player.ui.debug.d.ts +68 -4
  16. package/dist/shaka-player.ui.debug.externs.js +77 -0
  17. package/dist/shaka-player.ui.debug.js +428 -392
  18. package/dist/shaka-player.ui.debug.map +4 -4
  19. package/dist/shaka-player.ui.externs.js +77 -0
  20. package/dist/shaka-player.ui.js +1304 -1290
  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/cea/cea708_service.js +1 -1
  28. package/lib/cea/cea708_window.js +95 -7
  29. package/lib/dash/dash_parser.js +55 -11
  30. package/lib/media/adaptation_set_criteria.js +76 -10
  31. package/lib/media/media_source_engine.js +42 -18
  32. package/lib/media/segment_reference.js +12 -0
  33. package/lib/media/streaming_engine.js +55 -3
  34. package/lib/player.js +92 -6
  35. package/lib/util/cmsd_manager.js +269 -0
  36. package/lib/util/content_steering_manager.js +5 -1
  37. package/lib/util/mime_utils.js +6 -2
  38. package/lib/util/periods.js +108 -39
  39. package/lib/util/player_configuration.js +19 -5
  40. package/lib/util/stream_utils.js +82 -13
  41. package/package.json +1 -1
  42. package/ui/audio_language_selection.js +3 -0
  43. package/ui/controls.js +60 -0
  44. package/ui/externs/ui.js +12 -1
  45. package/ui/hidden_fast_forward_button.js +32 -0
  46. package/ui/hidden_rewind_button.js +32 -0
  47. package/ui/hidden_seek_button.js +121 -0
  48. package/ui/less/buttons.less +50 -0
  49. package/ui/less/containers.less +18 -0
  50. package/ui/resolution_selection.js +2 -0
  51. package/ui/ui.js +2 -0
  52. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -75
  53. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
  54. package/.github/ISSUE_TEMPLATE/question.md +0 -26
  55. package/.github/config.yml +0 -1
  56. package/.github/workflows/appspot.yaml +0 -39
  57. package/.github/workflows/build-and-test.yaml +0 -222
  58. package/.github/workflows/compute-incremental-coverage.py +0 -265
  59. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +0 -56
  60. package/.github/workflows/custom-actions/set-commit-status/action.yaml +0 -37
  61. package/.github/workflows/deflake.yaml +0 -31
  62. package/.github/workflows/demo-version-index.yaml +0 -43
  63. package/.github/workflows/nightly-demo.yaml +0 -42
  64. package/.github/workflows/release-please.yaml +0 -193
  65. package/.github/workflows/report-incremental-coverage.yaml +0 -39
  66. package/.github/workflows/safari-homedir-launcher.sh +0 -18
  67. package/.github/workflows/selenium-lab-tests.yaml +0 -370
  68. package/.github/workflows/shaka-bot-commands/command-help.sh +0 -27
  69. package/.github/workflows/shaka-bot-commands/command-test.sh +0 -56
  70. package/.github/workflows/shaka-bot-commands/lib.sh +0 -83
  71. package/.github/workflows/shaka-bot-commands/main.sh +0 -51
  72. package/.github/workflows/sync-labels.yaml +0 -33
  73. package/.github/workflows/talk-to-shaka-bot.yaml +0 -29
  74. package/.github/workflows/update-issues.yaml +0 -31
  75. package/.github/workflows/update-screenshots.yaml +0 -142
  76. package/.github/workflows/validate-pr-title.yaml +0 -27
  77. package/CHANGELOG.md +0 -5774
  78. package/CODE_OF_CONDUCT.md +0 -93
  79. package/CONTRIBUTING.md +0 -76
  80. package/demo/TengwarTelcontar.woff2 +0 -0
  81. package/demo/app_logo_144.png +0 -0
  82. package/demo/app_logo_192.png +0 -0
  83. package/demo/app_logo_256.png +0 -0
  84. package/demo/app_logo_384.png +0 -0
  85. package/demo/app_logo_512.png +0 -0
  86. package/demo/app_manifest.json +0 -29
  87. package/demo/asset_card.js +0 -410
  88. package/demo/autoTemplate.txt +0 -61
  89. package/demo/cast_receiver/idle1.jpg +0 -0
  90. package/demo/cast_receiver/idle2.jpg +0 -0
  91. package/demo/cast_receiver/idle3.jpg +0 -0
  92. package/demo/cast_receiver/index.html +0 -75
  93. package/demo/cast_receiver/receiver_app.css +0 -111
  94. package/demo/cast_receiver/receiver_app.js +0 -158
  95. package/demo/close_button.js +0 -60
  96. package/demo/common/asset.js +0 -510
  97. package/demo/common/assets.js +0 -1634
  98. package/demo/config.js +0 -859
  99. package/demo/custom.js +0 -907
  100. package/demo/customWarning.txt +0 -8
  101. package/demo/demo.less +0 -591
  102. package/demo/demo_uncompiled.js +0 -11
  103. package/demo/demo_utils.js +0 -113
  104. package/demo/favicon.ico +0 -0
  105. package/demo/front.js +0 -156
  106. package/demo/icons/README.md +0 -4
  107. package/demo/icons/baseline-audiotrack-24px.svg +0 -1
  108. package/demo/icons/baseline-closed_caption-24px.svg +0 -1
  109. package/demo/icons/baseline-fast_forward-24px.svg +0 -1
  110. package/demo/icons/baseline-language-24px.svg +0 -1
  111. package/demo/icons/baseline-live_tv-24px.svg +0 -1
  112. package/demo/icons/baseline-subtitles-24px.svg +0 -1
  113. package/demo/icons/baseline-surround_sound-24px.svg +0 -1
  114. package/demo/icons/custom_ad.svg +0 -1
  115. package/demo/icons/custom_box_with_text.svg +0 -1
  116. package/demo/icons/custom_clear_key.svg +0 -1
  117. package/demo/icons/custom_high_definition.svg +0 -1
  118. package/demo/icons/custom_playready.svg +0 -1
  119. package/demo/icons/custom_ultra_high_definition.svg +0 -1
  120. package/demo/icons/custom_widevine.svg +0 -1
  121. package/demo/index.html +0 -173
  122. package/demo/input.js +0 -270
  123. package/demo/input_container.js +0 -218
  124. package/demo/load.js +0 -156
  125. package/demo/main.js +0 -1854
  126. package/demo/search.js +0 -452
  127. package/demo/service_worker.js +0 -355
  128. package/demo/shaka_logo_trans.png +0 -0
  129. package/demo/tooltip.js +0 -29
  130. package/demo/visualizer.js +0 -335
  131. package/demo/visualizer_button.js +0 -84
  132. package/dist/demo.compiled.debug.js +0 -340
  133. package/dist/demo.compiled.debug.map +0 -8
  134. package/dist/demo.compiled.js +0 -340
  135. package/dist/demo.compiled.map +0 -8
  136. package/dist/demo.css +0 -6
  137. package/dist/demo.css.map +0 -1
  138. package/dist/receiver.compiled.debug.js +0 -187
  139. package/dist/receiver.compiled.debug.map +0 -8
  140. package/dist/receiver.compiled.js +0 -187
  141. package/dist/receiver.compiled.map +0 -8
  142. package/docs/announcement-list-join-group.png +0 -0
  143. package/docs/api-mainpage.md +0 -28
  144. package/docs/design/REDESIGN.md +0 -283
  145. package/docs/design/architecture.md +0 -13
  146. package/docs/design/bg-fetch-after.gv +0 -29
  147. package/docs/design/bg-fetch-after.gv.png +0 -0
  148. package/docs/design/bg-fetch-before.gv +0 -18
  149. package/docs/design/bg-fetch-before.gv.png +0 -0
  150. package/docs/design/bg-fetch.md +0 -134
  151. package/docs/design/cast.gv +0 -35
  152. package/docs/design/cast.gv.png +0 -0
  153. package/docs/design/chromecast.md +0 -151
  154. package/docs/design/codec_preferences.md +0 -158
  155. package/docs/design/dash-audio-channels.md +0 -123
  156. package/docs/design/dash-manifests.md +0 -248
  157. package/docs/design/dash-timeline.svg +0 -4
  158. package/docs/design/dataflow.gv +0 -66
  159. package/docs/design/dataflow.gv.png +0 -0
  160. package/docs/design/export.md +0 -70
  161. package/docs/design/fuzzy-locale-matching.md +0 -40
  162. package/docs/design/gap-jumping.md +0 -151
  163. package/docs/design/lcevc-architecture.png +0 -0
  164. package/docs/design/lcevc-demo.png +0 -0
  165. package/docs/design/lcevc-integration.md +0 -72
  166. package/docs/design/locale_compatibility.svg +0 -1
  167. package/docs/design/locales_tree.svg +0 -1
  168. package/docs/design/localization-design-principles.md +0 -158
  169. package/docs/design/newdemo.gv +0 -83
  170. package/docs/design/newdemo.gv.png +0 -0
  171. package/docs/design/offline.gv +0 -43
  172. package/docs/design/offline.gv.png +0 -0
  173. package/docs/design/offline.md +0 -153
  174. package/docs/design/ownership.gv +0 -76
  175. package/docs/design/ownership.gv.png +0 -0
  176. package/docs/design/preload.md +0 -299
  177. package/docs/design/preload.png +0 -0
  178. package/docs/design/talking-about-languages.md +0 -46
  179. package/docs/design/timeline.svg +0 -152
  180. package/docs/design/ui.md +0 -31
  181. package/docs/design/ui_player_relationships.svg +0 -1
  182. package/docs/jsdoc-plugin.js +0 -74
  183. package/docs/jsdoc-template/README.md +0 -1
  184. package/docs/jsdoc-template/publish.js +0 -879
  185. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  186. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
  187. package/docs/jsdoc-template/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  188. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  189. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  190. package/docs/jsdoc-template/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  191. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  192. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
  193. package/docs/jsdoc-template/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  194. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.eot +0 -0
  195. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.svg +0 -1831
  196. package/docs/jsdoc-template/static/fonts/OpenSans-Light-webfont.woff +0 -0
  197. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  198. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  199. package/docs/jsdoc-template/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  200. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  201. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
  202. package/docs/jsdoc-template/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  203. package/docs/jsdoc-template/static/scripts/linenumber.js +0 -44
  204. package/docs/jsdoc-template/static/scripts/show-widget.js +0 -55
  205. package/docs/jsdoc-template/static/styles/jsdoc-default.css +0 -438
  206. package/docs/jsdoc-template/tmpl/augments.tmpl +0 -10
  207. package/docs/jsdoc-template/tmpl/container.tmpl +0 -205
  208. package/docs/jsdoc-template/tmpl/details.tmpl +0 -152
  209. package/docs/jsdoc-template/tmpl/example.tmpl +0 -2
  210. package/docs/jsdoc-template/tmpl/examples.tmpl +0 -13
  211. package/docs/jsdoc-template/tmpl/exceptions.tmpl +0 -32
  212. package/docs/jsdoc-template/tmpl/layout.tmpl +0 -50
  213. package/docs/jsdoc-template/tmpl/mainpage.tmpl +0 -14
  214. package/docs/jsdoc-template/tmpl/members.tmpl +0 -47
  215. package/docs/jsdoc-template/tmpl/method.tmpl +0 -140
  216. package/docs/jsdoc-template/tmpl/modifies.tmpl +0 -14
  217. package/docs/jsdoc-template/tmpl/params.tmpl +0 -131
  218. package/docs/jsdoc-template/tmpl/properties.tmpl +0 -125
  219. package/docs/jsdoc-template/tmpl/returns.tmpl +0 -19
  220. package/docs/jsdoc-template/tmpl/source.tmpl +0 -8
  221. package/docs/jsdoc-template/tmpl/tutorial.tmpl +0 -21
  222. package/docs/jsdoc-template/tmpl/type.tmpl +0 -7
  223. package/docs/jsdoc.conf.json +0 -38
  224. package/docs/shaka-player-logo.png +0 -0
  225. package/docs/style.md +0 -174
  226. package/docs/tutorials/a11y.md +0 -64
  227. package/docs/tutorials/ad_monetization.md +0 -292
  228. package/docs/tutorials/application-level-redirects.md +0 -94
  229. package/docs/tutorials/architecture.md +0 -32
  230. package/docs/tutorials/basic-usage.md +0 -89
  231. package/docs/tutorials/blob-url.md +0 -15
  232. package/docs/tutorials/config.md +0 -148
  233. package/docs/tutorials/debugging.md +0 -189
  234. package/docs/tutorials/drm-config.md +0 -274
  235. package/docs/tutorials/errors.md +0 -95
  236. package/docs/tutorials/fairplay.md +0 -242
  237. package/docs/tutorials/faq.md +0 -252
  238. package/docs/tutorials/index.json +0 -29
  239. package/docs/tutorials/lcevc.md +0 -118
  240. package/docs/tutorials/license-server-auth.md +0 -248
  241. package/docs/tutorials/license-wrapping.md +0 -168
  242. package/docs/tutorials/manifest-parser.md +0 -365
  243. package/docs/tutorials/network-and-buffering-config.md +0 -119
  244. package/docs/tutorials/offline.md +0 -683
  245. package/docs/tutorials/plugins.md +0 -184
  246. package/docs/tutorials/selenium-grid-config.md +0 -174
  247. package/docs/tutorials/service-worker.md +0 -106
  248. package/docs/tutorials/ui-customization.md +0 -288
  249. package/docs/tutorials/ui.md +0 -232
  250. package/docs/tutorials/upgrade-manifest.md +0 -281
  251. package/docs/tutorials/upgrade.md +0 -104
  252. package/docs/tutorials/welcome.md +0 -108
  253. package/docs/tutorials/widevine-service-certs.md +0 -45
  254. package/karma.conf.js +0 -879
  255. package/maintained-branches.md +0 -15
  256. package/roadmap.md +0 -186
  257. package/test/abr/simple_abr_manager_unit.js +0 -398
  258. package/test/ads/ad_manager_unit.js +0 -260
  259. package/test/assumptions/uint8_array_unit.js +0 -22
  260. package/test/cast/cast_proxy_unit.js +0 -736
  261. package/test/cast/cast_receiver_integration.js +0 -488
  262. package/test/cast/cast_receiver_unit.js +0 -1183
  263. package/test/cast/cast_sender_unit.js +0 -973
  264. package/test/cast/cast_utils_unit.js +0 -311
  265. package/test/cea/cea608_memory_unit.js +0 -411
  266. package/test/cea/cea708_service_unit.js +0 -674
  267. package/test/cea/cea708_window_unit.js +0 -373
  268. package/test/cea/cea_decoder_unit.js +0 -615
  269. package/test/cea/dtvcc_packet_builder_unit.js +0 -158
  270. package/test/cea/dtvcc_packet_unit.js +0 -60
  271. package/test/cea/mp4_cea_parser_unit.js +0 -127
  272. package/test/codec_switching/codec_switching_integration.js +0 -182
  273. package/test/dash/dash_parser_content_protection_unit.js +0 -998
  274. package/test/dash/dash_parser_integration.js +0 -74
  275. package/test/dash/dash_parser_live_unit.js +0 -1542
  276. package/test/dash/dash_parser_manifest_unit.js +0 -3121
  277. package/test/dash/dash_parser_segment_base_unit.js +0 -421
  278. package/test/dash/dash_parser_segment_list_unit.js +0 -380
  279. package/test/dash/dash_parser_segment_template_unit.js +0 -910
  280. package/test/dash/mpd_utils_unit.js +0 -794
  281. package/test/demo/demo_unit.js +0 -108
  282. package/test/deprecate/enforcer_unit.js +0 -74
  283. package/test/deprecate/version_unit.js +0 -57
  284. package/test/hls/hls_live_unit.js +0 -1330
  285. package/test/hls/hls_parser_unit.js +0 -5276
  286. package/test/hls/manifest_text_parser_unit.js +0 -545
  287. package/test/media/adaptation_set_criteria_unit.js +0 -806
  288. package/test/media/adaptation_set_unit.js +0 -229
  289. package/test/media/buffering_observer_unit.js +0 -143
  290. package/test/media/closed_caption_parser_unit.js +0 -18
  291. package/test/media/content_workarounds_unit.js +0 -43
  292. package/test/media/drm_engine_integration.js +0 -356
  293. package/test/media/drm_engine_unit.js +0 -2805
  294. package/test/media/media_source_engine_integration.js +0 -691
  295. package/test/media/media_source_engine_unit.js +0 -1512
  296. package/test/media/mp4_segment_index_parser_unit.js +0 -80
  297. package/test/media/play_rate_controller_unit.js +0 -69
  298. package/test/media/playhead_unit.js +0 -1394
  299. package/test/media/presentation_timeline_unit.js +0 -477
  300. package/test/media/quality_observer_unit.js +0 -138
  301. package/test/media/region_observer_unit.js +0 -374
  302. package/test/media/region_timeline_unit.js +0 -139
  303. package/test/media/segment_index_unit.js +0 -1080
  304. package/test/media/segment_prefetch_unit.js +0 -243
  305. package/test/media/segment_reference_unit.js +0 -63
  306. package/test/media/stall_detector_unit.js +0 -184
  307. package/test/media/streaming_engine_integration.js +0 -632
  308. package/test/media/streaming_engine_unit.js +0 -4211
  309. package/test/media/time_ranges_utils_unit.js +0 -123
  310. package/test/media/webm_segment_index_parser_unit.js +0 -90
  311. package/test/mss/mss_parser_content_protection_unit.js +0 -49
  312. package/test/mss/mss_parser_unit.js +0 -474
  313. package/test/mss/mss_player_integration.js +0 -124
  314. package/test/net/data_uri_plugin_unit.js +0 -105
  315. package/test/net/http_plugin_unit.js +0 -439
  316. package/test/net/networking_engine_unit.js +0 -1236
  317. package/test/net/networking_utils_unit.js +0 -37
  318. package/test/offline/download_progress_estimator_unit.js +0 -90
  319. package/test/offline/indexeddb_storage_unit.js +0 -192
  320. package/test/offline/manifest_convert_unit.js +0 -622
  321. package/test/offline/offline_integration.js +0 -168
  322. package/test/offline/offline_manifest_parser_unit.js +0 -231
  323. package/test/offline/offline_scheme_unit.js +0 -154
  324. package/test/offline/offline_uri_unit.js +0 -59
  325. package/test/offline/storage_compatibility_unit.js +0 -344
  326. package/test/offline/storage_integration.js +0 -1858
  327. package/test/player_external.js +0 -237
  328. package/test/player_integration.js +0 -1371
  329. package/test/player_load_graph_integration.js +0 -865
  330. package/test/player_src_equals_external.js +0 -154
  331. package/test/player_src_equals_integration.js +0 -527
  332. package/test/player_unit.js +0 -4434
  333. package/test/polyfill/media_capabilities_unit.js +0 -277
  334. package/test/polyfill/patchedmediakeys_apple_unit.js +0 -130
  335. package/test/test/assets/3675/chunk-stream0-00001.m4s +0 -0
  336. package/test/test/assets/3675/chunk-stream0-00002.m4s +0 -0
  337. package/test/test/assets/3675/chunk-stream0-00003.m4s +0 -0
  338. package/test/test/assets/3675/chunk-stream0-00004.m4s +0 -0
  339. package/test/test/assets/3675/chunk-stream0-00005.m4s +0 -0
  340. package/test/test/assets/3675/chunk-stream0-00006.m4s +0 -0
  341. package/test/test/assets/3675/chunk-stream0-00007.m4s +0 -0
  342. package/test/test/assets/3675/dash_0.mpd +0 -30
  343. package/test/test/assets/3675/dash_1.mpd +0 -30
  344. package/test/test/assets/3675/dash_2.mpd +0 -30
  345. package/test/test/assets/3675/dash_3.mpd +0 -30
  346. package/test/test/assets/3675/dash_4.mpd +0 -30
  347. package/test/test/assets/3675/dash_5.mpd +0 -26
  348. package/test/test/assets/3675/init-stream0.m4s +0 -0
  349. package/test/test/assets/audio-xhe-aac.mp4 +0 -0
  350. package/test/test/assets/audio.ts +0 -0
  351. package/test/test/assets/captions-test.ts +0 -0
  352. package/test/test/assets/cea-init.mp4 +0 -0
  353. package/test/test/assets/cea-segment.mp4 +0 -0
  354. package/test/test/assets/chapters.srt +0 -11
  355. package/test/test/assets/chapters.vtt +0 -10
  356. package/test/test/assets/chapters2.vtt +0 -10
  357. package/test/test/assets/dash-aes-128/Fragments(video=0,format=mpd-time-csf) +0 -0
  358. package/test/test/assets/dash-aes-128/Fragments(video=20000000,format=mpd-time-csf) +0 -0
  359. package/test/test/assets/dash-aes-128/Fragments(video=40000000,format=mpd-time-csf) +0 -0
  360. package/test/test/assets/dash-aes-128/Fragments(video=60000000,format=mpd-time-csf) +0 -0
  361. package/test/test/assets/dash-aes-128/Fragments(video=i,format=mpd-time-csf) +0 -0
  362. package/test/test/assets/dash-aes-128/dash.mpd +0 -18
  363. package/test/test/assets/dash-aes-128/license +0 -1
  364. package/test/test/assets/dash-multi-codec/audio_en_2c_128k_aac.mp4 +0 -0
  365. package/test/test/assets/dash-multi-codec/audio_es_2c_64k_opus.webm +0 -0
  366. package/test/test/assets/dash-multi-codec/dash.mpd +0 -32
  367. package/test/test/assets/dash-multi-codec/video_144p_108k_h264.mp4 +0 -0
  368. package/test/test/assets/db-dump-v1.json +0 -1
  369. package/test/test/assets/db-dump-v2-broken.json +0 -1
  370. package/test/test/assets/db-dump-v2-clean.json +0 -1
  371. package/test/test/assets/db-dump-v3.json +0 -1
  372. package/test/test/assets/db-dump-v4-broken.json +0 -1
  373. package/test/test/assets/db-dump-v5.json +0 -1
  374. package/test/test/assets/empty_caption_video_init.mp4 +0 -0
  375. package/test/test/assets/empty_caption_video_segment.mp4 +0 -0
  376. package/test/test/assets/encrypted-sintel-audio-init.mp4 +0 -0
  377. package/test/test/assets/encrypted-sintel-audio-segment.mp4 +0 -0
  378. package/test/test/assets/encrypted-sintel-video-init.mp4 +0 -0
  379. package/test/test/assets/encrypted-sintel-video-segment.mp4 +0 -0
  380. package/test/test/assets/green-pixel.mp4 +0 -0
  381. package/test/test/assets/green-pixel.txt +0 -15
  382. package/test/test/assets/h265-cea-init.mp4 +0 -0
  383. package/test/test/assets/h265-cea-segment.mp4 +0 -0
  384. package/test/test/assets/hls-raw-aac/fileSequence0.aac +0 -0
  385. package/test/test/assets/hls-raw-aac/fileSequence1.aac +0 -0
  386. package/test/test/assets/hls-raw-aac/fileSequence2.aac +0 -0
  387. package/test/test/assets/hls-raw-aac/fileSequence3.aac +0 -0
  388. package/test/test/assets/hls-raw-aac/manifest.m3u8 +0 -4
  389. package/test/test/assets/hls-raw-aac/stream.m4a.m3u8 +0 -14
  390. package/test/test/assets/hls-raw-ac3/fileSequence0.ac3 +0 -0
  391. package/test/test/assets/hls-raw-ac3/fileSequence1.ac3 +0 -0
  392. package/test/test/assets/hls-raw-ac3/fileSequence2.ac3 +0 -0
  393. package/test/test/assets/hls-raw-ac3/fileSequence3.ac3 +0 -0
  394. package/test/test/assets/hls-raw-ac3/fileSequence4.ac3 +0 -0
  395. package/test/test/assets/hls-raw-ac3/fileSequence5.ac3 +0 -0
  396. package/test/test/assets/hls-raw-ac3/fileSequence6.ac3 +0 -0
  397. package/test/test/assets/hls-raw-ac3/fileSequence7.ac3 +0 -0
  398. package/test/test/assets/hls-raw-ac3/prog_index.m3u8 +0 -31
  399. package/test/test/assets/hls-raw-ec3/fileSequence0.ec3 +0 -0
  400. package/test/test/assets/hls-raw-ec3/fileSequence1.ec3 +0 -0
  401. package/test/test/assets/hls-raw-ec3/fileSequence2.ec3 +0 -0
  402. package/test/test/assets/hls-raw-ec3/fileSequence3.ec3 +0 -0
  403. package/test/test/assets/hls-raw-ec3/fileSequence4.ec3 +0 -0
  404. package/test/test/assets/hls-raw-ec3/fileSequence5.ec3 +0 -0
  405. package/test/test/assets/hls-raw-ec3/fileSequence6.ec3 +0 -0
  406. package/test/test/assets/hls-raw-ec3/fileSequence7.ec3 +0 -0
  407. package/test/test/assets/hls-raw-ec3/prog_index.m3u8 +0 -31
  408. package/test/test/assets/hls-raw-mp3/chunklist_w905519204.m3u8 +0 -13
  409. package/test/test/assets/hls-raw-mp3/media_w905519204_0.mp3 +0 -0
  410. package/test/test/assets/hls-raw-mp3/media_w905519204_1.mp3 +0 -0
  411. package/test/test/assets/hls-raw-mp3/media_w905519204_2.mp3 +0 -0
  412. package/test/test/assets/hls-raw-mp3/media_w905519204_3.mp3 +0 -0
  413. package/test/test/assets/hls-raw-mp3/playlist.m3u8 +0 -4
  414. package/test/test/assets/hls-ts-aac/playlist.m3u8 +0 -23
  415. package/test/test/assets/hls-ts-aac/segment_0.ts +0 -0
  416. package/test/test/assets/hls-ts-aac/segment_1.ts +0 -0
  417. package/test/test/assets/hls-ts-aac/segment_2.ts +0 -0
  418. package/test/test/assets/hls-ts-aac/segment_3.ts +0 -0
  419. package/test/test/assets/hls-ts-aac/segment_4.ts +0 -0
  420. package/test/test/assets/hls-ts-aac/segment_5.ts +0 -0
  421. package/test/test/assets/hls-ts-aac/segment_6.ts +0 -0
  422. package/test/test/assets/hls-ts-aac/segment_7.ts +0 -0
  423. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0000.ts +0 -0
  424. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0001.ts +0 -0
  425. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0002.ts +0 -0
  426. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0003.ts +0 -0
  427. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0004.ts +0 -0
  428. package/test/test/assets/hls-ts-ac3/ChID_voices_6ch_640kbps_dd_sub_0005.ts +0 -0
  429. package/test/test/assets/hls-ts-ac3/prog_index.m3u8 +0 -19
  430. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0000.ts +0 -0
  431. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0001.ts +0 -0
  432. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0002.ts +0 -0
  433. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0003.ts +0 -0
  434. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0004.ts +0 -0
  435. package/test/test/assets/hls-ts-ec3/ChID_voices_6ch_256kbps_ddp_sub_0005.ts +0 -0
  436. package/test/test/assets/hls-ts-ec3/prog_index.m3u8 +0 -19
  437. package/test/test/assets/hls-ts-h264/fileSequence0.ts +0 -0
  438. package/test/test/assets/hls-ts-h264/fileSequence1.ts +0 -0
  439. package/test/test/assets/hls-ts-h264/fileSequence2.ts +0 -0
  440. package/test/test/assets/hls-ts-h264/fileSequence3.ts +0 -0
  441. package/test/test/assets/hls-ts-h264/fileSequence4.ts +0 -0
  442. package/test/test/assets/hls-ts-h264/fileSequence5.ts +0 -0
  443. package/test/test/assets/hls-ts-h264/prog_index.m3u8 +0 -25
  444. package/test/test/assets/hls-ts-h265/0.ts +0 -0
  445. package/test/test/assets/hls-ts-h265/hevc.m3u8 +0 -6
  446. package/test/test/assets/hls-ts-h265/index.m3u8 +0 -7
  447. package/test/test/assets/hls-ts-mp3/manifest.m3u8 +0 -13
  448. package/test/test/assets/hls-ts-mp3/media_w239891843_0.ts +0 -0
  449. package/test/test/assets/hls-ts-mp3/media_w239891843_1.ts +0 -0
  450. package/test/test/assets/hls-ts-mp3/media_w239891843_2.ts +0 -0
  451. package/test/test/assets/hls-ts-mp3/media_w239891843_3.ts +0 -0
  452. package/test/test/assets/hls-ts-muxed-aac-h264/chunk.m3u8 +0 -17
  453. package/test/test/assets/hls-ts-muxed-aac-h264/n_0_0_0.ts +0 -0
  454. package/test/test/assets/hls-ts-muxed-aac-h264/n_1_0_0.ts +0 -0
  455. package/test/test/assets/hls-ts-muxed-aac-h264/n_2_0_0.ts +0 -0
  456. package/test/test/assets/hls-ts-muxed-aac-h264/n_3_0_0.ts +0 -0
  457. package/test/test/assets/hls-ts-muxed-aac-h264/n_4_0_0.ts +0 -0
  458. package/test/test/assets/hls-ts-muxed-aac-h264/n_5_0_0.ts +0 -0
  459. package/test/test/assets/hls-ts-muxed-aac-h264/playlist.m3u8 +0 -4
  460. package/test/test/assets/hls-ts-muxed-aac-h265/0.ts +0 -0
  461. package/test/test/assets/hls-ts-muxed-aac-h265/1.ts +0 -0
  462. package/test/test/assets/hls-ts-muxed-aac-h265/media.m3u8 +0 -9
  463. package/test/test/assets/hls-ts-muxed-ac3-h264/media.m3u8 +0 -24
  464. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00000.ts +0 -0
  465. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00001.ts +0 -0
  466. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00002.ts +0 -0
  467. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00003.ts +0 -0
  468. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00004.ts +0 -0
  469. package/test/test/assets/hls-ts-muxed-ac3-h264/s_00005.ts +0 -0
  470. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0000.ts +0 -0
  471. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0001.ts +0 -0
  472. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0002.ts +0 -0
  473. package/test/test/assets/hls-ts-muxed-ec3-h264/ChID_voices_1280x720p_25fps_h264_6ch_256kbps_ddp_sub_0003.ts +0 -0
  474. package/test/test/assets/hls-ts-muxed-ec3-h264/prog_index.m3u8 +0 -14
  475. package/test/test/assets/hls-ts-muxed-mp3-h264/index.m3u8 +0 -23
  476. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-1-v1-a1.ts +0 -0
  477. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-2-v1-a1.ts +0 -0
  478. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-3-v1-a1.ts +0 -0
  479. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-4-v1-a1.ts +0 -0
  480. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-5-v1-a1.ts +0 -0
  481. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-6-v1-a1.ts +0 -0
  482. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-7-v1-a1.ts +0 -0
  483. package/test/test/assets/hls-ts-muxed-mp3-h264/seg-8-v1-a1.ts +0 -0
  484. package/test/test/assets/id3-metadata.aac +0 -0
  485. package/test/test/assets/id3-metadata.ts +0 -0
  486. package/test/test/assets/index-segment.mp4 +0 -0
  487. package/test/test/assets/index-segment.webm +0 -0
  488. package/test/test/assets/init-segment.webm +0 -0
  489. package/test/test/assets/large_file.mpd +0 -4930
  490. package/test/test/assets/multidrm-audio-init.mp4 +0 -0
  491. package/test/test/assets/multidrm-audio-segment.mp4 +0 -0
  492. package/test/test/assets/multidrm-video-init.mp4 +0 -0
  493. package/test/test/assets/multidrm-video-segment.mp4 +0 -0
  494. package/test/test/assets/multiple-trun-init.mp4 +0 -0
  495. package/test/test/assets/multiple-trun-segment.mp4 +0 -0
  496. package/test/test/assets/sintel-audio-init.mp4 +0 -0
  497. package/test/test/assets/sintel-audio-segment.mp4 +0 -0
  498. package/test/test/assets/sintel-video-init.mp4 +0 -0
  499. package/test/test/assets/sintel-video-segment.mp4 +0 -0
  500. package/test/test/assets/small.mp4 +0 -0
  501. package/test/test/assets/text-clip-alt.vtt +0 -63
  502. package/test/test/assets/text-clip.vtt +0 -63
  503. package/test/test/assets/thumbnails-sprites.vtt +0 -10
  504. package/test/test/assets/thumbnails.vtt +0 -10
  505. package/test/test/assets/ttml-init.mp4 +0 -0
  506. package/test/test/assets/ttml-segment-multiplemdat.mp4 +0 -0
  507. package/test/test/assets/ttml-segment.mp4 +0 -0
  508. package/test/test/assets/video.ts +0 -0
  509. package/test/test/assets/vtt-init.mp4 +0 -0
  510. package/test/test/assets/vtt-segment-multi-payload.mp4 +0 -0
  511. package/test/test/assets/vtt-segment-no-duration.mp4 +0 -0
  512. package/test/test/assets/vtt-segment-settings.mp4 +0 -0
  513. package/test/test/assets/vtt-segment.mp4 +0 -0
  514. package/test/test/boot.js +0 -495
  515. package/test/test/externs/filters.js +0 -44
  516. package/test/test/externs/fontfaceonload.js +0 -29
  517. package/test/test/externs/jasmine.js +0 -670
  518. package/test/test/externs/karma.js +0 -26
  519. package/test/test/externs/require.js +0 -21
  520. package/test/test/externs/sprintf.js +0 -18
  521. package/test/test/namespace.js +0 -10
  522. package/test/test/util/canned_idb.js +0 -379
  523. package/test/test/util/cea_utils.js +0 -60
  524. package/test/test/util/dash_parser_util.js +0 -329
  525. package/test/test/util/fake_ad.js +0 -321
  526. package/test/test/util/fake_ad_manager.js +0 -122
  527. package/test/test/util/fake_demo_main.js +0 -144
  528. package/test/test/util/fake_drm_engine.js +0 -103
  529. package/test/test/util/fake_media_source_engine.js +0 -464
  530. package/test/test/util/fake_networking_engine.js +0 -381
  531. package/test/test/util/fake_segment_prefetch.js +0 -84
  532. package/test/test/util/fake_text_displayer.js +0 -60
  533. package/test/test/util/id3_generator.js +0 -100
  534. package/test/test/util/indexeddb_utils.js +0 -124
  535. package/test/test/util/jasmine_fetch.js +0 -382
  536. package/test/test/util/layout_tests.js +0 -435
  537. package/test/test/util/loader.js +0 -88
  538. package/test/test/util/manifest_generator.js +0 -705
  539. package/test/test/util/manifest_parser_util.js +0 -101
  540. package/test/test/util/mss_parser_util.js +0 -119
  541. package/test/test/util/offline_utils.js +0 -105
  542. package/test/test/util/simple_fakes.js +0 -535
  543. package/test/test/util/stream_generator.js +0 -676
  544. package/test/test/util/streaming_engine_util.js +0 -506
  545. package/test/test/util/test_scheme.js +0 -778
  546. package/test/test/util/ttml_utils.js +0 -77
  547. package/test/test/util/ui_utils.js +0 -183
  548. package/test/test/util/util.js +0 -374
  549. package/test/test/util/waiter.js +0 -406
  550. package/test/text/cue_integration.js +0 -51
  551. package/test/text/lrc_text_parser_unit.js +0 -98
  552. package/test/text/mp4_ttml_parser_unit.js +0 -171
  553. package/test/text/mp4_vtt_parser_unit.js +0 -195
  554. package/test/text/sbv_text_parser_unit.js +0 -81
  555. package/test/text/simple_text_displayer_unit.js +0 -468
  556. package/test/text/srt_text_parser_unit.js +0 -163
  557. package/test/text/ssa_text_parser_unit.js +0 -382
  558. package/test/text/text_displayer_layout_unit.js +0 -323
  559. package/test/text/text_engine_unit.js +0 -500
  560. package/test/text/text_track_integration.js +0 -186
  561. package/test/text/ttml_text_parser_unit.js +0 -2176
  562. package/test/text/ui_text_displayer_unit.js +0 -608
  563. package/test/text/vtt_text_parser_unit.js +0 -1363
  564. package/test/text/web_vtt_generator_unit.js +0 -144
  565. package/test/text/web_vtt_layout_integration.js +0 -524
  566. package/test/transmuxer/transmuxer_engine_integration.js +0 -69
  567. package/test/transmuxer/transmuxer_integration.js +0 -443
  568. package/test/ui/ad_ui_unit.js +0 -369
  569. package/test/ui/localization_unit.js +0 -508
  570. package/test/ui/ui_customization_unit.js +0 -208
  571. package/test/ui/ui_integration.js +0 -669
  572. package/test/ui/ui_unit.js +0 -902
  573. package/test/util/abortable_operation_unit.js +0 -624
  574. package/test/util/array_utils_unit.js +0 -58
  575. package/test/util/buffer_utils_unit.js +0 -185
  576. package/test/util/cmcd_manager_unit.js +0 -440
  577. package/test/util/content_steering_manager_unit.js +0 -427
  578. package/test/util/data_view_reader_unit.js +0 -254
  579. package/test/util/ebml_parser_unit.js +0 -297
  580. package/test/util/event_manager_unit.js +0 -185
  581. package/test/util/fake_event_target_unit.js +0 -123
  582. package/test/util/id3_utils_unit.js +0 -168
  583. package/test/util/iterables_unit.js +0 -68
  584. package/test/util/language_utils_unit.js +0 -240
  585. package/test/util/manifest_parser_utils_unit.js +0 -55
  586. package/test/util/mime_utils_unit.js +0 -64
  587. package/test/util/mp4_box_parsers_unit.js +0 -246
  588. package/test/util/mp4_parser_unit.js +0 -373
  589. package/test/util/multi_map_unit.js +0 -94
  590. package/test/util/object_utils_unit.js +0 -79
  591. package/test/util/periods_unit.js +0 -1623
  592. package/test/util/pssh_unit.js +0 -226
  593. package/test/util/state_history_unit.js +0 -101
  594. package/test/util/stream_utils_unit.js +0 -1068
  595. package/test/util/string_utils_unit.js +0 -166
  596. package/test/util/text_parser_unit.js +0 -165
  597. package/test/util/ts_parser_unit.js +0 -77
  598. 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
- });