rx-player 3.26.1 → 3.26.2

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 (580) hide show
  1. package/.github/workflows/checks.yml +99 -0
  2. package/.github/workflows/sonarcloud_analysis.yml +20 -0
  3. package/CHANGELOG.md +99 -71
  4. package/README.md +19 -18
  5. package/VERSION +1 -1
  6. package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
  7. package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
  8. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
  12. package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
  13. package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
  14. package/dist/_esm5.processed/compat/event_listeners.d.ts +3 -2
  15. package/dist/_esm5.processed/compat/event_listeners.js +8 -14
  16. package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
  17. package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
  18. package/dist/_esm5.processed/compat/set_element_src.js +1 -1
  19. package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
  20. package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
  21. package/dist/_esm5.processed/config.d.ts +3 -8
  22. package/dist/_esm5.processed/config.js +4 -9
  23. package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
  24. package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
  25. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
  26. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
  27. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
  28. package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
  29. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
  30. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
  31. package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
  32. package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
  33. package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
  34. package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
  35. package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
  36. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +25 -7
  37. package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
  38. package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
  39. package/dist/_esm5.processed/core/abr/pending_requests_store.js +9 -7
  40. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
  41. package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
  42. package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
  43. package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
  44. package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
  45. package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
  46. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
  47. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
  48. package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
  49. package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
  50. package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
  51. package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
  52. package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
  53. package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
  54. package/dist/_esm5.processed/core/api/index.d.ts +3 -1
  55. package/dist/_esm5.processed/core/api/index.js +2 -0
  56. package/dist/_esm5.processed/core/api/option_utils.js +4 -4
  57. package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
  58. package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
  59. package/dist/_esm5.processed/core/api/public_api.d.ts +8 -7
  60. package/dist/_esm5.processed/core/api/public_api.js +98 -94
  61. package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
  62. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
  63. package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
  64. package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
  65. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
  66. package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
  67. package/dist/_esm5.processed/core/eme/create_session.js +1 -2
  68. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
  69. package/dist/_esm5.processed/core/eme/eme_manager.js +4 -5
  70. package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
  71. package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
  72. package/dist/_esm5.processed/core/eme/get_session.js +1 -2
  73. package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
  74. package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
  75. package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
  76. package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
  77. package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
  78. package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
  79. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
  80. package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +3 -3
  81. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  82. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
  83. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
  84. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
  85. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
  86. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
  87. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +42 -11
  88. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
  89. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
  90. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
  91. package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
  92. package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
  93. package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
  94. package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
  95. package/dist/_esm5.processed/core/init/duration_updater.js +16 -7
  96. package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
  97. package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
  98. package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
  99. package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
  100. package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
  101. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
  102. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
  103. package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
  104. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
  105. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
  106. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
  107. package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
  108. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
  109. package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
  110. package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
  111. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
  112. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
  113. package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
  114. package/dist/_esm5.processed/core/init/types.d.ts +0 -20
  115. package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
  116. package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
  117. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
  118. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +8 -7
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
  122. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
  123. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
  124. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
  125. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
  126. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
  127. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
  128. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
  129. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
  130. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
  131. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -20
  132. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  133. package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
  134. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
  135. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
  136. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
  137. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
  138. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +22 -21
  139. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
  140. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +11 -10
  141. package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
  142. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
  143. package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
  144. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
  145. package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
  146. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
  147. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
  148. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +9 -9
  149. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
  150. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
  151. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +6 -8
  152. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
  153. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +7 -8
  154. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
  155. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
  156. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
  157. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  158. package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +4 -2
  159. package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
  160. package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
  161. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
  162. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
  163. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
  164. package/dist/_esm5.processed/errors/error_message.js +1 -1
  165. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
  166. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
  167. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
  168. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
  169. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
  170. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
  171. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
  172. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
  173. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
  174. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
  175. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
  176. package/dist/_esm5.processed/features/initialize_features.js +47 -44
  177. package/dist/_esm5.processed/index.js +2 -2
  178. package/dist/_esm5.processed/manifest/index.d.ts +2 -2
  179. package/dist/_esm5.processed/manifest/index.js +2 -2
  180. package/dist/_esm5.processed/manifest/representation.js +1 -1
  181. package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
  182. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
  183. package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
  184. package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
  185. package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
  186. package/dist/_esm5.processed/minimal.js +2 -2
  187. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
  188. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
  189. package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
  190. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
  191. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +52 -47
  192. package/dist/_esm5.processed/parsers/images/bif.js +1 -1
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
  194. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
  195. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
  196. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
  197. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
  198. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
  199. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
  200. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
  201. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
  202. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
  203. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
  204. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
  205. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
  206. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -1
  207. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
  208. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
  209. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
  210. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +3 -1
  211. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
  212. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
  213. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
  214. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
  215. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
  216. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
  217. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
  218. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
  219. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
  220. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
  221. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
  222. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
  223. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
  224. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
  225. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
  226. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +12 -9
  227. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
  228. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
  229. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
  230. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
  231. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
  232. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
  233. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +5 -0
  234. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
  235. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -0
  236. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
  237. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
  238. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
  239. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
  240. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +1 -1
  241. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
  242. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
  243. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
  244. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
  245. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
  246. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
  247. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
  248. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
  249. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
  250. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
  251. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
  252. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
  253. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
  254. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
  255. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
  256. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +2 -2
  257. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  258. package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
  259. package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
  260. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  261. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
  262. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  263. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  264. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
  265. package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
  266. package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
  267. package/dist/_esm5.processed/transports/types.d.ts +29 -15
  268. package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
  269. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  270. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
  271. package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
  272. package/dist/_esm5.processed/utils/assert.js +3 -3
  273. package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
  274. package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
  275. package/dist/_esm5.processed/utils/filter_map.js +1 -2
  276. package/dist/_esm5.processed/utils/reference.d.ts +108 -0
  277. package/dist/_esm5.processed/utils/reference.js +137 -0
  278. package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
  279. package/dist/_esm5.processed/utils/request/fetch.js +3 -3
  280. package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
  281. package/dist/_esm5.processed/utils/request/xhr.js +1 -1
  282. package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
  283. package/dist/mpd-parser.wasm +0 -0
  284. package/dist/rx-player.d.ts +1 -15
  285. package/dist/rx-player.js +3666 -2470
  286. package/dist/rx-player.min.d.ts +1 -15
  287. package/dist/rx-player.min.js +1 -1
  288. package/jest.config.js +28 -1
  289. package/package.json +43 -43
  290. package/scripts/build/constants.d.ts +50 -0
  291. package/scripts/build/generate_build.js +1 -189
  292. package/scripts/doc-generator/construct_table_of_contents.js +31 -24
  293. package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
  294. package/scripts/doc-generator/create_documentation.js +331 -0
  295. package/scripts/doc-generator/create_documentation_page.js +209 -0
  296. package/scripts/doc-generator/create_page.js +117 -35
  297. package/scripts/doc-generator/generate_header_html.js +148 -0
  298. package/scripts/doc-generator/generate_page_html.js +116 -0
  299. package/scripts/doc-generator/generate_page_list_html.js +93 -0
  300. package/scripts/doc-generator/generate_sidebar_html.js +88 -0
  301. package/scripts/doc-generator/get_search_data_for_content.js +137 -0
  302. package/scripts/doc-generator/index.js +14 -15
  303. package/scripts/doc-generator/parse_doc_configs.js +327 -0
  304. package/scripts/doc-generator/scripts/lunr.js +10 -0
  305. package/scripts/doc-generator/scripts/script.js +451 -0
  306. package/scripts/doc-generator/styles/style.css +712 -144
  307. package/scripts/doc-generator/utils.js +85 -0
  308. package/scripts/fast_demo_build.js +143 -0
  309. package/scripts/generate_documentation_list.js +6 -2
  310. package/scripts/generate_full_demo.js +26 -49
  311. package/scripts/start_demo_web_server.js +14 -4
  312. package/scripts/update-version +1 -1
  313. package/sonar-project.properties +2 -1
  314. package/src/compat/__tests__/add_text_track.test.ts +1 -0
  315. package/src/compat/__tests__/clear_element_src.test.ts +55 -28
  316. package/src/compat/__tests__/set_element_src.test.ts +2 -2
  317. package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
  318. package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
  319. package/src/compat/clear_element_src.ts +8 -6
  320. package/src/compat/eme/close_session.ts +3 -5
  321. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  322. package/src/compat/eme/custom_media_keys/index.ts +6 -6
  323. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
  324. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
  325. package/src/compat/eme/generate_key_request.ts +1 -1
  326. package/src/compat/eme/load_session.ts +4 -6
  327. package/src/compat/event_listeners.ts +12 -21
  328. package/src/compat/on_height_width_change.ts +3 -5
  329. package/src/compat/set_element_src.ts +1 -1
  330. package/src/compat/when_loaded_metadata.ts +1 -1
  331. package/src/compat/when_media_source_open.ts +1 -1
  332. package/src/config.ts +4 -9
  333. package/src/core/abr/README.md +7 -7
  334. package/src/core/abr/abr_manager.ts +62 -21
  335. package/src/core/abr/bandwidth_estimator.ts +1 -1
  336. package/src/core/abr/buffer_based_chooser.ts +8 -6
  337. package/src/core/abr/get_buffer_levels.ts +3 -0
  338. package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
  339. package/src/core/abr/guess_based_chooser.ts +308 -0
  340. package/src/core/abr/index.ts +7 -3
  341. package/src/core/abr/last_estimate_storage.ts +79 -0
  342. package/src/core/abr/network_analyzer.ts +74 -31
  343. package/src/core/abr/pending_requests_store.ts +76 -42
  344. package/src/core/abr/representation_estimator.ts +200 -125
  345. package/src/core/abr/representation_score_calculator.ts +33 -26
  346. package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
  347. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
  348. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
  349. package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
  350. package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
  351. package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
  352. package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
  353. package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
  354. package/src/core/api/README.md +4 -3
  355. package/src/core/api/__tests__/option_utils.test.ts +1 -0
  356. package/src/core/api/emit_seek_events.ts +21 -20
  357. package/src/core/api/index.ts +6 -2
  358. package/src/core/api/playback_observer.ts +768 -0
  359. package/src/core/api/public_api.ts +111 -111
  360. package/src/core/api/track_choice_manager.ts +6 -3
  361. package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
  362. package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
  363. package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
  364. package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
  365. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
  366. package/src/core/eme/__tests__/__global__/utils.ts +1 -0
  367. package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
  368. package/src/core/eme/attach_media_keys.ts +2 -1
  369. package/src/core/eme/check_key_statuses.ts +10 -8
  370. package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
  371. package/src/core/eme/clear_eme_session.ts +6 -1
  372. package/src/core/eme/create_session.ts +3 -5
  373. package/src/core/eme/dispose_media_keys.ts +2 -2
  374. package/src/core/eme/eme_manager.ts +10 -12
  375. package/src/core/eme/find_key_system.ts +3 -5
  376. package/src/core/eme/get_media_keys.ts +4 -6
  377. package/src/core/eme/get_session.ts +2 -4
  378. package/src/core/eme/init_media_keys.ts +9 -9
  379. package/src/core/eme/session_events_listener.ts +14 -15
  380. package/src/core/eme/set_server_certificate.ts +9 -5
  381. package/src/core/eme/types.ts +15 -4
  382. package/src/core/eme/utils/close_session.ts +7 -7
  383. package/src/core/eme/utils/is_session_usable.ts +1 -1
  384. package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
  385. package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
  386. package/src/core/fetchers/index.ts +2 -2
  387. package/src/core/fetchers/manifest/manifest_fetcher.ts +1 -1
  388. package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
  389. package/src/core/fetchers/segment/index.ts +2 -2
  390. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
  391. package/src/core/fetchers/segment/prioritizer.ts +82 -82
  392. package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
  393. package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
  394. package/src/core/init/create_eme_manager.ts +1 -1
  395. package/src/core/init/create_media_source.ts +5 -7
  396. package/src/core/init/create_stream_playback_observer.ts +88 -0
  397. package/src/core/init/duration_updater.ts +20 -17
  398. package/src/core/init/emit_loaded_event.ts +11 -15
  399. package/src/core/init/end_of_stream.ts +2 -4
  400. package/src/core/init/get_initial_time.ts +0 -1
  401. package/src/core/init/initial_seek_and_play.ts +67 -51
  402. package/src/core/init/initialize_directfile.ts +26 -35
  403. package/src/core/init/initialize_media_source.ts +28 -28
  404. package/src/core/init/load_on_media_source.ts +51 -58
  405. package/src/core/init/manifest_update_scheduler.ts +11 -12
  406. package/src/core/init/stall_avoider.ts +64 -47
  407. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
  408. package/src/core/init/throw_on_media_error.ts +1 -1
  409. package/src/core/init/types.ts +0 -24
  410. package/src/core/init/update_playback_rate.ts +15 -16
  411. package/src/core/segment_buffers/README.md +3 -3
  412. package/src/core/segment_buffers/garbage_collector.ts +15 -11
  413. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
  414. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
  415. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
  416. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  417. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
  418. package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
  419. package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
  420. package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
  421. package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
  422. package/src/core/stream/adaptation/index.ts +2 -2
  423. package/src/core/stream/index.ts +2 -2
  424. package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
  425. package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
  426. package/src/core/stream/orchestrator/index.ts +2 -2
  427. package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
  428. package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
  429. package/src/core/stream/period/index.ts +2 -2
  430. package/src/core/stream/period/period_stream.ts +118 -75
  431. package/src/core/stream/reload_after_switch.ts +13 -10
  432. package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
  433. package/src/core/stream/representation/downloading_queue.ts +21 -24
  434. package/src/core/stream/representation/force_garbage_collection.ts +16 -23
  435. package/src/core/stream/representation/get_buffer_status.ts +9 -11
  436. package/src/core/stream/representation/get_needed_segments.ts +1 -1
  437. package/src/core/stream/representation/get_segment_priority.ts +8 -10
  438. package/src/core/stream/representation/index.ts +2 -2
  439. package/src/core/stream/representation/push_init_segment.ts +19 -16
  440. package/src/core/stream/representation/push_media_segment.ts +21 -17
  441. package/src/core/stream/representation/representation_stream.ts +50 -47
  442. package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
  443. package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
  444. package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
  445. package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
  446. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
  447. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
  448. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
  449. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
  450. package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
  451. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
  452. package/src/features/__tests__/initialize_features.test.ts +191 -101
  453. package/src/features/initialize_features.ts +40 -37
  454. package/src/features/list/__tests__/bif_parser.test.ts +1 -0
  455. package/src/features/list/__tests__/dash.test.ts +1 -0
  456. package/src/features/list/__tests__/directfile.test.ts +1 -0
  457. package/src/features/list/__tests__/eme.test.ts +1 -0
  458. package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
  459. package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
  460. package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
  461. package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
  462. package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
  463. package/src/features/list/__tests__/image_buffer.test.ts +1 -0
  464. package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
  465. package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
  466. package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
  467. package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
  468. package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
  469. package/src/features/list/__tests__/smooth.test.ts +1 -0
  470. package/src/index.ts +2 -2
  471. package/src/manifest/__tests__/manifest.test.ts +1 -0
  472. package/src/manifest/index.ts +7 -1
  473. package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
  474. package/src/manifest/representation_index/static.ts +1 -0
  475. package/src/manifest/representation_index/types.ts +25 -3
  476. package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
  477. package/src/minimal.ts +3 -2
  478. package/src/parsers/containers/isobmff/get_box.ts +35 -8
  479. package/src/parsers/containers/isobmff/read.ts +32 -5
  480. package/src/parsers/containers/isobmff/utils.ts +52 -47
  481. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
  482. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
  483. package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
  484. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
  485. package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
  486. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
  487. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
  488. package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
  489. package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
  490. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
  491. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +13 -5
  492. package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
  493. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  494. package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
  495. package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
  496. package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
  497. package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
  498. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
  499. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
  500. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
  501. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
  502. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
  503. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
  504. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
  505. package/src/parsers/manifest/dash/node_parser_types.ts +8 -0
  506. package/src/parsers/manifest/dash/parsers_types.ts +8 -2
  507. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
  508. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
  509. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
  510. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
  511. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
  512. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
  513. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +6 -0
  514. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
  515. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -0
  516. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
  517. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
  518. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
  519. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
  520. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +1 -1
  521. package/src/parsers/manifest/local/representation_index.ts +2 -0
  522. package/src/parsers/manifest/smooth/create_parser.ts +1 -1
  523. package/src/parsers/manifest/smooth/representation_index.ts +3 -1
  524. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
  525. package/src/parsers/manifest/utils/index_helpers.ts +21 -11
  526. package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
  527. package/src/parsers/texttracks/sami/html.ts +1 -1
  528. package/src/parsers/texttracks/sami/native.ts +1 -1
  529. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
  530. package/src/transports/dash/image_pipelines.ts +4 -4
  531. package/src/transports/dash/init_segment_loader.ts +1 -1
  532. package/src/transports/dash/manifest_parser.ts +99 -25
  533. package/src/transports/dash/segment_loader.ts +1 -1
  534. package/src/transports/dash/segment_parser.ts +4 -4
  535. package/src/transports/dash/text_parser.ts +8 -8
  536. package/src/transports/local/segment_loader.ts +2 -2
  537. package/src/transports/local/segment_parser.ts +4 -4
  538. package/src/transports/local/text_parser.ts +8 -8
  539. package/src/transports/metaplaylist/pipelines.ts +11 -11
  540. package/src/transports/smooth/extract_timings_infos.ts +1 -1
  541. package/src/transports/smooth/pipelines.ts +8 -8
  542. package/src/transports/smooth/segment_loader.ts +3 -3
  543. package/src/transports/types.ts +31 -17
  544. package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
  545. package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
  546. package/src/transports/utils/parse_text_track.ts +4 -2
  547. package/src/typings/globals.d.ts +57 -40
  548. package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
  549. package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
  550. package/src/utils/__tests__/event_emitter.test.ts +1 -1
  551. package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
  552. package/src/utils/assert.ts +1 -1
  553. package/src/utils/concat_map_latest.ts +2 -4
  554. package/src/utils/defer_subscriptions.ts +1 -1
  555. package/src/utils/filter_map.ts +2 -4
  556. package/src/utils/reference.ts +234 -0
  557. package/src/utils/request/fetch.ts +3 -3
  558. package/src/utils/request/xhr.ts +2 -2
  559. package/src/utils/rx-retry_with_backoff.ts +2 -4
  560. package/tsconfig.json +4 -1
  561. package/tsconfig.modules.json +8 -3
  562. package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
  563. package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
  564. package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
  565. package/dist/_esm5.processed/core/api/clock.js +0 -363
  566. package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
  567. package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
  568. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
  569. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
  570. package/scripts/doc-generator/construct_html.js +0 -135
  571. package/scripts/doc-generator/construct_page_list.js +0 -120
  572. package/scripts/doc-generator/create_for_dir.js +0 -151
  573. package/scripts/doc-generator/get_files_to_convert.js +0 -71
  574. package/scripts/doc-generator/mkdir_parent.js +0 -21
  575. package/scripts/doc-generator/read_title_from_md.js +0 -22
  576. package/scripts/doc-generator/remove_toc_from_md.js +0 -20
  577. package/src/core/abr/create_filters.ts +0 -59
  578. package/src/core/api/clock.ts +0 -573
  579. package/src/core/init/create_stream_clock.ts +0 -93
  580. package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
@@ -20,34 +20,29 @@
20
20
  */
21
21
 
22
22
  import {
23
- BehaviorSubject,
24
23
  combineLatest as observableCombineLatest,
25
24
  Connectable,
26
25
  concat as observableConcat,
27
26
  connectable,
27
+ distinctUntilChanged,
28
28
  EMPTY,
29
+ filter,
30
+ map,
29
31
  merge as observableMerge,
32
+ mergeMap,
30
33
  Observable,
31
34
  of as observableOf,
32
35
  ReplaySubject,
33
- Subject,
34
- Subscription,
35
- } from "rxjs";
36
- import {
37
- distinctUntilChanged,
38
- filter,
39
- map,
40
- mapTo,
41
- mergeMap,
42
- mergeMapTo,
43
36
  share,
44
37
  shareReplay,
45
38
  skipWhile,
46
39
  startWith,
47
- switchMapTo,
40
+ Subject,
41
+ Subscription,
42
+ switchMap,
48
43
  take,
49
44
  takeUntil,
50
- } from "rxjs/operators";
45
+ } from "rxjs";
51
46
  import {
52
47
  events,
53
48
  exitFullscreen,
@@ -87,6 +82,9 @@ import {
87
82
  getPlayedSizeOfRange,
88
83
  getSizeOfRange,
89
84
  } from "../../utils/ranges";
85
+ import createSharedReference, {
86
+ ISharedReference,
87
+ } from "../../utils/reference";
90
88
  import warnOnce from "../../utils/warn_once";
91
89
  import {
92
90
  clearEMESession,
@@ -111,9 +109,6 @@ import SegmentBuffersStore, {
111
109
  IBufferType,
112
110
  } from "../segment_buffers";
113
111
  import { IInbandEvent } from "../stream";
114
- import createClock, {
115
- IClockTick,
116
- } from "./clock";
117
112
  import emitSeekEvents from "./emit_seek_events";
118
113
  import getPlayerState, {
119
114
  IPlayerState,
@@ -128,6 +123,9 @@ import {
128
123
  parseConstructorOptions,
129
124
  parseLoadVideoOptions,
130
125
  } from "./option_utils";
126
+ import PlaybackObserver, {
127
+ IPlaybackObservation,
128
+ } from "./playback_observer";
131
129
  import TrackChoiceManager, {
132
130
  IAudioTrackPreference,
133
131
  ITextTrackPreference,
@@ -144,7 +142,7 @@ import TrackChoiceManager, {
144
142
 
145
143
  const { DEFAULT_UNMUTED_VOLUME } = config;
146
144
 
147
- const { isActive,
145
+ const { isPageActive,
148
146
  isVideoVisible,
149
147
  onEnded$,
150
148
  onFullscreenChange$,
@@ -254,10 +252,11 @@ class Player extends EventEmitter<IPublicAPIEvent> {
254
252
  private readonly _priv_destroy$ : Subject<void>;
255
253
 
256
254
  /**
257
- * Emit true when the previous content is cleaning-up, false when it's done.
258
- * A new content cannot be launched until it emits false.
255
+ * Contains `true` when the previous content is cleaning-up, `false` when it's
256
+ * done.
257
+ * A new content cannot be launched until it stores `false`.
259
258
  */
260
- private readonly _priv_contentLock$ : BehaviorSubject<boolean>;
259
+ private readonly _priv_contentLock : ISharedReference<boolean>;
261
260
 
262
261
  /**
263
262
  * Changes on "play" and "pause" events from the media elements.
@@ -265,22 +264,22 @@ class Player extends EventEmitter<IPublicAPIEvent> {
265
264
  * Switches to ``false`` whent the "pause" event was the last received.
266
265
  * ``false`` if no such event was received for the current loaded content.
267
266
  */
268
- private readonly _priv_playing$ : ReplaySubject<boolean>;
267
+ private readonly _priv_isPlaying : ISharedReference<boolean>;
269
268
 
270
269
  /**
271
270
  * The speed that should be applied to playback.
272
271
  * Used instead of videoElement.playbackRate to allow more flexibility.
273
272
  */
274
- private readonly _priv_speed$ : BehaviorSubject<number>;
273
+ private readonly _priv_speed : ISharedReference<number>;
275
274
 
276
275
  /** Store buffer-related options used needed when initializing a content. */
277
276
  private readonly _priv_bufferOptions : {
278
- /** Emit the last wanted buffer goal. */
279
- wantedBufferAhead$ : BehaviorSubject<number>;
277
+ /** Last wanted buffer goal. */
278
+ wantedBufferAhead : ISharedReference<number>;
280
279
  /** Maximum kept buffer ahead in the current position, in seconds. */
281
- maxBufferAhead$ : BehaviorSubject<number>;
280
+ maxBufferAhead : ISharedReference<number>;
282
281
  /** Maximum kept buffer behind in the current position, in seconds. */
283
- maxBufferBehind$ : BehaviorSubject<number>;
282
+ maxBufferBehind : ISharedReference<number>;
284
283
  };
285
284
 
286
285
  /** Information on the current bitrate settings. */
@@ -295,16 +294,16 @@ class Player extends EventEmitter<IPublicAPIEvent> {
295
294
  image? : number; };
296
295
 
297
296
  /** Store last wanted minAutoBitrates for the next ABRManager instanciation. */
298
- minAutoBitrates : { audio : BehaviorSubject<number>;
299
- video : BehaviorSubject<number>; };
297
+ minAutoBitrates : { audio : ISharedReference<number>;
298
+ video : ISharedReference<number>; };
300
299
 
301
300
  /** Store last wanted maxAutoBitrates for the next ABRManager instanciation. */
302
- maxAutoBitrates : { audio : BehaviorSubject<number>;
303
- video : BehaviorSubject<number>; };
301
+ maxAutoBitrates : { audio : ISharedReference<number>;
302
+ video : ISharedReference<number>; };
304
303
 
305
304
  /** Store last wanted manual bitrates for the next ABRManager instanciation. */
306
- manualBitrates : { audio : BehaviorSubject<number>;
307
- video : BehaviorSubject<number>; };
305
+ manualBitrates : { audio : ISharedReference<number>;
306
+ video : ISharedReference<number>; };
308
307
  };
309
308
 
310
309
  /**
@@ -495,7 +494,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
495
494
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
496
495
  videoElement.preload = "auto";
497
496
 
498
- this.version = /* PLAYER_VERSION */"3.26.1";
497
+ this.version = /* PLAYER_VERSION */"3.26.2";
499
498
  this.log = log;
500
499
  this.state = "STOPPED";
501
500
  this.videoElement = videoElement;
@@ -546,26 +545,26 @@ class Player extends EventEmitter<IPublicAPIEvent> {
546
545
  )
547
546
  .subscribe((x : TextTrack[]) => this._priv_onNativeTextTracksNext(x));
548
547
 
549
- this._priv_playing$ = new ReplaySubject(1);
550
- this._priv_speed$ = new BehaviorSubject(videoElement.playbackRate);
548
+ this._priv_isPlaying = createSharedReference(false);
549
+ this._priv_speed = createSharedReference(videoElement.playbackRate);
551
550
  this._priv_preferTrickModeTracks = false;
552
- this._priv_contentLock$ = new BehaviorSubject<boolean>(false);
551
+ this._priv_contentLock = createSharedReference<boolean>(false);
553
552
 
554
553
  this._priv_bufferOptions = {
555
- wantedBufferAhead$: new BehaviorSubject(wantedBufferAhead),
556
- maxBufferAhead$: new BehaviorSubject(maxBufferAhead),
557
- maxBufferBehind$: new BehaviorSubject(maxBufferBehind),
554
+ wantedBufferAhead: createSharedReference(wantedBufferAhead),
555
+ maxBufferAhead: createSharedReference(maxBufferAhead),
556
+ maxBufferBehind: createSharedReference(maxBufferBehind),
558
557
  };
559
558
 
560
559
  this._priv_bitrateInfos = {
561
560
  lastBitrates: { audio: initialAudioBitrate,
562
561
  video: initialVideoBitrate },
563
- minAutoBitrates: { audio: new BehaviorSubject(minAudioBitrate),
564
- video: new BehaviorSubject(minVideoBitrate) },
565
- maxAutoBitrates: { audio: new BehaviorSubject(maxAudioBitrate),
566
- video: new BehaviorSubject(maxVideoBitrate) },
567
- manualBitrates: { audio: new BehaviorSubject(-1),
568
- video: new BehaviorSubject(-1) },
562
+ minAutoBitrates: { audio: createSharedReference(minAudioBitrate),
563
+ video: createSharedReference(minVideoBitrate) },
564
+ maxAutoBitrates: { audio: createSharedReference(maxAudioBitrate),
565
+ video: createSharedReference(maxVideoBitrate) },
566
+ manualBitrates: { audio: createSharedReference(-1),
567
+ video: createSharedReference(-1) },
569
568
  };
570
569
 
571
570
  this._priv_throttleWhenHidden = throttleWhenHidden;
@@ -622,20 +621,20 @@ class Player extends EventEmitter<IPublicAPIEvent> {
622
621
  this._priv_destroy$.next();
623
622
  this._priv_destroy$.complete();
624
623
 
625
- // Complete all subjects
626
- this._priv_playing$.complete();
627
- this._priv_speed$.complete();
628
- this._priv_contentLock$.complete();
629
- this._priv_bufferOptions.wantedBufferAhead$.complete();
630
- this._priv_bufferOptions.maxBufferAhead$.complete();
631
- this._priv_bufferOptions.maxBufferBehind$.complete();
624
+ // Complete all subjects and references
632
625
  this._priv_pictureInPictureEvent$.complete();
633
- this._priv_bitrateInfos.manualBitrates.video.complete();
634
- this._priv_bitrateInfos.manualBitrates.audio.complete();
635
- this._priv_bitrateInfos.minAutoBitrates.video.complete();
636
- this._priv_bitrateInfos.minAutoBitrates.audio.complete();
637
- this._priv_bitrateInfos.maxAutoBitrates.video.complete();
638
- this._priv_bitrateInfos.maxAutoBitrates.audio.complete();
626
+ this._priv_isPlaying.finish();
627
+ this._priv_speed.finish();
628
+ this._priv_contentLock.finish();
629
+ this._priv_bufferOptions.wantedBufferAhead.finish();
630
+ this._priv_bufferOptions.maxBufferAhead.finish();
631
+ this._priv_bufferOptions.maxBufferBehind.finish();
632
+ this._priv_bitrateInfos.manualBitrates.video.finish();
633
+ this._priv_bitrateInfos.manualBitrates.audio.finish();
634
+ this._priv_bitrateInfos.minAutoBitrates.video.finish();
635
+ this._priv_bitrateInfos.minAutoBitrates.audio.finish();
636
+ this._priv_bitrateInfos.maxAutoBitrates.video.finish();
637
+ this._priv_bitrateInfos.maxAutoBitrates.audio.finish();
639
638
 
640
639
  this._priv_lastContentPlaybackInfos = {};
641
640
 
@@ -745,8 +744,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
745
744
 
746
745
 
747
746
  const videoElement = this.videoElement;
748
- /** Global "clock" used for content playback */
749
- const { setCurrentTime, clock$ } = createClock(videoElement, {
747
+
748
+ /** Global "playback observer" which will emit playback conditions */
749
+ const playbackObserver = new PlaybackObserver(videoElement, {
750
750
  withMediaSource: !isDirectFile,
751
751
  lowLatencyMode,
752
752
  });
@@ -754,15 +754,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
754
754
  /** Emit playback events. */
755
755
  let playback$ : Connectable<IInitEvent>;
756
756
 
757
- const speed$ = this._priv_speed$.pipe(distinctUntilChanged());
758
-
759
757
  if (!isDirectFile) {
760
758
  const transportFn = features.transports[transport];
761
759
  if (typeof transportFn !== "function") {
762
760
  // Stop previous content and reset its state
763
761
  this.stop();
764
762
  this._priv_currentError = null;
765
- this._priv_playing$.next(false);
763
+ this._priv_isPlaying.setValue(false);
766
764
  throw new Error(`transport "${transport}" not supported`);
767
765
  }
768
766
 
@@ -813,7 +811,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
813
811
  this.stop();
814
812
 
815
813
  this._priv_currentError = null;
816
- this._priv_playing$.next(false);
814
+ this._priv_isPlaying.setValue(false);
817
815
  this._priv_contentInfos = contentInfos;
818
816
 
819
817
  const relyOnVideoVisibilityAndSize = canRelyOnVideoVisibilityAndSize();
@@ -827,7 +825,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
827
825
  "browser can't be trusted for visibility.");
828
826
  } else {
829
827
  throttlers.throttle = {
830
- video: isActive().pipe(
828
+ video: isPageActive().pipe(
831
829
  map(active => active ? Infinity :
832
830
  0),
833
831
  takeUntil(stopContent$)),
@@ -886,7 +884,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
886
884
  const init$ = initializeMediaSourcePlayback({ adaptiveOptions,
887
885
  autoPlay,
888
886
  bufferOptions,
889
- clock$,
887
+ playbackObserver,
890
888
  keySystems,
891
889
  lowLatencyMode,
892
890
  manifest$,
@@ -894,8 +892,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
894
892
  mediaElement: videoElement,
895
893
  minimumManifestUpdateInterval,
896
894
  segmentFetcherCreator,
897
- setCurrentTime,
898
- speed$,
895
+ speed: this._priv_speed,
899
896
  startAt,
900
897
  textTrackOptions })
901
898
  .pipe(takeUntil(stopContent$));
@@ -906,7 +903,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
906
903
  // Stop previous content and reset its state
907
904
  this.stop();
908
905
  this._priv_currentError = null;
909
- this._priv_playing$.next(false);
906
+ this._priv_isPlaying.setValue(false);
910
907
  if (features.directfile === null) {
911
908
  throw new Error("DirectFile feature not activated in your build.");
912
909
  }
@@ -969,12 +966,11 @@ class Player extends EventEmitter<IPublicAPIEvent> {
969
966
 
970
967
  const directfileInit$ =
971
968
  features.directfile.initDirectFile({ autoPlay,
972
- clock$,
973
969
  keySystems,
974
970
  mediaElement: videoElement,
975
- speed$: this._priv_speed$,
971
+ speed: this._priv_speed,
972
+ playbackObserver,
976
973
  startAt,
977
- setCurrentTime,
978
974
  url })
979
975
  .pipe(takeUntil(stopContent$));
980
976
 
@@ -1014,7 +1010,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1014
1010
 
1015
1011
  /** Emit state updates once the content is considered "loaded". */
1016
1012
  const loadedStateUpdates$ = observableCombineLatest([
1017
- this._priv_playing$,
1013
+ this._priv_isPlaying.asObservable(),
1018
1014
  stalled$.pipe(startWith(null)),
1019
1015
  endedEvent$.pipe(startWith(null)),
1020
1016
  seekingEvent$.pipe(startWith(null)),
@@ -1030,7 +1026,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1030
1026
  observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
1031
1027
 
1032
1028
  // LOADED as soon as the first "loaded" event is sent
1033
- loaded$.pipe(take(1), mapTo(PLAYER_STATES.LOADED)),
1029
+ loaded$.pipe(take(1), map(() => PLAYER_STATES.LOADED)),
1034
1030
 
1035
1031
  observableMerge(
1036
1032
  loadedStateUpdates$
@@ -1042,10 +1038,10 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1042
1038
 
1043
1039
  // when reloading
1044
1040
  reloading$.pipe(
1045
- switchMapTo(
1041
+ switchMap(() =>
1046
1042
  loaded$.pipe(
1047
1043
  take(1), // wait for the next loaded event
1048
- mergeMapTo(loadedStateUpdates$), // to update the state as usual
1044
+ mergeMap(() => loadedStateUpdates$), // to update the state as usual
1049
1045
  startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
1050
1046
  )
1051
1047
  )
@@ -1067,14 +1063,16 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1067
1063
  .pipe(takeUntil(stopContent$))
1068
1064
  .subscribe(e => this._priv_onPlayPauseNext(e.type === "play"));
1069
1065
 
1070
- // Link "positionUpdate" events to the clock
1071
- clock$
1066
+ const observation$ = playbackObserver.observe(true);
1067
+
1068
+ // Link "positionUpdate" events to the PlaybackObserver
1069
+ observation$
1072
1070
  .pipe(takeUntil(stopContent$))
1073
- .subscribe(x => this._priv_triggerPositionUpdate(x));
1071
+ .subscribe(o => this._priv_triggerPositionUpdate(o));
1074
1072
 
1075
1073
  // Link "seeking" and "seeked" events (once the content is loaded)
1076
1074
  loaded$.pipe(
1077
- switchMapTo(emitSeekEvents(this.videoElement, clock$)),
1075
+ switchMap(() => emitSeekEvents(this.videoElement, observation$)),
1078
1076
  takeUntil(stopContent$)
1079
1077
  ).subscribe((evt : "seeking" | "seeked") => {
1080
1078
  log.info(`API: Triggering "${evt}" event`);
@@ -1103,7 +1101,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1103
1101
  });
1104
1102
 
1105
1103
  // initialize the content only when the lock is inactive
1106
- this._priv_contentLock$
1104
+ this._priv_contentLock.asObservable()
1107
1105
  .pipe(
1108
1106
  filter((isLocked) => !isLocked),
1109
1107
  take(1),
@@ -1375,7 +1373,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1375
1373
  * @returns {Number}
1376
1374
  */
1377
1375
  getPlaybackRate() : number {
1378
- return this._priv_speed$.getValue();
1376
+ return this._priv_speed.getValue();
1379
1377
  }
1380
1378
 
1381
1379
  /**
@@ -1438,7 +1436,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1438
1436
  rate : number,
1439
1437
  opts? : { preferTrickModeTracks? : boolean }
1440
1438
  ) : void {
1441
- this._priv_speed$.next(rate);
1439
+ if (rate !== this._priv_speed.getValue()) {
1440
+ this._priv_speed.setValue(rate);
1441
+ }
1442
1442
 
1443
1443
  const preferTrickModeTracks = opts?.preferTrickModeTracks;
1444
1444
  if (typeof preferTrickModeTracks !== "boolean") {
@@ -1770,7 +1770,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1770
1770
  * @param {Number} btr
1771
1771
  */
1772
1772
  setVideoBitrate(btr : number) : void {
1773
- this._priv_bitrateInfos.manualBitrates.video.next(btr);
1773
+ this._priv_bitrateInfos.manualBitrates.video.setValue(btr);
1774
1774
  }
1775
1775
 
1776
1776
  /**
@@ -1779,7 +1779,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1779
1779
  * @param {Number} btr
1780
1780
  */
1781
1781
  setAudioBitrate(btr : number) : void {
1782
- this._priv_bitrateInfos.manualBitrates.audio.next(btr);
1782
+ this._priv_bitrateInfos.manualBitrates.audio.setValue(btr);
1783
1783
  }
1784
1784
 
1785
1785
  /**
@@ -1793,7 +1793,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1793
1793
  `Its value, "${btr}" is superior the current maximum ` +
1794
1794
  `video birate, "${maxVideoBitrate}".`);
1795
1795
  }
1796
- this._priv_bitrateInfos.minAutoBitrates.video.next(btr);
1796
+ this._priv_bitrateInfos.minAutoBitrates.video.setValue(btr);
1797
1797
  }
1798
1798
 
1799
1799
  /**
@@ -1807,7 +1807,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1807
1807
  `Its value, "${btr}" is superior the current maximum ` +
1808
1808
  `audio birate, "${maxAudioBitrate}".`);
1809
1809
  }
1810
- this._priv_bitrateInfos.minAutoBitrates.audio.next(btr);
1810
+ this._priv_bitrateInfos.minAutoBitrates.audio.setValue(btr);
1811
1811
  }
1812
1812
 
1813
1813
  /**
@@ -1821,7 +1821,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1821
1821
  `Its value, "${btr}" is inferior the current minimum ` +
1822
1822
  `video birate, "${minVideoBitrate}".`);
1823
1823
  }
1824
- this._priv_bitrateInfos.maxAutoBitrates.video.next(btr);
1824
+ this._priv_bitrateInfos.maxAutoBitrates.video.setValue(btr);
1825
1825
  }
1826
1826
 
1827
1827
  /**
@@ -1835,7 +1835,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1835
1835
  `Its value, "${btr}" is inferior the current minimum ` +
1836
1836
  `audio birate, "${minAudioBitrate}".`);
1837
1837
  }
1838
- this._priv_bitrateInfos.maxAutoBitrates.audio.next(btr);
1838
+ this._priv_bitrateInfos.maxAutoBitrates.audio.setValue(btr);
1839
1839
  }
1840
1840
 
1841
1841
  /**
@@ -1844,7 +1844,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1844
1844
  * @param {Number} depthInSeconds
1845
1845
  */
1846
1846
  setMaxBufferBehind(depthInSeconds : number) : void {
1847
- this._priv_bufferOptions.maxBufferBehind$.next(depthInSeconds);
1847
+ this._priv_bufferOptions.maxBufferBehind.setValue(depthInSeconds);
1848
1848
  }
1849
1849
 
1850
1850
  /**
@@ -1853,7 +1853,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1853
1853
  * @param {Number} depthInSeconds
1854
1854
  */
1855
1855
  setMaxBufferAhead(depthInSeconds : number) : void {
1856
- this._priv_bufferOptions.maxBufferAhead$.next(depthInSeconds);
1856
+ this._priv_bufferOptions.maxBufferAhead.setValue(depthInSeconds);
1857
1857
  }
1858
1858
 
1859
1859
  /**
@@ -1862,7 +1862,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1862
1862
  * @param {Number} sizeInSeconds
1863
1863
  */
1864
1864
  setWantedBufferAhead(sizeInSeconds : number) : void {
1865
- this._priv_bufferOptions.wantedBufferAhead$.next(sizeInSeconds);
1865
+ this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
1866
1866
  }
1867
1867
 
1868
1868
  /**
@@ -1870,7 +1870,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1870
1870
  * @returns {Number}
1871
1871
  */
1872
1872
  getMaxBufferBehind() : number {
1873
- return this._priv_bufferOptions.maxBufferBehind$.getValue();
1873
+ return this._priv_bufferOptions.maxBufferBehind.getValue();
1874
1874
  }
1875
1875
 
1876
1876
  /**
@@ -1878,7 +1878,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1878
1878
  * @returns {Number}
1879
1879
  */
1880
1880
  getMaxBufferAhead() : number {
1881
- return this._priv_bufferOptions.maxBufferAhead$.getValue();
1881
+ return this._priv_bufferOptions.maxBufferAhead.getValue();
1882
1882
  }
1883
1883
 
1884
1884
  /**
@@ -1886,7 +1886,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1886
1886
  * @returns {Number}
1887
1887
  */
1888
1888
  getWantedBufferAhead() : number {
1889
- return this._priv_bufferOptions.wantedBufferAhead$.getValue();
1889
+ return this._priv_bufferOptions.wantedBufferAhead.getValue();
1890
1890
  }
1891
1891
 
1892
1892
  /**
@@ -2327,7 +2327,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2327
2327
  log.debug("Locking `contentLock` to clean-up the current content.");
2328
2328
 
2329
2329
  // lock playback of new contents while cleaning up is pending
2330
- this._priv_contentLock$.next(true);
2330
+ this._priv_contentLock.setValue(true);
2331
2331
 
2332
2332
  this._priv_contentInfos = null;
2333
2333
  this._priv_trackChoiceManager = null;
@@ -2339,7 +2339,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2339
2339
  // EME cleaning
2340
2340
  const freeUpContentLock = () => {
2341
2341
  log.debug("Unlocking `contentLock`. Next content can begin.");
2342
- this._priv_contentLock$.next(false);
2342
+ this._priv_contentLock.setValue(false);
2343
2343
  };
2344
2344
 
2345
2345
  if (!isNullOrUndefined(this.videoElement)) {
@@ -2848,7 +2848,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2848
2848
  throw new Error("Disposed player");
2849
2849
  }
2850
2850
 
2851
- this._priv_playing$.next(isPlaying);
2851
+ this._priv_isPlaying.setValue(isPlaying);
2852
2852
  }
2853
2853
 
2854
2854
  /**
@@ -2878,13 +2878,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2878
2878
  }
2879
2879
 
2880
2880
  /**
2881
- * Triggered each time a new clock tick object is emitted.
2881
+ * Triggered each time a playback observation.
2882
2882
  *
2883
2883
  * Trigger the right Player Event
2884
2884
  *
2885
- * @param {Object} clockTick
2885
+ * @param {Object} observation
2886
2886
  */
2887
- private _priv_triggerPositionUpdate(clockTick : IClockTick) : void {
2887
+ private _priv_triggerPositionUpdate(observation : IPlaybackObservation) : void {
2888
2888
  if (this._priv_contentInfos === null) {
2889
2889
  log.warn("API: Cannot perform time update: no content loaded.");
2890
2890
  return;
@@ -2895,33 +2895,33 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2895
2895
  }
2896
2896
 
2897
2897
  const { isDirectFile, manifest } = this._priv_contentInfos;
2898
- if ((!isDirectFile && manifest === null) || isNullOrUndefined(clockTick)) {
2898
+ if ((!isDirectFile && manifest === null) || isNullOrUndefined(observation)) {
2899
2899
  return;
2900
2900
  }
2901
2901
 
2902
- this._priv_lastContentPlaybackInfos.lastPlaybackPosition = clockTick.position;
2902
+ this._priv_lastContentPlaybackInfos.lastPlaybackPosition = observation.position;
2903
2903
 
2904
2904
  const maximumPosition = manifest !== null ? manifest.getMaximumPosition() :
2905
2905
  undefined;
2906
2906
  const positionData : IPositionUpdateItem = {
2907
- position: clockTick.position,
2908
- duration: clockTick.duration,
2909
- playbackRate: clockTick.playbackRate,
2907
+ position: observation.position,
2908
+ duration: observation.duration,
2909
+ playbackRate: observation.playbackRate,
2910
2910
  maximumBufferTime: maximumPosition,
2911
2911
 
2912
2912
  // TODO fix higher up?
2913
- bufferGap: isFinite(clockTick.bufferGap) ? clockTick.bufferGap :
2913
+ bufferGap: isFinite(observation.bufferGap) ? observation.bufferGap :
2914
2914
  0,
2915
2915
  };
2916
2916
 
2917
2917
  if (manifest !== null &&
2918
2918
  maximumPosition !== undefined &&
2919
2919
  manifest.isLive &&
2920
- clockTick.position > 0
2920
+ observation.position > 0
2921
2921
  ) {
2922
2922
  const ast = manifest.availabilityStartTime ?? 0;
2923
- positionData.wallClockTime = clockTick.position + ast;
2924
- positionData.liveGap = maximumPosition - clockTick.position;
2923
+ positionData.wallClockTime = observation.position + ast;
2924
+ positionData.liveGap = maximumPosition - observation.position;
2925
2925
  }
2926
2926
 
2927
2927
  this.trigger("positionUpdate", positionData);
@@ -2975,7 +2975,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2975
2975
  return activeRepresentations[currentPeriod.id];
2976
2976
  }
2977
2977
  }
2978
- Player.version = /* PLAYER_VERSION */"3.26.1";
2978
+ Player.version = /* PLAYER_VERSION */"3.26.2";
2979
2979
 
2980
2980
  export default Player;
2981
2981
  export { IStreamEventData };
@@ -325,7 +325,8 @@ export default class TrackChoiceManager {
325
325
  const adaptations = period.getSupportedAdaptations(bufferType);
326
326
  if (periodItem !== undefined) {
327
327
  if (periodItem[bufferType] !== undefined) {
328
- log.warn(`TrackChoiceManager: ${bufferType} already added for period`, period);
328
+ log.warn(`TrackChoiceManager: ${bufferType} already added for period`,
329
+ period.start);
329
330
  return;
330
331
  } else {
331
332
  periodItem[bufferType] = { adaptations, adaptation$ };
@@ -348,13 +349,15 @@ export default class TrackChoiceManager {
348
349
  ) : void {
349
350
  const periodIndex = findPeriodIndex(this._periods, period);
350
351
  if (periodIndex === undefined) {
351
- log.warn(`TrackChoiceManager: ${bufferType} not found for period`, period);
352
+ log.warn(`TrackChoiceManager: ${bufferType} not found for period`,
353
+ period.start);
352
354
  return;
353
355
  }
354
356
 
355
357
  const periodItem = this._periods.get(periodIndex);
356
358
  if (periodItem[bufferType] === undefined) {
357
- log.warn(`TrackChoiceManager: ${bufferType} already removed for period`, period);
359
+ log.warn(`TrackChoiceManager: ${bufferType} already removed for period`,
360
+ period.start);
358
361
  return;
359
362
  }
360
363
  delete periodItem[bufferType];
@@ -23,8 +23,10 @@
23
23
  /* eslint-disable @typescript-eslint/restrict-template-expressions */
24
24
  /* eslint-disable no-restricted-properties */
25
25
 
26
- import { Subject } from "rxjs";
27
- import { takeUntil } from "rxjs/operators";
26
+ import {
27
+ Subject,
28
+ takeUntil,
29
+ } from "rxjs";
28
30
  import { ICustomError } from "../../../../errors";
29
31
  import { concat } from "../../../../utils/byte_parsing";
30
32
  import { IContentProtection } from "../../types";
@@ -353,7 +355,7 @@ function checkGetLicense(
353
355
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
354
356
  .subscribe((evt : any) => {
355
357
  if (evt.type === "created-media-keys") {
356
- evt.value.attachMediaKeys$.next();
358
+ evt.value.canAttachMediaKeys.setValue(true);
357
359
  }
358
360
  eventsReceived++;
359
361
  // Those first three have been tested enough