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
@@ -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";
@@ -59,18 +58,19 @@ import isNullOrUndefined from "../../utils/is_null_or_undefined";
59
58
  import objectAssign from "../../utils/object_assign";
60
59
  import PPromise from "../../utils/promise";
61
60
  import { getLeftSizeOfRange, getPlayedSizeOfRange, getSizeOfRange, } from "../../utils/ranges";
61
+ import createSharedReference from "../../utils/reference";
62
62
  import warnOnce from "../../utils/warn_once";
63
63
  import { clearEMESession, disposeEME, getCurrentKeySystem, } from "../eme";
64
64
  import { ManifestFetcher, SegmentFetcherCreator, } from "../fetchers";
65
65
  import initializeMediaSourcePlayback from "../init";
66
- import createClock from "./clock";
67
66
  import emitSeekEvents from "./emit_seek_events";
68
67
  import getPlayerState, { PLAYER_STATES, } from "./get_player_state";
69
68
  import { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, } from "./option_utils";
69
+ import PlaybackObserver from "./playback_observer";
70
70
  import TrackChoiceManager from "./track_choice_manager";
71
71
  /* eslint-disable @typescript-eslint/naming-convention */
72
72
  var DEFAULT_UNMUTED_VOLUME = config.DEFAULT_UNMUTED_VOLUME;
73
- 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$;
74
74
  /**
75
75
  * @class Player
76
76
  * @extends EventEmitter
@@ -88,7 +88,7 @@ var Player = /** @class */ (function (_super) {
88
88
  // Workaround to support Firefox autoplay on FF 42.
89
89
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
90
90
  videoElement.preload = "auto";
91
- _this.version = /* PLAYER_VERSION */ "3.26.1";
91
+ _this.version = /* PLAYER_VERSION */ "3.26.2";
92
92
  _this.log = log;
93
93
  _this.state = "STOPPED";
94
94
  _this.videoElement = videoElement;
@@ -130,24 +130,24 @@ var Player = /** @class */ (function (_super) {
130
130
  return true;
131
131
  }))
132
132
  .subscribe(function (x) { return _this._priv_onNativeTextTracksNext(x); });
133
- _this._priv_playing$ = new ReplaySubject(1);
134
- _this._priv_speed$ = new BehaviorSubject(videoElement.playbackRate);
133
+ _this._priv_isPlaying = createSharedReference(false);
134
+ _this._priv_speed = createSharedReference(videoElement.playbackRate);
135
135
  _this._priv_preferTrickModeTracks = false;
136
- _this._priv_contentLock$ = new BehaviorSubject(false);
136
+ _this._priv_contentLock = createSharedReference(false);
137
137
  _this._priv_bufferOptions = {
138
- wantedBufferAhead$: new BehaviorSubject(wantedBufferAhead),
139
- maxBufferAhead$: new BehaviorSubject(maxBufferAhead),
140
- maxBufferBehind$: new BehaviorSubject(maxBufferBehind),
138
+ wantedBufferAhead: createSharedReference(wantedBufferAhead),
139
+ maxBufferAhead: createSharedReference(maxBufferAhead),
140
+ maxBufferBehind: createSharedReference(maxBufferBehind),
141
141
  };
142
142
  _this._priv_bitrateInfos = {
143
143
  lastBitrates: { audio: initialAudioBitrate,
144
144
  video: initialVideoBitrate },
145
- minAutoBitrates: { audio: new BehaviorSubject(minAudioBitrate),
146
- video: new BehaviorSubject(minVideoBitrate) },
147
- maxAutoBitrates: { audio: new BehaviorSubject(maxAudioBitrate),
148
- video: new BehaviorSubject(maxVideoBitrate) },
149
- manualBitrates: { audio: new BehaviorSubject(-1),
150
- 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) },
151
151
  };
152
152
  _this._priv_throttleWhenHidden = throttleWhenHidden;
153
153
  _this._priv_throttleVideoBitrateWhenHidden = throttleVideoBitrateWhenHidden;
@@ -230,20 +230,20 @@ var Player = /** @class */ (function (_super) {
230
230
  // free Observables linked to the Player instance
231
231
  this._priv_destroy$.next();
232
232
  this._priv_destroy$.complete();
233
- // Complete all subjects
234
- this._priv_playing$.complete();
235
- this._priv_speed$.complete();
236
- this._priv_contentLock$.complete();
237
- this._priv_bufferOptions.wantedBufferAhead$.complete();
238
- this._priv_bufferOptions.maxBufferAhead$.complete();
239
- this._priv_bufferOptions.maxBufferBehind$.complete();
233
+ // Complete all subjects and references
240
234
  this._priv_pictureInPictureEvent$.complete();
241
- this._priv_bitrateInfos.manualBitrates.video.complete();
242
- this._priv_bitrateInfos.manualBitrates.audio.complete();
243
- this._priv_bitrateInfos.minAutoBitrates.video.complete();
244
- this._priv_bitrateInfos.minAutoBitrates.audio.complete();
245
- this._priv_bitrateInfos.maxAutoBitrates.video.complete();
246
- 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();
247
247
  this._priv_lastContentPlaybackInfos = {};
248
248
  // un-attach video element
249
249
  this.videoElement = null;
@@ -326,22 +326,21 @@ var Player = /** @class */ (function (_super) {
326
326
  initialAudioTrack: defaultAudioTrack,
327
327
  initialTextTrack: defaultTextTrack };
328
328
  var videoElement = this.videoElement;
329
- /** Global "clock" used for content playback */
330
- var _d = createClock(videoElement, {
329
+ /** Global "playback observer" which will emit playback conditions */
330
+ var playbackObserver = new PlaybackObserver(videoElement, {
331
331
  withMediaSource: !isDirectFile,
332
332
  lowLatencyMode: lowLatencyMode,
333
- }), setCurrentTime = _d.setCurrentTime, clock$ = _d.clock$;
333
+ });
334
334
  /** Emit playback events. */
335
335
  var playback$;
336
- var speed$ = this._priv_speed$.pipe(distinctUntilChanged());
337
336
  if (!isDirectFile) {
338
337
  var transportFn = features.transports[transport];
339
338
  if (typeof transportFn !== "function") {
340
339
  // Stop previous content and reset its state
341
340
  this.stop();
342
341
  this._priv_currentError = null;
343
- this._priv_playing$.next(false);
344
- throw new Error("transport \"" + transport + "\" not supported");
342
+ this._priv_isPlaying.setValue(false);
343
+ throw new Error("transport \"".concat(transport, "\" not supported"));
345
344
  }
346
345
  var transportPipelines = transportFn(transportOptions);
347
346
  var offlineRetry = networkConfig.offlineRetry, segmentRetry = networkConfig.segmentRetry, manifestRetry = networkConfig.manifestRetry;
@@ -375,7 +374,7 @@ var Player = /** @class */ (function (_super) {
375
374
  // take time.
376
375
  this.stop();
377
376
  this._priv_currentError = null;
378
- this._priv_playing$.next(false);
377
+ this._priv_isPlaying.setValue(false);
379
378
  this._priv_contentInfos = contentInfos;
380
379
  var relyOnVideoVisibilityAndSize = canRelyOnVideoVisibilityAndSize();
381
380
  var throttlers = { throttle: {},
@@ -388,7 +387,7 @@ var Player = /** @class */ (function (_super) {
388
387
  }
389
388
  else {
390
389
  throttlers.throttle = {
391
- video: isActive().pipe(map(function (active) { return active ? Infinity :
390
+ video: isPageActive().pipe(map(function (active) { return active ? Infinity :
392
391
  0; }), takeUntil(stopContent$)),
393
392
  };
394
393
  }
@@ -434,7 +433,7 @@ var Player = /** @class */ (function (_super) {
434
433
  textTrackElement: options.textTrackElement };
435
434
  var bufferOptions = objectAssign({ audioTrackSwitchingMode: audioTrackSwitchingMode, enableFastSwitching: enableFastSwitching, manualBitrateSwitchingMode: manualBitrateSwitchingMode, onCodecSwitch: onCodecSwitch }, this._priv_bufferOptions);
436
435
  // We've every options set up. Start everything now
437
- var init$ = initializeMediaSourcePlayback({ adaptiveOptions: adaptiveOptions, autoPlay: autoPlay, bufferOptions: bufferOptions, clock$: clock$, keySystems: keySystems, lowLatencyMode: lowLatencyMode, manifest$: manifest$, manifestFetcher: manifestFetcher, mediaElement: videoElement, minimumManifestUpdateInterval: minimumManifestUpdateInterval, segmentFetcherCreator: segmentFetcherCreator, setCurrentTime: setCurrentTime, speed$: speed$, startAt: startAt, 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 })
438
437
  .pipe(takeUntil(stopContent$));
439
438
  playback$ = connectable(init$, { connector: function () { return new Subject(); },
440
439
  resetOnDisconnect: false });
@@ -443,7 +442,7 @@ var Player = /** @class */ (function (_super) {
443
442
  // Stop previous content and reset its state
444
443
  this.stop();
445
444
  this._priv_currentError = null;
446
- this._priv_playing$.next(false);
445
+ this._priv_isPlaying.setValue(false);
447
446
  if (features.directfile === null) {
448
447
  throw new Error("DirectFile feature not activated in your build.");
449
448
  }
@@ -492,8 +491,8 @@ var Player = /** @class */ (function (_super) {
492
491
  .addEventListener("textTrackChange", function (val) {
493
492
  return _this.trigger("textTrackChange", val);
494
493
  });
495
- var directfileInit$ = features.directfile.initDirectFile({ autoPlay: autoPlay, clock$: clock$, keySystems: keySystems, mediaElement: videoElement,
496
- speed$: this._priv_speed$, startAt: startAt, setCurrentTime: setCurrentTime, 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 })
497
496
  .pipe(takeUntil(stopContent$));
498
497
  playback$ = connectable(directfileInit$, { connector: function () { return new Subject(); },
499
498
  resetOnDisconnect: false });
@@ -518,7 +517,7 @@ var Player = /** @class */ (function (_super) {
518
517
  var seekingEvent$ = onSeeking$(videoElement);
519
518
  /** Emit state updates once the content is considered "loaded". */
520
519
  var loadedStateUpdates$ = observableCombineLatest([
521
- this._priv_playing$,
520
+ this._priv_isPlaying.asObservable(),
522
521
  stalled$.pipe(startWith(null)),
523
522
  endedEvent$.pipe(startWith(null)),
524
523
  seekingEvent$.pipe(startWith(null)),
@@ -529,15 +528,17 @@ var Player = /** @class */ (function (_super) {
529
528
  /** Emit all player "state" updates. */
530
529
  var playerState$ = observableConcat(observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
531
530
  // LOADED as soon as the first "loaded" event is sent
532
- loaded$.pipe(take(1), mapTo(PLAYER_STATES.LOADED)), observableMerge(loadedStateUpdates$
531
+ loaded$.pipe(take(1), map(function () { return PLAYER_STATES.LOADED; })), observableMerge(loadedStateUpdates$
533
532
  .pipe(
534
533
  // From the first reload onward, we enter another dynamic (below)
535
534
  takeUntil(reloading$), skipWhile(function (state) { return state === PLAYER_STATES.PAUSED; })),
536
535
  // when reloading
537
- reloading$.pipe(switchMapTo(loaded$.pipe(take(1), // wait for the next loaded event
538
- mergeMapTo(loadedStateUpdates$), // to update the state as usual
539
- startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
540
- ))))).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());
541
542
  var playbackSubscription;
542
543
  stopContent$
543
544
  .pipe(take(1))
@@ -550,13 +551,14 @@ var Player = /** @class */ (function (_super) {
550
551
  onPlayPause$(videoElement)
551
552
  .pipe(takeUntil(stopContent$))
552
553
  .subscribe(function (e) { return _this._priv_onPlayPauseNext(e.type === "play"); });
553
- // Link "positionUpdate" events to the clock
554
- clock$
554
+ var observation$ = playbackObserver.observe(true);
555
+ // Link "positionUpdate" events to the PlaybackObserver
556
+ observation$
555
557
  .pipe(takeUntil(stopContent$))
556
- .subscribe(function (x) { return _this._priv_triggerPositionUpdate(x); });
558
+ .subscribe(function (o) { return _this._priv_triggerPositionUpdate(o); });
557
559
  // Link "seeking" and "seeked" events (once the content is loaded)
558
- loaded$.pipe(switchMapTo(emitSeekEvents(this.videoElement, clock$)), takeUntil(stopContent$)).subscribe(function (evt) {
559
- 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"));
560
562
  _this.trigger(evt, null);
561
563
  });
562
564
  // Handle state updates
@@ -577,7 +579,7 @@ var Player = /** @class */ (function (_super) {
577
579
  complete: function () { return _this._priv_onPlaybackFinished(); },
578
580
  });
579
581
  // initialize the content only when the lock is inactive
580
- this._priv_contentLock$
582
+ this._priv_contentLock.asObservable()
581
583
  .pipe(filter(function (isLocked) { return !isLocked; }), take(1), takeUntil(stopContent$))
582
584
  .subscribe(function () {
583
585
  // start playback!
@@ -825,7 +827,7 @@ var Player = /** @class */ (function (_super) {
825
827
  * @returns {Number}
826
828
  */
827
829
  Player.prototype.getPlaybackRate = function () {
828
- return this._priv_speed$.getValue();
830
+ return this._priv_speed.getValue();
829
831
  };
830
832
  /**
831
833
  * Update the playback rate of the video.
@@ -884,7 +886,9 @@ var Player = /** @class */ (function (_super) {
884
886
  * @param {Object} opts
885
887
  */
886
888
  Player.prototype.setPlaybackRate = function (rate, opts) {
887
- this._priv_speed$.next(rate);
889
+ if (rate !== this._priv_speed.getValue()) {
890
+ this._priv_speed.setValue(rate);
891
+ }
888
892
  var preferTrickModeTracks = opts === null || opts === void 0 ? void 0 : opts.preferTrickModeTracks;
889
893
  if (typeof preferTrickModeTracks !== "boolean") {
890
894
  return;
@@ -1181,7 +1185,7 @@ var Player = /** @class */ (function (_super) {
1181
1185
  * @param {Number} btr
1182
1186
  */
1183
1187
  Player.prototype.setVideoBitrate = function (btr) {
1184
- this._priv_bitrateInfos.manualBitrates.video.next(btr);
1188
+ this._priv_bitrateInfos.manualBitrates.video.setValue(btr);
1185
1189
  };
1186
1190
  /**
1187
1191
  * Force the audio bitrate to a given value. Act as a ceil.
@@ -1189,7 +1193,7 @@ var Player = /** @class */ (function (_super) {
1189
1193
  * @param {Number} btr
1190
1194
  */
1191
1195
  Player.prototype.setAudioBitrate = function (btr) {
1192
- this._priv_bitrateInfos.manualBitrates.audio.next(btr);
1196
+ this._priv_bitrateInfos.manualBitrates.audio.setValue(btr);
1193
1197
  };
1194
1198
  /**
1195
1199
  * Update the minimum video bitrate the user can switch to.
@@ -1199,10 +1203,10 @@ var Player = /** @class */ (function (_super) {
1199
1203
  var maxVideoBitrate = this._priv_bitrateInfos.maxAutoBitrates.video.getValue();
1200
1204
  if (btr > maxVideoBitrate) {
1201
1205
  throw new Error("Invalid minimum video bitrate given. " +
1202
- ("Its value, \"" + btr + "\" is superior the current maximum ") +
1203
- ("video birate, \"" + maxVideoBitrate + "\"."));
1206
+ "Its value, \"".concat(btr, "\" is superior the current maximum ") +
1207
+ "video birate, \"".concat(maxVideoBitrate, "\"."));
1204
1208
  }
1205
- this._priv_bitrateInfos.minAutoBitrates.video.next(btr);
1209
+ this._priv_bitrateInfos.minAutoBitrates.video.setValue(btr);
1206
1210
  };
1207
1211
  /**
1208
1212
  * Update the minimum audio bitrate the user can switch to.
@@ -1212,10 +1216,10 @@ var Player = /** @class */ (function (_super) {
1212
1216
  var maxAudioBitrate = this._priv_bitrateInfos.maxAutoBitrates.audio.getValue();
1213
1217
  if (btr > maxAudioBitrate) {
1214
1218
  throw new Error("Invalid minimum audio bitrate given. " +
1215
- ("Its value, \"" + btr + "\" is superior the current maximum ") +
1216
- ("audio birate, \"" + maxAudioBitrate + "\"."));
1219
+ "Its value, \"".concat(btr, "\" is superior the current maximum ") +
1220
+ "audio birate, \"".concat(maxAudioBitrate, "\"."));
1217
1221
  }
1218
- this._priv_bitrateInfos.minAutoBitrates.audio.next(btr);
1222
+ this._priv_bitrateInfos.minAutoBitrates.audio.setValue(btr);
1219
1223
  };
1220
1224
  /**
1221
1225
  * Update the maximum video bitrate the user can switch to.
@@ -1225,10 +1229,10 @@ var Player = /** @class */ (function (_super) {
1225
1229
  var minVideoBitrate = this._priv_bitrateInfos.minAutoBitrates.video.getValue();
1226
1230
  if (btr < minVideoBitrate) {
1227
1231
  throw new Error("Invalid maximum video bitrate given. " +
1228
- ("Its value, \"" + btr + "\" is inferior the current minimum ") +
1229
- ("video birate, \"" + minVideoBitrate + "\"."));
1232
+ "Its value, \"".concat(btr, "\" is inferior the current minimum ") +
1233
+ "video birate, \"".concat(minVideoBitrate, "\"."));
1230
1234
  }
1231
- this._priv_bitrateInfos.maxAutoBitrates.video.next(btr);
1235
+ this._priv_bitrateInfos.maxAutoBitrates.video.setValue(btr);
1232
1236
  };
1233
1237
  /**
1234
1238
  * Update the maximum audio bitrate the user can switch to.
@@ -1238,10 +1242,10 @@ var Player = /** @class */ (function (_super) {
1238
1242
  var minAudioBitrate = this._priv_bitrateInfos.minAutoBitrates.audio.getValue();
1239
1243
  if (btr < minAudioBitrate) {
1240
1244
  throw new Error("Invalid maximum audio bitrate given. " +
1241
- ("Its value, \"" + btr + "\" is inferior the current minimum ") +
1242
- ("audio birate, \"" + minAudioBitrate + "\"."));
1245
+ "Its value, \"".concat(btr, "\" is inferior the current minimum ") +
1246
+ "audio birate, \"".concat(minAudioBitrate, "\"."));
1243
1247
  }
1244
- this._priv_bitrateInfos.maxAutoBitrates.audio.next(btr);
1248
+ this._priv_bitrateInfos.maxAutoBitrates.audio.setValue(btr);
1245
1249
  };
1246
1250
  /**
1247
1251
  * Set the max buffer size for the buffer behind the current position.
@@ -1249,7 +1253,7 @@ var Player = /** @class */ (function (_super) {
1249
1253
  * @param {Number} depthInSeconds
1250
1254
  */
1251
1255
  Player.prototype.setMaxBufferBehind = function (depthInSeconds) {
1252
- this._priv_bufferOptions.maxBufferBehind$.next(depthInSeconds);
1256
+ this._priv_bufferOptions.maxBufferBehind.setValue(depthInSeconds);
1253
1257
  };
1254
1258
  /**
1255
1259
  * Set the max buffer size for the buffer behind the current position.
@@ -1257,7 +1261,7 @@ var Player = /** @class */ (function (_super) {
1257
1261
  * @param {Number} depthInSeconds
1258
1262
  */
1259
1263
  Player.prototype.setMaxBufferAhead = function (depthInSeconds) {
1260
- this._priv_bufferOptions.maxBufferAhead$.next(depthInSeconds);
1264
+ this._priv_bufferOptions.maxBufferAhead.setValue(depthInSeconds);
1261
1265
  };
1262
1266
  /**
1263
1267
  * Set the max buffer size for the buffer ahead of the current position.
@@ -1265,28 +1269,28 @@ var Player = /** @class */ (function (_super) {
1265
1269
  * @param {Number} sizeInSeconds
1266
1270
  */
1267
1271
  Player.prototype.setWantedBufferAhead = function (sizeInSeconds) {
1268
- this._priv_bufferOptions.wantedBufferAhead$.next(sizeInSeconds);
1272
+ this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
1269
1273
  };
1270
1274
  /**
1271
1275
  * Returns the max buffer size for the buffer behind the current position.
1272
1276
  * @returns {Number}
1273
1277
  */
1274
1278
  Player.prototype.getMaxBufferBehind = function () {
1275
- return this._priv_bufferOptions.maxBufferBehind$.getValue();
1279
+ return this._priv_bufferOptions.maxBufferBehind.getValue();
1276
1280
  };
1277
1281
  /**
1278
1282
  * Returns the max buffer size for the buffer behind the current position.
1279
1283
  * @returns {Number}
1280
1284
  */
1281
1285
  Player.prototype.getMaxBufferAhead = function () {
1282
- return this._priv_bufferOptions.maxBufferAhead$.getValue();
1286
+ return this._priv_bufferOptions.maxBufferAhead.getValue();
1283
1287
  };
1284
1288
  /**
1285
1289
  * Returns the max buffer size for the buffer ahead of the current position.
1286
1290
  * @returns {Number}
1287
1291
  */
1288
1292
  Player.prototype.getWantedBufferAhead = function () {
1289
- return this._priv_bufferOptions.wantedBufferAhead$.getValue();
1293
+ return this._priv_bufferOptions.wantedBufferAhead.getValue();
1290
1294
  };
1291
1295
  /**
1292
1296
  * Returns type of current keysystem (e.g. playready, widevine) if the content
@@ -1702,7 +1706,7 @@ var Player = /** @class */ (function (_super) {
1702
1706
  var _a;
1703
1707
  log.debug("Locking `contentLock` to clean-up the current content.");
1704
1708
  // lock playback of new contents while cleaning up is pending
1705
- this._priv_contentLock$.next(true);
1709
+ this._priv_contentLock.setValue(true);
1706
1710
  this._priv_contentInfos = null;
1707
1711
  this._priv_trackChoiceManager = null;
1708
1712
  (_a = this._priv_mediaElementTrackChoiceManager) === null || _a === void 0 ? void 0 : _a.dispose();
@@ -1711,7 +1715,7 @@ var Player = /** @class */ (function (_super) {
1711
1715
  // EME cleaning
1712
1716
  var freeUpContentLock = function () {
1713
1717
  log.debug("Unlocking `contentLock`. Next content can begin.");
1714
- _this._priv_contentLock$.next(false);
1718
+ _this._priv_contentLock.setValue(false);
1715
1719
  };
1716
1720
  if (!isNullOrUndefined(this.videoElement)) {
1717
1721
  clearEMESession(this.videoElement)
@@ -1960,7 +1964,7 @@ var Player = /** @class */ (function (_super) {
1960
1964
  break;
1961
1965
  case "audio":
1962
1966
  if (this._priv_trackChoiceManager === null) {
1963
- log.error("API: TrackChoiceManager not instanciated for a new " + type + " period");
1967
+ log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
1964
1968
  adaptation$.next(null);
1965
1969
  }
1966
1970
  else {
@@ -1970,7 +1974,7 @@ var Player = /** @class */ (function (_super) {
1970
1974
  break;
1971
1975
  case "text":
1972
1976
  if (this._priv_trackChoiceManager === null) {
1973
- log.error("API: TrackChoiceManager not instanciated for a new " + type + " period");
1977
+ log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
1974
1978
  adaptation$.next(null);
1975
1979
  }
1976
1980
  else {
@@ -2153,7 +2157,7 @@ var Player = /** @class */ (function (_super) {
2153
2157
  if (this.videoElement === null) {
2154
2158
  throw new Error("Disposed player");
2155
2159
  }
2156
- this._priv_playing$.next(isPlaying);
2160
+ this._priv_isPlaying.setValue(isPlaying);
2157
2161
  };
2158
2162
  /**
2159
2163
  * Triggered each time a textTrack is added to the video DOM Element.
@@ -2180,13 +2184,13 @@ var Player = /** @class */ (function (_super) {
2180
2184
  }
2181
2185
  };
2182
2186
  /**
2183
- * Triggered each time a new clock tick object is emitted.
2187
+ * Triggered each time a playback observation.
2184
2188
  *
2185
2189
  * Trigger the right Player Event
2186
2190
  *
2187
- * @param {Object} clockTick
2191
+ * @param {Object} observation
2188
2192
  */
2189
- Player.prototype._priv_triggerPositionUpdate = function (clockTick) {
2193
+ Player.prototype._priv_triggerPositionUpdate = function (observation) {
2190
2194
  var _a;
2191
2195
  if (this._priv_contentInfos === null) {
2192
2196
  log.warn("API: Cannot perform time update: no content loaded.");
@@ -2196,28 +2200,28 @@ var Player = /** @class */ (function (_super) {
2196
2200
  return;
2197
2201
  }
2198
2202
  var _b = this._priv_contentInfos, isDirectFile = _b.isDirectFile, manifest = _b.manifest;
2199
- if ((!isDirectFile && manifest === null) || isNullOrUndefined(clockTick)) {
2203
+ if ((!isDirectFile && manifest === null) || isNullOrUndefined(observation)) {
2200
2204
  return;
2201
2205
  }
2202
- this._priv_lastContentPlaybackInfos.lastPlaybackPosition = clockTick.position;
2206
+ this._priv_lastContentPlaybackInfos.lastPlaybackPosition = observation.position;
2203
2207
  var maximumPosition = manifest !== null ? manifest.getMaximumPosition() :
2204
2208
  undefined;
2205
2209
  var positionData = {
2206
- position: clockTick.position,
2207
- duration: clockTick.duration,
2208
- playbackRate: clockTick.playbackRate,
2210
+ position: observation.position,
2211
+ duration: observation.duration,
2212
+ playbackRate: observation.playbackRate,
2209
2213
  maximumBufferTime: maximumPosition,
2210
2214
  // TODO fix higher up?
2211
- bufferGap: isFinite(clockTick.bufferGap) ? clockTick.bufferGap :
2215
+ bufferGap: isFinite(observation.bufferGap) ? observation.bufferGap :
2212
2216
  0,
2213
2217
  };
2214
2218
  if (manifest !== null &&
2215
2219
  maximumPosition !== undefined &&
2216
2220
  manifest.isLive &&
2217
- clockTick.position > 0) {
2221
+ observation.position > 0) {
2218
2222
  var ast = (_a = manifest.availabilityStartTime) !== null && _a !== void 0 ? _a : 0;
2219
- positionData.wallClockTime = clockTick.position + ast;
2220
- positionData.liveGap = maximumPosition - clockTick.position;
2223
+ positionData.wallClockTime = observation.position + ast;
2224
+ positionData.liveGap = maximumPosition - observation.position;
2221
2225
  }
2222
2226
  this.trigger("positionUpdate", positionData);
2223
2227
  };
@@ -2260,5 +2264,5 @@ var Player = /** @class */ (function (_super) {
2260
2264
  };
2261
2265
  return Player;
2262
2266
  }(EventEmitter));
2263
- Player.version = /* PLAYER_VERSION */ "3.26.1";
2267
+ Player.version = /* PLAYER_VERSION */ "3.26.2";
2264
2268
  export default Player;
@@ -114,7 +114,7 @@ var TrackChoiceManager = /** @class */ (function () {
114
114
  var adaptations = period.getSupportedAdaptations(bufferType);
115
115
  if (periodItem !== undefined) {
116
116
  if (periodItem[bufferType] !== undefined) {
117
- log.warn("TrackChoiceManager: " + bufferType + " already added for period", period);
117
+ log.warn("TrackChoiceManager: ".concat(bufferType, " already added for period"), period.start);
118
118
  return;
119
119
  }
120
120
  else {
@@ -134,12 +134,12 @@ var TrackChoiceManager = /** @class */ (function () {
134
134
  TrackChoiceManager.prototype.removePeriod = function (bufferType, period) {
135
135
  var periodIndex = findPeriodIndex(this._periods, period);
136
136
  if (periodIndex === undefined) {
137
- log.warn("TrackChoiceManager: " + bufferType + " not found for period", period);
137
+ log.warn("TrackChoiceManager: ".concat(bufferType, " not found for period"), period.start);
138
138
  return;
139
139
  }
140
140
  var periodItem = this._periods.get(periodIndex);
141
141
  if (periodItem[bufferType] === undefined) {
142
- log.warn("TrackChoiceManager: " + bufferType + " already removed for period", period);
142
+ log.warn("TrackChoiceManager: ".concat(bufferType, " already removed for period"), period.start);
143
143
  return;
144
144
  }
145
145
  delete periodItem[bufferType];
@@ -45,6 +45,7 @@ var __assign = (this && this.__assign) || function () {
45
45
  /* eslint-disable @typescript-eslint/no-unsafe-call */
46
46
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
47
47
  /* eslint-disable @typescript-eslint/no-unsafe-return */
48
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
48
49
  /* eslint-disable no-restricted-properties */
49
50
  import { defer as observableDefer, of as observableOf, Subject, } from "rxjs";
50
51
  import { base64ToBytes, bytesToBase64, } from "../../../../utils/base64";
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { defer as observableDefer, of as observableOf, } from "rxjs";
17
- import { mergeMap, tap } from "rxjs/operators";
16
+ import { defer as observableDefer, mergeMap, tap, of as observableOf, } from "rxjs";
18
17
  import { setMediaKeys, } from "../../compat";
19
18
  import log from "../../log";
20
19
  import MediaKeysInfosStore from "./media_keys_infos_store";
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import getUUIDKidFromKeyStatusKID from "../../compat/eme/get_uuid_kid_from_keystatus_kid";
17
17
  import { EncryptedMediaError } from "../../errors";
18
+ import { bytesToHex } from "../../utils/string_parsing";
18
19
  var KEY_STATUSES = { EXPIRED: "expired",
19
20
  INTERNAL_ERROR: "internal-error",
20
21
  OUTPUT_RESTRICTED: "output-restricted" };
@@ -44,7 +45,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
44
45
  var keyId = getUUIDKidFromKeyStatusKID(keySystem, new Uint8Array(keyStatusKeyId));
45
46
  switch (keyStatus) {
46
47
  case KEY_STATUSES.EXPIRED: {
47
- var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A decryption key expired");
48
+ var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A decryption key expired (".concat(bytesToHex(keyId), ")"));
48
49
  if (throwOnLicenseExpiration !== false) {
49
50
  throw error;
50
51
  }
@@ -53,8 +54,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
53
54
  break;
54
55
  }
55
56
  case KEY_STATUSES.INTERNAL_ERROR: {
56
- var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "An invalid key status has been " +
57
- "encountered: " + keyStatus);
57
+ var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A \"".concat(keyStatus, "\" status has been encountered (").concat(bytesToHex(keyId), ")"));
58
58
  if (fallbackOn.keyInternalError !== true) {
59
59
  throw error;
60
60
  }
@@ -63,8 +63,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
63
63
  break;
64
64
  }
65
65
  case KEY_STATUSES.OUTPUT_RESTRICTED: {
66
- var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "An invalid key status has been " +
67
- "encountered: " + keyStatus);
66
+ var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A \"".concat(keyStatus, "\" status has been encountered (").concat(bytesToHex(keyId), ")"));
68
67
  if (fallbackOn.keyOutputRestricted !== true) {
69
68
  throw error;
70
69
  }
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { EMPTY, merge as observableMerge, } from "rxjs";
17
- import { mapTo, startWith, } from "rxjs/operators";
16
+ import { EMPTY, mapTo, merge as observableMerge, startWith, } from "rxjs";
18
17
  /**
19
18
  * Close sessions from the loadedSessionsStore to allow at maximum `limit`
20
19
  * stored MediaKeySessions in it.
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { defer as observableDefer, EMPTY, } from "rxjs";
17
- import { ignoreElements } from "rxjs/operators";
16
+ import { defer as observableDefer, EMPTY, ignoreElements, } from "rxjs";
18
17
  import { shouldUnsetMediaKeys } from "../../compat/";
19
18
  import log from "../../log";
20
19
  import disposeMediaKeys from "./dispose_media_keys";
@@ -38,6 +37,11 @@ export default function clearEMESession(mediaElement) {
38
37
  currentState.keySystemOptions.closeSessionsOnStop === true) {
39
38
  log.info("EME: closing all current sessions.");
40
39
  return currentState.loadedSessionsStore.closeAllSessions()
40
+ // NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
41
+ // first type parameter as `any` instead of the perfectly fine `unknown`,
42
+ // leading to linter issues, as it forbids the usage of `any`.
43
+ // This is why we're disabling the eslint rule.
44
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */
41
45
  .pipe(ignoreElements());
42
46
  }
43
47
  log.info("EME: Nothing to clear. Returning right away. No state =", currentState === null);
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { defer as observableDefer, of as observableOf, } from "rxjs";
17
- import { catchError, map, mergeMap, } from "rxjs/operators";
16
+ import { catchError, defer as observableDefer, map, mergeMap, of as observableOf, } from "rxjs";
18
17
  import { loadSession, } from "../../compat";
19
18
  import log from "../../log";
20
19
  import isSessionUsable from "./utils/is_session_usable";
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { defer as observableDefer, of as observableOf, } from "rxjs";
17
- import { mergeMapTo } from "rxjs/operators";
16
+ import { defer as observableDefer, mergeMap, of as observableOf, } from "rxjs";
18
17
  import { setMediaKeys } from "../../compat";
19
18
  import log from "../../log";
20
19
  import MediaKeysInfosStore from "./media_keys_infos_store";
@@ -32,6 +31,6 @@ export default function disposeMediaKeys(mediaElement) {
32
31
  var loadedSessionsStore = currentState.loadedSessionsStore;
33
32
  MediaKeysInfosStore.clearState(mediaElement);
34
33
  return loadedSessionsStore.closeAllSessions()
35
- .pipe(mergeMapTo(setMediaKeys(mediaElement, null)));
34
+ .pipe(mergeMap(function () { return setMediaKeys(mediaElement, null); }));
36
35
  });
37
36
  }