rx-player 3.25.2 → 3.26.3-dev.2022021400

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 (925) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.github/workflows/checks.yml +99 -0
  3. package/.github/workflows/perfs.yml +22 -0
  4. package/.github/workflows/sonarcloud_analysis.yml +20 -0
  5. package/CHANGELOG.md +142 -70
  6. package/CONTRIBUTING.md +68 -3
  7. package/MAINTAINERS.md +1 -1
  8. package/README.md +121 -73
  9. package/VERSION +1 -1
  10. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +14 -9
  11. package/dist/_esm5.processed/compat/browser_compatibility_types.js +7 -19
  12. package/dist/_esm5.processed/compat/browser_detection.js +4 -12
  13. package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +2 -4
  14. package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
  15. package/dist/_esm5.processed/compat/eme/close_session.js +4 -2
  16. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +7 -20
  17. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
  18. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +18 -27
  19. package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +7 -14
  20. package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts +21 -0
  21. package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +9 -10
  22. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -12
  23. package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
  24. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +22 -25
  25. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +2 -1
  26. package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
  27. package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
  28. package/dist/_esm5.processed/compat/event_listeners.d.ts +5 -4
  29. package/dist/_esm5.processed/compat/event_listeners.js +21 -35
  30. package/dist/_esm5.processed/compat/fullscreen.js +1 -5
  31. package/dist/_esm5.processed/compat/index.d.ts +3 -4
  32. package/dist/_esm5.processed/compat/index.js +3 -4
  33. package/dist/_esm5.processed/compat/is_vtt_cue.js +1 -2
  34. package/dist/_esm5.processed/compat/make_vtt_cue.js +11 -6
  35. package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
  36. package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +3 -0
  37. package/dist/_esm5.processed/compat/play.d.ts +1 -1
  38. package/dist/_esm5.processed/compat/play.js +1 -1
  39. package/dist/_esm5.processed/compat/set_element_src.js +1 -1
  40. package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
  41. package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
  42. package/dist/_esm5.processed/config.d.ts +72 -13
  43. package/dist/_esm5.processed/config.js +73 -14
  44. package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
  45. package/dist/_esm5.processed/core/abr/abr_manager.js +47 -17
  46. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
  47. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  48. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  49. package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
  50. package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
  51. package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
  52. package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
  53. package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
  54. package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
  55. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +26 -8
  56. package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
  57. package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
  58. package/dist/_esm5.processed/core/abr/pending_requests_store.js +5 -8
  59. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +35 -52
  60. package/dist/_esm5.processed/core/abr/representation_estimator.js +114 -65
  61. package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
  62. package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
  63. package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
  64. package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
  65. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
  66. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
  67. package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
  68. package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
  69. package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
  70. package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
  71. package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
  72. package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
  73. package/dist/_esm5.processed/core/api/get_player_state.d.ts +3 -4
  74. package/dist/_esm5.processed/core/api/get_player_state.js +2 -2
  75. package/dist/_esm5.processed/core/api/index.d.ts +3 -1
  76. package/dist/_esm5.processed/core/api/index.js +2 -0
  77. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  78. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +25 -15
  79. package/dist/_esm5.processed/core/api/option_utils.d.ts +5 -5
  80. package/dist/_esm5.processed/core/api/option_utils.js +6 -40
  81. package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
  82. package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
  83. package/dist/_esm5.processed/core/api/public_api.d.ts +11 -10
  84. package/dist/_esm5.processed/core/api/public_api.js +118 -140
  85. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +7 -8
  86. package/dist/_esm5.processed/core/api/track_choice_manager.js +54 -57
  87. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +4 -6
  88. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +25 -32
  89. package/dist/_esm5.processed/core/eme/attach_media_keys.js +2 -6
  90. package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -9
  91. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
  92. package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
  93. package/dist/_esm5.processed/core/eme/create_session.js +1 -2
  94. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
  95. package/dist/_esm5.processed/core/eme/eme_manager.js +5 -7
  96. package/dist/_esm5.processed/core/eme/find_key_system.js +20 -21
  97. package/dist/_esm5.processed/core/eme/get_media_keys.js +4 -11
  98. package/dist/_esm5.processed/core/eme/get_session.js +3 -6
  99. package/dist/_esm5.processed/core/eme/init_media_keys.js +6 -14
  100. package/dist/_esm5.processed/core/eme/session_events_listener.js +12 -10
  101. package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
  102. package/dist/_esm5.processed/core/eme/types.d.ts +14 -6
  103. package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
  104. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +3 -9
  105. package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
  106. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
  107. package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +5 -8
  108. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  109. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +28 -13
  110. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +258 -65
  111. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
  112. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +13 -31
  113. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
  114. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
  115. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +1 -4
  116. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +101 -19
  117. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +239 -99
  118. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +38 -21
  119. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +13 -10
  120. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +37 -22
  121. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +129 -59
  122. package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
  123. package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
  124. package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
  125. package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
  126. package/dist/_esm5.processed/core/init/duration_updater.js +17 -8
  127. package/dist/_esm5.processed/{transports/utils/return_parsed_manifest.d.ts → core/init/emit_loaded_event.d.ts} +9 -8
  128. package/dist/_esm5.processed/core/init/emit_loaded_event.js +47 -0
  129. package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
  130. package/dist/_esm5.processed/core/init/events_generators.d.ts +3 -5
  131. package/dist/_esm5.processed/core/init/events_generators.js +5 -16
  132. package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
  133. package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +56 -22
  134. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +65 -56
  135. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +8 -7
  136. package/dist/_esm5.processed/core/init/initialize_directfile.js +31 -33
  137. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +12 -12
  138. package/dist/_esm5.processed/core/init/initialize_media_source.js +20 -18
  139. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +9 -12
  140. package/dist/_esm5.processed/core/init/load_on_media_source.js +30 -43
  141. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  142. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +11 -18
  143. package/dist/_esm5.processed/core/init/stall_avoider.d.ts +12 -7
  144. package/dist/_esm5.processed/core/init/stall_avoider.js +102 -39
  145. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  146. package/dist/_esm5.processed/core/init/stream_events_emitter/refresh_scheduled_events_list.js +2 -12
  147. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
  148. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
  149. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  150. package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
  151. package/dist/_esm5.processed/core/init/types.d.ts +11 -28
  152. package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +7 -6
  153. package/dist/_esm5.processed/core/init/update_playback_rate.js +11 -12
  154. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +5 -5
  155. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
  156. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +2 -2
  157. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +32 -8
  158. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +15 -15
  159. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +4 -2
  160. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +20 -4
  161. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +52 -7
  162. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +33 -32
  163. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +20 -4
  164. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +47 -1
  165. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +18 -4
  166. package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +17 -1
  167. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
  168. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
  169. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +81 -0
  170. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +91 -0
  171. package/dist/_esm5.processed/core/{fetchers/utils/create_request_scheduler.d.ts → segment_buffers/inventory/index.d.ts} +5 -4
  172. package/dist/_esm5.processed/core/{fetchers/manifest/get_manifest_backoff_options.d.ts → segment_buffers/inventory/index.js} +2 -11
  173. package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.d.ts → inventory/segment_inventory.d.ts} +38 -39
  174. package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.js → inventory/segment_inventory.js} +65 -28
  175. package/dist/_esm5.processed/core/{abr/cached_segment_detector.d.ts → segment_buffers/inventory/types.d.ts} +10 -9
  176. package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +16 -0
  177. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
  178. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
  179. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +18 -16
  180. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +38 -34
  181. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
  182. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -22
  183. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  184. package/dist/_esm5.processed/core/stream/events_generators.d.ts +13 -6
  185. package/dist/_esm5.processed/core/stream/events_generators.js +20 -12
  186. package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
  187. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +2 -2
  188. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
  189. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +2 -2
  190. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
  191. package/dist/_esm5.processed/core/stream/orchestrator/get_blacklisted_ranges.d.ts +1 -1
  192. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
  193. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
  194. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -41
  195. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
  196. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +12 -15
  197. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -1
  198. package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
  199. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +25 -11
  200. package/dist/_esm5.processed/core/stream/period/period_stream.js +39 -30
  201. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +45 -0
  202. package/dist/_esm5.processed/core/stream/reload_after_switch.js +48 -0
  203. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +5 -3
  204. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
  205. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +222 -0
  206. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +254 -0
  207. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
  208. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +9 -12
  209. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
  210. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +10 -18
  211. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +3 -1
  212. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +108 -6
  213. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
  214. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
  215. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  216. package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +5 -3
  217. package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +4 -8
  218. package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +7 -5
  219. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +5 -9
  220. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +12 -18
  221. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +150 -209
  222. package/dist/_esm5.processed/core/stream/types.d.ts +65 -17
  223. package/dist/_esm5.processed/errors/error_message.js +1 -1
  224. package/dist/_esm5.processed/errors/request_error.js +3 -1
  225. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +7 -5
  226. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +26 -13
  227. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +3 -6
  228. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +3 -6
  229. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +32 -36
  230. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +4 -3
  231. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +6 -2
  232. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -3
  233. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
  234. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +9 -23
  235. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  236. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +28 -29
  237. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
  238. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +12 -10
  239. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +5 -13
  240. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
  241. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +10 -3
  242. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  243. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  244. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +12 -2
  245. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +6 -1
  246. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
  247. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  248. package/dist/_esm5.processed/features/initialize_features.js +49 -47
  249. package/dist/_esm5.processed/features/list/directfile.js +1 -2
  250. package/dist/_esm5.processed/features/types.d.ts +3 -10
  251. package/dist/_esm5.processed/index.js +2 -2
  252. package/dist/_esm5.processed/manifest/adaptation.d.ts +10 -16
  253. package/dist/_esm5.processed/manifest/adaptation.js +3 -25
  254. package/dist/_esm5.processed/manifest/index.d.ts +5 -4
  255. package/dist/_esm5.processed/manifest/index.js +3 -2
  256. package/dist/_esm5.processed/manifest/manifest.d.ts +11 -11
  257. package/dist/_esm5.processed/manifest/manifest.js +14 -11
  258. package/dist/_esm5.processed/manifest/period.d.ts +4 -4
  259. package/dist/_esm5.processed/manifest/period.js +7 -16
  260. package/dist/_esm5.processed/manifest/representation.d.ts +3 -3
  261. package/dist/_esm5.processed/manifest/representation.js +3 -7
  262. package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
  263. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
  264. package/dist/_esm5.processed/manifest/types.d.ts +95 -3
  265. package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
  266. package/dist/_esm5.processed/manifest/update_periods.js +11 -7
  267. package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
  268. package/dist/_esm5.processed/manifest/utils.js +44 -0
  269. package/dist/_esm5.processed/minimal.js +2 -2
  270. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
  271. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
  272. package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
  273. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
  274. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +54 -58
  275. package/dist/_esm5.processed/parsers/images/bif.js +2 -11
  276. package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +9 -8
  277. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
  278. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  279. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
  280. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  281. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +1 -3
  282. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +8 -7
  283. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +5 -7
  284. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  285. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +1 -2
  286. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -1
  287. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +8 -12
  288. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +16 -15
  289. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -15
  290. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +19 -18
  291. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +12 -12
  292. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  293. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +11 -12
  294. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +3 -8
  295. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
  296. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +34 -21
  297. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +26 -18
  298. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
  299. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
  300. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  301. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  302. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -33
  303. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +50 -57
  304. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +10 -9
  305. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +29 -30
  306. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +26 -26
  307. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +70 -65
  308. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +24 -16
  309. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +30 -42
  310. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -36
  311. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +28 -22
  312. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
  313. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
  314. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
  315. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
  316. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
  317. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
  318. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +13 -11
  319. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +6 -6
  320. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +70 -29
  321. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +14 -5
  322. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +9 -21
  323. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
  324. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
  325. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +22 -0
  326. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +23 -0
  327. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +31 -0
  328. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
  329. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
  330. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
  331. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
  332. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -3
  333. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  334. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +6 -11
  335. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +13 -7
  336. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  337. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -13
  338. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  339. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +9 -30
  340. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
  341. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  342. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +5 -6
  343. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  344. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
  345. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  346. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +16 -6
  347. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +12 -4
  348. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
  349. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
  350. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  351. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +45 -29
  352. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
  353. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
  354. package/dist/_esm5.processed/parsers/texttracks/srt/html.js +11 -7
  355. package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +1 -2
  356. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +1 -5
  357. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
  358. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +10 -6
  359. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
  360. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +1 -2
  361. package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +2 -1
  362. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +11 -15
  363. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
  364. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
  365. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  366. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +1 -3
  367. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  368. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -7
  369. package/dist/_esm5.processed/public_types.d.ts +4 -0
  370. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -3
  371. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +3 -4
  372. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +70 -9
  373. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +12 -6
  374. package/dist/_esm5.processed/transports/dash/image_pipelines.js +34 -36
  375. package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +8 -4
  376. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +32 -36
  377. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +14 -3
  378. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +38 -40
  379. package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +3 -7
  380. package/dist/_esm5.processed/transports/dash/manifest_parser.js +115 -52
  381. package/dist/_esm5.processed/transports/dash/pipelines.js +10 -10
  382. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +14 -3
  383. package/dist/_esm5.processed/transports/dash/segment_loader.js +70 -57
  384. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +3 -4
  385. package/dist/_esm5.processed/transports/dash/segment_parser.js +15 -32
  386. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +3 -4
  387. package/dist/_esm5.processed/transports/dash/text_loader.js +28 -18
  388. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +5 -4
  389. package/dist/_esm5.processed/transports/dash/text_parser.js +58 -51
  390. package/dist/_esm5.processed/transports/local/pipelines.js +16 -14
  391. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +8 -5
  392. package/dist/_esm5.processed/transports/local/segment_loader.js +69 -28
  393. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +5 -3
  394. package/dist/_esm5.processed/transports/local/segment_parser.js +15 -27
  395. package/dist/_esm5.processed/transports/local/text_parser.d.ts +9 -5
  396. package/dist/_esm5.processed/transports/local/text_parser.js +54 -53
  397. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +5 -5
  398. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +7 -9
  399. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +82 -138
  400. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +3 -6
  401. package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.d.ts +1 -4
  402. package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +1 -4
  403. package/dist/_esm5.processed/transports/smooth/pipelines.js +149 -155
  404. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +6 -3
  405. package/dist/_esm5.processed/transports/smooth/segment_loader.js +150 -107
  406. package/dist/_esm5.processed/transports/smooth/utils.d.ts +9 -1
  407. package/dist/_esm5.processed/transports/smooth/utils.js +11 -1
  408. package/dist/_esm5.processed/transports/types.d.ts +533 -376
  409. package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
  410. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
  411. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +45 -32
  412. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +4 -4
  413. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +16 -5
  414. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
  415. package/dist/_esm5.processed/transports/utils/parse_text_track.js +8 -12
  416. package/dist/_esm5.processed/utils/array_find.d.ts +1 -1
  417. package/dist/_esm5.processed/utils/array_find.js +0 -5
  418. package/dist/_esm5.processed/utils/array_find_index.d.ts +1 -1
  419. package/dist/_esm5.processed/utils/array_find_index.js +0 -5
  420. package/dist/_esm5.processed/utils/assert.d.ts +1 -1
  421. package/dist/_esm5.processed/utils/assert.js +3 -3
  422. package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +30 -0
  423. package/dist/_esm5.processed/utils/cancellable_sleep.js +42 -0
  424. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  425. package/dist/_esm5.processed/utils/cast_to_observable.js +11 -6
  426. package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
  427. package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
  428. package/dist/_esm5.processed/utils/filter_map.js +1 -2
  429. package/dist/_esm5.processed/utils/flat_map.js +0 -6
  430. package/dist/_esm5.processed/utils/id_generator.d.ts +2 -1
  431. package/dist/_esm5.processed/utils/id_generator.js +2 -1
  432. package/dist/_esm5.processed/utils/languages/normalize.js +1 -3
  433. package/dist/_esm5.processed/utils/ranges.js +1 -2
  434. package/dist/_esm5.processed/utils/reference.d.ts +108 -0
  435. package/dist/_esm5.processed/utils/reference.js +137 -0
  436. package/dist/_esm5.processed/utils/request/fetch.d.ts +64 -27
  437. package/dist/_esm5.processed/utils/request/fetch.js +95 -113
  438. package/dist/_esm5.processed/utils/request/index.d.ts +3 -3
  439. package/dist/_esm5.processed/utils/request/xhr.d.ts +64 -47
  440. package/dist/_esm5.processed/utils/request/xhr.js +49 -43
  441. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +39 -0
  442. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +58 -0
  443. package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
  444. package/dist/_esm5.processed/utils/task_canceller.d.ts +240 -0
  445. package/dist/_esm5.processed/utils/task_canceller.js +289 -0
  446. package/dist/mpd-parser.wasm +0 -0
  447. package/dist/rx-player.d.ts +1 -15
  448. package/dist/rx-player.js +8775 -6211
  449. package/dist/rx-player.min.d.ts +1 -15
  450. package/dist/rx-player.min.js +1 -1
  451. package/jest.config.js +28 -4
  452. package/package.json +122 -106
  453. package/scripts/README.md +11 -0
  454. package/scripts/build/constants.d.ts +50 -0
  455. package/scripts/build/generate_build.js +197 -0
  456. package/scripts/build/templates/experimental/features/index.d.ts +16 -0
  457. package/scripts/build/templates/experimental/features/index.js +16 -0
  458. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +18 -0
  459. package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +18 -0
  460. package/scripts/build/templates/experimental/tools/index.d.ts +16 -0
  461. package/scripts/build/templates/experimental/tools/index.js +16 -0
  462. package/scripts/build/templates/features/index.d.ts +16 -0
  463. package/scripts/build/templates/features/index.js +16 -0
  464. package/scripts/build/templates/logger/index.d.ts +17 -0
  465. package/scripts/build/templates/logger/index.js +17 -0
  466. package/scripts/build/templates/minimal/index.d.ts +17 -0
  467. package/scripts/build/templates/minimal/index.js +17 -0
  468. package/scripts/build/templates/tools/TextTrackRenderer.d.ts +18 -0
  469. package/scripts/build/templates/tools/TextTrackRenderer.js +18 -0
  470. package/scripts/build/templates/tools/index.d.ts +16 -0
  471. package/scripts/build/templates/tools/index.js +16 -0
  472. package/scripts/build/templates/tools/string-utils.d.ts +18 -0
  473. package/{dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.d.ts → scripts/build/templates/tools/string-utils.js} +3 -11
  474. package/scripts/build/templates/types/index.d.ts +16 -0
  475. package/scripts/build/templates/types/index.js +15 -0
  476. package/scripts/check_nodejs_import_compatibility.js +35 -1
  477. package/scripts/doc-generator/construct_table_of_contents.js +31 -24
  478. package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
  479. package/scripts/doc-generator/create_documentation.js +331 -0
  480. package/scripts/doc-generator/create_documentation_page.js +209 -0
  481. package/scripts/doc-generator/create_page.js +117 -35
  482. package/scripts/doc-generator/generate_header_html.js +147 -0
  483. package/scripts/doc-generator/generate_page_html.js +115 -0
  484. package/scripts/doc-generator/generate_page_list_html.js +92 -0
  485. package/scripts/doc-generator/generate_sidebar_html.js +85 -0
  486. package/scripts/doc-generator/get_search_data_for_content.js +137 -0
  487. package/scripts/doc-generator/index.js +14 -15
  488. package/scripts/doc-generator/parse_doc_configs.js +327 -0
  489. package/scripts/doc-generator/scripts/lunr.js +10 -0
  490. package/scripts/doc-generator/scripts/script.js +451 -0
  491. package/scripts/doc-generator/styles/style.css +712 -144
  492. package/scripts/doc-generator/utils.js +74 -0
  493. package/scripts/fast_demo_build.js +143 -0
  494. package/scripts/generate_demo_list.js +3 -3
  495. package/scripts/generate_documentation_list.js +9 -5
  496. package/scripts/generate_full_demo.js +108 -10
  497. package/scripts/generate_standalone_demo.js +15 -8
  498. package/scripts/launch_static_server.js +139 -56
  499. package/scripts/list-npm-scripts.js +99 -0
  500. package/scripts/run_standalone_demo.js +1 -0
  501. package/scripts/{run_full_demo.js → start_demo_web_server.js} +16 -3
  502. package/scripts/update-version +8 -1
  503. package/scripts/{display_webpack_errors.js → utils/display_webpack_errors.js} +0 -4
  504. package/scripts/{get_human_readable_hours.js → utils/get_human_readable_hours.js} +0 -4
  505. package/sonar-project.properties +2 -1
  506. package/src/compat/__tests__/add_text_track.test.ts +12 -11
  507. package/src/compat/__tests__/browser_compatibility_types.test.ts +69 -60
  508. package/src/compat/__tests__/browser_version.test.ts +3 -1
  509. package/src/compat/__tests__/change_source_buffer_type.test.ts +3 -3
  510. package/src/compat/__tests__/clear_element_src.test.ts +62 -36
  511. package/src/compat/__tests__/fullscreen.test.ts +154 -139
  512. package/src/compat/__tests__/is_offline.test.ts +20 -12
  513. package/src/compat/__tests__/is_vtt_cue.test.ts +14 -10
  514. package/src/compat/__tests__/make_vtt_cue.test.ts +16 -15
  515. package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +30 -48
  516. package/src/compat/__tests__/play.test.ts +2 -2
  517. package/src/compat/__tests__/remove_cue.test.ts +5 -5
  518. package/src/compat/__tests__/set_element_src.test.ts +3 -3
  519. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +14 -6
  520. package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
  521. package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
  522. package/src/compat/browser_compatibility_types.ts +38 -36
  523. package/src/compat/browser_detection.ts +17 -12
  524. package/src/compat/can_rely_on_video_visibility_and_size.ts +3 -3
  525. package/src/compat/clear_element_src.ts +8 -6
  526. package/src/compat/eme/close_session.ts +7 -6
  527. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +22 -26
  528. package/src/compat/eme/custom_media_keys/index.ts +32 -38
  529. package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +16 -19
  530. package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +39 -9
  531. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +10 -12
  532. package/src/compat/eme/custom_media_keys/types.ts +1 -1
  533. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +27 -30
  534. package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +6 -2
  535. package/src/compat/eme/generate_key_request.ts +1 -1
  536. package/src/compat/eme/load_session.ts +4 -6
  537. package/src/compat/event_listeners.ts +30 -46
  538. package/src/compat/fullscreen.ts +2 -4
  539. package/src/compat/index.ts +2 -6
  540. package/src/compat/is_vtt_cue.ts +1 -2
  541. package/src/compat/make_vtt_cue.ts +10 -8
  542. package/src/compat/on_height_width_change.ts +4 -6
  543. package/src/compat/patch_webkit_source_buffer.ts +11 -5
  544. package/src/compat/play.ts +1 -1
  545. package/src/compat/set_element_src.ts +1 -1
  546. package/src/compat/when_loaded_metadata.ts +1 -1
  547. package/src/compat/when_media_source_open.ts +1 -1
  548. package/src/config.ts +79 -14
  549. package/src/core/abr/README.md +7 -7
  550. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  551. package/src/core/abr/abr_manager.ts +62 -21
  552. package/src/core/abr/bandwidth_estimator.ts +1 -1
  553. package/src/core/abr/buffer_based_chooser.ts +85 -18
  554. package/src/core/abr/get_buffer_levels.ts +3 -0
  555. package/src/core/abr/guess_based_chooser.ts +308 -0
  556. package/src/core/abr/index.ts +7 -3
  557. package/src/core/abr/last_estimate_storage.ts +79 -0
  558. package/src/core/abr/network_analyzer.ts +75 -32
  559. package/src/core/abr/pending_requests_store.ts +72 -40
  560. package/src/core/abr/representation_estimator.ts +205 -135
  561. package/src/core/abr/representation_score_calculator.ts +33 -26
  562. package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
  563. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
  564. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
  565. package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
  566. package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
  567. package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
  568. package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
  569. package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
  570. package/src/core/api/README.md +4 -3
  571. package/src/core/api/__tests__/get_player_state.test.ts +58 -110
  572. package/src/core/api/__tests__/media_element_track_choice_manager.test.ts +35 -31
  573. package/src/core/api/__tests__/option_utils.test.ts +104 -17
  574. package/src/core/api/emit_seek_events.ts +21 -20
  575. package/src/core/api/get_player_state.ts +5 -7
  576. package/src/core/api/index.ts +8 -3
  577. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  578. package/src/core/api/option_utils.ts +7 -7
  579. package/src/core/api/playback_observer.ts +768 -0
  580. package/src/core/api/public_api.ts +128 -130
  581. package/src/core/api/track_choice_manager.ts +82 -78
  582. package/src/core/eme/__tests__/__global__/get_license.test.ts +14 -9
  583. package/src/core/eme/__tests__/__global__/init_data.test.ts +12 -12
  584. package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +3 -1
  585. package/src/core/eme/__tests__/__global__/media_keys.test.ts +6 -8
  586. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +18 -12
  587. package/src/core/eme/__tests__/__global__/utils.ts +21 -17
  588. package/src/core/eme/__tests__/clean_old_loaded_sessions.test.ts +4 -4
  589. package/src/core/eme/__tests__/clean_old_stored_persistent_info.test.ts +3 -2
  590. package/src/core/eme/__tests__/init_media_keys.test.ts +10 -66
  591. package/src/core/eme/attach_media_keys.ts +2 -1
  592. package/src/core/eme/check_key_statuses.ts +24 -13
  593. package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
  594. package/src/core/eme/clear_eme_session.ts +6 -1
  595. package/src/core/eme/create_session.ts +3 -5
  596. package/src/core/eme/dispose_media_keys.ts +2 -2
  597. package/src/core/eme/eme_manager.ts +10 -12
  598. package/src/core/eme/find_key_system.ts +17 -17
  599. package/src/core/eme/get_media_keys.ts +4 -6
  600. package/src/core/eme/get_session.ts +2 -4
  601. package/src/core/eme/init_media_keys.ts +9 -9
  602. package/src/core/eme/session_events_listener.ts +21 -18
  603. package/src/core/eme/set_server_certificate.ts +9 -5
  604. package/src/core/eme/types.ts +17 -6
  605. package/src/core/eme/utils/close_session.ts +7 -7
  606. package/src/core/eme/utils/is_session_usable.ts +1 -1
  607. package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
  608. package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
  609. package/src/core/fetchers/index.ts +2 -2
  610. package/src/core/fetchers/manifest/manifest_fetcher.ts +256 -109
  611. package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +4 -5
  612. package/src/core/fetchers/segment/index.ts +2 -2
  613. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +48 -51
  614. package/src/core/fetchers/segment/prioritizer.ts +82 -82
  615. package/src/core/fetchers/segment/segment_fetcher.ts +396 -177
  616. package/src/core/fetchers/segment/segment_fetcher_creator.ts +56 -39
  617. package/src/core/fetchers/utils/try_urls_with_backoff.ts +123 -91
  618. package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -1
  619. package/src/core/init/create_eme_manager.ts +1 -1
  620. package/src/core/init/create_media_source.ts +5 -7
  621. package/src/core/init/create_stream_playback_observer.ts +88 -0
  622. package/src/core/init/duration_updater.ts +21 -18
  623. package/src/core/init/emit_loaded_event.ts +71 -0
  624. package/src/core/init/end_of_stream.ts +2 -4
  625. package/src/core/init/events_generators.ts +4 -5
  626. package/src/core/init/get_initial_time.ts +0 -1
  627. package/src/core/init/initial_seek_and_play.ts +128 -96
  628. package/src/core/init/initialize_directfile.ts +49 -57
  629. package/src/core/init/initialize_media_source.ts +31 -31
  630. package/src/core/init/load_on_media_source.ts +70 -74
  631. package/src/core/init/manifest_update_scheduler.ts +18 -19
  632. package/src/core/init/stall_avoider.ts +142 -51
  633. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  634. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
  635. package/src/core/init/stream_events_emitter/types.ts +2 -2
  636. package/src/core/init/throw_on_media_error.ts +1 -1
  637. package/src/core/init/types.ts +15 -28
  638. package/src/core/init/update_playback_rate.ts +17 -18
  639. package/src/core/segment_buffers/README.md +3 -3
  640. package/src/core/segment_buffers/garbage_collector.ts +17 -13
  641. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +46 -11
  642. package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +21 -18
  643. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +92 -18
  644. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +33 -32
  645. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +82 -6
  646. package/src/core/segment_buffers/implementations/types.ts +23 -4
  647. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
  648. package/src/core/segment_buffers/index.ts +6 -1
  649. package/src/core/segment_buffers/inventory/buffered_history.ts +127 -0
  650. package/src/core/segment_buffers/inventory/index.ts +28 -0
  651. package/src/core/segment_buffers/{segment_inventory.ts → inventory/segment_inventory.ts} +85 -52
  652. package/{dist/_esm5.processed/manifest/are_same_content.js → src/core/segment_buffers/inventory/types.ts} +19 -11
  653. package/src/core/segment_buffers/segment_buffers_store.ts +4 -13
  654. package/src/core/stream/adaptation/adaptation_stream.ts +90 -65
  655. package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
  656. package/src/core/stream/adaptation/index.ts +2 -2
  657. package/src/core/stream/events_generators.ts +31 -7
  658. package/src/core/stream/index.ts +2 -2
  659. package/src/core/stream/orchestrator/active_period_emitter.ts +9 -11
  660. package/src/core/stream/orchestrator/are_streams_complete.ts +4 -6
  661. package/src/core/stream/orchestrator/get_blacklisted_ranges.ts +1 -1
  662. package/src/core/stream/orchestrator/index.ts +2 -2
  663. package/src/core/stream/orchestrator/stream_orchestrator.ts +70 -62
  664. package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
  665. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  666. package/src/core/stream/period/index.ts +2 -2
  667. package/src/core/stream/period/period_stream.ts +126 -85
  668. package/src/core/stream/reload_after_switch.ts +70 -0
  669. package/src/core/stream/representation/append_segment_to_buffer.ts +21 -17
  670. package/src/core/stream/representation/downloading_queue.ts +502 -0
  671. package/src/core/stream/representation/force_garbage_collection.ts +20 -29
  672. package/src/core/stream/representation/get_buffer_status.ts +15 -13
  673. package/src/core/stream/representation/get_needed_segments.ts +135 -6
  674. package/src/core/stream/representation/get_segment_priority.ts +8 -10
  675. package/src/core/stream/representation/index.ts +2 -2
  676. package/src/core/stream/representation/push_init_segment.ts +19 -16
  677. package/src/core/stream/representation/push_media_segment.ts +21 -17
  678. package/src/core/stream/representation/representation_stream.ts +238 -307
  679. package/src/core/stream/types.ts +91 -39
  680. package/src/errors/request_error.ts +4 -1
  681. package/src/experimental/features/__tests__/dash_wasm.test.ts +2 -0
  682. package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +47 -30
  683. package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +1 -2
  684. package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +41 -72
  685. package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +20 -13
  686. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -7
  687. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +13 -27
  688. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +38 -37
  689. package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -1
  690. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +56 -47
  691. package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
  692. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +6 -4
  693. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +3 -3
  694. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +5 -7
  695. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +7 -7
  696. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +1 -0
  697. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +12 -4
  698. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  699. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +12 -2
  700. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +6 -1
  701. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  702. package/src/features/__tests__/initialize_features.test.ts +207 -110
  703. package/src/features/initialize_features.ts +40 -37
  704. package/src/features/list/__tests__/bif_parser.test.ts +2 -0
  705. package/src/features/list/__tests__/dash.test.ts +2 -0
  706. package/src/features/list/__tests__/directfile.test.ts +2 -0
  707. package/src/features/list/__tests__/eme.test.ts +2 -0
  708. package/src/features/list/__tests__/html_sami_parser.test.ts +2 -0
  709. package/src/features/list/__tests__/html_srt_parser.test.ts +2 -0
  710. package/src/features/list/__tests__/html_text_buffer.test.ts +2 -0
  711. package/src/features/list/__tests__/html_ttml_parser.test.ts +2 -0
  712. package/src/features/list/__tests__/html_vtt_parser.test.ts +2 -0
  713. package/src/features/list/__tests__/image_buffer.test.ts +2 -0
  714. package/src/features/list/__tests__/native_sami_parser.test.ts +2 -0
  715. package/src/features/list/__tests__/native_srt_parser.test.ts +2 -0
  716. package/src/features/list/__tests__/native_text_buffer.test.ts +2 -0
  717. package/src/features/list/__tests__/native_ttml_parser.test.ts +2 -0
  718. package/src/features/list/__tests__/native_vtt_parser.test.ts +2 -0
  719. package/src/features/list/__tests__/smooth.test.ts +2 -0
  720. package/src/features/types.ts +3 -11
  721. package/src/index.ts +2 -2
  722. package/src/manifest/__tests__/adaptation.test.ts +0 -79
  723. package/src/manifest/__tests__/manifest.test.ts +68 -67
  724. package/src/manifest/__tests__/period.test.ts +142 -118
  725. package/src/manifest/__tests__/update_period_in_place.test.ts +85 -62
  726. package/src/manifest/__tests__/update_periods.test.ts +33 -12
  727. package/src/manifest/adaptation.ts +17 -51
  728. package/src/manifest/index.ts +15 -2
  729. package/src/manifest/manifest.ts +31 -18
  730. package/src/manifest/period.ts +13 -20
  731. package/src/manifest/representation.ts +3 -3
  732. package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
  733. package/src/manifest/representation_index/static.ts +1 -0
  734. package/src/manifest/representation_index/types.ts +43 -21
  735. package/src/manifest/types.ts +97 -3
  736. package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
  737. package/src/minimal.ts +3 -2
  738. package/src/parsers/containers/isobmff/get_box.ts +35 -8
  739. package/src/parsers/containers/isobmff/read.ts +32 -5
  740. package/src/parsers/containers/isobmff/utils.ts +52 -47
  741. package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +7 -4
  742. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
  743. package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +29 -6
  744. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  745. package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +5 -8
  746. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
  747. package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
  748. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  749. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
  750. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  751. package/src/parsers/manifest/dash/common/indexes/base.ts +11 -9
  752. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +5 -2
  753. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +10 -10
  754. package/src/parsers/manifest/dash/common/indexes/list.ts +20 -17
  755. package/src/parsers/manifest/dash/common/indexes/template.ts +30 -22
  756. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  757. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
  758. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +63 -27
  759. package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
  760. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  761. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  762. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +64 -73
  763. package/src/parsers/manifest/dash/common/parse_mpd.ts +33 -24
  764. package/src/parsers/manifest/dash/common/parse_periods.ts +115 -87
  765. package/src/parsers/manifest/dash/common/parse_representation_index.ts +88 -80
  766. package/src/parsers/manifest/dash/common/parse_representations.ts +61 -64
  767. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
  768. package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +1 -1
  769. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
  770. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
  771. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
  772. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
  773. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
  774. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
  775. package/src/parsers/manifest/dash/node_parser_types.ts +66 -29
  776. package/src/parsers/manifest/dash/parsers_types.ts +11 -5
  777. package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +4 -2
  778. package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
  779. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +43 -0
  780. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
  781. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +41 -8
  782. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
  783. package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +22 -1
  784. package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +40 -1
  785. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +10 -19
  786. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
  787. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
  788. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +25 -0
  789. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +26 -0
  790. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +34 -0
  791. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
  792. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
  793. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
  794. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
  795. package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -1
  796. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +31 -1
  797. package/src/parsers/manifest/local/representation_index.ts +2 -0
  798. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -5
  799. package/src/parsers/manifest/smooth/create_parser.ts +24 -22
  800. package/src/parsers/manifest/smooth/representation_index.ts +17 -15
  801. package/src/parsers/manifest/types.ts +28 -28
  802. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +39 -36
  803. package/src/parsers/manifest/utils/check_manifest_ids.ts +2 -2
  804. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +16 -7
  805. package/src/parsers/manifest/utils/index_helpers.ts +22 -12
  806. package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
  807. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  808. package/src/parsers/texttracks/sami/html.ts +1 -1
  809. package/src/parsers/texttracks/sami/native.ts +1 -1
  810. package/src/parsers/texttracks/srt/html.ts +16 -10
  811. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
  812. package/src/parsers/texttracks/ttml/nodes.ts +2 -1
  813. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -6
  814. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  815. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  816. package/src/public_types.ts +18 -0
  817. package/src/transports/README.md +8 -4
  818. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +68 -27
  819. package/src/transports/dash/image_pipelines.ts +58 -45
  820. package/src/transports/dash/init_segment_loader.ts +68 -45
  821. package/src/transports/dash/low_latency_segment_loader.ts +52 -68
  822. package/src/transports/dash/manifest_parser.ts +148 -78
  823. package/src/transports/dash/pipelines.ts +10 -10
  824. package/src/transports/dash/segment_loader.ts +117 -90
  825. package/src/transports/dash/segment_parser.ts +46 -45
  826. package/src/transports/dash/text_loader.ts +55 -34
  827. package/src/transports/dash/text_parser.ts +91 -78
  828. package/src/transports/local/pipelines.ts +19 -21
  829. package/src/transports/local/segment_loader.ts +86 -40
  830. package/src/transports/local/segment_parser.ts +31 -38
  831. package/src/transports/local/text_parser.ts +82 -74
  832. package/src/transports/metaplaylist/manifest_loader.ts +17 -15
  833. package/src/transports/metaplaylist/pipelines.ts +158 -181
  834. package/src/transports/smooth/extract_timings_infos.ts +1 -1
  835. package/src/transports/smooth/isobmff/create_boxes.ts +5 -5
  836. package/src/transports/smooth/isobmff/create_video_init_segment.ts +1 -4
  837. package/src/transports/smooth/pipelines.ts +206 -187
  838. package/src/transports/smooth/segment_loader.ts +138 -87
  839. package/src/transports/smooth/utils.ts +13 -0
  840. package/src/transports/types.ts +639 -439
  841. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +24 -24
  842. package/src/transports/utils/__tests__/infer_segment_container.test.ts +31 -30
  843. package/src/transports/utils/call_custom_manifest_loader.ts +83 -60
  844. package/src/transports/utils/generate_manifest_loader.ts +34 -12
  845. package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
  846. package/src/transports/utils/parse_text_track.ts +4 -2
  847. package/src/typings/globals.d.ts +57 -40
  848. package/src/utils/__tests__/array_find.test.ts +5 -5
  849. package/src/utils/__tests__/array_find_index.test.ts +6 -5
  850. package/src/utils/__tests__/array_includes.test.ts +1 -0
  851. package/src/utils/__tests__/assert.test.ts +38 -21
  852. package/src/utils/__tests__/assert_unreachable.test.ts +8 -7
  853. package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
  854. package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
  855. package/src/utils/__tests__/event_emitter.test.ts +1 -1
  856. package/src/utils/__tests__/flat_map.test.ts +18 -6
  857. package/src/utils/__tests__/id_generator.test.ts +3 -3
  858. package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
  859. package/src/utils/__tests__/promise.test.ts +1 -1
  860. package/src/utils/__tests__/starts_with.test.ts +2 -0
  861. package/src/utils/array_find.ts +11 -3
  862. package/src/utils/array_find_index.ts +11 -3
  863. package/src/utils/assert.ts +5 -2
  864. package/src/utils/cancellable_sleep.ts +51 -0
  865. package/src/utils/cast_to_observable.ts +12 -13
  866. package/src/utils/concat_map_latest.ts +2 -4
  867. package/src/utils/defer_subscriptions.ts +1 -1
  868. package/src/utils/filter_map.ts +2 -4
  869. package/src/utils/flat_map.ts +10 -8
  870. package/src/utils/id_generator.ts +2 -1
  871. package/src/utils/object_assign.ts +1 -1
  872. package/src/utils/reference.ts +234 -0
  873. package/src/utils/request/fetch.ts +175 -147
  874. package/src/utils/request/index.ts +6 -6
  875. package/src/utils/request/xhr.ts +144 -128
  876. package/src/utils/rx-from_cancellable_promise.ts +66 -0
  877. package/src/utils/rx-retry_with_backoff.ts +2 -4
  878. package/src/utils/task_canceller.ts +326 -0
  879. package/src/utils/uniq.ts +1 -1
  880. package/tsconfig.json +5 -1
  881. package/tsconfig.modules.json +9 -3
  882. package/dist/_esm5.processed/compat/is_playback_stuck.d.ts +0 -28
  883. package/dist/_esm5.processed/compat/is_playback_stuck.js +0 -33
  884. package/dist/_esm5.processed/core/abr/cached_segment_detector.js +0 -60
  885. package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
  886. package/dist/_esm5.processed/core/abr/create_filters.js +0 -52
  887. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  888. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  889. package/dist/_esm5.processed/core/api/clock.d.ts +0 -129
  890. package/dist/_esm5.processed/core/api/clock.js +0 -335
  891. package/dist/_esm5.processed/core/fetchers/manifest/get_manifest_backoff_options.js +0 -38
  892. package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.d.ts +0 -98
  893. package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.js +0 -124
  894. package/dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.js +0 -32
  895. package/dist/_esm5.processed/core/fetchers/utils/create_request_scheduler.js +0 -38
  896. package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
  897. package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -56
  898. package/dist/_esm5.processed/core/stream/utils.d.ts +0 -60
  899. package/dist/_esm5.processed/core/stream/utils.js +0 -70
  900. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
  901. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
  902. package/dist/_esm5.processed/transports/utils/return_parsed_manifest.js +0 -32
  903. package/scripts/clean-up_builds +0 -18
  904. package/scripts/doc-generator/construct_html.js +0 -135
  905. package/scripts/doc-generator/construct_page_list.js +0 -120
  906. package/scripts/doc-generator/create_for_dir.js +0 -151
  907. package/scripts/doc-generator/get_files_to_convert.js +0 -71
  908. package/scripts/doc-generator/mkdir_parent.js +0 -21
  909. package/scripts/doc-generator/read_title_from_md.js +0 -22
  910. package/scripts/doc-generator/remove_toc_from_md.js +0 -20
  911. package/scripts/generate_builds +0 -224
  912. package/scripts/list-npm-scripts-info.js +0 -39
  913. package/src/compat/is_playback_stuck.ts +0 -42
  914. package/src/core/abr/cached_segment_detector.ts +0 -86
  915. package/src/core/abr/create_filters.ts +0 -59
  916. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
  917. package/src/core/api/clock.ts +0 -497
  918. package/src/core/fetchers/manifest/get_manifest_backoff_options.ts +0 -50
  919. package/src/core/fetchers/segment/create_segment_loader.ts +0 -251
  920. package/src/core/fetchers/segment/get_segment_backoff_options.ts +0 -45
  921. package/src/core/fetchers/utils/create_request_scheduler.ts +0 -56
  922. package/src/core/init/create_stream_clock.ts +0 -94
  923. package/src/core/stream/utils.ts +0 -97
  924. package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
  925. package/src/transports/utils/return_parsed_manifest.ts +0 -47
@@ -43,8 +43,7 @@ var __assign = (this && this.__assign) || function () {
43
43
  * This file defines the public API for the RxPlayer.
44
44
  * It also starts the different sub-parts of the player on various API calls.
45
45
  */
46
- import { BehaviorSubject, combineLatest as observableCombineLatest, concat as observableConcat, connectable, EMPTY, merge as observableMerge, of as observableOf, ReplaySubject, Subject, } from "rxjs";
47
- import { distinctUntilChanged, filter, map, mapTo, mergeMap, mergeMapTo, share, shareReplay, skipWhile, startWith, switchMapTo, take, takeUntil, } from "rxjs/operators";
46
+ import { combineLatest as observableCombineLatest, concat as observableConcat, connectable, distinctUntilChanged, EMPTY, filter, map, merge as observableMerge, mergeMap, of as observableOf, ReplaySubject, share, shareReplay, skipWhile, startWith, Subject, switchMap, take, takeUntil, } from "rxjs";
48
47
  import { events, exitFullscreen, isFullscreen, requestFullscreen, } from "../../compat";
49
48
  /* eslint-disable-next-line max-len */
50
49
  import canRelyOnVideoVisibilityAndSize from "../../compat/can_rely_on_video_visibility_and_size";
@@ -56,22 +55,22 @@ import Manifest from "../../manifest";
56
55
  import areArraysOfNumbersEqual from "../../utils/are_arrays_of_numbers_equal";
57
56
  import EventEmitter, { fromEvent, } from "../../utils/event_emitter";
58
57
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
59
- import noop from "../../utils/noop";
60
58
  import objectAssign from "../../utils/object_assign";
61
59
  import PPromise from "../../utils/promise";
62
60
  import { getLeftSizeOfRange, getPlayedSizeOfRange, getSizeOfRange, } from "../../utils/ranges";
61
+ import createSharedReference from "../../utils/reference";
63
62
  import warnOnce from "../../utils/warn_once";
64
63
  import { clearEMESession, disposeEME, getCurrentKeySystem, } from "../eme";
65
64
  import { ManifestFetcher, SegmentFetcherCreator, } from "../fetchers";
66
65
  import initializeMediaSourcePlayback from "../init";
67
- import createClock from "./clock";
68
66
  import emitSeekEvents from "./emit_seek_events";
69
67
  import getPlayerState, { PLAYER_STATES, } from "./get_player_state";
70
68
  import { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, } from "./option_utils";
69
+ import PlaybackObserver from "./playback_observer";
71
70
  import TrackChoiceManager from "./track_choice_manager";
72
71
  /* eslint-disable @typescript-eslint/naming-convention */
73
72
  var DEFAULT_UNMUTED_VOLUME = config.DEFAULT_UNMUTED_VOLUME;
74
- var isActive = events.isActive, isVideoVisible = events.isVideoVisible, onEnded$ = events.onEnded$, onFullscreenChange$ = events.onFullscreenChange$, onPlayPause$ = events.onPlayPause$, onPictureInPictureEvent$ = events.onPictureInPictureEvent$, onSeeking$ = events.onSeeking$, onTextTrackChanges$ = events.onTextTrackChanges$, videoWidth$ = events.videoWidth$;
73
+ var isPageActive = events.isPageActive, isVideoVisible = events.isVideoVisible, onEnded$ = events.onEnded$, onFullscreenChange$ = events.onFullscreenChange$, onPlayPause$ = events.onPlayPause$, onPictureInPictureEvent$ = events.onPictureInPictureEvent$, onSeeking$ = events.onSeeking$, onTextTrackChanges$ = events.onTextTrackChanges$, videoWidth$ = events.videoWidth$;
75
74
  /**
76
75
  * @class Player
77
76
  * @extends EventEmitter
@@ -89,7 +88,7 @@ var Player = /** @class */ (function (_super) {
89
88
  // Workaround to support Firefox autoplay on FF 42.
90
89
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
91
90
  videoElement.preload = "auto";
92
- _this.version = /* PLAYER_VERSION */ "3.25.2";
91
+ _this.version = /* PLAYER_VERSION */ "3.26.3-dev.2022021400";
93
92
  _this.log = log;
94
93
  _this.state = "STOPPED";
95
94
  _this.videoElement = videoElement;
@@ -131,24 +130,24 @@ var Player = /** @class */ (function (_super) {
131
130
  return true;
132
131
  }))
133
132
  .subscribe(function (x) { return _this._priv_onNativeTextTracksNext(x); });
134
- _this._priv_playing$ = new ReplaySubject(1);
135
- _this._priv_speed$ = new BehaviorSubject(videoElement.playbackRate);
133
+ _this._priv_isPlaying = createSharedReference(false);
134
+ _this._priv_speed = createSharedReference(videoElement.playbackRate);
136
135
  _this._priv_preferTrickModeTracks = false;
137
- _this._priv_contentLock$ = new BehaviorSubject(false);
136
+ _this._priv_contentLock = createSharedReference(false);
138
137
  _this._priv_bufferOptions = {
139
- wantedBufferAhead$: new BehaviorSubject(wantedBufferAhead),
140
- maxBufferAhead$: new BehaviorSubject(maxBufferAhead),
141
- maxBufferBehind$: new BehaviorSubject(maxBufferBehind),
138
+ wantedBufferAhead: createSharedReference(wantedBufferAhead),
139
+ maxBufferAhead: createSharedReference(maxBufferAhead),
140
+ maxBufferBehind: createSharedReference(maxBufferBehind),
142
141
  };
143
142
  _this._priv_bitrateInfos = {
144
143
  lastBitrates: { audio: initialAudioBitrate,
145
144
  video: initialVideoBitrate },
146
- minAutoBitrates: { audio: new BehaviorSubject(minAudioBitrate),
147
- video: new BehaviorSubject(minVideoBitrate) },
148
- maxAutoBitrates: { audio: new BehaviorSubject(maxAudioBitrate),
149
- video: new BehaviorSubject(maxVideoBitrate) },
150
- manualBitrates: { audio: new BehaviorSubject(-1),
151
- video: new BehaviorSubject(-1) },
145
+ minAutoBitrates: { audio: createSharedReference(minAudioBitrate),
146
+ video: createSharedReference(minVideoBitrate) },
147
+ maxAutoBitrates: { audio: createSharedReference(maxAudioBitrate),
148
+ video: createSharedReference(maxVideoBitrate) },
149
+ manualBitrates: { audio: createSharedReference(-1),
150
+ video: createSharedReference(-1) },
152
151
  };
153
152
  _this._priv_throttleWhenHidden = throttleWhenHidden;
154
153
  _this._priv_throttleVideoBitrateWhenHidden = throttleVideoBitrateWhenHidden;
@@ -231,20 +230,20 @@ var Player = /** @class */ (function (_super) {
231
230
  // free Observables linked to the Player instance
232
231
  this._priv_destroy$.next();
233
232
  this._priv_destroy$.complete();
234
- // Complete all subjects
235
- this._priv_playing$.complete();
236
- this._priv_speed$.complete();
237
- this._priv_contentLock$.complete();
238
- this._priv_bufferOptions.wantedBufferAhead$.complete();
239
- this._priv_bufferOptions.maxBufferAhead$.complete();
240
- this._priv_bufferOptions.maxBufferBehind$.complete();
233
+ // Complete all subjects and references
241
234
  this._priv_pictureInPictureEvent$.complete();
242
- this._priv_bitrateInfos.manualBitrates.video.complete();
243
- this._priv_bitrateInfos.manualBitrates.audio.complete();
244
- this._priv_bitrateInfos.minAutoBitrates.video.complete();
245
- this._priv_bitrateInfos.minAutoBitrates.audio.complete();
246
- this._priv_bitrateInfos.maxAutoBitrates.video.complete();
247
- this._priv_bitrateInfos.maxAutoBitrates.audio.complete();
235
+ this._priv_isPlaying.finish();
236
+ this._priv_speed.finish();
237
+ this._priv_contentLock.finish();
238
+ this._priv_bufferOptions.wantedBufferAhead.finish();
239
+ this._priv_bufferOptions.maxBufferAhead.finish();
240
+ this._priv_bufferOptions.maxBufferBehind.finish();
241
+ this._priv_bitrateInfos.manualBitrates.video.finish();
242
+ this._priv_bitrateInfos.manualBitrates.audio.finish();
243
+ this._priv_bitrateInfos.minAutoBitrates.video.finish();
244
+ this._priv_bitrateInfos.minAutoBitrates.audio.finish();
245
+ this._priv_bitrateInfos.maxAutoBitrates.video.finish();
246
+ this._priv_bitrateInfos.maxAutoBitrates.audio.finish();
248
247
  this._priv_lastContentPlaybackInfos = {};
249
248
  // un-attach video element
250
249
  this.videoElement = null;
@@ -318,10 +317,7 @@ var Player = /** @class */ (function (_super) {
318
317
  /** Subject which will emit to stop the current content. */
319
318
  var stopContent$ = new Subject();
320
319
  /** Future `this._priv_contentInfos` related to this content. */
321
- var contentInfos = { url: url,
322
- stop$: stopContent$,
323
- isDirectFile: isDirectFile,
324
- segmentBuffersStore: null,
320
+ var contentInfos = { url: url, stop$: stopContent$, isDirectFile: isDirectFile, segmentBuffersStore: null,
325
321
  thumbnails: null,
326
322
  manifest: null,
327
323
  currentPeriod: null,
@@ -330,32 +326,29 @@ var Player = /** @class */ (function (_super) {
330
326
  initialAudioTrack: defaultAudioTrack,
331
327
  initialTextTrack: defaultTextTrack };
332
328
  var videoElement = this.videoElement;
333
- /** Global "clock" used for content playback */
334
- var _d = createClock(videoElement, {
329
+ /** Global "playback observer" which will emit playback conditions */
330
+ var playbackObserver = new PlaybackObserver(videoElement, {
335
331
  withMediaSource: !isDirectFile,
336
332
  lowLatencyMode: lowLatencyMode,
337
- }), setCurrentTime = _d.setCurrentTime, clock$ = _d.clock$;
333
+ });
338
334
  /** Emit playback events. */
339
335
  var playback$;
340
- var speed$ = this._priv_speed$.pipe(distinctUntilChanged());
341
336
  if (!isDirectFile) {
342
337
  var transportFn = features.transports[transport];
343
338
  if (typeof transportFn !== "function") {
344
339
  // Stop previous content and reset its state
345
340
  this.stop();
346
341
  this._priv_currentError = null;
347
- this._priv_playing$.next(false);
348
- throw new Error("transport \"" + transport + "\" not supported");
342
+ this._priv_isPlaying.setValue(false);
343
+ throw new Error("transport \"".concat(transport, "\" not supported"));
349
344
  }
350
345
  var transportPipelines = transportFn(transportOptions);
351
346
  var offlineRetry = networkConfig.offlineRetry, segmentRetry = networkConfig.segmentRetry, manifestRetry = networkConfig.manifestRetry;
352
347
  /** Interface used to load and refresh the Manifest. */
353
- var manifestFetcher = new ManifestFetcher(url, transportPipelines, { lowLatencyMode: lowLatencyMode,
354
- maxRetryRegular: manifestRetry,
348
+ var manifestFetcher = new ManifestFetcher(url, transportPipelines, { lowLatencyMode: lowLatencyMode, maxRetryRegular: manifestRetry,
355
349
  maxRetryOffline: offlineRetry });
356
350
  /** Interface used to download segments. */
357
- var segmentFetcherCreator = new SegmentFetcherCreator(transportPipelines, { lowLatencyMode: lowLatencyMode,
358
- maxRetryOffline: offlineRetry,
351
+ var segmentFetcherCreator = new SegmentFetcherCreator(transportPipelines, { lowLatencyMode: lowLatencyMode, maxRetryOffline: offlineRetry,
359
352
  maxRetryRegular: segmentRetry });
360
353
  /** Observable emitting the initial Manifest */
361
354
  var manifest$ = void 0;
@@ -381,7 +374,7 @@ var Player = /** @class */ (function (_super) {
381
374
  // take time.
382
375
  this.stop();
383
376
  this._priv_currentError = null;
384
- this._priv_playing$.next(false);
377
+ this._priv_isPlaying.setValue(false);
385
378
  this._priv_contentInfos = contentInfos;
386
379
  var relyOnVideoVisibilityAndSize = canRelyOnVideoVisibilityAndSize();
387
380
  var throttlers = { throttle: {},
@@ -394,7 +387,7 @@ var Player = /** @class */ (function (_super) {
394
387
  }
395
388
  else {
396
389
  throttlers.throttle = {
397
- video: isActive().pipe(map(function (active) { return active ? Infinity :
390
+ video: isPageActive().pipe(map(function (active) { return active ? Infinity :
398
391
  0; }), takeUntil(stopContent$)),
399
392
  };
400
393
  }
@@ -438,26 +431,9 @@ var Player = /** @class */ (function (_super) {
438
431
  hideNativeSubtitle: options.hideNativeSubtitle } :
439
432
  { textTrackMode: "html",
440
433
  textTrackElement: options.textTrackElement };
441
- var bufferOptions = objectAssign({ audioTrackSwitchingMode: audioTrackSwitchingMode,
442
- enableFastSwitching: enableFastSwitching,
443
- manualBitrateSwitchingMode: manualBitrateSwitchingMode,
444
- onCodecSwitch: onCodecSwitch }, this._priv_bufferOptions);
434
+ var bufferOptions = objectAssign({ audioTrackSwitchingMode: audioTrackSwitchingMode, enableFastSwitching: enableFastSwitching, manualBitrateSwitchingMode: manualBitrateSwitchingMode, onCodecSwitch: onCodecSwitch }, this._priv_bufferOptions);
445
435
  // We've every options set up. Start everything now
446
- var init$ = initializeMediaSourcePlayback({ adaptiveOptions: adaptiveOptions,
447
- autoPlay: autoPlay,
448
- bufferOptions: bufferOptions,
449
- clock$: clock$,
450
- keySystems: keySystems,
451
- lowLatencyMode: lowLatencyMode,
452
- manifest$: manifest$,
453
- manifestFetcher: manifestFetcher,
454
- mediaElement: videoElement,
455
- minimumManifestUpdateInterval: minimumManifestUpdateInterval,
456
- segmentFetcherCreator: segmentFetcherCreator,
457
- setCurrentTime: setCurrentTime,
458
- speed$: speed$,
459
- startAt: startAt,
460
- textTrackOptions: textTrackOptions })
436
+ var init$ = initializeMediaSourcePlayback({ adaptiveOptions: adaptiveOptions, autoPlay: autoPlay, bufferOptions: bufferOptions, playbackObserver: playbackObserver, keySystems: keySystems, lowLatencyMode: lowLatencyMode, manifest$: manifest$, manifestFetcher: manifestFetcher, mediaElement: videoElement, minimumManifestUpdateInterval: minimumManifestUpdateInterval, segmentFetcherCreator: segmentFetcherCreator, speed: this._priv_speed, startAt: startAt, textTrackOptions: textTrackOptions })
461
437
  .pipe(takeUntil(stopContent$));
462
438
  playback$ = connectable(init$, { connector: function () { return new Subject(); },
463
439
  resetOnDisconnect: false });
@@ -466,7 +442,7 @@ var Player = /** @class */ (function (_super) {
466
442
  // Stop previous content and reset its state
467
443
  this.stop();
468
444
  this._priv_currentError = null;
469
- this._priv_playing$.next(false);
445
+ this._priv_isPlaying.setValue(false);
470
446
  if (features.directfile === null) {
471
447
  throw new Error("DirectFile feature not activated in your build.");
472
448
  }
@@ -515,24 +491,18 @@ var Player = /** @class */ (function (_super) {
515
491
  .addEventListener("textTrackChange", function (val) {
516
492
  return _this.trigger("textTrackChange", val);
517
493
  });
518
- var directfileInit$ = features.directfile.initDirectFile({ autoPlay: autoPlay,
519
- clock$: clock$,
520
- keySystems: keySystems,
521
- mediaElement: videoElement,
522
- speed$: this._priv_speed$,
523
- startAt: startAt,
524
- setCurrentTime: setCurrentTime,
525
- url: url })
494
+ var directfileInit$ = features.directfile.initDirectFile({ autoPlay: autoPlay, keySystems: keySystems, mediaElement: videoElement,
495
+ speed: this._priv_speed, playbackObserver: playbackObserver, startAt: startAt, url: url })
526
496
  .pipe(takeUntil(stopContent$));
527
497
  playback$ = connectable(directfileInit$, { connector: function () { return new Subject(); },
528
498
  resetOnDisconnect: false });
529
499
  }
530
500
  /** Emit an object when the player "stalls" and null when it un-stalls */
531
501
  var stalled$ = playback$.pipe(filter(function (evt) { return evt.type === "stalled" ||
532
- evt.type === "unstalled"; }), map(function (x) { return x.value; }), distinctUntilChanged(function (wasStalled, isStalled) {
533
- return wasStalled === null && isStalled === null ||
534
- (wasStalled !== null && isStalled !== null &&
535
- wasStalled.reason === isStalled.reason);
502
+ evt.type === "unstalled"; }), map(function (x) { return x.value; }), distinctUntilChanged(function (prevStallReason, currStallReason) {
503
+ return prevStallReason === null && currStallReason === null ||
504
+ (prevStallReason !== null && currStallReason !== null &&
505
+ prevStallReason === currStallReason);
536
506
  }));
537
507
  /** Emit when the content is considered "loaded". */
538
508
  var loaded$ = playback$.pipe(filter(function (evt) { return evt.type === "loaded"; }), share());
@@ -547,7 +517,7 @@ var Player = /** @class */ (function (_super) {
547
517
  var seekingEvent$ = onSeeking$(videoElement);
548
518
  /** Emit state updates once the content is considered "loaded". */
549
519
  var loadedStateUpdates$ = observableCombineLatest([
550
- this._priv_playing$,
520
+ this._priv_isPlaying.asObservable(),
551
521
  stalled$.pipe(startWith(null)),
552
522
  endedEvent$.pipe(startWith(null)),
553
523
  seekingEvent$.pipe(startWith(null)),
@@ -558,15 +528,17 @@ var Player = /** @class */ (function (_super) {
558
528
  /** Emit all player "state" updates. */
559
529
  var playerState$ = observableConcat(observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
560
530
  // LOADED as soon as the first "loaded" event is sent
561
- loaded$.pipe(take(1), mapTo(PLAYER_STATES.LOADED)), observableMerge(loadedStateUpdates$
531
+ loaded$.pipe(take(1), map(function () { return PLAYER_STATES.LOADED; })), observableMerge(loadedStateUpdates$
562
532
  .pipe(
563
533
  // From the first reload onward, we enter another dynamic (below)
564
534
  takeUntil(reloading$), skipWhile(function (state) { return state === PLAYER_STATES.PAUSED; })),
565
535
  // when reloading
566
- reloading$.pipe(switchMapTo(loaded$.pipe(take(1), // wait for the next loaded event
567
- mergeMapTo(loadedStateUpdates$), // to update the state as usual
568
- startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
569
- ))))).pipe(distinctUntilChanged());
536
+ reloading$.pipe(switchMap(function () {
537
+ return loaded$.pipe(take(1), // wait for the next loaded event
538
+ mergeMap(function () { return loadedStateUpdates$; }), // to update the state as usual
539
+ startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
540
+ );
541
+ })))).pipe(distinctUntilChanged());
570
542
  var playbackSubscription;
571
543
  stopContent$
572
544
  .pipe(take(1))
@@ -579,13 +551,14 @@ var Player = /** @class */ (function (_super) {
579
551
  onPlayPause$(videoElement)
580
552
  .pipe(takeUntil(stopContent$))
581
553
  .subscribe(function (e) { return _this._priv_onPlayPauseNext(e.type === "play"); });
582
- // Link "positionUpdate" events to the clock
583
- clock$
554
+ var observation$ = playbackObserver.observe(true);
555
+ // Link "positionUpdate" events to the PlaybackObserver
556
+ observation$
584
557
  .pipe(takeUntil(stopContent$))
585
- .subscribe(function (x) { return _this._priv_triggerPositionUpdate(x); });
558
+ .subscribe(function (o) { return _this._priv_triggerPositionUpdate(o); });
586
559
  // Link "seeking" and "seeked" events (once the content is loaded)
587
- loaded$.pipe(switchMapTo(emitSeekEvents(this.videoElement, clock$)), takeUntil(stopContent$)).subscribe(function (evt) {
588
- log.info("API: Triggering \"" + evt + "\" event");
560
+ loaded$.pipe(switchMap(function () { return emitSeekEvents(_this.videoElement, observation$); }), takeUntil(stopContent$)).subscribe(function (evt) {
561
+ log.info("API: Triggering \"".concat(evt, "\" event"));
589
562
  _this.trigger(evt, null);
590
563
  });
591
564
  // Handle state updates
@@ -606,7 +579,7 @@ var Player = /** @class */ (function (_super) {
606
579
  complete: function () { return _this._priv_onPlaybackFinished(); },
607
580
  });
608
581
  // initialize the content only when the lock is inactive
609
- this._priv_contentLock$
582
+ this._priv_contentLock.asObservable()
610
583
  .pipe(filter(function (isLocked) { return !isLocked; }), take(1), takeUntil(stopContent$))
611
584
  .subscribe(function () {
612
585
  // start playback!
@@ -854,7 +827,7 @@ var Player = /** @class */ (function (_super) {
854
827
  * @returns {Number}
855
828
  */
856
829
  Player.prototype.getPlaybackRate = function () {
857
- return this._priv_speed$.getValue();
830
+ return this._priv_speed.getValue();
858
831
  };
859
832
  /**
860
833
  * Update the playback rate of the video.
@@ -913,7 +886,9 @@ var Player = /** @class */ (function (_super) {
913
886
  * @param {Object} opts
914
887
  */
915
888
  Player.prototype.setPlaybackRate = function (rate, opts) {
916
- this._priv_speed$.next(rate);
889
+ if (rate !== this._priv_speed.getValue()) {
890
+ this._priv_speed.setValue(rate);
891
+ }
917
892
  var preferTrickModeTracks = opts === null || opts === void 0 ? void 0 : opts.preferTrickModeTracks;
918
893
  if (typeof preferTrickModeTracks !== "boolean") {
919
894
  return;
@@ -1210,7 +1185,7 @@ var Player = /** @class */ (function (_super) {
1210
1185
  * @param {Number} btr
1211
1186
  */
1212
1187
  Player.prototype.setVideoBitrate = function (btr) {
1213
- this._priv_bitrateInfos.manualBitrates.video.next(btr);
1188
+ this._priv_bitrateInfos.manualBitrates.video.setValue(btr);
1214
1189
  };
1215
1190
  /**
1216
1191
  * Force the audio bitrate to a given value. Act as a ceil.
@@ -1218,7 +1193,7 @@ var Player = /** @class */ (function (_super) {
1218
1193
  * @param {Number} btr
1219
1194
  */
1220
1195
  Player.prototype.setAudioBitrate = function (btr) {
1221
- this._priv_bitrateInfos.manualBitrates.audio.next(btr);
1196
+ this._priv_bitrateInfos.manualBitrates.audio.setValue(btr);
1222
1197
  };
1223
1198
  /**
1224
1199
  * Update the minimum video bitrate the user can switch to.
@@ -1228,10 +1203,10 @@ var Player = /** @class */ (function (_super) {
1228
1203
  var maxVideoBitrate = this._priv_bitrateInfos.maxAutoBitrates.video.getValue();
1229
1204
  if (btr > maxVideoBitrate) {
1230
1205
  throw new Error("Invalid minimum video bitrate given. " +
1231
- ("Its value, \"" + btr + "\" is superior the current maximum ") +
1232
- ("video birate, \"" + maxVideoBitrate + "\"."));
1206
+ "Its value, \"".concat(btr, "\" is superior the current maximum ") +
1207
+ "video birate, \"".concat(maxVideoBitrate, "\"."));
1233
1208
  }
1234
- this._priv_bitrateInfos.minAutoBitrates.video.next(btr);
1209
+ this._priv_bitrateInfos.minAutoBitrates.video.setValue(btr);
1235
1210
  };
1236
1211
  /**
1237
1212
  * Update the minimum audio bitrate the user can switch to.
@@ -1241,10 +1216,10 @@ var Player = /** @class */ (function (_super) {
1241
1216
  var maxAudioBitrate = this._priv_bitrateInfos.maxAutoBitrates.audio.getValue();
1242
1217
  if (btr > maxAudioBitrate) {
1243
1218
  throw new Error("Invalid minimum audio bitrate given. " +
1244
- ("Its value, \"" + btr + "\" is superior the current maximum ") +
1245
- ("audio birate, \"" + maxAudioBitrate + "\"."));
1219
+ "Its value, \"".concat(btr, "\" is superior the current maximum ") +
1220
+ "audio birate, \"".concat(maxAudioBitrate, "\"."));
1246
1221
  }
1247
- this._priv_bitrateInfos.minAutoBitrates.audio.next(btr);
1222
+ this._priv_bitrateInfos.minAutoBitrates.audio.setValue(btr);
1248
1223
  };
1249
1224
  /**
1250
1225
  * Update the maximum video bitrate the user can switch to.
@@ -1254,10 +1229,10 @@ var Player = /** @class */ (function (_super) {
1254
1229
  var minVideoBitrate = this._priv_bitrateInfos.minAutoBitrates.video.getValue();
1255
1230
  if (btr < minVideoBitrate) {
1256
1231
  throw new Error("Invalid maximum video bitrate given. " +
1257
- ("Its value, \"" + btr + "\" is inferior the current minimum ") +
1258
- ("video birate, \"" + minVideoBitrate + "\"."));
1232
+ "Its value, \"".concat(btr, "\" is inferior the current minimum ") +
1233
+ "video birate, \"".concat(minVideoBitrate, "\"."));
1259
1234
  }
1260
- this._priv_bitrateInfos.maxAutoBitrates.video.next(btr);
1235
+ this._priv_bitrateInfos.maxAutoBitrates.video.setValue(btr);
1261
1236
  };
1262
1237
  /**
1263
1238
  * Update the maximum audio bitrate the user can switch to.
@@ -1267,10 +1242,10 @@ var Player = /** @class */ (function (_super) {
1267
1242
  var minAudioBitrate = this._priv_bitrateInfos.minAutoBitrates.audio.getValue();
1268
1243
  if (btr < minAudioBitrate) {
1269
1244
  throw new Error("Invalid maximum audio bitrate given. " +
1270
- ("Its value, \"" + btr + "\" is inferior the current minimum ") +
1271
- ("audio birate, \"" + minAudioBitrate + "\"."));
1245
+ "Its value, \"".concat(btr, "\" is inferior the current minimum ") +
1246
+ "audio birate, \"".concat(minAudioBitrate, "\"."));
1272
1247
  }
1273
- this._priv_bitrateInfos.maxAutoBitrates.audio.next(btr);
1248
+ this._priv_bitrateInfos.maxAutoBitrates.audio.setValue(btr);
1274
1249
  };
1275
1250
  /**
1276
1251
  * Set the max buffer size for the buffer behind the current position.
@@ -1278,7 +1253,7 @@ var Player = /** @class */ (function (_super) {
1278
1253
  * @param {Number} depthInSeconds
1279
1254
  */
1280
1255
  Player.prototype.setMaxBufferBehind = function (depthInSeconds) {
1281
- this._priv_bufferOptions.maxBufferBehind$.next(depthInSeconds);
1256
+ this._priv_bufferOptions.maxBufferBehind.setValue(depthInSeconds);
1282
1257
  };
1283
1258
  /**
1284
1259
  * Set the max buffer size for the buffer behind the current position.
@@ -1286,7 +1261,7 @@ var Player = /** @class */ (function (_super) {
1286
1261
  * @param {Number} depthInSeconds
1287
1262
  */
1288
1263
  Player.prototype.setMaxBufferAhead = function (depthInSeconds) {
1289
- this._priv_bufferOptions.maxBufferAhead$.next(depthInSeconds);
1264
+ this._priv_bufferOptions.maxBufferAhead.setValue(depthInSeconds);
1290
1265
  };
1291
1266
  /**
1292
1267
  * Set the max buffer size for the buffer ahead of the current position.
@@ -1294,28 +1269,28 @@ var Player = /** @class */ (function (_super) {
1294
1269
  * @param {Number} sizeInSeconds
1295
1270
  */
1296
1271
  Player.prototype.setWantedBufferAhead = function (sizeInSeconds) {
1297
- this._priv_bufferOptions.wantedBufferAhead$.next(sizeInSeconds);
1272
+ this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
1298
1273
  };
1299
1274
  /**
1300
1275
  * Returns the max buffer size for the buffer behind the current position.
1301
1276
  * @returns {Number}
1302
1277
  */
1303
1278
  Player.prototype.getMaxBufferBehind = function () {
1304
- return this._priv_bufferOptions.maxBufferBehind$.getValue();
1279
+ return this._priv_bufferOptions.maxBufferBehind.getValue();
1305
1280
  };
1306
1281
  /**
1307
1282
  * Returns the max buffer size for the buffer behind the current position.
1308
1283
  * @returns {Number}
1309
1284
  */
1310
1285
  Player.prototype.getMaxBufferAhead = function () {
1311
- return this._priv_bufferOptions.maxBufferAhead$.getValue();
1286
+ return this._priv_bufferOptions.maxBufferAhead.getValue();
1312
1287
  };
1313
1288
  /**
1314
1289
  * Returns the max buffer size for the buffer ahead of the current position.
1315
1290
  * @returns {Number}
1316
1291
  */
1317
1292
  Player.prototype.getWantedBufferAhead = function () {
1318
- return this._priv_bufferOptions.wantedBufferAhead$.getValue();
1293
+ return this._priv_bufferOptions.wantedBufferAhead.getValue();
1319
1294
  };
1320
1295
  /**
1321
1296
  * Returns type of current keysystem (e.g. playready, widevine) if the content
@@ -1731,7 +1706,7 @@ var Player = /** @class */ (function (_super) {
1731
1706
  var _a;
1732
1707
  log.debug("Locking `contentLock` to clean-up the current content.");
1733
1708
  // lock playback of new contents while cleaning up is pending
1734
- this._priv_contentLock$.next(true);
1709
+ this._priv_contentLock.setValue(true);
1735
1710
  this._priv_contentInfos = null;
1736
1711
  this._priv_trackChoiceManager = null;
1737
1712
  (_a = this._priv_mediaElementTrackChoiceManager) === null || _a === void 0 ? void 0 : _a.dispose();
@@ -1740,18 +1715,21 @@ var Player = /** @class */ (function (_super) {
1740
1715
  // EME cleaning
1741
1716
  var freeUpContentLock = function () {
1742
1717
  log.debug("Unlocking `contentLock`. Next content can begin.");
1743
- _this._priv_contentLock$.next(false);
1718
+ _this._priv_contentLock.setValue(false);
1744
1719
  };
1745
1720
  if (!isNullOrUndefined(this.videoElement)) {
1746
1721
  clearEMESession(this.videoElement)
1747
- .subscribe(noop, function (err) {
1748
- log.error("API: An error arised when trying to clean-up the EME session:" +
1749
- (err instanceof Error ? err.toString() :
1750
- "Unknown Error"));
1751
- freeUpContentLock();
1752
- }, function () {
1753
- log.debug("API: EME session cleaned-up with success!");
1754
- freeUpContentLock();
1722
+ .subscribe({
1723
+ error: function (err) {
1724
+ log.error("API: An error arised when trying to clean-up the EME session:" +
1725
+ (err instanceof Error ? err.toString() :
1726
+ "Unknown Error"));
1727
+ freeUpContentLock();
1728
+ },
1729
+ complete: function () {
1730
+ log.debug("API: EME session cleaned-up with success!");
1731
+ freeUpContentLock();
1732
+ },
1755
1733
  });
1756
1734
  }
1757
1735
  else {
@@ -1986,7 +1964,7 @@ var Player = /** @class */ (function (_super) {
1986
1964
  break;
1987
1965
  case "audio":
1988
1966
  if (this._priv_trackChoiceManager === null) {
1989
- log.error("API: TrackChoiceManager not instanciated for a new " + type + " period");
1967
+ log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
1990
1968
  adaptation$.next(null);
1991
1969
  }
1992
1970
  else {
@@ -1996,7 +1974,7 @@ var Player = /** @class */ (function (_super) {
1996
1974
  break;
1997
1975
  case "text":
1998
1976
  if (this._priv_trackChoiceManager === null) {
1999
- log.error("API: TrackChoiceManager not instanciated for a new " + type + " period");
1977
+ log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
2000
1978
  adaptation$.next(null);
2001
1979
  }
2002
1980
  else {
@@ -2179,7 +2157,7 @@ var Player = /** @class */ (function (_super) {
2179
2157
  if (this.videoElement === null) {
2180
2158
  throw new Error("Disposed player");
2181
2159
  }
2182
- this._priv_playing$.next(isPlaying);
2160
+ this._priv_isPlaying.setValue(isPlaying);
2183
2161
  };
2184
2162
  /**
2185
2163
  * Triggered each time a textTrack is added to the video DOM Element.
@@ -2206,13 +2184,13 @@ var Player = /** @class */ (function (_super) {
2206
2184
  }
2207
2185
  };
2208
2186
  /**
2209
- * Triggered each time a new clock tick object is emitted.
2187
+ * Triggered each time a playback observation.
2210
2188
  *
2211
2189
  * Trigger the right Player Event
2212
2190
  *
2213
- * @param {Object} clockTick
2191
+ * @param {Object} observation
2214
2192
  */
2215
- Player.prototype._priv_triggerPositionUpdate = function (clockTick) {
2193
+ Player.prototype._priv_triggerPositionUpdate = function (observation) {
2216
2194
  var _a;
2217
2195
  if (this._priv_contentInfos === null) {
2218
2196
  log.warn("API: Cannot perform time update: no content loaded.");
@@ -2222,28 +2200,28 @@ var Player = /** @class */ (function (_super) {
2222
2200
  return;
2223
2201
  }
2224
2202
  var _b = this._priv_contentInfos, isDirectFile = _b.isDirectFile, manifest = _b.manifest;
2225
- if ((!isDirectFile && manifest === null) || isNullOrUndefined(clockTick)) {
2203
+ if ((!isDirectFile && manifest === null) || isNullOrUndefined(observation)) {
2226
2204
  return;
2227
2205
  }
2228
- this._priv_lastContentPlaybackInfos.lastPlaybackPosition = clockTick.position;
2206
+ this._priv_lastContentPlaybackInfos.lastPlaybackPosition = observation.position;
2229
2207
  var maximumPosition = manifest !== null ? manifest.getMaximumPosition() :
2230
2208
  undefined;
2231
2209
  var positionData = {
2232
- position: clockTick.position,
2233
- duration: clockTick.duration,
2234
- playbackRate: clockTick.playbackRate,
2210
+ position: observation.position,
2211
+ duration: observation.duration,
2212
+ playbackRate: observation.playbackRate,
2235
2213
  maximumBufferTime: maximumPosition,
2236
2214
  // TODO fix higher up?
2237
- bufferGap: isFinite(clockTick.bufferGap) ? clockTick.bufferGap :
2215
+ bufferGap: isFinite(observation.bufferGap) ? observation.bufferGap :
2238
2216
  0,
2239
2217
  };
2240
2218
  if (manifest !== null &&
2241
2219
  maximumPosition !== undefined &&
2242
2220
  manifest.isLive &&
2243
- clockTick.position > 0) {
2221
+ observation.position > 0) {
2244
2222
  var ast = (_a = manifest.availabilityStartTime) !== null && _a !== void 0 ? _a : 0;
2245
- positionData.wallClockTime = clockTick.position + ast;
2246
- positionData.liveGap = maximumPosition - clockTick.position;
2223
+ positionData.wallClockTime = observation.position + ast;
2224
+ positionData.liveGap = maximumPosition - observation.position;
2247
2225
  }
2248
2226
  this.trigger("positionUpdate", positionData);
2249
2227
  };
@@ -2255,7 +2233,7 @@ var Player = /** @class */ (function (_super) {
2255
2233
  */
2256
2234
  Player.prototype._priv_triggerAvailableBitratesChangeEvent = function (event, newVal) {
2257
2235
  var prevVal = this._priv_contentEventsMemory[event];
2258
- if (prevVal === undefined || areArraysOfNumbersEqual(newVal, prevVal)) {
2236
+ if (prevVal === undefined || !areArraysOfNumbersEqual(newVal, prevVal)) {
2259
2237
  this._priv_contentEventsMemory[event] = newVal;
2260
2238
  this.trigger(event, newVal);
2261
2239
  }
@@ -2286,5 +2264,5 @@ var Player = /** @class */ (function (_super) {
2286
2264
  };
2287
2265
  return Player;
2288
2266
  }(EventEmitter));
2289
- Player.version = /* PLAYER_VERSION */ "3.25.2";
2267
+ Player.version = /* PLAYER_VERSION */ "3.26.3-dev.2022021400";
2290
2268
  export default Player;
@@ -18,8 +18,7 @@
18
18
  * switching for an easier API management.
19
19
  */
20
20
  import { Subject } from "rxjs";
21
- import { Adaptation, Period } from "../../manifest";
22
- import { IHDRInformation } from "../../manifest/types";
21
+ import { Adaptation, IHDRInformation, Period } from "../../manifest";
23
22
  /** Single preference for an audio track Adaptation. */
24
23
  export declare type IAudioTrackPreference = null | {
25
24
  language?: string;
@@ -51,7 +50,7 @@ interface IVideoTrackPreferenceObject {
51
50
  interface ITMAudioRepresentation {
52
51
  id: string | number;
53
52
  bitrate: number;
54
- codec?: string;
53
+ codec?: string | undefined;
55
54
  }
56
55
  /** Audio track returned by the TrackChoiceManager. */
57
56
  export interface ITMAudioTrack {
@@ -76,11 +75,11 @@ export interface ITMTextTrack {
76
75
  interface ITMVideoRepresentation {
77
76
  id: string | number;
78
77
  bitrate: number;
79
- width?: number;
80
- height?: number;
81
- codec?: string;
82
- frameRate?: string;
83
- hdrInfo?: IHDRInformation;
78
+ width?: number | undefined;
79
+ height?: number | undefined;
80
+ codec?: string | undefined;
81
+ frameRate?: string | undefined;
82
+ hdrInfo?: IHDRInformation | undefined;
84
83
  }
85
84
  /** Video track returned by the TrackChoiceManager. */
86
85
  export interface ITMVideoTrack {