rx-player 3.33.0 → 3.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (819) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/VERSION +1 -1
  3. package/dist/_esm5.processed/core/api/public_api.js +2 -2
  4. package/dist/_esm5.processed/manifest/manifest.js +1 -0
  5. package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
  6. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
  7. package/dist/mpd-parser.wasm +0 -0
  8. package/dist/rx-player.d.ts +1 -1
  9. package/dist/rx-player.js +24 -9
  10. package/dist/rx-player.min.d.ts +1 -1
  11. package/dist/rx-player.min.js +1 -1
  12. package/package.json +6 -6
  13. package/.editorconfig +0 -22
  14. package/.eslintrc.js +0 -406
  15. package/.github/workflows/checks.yml +0 -101
  16. package/.github/workflows/perfs.yml +0 -22
  17. package/.github/workflows/sonarcloud_analysis.yml +0 -20
  18. package/CONTRIBUTING.md +0 -272
  19. package/FILES.md +0 -283
  20. package/jest.config.js +0 -73
  21. package/manifest.mpd +0 -149
  22. package/scripts/README.md +0 -11
  23. package/scripts/build/constants.d.ts +0 -53
  24. package/scripts/build/generate_build.js +0 -190
  25. package/scripts/build/templates/experimental/features/index.d.ts +0 -16
  26. package/scripts/build/templates/experimental/features/index.js +0 -16
  27. package/scripts/build/templates/experimental/index.d.ts +0 -16
  28. package/scripts/build/templates/experimental/index.js +0 -16
  29. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
  30. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
  31. package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
  32. package/scripts/build/templates/experimental/tools/index.js +0 -16
  33. package/scripts/build/templates/features/index.d.ts +0 -16
  34. package/scripts/build/templates/features/index.js +0 -16
  35. package/scripts/build/templates/logger/index.d.ts +0 -17
  36. package/scripts/build/templates/logger/index.js +0 -17
  37. package/scripts/build/templates/minimal/index.d.ts +0 -17
  38. package/scripts/build/templates/minimal/index.js +0 -17
  39. package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
  40. package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
  41. package/scripts/build/templates/tools/index.d.ts +0 -16
  42. package/scripts/build/templates/tools/index.js +0 -16
  43. package/scripts/build/templates/tools/string-utils.d.ts +0 -18
  44. package/scripts/build/templates/tools/string-utils.js +0 -18
  45. package/scripts/build/templates/types/index.d.ts +0 -16
  46. package/scripts/build/templates/types/index.js +0 -15
  47. package/scripts/canal-release.patch +0 -316
  48. package/scripts/check_nodejs_import_compatibility.js +0 -60
  49. package/scripts/deploy_new_demo +0 -123
  50. package/scripts/fast_demo_build.js +0 -129
  51. package/scripts/generate_certificate +0 -19
  52. package/scripts/generate_demo_list.js +0 -105
  53. package/scripts/generate_documentation_list.js +0 -109
  54. package/scripts/generate_full_demo.js +0 -201
  55. package/scripts/generate_standalone_demo.js +0 -82
  56. package/scripts/launch_static_server.js +0 -163
  57. package/scripts/list-npm-scripts.js +0 -207
  58. package/scripts/make-dev-releases +0 -90
  59. package/scripts/report_build_sizes +0 -96
  60. package/scripts/run_standalone_demo.js +0 -27
  61. package/scripts/start_demo_web_server.js +0 -44
  62. package/scripts/update-version +0 -48
  63. package/scripts/update_gh-pages_demo +0 -132
  64. package/scripts/update_gh-pages_doc +0 -106
  65. package/scripts/utils/display_webpack_errors.js +0 -33
  66. package/scripts/utils/get_human_readable_hours.js +0 -14
  67. package/scripts/wasm-strip.js +0 -359
  68. package/sonar-project.properties +0 -7
  69. package/src/README.md +0 -136
  70. package/src/compat/README.md +0 -29
  71. package/src/compat/__tests__/add_text_track.test.ts +0 -176
  72. package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
  73. package/src/compat/__tests__/browser_version.test.ts +0 -84
  74. package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
  75. package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
  76. package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
  77. package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
  78. package/src/compat/__tests__/clear_element_src.test.ts +0 -252
  79. package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
  80. package/src/compat/__tests__/fullscreen.test.ts +0 -286
  81. package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
  82. package/src/compat/__tests__/is_offline.test.ts +0 -65
  83. package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
  84. package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
  85. package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
  86. package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
  87. package/src/compat/__tests__/remove_cue.test.ts +0 -229
  88. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
  89. package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
  90. package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
  91. package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
  92. package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
  93. package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
  94. package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
  95. package/src/compat/add_class_name.ts +0 -41
  96. package/src/compat/add_text_track.ts +0 -58
  97. package/src/compat/browser_compatibility_types.ts +0 -222
  98. package/src/compat/browser_detection.ts +0 -172
  99. package/src/compat/browser_version.ts +0 -44
  100. package/src/compat/can_patch_isobmff.ts +0 -30
  101. package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
  102. package/src/compat/can_reuse_media_keys.ts +0 -20
  103. package/src/compat/change_source_buffer_type.ts +0 -66
  104. package/src/compat/clear_element_src.ts +0 -55
  105. package/src/compat/eme/close_session.ts +0 -111
  106. package/src/compat/eme/constants.ts +0 -21
  107. package/src/compat/eme/custom_key_system_access.ts +0 -67
  108. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
  109. package/src/compat/eme/custom_media_keys/index.ts +0 -28
  110. package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
  111. package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
  112. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
  113. package/src/compat/eme/custom_media_keys/types.ts +0 -67
  114. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
  115. package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
  116. package/src/compat/eme/eme-api-implementation.ts +0 -318
  117. package/src/compat/eme/generate_key_request.ts +0 -162
  118. package/src/compat/eme/get_init_data.ts +0 -159
  119. package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
  120. package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
  121. package/src/compat/eme/index.ts +0 -47
  122. package/src/compat/eme/load_session.ts +0 -67
  123. package/src/compat/enable_audio_track.ts +0 -33
  124. package/src/compat/event_listeners.ts +0 -566
  125. package/src/compat/fullscreen.ts +0 -87
  126. package/src/compat/get_start_date.ts +0 -48
  127. package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
  128. package/src/compat/index.ts +0 -87
  129. package/src/compat/is_codec_supported.ts +0 -40
  130. package/src/compat/is_debug_mode_enabled.ts +0 -12
  131. package/src/compat/is_node.ts +0 -18
  132. package/src/compat/is_offline.ts +0 -44
  133. package/src/compat/is_seeking_approximate.ts +0 -32
  134. package/src/compat/is_vtt_cue.ts +0 -30
  135. package/src/compat/make_vtt_cue.ts +0 -51
  136. package/src/compat/on_height_width_change.ts +0 -119
  137. package/src/compat/patch_webkit_source_buffer.ts +0 -89
  138. package/src/compat/remove_cue.ts +0 -64
  139. package/src/compat/should_favour_custom_safari_EME.ts +0 -34
  140. package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
  141. package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
  142. package/src/compat/should_renew_media_key_system_access.ts +0 -26
  143. package/src/compat/should_unset_media_keys.ts +0 -27
  144. package/src/compat/should_validate_metadata.ts +0 -27
  145. package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
  146. package/src/compat/should_wait_for_have_enough_data.ts +0 -17
  147. package/src/config.ts +0 -32
  148. package/src/core/README.md +0 -56
  149. package/src/core/adaptive/README.md +0 -147
  150. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
  151. package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
  152. package/src/core/adaptive/buffer_based_chooser.ts +0 -264
  153. package/src/core/adaptive/guess_based_chooser.ts +0 -309
  154. package/src/core/adaptive/index.ts +0 -45
  155. package/src/core/adaptive/network_analyzer.ts +0 -419
  156. package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
  157. package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
  158. package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
  159. package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
  160. package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
  161. package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
  162. package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
  163. package/src/core/adaptive/utils/ewma.ts +0 -59
  164. package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
  165. package/src/core/adaptive/utils/filter_by_width.ts +0 -49
  166. package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
  167. package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
  168. package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
  169. package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
  170. package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
  171. package/src/core/api/README.md +0 -36
  172. package/src/core/api/__tests__/option_utils.test.ts +0 -1668
  173. package/src/core/api/__tests__/public_api.test.ts +0 -857
  174. package/src/core/api/__tests__/utils.test.ts +0 -195
  175. package/src/core/api/debug/buffer_graph.ts +0 -244
  176. package/src/core/api/debug/buffer_size_graph.ts +0 -130
  177. package/src/core/api/debug/constants.ts +0 -2
  178. package/src/core/api/debug/index.ts +0 -3
  179. package/src/core/api/debug/modules/general_info.ts +0 -213
  180. package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
  181. package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
  182. package/src/core/api/debug/render.ts +0 -40
  183. package/src/core/api/debug/utils.ts +0 -103
  184. package/src/core/api/index.ts +0 -27
  185. package/src/core/api/option_utils.ts +0 -700
  186. package/src/core/api/playback_observer.ts +0 -994
  187. package/src/core/api/public_api.ts +0 -3247
  188. package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
  189. package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
  190. package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
  191. package/src/core/api/utils.ts +0 -216
  192. package/src/core/decrypt/README.md +0 -22
  193. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
  194. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
  195. package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
  196. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
  197. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
  198. package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
  199. package/src/core/decrypt/attach_media_keys.ts +0 -121
  200. package/src/core/decrypt/clear_on_stop.ts +0 -47
  201. package/src/core/decrypt/content_decryptor.ts +0 -1246
  202. package/src/core/decrypt/create_or_load_session.ts +0 -133
  203. package/src/core/decrypt/create_session.ts +0 -214
  204. package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
  205. package/src/core/decrypt/find_key_system.ts +0 -376
  206. package/src/core/decrypt/get_key_system_configuration.ts +0 -51
  207. package/src/core/decrypt/get_media_keys.ts +0 -147
  208. package/src/core/decrypt/index.ts +0 -36
  209. package/src/core/decrypt/init_media_keys.ts +0 -60
  210. package/src/core/decrypt/session_events_listener.ts +0 -386
  211. package/src/core/decrypt/set_server_certificate.ts +0 -105
  212. package/src/core/decrypt/types.ts +0 -404
  213. package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
  214. package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
  215. package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
  216. package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
  217. package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
  218. package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
  219. package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
  220. package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
  221. package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
  222. package/src/core/decrypt/utils/is_session_usable.ts +0 -62
  223. package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
  224. package/src/core/decrypt/utils/key_session_record.ts +0 -174
  225. package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
  226. package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
  227. package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
  228. package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
  229. package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
  230. package/src/core/fetchers/README.md +0 -84
  231. package/src/core/fetchers/cdn_prioritizer.ts +0 -207
  232. package/src/core/fetchers/index.ts +0 -38
  233. package/src/core/fetchers/manifest/index.ts +0 -28
  234. package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
  235. package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
  236. package/src/core/fetchers/segment/index.ts +0 -28
  237. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
  238. package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
  239. package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
  240. package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
  241. package/src/core/fetchers/utils/error_selector.ts +0 -38
  242. package/src/core/fetchers/utils/schedule_request.ts +0 -493
  243. package/src/core/init/README.md +0 -81
  244. package/src/core/init/directfile_content_initializer.ts +0 -310
  245. package/src/core/init/index.ts +0 -22
  246. package/src/core/init/media_source_content_initializer.ts +0 -878
  247. package/src/core/init/types.ts +0 -266
  248. package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
  249. package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
  250. package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
  251. package/src/core/init/utils/create_media_source.ts +0 -139
  252. package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
  253. package/src/core/init/utils/end_of_stream.ts +0 -108
  254. package/src/core/init/utils/get_initial_time.ts +0 -165
  255. package/src/core/init/utils/get_loaded_reference.ts +0 -82
  256. package/src/core/init/utils/initial_seek_and_play.ts +0 -237
  257. package/src/core/init/utils/initialize_content_decryption.ts +0 -172
  258. package/src/core/init/utils/media_source_duration_updater.ts +0 -349
  259. package/src/core/init/utils/rebuffering_controller.ts +0 -642
  260. package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
  261. package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
  262. package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
  263. package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
  264. package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
  265. package/src/core/init/utils/throw_on_media_error.ts +0 -74
  266. package/src/core/segment_buffers/README.md +0 -219
  267. package/src/core/segment_buffers/garbage_collector.ts +0 -177
  268. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
  269. package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
  270. package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
  271. package/src/core/segment_buffers/implementations/image/index.ts +0 -18
  272. package/src/core/segment_buffers/implementations/index.ts +0 -20
  273. package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
  274. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
  275. package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
  276. package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
  277. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
  278. package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
  279. package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
  280. package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
  281. package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
  282. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
  283. package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
  284. package/src/core/segment_buffers/implementations/types.ts +0 -386
  285. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
  286. package/src/core/segment_buffers/index.ts +0 -67
  287. package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
  288. package/src/core/segment_buffers/inventory/index.ts +0 -30
  289. package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
  290. package/src/core/segment_buffers/inventory/types.ts +0 -35
  291. package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
  292. package/src/core/stream/README.md +0 -59
  293. package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
  294. package/src/core/stream/adaptation/index.ts +0 -20
  295. package/src/core/stream/adaptation/types.ts +0 -199
  296. package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
  297. package/src/core/stream/index.ts +0 -38
  298. package/src/core/stream/orchestrator/README.md +0 -349
  299. package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
  300. package/src/core/stream/orchestrator/index.ts +0 -30
  301. package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
  302. package/src/core/stream/period/index.ts +0 -20
  303. package/src/core/stream/period/period_stream.ts +0 -469
  304. package/src/core/stream/period/types.ts +0 -132
  305. package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
  306. package/src/core/stream/representation/README.md +0 -16
  307. package/src/core/stream/representation/index.ts +0 -20
  308. package/src/core/stream/representation/representation_stream.ts +0 -474
  309. package/src/core/stream/representation/types.ts +0 -292
  310. package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
  311. package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
  312. package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
  313. package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
  314. package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
  315. package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
  316. package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
  317. package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
  318. package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
  319. package/src/default_config.ts +0 -1293
  320. package/src/errors/README.md +0 -6
  321. package/src/errors/__tests__/assertion_error.test.ts +0 -26
  322. package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
  323. package/src/errors/__tests__/error_message.test.ts +0 -23
  324. package/src/errors/__tests__/format_error.test.ts +0 -62
  325. package/src/errors/__tests__/is_known_error.test.ts +0 -65
  326. package/src/errors/__tests__/media_error.test.ts +0 -55
  327. package/src/errors/__tests__/network_error.test.ts +0 -84
  328. package/src/errors/__tests__/other_error.test.ts +0 -53
  329. package/src/errors/__tests__/request_error.test.ts +0 -45
  330. package/src/errors/assertion_error.ts +0 -40
  331. package/src/errors/custom_loader_error.ts +0 -57
  332. package/src/errors/encrypted_media_error.ts +0 -71
  333. package/src/errors/error_codes.ts +0 -149
  334. package/src/errors/error_message.ts +0 -30
  335. package/src/errors/format_error.ts +0 -39
  336. package/src/errors/index.ts +0 -52
  337. package/src/errors/is_known_error.ts +0 -35
  338. package/src/errors/media_error.ts +0 -118
  339. package/src/errors/network_error.ts +0 -74
  340. package/src/errors/other_error.ts +0 -50
  341. package/src/errors/request_error.ts +0 -76
  342. package/src/experimental/README.md +0 -16
  343. package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
  344. package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
  345. package/src/experimental/features/__tests__/index.test.ts +0 -19
  346. package/src/experimental/features/__tests__/local.test.ts +0 -35
  347. package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
  348. package/src/experimental/features/dash_wasm.ts +0 -41
  349. package/src/experimental/features/debug_element.ts +0 -13
  350. package/src/experimental/features/index.ts +0 -20
  351. package/src/experimental/features/local.ts +0 -28
  352. package/src/experimental/features/metaplaylist.ts +0 -28
  353. package/src/experimental/index.ts +0 -5
  354. package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
  355. package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
  356. package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
  357. package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
  358. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
  359. package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
  360. package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
  361. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
  362. package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
  363. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
  364. package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
  365. package/src/experimental/tools/index.ts +0 -27
  366. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
  367. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
  368. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
  369. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
  370. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
  371. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
  372. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
  373. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
  374. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
  375. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
  376. package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
  377. package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
  378. package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
  381. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
  382. package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
  383. package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
  384. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
  385. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
  386. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
  387. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
  388. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
  389. package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
  390. package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
  391. package/src/features/README.md +0 -11
  392. package/src/features/__tests__/add_features.test.ts +0 -69
  393. package/src/features/__tests__/initialize_features.test.ts +0 -674
  394. package/src/features/add_features.ts +0 -37
  395. package/src/features/features_object.ts +0 -37
  396. package/src/features/index.ts +0 -40
  397. package/src/features/initialize_features.ts +0 -136
  398. package/src/features/list/__tests__/bif_parser.test.ts +0 -30
  399. package/src/features/list/__tests__/dash.test.ts +0 -41
  400. package/src/features/list/__tests__/directfile.test.ts +0 -35
  401. package/src/features/list/__tests__/eme.test.ts +0 -28
  402. package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
  403. package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
  404. package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
  405. package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
  406. package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
  407. package/src/features/list/__tests__/image_buffer.test.ts +0 -28
  408. package/src/features/list/__tests__/index.test.ts +0 -55
  409. package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
  410. package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
  411. package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
  412. package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
  413. package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
  414. package/src/features/list/__tests__/smooth.test.ts +0 -36
  415. package/src/features/list/bif_parser.ts +0 -31
  416. package/src/features/list/dash.ts +0 -36
  417. package/src/features/list/directfile.ts +0 -35
  418. package/src/features/list/eme.ts +0 -29
  419. package/src/features/list/html_sami_parser.ts +0 -31
  420. package/src/features/list/html_srt_parser.ts +0 -31
  421. package/src/features/list/html_text_buffer.ts +0 -29
  422. package/src/features/list/html_ttml_parser.ts +0 -31
  423. package/src/features/list/html_vtt_parser.ts +0 -31
  424. package/src/features/list/image_buffer.ts +0 -29
  425. package/src/features/list/index.ts +0 -32
  426. package/src/features/list/native_sami_parser.ts +0 -32
  427. package/src/features/list/native_srt_parser.ts +0 -32
  428. package/src/features/list/native_text_buffer.ts +0 -30
  429. package/src/features/list/native_ttml_parser.ts +0 -32
  430. package/src/features/list/native_vtt_parser.ts +0 -32
  431. package/src/features/list/smooth.ts +0 -32
  432. package/src/features/types.ts +0 -183
  433. package/src/index.ts +0 -38
  434. package/src/log.ts +0 -22
  435. package/src/manifest/README.md +0 -55
  436. package/src/manifest/__tests__/adaptation.test.ts +0 -485
  437. package/src/manifest/__tests__/manifest.test.ts +0 -428
  438. package/src/manifest/__tests__/period.test.ts +0 -769
  439. package/src/manifest/__tests__/representation.test.ts +0 -297
  440. package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
  441. package/src/manifest/__tests__/update_periods.test.ts +0 -845
  442. package/src/manifest/adaptation.ts +0 -294
  443. package/src/manifest/index.ts +0 -67
  444. package/src/manifest/manifest.ts +0 -811
  445. package/src/manifest/period.ts +0 -211
  446. package/src/manifest/representation.ts +0 -451
  447. package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
  448. package/src/manifest/representation_index/index.ts +0 -31
  449. package/src/manifest/representation_index/static.ts +0 -158
  450. package/src/manifest/representation_index/types.ts +0 -433
  451. package/src/manifest/types.ts +0 -33
  452. package/src/manifest/update_period_in_place.ts +0 -142
  453. package/src/manifest/update_periods.ts +0 -201
  454. package/src/manifest/utils.ts +0 -60
  455. package/src/minimal.ts +0 -34
  456. package/src/parsers/README.md +0 -12
  457. package/src/parsers/containers/isobmff/constants.ts +0 -24
  458. package/src/parsers/containers/isobmff/create_box.ts +0 -81
  459. package/src/parsers/containers/isobmff/drm/index.ts +0 -17
  460. package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
  461. package/src/parsers/containers/isobmff/get_box.ts +0 -278
  462. package/src/parsers/containers/isobmff/index.ts +0 -51
  463. package/src/parsers/containers/isobmff/read.ts +0 -105
  464. package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
  465. package/src/parsers/containers/isobmff/utils.ts +0 -555
  466. package/src/parsers/containers/matroska/index.ts +0 -21
  467. package/src/parsers/containers/matroska/utils.ts +0 -313
  468. package/src/parsers/images/bif.ts +0 -128
  469. package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
  470. package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
  471. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
  472. package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
  473. package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
  474. package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
  475. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
  476. package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
  477. package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
  478. package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
  479. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
  480. package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
  481. package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
  482. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
  483. package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
  484. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
  485. package/src/parsers/manifest/dash/common/index.ts +0 -40
  486. package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
  487. package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
  488. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
  489. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
  490. package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
  491. package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
  492. package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
  493. package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
  494. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
  495. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
  496. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
  497. package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
  498. package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
  499. package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
  500. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
  501. package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
  502. package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
  503. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
  504. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
  505. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
  506. package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
  507. package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
  508. package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
  509. package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
  510. package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
  511. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
  512. package/src/parsers/manifest/dash/index.ts +0 -22
  513. package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
  514. package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
  515. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
  516. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
  517. package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
  518. package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
  519. package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
  520. package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
  521. package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
  522. package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
  523. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
  524. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
  525. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
  526. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
  527. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
  528. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
  529. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
  530. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
  531. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
  532. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
  533. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
  534. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
  535. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
  536. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
  537. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
  538. package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
  539. package/src/parsers/manifest/dash/parsers_types.ts +0 -91
  540. package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
  541. package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
  542. package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
  543. package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
  544. package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
  545. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
  546. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
  547. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
  548. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
  549. package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
  550. package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
  551. package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
  552. package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
  553. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
  554. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
  555. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
  556. package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
  557. package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
  558. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
  559. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
  560. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
  561. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
  562. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
  563. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
  564. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
  565. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
  566. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
  567. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
  568. package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
  569. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
  570. package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
  571. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
  572. package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
  573. package/src/parsers/manifest/index.ts +0 -17
  574. package/src/parsers/manifest/local/index.ts +0 -25
  575. package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
  576. package/src/parsers/manifest/local/representation_index.ts +0 -246
  577. package/src/parsers/manifest/local/types.ts +0 -291
  578. package/src/parsers/manifest/metaplaylist/index.ts +0 -28
  579. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
  580. package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
  581. package/src/parsers/manifest/smooth/create_parser.ts +0 -699
  582. package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
  583. package/src/parsers/manifest/smooth/index.ts +0 -26
  584. package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
  585. package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
  586. package/src/parsers/manifest/smooth/representation_index.ts +0 -704
  587. package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
  588. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
  589. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
  590. package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
  591. package/src/parsers/manifest/types.ts +0 -395
  592. package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
  593. package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
  594. package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
  595. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
  596. package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
  597. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
  598. package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
  599. package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
  600. package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
  601. package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
  602. package/src/parsers/manifest/utils/index_helpers.ts +0 -204
  603. package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
  604. package/src/parsers/texttracks/index.ts +0 -21
  605. package/src/parsers/texttracks/sami/html.ts +0 -219
  606. package/src/parsers/texttracks/sami/native.ts +0 -192
  607. package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
  608. package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
  609. package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
  610. package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
  611. package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
  612. package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
  613. package/src/parsers/texttracks/srt/html.ts +0 -182
  614. package/src/parsers/texttracks/srt/native.ts +0 -74
  615. package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
  616. package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
  617. package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
  618. package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
  619. package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
  620. package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
  621. package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
  622. package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
  623. package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
  624. package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
  625. package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
  626. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
  627. package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
  628. package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
  629. package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
  630. package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
  631. package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
  632. package/src/parsers/texttracks/ttml/html/index.ts +0 -23
  633. package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
  634. package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
  635. package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
  636. package/src/parsers/texttracks/ttml/native/index.ts +0 -23
  637. package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
  638. package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
  639. package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
  640. package/src/parsers/texttracks/ttml/regexps.ts +0 -65
  641. package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
  642. package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
  643. package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
  644. package/src/parsers/texttracks/types.ts +0 -34
  645. package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
  646. package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
  647. package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
  648. package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
  649. package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
  650. package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
  651. package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
  652. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
  653. package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
  654. package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
  655. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
  656. package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
  657. package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
  658. package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
  659. package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
  660. package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
  661. package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
  662. package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
  663. package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
  664. package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
  665. package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
  666. package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
  667. package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
  668. package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
  669. package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
  670. package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
  671. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
  672. package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
  673. package/src/parsers/texttracks/webvtt/utils.ts +0 -135
  674. package/src/public_types.ts +0 -846
  675. package/src/tools/README.md +0 -4
  676. package/src/tools/TextTrackRenderer/index.ts +0 -28
  677. package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
  678. package/src/tools/index.ts +0 -20
  679. package/src/tools/string_utils.ts +0 -24
  680. package/src/transports/README.md +0 -276
  681. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
  682. package/src/transports/dash/construct_segment_url.ts +0 -28
  683. package/src/transports/dash/extract_complete_chunks.ts +0 -66
  684. package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
  685. package/src/transports/dash/image_pipelines.ts +0 -122
  686. package/src/transports/dash/index.ts +0 -23
  687. package/src/transports/dash/init_segment_loader.ts +0 -114
  688. package/src/transports/dash/low_latency_segment_loader.ts +0 -87
  689. package/src/transports/dash/manifest_parser.ts +0 -325
  690. package/src/transports/dash/pipelines.ts +0 -72
  691. package/src/transports/dash/segment_loader.ts +0 -249
  692. package/src/transports/dash/segment_parser.ts +0 -194
  693. package/src/transports/dash/text_loader.ts +0 -120
  694. package/src/transports/dash/text_parser.ts +0 -234
  695. package/src/transports/index.ts +0 -17
  696. package/src/transports/local/index.ts +0 -18
  697. package/src/transports/local/pipelines.ts +0 -100
  698. package/src/transports/local/segment_loader.ts +0 -198
  699. package/src/transports/local/segment_parser.ts +0 -101
  700. package/src/transports/local/text_parser.ts +0 -185
  701. package/src/transports/metaplaylist/README.md +0 -94
  702. package/src/transports/metaplaylist/index.ts +0 -23
  703. package/src/transports/metaplaylist/manifest_loader.ts +0 -62
  704. package/src/transports/metaplaylist/pipelines.ts +0 -425
  705. package/src/transports/smooth/extract_timings_infos.ts +0 -142
  706. package/src/transports/smooth/index.ts +0 -23
  707. package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
  708. package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
  709. package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
  710. package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
  711. package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
  712. package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
  713. package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
  714. package/src/transports/smooth/isobmff/index.ts +0 -32
  715. package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
  716. package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
  717. package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
  718. package/src/transports/smooth/pipelines.ts +0 -533
  719. package/src/transports/smooth/segment_loader.ts +0 -288
  720. package/src/transports/smooth/utils.ts +0 -106
  721. package/src/transports/types.ts +0 -809
  722. package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
  723. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
  724. package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
  725. package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
  726. package/src/transports/utils/byte_range.ts +0 -25
  727. package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
  728. package/src/transports/utils/check_isobmff_integrity.ts +0 -50
  729. package/src/transports/utils/find_complete_box.ts +0 -63
  730. package/src/transports/utils/generate_manifest_loader.ts +0 -97
  731. package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
  732. package/src/transports/utils/infer_segment_container.ts +0 -56
  733. package/src/transports/utils/parse_text_track.ts +0 -176
  734. package/src/typings/README.md +0 -7
  735. package/src/typings/globals.d.ts +0 -83
  736. package/src/typings/next-tick.d.ts +0 -23
  737. package/src/utils/README.md +0 -5
  738. package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
  739. package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
  740. package/src/utils/__tests__/array_find.test.ts +0 -113
  741. package/src/utils/__tests__/array_find_index.test.ts +0 -113
  742. package/src/utils/__tests__/array_includes.test.ts +0 -151
  743. package/src/utils/__tests__/assert.test.ts +0 -237
  744. package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
  745. package/src/utils/__tests__/base64.test.ts +0 -147
  746. package/src/utils/__tests__/byte_parsing.test.ts +0 -267
  747. package/src/utils/__tests__/deep_merge.test.ts +0 -48
  748. package/src/utils/__tests__/event_emitter.test.ts +0 -579
  749. package/src/utils/__tests__/flat_map.test.ts +0 -71
  750. package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
  751. package/src/utils/__tests__/hash_buffer.test.ts +0 -105
  752. package/src/utils/__tests__/id_generator.test.ts +0 -80
  753. package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
  754. package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
  755. package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
  756. package/src/utils/__tests__/list_to_map.test.ts +0 -46
  757. package/src/utils/__tests__/logger.test.ts +0 -214
  758. package/src/utils/__tests__/noop.test.ts +0 -23
  759. package/src/utils/__tests__/object_assign.test.ts +0 -56
  760. package/src/utils/__tests__/object_values.test.ts +0 -26
  761. package/src/utils/__tests__/ranges.test.ts +0 -907
  762. package/src/utils/__tests__/resolve_url.test.ts +0 -100
  763. package/src/utils/__tests__/simple_set.test.ts +0 -57
  764. package/src/utils/__tests__/sorted_list.test.ts +0 -335
  765. package/src/utils/__tests__/starts_with.test.ts +0 -65
  766. package/src/utils/__tests__/string_parsing.test.ts +0 -267
  767. package/src/utils/__tests__/uniq.test.ts +0 -134
  768. package/src/utils/__tests__/warn_once.test.ts +0 -38
  769. package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
  770. package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
  771. package/src/utils/are_codecs_compatible.ts +0 -51
  772. package/src/utils/array_find.ts +0 -55
  773. package/src/utils/array_find_index.ts +0 -54
  774. package/src/utils/array_includes.ts +0 -93
  775. package/src/utils/assert.ts +0 -65
  776. package/src/utils/assert_unreachable.ts +0 -45
  777. package/src/utils/base64.ts +0 -153
  778. package/src/utils/byte_parsing.ts +0 -256
  779. package/src/utils/cancellable_sleep.ts +0 -41
  780. package/src/utils/create_cancellable_promise.ts +0 -69
  781. package/src/utils/deep_merge.ts +0 -49
  782. package/src/utils/event_emitter.ts +0 -147
  783. package/src/utils/flat_map.ts +0 -50
  784. package/src/utils/get_fuzzed_delay.ts +0 -27
  785. package/src/utils/hash_buffer.ts +0 -42
  786. package/src/utils/id_generator.ts +0 -35
  787. package/src/utils/initialization_segment_cache.ts +0 -68
  788. package/src/utils/is_non_empty_string.ts +0 -23
  789. package/src/utils/is_null_or_undefined.ts +0 -27
  790. package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
  791. package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
  792. package/src/utils/languages/__tests__/normalize.test.ts +0 -290
  793. package/src/utils/languages/index.ts +0 -29
  794. package/src/utils/languages/normalize.ts +0 -152
  795. package/src/utils/list_to_map.ts +0 -32
  796. package/src/utils/logger.ts +0 -100
  797. package/src/utils/noop.ts +0 -26
  798. package/src/utils/object_assign.ts +0 -60
  799. package/src/utils/object_values.ts +0 -31
  800. package/src/utils/ranges.ts +0 -499
  801. package/src/utils/reference.ts +0 -390
  802. package/src/utils/request/fetch.ts +0 -250
  803. package/src/utils/request/index.ts +0 -38
  804. package/src/utils/request/xhr.ts +0 -287
  805. package/src/utils/resolve_url.ts +0 -126
  806. package/src/utils/retry_promise_with_backoff.ts +0 -95
  807. package/src/utils/simple_set.ts +0 -67
  808. package/src/utils/sleep.ts +0 -14
  809. package/src/utils/slice_uint8array.ts +0 -53
  810. package/src/utils/sorted_list.ts +0 -240
  811. package/src/utils/starts_with.ts +0 -42
  812. package/src/utils/string_parsing.ts +0 -414
  813. package/src/utils/task_canceller.ts +0 -367
  814. package/src/utils/uniq.ts +0 -49
  815. package/src/utils/warn_once.ts +0 -34
  816. package/src/utils/weak_map_memory.ts +0 -89
  817. package/src/utils/wrapInPromise.ts +0 -24
  818. package/tsconfig.json +0 -28
  819. package/tsconfig.modules.json +0 -36
@@ -1,975 +0,0 @@
1
- /**
2
- * Copyright 2015 CANAL+ Group
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- /**
18
- * /!\ This file is feature-switchable.
19
- * It always should be imported through the `features` object.
20
- */
21
-
22
- import { enableAudioTrack } from "../../../compat";
23
- import {
24
- ICompatAudioTrack,
25
- ICompatAudioTrackList,
26
- ICompatHTMLMediaElement,
27
- ICompatTextTrackList,
28
- ICompatVideoTrack,
29
- ICompatVideoTrackList,
30
- } from "../../../compat/browser_compatibility_types";
31
- import { Representation } from "../../../manifest";
32
- import {
33
- IAudioTrack,
34
- ITextTrack,
35
- IVideoTrack,
36
- IAudioTrackPreference,
37
- ITextTrackPreference,
38
- IVideoTrackPreference,
39
- IAvailableVideoTrack,
40
- IAvailableAudioTrack,
41
- IAvailableTextTrack,
42
- } from "../../../public_types";
43
- import EventEmitter from "../../../utils/event_emitter";
44
- import normalizeLanguage from "../../../utils/languages";
45
-
46
- /** Events emitted by the MediaElementTrackChoiceManager. */
47
- interface IMediaElementTrackChoiceManagerEvents {
48
- availableVideoTracksChange: IAvailableVideoTrack[];
49
- availableAudioTracksChange: IAvailableAudioTrack[];
50
- availableTextTracksChange: IAvailableTextTrack[];
51
- videoTrackChange: IVideoTrack|null;
52
- audioTrackChange: IAudioTrack|null;
53
- textTrackChange: ITextTrack|null;
54
- }
55
-
56
- /**
57
- * Check if track array is different from an other one
58
- * @param {Array.<Object>} oldTrackArray
59
- * @param {Array.<Object>} newTrackArray
60
- * @returns {boolean}
61
- */
62
- function areTrackArraysDifferent(
63
- oldTrackArray: Array<{ nativeTrack: ICompatVideoTrack|ICompatAudioTrack|TextTrack }>,
64
- newTrackArray: Array<{ nativeTrack: ICompatVideoTrack|ICompatAudioTrack|TextTrack }>
65
- ): boolean {
66
- if (newTrackArray.length !== oldTrackArray.length) {
67
- return true;
68
- }
69
- for (let i = 0; i < newTrackArray.length; i++) {
70
- if (newTrackArray[i].nativeTrack !== oldTrackArray[i]?.nativeTrack) {
71
- return true;
72
- }
73
- }
74
- return false;
75
- }
76
-
77
- /**
78
- * Create audio tracks from native audio tracks.
79
- * @param {AudioTrackList} audioTracks
80
- * @returns {Array.<Object>}
81
- */
82
- function createAudioTracks(
83
- audioTracks: ICompatAudioTrackList
84
- ): Array<{ track: { id: string;
85
- normalized: string;
86
- language: string;
87
- audioDescription: boolean;
88
- representations: Representation[]; };
89
- nativeTrack: ICompatAudioTrack; }> {
90
- const newAudioTracks = [];
91
- const languagesOccurences: Partial<Record<string, number>> = {};
92
- for (let i = 0; i < audioTracks.length; i++) {
93
- const audioTrack = audioTracks[i];
94
- const language = audioTrack.language === "" ? "nolang" :
95
- audioTrack.language;
96
- const occurences = languagesOccurences[language] ?? 1;
97
- const id = "gen_audio_" +
98
- language +
99
- "_" +
100
- occurences.toString();
101
- languagesOccurences[language] = occurences + 1;
102
- const track = { language: audioTrack.language,
103
- id,
104
- normalized: normalizeLanguage(audioTrack.language),
105
- audioDescription: audioTrack.kind === "descriptions" ||
106
- // Safari seem to prefer the non-standard singular
107
- // version, funnily enough
108
- audioTrack.kind === "description",
109
- representations: [] as Representation[] };
110
- newAudioTracks.push({ track,
111
- nativeTrack: audioTrack });
112
- }
113
- return newAudioTracks;
114
- }
115
-
116
- /**
117
- * Create text tracks from native text tracks.
118
- * @param {TextTrackList} textTracks
119
- * @returns {Array.<Object>}
120
- */
121
- function createTextTracks(
122
- textTracks: ICompatTextTrackList
123
- ): Array<{ track: ITextTrack;
124
- nativeTrack: TextTrack; }> {
125
- const newTextTracks = [];
126
- const languagesOccurences: Partial<Record<string, number>> = {};
127
- for (let i = 0; i < textTracks.length; i++) {
128
- const textTrack = textTracks[i];
129
- const language = textTrack.language === "" ? "nolang" :
130
- textTrack.language;
131
- const occurences = languagesOccurences[language] ?? 1;
132
- const id = "gen_text_" +
133
- language +
134
- "_" +
135
- occurences.toString();
136
- languagesOccurences[language] = occurences + 1;
137
-
138
- // Safari seems to be indicating that the subtitles track is a forced
139
- // subtitles track by setting the `kind` attribute to `"forced"`.
140
- // As of now (2023-04-04), this is not standard.
141
- // @see https://github.com/whatwg/html/issues/4472
142
- const forced = (textTrack.kind as string) === "forced" ?
143
- true :
144
- undefined;
145
- const track = { language: textTrack.language,
146
- forced,
147
- label: textTrack.label,
148
- id,
149
- normalized: normalizeLanguage(textTrack.language),
150
- closedCaption: textTrack.kind === "captions" };
151
- newTextTracks.push({ track,
152
- nativeTrack: textTrack });
153
- }
154
- return newTextTracks;
155
- }
156
-
157
- /**
158
- * Create video tracks from native video tracks.
159
- * @param {VideoTrackList} videoTracks
160
- * @returns {Array.<Object>}
161
- */
162
- function createVideoTracks(
163
- videoTracks: ICompatVideoTrackList
164
- ): Array<{ track: { id: string;
165
- representations: Representation[]; };
166
- nativeTrack: ICompatVideoTrack; }> {
167
- const newVideoTracks = [];
168
- const languagesOccurences: Partial<Record<string, number>> = {};
169
- for (let i = 0; i < videoTracks.length; i++) {
170
- const videoTrack = videoTracks[i];
171
- const language = videoTrack.language === "" ? "nolang" :
172
- videoTrack.language;
173
- const occurences = languagesOccurences[language] ?? 1;
174
- const id = "gen_video_" +
175
- language +
176
- "_" +
177
- occurences.toString();
178
- languagesOccurences[language] = occurences + 1;
179
- newVideoTracks.push({ track: { id,
180
- representations: [] as Representation[] },
181
- nativeTrack: videoTrack });
182
- }
183
- return newVideoTracks;
184
- }
185
-
186
- /**
187
- * Manage video, audio and text tracks for current direct file content.
188
- * @class MediaElementTrackChoiceManager
189
- */
190
- export default class MediaElementTrackChoiceManager
191
- extends EventEmitter<IMediaElementTrackChoiceManagerEvents> {
192
- /**
193
- * Array of preferred settings for audio tracks.
194
- * Sorted by order of preference descending.
195
- */
196
- private _preferredAudioTracks : IAudioTrackPreference[];
197
-
198
- /**
199
- * Array of preferred languages for text tracks.
200
- * Sorted by order of preference descending.
201
- */
202
- private _preferredTextTracks : ITextTrackPreference[];
203
-
204
- /**
205
- * Array of preferred settings for video tracks.
206
- * Sorted by order of preference descending.
207
- */
208
- private _preferredVideoTracks : IVideoTrackPreference[];
209
-
210
- /** List every available audio tracks available on the media element. */
211
- private _audioTracks : Array<{ track: IAudioTrack; nativeTrack: ICompatAudioTrack }>;
212
- /** List every available text tracks available on the media element. */
213
- private _textTracks : Array<{ track: ITextTrack; nativeTrack: TextTrack }>;
214
- /** List every available video tracks available on the media element. */
215
- private _videoTracks : Array<{ track: IVideoTrack; nativeTrack: ICompatVideoTrack }>;
216
-
217
- /** Last audio track emitted as active. */
218
- private _lastEmittedNativeAudioTrack : ICompatAudioTrack | null | undefined;
219
- /** Last video track emitted as active. */
220
- private _lastEmittedNativeVideoTrack : ICompatVideoTrack | null | undefined;
221
- /** Last text track emitted as active. */
222
- private _lastEmittedNativeTextTrack : TextTrack | null | undefined;
223
-
224
- /** Native `AudioTrackList` implemented on the media element. */
225
- private _nativeAudioTracks : ICompatAudioTrackList | undefined;
226
- /** Native `VideoTrackList` implemented on the media element. */
227
- private _nativeVideoTracks : ICompatVideoTrackList | undefined;
228
- /** Native `TextTrackList` implemented on the media element. */
229
- private _nativeTextTracks : ICompatTextTrackList|undefined;
230
-
231
- /**
232
- * Last audio track manually set active through the corresponding
233
- * MediaElementTrackChoiceManager's API(s).
234
- * Allows to "lock on" a track, to be sure that choice will be kept even
235
- * through audio track list updates, as long as it is still available.
236
- * `undefined` if the audio track was not manually set.
237
- */
238
- private _audioTrackLockedOn : ICompatAudioTrack | undefined;
239
-
240
- /**
241
- * Last text track manually set active through the corresponding
242
- * MediaElementTrackChoiceManager's API(s).
243
- * Allows to "lock on" a track, to be sure that choice will be kept even
244
- * through text track list updates, as long as it is still available.
245
- * `null` if the text track was disabled.
246
- * `undefined` if the text track was not manually set.
247
- */
248
- private _textTrackLockedOn : TextTrack | undefined | null;
249
-
250
- /**
251
- * Last video track manually set active through the corresponding
252
- * MediaElementTrackChoiceManager's API(s).
253
- * Allows to "lock on" a track, to be sure that choice will be kept even
254
- * through video track list updates, as long as it is still available.
255
- * `null` if the video track was disabled.
256
- * `undefined` if the video track was not manually set.
257
- */
258
- private _videoTrackLockedOn : ICompatVideoTrack | undefined | null;
259
-
260
- constructor(mediaElement: HTMLMediaElement) {
261
- super();
262
-
263
- this._preferredAudioTracks = [];
264
- this._preferredTextTracks = [];
265
- this._preferredVideoTracks = [];
266
-
267
- // TODO In practice, the audio/video/text tracks API are not always implemented on
268
- // the media element, although Typescript HTMLMediaElement types tend to mean
269
- // that can't be undefined.
270
- this._nativeAudioTracks = (mediaElement as ICompatHTMLMediaElement).audioTracks;
271
- this._nativeVideoTracks = (mediaElement as ICompatHTMLMediaElement).videoTracks;
272
- this._nativeTextTracks = mediaElement.textTracks as ICompatTextTrackList|undefined;
273
-
274
- this._audioTracks =
275
- this._nativeAudioTracks !== undefined ? createAudioTracks(this._nativeAudioTracks) :
276
- [];
277
- this._videoTracks =
278
- this._nativeVideoTracks !== undefined ? createVideoTracks(this._nativeVideoTracks) :
279
- [];
280
- this._textTracks =
281
- this._nativeTextTracks !== undefined ? createTextTracks(this._nativeTextTracks) :
282
- [];
283
-
284
- this._lastEmittedNativeAudioTrack = this._getPrivateChosenAudioTrack()?.nativeTrack;
285
- this._lastEmittedNativeVideoTrack = this._getPrivateChosenVideoTrack()?.nativeTrack;
286
- this._lastEmittedNativeTextTrack = this._getPrivateChosenTextTrack()?.nativeTrack;
287
-
288
- this._handleNativeTracksCallbacks();
289
- }
290
-
291
- /**
292
- * Set the list of preferred audio tracks, in preference order.
293
- * @param {Array.<Object>} preferredAudioTracks
294
- * @param {boolean} shouldApply - `true` if those preferences should be
295
- * applied on the currently loaded Period. `false` if it should only
296
- * be applied to new content.
297
- */
298
- public setPreferredAudioTracks(
299
- preferredAudioTracks : IAudioTrackPreference[],
300
- shouldApply : boolean
301
- ) : void {
302
- this._preferredAudioTracks = preferredAudioTracks;
303
- if (shouldApply) {
304
- this._applyAudioPreferences();
305
- }
306
- }
307
-
308
- /**
309
- * Set the list of preferred text tracks, in preference order.
310
- * @param {Array.<Object>} preferredTextTracks
311
- * @param {boolean} shouldApply - `true` if those preferences should be
312
- * applied on the currently loaded Period. `false` if it should only
313
- * be applied to new content.
314
- */
315
- public setPreferredTextTracks(
316
- preferredTextTracks : ITextTrackPreference[],
317
- shouldApply : boolean
318
- ) : void {
319
- this._preferredTextTracks = preferredTextTracks;
320
- if (shouldApply) {
321
- this._applyTextPreferences();
322
- }
323
- }
324
-
325
- /**
326
- * Set the list of preferred video tracks, in preference order.
327
- * @param {Array.<Object>} preferredVideoTracks
328
- * @param {boolean} shouldApply - `true` if those preferences should be
329
- * applied on the currently loaded Period. `false` if it should only
330
- * be applied to new content.
331
- */
332
- public setPreferredVideoTracks(
333
- preferredVideoTracks : IVideoTrackPreference[],
334
- shouldApply : boolean
335
- ) : void {
336
- this._preferredVideoTracks = preferredVideoTracks;
337
- if (shouldApply) {
338
- this._applyVideoPreferences();
339
- }
340
- }
341
-
342
- /**
343
- * Update the currently active audio track by setting the wanted audio track's
344
- * ID property.
345
- * Throws if the wanted audio track is not found.
346
- * @param {string|number|undefined} id
347
- */
348
- public setAudioTrackById(id?: string|number): void {
349
- for (let i = 0; i < this._audioTracks.length; i++) {
350
- const { track, nativeTrack } = this._audioTracks[i];
351
- if (track.id === id) {
352
- this._enableAudioTrackFromIndex(i);
353
- this._audioTrackLockedOn = nativeTrack;
354
- return;
355
- }
356
- }
357
- throw new Error("Audio track not found.");
358
- }
359
-
360
- /**
361
- * Disable the currently-active text track, if one.
362
- */
363
- public disableTextTrack(): void {
364
- disableTextTracks(this._textTracks);
365
- this._textTrackLockedOn = null;
366
- }
367
-
368
- /**
369
- * Update the currently active text track by setting the wanted text track's
370
- * ID property.
371
- * Throws if the wanted text track is not found.
372
- * @param {string|number|undefined} id
373
- */
374
- public setTextTrackById(id?: string|number): void {
375
- let hasSetTrack = false;
376
- for (let i = 0; i < this._textTracks.length; i++) {
377
- const { track, nativeTrack } = this._textTracks[i];
378
- if (track.id === id) {
379
- nativeTrack.mode = "showing";
380
- hasSetTrack = true;
381
- this._textTrackLockedOn = nativeTrack;
382
- } else if (nativeTrack.mode === "showing" || nativeTrack.mode === "hidden") {
383
- nativeTrack.mode = "disabled";
384
- }
385
- }
386
- if (!hasSetTrack) {
387
- throw new Error("Text track not found.");
388
- }
389
- }
390
-
391
- /**
392
- * Disable the currently-active video track, if one.
393
- */
394
- public disableVideoTrack(): void {
395
- disableVideoTracks(this._videoTracks);
396
- this._videoTrackLockedOn = null;
397
- }
398
-
399
- /**
400
- * Update the currently active video track by setting the wanted video track's
401
- * ID property.
402
- * Throws if the wanted video track is not found.
403
- * @param {string|number|undefined} id
404
- */
405
- public setVideoTrackById(id?: string | number): void {
406
- for (let i = 0; i < this._videoTracks.length; i++) {
407
- const { track, nativeTrack } = this._videoTracks[i];
408
- if (track.id === id) {
409
- nativeTrack.selected = true;
410
- this._videoTrackLockedOn = nativeTrack;
411
- return;
412
- }
413
- }
414
- throw new Error("Video track not found.");
415
- }
416
-
417
- /**
418
- * Returns the currently active audio track.
419
- * Returns `null` if no audio track is active.
420
- * Returns `undefined` if we cannot know which audio track is active.
421
- * @returns {Object|null|undefined}
422
- */
423
- public getChosenAudioTrack(): IAudioTrack|null|undefined {
424
- const chosenPrivateAudioTrack = this._getPrivateChosenAudioTrack();
425
- if (chosenPrivateAudioTrack != null) {
426
- return chosenPrivateAudioTrack.track;
427
- }
428
- return chosenPrivateAudioTrack;
429
- }
430
-
431
- /**
432
- * Returns the currently active text track.
433
- * Returns `null` if no text track is active.
434
- * Returns `undefined` if we cannot know which text track is active.
435
- * @returns {Object|null|undefined}
436
- */
437
- public getChosenTextTrack(): ITextTrack|null|undefined {
438
- const chosenPrivateTextTrack = this._getPrivateChosenTextTrack();
439
- if (chosenPrivateTextTrack != null) {
440
- return chosenPrivateTextTrack.track;
441
- }
442
- return chosenPrivateTextTrack;
443
- }
444
-
445
- /**
446
- * Returns the currently active video track.
447
- * Returns `null` if no video track is active.
448
- * Returns `undefined` if we cannot know which video track is active.
449
- * @returns {Object|null|undefined}
450
- */
451
- public getChosenVideoTrack(): IVideoTrack|null|undefined {
452
- const chosenPrivateVideoTrack = this._getPrivateChosenVideoTrack();
453
- if (chosenPrivateVideoTrack != null) {
454
- return chosenPrivateVideoTrack.track;
455
- }
456
- return chosenPrivateVideoTrack;
457
- }
458
-
459
- /**
460
- * Returns a description of every available audio tracks.
461
- * @returns {Array.<Object>}
462
- */
463
- public getAvailableAudioTracks(): IAvailableAudioTrack[] {
464
- return this._audioTracks.map(({ track, nativeTrack }) => {
465
- return { id: track.id,
466
- language: track.language,
467
- normalized: track.normalized,
468
- audioDescription: track.audioDescription,
469
- active: nativeTrack.enabled,
470
- representations: track.representations };
471
- });
472
- }
473
-
474
- /**
475
- * Returns a description of every available text tracks.
476
- * @returns {Array.<Object>}
477
- */
478
- public getAvailableTextTracks(): IAvailableTextTrack[] {
479
- return this._textTracks.map(({ track, nativeTrack }) => {
480
- return { id: track.id,
481
- label: track.label,
482
- forced: track.forced,
483
- language: track.language,
484
- normalized: track.normalized,
485
- closedCaption: track.closedCaption,
486
- active: nativeTrack.mode === "showing" };
487
- });
488
- }
489
-
490
- /**
491
- * Returns a description of every available video tracks.
492
- * @returns {Array.<Object>}
493
- */
494
- public getAvailableVideoTracks(): IAvailableVideoTrack[] {
495
- return this._videoTracks.map(({ track, nativeTrack }) => {
496
- return { id: track.id,
497
- representations: track.representations,
498
- active: nativeTrack.selected };
499
- });
500
- }
501
-
502
- /**
503
- * Free the resources used by the MediaElementTrackChoiceManager.
504
- */
505
- public dispose(): void {
506
- if (this._nativeVideoTracks !== undefined) {
507
- this._nativeVideoTracks.onchange = null;
508
- this._nativeVideoTracks.onaddtrack = null;
509
- this._nativeVideoTracks.onremovetrack = null;
510
- }
511
-
512
- if (this._nativeAudioTracks !== undefined) {
513
- this._nativeAudioTracks.onchange = null;
514
- this._nativeAudioTracks.onaddtrack = null;
515
- this._nativeAudioTracks.onremovetrack = null;
516
- }
517
-
518
- if (this._nativeTextTracks !== undefined) {
519
- this._nativeTextTracks.onchange = null;
520
- this._nativeTextTracks.onaddtrack = null;
521
- this._nativeTextTracks.onremovetrack = null;
522
- }
523
-
524
- this.removeEventListener();
525
- }
526
-
527
- /**
528
- * Get information about the currently chosen audio track.
529
- * `undefined` if we cannot know it.
530
- * `null` if no audio track is chosen.
531
- * @returns {Object|undefined|null}
532
- */
533
- private _getPrivateChosenAudioTrack(): { track: IAudioTrack;
534
- nativeTrack: ICompatAudioTrack; } |
535
- undefined |
536
- null {
537
- if (this._nativeAudioTracks === undefined) {
538
- return undefined;
539
- }
540
- for (let i = 0; i < this._audioTracks.length; i++) {
541
- const audioTrack = this._audioTracks[i];
542
- if (audioTrack.nativeTrack.enabled) {
543
- return audioTrack;
544
- }
545
- }
546
- return null;
547
- }
548
-
549
- /**
550
- * Get information about the currently chosen video track.
551
- * `undefined` if we cannot know it.
552
- * `null` if no video track is chosen.
553
- * @returns {Object|undefined|null}
554
- */
555
- private _getPrivateChosenVideoTrack(): { track: IVideoTrack;
556
- nativeTrack: ICompatVideoTrack; } |
557
- undefined |
558
- null {
559
- if (this._nativeVideoTracks === undefined) {
560
- return undefined;
561
- }
562
- for (let i = 0; i < this._videoTracks.length; i++) {
563
- const videoTrack = this._videoTracks[i];
564
- if (videoTrack.nativeTrack.selected) {
565
- return videoTrack;
566
- }
567
- }
568
- return null;
569
- }
570
-
571
- /**
572
- * Get information about the currently chosen text track.
573
- * `undefined` if we cannot know it.
574
- * `null` if no text track is chosen.
575
- * @returns {Object|undefined|null}
576
- */
577
- private _getPrivateChosenTextTrack(): { track: ITextTrack;
578
- nativeTrack: TextTrack; } |
579
- undefined |
580
- null {
581
- if (this._nativeTextTracks === undefined) {
582
- return undefined;
583
- }
584
- for (let i = 0; i < this._textTracks.length; i++) {
585
- const textTrack = this._textTracks[i];
586
- if (textTrack.nativeTrack.mode === "showing") {
587
- return textTrack;
588
- }
589
- }
590
- return null;
591
- }
592
-
593
- /**
594
- * Iterate over every available audio tracks on the media element and either:
595
- * - if the last manually set audio track is found, set that one.
596
- * - if not, set the most preferred one
597
- * - if we still do not find an optimal track, let the one chosen by default
598
- */
599
- private _setOptimalAudioTrack() : void {
600
- // First check if the last set track is available, set it if that's the case
601
- if (this._audioTrackLockedOn !== undefined) {
602
- for (let i = 0; i < this._audioTracks.length; i++) {
603
- const { nativeTrack } = this._audioTracks[i];
604
- if (nativeTrack === this._audioTrackLockedOn) {
605
- this._enableAudioTrackFromIndex(i);
606
- return;
607
- }
608
- }
609
- }
610
- this._applyAudioPreferences();
611
- }
612
-
613
- /**
614
- * Try to find a track corresponding to the audio track preferences:
615
- * - if found, set it as the active track
616
- * - if not found, let the chosen audio track by default
617
- */
618
- private _applyAudioPreferences() : void {
619
- // Re-set the last manually set audio track
620
- this._audioTrackLockedOn = undefined;
621
-
622
- const preferredAudioTracks = this._preferredAudioTracks;
623
- for (let i = 0; i < preferredAudioTracks.length; i++) {
624
- const track = preferredAudioTracks[i];
625
- if (track !== null && track.language !== undefined) {
626
- const normalized = normalizeLanguage(track.language);
627
- for (let j = 0; j < this._audioTracks.length; j++) {
628
- const audioTrack = this._audioTracks[j];
629
- if (audioTrack.track.normalized === normalized &&
630
- audioTrack.track.audioDescription === track.audioDescription
631
- ) {
632
- this._enableAudioTrackFromIndex(j);
633
- return;
634
- }
635
- }
636
- }
637
- }
638
-
639
- // else just let the default one instead
640
- }
641
-
642
- /**
643
- * Iterate over every available text tracks on the media element and either:
644
- * - if the last manually set text track is found, set that one.
645
- * - if not, set the most preferred one
646
- * - if we still do not find an optimal track, just disable it.
647
- */
648
- private _setOptimalTextTrack() : void {
649
- // First check if the last set track is available, set it if that's the case
650
- if (this._textTrackLockedOn === null) {
651
- disableTextTracks(this._textTracks);
652
- return;
653
- } else if (this._textTrackLockedOn !== undefined) {
654
- for (let i = 0; i < this._textTracks.length; i++) {
655
- const { nativeTrack } = this._textTracks[i];
656
- if (nativeTrack === this._textTrackLockedOn) {
657
- // disable the rest
658
- disableAllTextTracksBut(this._textTracks, nativeTrack);
659
-
660
- if (nativeTrack.mode !== "showing") {
661
- nativeTrack.mode = "showing";
662
- }
663
- return;
664
- }
665
- }
666
- }
667
-
668
- // Else set the preferred one
669
- this._applyTextPreferences();
670
- }
671
-
672
- /**
673
- * Try to find a track corresponding to the text track preferences:
674
- * - if found, set it as the active track
675
- * - if not found, let the chosen text track by default
676
- */
677
- private _applyTextPreferences() : void {
678
- // Re-set the last manually set audio track
679
- this._textTrackLockedOn = undefined;
680
-
681
- const preferredTextTracks = this._preferredTextTracks;
682
- for (let i = 0; i < preferredTextTracks.length; i++) {
683
- const track = preferredTextTracks[i];
684
- if (track === null) {
685
- disableTextTracks(this._textTracks);
686
- return;
687
- }
688
- const normalized = normalizeLanguage(track.language);
689
- for (let j = 0; j < this._textTracks.length; j++) {
690
- const textTrack = this._textTracks[j];
691
- if (textTrack.track.normalized === normalized &&
692
- textTrack.track.closedCaption === track.closedCaption
693
- ) {
694
- // disable the rest
695
- disableAllTextTracksBut(this._textTracks, textTrack.nativeTrack);
696
-
697
- if (textTrack.nativeTrack.mode !== "showing") {
698
- textTrack.nativeTrack.mode = "showing";
699
- }
700
- return;
701
- }
702
- }
703
- }
704
-
705
- // Else just disable text tracks
706
- disableTextTracks(this._textTracks);
707
- }
708
-
709
- /**
710
- * Iterate over every available video tracks on the media element and either:
711
- * - if the last manually set video track is found, set that one.
712
- * - if not, set the most preferred one
713
- * - if we still do not find an optimal track, let the one chosen by default
714
- */
715
- private _setOptimalVideoTrack() : void {
716
- // 1. first check if the last set track is available, set it if that's the case
717
- if (this._videoTrackLockedOn === null) {
718
- disableVideoTracks(this._videoTracks);
719
- return;
720
- } else if (this._videoTrackLockedOn !== undefined) {
721
- for (let i = 0; i < this._videoTracks.length; i++) {
722
- const { nativeTrack } = this._videoTracks[i];
723
- if (nativeTrack === this._videoTrackLockedOn) {
724
- nativeTrack.selected = true;
725
- return;
726
- }
727
- }
728
- }
729
-
730
- // Else set the preferred one
731
- this._applyVideoPreferences();
732
- }
733
-
734
- /**
735
- * Try to find a track corresponding to the text track preferences:
736
- * - if found, set it as the active track
737
- * - if not found, let the chosen text track by default
738
- */
739
- private _applyVideoPreferences() : void {
740
- // Re-set the last manually set video track
741
- this._videoTrackLockedOn = undefined;
742
-
743
- // NOTE: As we cannot access either codec information or sign interpretation
744
- // information easily about the different codecs. It is the same case than
745
- // if we had only tracks where those were set to undefined.
746
- // Based on that, we should disable the video track as long as one of the
747
- // set preferrence is "no video track" (i.e. `null`) as this is the only
748
- // constraint that we know we can respect.
749
- // Else, just chose the first track.
750
- const preferredVideoTracks = this._preferredVideoTracks;
751
- const hasNullPreference = preferredVideoTracks.some(p => p === null);
752
- if (hasNullPreference) {
753
- disableVideoTracks(this._videoTracks);
754
- }
755
- // else just let the default one instead
756
- }
757
-
758
- /**
759
- * Monitor native tracks add, remove and change callback and trigger the
760
- * change events.
761
- */
762
- private _handleNativeTracksCallbacks(): void {
763
- if (this._nativeAudioTracks !== undefined) {
764
- this._nativeAudioTracks.onaddtrack = () => {
765
- if (this._nativeAudioTracks !== undefined) {
766
- const newAudioTracks = createAudioTracks(this._nativeAudioTracks);
767
- if (areTrackArraysDifferent(this._audioTracks, newAudioTracks)) {
768
- this._audioTracks = newAudioTracks;
769
- this._setOptimalAudioTrack();
770
- this.trigger("availableAudioTracksChange", this.getAvailableAudioTracks());
771
- const chosenAudioTrack = this._getPrivateChosenAudioTrack();
772
- if (chosenAudioTrack?.nativeTrack !== this._lastEmittedNativeAudioTrack) {
773
- this.trigger("audioTrackChange", chosenAudioTrack?.track ?? null);
774
- this._lastEmittedNativeAudioTrack = chosenAudioTrack?.nativeTrack ?? null;
775
- }
776
- }
777
- }
778
- };
779
- this._nativeAudioTracks.onremovetrack = () => {
780
- if (this._nativeAudioTracks !== undefined) {
781
- const newAudioTracks = createAudioTracks(this._nativeAudioTracks);
782
- if (areTrackArraysDifferent(this._audioTracks, newAudioTracks)) {
783
- this._audioTracks = newAudioTracks;
784
- this.trigger("availableAudioTracksChange", this.getAvailableAudioTracks());
785
- const chosenAudioTrack = this._getPrivateChosenAudioTrack();
786
- if (chosenAudioTrack?.nativeTrack !== this._lastEmittedNativeAudioTrack) {
787
- this.trigger("audioTrackChange", chosenAudioTrack?.track ?? null);
788
- this._lastEmittedNativeAudioTrack = chosenAudioTrack?.nativeTrack ?? null;
789
- }
790
- }
791
- }
792
- };
793
- this._nativeAudioTracks.onchange = () => {
794
- if (this._audioTracks !== undefined) {
795
- for (let i = 0; i < this._audioTracks.length; i++) {
796
- const { track, nativeTrack } = this._audioTracks[i];
797
- if (nativeTrack.enabled) {
798
- if (nativeTrack !== this._lastEmittedNativeAudioTrack) {
799
- this.trigger("audioTrackChange", track);
800
- this._lastEmittedNativeAudioTrack = nativeTrack;
801
- }
802
- return;
803
- }
804
- }
805
- }
806
- if (this._lastEmittedNativeAudioTrack !== null) {
807
- this.trigger("audioTrackChange", null);
808
- this._lastEmittedNativeAudioTrack = null;
809
- }
810
- return;
811
- };
812
- }
813
-
814
- if (this._nativeTextTracks !== undefined) {
815
- this._nativeTextTracks.onaddtrack = () => {
816
- if (this._nativeTextTracks !== undefined) {
817
- const newTextTracks = createTextTracks(this._nativeTextTracks);
818
- if (areTrackArraysDifferent(this._textTracks, newTextTracks)) {
819
- this._textTracks = newTextTracks;
820
- this._setOptimalTextTrack();
821
- this.trigger("availableTextTracksChange", this.getAvailableTextTracks());
822
- const chosenTextTrack = this._getPrivateChosenTextTrack();
823
- if (chosenTextTrack?.nativeTrack !== this._lastEmittedNativeTextTrack) {
824
- this.trigger("textTrackChange", chosenTextTrack?.track ?? null);
825
- this._lastEmittedNativeTextTrack = chosenTextTrack?.nativeTrack ?? null;
826
- }
827
- }
828
- }
829
- };
830
- this._nativeTextTracks.onremovetrack = () => {
831
- if (this._nativeTextTracks !== undefined) {
832
- const newTextTracks = createTextTracks(this._nativeTextTracks);
833
- if (areTrackArraysDifferent(this._textTracks, newTextTracks)) {
834
- this._textTracks = newTextTracks;
835
- this._setOptimalTextTrack();
836
- this.trigger("availableTextTracksChange", this.getAvailableTextTracks());
837
- const chosenTextTrack = this._getPrivateChosenTextTrack();
838
- if (chosenTextTrack?.nativeTrack !== this._lastEmittedNativeTextTrack) {
839
- this.trigger("textTrackChange", chosenTextTrack?.track ?? null);
840
- this._lastEmittedNativeTextTrack = chosenTextTrack?.nativeTrack ?? null;
841
- }
842
- }
843
- }
844
- };
845
- this._nativeTextTracks.onchange = () => {
846
- if (this._textTracks !== undefined) {
847
- for (let i = 0; i < this._textTracks.length; i++) {
848
- const { track, nativeTrack } = this._textTracks[i];
849
- if (nativeTrack.mode === "showing") {
850
- if (nativeTrack !== this._lastEmittedNativeTextTrack) {
851
- this.trigger("textTrackChange", track);
852
- this._lastEmittedNativeTextTrack = nativeTrack;
853
- }
854
- return;
855
- }
856
- }
857
- }
858
- if (this._lastEmittedNativeTextTrack !== null) {
859
- this.trigger("textTrackChange", null);
860
- this._lastEmittedNativeTextTrack = null;
861
- }
862
- return;
863
- };
864
- }
865
-
866
- if (this._nativeVideoTracks !== undefined) {
867
- this._nativeVideoTracks.onaddtrack = () => {
868
- if (this._nativeVideoTracks !== undefined) {
869
- const newVideoTracks = createVideoTracks(this._nativeVideoTracks);
870
- if (areTrackArraysDifferent(this._videoTracks, newVideoTracks)) {
871
- this._videoTracks = newVideoTracks;
872
- this._setOptimalVideoTrack();
873
- this.trigger("availableVideoTracksChange", this.getAvailableVideoTracks());
874
- const chosenVideoTrack = this._getPrivateChosenVideoTrack();
875
- if (chosenVideoTrack?.nativeTrack !== this._lastEmittedNativeVideoTrack) {
876
- this.trigger("videoTrackChange", chosenVideoTrack?.track ?? null);
877
- this._lastEmittedNativeVideoTrack = chosenVideoTrack?.nativeTrack ?? null;
878
- }
879
- }
880
- }
881
- };
882
- this._nativeVideoTracks.onremovetrack = () => {
883
- if (this._nativeVideoTracks !== undefined) {
884
- const newVideoTracks = createVideoTracks(this._nativeVideoTracks);
885
- if (areTrackArraysDifferent(this._videoTracks, newVideoTracks)) {
886
- this._videoTracks = newVideoTracks;
887
- this._setOptimalVideoTrack();
888
- this.trigger("availableVideoTracksChange", this.getAvailableVideoTracks());
889
- const chosenVideoTrack = this._getPrivateChosenVideoTrack();
890
- if (chosenVideoTrack?.nativeTrack !== this._lastEmittedNativeVideoTrack) {
891
- this.trigger("videoTrackChange", chosenVideoTrack?.track ?? null);
892
- this._lastEmittedNativeVideoTrack = chosenVideoTrack?.nativeTrack ?? null;
893
- }
894
- }
895
- }
896
- };
897
- this._nativeVideoTracks.onchange = () => {
898
- if (this._videoTracks !== undefined) {
899
- for (let i = 0; i < this._videoTracks.length; i++) {
900
- const { track, nativeTrack } = this._videoTracks[i];
901
- if (nativeTrack.selected) {
902
- if (nativeTrack !== this._lastEmittedNativeVideoTrack) {
903
- this.trigger("videoTrackChange", track);
904
- this._lastEmittedNativeVideoTrack = nativeTrack;
905
- }
906
- return;
907
- }
908
- }
909
- }
910
- if (this._lastEmittedNativeVideoTrack !== null) {
911
- this.trigger("videoTrackChange", null);
912
- this._lastEmittedNativeVideoTrack = null;
913
- }
914
- return;
915
- };
916
- }
917
- }
918
-
919
- /**
920
- * Enable an audio track (and disable all others), based on its index in the
921
- * `this._audioTracks` array.
922
- * @param {number} index}
923
- */
924
- private _enableAudioTrackFromIndex(index : number) : void {
925
- enableAudioTrack(this._audioTracks.map(({ nativeTrack }) => nativeTrack),
926
- index);
927
- }
928
- }
929
-
930
- /**
931
- * Disable all text track elements in the given array from showing.
932
- * @param {Array.<Object>} textTracks
933
- */
934
- function disableTextTracks(
935
- textTracks : Array<{ nativeTrack : TextTrack }>
936
- ) {
937
- for (let i = 0; i < textTracks.length; i++) {
938
- const { nativeTrack } = textTracks[i];
939
- nativeTrack.mode = "disabled";
940
- }
941
- }
942
-
943
- /**
944
- * Disable all text track elements in the given array from showing but one which
945
- * should stay in the same state it was before.
946
- * @param {Array.<Object>} textTracks
947
- * @param {TextTrack} track
948
- */
949
- function disableAllTextTracksBut(
950
- textTracks : Array<{ nativeTrack : TextTrack }>,
951
- track : TextTrack
952
- ) {
953
- for (let i = 0; i < textTracks.length; i++) {
954
- const { nativeTrack } = textTracks[i];
955
- if (nativeTrack !== track &&
956
- (nativeTrack.mode === "showing" || nativeTrack.mode === "hidden"))
957
- {
958
- nativeTrack.mode = "disabled";
959
- }
960
- }
961
- }
962
-
963
- /**
964
- * Disable all video track elements in the given array from showing.
965
- * Note that browser need to support that use case, which they often do not.
966
- * @param {Array.<Object>} videoTracks
967
- */
968
- function disableVideoTracks(
969
- videoTracks : Array<{ nativeTrack : ICompatVideoTrack }>
970
- ) {
971
- for (let i = 0; i < videoTracks.length; i++) {
972
- const { nativeTrack } = videoTracks[i];
973
- nativeTrack.selected = false;
974
- }
975
- }