rx-player 3.27.1-dev.2022060300 → 3.28.0-dev.2022061700

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 (473) hide show
  1. package/CHANGELOG.md +17 -4
  2. package/FILES.md +7 -7
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/change_source_buffer_type.js +1 -1
  5. package/dist/_esm5.processed/compat/event_listeners.d.ts +34 -19
  6. package/dist/_esm5.processed/compat/event_listeners.js +159 -80
  7. package/dist/_esm5.processed/compat/index.d.ts +1 -2
  8. package/dist/_esm5.processed/compat/index.js +1 -2
  9. package/dist/_esm5.processed/core/{abr/representation_estimator.d.ts → adaptive/adaptive_representation_selector.d.ts} +139 -124
  10. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +376 -0
  11. package/dist/_esm5.processed/core/{abr → adaptive}/buffer_based_chooser.d.ts +5 -4
  12. package/dist/_esm5.processed/core/{abr → adaptive}/buffer_based_chooser.js +5 -4
  13. package/dist/_esm5.processed/core/{abr → adaptive}/guess_based_chooser.d.ts +3 -3
  14. package/dist/_esm5.processed/core/{abr → adaptive}/guess_based_chooser.js +5 -5
  15. package/dist/_esm5.processed/core/adaptive/index.d.ts +18 -0
  16. package/dist/_esm5.processed/core/{abr → adaptive}/index.js +2 -2
  17. package/dist/_esm5.processed/core/{abr → adaptive}/network_analyzer.d.ts +4 -18
  18. package/dist/_esm5.processed/core/{abr → adaptive}/network_analyzer.js +4 -4
  19. package/dist/_esm5.processed/core/{abr → adaptive/utils}/bandwidth_estimator.d.ts +11 -9
  20. package/dist/_esm5.processed/core/{abr → adaptive/utils}/bandwidth_estimator.js +9 -25
  21. package/dist/_esm5.processed/core/{abr → adaptive}/utils/ewma.d.ts +2 -1
  22. package/dist/_esm5.processed/core/{abr → adaptive}/utils/ewma.js +0 -1
  23. package/dist/_esm5.processed/core/{abr → adaptive}/utils/filter_by_bitrate.d.ts +0 -0
  24. package/dist/_esm5.processed/core/{abr → adaptive}/utils/filter_by_bitrate.js +0 -0
  25. package/dist/_esm5.processed/core/{abr → adaptive}/utils/filter_by_width.d.ts +0 -0
  26. package/dist/_esm5.processed/core/{abr → adaptive}/utils/filter_by_width.js +0 -0
  27. package/dist/_esm5.processed/core/{abr → adaptive/utils}/get_buffer_levels.d.ts +0 -0
  28. package/dist/_esm5.processed/core/{abr → adaptive/utils}/get_buffer_levels.js +0 -0
  29. package/dist/_esm5.processed/core/{abr → adaptive/utils}/last_estimate_storage.d.ts +3 -3
  30. package/dist/_esm5.processed/core/{abr → adaptive/utils}/last_estimate_storage.js +3 -3
  31. package/dist/_esm5.processed/core/{abr → adaptive/utils}/pending_requests_store.d.ts +1 -2
  32. package/dist/_esm5.processed/core/{abr → adaptive/utils}/pending_requests_store.js +4 -5
  33. package/dist/_esm5.processed/core/{abr → adaptive/utils}/representation_score_calculator.d.ts +8 -1
  34. package/dist/_esm5.processed/core/{abr → adaptive/utils}/representation_score_calculator.js +4 -4
  35. package/dist/_esm5.processed/core/{abr → adaptive}/utils/select_optimal_representation.d.ts +0 -0
  36. package/dist/_esm5.processed/core/{abr → adaptive}/utils/select_optimal_representation.js +0 -0
  37. package/dist/_esm5.processed/core/api/get_player_state.d.ts +2 -3
  38. package/dist/_esm5.processed/core/api/get_player_state.js +3 -4
  39. package/dist/_esm5.processed/core/api/index.d.ts +0 -4
  40. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +13 -13
  41. package/dist/_esm5.processed/core/api/option_utils.d.ts +16 -168
  42. package/dist/_esm5.processed/core/api/playback_observer.d.ts +50 -1
  43. package/dist/_esm5.processed/core/api/playback_observer.js +62 -3
  44. package/dist/_esm5.processed/core/api/public_api.d.ts +34 -85
  45. package/dist/_esm5.processed/core/api/public_api.js +73 -79
  46. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +9 -97
  47. package/dist/_esm5.processed/core/api/track_choice_manager.js +10 -10
  48. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +6 -6
  49. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +9 -9
  50. package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +1 -1
  51. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +3 -3
  52. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +5 -5
  53. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +1 -1
  54. package/dist/_esm5.processed/core/decrypt/create_session.js +5 -5
  55. package/dist/_esm5.processed/core/decrypt/find_key_system.d.ts +1 -1
  56. package/dist/_esm5.processed/core/decrypt/find_key_system.js +3 -3
  57. package/dist/_esm5.processed/core/decrypt/get_media_keys.d.ts +2 -1
  58. package/dist/_esm5.processed/core/decrypt/init_media_keys.d.ts +1 -1
  59. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +4 -4
  60. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +2 -2
  61. package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +2 -2
  62. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +1 -1
  63. package/dist/_esm5.processed/core/decrypt/types.d.ts +2 -121
  64. package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.d.ts +1 -1
  65. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +2 -1
  66. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +16 -8
  67. package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.d.ts +1 -1
  68. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +2 -2
  69. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +1 -1
  70. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +7 -7
  71. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +4 -1
  72. package/dist/_esm5.processed/core/fetchers/utils/error_selector.d.ts +2 -2
  73. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +4 -4
  74. package/dist/_esm5.processed/core/init/content_time_boundaries_observer.d.ts +2 -10
  75. package/dist/_esm5.processed/core/init/content_time_boundaries_observer.js +5 -4
  76. package/dist/_esm5.processed/core/init/create_media_source.js +2 -2
  77. package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +1 -0
  78. package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +20 -15
  79. package/dist/_esm5.processed/core/init/events_generators.d.ts +2 -2
  80. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +1 -1
  81. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
  82. package/dist/_esm5.processed/core/init/initialize_directfile.js +6 -3
  83. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +3 -3
  84. package/dist/_esm5.processed/core/init/initialize_media_source.js +3 -3
  85. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +2 -1
  86. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +4 -4
  87. package/dist/_esm5.processed/core/init/load_on_media_source.js +2 -2
  88. package/dist/_esm5.processed/core/init/media_duration_updater.js +10 -10
  89. package/dist/_esm5.processed/core/init/stream_events_emitter/index.d.ts +2 -2
  90. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +1 -8
  91. package/dist/_esm5.processed/core/init/types.d.ts +2 -2
  92. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +1 -1
  93. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +2 -2
  94. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +2 -2
  95. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +1 -1
  96. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
  97. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -2
  98. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +1 -1
  99. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
  100. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +15 -7
  101. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +3 -4
  102. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -1
  103. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +24 -11
  104. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +45 -25
  105. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +31 -28
  106. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +26 -22
  107. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +45 -40
  108. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  109. package/dist/_esm5.processed/core/stream/events_generators.d.ts +2 -2
  110. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +1 -5
  111. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +1 -5
  112. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +4 -4
  113. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +25 -16
  114. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +2 -3
  115. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -3
  116. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -13
  117. package/dist/_esm5.processed/core/stream/period/index.d.ts +1 -1
  118. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +16 -14
  119. package/dist/_esm5.processed/core/stream/period/period_stream.js +5 -5
  120. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +4 -2
  121. package/dist/_esm5.processed/core/stream/reload_after_switch.js +12 -4
  122. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +2 -4
  123. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +2 -1
  124. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +2 -2
  125. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +2 -2
  126. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +14 -2
  127. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +43 -17
  128. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  129. package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +2 -4
  130. package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +2 -4
  131. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +33 -22
  132. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +11 -5
  133. package/dist/_esm5.processed/core/stream/types.d.ts +2 -2
  134. package/dist/_esm5.processed/default_config.d.ts +3 -3
  135. package/dist/_esm5.processed/default_config.js +3 -3
  136. package/dist/_esm5.processed/errors/format_error.d.ts +2 -2
  137. package/dist/_esm5.processed/errors/index.d.ts +2 -2
  138. package/dist/_esm5.processed/errors/is_known_error.d.ts +2 -6
  139. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +5 -1
  140. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +3 -1
  141. package/dist/_esm5.processed/features/initialize_features.js +25 -25
  142. package/dist/_esm5.processed/index.js +5 -2
  143. package/dist/_esm5.processed/manifest/adaptation.d.ts +4 -16
  144. package/dist/_esm5.processed/manifest/adaptation.js +3 -0
  145. package/dist/_esm5.processed/manifest/index.d.ts +3 -3
  146. package/dist/_esm5.processed/manifest/manifest.d.ts +3 -3
  147. package/dist/_esm5.processed/manifest/manifest.js +1 -1
  148. package/dist/_esm5.processed/manifest/period.d.ts +3 -18
  149. package/dist/_esm5.processed/manifest/period.js +1 -1
  150. package/dist/_esm5.processed/manifest/representation.d.ts +5 -4
  151. package/dist/_esm5.processed/manifest/representation.js +23 -4
  152. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +2 -2
  153. package/dist/_esm5.processed/manifest/types.d.ts +0 -116
  154. package/dist/_esm5.processed/minimal.js +5 -2
  155. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +10 -1
  156. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +21 -1
  157. package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +2 -1
  158. package/dist/_esm5.processed/parsers/containers/isobmff/utils.d.ts +7 -2
  159. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +53 -3
  160. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -0
  161. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +2 -1
  162. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -7
  163. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -2
  164. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +2 -2
  165. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +4 -1
  166. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +6 -0
  167. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +2 -0
  168. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +3 -3
  169. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +46 -42
  170. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +3 -3
  171. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +4 -4
  172. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +4 -4
  173. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +9 -9
  174. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +18 -18
  175. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -13
  176. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +22 -22
  177. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +2 -2
  178. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +10 -10
  179. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +1 -1
  180. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +13 -13
  181. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +4 -4
  182. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +1 -1
  183. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +1 -1
  184. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  185. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +2 -2
  186. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
  187. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +2 -2
  188. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +1 -1
  189. package/dist/_esm5.processed/parsers/manifest/types.d.ts +5 -1
  190. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +4 -4
  191. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +3 -2
  192. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.d.ts +1 -1
  193. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +9 -4
  194. package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.d.ts +70 -0
  195. package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +149 -0
  196. package/dist/_esm5.processed/public_types.d.ts +638 -7
  197. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -2
  198. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -1
  199. package/dist/_esm5.processed/transports/dash/segment_parser.js +8 -3
  200. package/dist/_esm5.processed/transports/local/segment_parser.js +8 -2
  201. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +3 -2
  202. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -1
  203. package/dist/_esm5.processed/transports/smooth/segment_loader.js +1 -1
  204. package/dist/_esm5.processed/transports/types.d.ts +16 -60
  205. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -2
  206. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +3 -2
  207. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -0
  208. package/dist/_esm5.processed/utils/assert.js +1 -1
  209. package/dist/_esm5.processed/utils/event_emitter.d.ts +5 -2
  210. package/dist/_esm5.processed/utils/event_emitter.js +10 -3
  211. package/dist/_esm5.processed/utils/logger.d.ts +8 -1
  212. package/dist/_esm5.processed/utils/logger.js +9 -0
  213. package/dist/_esm5.processed/utils/object_assign.d.ts +3 -3
  214. package/dist/_esm5.processed/utils/reference.d.ts +30 -3
  215. package/dist/_esm5.processed/utils/reference.js +24 -9
  216. package/dist/_esm5.processed/utils/request/fetch.js +1 -1
  217. package/dist/_esm5.processed/{compat/when_media_source_open.d.ts → utils/rx-next-tick.d.ts} +8 -4
  218. package/dist/_esm5.processed/utils/rx-next-tick.js +41 -0
  219. package/dist/_esm5.processed/utils/rx-retry_with_backoff.d.ts +2 -2
  220. package/dist/_esm5.processed/utils/string_parsing.js +8 -4
  221. package/dist/_esm5.processed/utils/take_first_set.d.ts +1 -0
  222. package/dist/_esm5.processed/utils/task_canceller.d.ts +3 -4
  223. package/dist/_esm5.processed/utils/task_canceller.js +1 -2
  224. package/dist/_esm5.processed/utils/uniq.d.ts +1 -1
  225. package/dist/mpd-parser.wasm +0 -0
  226. package/dist/rx-player.js +2528 -2386
  227. package/dist/rx-player.min.js +1 -1
  228. package/dist/rx-player.min.js.LICENSE.txt +2 -0
  229. package/jest.config.js +1 -1
  230. package/package.json +40 -36
  231. package/scripts/build/constants.d.ts +2 -0
  232. package/scripts/fast_demo_build.js +7 -21
  233. package/scripts/generate_full_demo.js +7 -21
  234. package/scripts/start_demo_web_server.js +6 -2
  235. package/sonar-project.properties +1 -1
  236. package/src/README.md +9 -9
  237. package/src/compat/__tests__/add_text_track.test.ts +4 -4
  238. package/src/compat/__tests__/browser_compatibility_types.test.ts +5 -5
  239. package/src/compat/__tests__/browser_version.test.ts +4 -4
  240. package/src/compat/__tests__/can_patch_isobmff.test.ts +2 -2
  241. package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +4 -4
  242. package/src/compat/__tests__/clear_element_src.test.ts +8 -8
  243. package/src/compat/__tests__/fullscreen.test.ts +10 -10
  244. package/src/compat/__tests__/has_eme_apis.test.ts +2 -2
  245. package/src/compat/__tests__/is_codec_supported.test.ts +4 -4
  246. package/src/compat/__tests__/is_offline.test.ts +4 -4
  247. package/src/compat/__tests__/is_seeking_approximate.test.ts +2 -2
  248. package/src/compat/__tests__/is_vtt_cue.test.ts +3 -3
  249. package/src/compat/__tests__/make_vtt_cue.test.ts +13 -13
  250. package/src/compat/__tests__/play.test.ts +4 -4
  251. package/src/compat/__tests__/remove_cue.test.ts +5 -5
  252. package/src/compat/__tests__/set_element_src.test.ts +1 -1
  253. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +10 -5
  254. package/src/compat/__tests__/should_renew_media_keys.test.ts +2 -2
  255. package/src/compat/__tests__/should_unset_media_keys.test.ts +2 -2
  256. package/src/compat/__tests__/should_validate_metadata.test.ts +2 -2
  257. package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +7 -7
  258. package/src/compat/__tests__/when_loaded_metadata.test.ts +3 -3
  259. package/src/compat/change_source_buffer_type.ts +2 -1
  260. package/src/compat/event_listeners.ts +218 -138
  261. package/src/compat/index.ts +0 -2
  262. package/src/core/README.md +1 -1
  263. package/src/core/{abr → adaptive}/README.md +6 -6
  264. package/src/core/{abr → adaptive}/__tests__/buffer_based_chooser.test.ts +8 -8
  265. package/src/core/adaptive/adaptive_representation_selector.ts +882 -0
  266. package/src/core/{abr → adaptive}/buffer_based_chooser.ts +8 -6
  267. package/src/core/{abr → adaptive}/guess_based_chooser.ts +5 -5
  268. package/src/core/adaptive/index.ts +45 -0
  269. package/src/core/{abr → adaptive}/network_analyzer.ts +14 -25
  270. package/src/core/{abr → adaptive/utils}/__tests__/bandwith_estimator.test.ts +0 -0
  271. package/src/core/{abr → adaptive}/utils/__tests__/ewma.test.ts +0 -0
  272. package/src/core/{abr → adaptive}/utils/__tests__/filter_by_bitrate.test.ts +0 -0
  273. package/src/core/{abr → adaptive}/utils/__tests__/filter_by_width.test.ts +0 -0
  274. package/src/core/{abr → adaptive/utils}/__tests__/get_buffer_levels.test.ts +0 -0
  275. package/src/core/{abr → adaptive}/utils/__tests__/select_optimal_representation.test.ts +0 -0
  276. package/src/core/{abr → adaptive/utils}/bandwidth_estimator.ts +15 -28
  277. package/src/core/{abr → adaptive}/utils/ewma.ts +2 -1
  278. package/src/core/{abr → adaptive}/utils/filter_by_bitrate.ts +0 -0
  279. package/src/core/{abr → adaptive}/utils/filter_by_width.ts +0 -0
  280. package/src/core/{abr → adaptive/utils}/get_buffer_levels.ts +0 -0
  281. package/src/core/{abr → adaptive/utils}/last_estimate_storage.ts +3 -3
  282. package/src/core/{abr → adaptive/utils}/pending_requests_store.ts +3 -4
  283. package/src/core/{abr → adaptive/utils}/representation_score_calculator.ts +10 -3
  284. package/src/core/{abr → adaptive}/utils/select_optimal_representation.ts +0 -0
  285. package/src/core/api/__tests__/get_player_state.test.ts +73 -52
  286. package/src/core/api/__tests__/public_api.test.ts +65 -66
  287. package/src/core/api/get_player_state.ts +3 -15
  288. package/src/core/api/index.ts +0 -34
  289. package/src/core/api/media_element_track_choice_manager.ts +28 -28
  290. package/src/core/api/option_utils.ts +41 -189
  291. package/src/core/api/playback_observer.ts +109 -3
  292. package/src/core/api/public_api.ts +162 -200
  293. package/src/core/api/track_choice_manager.ts +43 -107
  294. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +20 -20
  295. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +149 -152
  296. package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +110 -110
  297. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +12 -13
  298. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +65 -66
  299. package/src/core/decrypt/__tests__/__global__/utils.ts +16 -16
  300. package/src/core/decrypt/attach_media_keys.ts +1 -3
  301. package/src/core/decrypt/content_decryptor.ts +6 -4
  302. package/src/core/decrypt/find_key_system.ts +4 -5
  303. package/src/core/decrypt/get_media_keys.ts +2 -4
  304. package/src/core/decrypt/init_media_keys.ts +1 -1
  305. package/src/core/decrypt/session_events_listener.ts +9 -10
  306. package/src/core/decrypt/set_server_certificate.ts +4 -3
  307. package/src/core/decrypt/types.ts +2 -136
  308. package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +8 -9
  309. package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +18 -18
  310. package/src/core/decrypt/utils/media_keys_infos_store.ts +1 -1
  311. package/src/core/decrypt/utils/persistent_sessions_store.ts +22 -14
  312. package/src/core/fetchers/manifest/manifest_fetcher.ts +3 -5
  313. package/src/core/fetchers/segment/segment_fetcher.ts +15 -14
  314. package/src/core/fetchers/utils/error_selector.ts +2 -2
  315. package/src/core/init/__tests__/are_same_stream_events.test.ts +5 -6
  316. package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -2
  317. package/src/core/init/content_time_boundaries_observer.ts +10 -14
  318. package/src/core/init/create_media_source.ts +4 -2
  319. package/src/core/init/create_stream_playback_observer.ts +20 -15
  320. package/src/core/init/events_generators.ts +2 -2
  321. package/src/core/init/initial_seek_and_play.ts +1 -1
  322. package/src/core/init/initialize_directfile.ts +7 -4
  323. package/src/core/init/initialize_media_source.ts +7 -7
  324. package/src/core/init/link_drm_and_content.ts +1 -1
  325. package/src/core/init/load_on_media_source.ts +5 -5
  326. package/src/core/init/media_duration_updater.ts +4 -2
  327. package/src/core/init/stream_events_emitter/index.ts +0 -2
  328. package/src/core/init/stream_events_emitter/types.ts +1 -6
  329. package/src/core/init/types.ts +2 -2
  330. package/src/core/segment_buffers/garbage_collector.ts +1 -1
  331. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  332. package/src/core/segment_buffers/implementations/text/html/parsers.ts +1 -1
  333. package/src/core/segment_buffers/implementations/text/native/parsers.ts +1 -1
  334. package/src/core/segment_buffers/inventory/buffered_history.ts +14 -10
  335. package/src/core/segment_buffers/inventory/segment_inventory.ts +28 -13
  336. package/src/core/stream/adaptation/adaptation_stream.ts +148 -123
  337. package/src/core/stream/adaptation/create_representation_estimator.ts +78 -68
  338. package/src/core/stream/adaptation/index.ts +2 -0
  339. package/src/core/stream/events_generators.ts +2 -2
  340. package/src/core/stream/orchestrator/active_period_emitter.ts +1 -5
  341. package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -18
  342. package/src/core/stream/period/create_empty_adaptation_stream.ts +4 -3
  343. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -16
  344. package/src/core/stream/period/index.ts +1 -1
  345. package/src/core/stream/period/period_stream.ts +26 -21
  346. package/src/core/stream/reload_after_switch.ts +13 -7
  347. package/src/core/stream/representation/append_segment_to_buffer.ts +4 -3
  348. package/src/core/stream/representation/downloading_queue.ts +7 -4
  349. package/src/core/stream/representation/force_garbage_collection.ts +10 -2
  350. package/src/core/stream/representation/get_needed_segments.ts +54 -17
  351. package/src/core/stream/representation/index.ts +2 -0
  352. package/src/core/stream/representation/push_init_segment.ts +4 -2
  353. package/src/core/stream/representation/push_media_segment.ts +4 -2
  354. package/src/core/stream/representation/representation_stream.ts +152 -131
  355. package/src/core/stream/types.ts +2 -2
  356. package/src/default_config.ts +3 -3
  357. package/src/errors/__tests__/format_error.test.ts +5 -6
  358. package/src/errors/format_error.ts +3 -4
  359. package/src/errors/index.ts +1 -4
  360. package/src/errors/is_known_error.ts +2 -6
  361. package/src/experimental/features/__tests__/dash_wasm.test.ts +3 -3
  362. package/src/experimental/features/__tests__/local.test.ts +1 -1
  363. package/src/experimental/features/__tests__/metaplaylist.test.ts +1 -1
  364. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -1
  365. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +1 -1
  366. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +5 -5
  367. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +5 -5
  368. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +16 -9
  369. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +20 -10
  370. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +12 -6
  371. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +4 -2
  372. package/src/features/__tests__/add_features.test.ts +3 -3
  373. package/src/features/__tests__/initialize_features.test.ts +46 -46
  374. package/src/index.ts +3 -1
  375. package/src/manifest/__tests__/adaptation.test.ts +69 -68
  376. package/src/manifest/__tests__/manifest.test.ts +32 -32
  377. package/src/manifest/__tests__/period.test.ts +73 -71
  378. package/src/manifest/__tests__/representation.test.ts +18 -17
  379. package/src/manifest/__tests__/update_period_in_place.test.ts +152 -152
  380. package/src/manifest/__tests__/update_periods.test.ts +20 -20
  381. package/src/manifest/adaptation.ts +8 -20
  382. package/src/manifest/index.ts +1 -9
  383. package/src/manifest/manifest.ts +7 -8
  384. package/src/manifest/period.ts +7 -8
  385. package/src/manifest/representation.ts +23 -4
  386. package/src/manifest/representation_index/types.ts +2 -2
  387. package/src/manifest/types.ts +0 -119
  388. package/src/minimal.ts +3 -1
  389. package/src/parsers/containers/isobmff/get_box.ts +24 -0
  390. package/src/parsers/containers/isobmff/take_pssh_out.ts +2 -1
  391. package/src/parsers/containers/isobmff/utils.ts +56 -1
  392. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +19 -19
  393. package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +17 -17
  394. package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +6 -6
  395. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +6 -6
  396. package/src/parsers/manifest/dash/common/indexes/base.ts +7 -1
  397. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -10
  398. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +5 -6
  399. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +6 -2
  400. package/src/parsers/manifest/dash/common/parse_representations.ts +1 -1
  401. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +8 -0
  402. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +15 -15
  403. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +24 -24
  404. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +20 -20
  405. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +36 -36
  406. package/src/parsers/manifest/dash/node_parser_types.ts +2 -0
  407. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +2 -0
  408. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +37 -0
  409. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +2 -1
  410. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +4 -0
  411. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +2 -0
  412. package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
  413. package/src/parsers/manifest/smooth/representation_index.ts +3 -5
  414. package/src/parsers/manifest/types.ts +5 -1
  415. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +45 -45
  416. package/src/parsers/texttracks/ttml/html/create_element.ts +8 -5
  417. package/src/parsers/texttracks/ttml/native/parse_cue.ts +6 -2
  418. package/src/parsers/texttracks/ttml/parse_ttml.ts +13 -7
  419. package/src/parsers/texttracks/ttml/xml_utils.ts +166 -0
  420. package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +5 -5
  421. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +2 -2
  422. package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +11 -11
  423. package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +4 -4
  424. package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +5 -5
  425. package/src/public_types.ts +714 -53
  426. package/src/transports/dash/segment_loader.ts +1 -1
  427. package/src/transports/dash/segment_parser.ts +10 -3
  428. package/src/transports/local/pipelines.ts +1 -1
  429. package/src/transports/local/segment_parser.ts +7 -2
  430. package/src/transports/metaplaylist/manifest_loader.ts +6 -6
  431. package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +71 -73
  432. package/src/transports/smooth/segment_loader.ts +1 -1
  433. package/src/transports/types.ts +26 -85
  434. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +36 -28
  435. package/src/transports/utils/call_custom_manifest_loader.ts +5 -3
  436. package/src/transports/utils/generate_manifest_loader.ts +5 -3
  437. package/src/transports/utils/get_isobmff_timing_infos.ts +11 -4
  438. package/src/typings/globals.d.ts +1 -0
  439. package/src/utils/__tests__/base64.test.ts +7 -7
  440. package/src/utils/__tests__/event_emitter.test.ts +4 -3
  441. package/src/utils/__tests__/flat_map.test.ts +5 -5
  442. package/src/utils/__tests__/logger.test.ts +75 -75
  443. package/src/utils/__tests__/object_assign.test.ts +2 -2
  444. package/src/utils/__tests__/starts_with.test.ts +5 -5
  445. package/src/utils/event_emitter.ts +12 -4
  446. package/src/utils/logger.ts +13 -1
  447. package/src/utils/reference.ts +66 -14
  448. package/src/utils/request/fetch.ts +1 -1
  449. package/src/utils/rx-next-tick.ts +43 -0
  450. package/src/utils/rx-retry_with_backoff.ts +2 -2
  451. package/src/utils/string_parsing.ts +8 -4
  452. package/src/utils/take_first_set.ts +5 -0
  453. package/src/utils/task_canceller.ts +3 -4
  454. package/dist/_esm5.processed/compat/when_media_source_open.js +0 -32
  455. package/dist/_esm5.processed/core/abr/abr_manager.d.ts +0 -79
  456. package/dist/_esm5.processed/core/abr/abr_manager.js +0 -117
  457. package/dist/_esm5.processed/core/abr/index.d.ts +0 -19
  458. package/dist/_esm5.processed/core/abr/representation_estimator.js +0 -243
  459. package/dist/_esm5.processed/parsers/texttracks/ttml/get_attribute_in_elements.d.ts +0 -23
  460. package/dist/_esm5.processed/parsers/texttracks/ttml/get_attribute_in_elements.js +0 -33
  461. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parent_elements_by_tag_name.d.ts +0 -23
  462. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parent_elements_by_tag_name.js +0 -39
  463. package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.d.ts +0 -36
  464. package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +0 -45
  465. package/src/compat/__tests__/when_media_source_open.test.ts +0 -109
  466. package/src/compat/when_media_source_open.ts +0 -39
  467. package/src/core/abr/abr_manager.ts +0 -196
  468. package/src/core/abr/index.ts +0 -40
  469. package/src/core/abr/representation_estimator.ts +0 -686
  470. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  471. package/src/parsers/texttracks/ttml/get_attribute_in_elements.ts +0 -36
  472. package/src/parsers/texttracks/ttml/get_parent_elements_by_tag_name.ts +0 -46
  473. package/src/parsers/texttracks/ttml/nodes.ts +0 -55
package/CHANGELOG.md CHANGED
@@ -1,21 +1,34 @@
1
1
  # Changelog
2
2
 
3
- ## v3.27.1-dev.2022051100 (2022-06-03)
3
+ ## v3.28.0-dev.2022061700 (2022-06-17)
4
+
5
+ ### Features
6
+
7
+ - Add `label` to audio, video and text track APIs (such as `getAvailableAudioTracks`) which gives a human-readable description of the corresponding track, if available in the Manifest [#1105, #1109]
8
+ - Automatically set the LogLevel to `"DEBUG"` if a global `__RX_PLAYER_DEBUG_MODE__` constant is set to `true`, to simplify debugging [#1115]
9
+ - TTML: Add support for percent based thickness for textOutline in TTML Subtitles [#1108]
4
10
 
5
11
  ### Bug fixes
6
12
 
7
13
  - Use the first **compatible** codec of the current AdaptationSet when creating a SourceBuffer [#1094]
8
14
  - DASH/DRM: Fix potential infinite rebuffering when a KID is not anounced in the MPD [#1113]
9
15
  - DASH: Avoid infinite loop due to rounding errors while parsing multi-Periods MPDs [#1111, #1110]
10
- - TTML: Add support for percent based thickness for textOutline in TTML Subtitles
11
- - If seeking after the last potential position, load last segments before ending [#1097]
16
+ - Fix issue with `maxVideoBufferSize` setting which could lead to too much data being buffered [#1125]
17
+ - Prevent possibility of requests loops and infinite rebuffering when a pushed segment is always completely and immediately garbage collected by the browser [#1123]
18
+ - DASH: Fix issues that could arise if a segment is calculated to start at a negative position [#1122]
12
19
  - DASH: Fix possibility of wrong segments being requested when a SegmentTimeline in a given Period (whose Period@end is set) had an S@r set to `-1` at its end [#1098]
13
- - DASH: Don't include presentationTimeOffset for the default initial time of the first `<S>` element if its S@t is not set.
20
+ - DASH: If the first `<S>` has its S@t attribute not set, make as if it is set to `0` [#1118]
21
+ - Reload in the paused state when the action that lead to reloading was performed directly as the RxPlayer went into the `PAUSED` state [#1132]
14
22
 
15
23
  ### Other improvements
16
24
 
25
+ - If seeking after the last potential position, load last segments before ending [#1097]
17
26
  - The duration set on the media element is now only relative to the current chosen tracks (it was previously relative to all potential track). This allows to seek later when switching e.g. to a longer video track [#1102]
18
27
  - Errors coming from an HTMLMediaElement now have the browser's error message if it exists [#1112]
28
+ - TTML: Better handle EBU-TT subtitles by handling the `tt` XML namespace in our TTML parser [#1131]
29
+ - DRM: Information on persisted DRM sessions are now automatically updated to their last version when possible [#1096]
30
+ - Only log values which are relatively inexpensive to stringify to reduce the difference between debugging sessions and what is usually seen in production [#1116]
31
+
19
32
 
20
33
  ## v3.27.0 (2022-03-31)
21
34
 
package/FILES.md CHANGED
@@ -22,7 +22,7 @@ a single directory or subdirectory, in alphabetical order.
22
22
  - [src/typings/: Typescript typings](#src-typings)
23
23
  - [src/utils/: The utils](#src-utils)
24
24
  - [src/core/: The core directory](#core)
25
- - [src/core/abr/: The adaptive bitrate code](#core-abr)
25
+ - [src/core/adaptive/: The adaptive bitrate code](#core-abr)
26
26
  - [src/core/api/: The API definition](#core-api)
27
27
  - [src/core/stream/: Load the right segments](#core-stream)
28
28
  - [src/core/decrypt/: Decryption management](#core-decrypt)
@@ -211,17 +211,17 @@ As this directory is versatile and complicated, it also deserves its own chapter
211
211
 
212
212
 
213
213
  <a name="core-abr"></a>
214
- ### src/core/abr/: The adaptive bitrate code ###################################
214
+ ### src/core/adaptive/: The adaptive bitrate code ##############################
215
215
 
216
- Defines an ABRManager class which manages the adaptive streaming part of the
217
- player.
216
+ Defines functions which manages the adaptive streaming part of the player.
218
217
 
219
218
  This manager takes various observables/options as inputs to record the current
220
219
  situation of the player, give an opinion about the best media tracks to choose,
221
- and provide methods allowing to get/set various ABR-related options.
220
+ and provide methods allowing to get/set various adaptive-related options.
222
221
 
223
- Despite containing several files and using several classes, only the ABRManager
224
- defined in ``abr/index.js`` should be needed by the rest of the core.
222
+ Despite containing several files and using several classes, only the
223
+ `AdaptiveRepresentationSelector` exported in `adaptive/index.js` should be
224
+ needed by the rest of the core.
225
225
  This allows to isolate this complex part and facilitate future refactoring and
226
226
  improvements.
227
227
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 3.27.1-dev.2022060300
1
+ 3.28.0-dev.2022061700
@@ -28,7 +28,7 @@ export default function tryToChangeSourceBufferType(sourceBuffer, codec) {
28
28
  sourceBuffer.changeType(codec);
29
29
  }
30
30
  catch (e) {
31
- log.warn("Could not call 'changeType' on the given SourceBuffer:", e);
31
+ log.warn("Could not call 'changeType' on the given SourceBuffer:", e instanceof Error ? e : "");
32
32
  return false;
33
33
  }
34
34
  return true;
@@ -19,6 +19,8 @@
19
19
  */
20
20
  import { Observable } from "rxjs";
21
21
  import { IEventEmitter } from "../utils/event_emitter";
22
+ import { IReadOnlySharedReference } from "../utils/reference";
23
+ import { CancellationSignal } from "../utils/task_canceller";
22
24
  import { ICompatPictureInPictureWindow } from "./browser_compatibility_types";
23
25
  export interface IEventEmitterLike {
24
26
  addEventListener: (eventName: string, handler: () => void) => void;
@@ -26,12 +28,14 @@ export interface IEventEmitterLike {
26
28
  }
27
29
  export declare type IEventTargetLike = HTMLElement | IEventEmitterLike | IEventEmitter<unknown>;
28
30
  /**
29
- * Emit `true` if the page is considered active.
30
- * `false` when considered inactive.
31
- * Emit the original value on subscription.
32
- * @returns {Observable}
31
+ * Returns a reference:
32
+ * - Set to `true` when the current page is considered visible and active.
33
+ * - Set to `false` otherwise.
34
+ * @param {Object} stopListening - `CancellationSignal` allowing to free the
35
+ * resources allocated to update this value.
36
+ * @returns {Object}
33
37
  */
34
- declare function isPageActive(): Observable<boolean>;
38
+ declare function getPageActivityRef(stopListening: CancellationSignal): IReadOnlySharedReference<boolean>;
35
39
  export interface IPictureInPictureEvent {
36
40
  isEnabled: boolean;
37
41
  pipWindow: ICompatPictureInPictureWindow | null;
@@ -41,22 +45,27 @@ export interface IPictureInPictureEvent {
41
45
  * @param {HTMLMediaElement} mediaElement
42
46
  * @returns {Observable}
43
47
  */
44
- declare function onPictureInPictureEvent$(elt: HTMLMediaElement): Observable<IPictureInPictureEvent>;
48
+ declare function getPictureOnPictureStateRef(elt: HTMLMediaElement, stopListening: CancellationSignal): IReadOnlySharedReference<IPictureInPictureEvent>;
45
49
  /**
46
- * Returns `true` when video is considered as visible (the page is visible and/or
47
- * the Picture-In-Picture is activated). Returns `false` otherwise.
48
- * @param {Observable} pip$
50
+ * Returns a reference:
51
+ * - Set to `true` when video is considered as visible (the page is visible
52
+ * and/or the Picture-In-Picture is activated).
53
+ * - Set to `false` otherwise.
54
+ * @param {Object} pipStatus
55
+ * @param {Object} stopListening - `CancellationSignal` allowing to free the
56
+ * resources reserved to listen to video visibility change.
49
57
  * @returns {Observable}
50
58
  */
51
- declare function isVideoVisible(pip$: Observable<IPictureInPictureEvent>): Observable<boolean>;
59
+ declare function getVideoVisibilityRef(pipStatus: IReadOnlySharedReference<IPictureInPictureEvent>, stopListening: CancellationSignal): IReadOnlySharedReference<boolean>;
52
60
  /**
53
61
  * Get video width from HTML video element, or video estimated dimensions
54
62
  * when Picture-in-Picture is activated.
55
63
  * @param {HTMLMediaElement} mediaElement
56
- * @param {Observable} pip$
57
- * @returns {Observable}
64
+ * @param {Object} pipStatusRef
65
+ * @param {Object} stopListening
66
+ * @returns {Object}
58
67
  */
59
- declare function videoWidth$(mediaElement: HTMLMediaElement, pip$: Observable<IPictureInPictureEvent>): Observable<number>;
68
+ declare function getVideoWidthRef(mediaElement: HTMLMediaElement, pipStatusRef: IReadOnlySharedReference<IPictureInPictureEvent>, stopListening: CancellationSignal): IReadOnlySharedReference<number>;
60
69
  /**
61
70
  * @param {HTMLMediaElement} mediaElement
62
71
  * @returns {Observable}
@@ -87,11 +96,6 @@ declare const onTimeUpdate$: (element: IEventTargetLike) => Observable<Event>;
87
96
  * @returns {Observable}
88
97
  */
89
98
  declare const onFullscreenChange$: (element: IEventTargetLike) => Observable<Event>;
90
- /**
91
- * @param {HTMLMediaElement} mediaElement
92
- * @returns {Observable}
93
- */
94
- declare const onPlayPause$: (mediaElement: HTMLMediaElement) => Observable<Event>;
95
99
  /**
96
100
  * @param {HTMLMediaElement} mediaElement
97
101
  * @returns {Observable}
@@ -147,4 +151,15 @@ declare const onKeyError$: (element: IEventTargetLike) => Observable<Event>;
147
151
  * @returns {Observable}
148
152
  */
149
153
  declare const onKeyStatusesChange$: (element: IEventTargetLike) => Observable<Event>;
150
- export { isPageActive, isVideoVisible, videoWidth$, onPlayPause$, onTextTrackChanges$, onLoadedMetadata$, onSeeking$, onSeeked$, onEnded$, onTimeUpdate$, onFullscreenChange$, onSourceOpen$, onSourceClose$, onSourceEnded$, onUpdate$, onRemoveSourceBuffers$, onEncrypted$, onKeyMessage$, onKeyAdded$, onKeyError$, onKeyStatusesChange$, onPictureInPictureEvent$, };
154
+ /**
155
+ * Utilitary function allowing to add an event listener and remove it
156
+ * automatically once the given `CancellationSignal` emits.
157
+ * @param {EventTarget} elt - The element on which should be attached the event
158
+ * listener.
159
+ * @param {string} evt - The event you wish to listen to
160
+ * @param {Function} listener - The listener function
161
+ * @param {Object} stopListening - Removes the event listener once this signal
162
+ * emits
163
+ */
164
+ declare function addEventListener(elt: IEventEmitterLike, evt: string, listener: (x?: unknown) => void, stopListening: CancellationSignal): void;
165
+ export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted$, onEnded$, onFullscreenChange$, onKeyAdded$, onKeyError$, onKeyMessage$, onKeyStatusesChange$, onLoadedMetadata$, onRemoveSourceBuffers$, onSeeked$, onSeeking$, onSourceClose$, onSourceEnded$, onSourceOpen$, onTextTrackChanges$, onTimeUpdate$, onUpdate$, };
@@ -17,10 +17,13 @@
17
17
  * This file provides browser-agnostic event listeners under the form of
18
18
  * RxJS Observables
19
19
  */
20
- import { NEVER, combineLatest as observableCombineLatest, defer as observableDefer, delay, distinctUntilChanged, fromEvent as observableFromEvent, interval as observableInterval, map, merge as observableMerge, of as observableOf, startWith, switchMap, throttleTime, } from "rxjs";
20
+ import { NEVER, fromEvent as observableFromEvent, merge as observableMerge, } from "rxjs";
21
21
  import config from "../config";
22
22
  import log from "../log";
23
23
  import isNonEmptyString from "../utils/is_non_empty_string";
24
+ import isNullOrUndefined from "../utils/is_null_or_undefined";
25
+ import noop from "../utils/noop";
26
+ import createSharedReference from "../utils/reference";
24
27
  import isNode from "./is_node";
25
28
  import shouldFavourCustomSafariEME from "./should_favour_custom_safari_EME";
26
29
  var BROWSER_PREFIXES = ["", "webkit", "moz", "ms"];
@@ -86,7 +89,7 @@ function compatibleListener(eventNames, prefixes) {
86
89
  return observableFromEvent(element, mem);
87
90
  }
88
91
  else {
89
- if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
92
+ if (0 /* __ENVIRONMENT__.CURRENT_ENV */ === 1 /* __ENVIRONMENT__.DEV */) {
90
93
  log.warn("compat: element ".concat(element.tagName) +
91
94
  " does not support any of these events: " +
92
95
  prefixedEvents.join(", "));
@@ -102,12 +105,14 @@ function compatibleListener(eventNames, prefixes) {
102
105
  };
103
106
  }
104
107
  /**
105
- * Returns an observable:
106
- * - emitting true when the document is visible
107
- * - emitting false when the document is hidden
108
- * @returns {Observable}
108
+ * Returns a reference:
109
+ * - set to `true` when the document is visible
110
+ * - set to `false` when the document is hidden
111
+ * @param {Object} stopListening - `CancellationSignal` allowing to free the
112
+ * ressources allocated to update this value.
113
+ * @returns {Object}
109
114
  */
110
- function visibilityChange() {
115
+ function getDocumentVisibilityRef(stopListening) {
111
116
  var prefix;
112
117
  var doc = document;
113
118
  if (doc.hidden != null) {
@@ -126,26 +131,44 @@ function visibilityChange() {
126
131
  "hidden";
127
132
  var visibilityChangeEvent = isNonEmptyString(prefix) ? prefix + "visibilitychange" :
128
133
  "visibilitychange";
129
- return observableDefer(function () {
130
- var isHidden = document[hidden];
131
- return observableFromEvent(document, visibilityChangeEvent)
132
- .pipe(map(function () { return !(document[hidden]); }), startWith(!isHidden), distinctUntilChanged());
134
+ var isHidden = document[hidden];
135
+ var ref = createSharedReference(isHidden);
136
+ addEventListener(document, visibilityChangeEvent, function () {
137
+ var isVisible = !(document[hidden]);
138
+ ref.setValueIfChanged(isVisible);
139
+ }, stopListening);
140
+ stopListening.register(function () {
141
+ ref.finish();
133
142
  });
143
+ return ref;
134
144
  }
135
145
  /**
136
- * Emit `true` if the page is considered active.
137
- * `false` when considered inactive.
138
- * Emit the original value on subscription.
139
- * @returns {Observable}
146
+ * Returns a reference:
147
+ * - Set to `true` when the current page is considered visible and active.
148
+ * - Set to `false` otherwise.
149
+ * @param {Object} stopListening - `CancellationSignal` allowing to free the
150
+ * resources allocated to update this value.
151
+ * @returns {Object}
140
152
  */
141
- function isPageActive() {
142
- var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
143
- return visibilityChange().pipe(switchMap(function (x) {
144
- if (!x) {
145
- return observableOf(x).pipe(delay(INACTIVITY_DELAY));
153
+ function getPageActivityRef(stopListening) {
154
+ var isDocVisibleRef = getDocumentVisibilityRef(stopListening);
155
+ var currentTimeout;
156
+ var ref = createSharedReference(true);
157
+ stopListening.register(function () {
158
+ clearTimeout(currentTimeout);
159
+ ref.finish();
160
+ });
161
+ isDocVisibleRef.onUpdate(function onDocVisibilityChange(isVisible) {
162
+ clearTimeout(currentTimeout); // clear potential previous timeout
163
+ if (!isVisible) {
164
+ var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
165
+ currentTimeout = window.setTimeout(function () {
166
+ ref.setValueIfChanged(false);
167
+ }, INACTIVITY_DELAY);
146
168
  }
147
- return observableOf(x);
148
- }));
169
+ ref.setValueIfChanged(true);
170
+ }, { clearSignal: stopListening, emitCurrentValue: true });
171
+ return ref;
149
172
  }
150
173
  /**
151
174
  * Get video width from Picture-in-Picture window
@@ -164,73 +187,120 @@ function getVideoWidthFromPIPWindow(mediaElement, pipWindow) {
164
187
  * @param {HTMLMediaElement} mediaElement
165
188
  * @returns {Observable}
166
189
  */
167
- function onPictureInPictureEvent$(elt) {
168
- return observableDefer(function () {
169
- var mediaElement = elt;
170
- if (mediaElement.webkitSupportsPresentationMode === true &&
171
- typeof mediaElement.webkitSetPresentationMode === "function") {
172
- var isWebKitPIPEnabled = mediaElement.webkitPresentationMode === "picture-in-picture";
173
- return observableFromEvent(mediaElement, "webkitpresentationmodechanged").pipe(map(function () { return ({
174
- isEnabled: mediaElement.webkitPresentationMode === "picture-in-picture",
175
- pipWindow: null,
176
- }); }), startWith({ isEnabled: isWebKitPIPEnabled, pipWindow: null }));
177
- }
178
- var isPIPEnabled = (document.pictureInPictureElement === mediaElement);
179
- var initialState = { isEnabled: isPIPEnabled, pipWindow: null };
180
- return observableMerge(observableFromEvent(mediaElement, "enterpictureinpicture")
181
- .pipe(map(function (evt) {
182
- var _a;
183
- return ({
184
- isEnabled: true,
185
- pipWindow: (_a = evt.pictureInPictureWindow) !== null && _a !== void 0 ? _a : null,
186
- });
187
- })), observableFromEvent(mediaElement, "leavepictureinpicture")
188
- .pipe(map(function () { return ({ isEnabled: false, pipWindow: null }); }))).pipe(startWith(initialState));
190
+ function getPictureOnPictureStateRef(elt, stopListening) {
191
+ var mediaElement = elt;
192
+ if (mediaElement.webkitSupportsPresentationMode === true &&
193
+ typeof mediaElement.webkitSetPresentationMode === "function") {
194
+ var isWebKitPIPEnabled = mediaElement.webkitPresentationMode === "picture-in-picture";
195
+ var ref_1 = createSharedReference({
196
+ isEnabled: isWebKitPIPEnabled,
197
+ pipWindow: null,
198
+ });
199
+ addEventListener(mediaElement, "webkitpresentationmodechanged", function () {
200
+ var isEnabled = mediaElement.webkitPresentationMode === "picture-in-picture";
201
+ ref_1.setValue({ isEnabled: isEnabled, pipWindow: null });
202
+ }, stopListening);
203
+ stopListening.register(function () {
204
+ ref_1.finish();
205
+ });
206
+ return ref_1;
207
+ }
208
+ var isPIPEnabled = (document.pictureInPictureElement === mediaElement);
209
+ var ref = createSharedReference({ isEnabled: isPIPEnabled,
210
+ pipWindow: null });
211
+ addEventListener(mediaElement, "enterpictureinpicture", function (evt) {
212
+ var _a;
213
+ ref.setValue({
214
+ isEnabled: true,
215
+ pipWindow: (_a = evt.pictureInPictureWindow) !== null && _a !== void 0 ? _a : null,
216
+ });
217
+ }, stopListening);
218
+ addEventListener(mediaElement, "leavepictureinpicture", function () {
219
+ ref.setValue({ isEnabled: false, pipWindow: null });
220
+ }, stopListening);
221
+ stopListening.register(function () {
222
+ ref.finish();
189
223
  });
224
+ return ref;
190
225
  }
191
226
  /**
192
- * Returns `true` when video is considered as visible (the page is visible and/or
193
- * the Picture-In-Picture is activated). Returns `false` otherwise.
194
- * @param {Observable} pip$
227
+ * Returns a reference:
228
+ * - Set to `true` when video is considered as visible (the page is visible
229
+ * and/or the Picture-In-Picture is activated).
230
+ * - Set to `false` otherwise.
231
+ * @param {Object} pipStatus
232
+ * @param {Object} stopListening - `CancellationSignal` allowing to free the
233
+ * resources reserved to listen to video visibility change.
195
234
  * @returns {Observable}
196
235
  */
197
- function isVideoVisible(pip$) {
198
- var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
199
- return observableCombineLatest([visibilityChange(), pip$]).pipe(switchMap(function (_a) {
200
- var isVisible = _a[0], pip = _a[1];
201
- if (pip.isEnabled || isVisible) {
202
- return observableOf(true);
236
+ function getVideoVisibilityRef(pipStatus, stopListening) {
237
+ var isDocVisibleRef = getDocumentVisibilityRef(stopListening);
238
+ var currentTimeout;
239
+ var ref = createSharedReference(true);
240
+ stopListening.register(function () {
241
+ clearTimeout(currentTimeout);
242
+ ref.finish();
243
+ });
244
+ isDocVisibleRef.onUpdate(checkCurrentVisibility, { clearSignal: stopListening });
245
+ pipStatus.onUpdate(checkCurrentVisibility, { clearSignal: stopListening });
246
+ checkCurrentVisibility();
247
+ return ref;
248
+ function checkCurrentVisibility() {
249
+ if (pipStatus.getValue().isEnabled || isDocVisibleRef.getValue()) {
250
+ ref.setValueIfChanged(true);
203
251
  }
204
- return observableOf(false)
205
- .pipe(delay(INACTIVITY_DELAY));
206
- }), distinctUntilChanged());
252
+ else {
253
+ var INACTIVITY_DELAY = config.getCurrent().INACTIVITY_DELAY;
254
+ currentTimeout = window.setTimeout(function () {
255
+ ref.setValueIfChanged(false);
256
+ }, INACTIVITY_DELAY);
257
+ }
258
+ }
207
259
  }
208
260
  /**
209
261
  * Get video width from HTML video element, or video estimated dimensions
210
262
  * when Picture-in-Picture is activated.
211
263
  * @param {HTMLMediaElement} mediaElement
212
- * @param {Observable} pip$
213
- * @returns {Observable}
264
+ * @param {Object} pipStatusRef
265
+ * @param {Object} stopListening
266
+ * @returns {Object}
214
267
  */
215
- function videoWidth$(mediaElement, pip$) {
216
- return observableCombineLatest([
217
- pip$,
218
- observableInterval(20000).pipe(startWith(null)),
219
- observableFromEvent(window, "resize").pipe(throttleTime(500), startWith(null)),
220
- ]).pipe(switchMap(function (_a) {
221
- var pip = _a[0];
222
- if (!pip.isEnabled) {
223
- return observableOf(mediaElement.clientWidth * pixelRatio);
268
+ function getVideoWidthRef(mediaElement, pipStatusRef, stopListening) {
269
+ var ref = createSharedReference(mediaElement.clientWidth * pixelRatio);
270
+ var clearPreviousEventListener = noop;
271
+ pipStatusRef.onUpdate(checkVideoWidth, { clearSignal: stopListening });
272
+ addEventListener(window, "resize", checkVideoWidth, stopListening);
273
+ var interval = window.setInterval(checkVideoWidth, 20000);
274
+ checkVideoWidth();
275
+ stopListening.register(function stopUpdatingVideoWidthRef() {
276
+ clearPreviousEventListener();
277
+ clearInterval(interval);
278
+ ref.finish();
279
+ });
280
+ return ref;
281
+ function checkVideoWidth() {
282
+ clearPreviousEventListener();
283
+ var pipStatus = pipStatusRef.getValue();
284
+ if (!pipStatus.isEnabled) {
285
+ ref.setValueIfChanged(mediaElement.clientWidth * pixelRatio);
224
286
  }
225
- else if (pip.pipWindow != null) {
226
- var pipWindow_1 = pip.pipWindow;
287
+ else if (!isNullOrUndefined(pipStatus.pipWindow)) {
288
+ var pipWindow_1 = pipStatus.pipWindow;
227
289
  var firstWidth = getVideoWidthFromPIPWindow(mediaElement, pipWindow_1);
228
- return observableFromEvent(pipWindow_1, "resize").pipe(startWith(firstWidth * pixelRatio), map(function () { return getVideoWidthFromPIPWindow(mediaElement, pipWindow_1) * pixelRatio; }));
290
+ var onPipResize_1 = function () {
291
+ ref.setValueIfChanged(getVideoWidthFromPIPWindow(mediaElement, pipWindow_1) * pixelRatio);
292
+ };
293
+ pipWindow_1.addEventListener("resize", onPipResize_1);
294
+ clearPreviousEventListener = function () {
295
+ pipWindow_1.removeEventListener("resize", onPipResize_1);
296
+ clearPreviousEventListener = noop;
297
+ };
298
+ ref.setValueIfChanged(firstWidth * pixelRatio);
229
299
  }
230
300
  else {
231
- return observableOf(Infinity);
301
+ ref.setValueIfChanged(Infinity);
232
302
  }
233
- }), distinctUntilChanged());
303
+ }
234
304
  }
235
305
  /**
236
306
  * @param {HTMLMediaElement} mediaElement
@@ -264,13 +334,6 @@ var onTimeUpdate$ = compatibleListener(["timeupdate"]);
264
334
  var onFullscreenChange$ = compatibleListener(["fullscreenchange", "FullscreenChange"],
265
335
  // On IE11, fullscreen change events is called MSFullscreenChange
266
336
  BROWSER_PREFIXES.concat("MS"));
267
- /**
268
- * @param {HTMLMediaElement} mediaElement
269
- * @returns {Observable}
270
- */
271
- var onPlayPause$ = function (mediaElement) {
272
- return observableMerge(compatibleListener(["play"])(mediaElement), compatibleListener(["pause"])(mediaElement));
273
- };
274
337
  /**
275
338
  * @param {HTMLMediaElement} mediaElement
276
339
  * @returns {Observable}
@@ -329,4 +392,20 @@ var onKeyError$ = compatibleListener(["keyerror", "error"]);
329
392
  * @returns {Observable}
330
393
  */
331
394
  var onKeyStatusesChange$ = compatibleListener(["keystatuseschange"]);
332
- export { isPageActive, isVideoVisible, videoWidth$, onPlayPause$, onTextTrackChanges$, onLoadedMetadata$, onSeeking$, onSeeked$, onEnded$, onTimeUpdate$, onFullscreenChange$, onSourceOpen$, onSourceClose$, onSourceEnded$, onUpdate$, onRemoveSourceBuffers$, onEncrypted$, onKeyMessage$, onKeyAdded$, onKeyError$, onKeyStatusesChange$, onPictureInPictureEvent$, };
395
+ /**
396
+ * Utilitary function allowing to add an event listener and remove it
397
+ * automatically once the given `CancellationSignal` emits.
398
+ * @param {EventTarget} elt - The element on which should be attached the event
399
+ * listener.
400
+ * @param {string} evt - The event you wish to listen to
401
+ * @param {Function} listener - The listener function
402
+ * @param {Object} stopListening - Removes the event listener once this signal
403
+ * emits
404
+ */
405
+ function addEventListener(elt, evt, listener, stopListening) {
406
+ elt.addEventListener(evt, listener);
407
+ stopListening.register(function () {
408
+ elt.removeEventListener(evt, listener);
409
+ });
410
+ }
411
+ export { addEventListener, getPageActivityRef, getPictureOnPictureStateRef, getVideoVisibilityRef, getVideoWidthRef, onEncrypted$, onEnded$, onFullscreenChange$, onKeyAdded$, onKeyError$, onKeyMessage$, onKeyStatusesChange$, onLoadedMetadata$, onRemoveSourceBuffers$, onSeeked$, onSeeking$, onSourceClose$, onSourceEnded$, onSourceOpen$, onTextTrackChanges$, onTimeUpdate$, onUpdate$, };
@@ -38,5 +38,4 @@ import shouldUnsetMediaKeys from "./should_unset_media_keys";
38
38
  import shouldValidateMetadata from "./should_validate_metadata";
39
39
  import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
40
40
  import whenLoadedMetadata$ from "./when_loaded_metadata";
41
- import whenMediaSourceOpen$ from "./when_media_source_open";
42
- export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, whenMediaSourceOpen$, };
41
+ export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, };
@@ -40,9 +40,8 @@ import shouldUnsetMediaKeys from "./should_unset_media_keys";
40
40
  import shouldValidateMetadata from "./should_validate_metadata";
41
41
  import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
42
42
  import whenLoadedMetadata$ from "./when_loaded_metadata";
43
- import whenMediaSourceOpen$ from "./when_media_source_open";
44
43
  // TODO To remove. This seems to be the only side-effect done on import, which
45
44
  // we would prefer to disallow (both for the understandability of the code and
46
45
  // to better exploit tree shaking.
47
46
  patchWebkitSourceBuffer();
48
- export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, whenMediaSourceOpen$, };
47
+ export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, };