shaka-player 3.3.2 → 4.0.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 (389) hide show
  1. package/.csslintrc +11 -1
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. package/.github/pull_request_template.md +6 -34
  4. package/.github/workflows/build-and-test.yaml +129 -0
  5. package/.github/workflows/custom-actions/prep-for-appspot/action.yaml +56 -0
  6. package/.github/workflows/custom-actions/set-commit-status/action.yaml +41 -0
  7. package/.github/workflows/demo-version-index.yaml +37 -0
  8. package/.github/workflows/nightly-demo.yaml +42 -0
  9. package/.github/workflows/release-please.yaml +168 -0
  10. package/.github/workflows/safari-homedir-launcher.sh +18 -0
  11. package/.github/workflows/selenium-lab-tests.yaml +92 -0
  12. package/.github/workflows/sync-labels.yaml +33 -0
  13. package/.github/workflows/update-issues.yaml +29 -0
  14. package/.github/workflows/validate-pr-title.yaml +35 -0
  15. package/AUTHORS +3 -0
  16. package/CHANGELOG.md +1866 -1675
  17. package/CONTRIBUTING.md +2 -2
  18. package/CONTRIBUTORS +3 -0
  19. package/README.md +16 -13
  20. package/app-engine/README.md +9 -0
  21. package/app-engine/demo-version-index/README.md +14 -0
  22. package/app-engine/demo-version-index/app.yaml +28 -0
  23. package/app-engine/demo-version-index/generate.py +164 -0
  24. package/app-engine/demo-version-index/main.py +11 -0
  25. package/app-engine/demo-version-index/requirements.txt +5 -0
  26. package/app-engine/demo-version-index/templates/index.html +114 -0
  27. package/app-engine/shaka-player-demo/README.md +18 -0
  28. package/app-engine/shaka-player-demo/app.yaml +61 -0
  29. package/app-engine/shaka-player-demo/main.py +95 -0
  30. package/app-engine/shaka-player-demo/posters/10yo.png +0 -0
  31. package/app-engine/shaka-player-demo/posters/10yo.xcf +0 -0
  32. package/app-engine/shaka-player-demo/posters/1yo.jpg +0 -0
  33. package/app-engine/shaka-player-demo/posters/2yo.png +0 -0
  34. package/app-engine/shaka-player-demo/posters/2yo.xcf +0 -0
  35. package/app-engine/shaka-player-demo/posters/3yo.png +0 -0
  36. package/app-engine/shaka-player-demo/posters/3yo.xcf +0 -0
  37. package/app-engine/shaka-player-demo/posters/4yo.png +0 -0
  38. package/app-engine/shaka-player-demo/posters/4yo.xcf +0 -0
  39. package/app-engine/shaka-player-demo/posters/5yo.png +0 -0
  40. package/app-engine/shaka-player-demo/posters/5yo.xcf +0 -0
  41. package/app-engine/shaka-player-demo/posters/6yo.png +0 -0
  42. package/app-engine/shaka-player-demo/posters/6yo.xcf +0 -0
  43. package/app-engine/shaka-player-demo/posters/7yo.png +0 -0
  44. package/app-engine/shaka-player-demo/posters/7yo.xcf +0 -0
  45. package/app-engine/shaka-player-demo/posters/8yo.png +0 -0
  46. package/app-engine/shaka-player-demo/posters/8yo.xcf +0 -0
  47. package/app-engine/shaka-player-demo/posters/9yo.png +0 -0
  48. package/app-engine/shaka-player-demo/posters/9yo.xcf +0 -0
  49. package/app-engine/shaka-player-demo/posters/audioOnly.gif +0 -0
  50. package/app-engine/shaka-player-demo/posters/audioRickRoll.gif +0 -0
  51. package/app-engine/shaka-player-demo/posters/colorbars.gif +0 -0
  52. package/app-engine/shaka-player-demo/posters/fireworks.jpg +0 -0
  53. package/app-engine/shaka-player-demo/posters/party-hat.png +0 -0
  54. package/app-engine/shaka-player-demo/posters/sources.txt +46 -0
  55. package/app-engine/shaka-player-demo/posters/standard.png +0 -0
  56. package/app-engine/shaka-player-demo/posters/trek.jpg +0 -0
  57. package/app-engine/shaka-player-demo/posters/valentines.png +0 -0
  58. package/app-engine/shaka-player-demo/posters/zombie.jpg +0 -0
  59. package/app-engine/shaka-player-demo/posters.py +110 -0
  60. package/app-engine/shaka-player-demo/requirements.txt +5 -0
  61. package/app-engine/shaka-player-demo/time.txt +1 -0
  62. package/build/README.md +3 -3
  63. package/build/checkversion.py +1 -1
  64. package/build/compiler.py +1 -1
  65. package/build/conformance.textproto +13 -0
  66. package/build/docker/Dockerfile +20 -0
  67. package/build/docker/docker-compose.yml +10 -0
  68. package/build/gendeps.py +18 -15
  69. package/build/shaka-lab.yaml +161 -0
  70. package/build/shakaBuildHelpers.py +4 -29
  71. package/build/test.py +94 -29
  72. package/build/types/core +0 -1
  73. package/build/types/polyfill +1 -3
  74. package/build/wrapper.template.js +2 -2
  75. package/demo/TengwarTelcontar.woff2 +0 -0
  76. package/demo/asset_card.js +1 -2
  77. package/demo/cast_receiver/index.html +1 -1
  78. package/demo/cast_receiver/receiver_app.css +14 -14
  79. package/demo/common/asset.js +17 -1
  80. package/demo/common/assets.js +31 -0
  81. package/demo/common/message_ids.js +6 -3
  82. package/demo/config.js +10 -12
  83. package/demo/custom.js +39 -1
  84. package/demo/customWarning.txt +2 -2
  85. package/demo/demo.less +29 -18
  86. package/demo/demo_uncompiled.js +1 -13
  87. package/demo/demo_utils.js +0 -1
  88. package/demo/index.html +1 -1
  89. package/demo/locales/en.json +6 -3
  90. package/demo/locales/source.json +22 -10
  91. package/demo/main.js +12 -9
  92. package/demo/search.js +2 -1
  93. package/dist/controls.css +3 -3
  94. package/dist/controls.css.map +1 -1
  95. package/dist/demo.compiled.debug.js +236 -232
  96. package/dist/demo.compiled.debug.map +4 -4
  97. package/dist/demo.compiled.js +236 -232
  98. package/dist/demo.compiled.map +4 -4
  99. package/dist/demo.css +1 -1
  100. package/dist/demo.css.map +1 -1
  101. package/dist/deps.js +229 -226
  102. package/dist/locales.js +34 -32
  103. package/dist/receiver.compiled.debug.js +75 -73
  104. package/dist/receiver.compiled.debug.map +4 -4
  105. package/dist/receiver.compiled.js +75 -73
  106. package/dist/receiver.compiled.map +4 -4
  107. package/dist/shaka-player.compiled.d.ts +321 -314
  108. package/dist/shaka-player.compiled.debug.d.ts +321 -314
  109. package/dist/shaka-player.compiled.debug.externs.js +140 -129
  110. package/dist/shaka-player.compiled.debug.js +527 -592
  111. package/dist/shaka-player.compiled.debug.map +4 -4
  112. package/dist/shaka-player.compiled.externs.js +140 -129
  113. package/dist/shaka-player.compiled.js +836 -860
  114. package/dist/shaka-player.compiled.map +4 -4
  115. package/dist/shaka-player.ui.d.ts +367 -358
  116. package/dist/shaka-player.ui.debug.d.ts +367 -358
  117. package/dist/shaka-player.ui.debug.externs.js +148 -129
  118. package/dist/shaka-player.ui.debug.js +586 -649
  119. package/dist/shaka-player.ui.debug.map +4 -4
  120. package/dist/shaka-player.ui.externs.js +148 -129
  121. package/dist/shaka-player.ui.js +1008 -1028
  122. package/dist/shaka-player.ui.map +4 -4
  123. package/docs/design/REDESIGN.md +33 -33
  124. package/docs/design/bg-fetch.md +2 -2
  125. package/docs/design/codec_preferences.md +1 -1
  126. package/docs/design/dash-audio-channels.md +3 -3
  127. package/docs/design/dash-manifests.md +1 -1
  128. package/docs/design/gap-jumping.md +3 -3
  129. package/docs/design/preload.md +2 -2
  130. package/docs/tutorials/config.md +0 -2
  131. package/docs/tutorials/drm-config.md +5 -0
  132. package/docs/tutorials/fairplay.md +7 -22
  133. package/docs/tutorials/faq.md +8 -19
  134. package/docs/tutorials/index.json +3 -8
  135. package/docs/tutorials/plugins.md +4 -6
  136. package/docs/tutorials/selenium-grid-config.md +122 -0
  137. package/docs/tutorials/upgrade.md +83 -11
  138. package/docs/tutorials/welcome.md +10 -2
  139. package/externs/cmcd.js +1 -1
  140. package/externs/polyfill.js +15 -0
  141. package/externs/shaka/manifest.js +5 -1
  142. package/externs/shaka/net.js +12 -0
  143. package/externs/shaka/offline.js +5 -1
  144. package/externs/shaka/player.js +39 -32
  145. package/externs/shaka/text.js +12 -12
  146. package/externs/sourcebuffer.js +15 -0
  147. package/karma.conf.js +137 -30
  148. package/lib/abr/simple_abr_manager.js +12 -6
  149. package/lib/ads/client_side_ad.js +13 -2
  150. package/lib/ads/client_side_ad_manager.js +22 -4
  151. package/lib/cast/cast_proxy.js +3 -4
  152. package/lib/cast/cast_utils.js +0 -1
  153. package/lib/cea/cea608_data_channel.js +2 -2
  154. package/lib/cea/cea708_service.js +5 -4
  155. package/lib/cea/mp4_cea_parser.js +11 -5
  156. package/lib/cea/sei_processor.js +6 -3
  157. package/lib/dash/content_protection.js +85 -5
  158. package/lib/dash/dash_parser.js +10 -12
  159. package/lib/dash/mpd_utils.js +4 -5
  160. package/lib/dash/segment_list.js +1 -2
  161. package/lib/dash/segment_template.js +3 -3
  162. package/lib/hls/hls_parser.js +386 -749
  163. package/lib/hls/manifest_text_parser.js +5 -6
  164. package/lib/media/adaptation_set.js +1 -2
  165. package/lib/media/content_workarounds.js +2 -2
  166. package/lib/media/drm_engine.js +105 -55
  167. package/lib/media/gap_jumping_controller.js +10 -45
  168. package/lib/media/media_source_engine.js +90 -17
  169. package/lib/media/mp4_segment_index_parser.js +1 -4
  170. package/lib/media/playhead.js +4 -7
  171. package/lib/media/presentation_timeline.js +19 -10
  172. package/lib/media/segment_index.js +13 -46
  173. package/lib/media/segment_reference.js +47 -1
  174. package/lib/media/streaming_engine.js +35 -17
  175. package/lib/media/time_ranges_utils.js +5 -12
  176. package/lib/media/video_wrapper.js +1 -1
  177. package/lib/net/networking_engine.js +4 -1
  178. package/lib/offline/indexeddb/v1_storage_cell.js +1 -0
  179. package/lib/offline/indexeddb/v2_storage_cell.js +1 -0
  180. package/lib/offline/manifest_converter.js +1 -0
  181. package/lib/offline/storage.js +104 -136
  182. package/lib/player.js +50 -216
  183. package/lib/polyfill/all.js +2 -3
  184. package/lib/polyfill/encryption_scheme.js +1 -1
  185. package/lib/polyfill/media_capabilities.js +15 -9
  186. package/lib/polyfill/mediasource.js +0 -28
  187. package/lib/polyfill/patchedmediakeys_nop.js +2 -0
  188. package/lib/polyfill/patchedmediakeys_webkit.js +2 -0
  189. package/lib/polyfill/symbol.js +46 -0
  190. package/lib/text/cue.js +1 -7
  191. package/lib/text/lrc_text_parser.js +8 -0
  192. package/lib/text/mp4_ttml_parser.js +8 -0
  193. package/lib/text/mp4_vtt_parser.js +8 -0
  194. package/lib/text/sbv_text_parser.js +8 -0
  195. package/lib/text/simple_text_displayer.js +3 -8
  196. package/lib/text/srt_text_parser.js +8 -0
  197. package/lib/text/ssa_text_parser.js +8 -0
  198. package/lib/text/text_engine.js +19 -3
  199. package/lib/text/ttml_text_parser.js +16 -5
  200. package/lib/text/ui_text_displayer.js +2 -8
  201. package/lib/text/vtt_text_parser.js +24 -2
  202. package/lib/text/web_vtt_generator.js +1 -7
  203. package/lib/util/buffer_utils.js +1 -3
  204. package/lib/util/ebml_parser.js +3 -3
  205. package/lib/util/error.js +10 -14
  206. package/lib/util/fairplay_utils.js +109 -0
  207. package/lib/util/functional.js +0 -42
  208. package/lib/util/iterables.js +0 -46
  209. package/lib/util/mime_utils.js +2 -0
  210. package/lib/util/mp4_box_parsers.js +1 -4
  211. package/lib/util/mp4_parser.js +5 -7
  212. package/lib/util/periods.js +10 -11
  213. package/lib/util/platform.js +48 -3
  214. package/lib/util/player_configuration.js +12 -6
  215. package/lib/util/pssh.js +24 -8
  216. package/lib/util/stream_utils.js +96 -25
  217. package/lib/util/string_utils.js +3 -5
  218. package/lib/util/uint8array_utils.js +3 -21
  219. package/lib/util/xml_utils.js +16 -8
  220. package/package.json +61 -36
  221. package/roadmap.md +27 -27
  222. package/shaka-player.uncompiled.js +1 -3
  223. package/test/abr/simple_abr_manager_unit.js +3 -8
  224. package/test/ads/ad_manager_unit.js +0 -6
  225. package/test/cast/cast_proxy_unit.js +0 -8
  226. package/test/cast/cast_receiver_integration.js +1 -18
  227. package/test/cast/cast_receiver_unit.js +1 -9
  228. package/test/cast/cast_sender_unit.js +0 -6
  229. package/test/cast/cast_utils_unit.js +1 -13
  230. package/test/cea/cea608_memory_unit.js +0 -5
  231. package/test/cea/cea708_service_unit.js +0 -7
  232. package/test/cea/cea708_window_unit.js +0 -5
  233. package/test/cea/cea_decoder_unit.js +0 -6
  234. package/test/cea/dtvcc_packet_builder_unit.js +0 -3
  235. package/test/cea/dtvcc_packet_unit.js +0 -5
  236. package/test/cea/mp4_cea_parser_unit.js +0 -4
  237. package/test/dash/dash_parser_content_protection_unit.js +45 -10
  238. package/test/dash/dash_parser_live_unit.js +2 -15
  239. package/test/dash/dash_parser_manifest_unit.js +2 -40
  240. package/test/dash/dash_parser_segment_base_unit.js +1 -8
  241. package/test/dash/dash_parser_segment_list_unit.js +1 -7
  242. package/test/dash/dash_parser_segment_template_unit.js +3 -13
  243. package/test/dash/mpd_utils_unit.js +3 -11
  244. package/test/demo/demo_unit.js +2 -6
  245. package/test/deprecate/enforcer_unit.js +0 -4
  246. package/test/deprecate/version_unit.js +0 -2
  247. package/test/hls/hls_live_unit.js +101 -234
  248. package/test/hls/hls_parser_unit.js +517 -447
  249. package/test/hls/manifest_text_parser_unit.js +0 -10
  250. package/test/media/adaptation_set_criteria_unit.js +3 -7
  251. package/test/media/adaptation_set_unit.js +0 -2
  252. package/test/media/buffering_observer_unit.js +1 -4
  253. package/test/media/closed_caption_parser_unit.js +0 -3
  254. package/test/media/drm_engine_integration.js +2 -15
  255. package/test/media/drm_engine_unit.js +90 -144
  256. package/test/media/manifest_parser_unit.js +0 -4
  257. package/test/media/media_source_engine_integration.js +26 -10
  258. package/test/media/media_source_engine_unit.js +8 -20
  259. package/test/media/mp4_segment_index_parser_unit.js +0 -4
  260. package/test/media/play_rate_controller_unit.js +0 -4
  261. package/test/media/playhead_unit.js +35 -207
  262. package/test/media/presentation_timeline_unit.js +4 -7
  263. package/test/media/quality_observer_unit.js +0 -4
  264. package/test/media/region_observer_unit.js +1 -6
  265. package/test/media/region_timeline_unit.js +0 -3
  266. package/test/media/segment_index_unit.js +15 -31
  267. package/test/media/segment_reference_unit.js +0 -3
  268. package/test/media/stall_detector_unit.js +0 -5
  269. package/test/media/streaming_engine_integration.js +13 -75
  270. package/test/media/streaming_engine_unit.js +14 -37
  271. package/test/media/time_ranges_utils_unit.js +0 -7
  272. package/test/media/transmuxer_integration.js +0 -6
  273. package/test/media/webm_segment_index_parser_unit.js +0 -4
  274. package/test/net/data_uri_plugin_unit.js +0 -7
  275. package/test/net/http_plugin_unit.js +0 -9
  276. package/test/net/networking_engine_unit.js +0 -11
  277. package/test/offline/download_progress_estimator_unit.js +0 -2
  278. package/test/offline/indexeddb_storage_unit.js +0 -6
  279. package/test/offline/manifest_convert_unit.js +34 -12
  280. package/test/offline/offline_integration.js +1 -10
  281. package/test/offline/offline_manifest_parser_unit.js +1 -6
  282. package/test/offline/offline_scheme_unit.js +0 -8
  283. package/test/offline/offline_uri_unit.js +0 -2
  284. package/test/offline/storage_compatibility_unit.js +1 -14
  285. package/test/offline/storage_integration.js +6 -31
  286. package/test/player_external.js +1 -15
  287. package/test/player_integration.js +38 -28
  288. package/test/player_load_graph_integration.js +1 -6
  289. package/test/player_src_equals_external.js +3 -9
  290. package/test/player_src_equals_integration.js +0 -7
  291. package/test/player_unit.js +78 -37
  292. package/test/routing/walker_unit.js +0 -8
  293. package/test/test/assets/large_file.mpd +1 -1
  294. package/test/test/boot.js +75 -22
  295. package/test/test/externs/jasmine.js +2 -2
  296. package/test/test/externs/karma.js +4 -0
  297. package/test/test/namespace.js +10 -0
  298. package/test/test/util/canned_idb.js +0 -8
  299. package/test/test/util/cea_utils.js +0 -6
  300. package/test/test/util/dash_parser_util.js +0 -13
  301. package/test/test/util/fake_ad.js +0 -3
  302. package/test/test/util/fake_ad_manager.js +0 -9
  303. package/test/test/util/fake_demo_main.js +0 -5
  304. package/test/test/util/fake_drm_engine.js +0 -6
  305. package/test/test/util/fake_media_source_engine.js +11 -11
  306. package/test/test/util/fake_networking_engine.js +0 -5
  307. package/test/test/util/fake_text_displayer.js +0 -5
  308. package/test/test/util/indexeddb_utils.js +1 -10
  309. package/test/test/util/jasmine_fetch.js +0 -1
  310. package/test/test/util/loader.js +0 -18
  311. package/test/test/util/manifest_generator.js +12 -15
  312. package/test/test/util/manifest_parser_util.js +4 -7
  313. package/test/test/util/offline_utils.js +1 -5
  314. package/test/test/util/simple_fakes.js +9 -26
  315. package/test/test/util/stream_generator.js +0 -14
  316. package/test/test/util/streaming_engine_util.js +1 -15
  317. package/test/test/util/test_scheme.js +25 -20
  318. package/test/test/util/ttml_utils.js +0 -2
  319. package/test/test/util/ui_utils.js +0 -9
  320. package/test/test/util/util.js +9 -23
  321. package/test/test/util/waiter.js +84 -43
  322. package/test/text/cue_integration.js +2 -6
  323. package/test/text/lrc_text_parser_unit.js +6 -11
  324. package/test/text/mp4_ttml_parser_unit.js +6 -10
  325. package/test/text/mp4_vtt_parser_unit.js +7 -12
  326. package/test/text/sbv_text_parser_unit.js +5 -10
  327. package/test/text/simple_text_displayer_unit.js +1 -8
  328. package/test/text/srt_text_parser_unit.js +5 -10
  329. package/test/text/ssa_text_parser_unit.js +17 -34
  330. package/test/text/text_engine_unit.js +47 -12
  331. package/test/text/text_track_integration.js +0 -2
  332. package/test/text/ttml_text_parser_unit.js +79 -88
  333. package/test/text/ui_text_displayer_unit.js +44 -41
  334. package/test/text/vtt_text_parser_unit.js +55 -66
  335. package/test/text/web_vtt_generator_unit.js +0 -3
  336. package/test/ui/ad_ui_unit.js +0 -11
  337. package/test/ui/localization_unit.js +0 -3
  338. package/test/ui/text_displayer_layout_unit.js +1 -12
  339. package/test/ui/ui_customization_unit.js +0 -6
  340. package/test/ui/ui_integration.js +0 -32
  341. package/test/ui/ui_unit.js +28 -17
  342. package/test/util/abortable_operation_unit.js +4 -9
  343. package/test/util/array_utils_unit.js +0 -2
  344. package/test/util/buffer_utils_unit.js +0 -2
  345. package/test/util/cmcd_manager_unit.js +3 -3
  346. package/test/util/data_view_reader_unit.js +0 -4
  347. package/test/util/ebml_parser_unit.js +0 -4
  348. package/test/util/event_manager_unit.js +0 -3
  349. package/test/util/fake_event_target_unit.js +0 -5
  350. package/test/util/iterables_unit.js +0 -64
  351. package/test/util/language_utils_unit.js +0 -3
  352. package/test/util/manifest_parser_utils_unit.js +0 -2
  353. package/test/util/mp4_box_parsers_unit.js +0 -5
  354. package/test/util/mp4_parser_unit.js +0 -4
  355. package/test/util/multi_map_unit.js +0 -3
  356. package/test/util/object_utils_unit.js +0 -2
  357. package/test/util/periods_unit.js +14 -7
  358. package/test/util/pssh_unit.js +0 -5
  359. package/test/util/state_history_unit.js +0 -2
  360. package/test/util/stream_utils_unit.js +26 -15
  361. package/test/util/string_utils_unit.js +0 -6
  362. package/test/util/text_parser_unit.js +0 -2
  363. package/test/util/xml_utils_unit.js +0 -4
  364. package/ui/controls.js +65 -40
  365. package/ui/fullscreen_button.js +26 -6
  366. package/ui/less/ad_controls.less +6 -6
  367. package/ui/less/buttons.less +6 -6
  368. package/ui/less/containers.less +10 -12
  369. package/ui/less/overflow_menu.less +4 -4
  370. package/ui/less/range_elements.less +7 -2
  371. package/ui/less/tooltip.less +4 -4
  372. package/ui/locales/en.json +1 -0
  373. package/ui/locales/sjn-translations.yaml +257 -0
  374. package/ui/locales/sjn.json +42 -0
  375. package/ui/locales/source.json +5 -0
  376. package/ui/resolution_selection.js +31 -33
  377. package/ui/seek_bar.js +2 -1
  378. package/ui/ui.js +0 -17
  379. package/.github/workflows/build_and_test.yaml +0 -73
  380. package/.github/workflows/release.yaml +0 -53
  381. package/docs/tutorials/upgrade-v2-5.md +0 -441
  382. package/docs/tutorials/upgrade-v3.md +0 -38
  383. package/externs/svgelement.js +0 -18
  384. package/externs/webcrypto.js +0 -18
  385. package/lib/polyfill/mathround.js +0 -49
  386. package/lib/polyfill/patchedmediakeys_apple.js +0 -744
  387. package/lib/polyfill/patchedmediakeys_ms.js +0 -698
  388. package/lib/util/mutex.js +0 -52
  389. package/test/util/functional_unit.js +0 -82
@@ -28,11 +28,11 @@ often requiring [multiple][] [fixes][] to get certain dependencies removed.
28
28
  This means users all end up using the same monolithic player library.
29
29
  Features in Shaka 2 should be modular and easy to exclude from the build.
30
30
 
31
- [difficult]: https://github.com/google/shaka-player/commit/671611ef3722169b9f6b51ab44bdd6b4098d959e
32
- [to exclude]: https://github.com/google/shaka-player/commit/603fae969550c69ea38a61249da905857c67b9f1
33
- [from the build]: https://github.com/google/shaka-player/commit/f248647685b92ba928bbfd06d45d2b99023d60c2
34
- [multiple]: https://github.com/google/shaka-player/commit/39be45d3d55cdcef20a6a529a87246b0ea11cb33
35
- [fixes]: https://github.com/google/shaka-player/commit/6fe239150a8939728876e93e1a4269032530d9f1
31
+ [difficult]: https://github.com/shaka-project/shaka-player/commit/671611ef3722169b9f6b51ab44bdd6b4098d959e
32
+ [to exclude]: https://github.com/shaka-project/shaka-player/commit/603fae969550c69ea38a61249da905857c67b9f1
33
+ [from the build]: https://github.com/shaka-project/shaka-player/commit/f248647685b92ba928bbfd06d45d2b99023d60c2
34
+ [multiple]: https://github.com/shaka-project/shaka-player/commit/39be45d3d55cdcef20a6a529a87246b0ea11cb33
35
+ [fixes]: https://github.com/shaka-project/shaka-player/commit/6fe239150a8939728876e93e1a4269032530d9f1
36
36
 
37
37
  Some operations, in particular [starting playback and filling the buffer][],
38
38
  take longer than they need to. Startup and buffering in Shaka 2 should be as
@@ -46,54 +46,54 @@ us from updating MediaSource duration][] and makes it [difficult to set initial
46
46
  playback time][] on browsers other than Chrome. Shaka 2 should have a simpler
47
47
  streaming core that works better across browsers.
48
48
 
49
- [StreamVideoSource]: https://github.com/google/shaka-player/blob/v1.5.x/lib/player/stream_video_source.js
50
- [Stream]: https://github.com/google/shaka-player/blob/v1.5.x/lib/media/stream.js
51
- [SourceBufferManager]: https://github.com/google/shaka-player/blob/v1.5.x/lib/media/source_buffer_manager.js
52
- [prevents us from updating MediaSource duration]: https://github.com/google/shaka-player/blob/v1.5.1/lib/player/stream_video_source.js#L1807
53
- [difficult to set initial playback time]: https://github.com/google/shaka-player/issues/101
49
+ [StreamVideoSource]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/stream_video_source.js
50
+ [Stream]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/stream.js
51
+ [SourceBufferManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/source_buffer_manager.js
52
+ [prevents us from updating MediaSource duration]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/player/stream_video_source.js#L1807
53
+ [difficult to set initial playback time]: https://github.com/shaka-project/shaka-player/issues/101
54
54
 
55
55
  [Buffering state][] in Shaka 1 involves coordination between several layers
56
56
  (from [Player][] to [Stream][]) and has been [tough][] [to][] [get][]
57
57
  [right][]. Buffering state in Shaka 2 should be simple and consistent.
58
58
 
59
- [Buffering state]: https://github.com/google/shaka-player/blob/v1.5.1/lib/player/player.js#L994
60
- [Player]: https://github.com/google/shaka-player/blob/v1.5.x/lib/player/player.js
61
- [Stream]: https://github.com/google/shaka-player/blob/v1.5.x/lib/media/stream.js
62
- [tough]: https://github.com/google/shaka-player/issues/44
63
- [to]: https://github.com/google/shaka-player/issues/63
64
- [get]: https://github.com/google/shaka-player/issues/127
65
- [right]: https://github.com/google/shaka-player/issues/221#issuecomment-152781243
59
+ [Buffering state]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/player/player.js#L994
60
+ [Player]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/player.js
61
+ [Stream]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/stream.js
62
+ [tough]: https://github.com/shaka-project/shaka-player/issues/44
63
+ [to]: https://github.com/shaka-project/shaka-player/issues/63
64
+ [get]: https://github.com/shaka-project/shaka-player/issues/127
65
+ [right]: https://github.com/shaka-project/shaka-player/issues/221#issuecomment-152781243
66
66
 
67
67
  Shaka 1 relies on the browser to implement support for text types, and is
68
68
  therefore limited to non-segmented WebVTT. Shaka 2 should also support
69
69
  [segmented text types][] and [types not natively supported by the browser][].
70
70
 
71
- [segmented text types]: https://github.com/google/shaka-player/issues/150
72
- [types not natively supported by the browser]: https://github.com/google/shaka-player/issues/111
71
+ [segmented text types]: https://github.com/shaka-project/shaka-player/issues/150
72
+ [types not natively supported by the browser]: https://github.com/shaka-project/shaka-player/issues/111
73
73
 
74
74
  Bandwidth estimation in Shaka 1 relies on the assumption that segments are not
75
75
  cached locally. Use of [cache-busting techniques][] to enforce this makes
76
76
  Shaka very [cache][]-[unfriendly][]. Shaka 2 should be cache-friendly.
77
77
 
78
- [cache-busting techniques]: https://github.com/google/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L241
79
- [cache]: https://github.com/google/shaka-player/issues/76
80
- [unfriendly]: https://github.com/google/shaka-player/issues/191
78
+ [cache-busting techniques]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L241
79
+ [cache]: https://github.com/shaka-project/shaka-player/issues/76
80
+ [unfriendly]: https://github.com/shaka-project/shaka-player/issues/191
81
81
 
82
82
  Shaka 1 [uses HTTP headers to synchronize the user's clock][] with the server.
83
83
  This is [error-prone for some CDNs][] and also raises [CORS issues][], so Shaka
84
84
  2 should avoid using HTTP headers.
85
85
 
86
- [uses HTTP headers to synchronize the user's clock]: https://github.com/google/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L448
87
- [error-prone for some CDNs]: https://github.com/google/shaka-player/issues/205
88
- [CORS issues]: https://github.com/google/shaka-player/issues/159
86
+ [uses HTTP headers to synchronize the user's clock]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L448
87
+ [error-prone for some CDNs]: https://github.com/shaka-project/shaka-player/issues/205
88
+ [CORS issues]: https://github.com/shaka-project/shaka-player/issues/159
89
89
 
90
90
  [HttpVideoSource][] does not build on MSE and classes like [EmeManager][] have
91
91
  special cases to support it. Since it was originally created for debugging
92
92
  purposes, Shaka 2 should drop HttpVideoSource and only support MSE-based
93
93
  playback.
94
94
 
95
- [HttpVideoSource]: https://github.com/google/shaka-player/blob/v1.5.x/lib/player/http_video_source.js
96
- [EmeManager]: https://github.com/google/shaka-player/blob/v1.5.x/lib/media/eme_manager.js
95
+ [HttpVideoSource]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/player/http_video_source.js
96
+ [EmeManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.x/lib/media/eme_manager.js
97
97
 
98
98
  Integration tests using externally-hosted resources [can be flaky][],
99
99
  especially when run outside of Google's network. Shaka 2 should avoid tests
@@ -106,34 +106,34 @@ and application developers sometimes [have to use error message strings][]
106
106
  hard-coded into the library. Shaka 2 should have a consistent error format
107
107
  that is easy to read.
108
108
 
109
- [have to use error message strings]: https://github.com/google/shaka-player/issues/201
109
+ [have to use error message strings]: https://github.com/shaka-project/shaka-player/issues/201
110
110
 
111
111
  Networking abstractions in Shaka 1 are built inside of AjaxRequest, which
112
112
  requires non-HTTP requests to [pretend to come from XmlHttpRequest][]. The
113
113
  networking abstraction in Shaka 2 should be simpler and should not treat
114
114
  XHR as the basis for all networking.
115
115
 
116
- [pretend to come from XmlHttpRequest]: https://github.com/google/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L305
116
+ [pretend to come from XmlHttpRequest]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/ajax_request.js#L305
117
117
 
118
118
  A developer who wishes to use a custom network protocol or a custom manifest
119
119
  format in Shaka 1 will have to modify the library to do so. Shaka 2 should
120
120
  [support external plugins for networking][] and manifest support.
121
121
 
122
- [support external plugins for networking]: https://github.com/google/shaka-player/issues/198
122
+ [support external plugins for networking]: https://github.com/shaka-project/shaka-player/issues/198
123
123
 
124
124
  The functionality that can be injected into Shaka 1 ([IBandwidthEstimator][],
125
125
  [IAbrManager][]) is based on implementing class interfaces, which can be complex
126
126
  for those unfamiliar with the Closure compiler. Plugins and extensions to Shaka
127
127
  2 should be as simple as possible.
128
128
 
129
- [IBandwidthEstimator]: https://github.com/google/shaka-player/blob/v1.5.1/lib/util/i_bandwidth_estimator.js
130
- [IAbrManager]: https://github.com/google/shaka-player/blob/v1.5.1/lib/media/i_abr_manager.js
129
+ [IBandwidthEstimator]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/util/i_bandwidth_estimator.js
130
+ [IAbrManager]: https://github.com/shaka-project/shaka-player/blob/v1.5.1/lib/media/i_abr_manager.js
131
131
 
132
132
  [Static members][] in Shaka 1 make it impossible in some cases to host multiple
133
133
  Player instances with different settings. Player instances should be completely
134
134
  independent in Shaka 1.
135
135
 
136
- [Static members]: https://github.com/google/shaka-player/issues/126
136
+ [Static members]: https://github.com/shaka-project/shaka-player/issues/126
137
137
 
138
138
 
139
139
  ## Shaka v2 Design Principles
@@ -12,7 +12,7 @@ At the time it was added to the backlog, the feature was not quite ready for
12
12
  use. Since then, it has matured, and now is something we could feasibly use, but
13
13
  it has still been a low-priority feature.
14
14
 
15
- [since 2017]: https://github.com/google/shaka-player/issues/879
15
+ [since 2017]: https://github.com/shaka-project/shaka-player/issues/879
16
16
 
17
17
  ## Design Concept
18
18
 
@@ -131,4 +131,4 @@ unrelated service worker for our own.
131
131
  1. This message can also be used to make sure the versions are the same.
132
132
 
133
133
  [the documentation]: https://developers.google.com/web/updates/2018/12/background-fetch#starting_a_background_fetch
134
- [a given scope]: https://developers.google.com/web/fundamentals/primers/service-workers#register_a_service_worker
134
+ [a given scope]: https://developers.google.com/web/fundamentals/primers/service-workers#register_a_service_worker
@@ -97,7 +97,7 @@ A platform may support multiple DRM key systems, (for example, Widevine and
97
97
  PlayReady). The `drm.preferredKeySystems` configuration allows the application
98
98
  to specify which key systems it wants to choose.
99
99
 
100
- [Github issue](https://github.com/google/shaka-player/issues/3002)
100
+ [Github issue](https://github.com/shaka-project/shaka-player/issues/3002)
101
101
 
102
102
  Previously, Shaka Player chose a DRM key system based on:
103
103
  1. Only use the key systems supported by the platform.
@@ -4,7 +4,7 @@ Shaka Player parses channel count information from HLS manifests, but not yet
4
4
  from DASH manifests. We have had an [open request][dash_channels_request] to
5
5
  do this for a year.
6
6
 
7
- [dash_channels_request]: https://github.com/google/shaka-player/issues/424
7
+ [dash_channels_request]: https://github.com/shaka-project/shaka-player/issues/424
8
8
 
9
9
 
10
10
  ## The DASH Spec
@@ -79,7 +79,7 @@ Neither 23003-3 nor the DASH spec corrigenda were freely available at the time
79
79
  of this writing, so we have not confirmed these assumptions.
80
80
 
81
81
  [cast_labs_23003]: https://github.com/castlabs/dashencrypt/blob/1d604896/dash.fragmencrypter/src/main/java/com/castlabs/dash/helpers/DashHelper.java#L193
82
- [shaka_packager_23003]: https://github.com/google/shaka-packager/blob/4ba5bec6/packager/mpd/base/xml/xml_node.cc#L378
82
+ [shaka_packager_23003]: https://github.com/shaka-project/shaka-packager/blob/4ba5bec6/packager/mpd/base/xml/xml_node.cc#L378
83
83
 
84
84
 
85
85
  ### tag:dolby.com,2014:dash:audio\_channel\_configuration:2011
@@ -101,7 +101,7 @@ Packager][shaka_packager_ec3_enum] supports this interpretation. This has not
101
101
  been confirmed from primary sources.
102
102
 
103
103
  [dash_if_audio_config]: http://dashif.org/identifiers/audio-source-data/
104
- [shaka_packager_ec3_enum]: https://github.com/google/shaka-packager/blob/47363dd0/packager/media/codecs/ec3_audio_util.cc#L34
104
+ [shaka_packager_ec3_enum]: https://github.com/shaka-project/shaka-packager/blob/47363dd0/packager/media/codecs/ec3_audio_util.cc#L34
105
105
 
106
106
 
107
107
  ### urn:dts:dash:audio\_channel\_configuration:2012
@@ -244,5 +244,5 @@ segments. You can follow progress in [#999][]. But note that DASH requires
244
244
  accurate clock times, so even after that feature is added, your manifest may
245
245
  not play in other DASH players.
246
246
 
247
- [#999]: https://github.com/google/shaka-player/issues/999
247
+ [#999]: https://github.com/shaka-project/shaka-player/issues/999
248
248
 
@@ -21,13 +21,13 @@ buffered ranges.
21
21
 
22
22
  There have been a number of bugs filed asking for this feature.
23
23
 
24
- #### [#180](https://github.com/google/shaka-player/issues/180)
24
+ #### [#180](https://github.com/shaka-project/shaka-player/issues/180)
25
25
  One of the first bugs asking for gap jumping. The author talks about how live
26
26
  streams can commonly lose source content (e.g. from network outages or weather).
27
27
  This can cause the packagers to introduce gaps in either the media segments or
28
28
  the manifest.
29
29
 
30
- #### [#555](https://github.com/google/shaka-player/issues/555)
30
+ #### [#555](https://github.com/shaka-project/shaka-player/issues/555)
31
31
  This one is also asking about live streams and outages. The author discusses
32
32
  several options for dealing with interruptions in the live streams. The
33
33
  suggestions were:
@@ -41,7 +41,7 @@ can’t tell if a segment will never be available or is just not created yet.
41
41
  Also that dummy content is usually generated by the server; however, the author
42
42
  notes that this may not be feasible.
43
43
 
44
- #### [#661](https://github.com/google/shaka-player/issues/661)
44
+ #### [#661](https://github.com/shaka-project/shaka-player/issues/661)
45
45
  This content with small gaps in the media that result in playback stalling.
46
46
  Chrome and Firefox will actually play through the gap, but we don’t allow it
47
47
  since it wouldn’t work on Safari.
@@ -15,7 +15,7 @@ This allows an application using Shaka Player to:
15
15
  the user is making a decision on which video to play.
16
16
  - Start to play the selected video almost immediately.
17
17
 
18
- [Github issue](https://github.com/google/shaka-player/issues/880)
18
+ [Github issue](https://github.com/shaka-project/shaka-player/issues/880)
19
19
 
20
20
 
21
21
  ## Background & Context
@@ -296,4 +296,4 @@ When preloading, the MediaSourceEngine appends the data to the SourceBuffer.
296
296
  to the MediaSource.
297
297
  3. For a live stream video, StreamingEngine can keep fetching the latest piece
298
298
  of the content. The MediaSourceEngine stores the latest data, and abandons
299
- the older data.
299
+ the older data.
@@ -73,10 +73,8 @@ player.getConfiguration();
73
73
  failureCallback: Function
74
74
  ignoreTextStreamFailures: false
75
75
  alwaysStreamText: false
76
- jumpLargeGaps: false
77
76
  rebufferingGoal: 2
78
77
  retryParameters: Object
79
- smallGapLimit: 0.5
80
78
  startAtSegmentBoundary: false
81
79
  safeSeekOffset: 5
82
80
  textDisplayFactory: Function
@@ -184,6 +184,11 @@ Microsoft Documentation: https://docs.microsoft.com/en-us/playready/overview/sec
184
184
 
185
185
  NB: Audio Hardware DRM is not supported (PlayReady limitation)
186
186
 
187
+ ##### FairPlay
188
+
189
+ Based on [Apple's Documentation](https://developer.apple.com/streaming/fps/),
190
+ you should provide an empty string as robustness
191
+
187
192
  ##### Other key-systems
188
193
 
189
194
  Values for other key systems are not known to us at this time.
@@ -1,40 +1,25 @@
1
1
  # FairPlay Support
2
2
 
3
- When using native `src=` playback, we support using FairPlay on Safari.
3
+ We support FairPlay with EME on compatible environments or native `src=`.
4
4
  Adding FairPlay support involves a bit more work than other key systems.
5
5
 
6
-
7
6
  ## Server certificate
8
7
 
9
- All FairPlay content requires setting a server certificate. This is set in the
10
- Player configuration:
8
+ All FairPlay content requires setting a server certificate. You can either
9
+ provide it directly or set a serverCertificateUri for Shaka to fetch it for
10
+ you.
11
11
 
12
12
  ```js
13
13
  const req = await fetch('https://example.com/cert.der');
14
14
  const cert = await req.arrayBuffer();
15
15
 
16
- player.configure('drm.advanced.com\\.apple\\.fps\\.1_0.serverCertificate',
16
+ player.configure('drm.advanced.com\\.apple\\.fps\\.serverCertificate',
17
17
  new Uint8Array(cert));
18
18
  ```
19
19
 
20
-
21
- ## Content ID
22
-
23
- Some FairPlay content use custom signaling for the content ID. The content ID
24
- is used by the browser to generate the license request. If you don't use the
25
- default content ID derivation, you need to specify a custom init data transform:
26
-
27
20
  ```js
28
- player.configure('drm.initDataTransform', (initData, initDataType) => {
29
- if (initDataType != 'skd')
30
- return initData;
31
-
32
- // 'initData' is a buffer containing an 'skd://' URL as a UTF-8 string.
33
- const skdUri = shaka.util.StringUtils.fromBytesAutoDetect(initData);
34
- const contentId = getMyContentId(skdUri);
35
- const cert = player.drmInfo().serverCertificate;
36
- return shaka.util.FairPlayUtils.initDataTransform(initData, contentId, cert);
37
- });
21
+ player.configure('drm.advanced.com\\.apple\\.fps\\.serverCertificateUri',
22
+ 'https://example.com/cert.der');
38
23
  ```
39
24
 
40
25
  ## License wrapping
@@ -43,17 +43,6 @@ headers in the response. Additionally, with some manifests, we will send a
43
43
  This can also happen with mixed-content restrictions. If the site is using
44
44
  `https:`, then your manifest and segments must also.
45
45
 
46
- *Sending `Range` header at the start of HLS playback can be disabled using this config:*
47
- ```
48
- player.configure({
49
- manifest: {
50
- hls: {
51
- useFullSegmentsForStartTime: true,
52
- },
53
- },
54
- })
55
- ```
56
-
57
46
  <hr>
58
47
 
59
48
  **Q:** I am getting `REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE` or error code
@@ -274,18 +263,18 @@ so don't declare it using a ref(), and if you put your player instance into a
274
263
  data() object, you can prefix the property name with "$" or "_" to make Vue not
275
264
  proxy them.
276
265
 
277
- [386]: https://github.com/google/shaka-player/issues/386#issuecomment-227898001
278
- [489]: https://github.com/google/shaka-player/issues/489#issuecomment-240466224
279
- [743]: https://github.com/google/shaka-player/issues/743
280
- [887]: https://github.com/google/shaka-player/issues/887
281
- [999]: https://github.com/google/shaka-player/issues/999
282
- [1667]: https://github.com/google/shaka-player/issues/1667
266
+ [386]: https://github.com/shaka-project/shaka-player/issues/386#issuecomment-227898001
267
+ [489]: https://github.com/shaka-project/shaka-player/issues/489#issuecomment-240466224
268
+ [743]: https://github.com/shaka-project/shaka-player/issues/743
269
+ [887]: https://github.com/shaka-project/shaka-player/issues/887
270
+ [999]: https://github.com/shaka-project/shaka-player/issues/999
271
+ [1667]: https://github.com/shaka-project/shaka-player/issues/1667
283
272
  [BigInteger.js]: https://github.com/peterolson/BigInteger.js
284
273
  [CORS]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
285
- [Shaka Player Embedded]: https://github.com/google/shaka-player-embedded
274
+ [Shaka Player Embedded]: https://github.com/shaka-project/shaka-player-embedded
286
275
  [auth]: https://shaka-player-demo.appspot.com/docs/api/tutorial-license-server-auth.html
287
276
  [buffering]: https://shaka-player-demo.appspot.com/docs/api/tutorial-network-and-buffering-config.html
288
277
  [drm_tutorial]: https://shaka-player-demo.appspot.com/docs/api/tutorial-drm-config.html
289
278
  [eme_https]: https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins
290
279
  [wrapping]: https://shaka-player-demo.appspot.com/docs/api/tutorial-license-wrapping.html
291
- [including mux.js]: https://github.com/google/shaka-player/blob/967f3399/demo/index.html#L39
280
+ [including mux.js]: https://github.com/shaka-project/shaka-player/blob/967f3399/demo/index.html#L39
@@ -19,13 +19,8 @@
19
19
  { "fairplay": { "title": "FairPlay support" } },
20
20
  { "application-level-redirects": { "title": "Application-Level Redirects" } },
21
21
  { "blob-url": { "title": "Blob URL" } },
22
+ { "selenium-grid-config": { "title": "Selenium Grid Config" } },
22
23
  { "faq": { "title": "Frequently Asked Questions" } },
23
- { "upgrade": {
24
- "title": "Upgrade Guide",
25
- "children": {
26
- "upgrade-v2-5": { "title": "Upgrade Guide, v2.5 => v3" },
27
- "upgrade-v3": { "title": "Upgrade Guide, v3" },
28
- "upgrade-manifest": { "title": "Shaka Player Manifest Upgrade Guide" }
29
- }
30
- } }
24
+ { "upgrade": { "title": "Upgrade Guide" } },
25
+ { "upgrade-manifest": { "title": "ManifestParser Upgrade Guide" } }
31
26
  ]
@@ -69,9 +69,7 @@ __Polyfills__
69
69
  {@linksource shaka.polyfill.Fullscreen}
70
70
  - prefixed video QoE metrics:
71
71
  {@linksource shaka.polyfill.VideoPlaybackQuality}
72
- - prefixed EME implementations for IE 11 and very old versions of embedded
73
- Chrome/Chromium:
74
- - {@linksource shaka.polyfill.PatchedMediaKeysMs}
72
+ - prefixed EME implementations:
75
73
  - {@linksource shaka.polyfill.PatchedMediaKeysWebkit}
76
74
  - {@linksource shaka.polyfill.PatchedMediaKeysNop}
77
75
  - variants of VTTCue and TextTrackCue constructors:
@@ -108,7 +106,7 @@ python build/build.py +@complete -@polyfill
108
106
  python build/build.py +@complete -@polyfill -@text
109
107
  ```
110
108
 
111
- To see the complete list of categories, its in [`build/types/`](https://github.com/google/shaka-player/tree/master/build/types)
109
+ To see the complete list of categories, its in [`build/types/`](https://github.com/shaka-project/shaka-player/tree/main/build/types)
112
110
 
113
111
  #### Build Configs
114
112
 
@@ -177,5 +175,5 @@ If you have a great plugin that you'd like to contribute back to the community,
177
175
  we'd love to hear from you. You can get in touch via our [issue tracker][] to
178
176
  discuss it, and once it's ready, you can send a [pull request][] on github.
179
177
 
180
- [issue tracker]: https://github.com/google/shaka-player/issues/new/choose
181
- [pull request]: https://github.com/google/shaka-player/pull/new/master
178
+ [issue tracker]: https://github.com/shaka-project/shaka-player/issues/new/choose
179
+ [pull request]: https://github.com/shaka-project/shaka-player/pull/new/main
@@ -0,0 +1,122 @@
1
+ # Selenium Grid Config
2
+
3
+ Shaka Player's test runner (Karma) can be directed to run tests on a Selenium
4
+ grid. For this, you need a config file that defines what browsers are
5
+ available, and how to request them via WebDriver.
6
+
7
+ For a fully-worked, detailed example, see the config for the private grid in
8
+ our lab at [build/shaka-lab.yaml](https://github.com/shaka-project/shaka-player/blob/main/build/shaka-lab.yaml)
9
+
10
+ ## Usage
11
+
12
+ ```sh
13
+ python build/test.py \
14
+ --grid-config grid-config.yaml \
15
+ --grid-address selenium-hub-hostname:4444
16
+ ```
17
+
18
+ ## Syntax
19
+
20
+ The config file is written in YAML. We chose YAML because it has two big
21
+ advantages over JSON:
22
+
23
+ 1. You can add comments
24
+ 2. You can define variables (with YAML "anchors") to factor out common configs
25
+
26
+ ### Variables
27
+
28
+ You can define any common variables in the `vars` section, then refer to them
29
+ elsewhere. For example:
30
+
31
+ ```yaml
32
+ vars:
33
+ # Generates an "anchor" with the given name. Later, you can inject the
34
+ # contents of the variable with "*name".
35
+ firefox_config: &firefox_config
36
+ moz:firefoxOptions:
37
+ # Override Firefox default preferences in the temporary profile created
38
+ # for each test run.
39
+ prefs:
40
+ # Overrides Selenium's explicit default setting, to allow Firefox to
41
+ # install the Widevine CDM on demand.
42
+ media.gmp-manager.updateEnabled: true
43
+ # Overrides Firefox's Linux-specific default setting to disable DRM.
44
+ media.eme.enabled: true
45
+
46
+ # These three browser definitions share the same config from above.
47
+ FirefoxMac:
48
+ browser: firefox
49
+ os: Mac
50
+ extra_config: *firefox_config
51
+
52
+ FirefoxWindows:
53
+ browser: firefox
54
+ os: Windows
55
+ extra_config: *firefox_config
56
+
57
+ FirefoxLinux:
58
+ browser: firefox
59
+ os: Linux
60
+ extra_config: *firefox_config
61
+ ```
62
+
63
+ ### Browsers
64
+
65
+ Each top-level key in the config file (except for `vars`) is the name of a
66
+ browser made available to Karma. Within each of those keys are the following:
67
+
68
+ - `browser`: The name of the browser. This is case-sensitive, and must match
69
+ the string and case used by Selenium.
70
+ - `os` (optional): The name of the OS. This is case-INsensitive, and must
71
+ match the name of the platform as used by Selenium. For Generic
72
+ WebDriver Server, this can be omitted or set to the name of the host
73
+ platform.
74
+ - `version` (optional): The version of the browser. This is case-sensitive,
75
+ and must match the string and case used in the Selenium node config.
76
+ - `disabled` (optional): If true, this browser is disabled and will not be
77
+ used unless explicitly requested.
78
+ - `extra_config` (optional): A dictionary of extra configs which will be
79
+ merged with the WebDriver launcher config in Karma.
80
+
81
+ Examples of basic desktop browsers definitions:
82
+
83
+ ```yaml
84
+ ChromeMac:
85
+ browser: chrome
86
+ os: Mac
87
+
88
+ FirefoxMac:
89
+ browser: firefox
90
+ os: Mac
91
+
92
+ Safari:
93
+ browser: safari
94
+ os: Mac
95
+
96
+ SafariTP:
97
+ browser: safari
98
+ os: Mac
99
+ extra_config:
100
+ safari.options:
101
+ technologyPreview: true
102
+
103
+ ChromeWindows:
104
+ browser: chrome
105
+ os: Windows
106
+
107
+ FirefoxWindows:
108
+ browser: firefox
109
+ os: Windows
110
+
111
+ Edge:
112
+ browser: msedge
113
+ os: Windows
114
+
115
+ ChromeLinux:
116
+ browser: chrome
117
+ os: Linux
118
+
119
+ FirefoxLinux:
120
+ browser: firefox
121
+ os: Linux
122
+ ```
@@ -1,17 +1,89 @@
1
1
  # Shaka Player Upgrade Guide
2
2
 
3
- If you are upgrading from **v1 - v2.2**, please see
4
- {@link https://v2-4-7-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html
5
- the upgrade guides from the v2.4 releases}, then return to this guide.
3
+ If you are upgrading from **v1 or v2**, these releases are no longer supported,
4
+ and upgrade guides are no longer maintained. You can use these old upgrades
5
+ guides to upgrade in stages:
6
6
 
7
- If you are upgrading from **v2.3 - v2.4**, please see
8
- {@link https://v2-5-10-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html
9
- the upgrade guides from the v2.5 releases}, then return to this guide.
7
+ - {@link https://v2-4-7-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade.html Upgrade to v2.4}
8
+ - {@link https://v2-5-23-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-4.html Upgrade v2.4 => v2.5}
9
+ - {@link https://v3-0-15-dot-shaka-player-demo.appspot.com/docs/api/tutorial-upgrade-v2-5.html Upgrade v2.5 => v3.0}
10
10
 
11
- From these older release branches, you will have to use our upgrade guides in
12
- phases. This is necessary to keep our guides maintainable. Thanks for your
13
- understanding!
11
+ Since v3.0, Shaka Player has been following semantic versioning. (The
12
+ IE11 deprecation announced before v3.0 happened in v3.1, which technically
13
+ breaks semantic versioning guarantees. It is the only intentional exception.)
14
14
 
15
- If you are upgrading from **v2.5**, please see {@tutorial upgrade-v2-5}.
15
+ Upgrading from any v3 release to a newer v3 release should be backward
16
+ compatible. The same is true of all major version numbers (v4 => v4, etc).
16
17
 
17
- If you are upgrading from another **v3** release, please see {@tutorial upgrade-v3}.
18
+ Here is a summary of breaking changes that might require upgrades to your
19
+ application:
20
+
21
+
22
+ ## v3.1
23
+
24
+ - New dependencies:
25
+ - TextDecoder/TextEncoder platform support or polyfill required (affects
26
+ Xbox One, but not evergreen browsers); we suggest the polyfill
27
+ [https://github.com/anonyco/FastestSmallestTextEncoderDecoder](fastestsmallesttextencoderdecoder/EncoderDecoderTogether.min.js)
28
+
29
+ - Support removed:
30
+ - IE11 support removed
31
+
32
+
33
+ ## v4.0
34
+
35
+ - Support removed:
36
+ - Older TVs and set-top boxes that do not support MediaSource sequence mode
37
+ can no longer play HLS content (since we now use sequence mode for that)
38
+ - Support for iOS 12 and Safari 12 has been removed
39
+
40
+ - Configuration changes:
41
+ - `manifest.dash.defaultPresentationDelay` has been replaced by
42
+ `manifest.defaultPresentationDelay` (deprecated in v3.0.0)
43
+ - Configuration of factories should be plain factory functions, not
44
+ constructors; these will not be invoked with `new` (deprecated in v3.1.0)
45
+ - `drm.initDataTransform` has been removed (no longer needed since the
46
+ minimum supported version of iOS is now 13)
47
+ - `streaming.smallGapLimit` and `streaming.jumpLargeGaps` have been removed;
48
+ all gaps will now be jumped
49
+
50
+ - Player API changes:
51
+ - `shaka.Player.prototype.addTextTrack()` has been replaced by
52
+ `addTextTrackAsync()`, which returns a `Promise` (deprecated in v3.1.0)
53
+
54
+ - UI API changes:
55
+ - `shaka.ui.TrackLabelFormat` has been renamed to
56
+ `shaka.ui.Overlay.TrackLabelFormat` (deprecated in v3.1.0)
57
+ - `shaka.ui.FailReasonCode` has been renamed to
58
+ `shaka.ui.Overlay.FailReasonCode` (deprecated in v3.1.0)
59
+
60
+ - Offline API changes:
61
+ - `shaka.offline.Storage.prototype.store()` returns `AbortableOperation`
62
+ instead of `Promise`; callers should change `.then()` to
63
+ `.promise.then()` and `await rv` to `await rv.promise` (deprecated in
64
+ v3.0.0)
65
+ - `shaka.offline.Storage.prototype.getStoreInProgress()` has been removed;
66
+ concurrent operations are supported since v3, so callers don't need to
67
+ check this (deprecated in v3.0.0)
68
+
69
+ - Utility API changes:
70
+ - `shaka.util.Uint8ArrayUtils.equal` has been replaced by
71
+ `shaka.util.BufferUtils.equal`, which can handle multiple types of
72
+ buffers (deprecated in v3.0.0)
73
+
74
+ - Manifest API changes:
75
+ - `shaka.media.SegmentIndex.prototype.destroy()` has been replaced by
76
+ `release()`, which is synchronous (deprecated in v3.0.0)
77
+ - `shaka.media.SegmentIterator.prototype.seek()`, which mutates the
78
+ iterator, has been replaced by
79
+ `shaka.media.SegmentIndex.getIteratorForTime()` (deprecated in v3.1.0)
80
+ - `shaka.media.SegmentIndex.prototype.merge()` has become private; use
81
+ `mergeAndEvict()` instead (deprecated in v3.2.0)
82
+
83
+ - Plugin changes:
84
+ - `AbrManager` plugins must implement the `playbackRateChanged()` method
85
+ (deprecated in v3.0.0)
86
+ - `shaka.extern.Cue.prototype.spacer` has been replaced by the more
87
+ clearly-named `lineBreak` (deprecated in v3.1.0)
88
+ - `IUIElement` plugins must have a `release()` method (not `destroy()`)
89
+ (deprecated in v3.0.0)