rx-player 3.29.0 → 3.30.0-dev.2023011800

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 (439) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/VERSION +1 -1
  3. package/dist/_esm5.processed/compat/can_reuse_media_keys.d.ts +3 -2
  4. package/dist/_esm5.processed/compat/can_reuse_media_keys.js +5 -4
  5. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +16 -7
  6. package/dist/_esm5.processed/compat/event_listeners.d.ts +33 -56
  7. package/dist/_esm5.processed/compat/event_listeners.js +66 -116
  8. package/dist/_esm5.processed/compat/index.d.ts +1 -4
  9. package/dist/_esm5.processed/compat/index.js +1 -4
  10. package/dist/_esm5.processed/compat/on_height_width_change.d.ts +1 -1
  11. package/dist/_esm5.processed/compat/on_height_width_change.js +2 -2
  12. package/dist/_esm5.processed/config.d.ts +1 -0
  13. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +3 -1
  14. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +27 -6
  15. package/dist/_esm5.processed/core/api/playback_observer.d.ts +8 -9
  16. package/dist/_esm5.processed/core/api/playback_observer.js +6 -7
  17. package/dist/_esm5.processed/core/api/public_api.d.ts +39 -41
  18. package/dist/_esm5.processed/core/api/public_api.js +569 -578
  19. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +9 -14
  20. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +73 -43
  21. package/dist/_esm5.processed/core/api/utils.d.ts +15 -10
  22. package/dist/_esm5.processed/core/api/utils.js +84 -19
  23. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +22 -5
  24. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +97 -25
  25. package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +3 -2
  26. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +3 -2
  27. package/dist/_esm5.processed/core/decrypt/clear_on_stop.d.ts +1 -1
  28. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +1 -1
  29. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +12 -20
  30. package/dist/_esm5.processed/core/decrypt/create_session.js +1 -1
  31. package/dist/_esm5.processed/core/decrypt/find_key_system.js +35 -13
  32. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +1 -1
  33. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +32 -31
  34. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +291 -160
  35. package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +1 -1
  36. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +1 -1
  37. package/dist/_esm5.processed/core/decrypt/types.d.ts +0 -6
  38. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.d.ts +1 -1
  39. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +1 -1
  40. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +1 -1
  41. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  42. package/dist/_esm5.processed/core/fetchers/manifest/index.d.ts +2 -2
  43. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +153 -89
  44. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +419 -144
  45. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +0 -24
  46. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +0 -24
  47. package/dist/_esm5.processed/core/init/{initialize_directfile.d.ts → directfile_content_initializer.d.ts} +13 -16
  48. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +196 -0
  49. package/dist/_esm5.processed/core/init/index.d.ts +2 -2
  50. package/dist/_esm5.processed/core/init/index.js +2 -2
  51. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +181 -0
  52. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +576 -0
  53. package/dist/_esm5.processed/core/init/types.d.ts +203 -64
  54. package/dist/_esm5.processed/core/init/types.js +36 -1
  55. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.d.ts +164 -0
  56. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +484 -0
  57. package/dist/_esm5.processed/core/init/{create_media_source.d.ts → utils/create_media_source.d.ts} +8 -4
  58. package/dist/_esm5.processed/core/init/utils/create_media_source.js +118 -0
  59. package/dist/_esm5.processed/core/init/{create_stream_playback_observer.d.ts → utils/create_stream_playback_observer.d.ts} +4 -4
  60. package/dist/_esm5.processed/core/init/{create_stream_playback_observer.js → utils/create_stream_playback_observer.js} +2 -5
  61. package/dist/_esm5.processed/core/init/{end_of_stream.d.ts → utils/end_of_stream.d.ts} +5 -5
  62. package/dist/_esm5.processed/core/init/utils/end_of_stream.js +85 -0
  63. package/dist/_esm5.processed/core/init/{get_initial_time.d.ts → utils/get_initial_time.d.ts} +1 -1
  64. package/dist/_esm5.processed/core/init/{get_initial_time.js → utils/get_initial_time.js} +3 -3
  65. package/dist/_esm5.processed/core/init/{emit_loaded_event.d.ts → utils/get_loaded_reference.d.ts} +9 -9
  66. package/dist/_esm5.processed/core/init/{emit_loaded_event.js → utils/get_loaded_reference.js} +23 -17
  67. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.d.ts +63 -0
  68. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +124 -0
  69. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +80 -0
  70. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +111 -0
  71. package/dist/_esm5.processed/core/init/{media_duration_updater.d.ts → utils/media_duration_updater.d.ts} +3 -3
  72. package/dist/_esm5.processed/core/init/{media_duration_updater.js → utils/media_duration_updater.js} +115 -41
  73. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +113 -0
  74. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +483 -0
  75. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.d.ts +0 -0
  76. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.js +0 -0
  77. package/dist/_esm5.processed/core/{stream/types.js → init/utils/stream_events_emitter/index.d.ts} +3 -1
  78. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.js +0 -0
  79. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.d.ts +1 -1
  80. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.js +0 -0
  81. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +30 -0
  82. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +155 -0
  83. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.d.ts +1 -13
  84. package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.js +0 -0
  85. package/dist/_esm5.processed/core/init/{throw_on_media_error.d.ts → utils/throw_on_media_error.d.ts} +5 -5
  86. package/dist/_esm5.processed/core/init/{throw_on_media_error.js → utils/throw_on_media_error.js} +19 -15
  87. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +0 -1
  88. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +0 -1
  89. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +0 -5
  90. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +0 -5
  91. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +3 -3
  92. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +3 -3
  93. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +1 -1
  94. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
  95. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +25 -130
  96. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +188 -117
  97. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  98. package/dist/_esm5.processed/core/stream/adaptation/index.js +1 -0
  99. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +172 -0
  100. package/dist/_esm5.processed/core/stream/adaptation/types.js +1 -0
  101. package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.d.ts → utils/create_representation_estimator.d.ts} +6 -6
  102. package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.js → utils/create_representation_estimator.js} +3 -4
  103. package/dist/_esm5.processed/core/stream/index.d.ts +4 -3
  104. package/dist/_esm5.processed/core/stream/index.js +0 -1
  105. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
  106. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +142 -17
  107. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +303 -229
  108. package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -3
  109. package/dist/_esm5.processed/core/stream/period/index.js +1 -0
  110. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +27 -62
  111. package/dist/_esm5.processed/core/stream/period/period_stream.js +278 -105
  112. package/dist/_esm5.processed/core/stream/period/types.d.ts +110 -0
  113. package/dist/_esm5.processed/core/stream/period/types.js +1 -0
  114. package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.d.ts → utils/get_adaptation_switch_strategy.d.ts} +3 -3
  115. package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.js → utils/get_adaptation_switch_strategy.js} +3 -3
  116. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  117. package/dist/_esm5.processed/core/stream/representation/index.js +1 -0
  118. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +32 -121
  119. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +210 -136
  120. package/dist/_esm5.processed/core/stream/representation/types.d.ts +267 -0
  121. package/dist/_esm5.processed/core/stream/representation/types.js +1 -0
  122. package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.d.ts → utils/append_segment_to_buffer.d.ts} +5 -5
  123. package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.js → utils/append_segment_to_buffer.js} +8 -3
  124. package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.d.ts → utils/check_for_discontinuity.d.ts} +2 -2
  125. package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.js → utils/check_for_discontinuity.js} +1 -1
  126. package/dist/_esm5.processed/core/stream/representation/{downloading_queue.d.ts → utils/downloading_queue.d.ts} +85 -80
  127. package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +378 -0
  128. package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.d.ts → utils/force_garbage_collection.d.ts} +2 -2
  129. package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.js → utils/force_garbage_collection.js} +3 -3
  130. package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.d.ts → utils/get_buffer_status.d.ts} +3 -3
  131. package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.js → utils/get_buffer_status.js} +3 -3
  132. package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.d.ts → utils/get_needed_segments.d.ts} +3 -3
  133. package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.js → utils/get_needed_segments.js} +4 -5
  134. package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.d.ts → utils/get_segment_priority.d.ts} +0 -0
  135. package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.js → utils/get_segment_priority.js} +1 -1
  136. package/dist/_esm5.processed/core/stream/representation/{push_init_segment.d.ts → utils/push_init_segment.d.ts} +9 -12
  137. package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +85 -0
  138. package/dist/_esm5.processed/core/stream/representation/{push_media_segment.d.ts → utils/push_media_segment.d.ts} +9 -12
  139. package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +109 -0
  140. package/dist/_esm5.processed/default_config.d.ts +10 -0
  141. package/dist/_esm5.processed/default_config.js +12 -1
  142. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
  143. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +1 -1
  144. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +1 -1
  145. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.d.ts +2 -3
  146. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +107 -59
  147. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +6 -7
  148. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  149. package/dist/_esm5.processed/features/list/directfile.js +1 -1
  150. package/dist/_esm5.processed/features/types.d.ts +2 -3
  151. package/dist/_esm5.processed/manifest/adaptation.d.ts +7 -0
  152. package/dist/_esm5.processed/manifest/adaptation.js +3 -0
  153. package/dist/_esm5.processed/manifest/manifest.d.ts +2 -1
  154. package/dist/_esm5.processed/manifest/manifest.js +4 -3
  155. package/dist/_esm5.processed/manifest/update_period_in_place.d.ts +26 -1
  156. package/dist/_esm5.processed/manifest/update_period_in_place.js +58 -7
  157. package/dist/_esm5.processed/manifest/update_periods.d.ts +19 -2
  158. package/dist/_esm5.processed/manifest/update_periods.js +62 -18
  159. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +3 -0
  160. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +1 -0
  161. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
  162. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -1
  163. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +16 -0
  164. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +63 -25
  165. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +3 -0
  166. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +60 -6
  167. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +39 -13
  168. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +7 -3
  169. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +5 -0
  170. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +3 -0
  171. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts +0 -1
  172. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +0 -1
  173. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +5 -0
  174. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +6 -0
  175. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
  176. package/dist/_esm5.processed/parsers/manifest/types.d.ts +13 -2
  177. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +7 -0
  178. package/dist/_esm5.processed/public_types.d.ts +2 -0
  179. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -2
  180. package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
  181. package/dist/_esm5.processed/transports/dash/text_parser.js +3 -3
  182. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  183. package/dist/_esm5.processed/utils/event_emitter.d.ts +3 -13
  184. package/dist/_esm5.processed/utils/event_emitter.js +0 -19
  185. package/dist/_esm5.processed/utils/reference.d.ts +46 -67
  186. package/dist/_esm5.processed/utils/reference.js +63 -93
  187. package/dist/_esm5.processed/utils/request/xhr.d.ts +3 -68
  188. package/dist/_esm5.processed/utils/{rx-retry_with_backoff.d.ts → retry_promise_with_backoff.d.ts} +19 -34
  189. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +119 -0
  190. package/dist/_esm5.processed/utils/sleep.d.ts +10 -0
  191. package/dist/_esm5.processed/utils/sleep.js +14 -0
  192. package/dist/_esm5.processed/utils/sorted_list.d.ts +1 -0
  193. package/dist/_esm5.processed/utils/sorted_list.js +3 -0
  194. package/dist/mpd-parser.wasm +0 -0
  195. package/dist/rx-player.js +8116 -11600
  196. package/dist/rx-player.min.js +1 -1
  197. package/dist/rx-player.min.js.LICENSE.txt +0 -15
  198. package/manifest.mpd +149 -0
  199. package/package.json +26 -26
  200. package/scripts/build/generate_build.js +1 -8
  201. package/sonar-project.properties +1 -1
  202. package/src/README.md +2 -2
  203. package/src/compat/__tests__/can_reuse_media_keys.test.ts +4 -27
  204. package/src/compat/can_reuse_media_keys.ts +5 -7
  205. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +14 -15
  206. package/src/compat/event_listeners.ts +84 -148
  207. package/src/compat/index.ts +0 -6
  208. package/src/compat/on_height_width_change.ts +2 -2
  209. package/src/core/README.md +1 -1
  210. package/src/core/adaptive/adaptive_representation_selector.ts +36 -7
  211. package/src/core/api/README.md +0 -33
  212. package/src/core/api/playback_observer.ts +20 -11
  213. package/src/core/api/public_api.ts +826 -815
  214. package/src/core/api/tracks_management/track_choice_manager.ts +97 -57
  215. package/src/core/api/utils.ts +112 -42
  216. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +42 -38
  217. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +15 -20
  218. package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +35 -47
  219. package/src/core/decrypt/__tests__/__global__/utils.ts +116 -17
  220. package/src/core/decrypt/attach_media_keys.ts +3 -2
  221. package/src/core/decrypt/clear_on_stop.ts +1 -1
  222. package/src/core/decrypt/content_decryptor.ts +19 -27
  223. package/src/core/decrypt/create_session.ts +1 -1
  224. package/src/core/decrypt/find_key_system.ts +31 -11
  225. package/src/core/decrypt/get_media_keys.ts +1 -1
  226. package/src/core/decrypt/session_events_listener.ts +259 -277
  227. package/src/core/decrypt/set_server_certificate.ts +1 -1
  228. package/src/core/decrypt/types.ts +0 -5
  229. package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +1 -1
  230. package/src/core/decrypt/utils/loaded_sessions_store.ts +1 -1
  231. package/src/core/fetchers/README.md +3 -0
  232. package/src/core/fetchers/index.ts +6 -6
  233. package/src/core/fetchers/manifest/index.ts +7 -7
  234. package/src/core/fetchers/manifest/manifest_fetcher.ts +646 -295
  235. package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -24
  236. package/src/core/init/README.md +31 -45
  237. package/src/core/init/directfile_content_initializer.ts +229 -0
  238. package/src/core/init/index.ts +3 -3
  239. package/src/core/init/media_source_content_initializer.ts +819 -0
  240. package/src/core/init/types.ts +220 -132
  241. package/src/core/init/{__tests__ → utils/__tests__}/are_same_stream_events.test.ts +0 -0
  242. package/src/core/init/{__tests__ → utils/__tests__}/refresh_scheduled_events_list.test.ts +0 -0
  243. package/src/core/init/utils/content_time_boundaries_observer.ts +609 -0
  244. package/src/core/init/{create_media_source.ts → utils/create_media_source.ts} +60 -55
  245. package/src/core/init/{create_stream_playback_observer.ts → utils/create_stream_playback_observer.ts} +7 -11
  246. package/src/core/init/utils/end_of_stream.ts +104 -0
  247. package/src/core/init/{get_initial_time.ts → utils/get_initial_time.ts} +4 -4
  248. package/src/core/init/utils/get_loaded_reference.ts +76 -0
  249. package/src/core/init/utils/initial_seek_and_play.ts +179 -0
  250. package/src/core/init/utils/initialize_content_decryption.ts +178 -0
  251. package/src/core/init/{media_duration_updater.ts → utils/media_duration_updater.ts} +166 -84
  252. package/src/core/init/{rebuffering_controller.ts → utils/rebuffering_controller.ts} +247 -226
  253. package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.ts +0 -0
  254. package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.ts +1 -13
  255. package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.ts +1 -1
  256. package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +210 -0
  257. package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.ts +1 -19
  258. package/src/core/init/utils/throw_on_media_error.ts +74 -0
  259. package/src/core/segment_buffers/README.md +5 -4
  260. package/src/core/segment_buffers/garbage_collector.ts +0 -1
  261. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -8
  262. package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +3 -3
  263. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
  264. package/src/core/stream/README.md +1 -1
  265. package/src/core/stream/adaptation/adaptation_stream.ts +265 -330
  266. package/src/core/stream/adaptation/index.ts +2 -12
  267. package/src/core/stream/adaptation/types.ts +193 -0
  268. package/src/core/stream/adaptation/{create_representation_estimator.ts → utils/create_representation_estimator.ts} +10 -9
  269. package/src/core/stream/index.ts +9 -1
  270. package/src/core/stream/orchestrator/README.md +1 -4
  271. package/src/core/stream/orchestrator/index.ts +2 -0
  272. package/src/core/stream/orchestrator/stream_orchestrator.ts +423 -326
  273. package/src/core/stream/period/index.ts +2 -12
  274. package/src/core/stream/period/period_stream.ts +301 -238
  275. package/src/core/stream/period/types.ts +132 -0
  276. package/src/core/stream/period/{get_adaptation_switch_strategy.ts → utils/get_adaptation_switch_strategy.ts} +6 -6
  277. package/src/core/stream/representation/README.md +2 -23
  278. package/src/core/stream/representation/index.ts +2 -12
  279. package/src/core/stream/representation/representation_stream.ts +315 -415
  280. package/src/core/stream/representation/types.ts +292 -0
  281. package/src/core/stream/representation/{append_segment_to_buffer.ts → utils/append_segment_to_buffer.ts} +11 -7
  282. package/src/core/stream/representation/{check_for_discontinuity.ts → utils/check_for_discontinuity.ts} +3 -3
  283. package/src/core/stream/representation/utils/downloading_queue.ts +592 -0
  284. package/src/core/stream/representation/{force_garbage_collection.ts → utils/force_garbage_collection.ts} +5 -6
  285. package/src/core/stream/representation/{get_buffer_status.ts → utils/get_buffer_status.ts} +5 -5
  286. package/src/core/stream/representation/{get_needed_segments.ts → utils/get_needed_segments.ts} +6 -7
  287. package/src/core/stream/representation/{get_segment_priority.ts → utils/get_segment_priority.ts} +1 -2
  288. package/src/core/stream/representation/utils/push_init_segment.ts +80 -0
  289. package/src/core/stream/representation/utils/push_media_segment.ts +113 -0
  290. package/src/default_config.ts +13 -1
  291. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +1 -1
  292. package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +1 -1
  293. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +58 -66
  294. package/src/experimental/tools/createMetaplaylist/index.ts +29 -38
  295. package/src/features/__tests__/initialize_features.test.ts +1 -1
  296. package/src/features/initialize_features.ts +2 -1
  297. package/src/features/list/__tests__/directfile.test.ts +3 -2
  298. package/src/features/list/directfile.ts +1 -1
  299. package/src/features/types.ts +2 -7
  300. package/src/manifest/__tests__/manifest.test.ts +14 -365
  301. package/src/manifest/__tests__/update_period_in_place.test.ts +522 -57
  302. package/src/manifest/__tests__/update_periods.test.ts +254 -40
  303. package/src/manifest/adaptation.ts +11 -0
  304. package/src/manifest/manifest.ts +6 -4
  305. package/src/manifest/update_period_in_place.ts +84 -14
  306. package/src/manifest/update_periods.ts +93 -33
  307. package/src/parsers/manifest/dash/common/indexes/base.ts +4 -0
  308. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +8 -1
  309. package/src/parsers/manifest/dash/common/indexes/template.ts +76 -25
  310. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +61 -3
  311. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +46 -15
  312. package/src/parsers/manifest/dash/common/parse_representations.ts +7 -3
  313. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +6 -0
  314. package/src/parsers/manifest/dash/node_parser_types.ts +3 -0
  315. package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +3 -0
  316. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +4 -0
  317. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  318. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +6 -0
  319. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +7 -0
  320. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +3 -0
  321. package/src/parsers/manifest/types.ts +13 -2
  322. package/src/parsers/texttracks/ttml/html/create_element.ts +8 -0
  323. package/src/public_types.ts +2 -0
  324. package/src/transports/README.md +15 -54
  325. package/src/transports/dash/manifest_parser.ts +2 -2
  326. package/src/transports/dash/segment_loader.ts +1 -1
  327. package/src/transports/dash/text_parser.ts +3 -3
  328. package/src/transports/local/segment_loader.ts +1 -1
  329. package/src/utils/__tests__/event_emitter.test.ts +1 -76
  330. package/src/utils/event_emitter.ts +6 -30
  331. package/src/utils/reference.ts +112 -169
  332. package/src/utils/request/xhr.ts +3 -68
  333. package/src/utils/retry_promise_with_backoff.ts +95 -0
  334. package/src/utils/sleep.ts +14 -0
  335. package/src/utils/sorted_list.ts +4 -0
  336. package/dist/_esm5.processed/compat/play.d.ts +0 -23
  337. package/dist/_esm5.processed/compat/play.js +0 -32
  338. package/dist/_esm5.processed/compat/set_element_src.d.ts +0 -26
  339. package/dist/_esm5.processed/compat/set_element_src.js +0 -37
  340. package/dist/_esm5.processed/compat/when_loaded_metadata.d.ts +0 -23
  341. package/dist/_esm5.processed/compat/when_loaded_metadata.js +0 -33
  342. package/dist/_esm5.processed/core/init/content_time_boundaries_observer.d.ts +0 -45
  343. package/dist/_esm5.processed/core/init/content_time_boundaries_observer.js +0 -295
  344. package/dist/_esm5.processed/core/init/create_media_source.js +0 -107
  345. package/dist/_esm5.processed/core/init/end_of_stream.js +0 -74
  346. package/dist/_esm5.processed/core/init/events_generators.d.ts +0 -88
  347. package/dist/_esm5.processed/core/init/events_generators.js +0 -87
  348. package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +0 -81
  349. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +0 -114
  350. package/dist/_esm5.processed/core/init/initialize_directfile.js +0 -120
  351. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +0 -122
  352. package/dist/_esm5.processed/core/init/initialize_media_source.js +0 -201
  353. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +0 -62
  354. package/dist/_esm5.processed/core/init/link_drm_and_content.js +0 -94
  355. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +0 -46
  356. package/dist/_esm5.processed/core/init/load_on_media_source.js +0 -122
  357. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +0 -65
  358. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +0 -233
  359. package/dist/_esm5.processed/core/init/rebuffering_controller.d.ts +0 -81
  360. package/dist/_esm5.processed/core/init/rebuffering_controller.js +0 -439
  361. package/dist/_esm5.processed/core/init/stream_events_emitter/index.d.ts +0 -19
  362. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +0 -27
  363. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +0 -126
  364. package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +0 -0
  365. package/dist/_esm5.processed/core/init/update_playback_rate.js +0 -1
  366. package/dist/_esm5.processed/core/stream/events_generators.d.ts +0 -67
  367. package/dist/_esm5.processed/core/stream/events_generators.js +0 -112
  368. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +0 -53
  369. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +0 -124
  370. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +0 -35
  371. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +0 -53
  372. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +0 -36
  373. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +0 -46
  374. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +0 -47
  375. package/dist/_esm5.processed/core/stream/reload_after_switch.js +0 -56
  376. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +0 -371
  377. package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +0 -49
  378. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +0 -76
  379. package/dist/_esm5.processed/core/stream/types.d.ts +0 -437
  380. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +0 -24
  381. package/dist/_esm5.processed/utils/cast_to_observable.js +0 -35
  382. package/dist/_esm5.processed/utils/concat_map_latest.d.ts +0 -23
  383. package/dist/_esm5.processed/utils/concat_map_latest.js +0 -48
  384. package/dist/_esm5.processed/utils/defer_subscriptions.d.ts +0 -79
  385. package/dist/_esm5.processed/utils/defer_subscriptions.js +0 -89
  386. package/dist/_esm5.processed/utils/filter_map.d.ts +0 -28
  387. package/dist/_esm5.processed/utils/filter_map.js +0 -32
  388. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +0 -39
  389. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +0 -63
  390. package/dist/_esm5.processed/utils/rx-next-tick.d.ts +0 -27
  391. package/dist/_esm5.processed/utils/rx-next-tick.js +0 -41
  392. package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +0 -70
  393. package/dist/_esm5.processed/utils/rx-throttle.d.ts +0 -40
  394. package/dist/_esm5.processed/utils/rx-throttle.js +0 -47
  395. package/dist/_esm5.processed/utils/rx-try_catch.d.ts +0 -23
  396. package/dist/_esm5.processed/utils/rx-try_catch.js +0 -30
  397. package/src/compat/__tests__/play.test.ts +0 -73
  398. package/src/compat/__tests__/set_element_src.test.ts +0 -71
  399. package/src/compat/__tests__/when_loaded_metadata.test.ts +0 -109
  400. package/src/compat/play.ts +0 -37
  401. package/src/compat/set_element_src.ts +0 -47
  402. package/src/compat/when_loaded_metadata.ts +0 -40
  403. package/src/core/init/content_time_boundaries_observer.ts +0 -382
  404. package/src/core/init/emit_loaded_event.ts +0 -71
  405. package/src/core/init/end_of_stream.ts +0 -104
  406. package/src/core/init/events_generators.ts +0 -140
  407. package/src/core/init/initial_seek_and_play.ts +0 -208
  408. package/src/core/init/initialize_directfile.ts +0 -191
  409. package/src/core/init/initialize_media_source.ts +0 -389
  410. package/src/core/init/link_drm_and_content.ts +0 -176
  411. package/src/core/init/load_on_media_source.ts +0 -237
  412. package/src/core/init/manifest_update_scheduler.ts +0 -362
  413. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +0 -182
  414. package/src/core/init/throw_on_media_error.ts +0 -68
  415. package/src/core/init/update_playback_rate.ts +0 -0
  416. package/src/core/stream/events_generators.ts +0 -217
  417. package/src/core/stream/orchestrator/active_period_emitter.ts +0 -146
  418. package/src/core/stream/orchestrator/are_streams_complete.ts +0 -70
  419. package/src/core/stream/period/create_empty_adaptation_stream.ts +0 -70
  420. package/src/core/stream/reload_after_switch.ts +0 -76
  421. package/src/core/stream/representation/downloading_queue.ts +0 -632
  422. package/src/core/stream/representation/push_init_segment.ts +0 -87
  423. package/src/core/stream/representation/push_media_segment.ts +0 -125
  424. package/src/core/stream/types.ts +0 -558
  425. package/src/utils/__tests__/cast_to_observable.test.ts +0 -93
  426. package/src/utils/__tests__/concat_map_latest.test.ts +0 -221
  427. package/src/utils/__tests__/defer_subscriptions.test.ts +0 -50
  428. package/src/utils/__tests__/filter_map.test.ts +0 -87
  429. package/src/utils/__tests__/rx-throttle.test.ts +0 -252
  430. package/src/utils/__tests__/rx-try_catch.test.ts +0 -100
  431. package/src/utils/cast_to_observable.ts +0 -48
  432. package/src/utils/concat_map_latest.ts +0 -61
  433. package/src/utils/defer_subscriptions.ts +0 -96
  434. package/src/utils/filter_map.ts +0 -43
  435. package/src/utils/rx-from_cancellable_promise.ts +0 -71
  436. package/src/utils/rx-next-tick.ts +0 -43
  437. package/src/utils/rx-retry_with_backoff.ts +0 -101
  438. package/src/utils/rx-throttle.ts +0 -84
  439. package/src/utils/rx-try_catch.ts +0 -37
@@ -32,12 +32,9 @@ import isOffline from "./is_offline";
32
32
  import isVTTCue from "./is_vtt_cue";
33
33
  import makeVTTCue from "./make_vtt_cue";
34
34
  import onHeightWidthChange from "./on_height_width_change";
35
- import play from "./play";
36
- import setElementSrc$ from "./set_element_src";
37
35
  import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
38
36
  import shouldRenewMediaKeySystemAccess from "./should_renew_media_key_system_access";
39
37
  import shouldUnsetMediaKeys from "./should_unset_media_keys";
40
38
  import shouldValidateMetadata from "./should_validate_metadata";
41
39
  import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
42
- import whenLoadedMetadata$ from "./when_loaded_metadata";
43
- export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, 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, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, };
40
+ export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, requestFullscreen, requestMediaKeySystemAccess, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, };
@@ -33,17 +33,14 @@ import isVTTCue from "./is_vtt_cue";
33
33
  import makeVTTCue from "./make_vtt_cue";
34
34
  import onHeightWidthChange from "./on_height_width_change";
35
35
  import patchWebkitSourceBuffer from "./patch_webkit_source_buffer";
36
- import play from "./play";
37
- import setElementSrc$ from "./set_element_src";
38
36
  // eslint-disable-next-line max-len
39
37
  import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
40
38
  import shouldRenewMediaKeySystemAccess from "./should_renew_media_key_system_access";
41
39
  import shouldUnsetMediaKeys from "./should_unset_media_keys";
42
40
  import shouldValidateMetadata from "./should_validate_metadata";
43
41
  import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
44
- import whenLoadedMetadata$ from "./when_loaded_metadata";
45
42
  // TODO To remove. This seems to be the only side-effect done on import, which
46
43
  // we would prefer to disallow (both for the understandability of the code and
47
44
  // to better exploit tree shaking.
48
45
  patchWebkitSourceBuffer();
49
- export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, };
46
+ export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, requestFullscreen, requestMediaKeySystemAccess, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, };
@@ -28,6 +28,6 @@ export interface IResolution {
28
28
  * milliseconds at which we should query that element's size.
29
29
  * @param {HTMLElement} element
30
30
  * @param {number} interval
31
- * @returns {Observable}
31
+ * @returns {Object}
32
32
  */
33
33
  export default function onHeightWidthChange(element: HTMLElement, interval: number, cancellationSignal: CancellationSignal): IReadOnlySharedReference<IResolution>;
@@ -31,14 +31,14 @@ var _ResizeObserver = isNode ? undefined :
31
31
  * milliseconds at which we should query that element's size.
32
32
  * @param {HTMLElement} element
33
33
  * @param {number} interval
34
- * @returns {Observable}
34
+ * @returns {Object}
35
35
  */
36
36
  export default function onHeightWidthChange(element, interval, cancellationSignal) {
37
37
  var _a = element.getBoundingClientRect(), initHeight = _a.height, initWidth = _a.width;
38
38
  var ref = createSharedReference({
39
39
  height: initHeight,
40
40
  width: initWidth,
41
- });
41
+ }, cancellationSignal);
42
42
  var lastHeight = initHeight;
43
43
  var lastWidth = initWidth;
44
44
  if (_ResizeObserver !== undefined) {
@@ -137,6 +137,7 @@ declare class ConfigHandler {
137
137
  MAX_HIGH_PRIORITY_LEVEL: number;
138
138
  MIN_CANCELABLE_PRIORITY: number;
139
139
  EME_DEFAULT_WIDEVINE_ROBUSTNESSES: string[];
140
+ EME_DEFAULT_PLAYREADY_ROBUSTNESSES: string[];
140
141
  EME_KEY_SYSTEMS: Partial<Record<string, string[]>>;
141
142
  MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE: number;
142
143
  MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE: number;
@@ -56,8 +56,10 @@ export interface IABREstimate {
56
56
  /**
57
57
  * The Representation considered as the most adapted to the current network
58
58
  * and playback conditions.
59
+ * `null` in the rare occurence where there is no `Representation` to choose
60
+ * from.
59
61
  */
60
- representation: Representation;
62
+ representation: Representation | null;
61
63
  /**
62
64
  * If `true`, the current `representation` suggested should be switched to as
63
65
  * soon as possible. For example, you might want to interrupt all pending
@@ -29,6 +29,17 @@ import LastEstimateStorage from "./utils/last_estimate_storage";
29
29
  import PendingRequestsStore from "./utils/pending_requests_store";
30
30
  import RepresentationScoreCalculator from "./utils/representation_score_calculator";
31
31
  import selectOptimalRepresentation from "./utils/select_optimal_representation";
32
+ // Create default shared references
33
+ var manualBitrateDefaultRef = createSharedReference(-1);
34
+ manualBitrateDefaultRef.finish();
35
+ var minAutoBitrateDefaultRef = createSharedReference(0);
36
+ minAutoBitrateDefaultRef.finish();
37
+ var maxAutoBitrateDefaultRef = createSharedReference(Infinity);
38
+ maxAutoBitrateDefaultRef.finish();
39
+ var limitWidthDefaultRef = createSharedReference(undefined);
40
+ limitWidthDefaultRef.finish();
41
+ var throttleBitrateDefaultRef = createSharedReference(Infinity);
42
+ throttleBitrateDefaultRef.finish();
32
43
  /**
33
44
  * Select the most adapted Representation according to the network and buffer
34
45
  * metrics it receives.
@@ -59,13 +70,13 @@ export default function createAdaptiveRepresentationSelector(options) {
59
70
  return function getEstimates(context, currentRepresentation, representations, playbackObserver, stopAllEstimates) {
60
71
  var type = context.adaptation.type;
61
72
  var bandwidthEstimator = _getBandwidthEstimator(type);
62
- var manualBitrate = takeFirstSet(manualBitrates[type], createSharedReference(-1));
63
- var minAutoBitrate = takeFirstSet(minAutoBitrates[type], createSharedReference(0));
64
- var maxAutoBitrate = takeFirstSet(maxAutoBitrates[type], createSharedReference(Infinity));
73
+ var manualBitrate = takeFirstSet(manualBitrates[type], manualBitrateDefaultRef);
74
+ var minAutoBitrate = takeFirstSet(minAutoBitrates[type], minAutoBitrateDefaultRef);
75
+ var maxAutoBitrate = takeFirstSet(maxAutoBitrates[type], maxAutoBitrateDefaultRef);
65
76
  var initialBitrate = takeFirstSet(initialBitrates[type], 0);
66
77
  var filters = {
67
- limitWidth: takeFirstSet(throttlers.limitWidth[type], createSharedReference(undefined)),
68
- throttleBitrate: takeFirstSet(throttlers.throttleBitrate[type], throttlers.throttle[type], createSharedReference(Infinity)),
78
+ limitWidth: takeFirstSet(throttlers.limitWidth[type], limitWidthDefaultRef),
79
+ throttleBitrate: takeFirstSet(throttlers.throttleBitrate[type], throttlers.throttle[type], throttleBitrateDefaultRef),
69
80
  };
70
81
  return getEstimateReference({ bandwidthEstimator: bandwidthEstimator, context: context, currentRepresentation: currentRepresentation, filters: filters, initialBitrate: initialBitrate, manualBitrate: manualBitrate, minAutoBitrate: minAutoBitrate, maxAutoBitrate: maxAutoBitrate, playbackObserver: playbackObserver, representations: representations, lowLatencyMode: lowLatencyMode }, stopAllEstimates);
71
82
  };
@@ -129,6 +140,16 @@ function getEstimateReference(_a, stopAllEstimates) {
129
140
  representationsRef.onUpdate(restartEstimatesProductionFromCurrentConditions, { clearSignal: stopAllEstimates });
130
141
  return { estimates: estimateRef, callbacks: callbacks };
131
142
  function createEstimateReference(manualBitrateVal, representations, innerCancellationSignal) {
143
+ if (representations.length === 0) {
144
+ // No Representation given, return `null` as documented
145
+ return createSharedReference({
146
+ representation: null,
147
+ bitrate: undefined,
148
+ knownStableBitrate: undefined,
149
+ manual: false,
150
+ urgent: true,
151
+ });
152
+ }
132
153
  if (manualBitrateVal >= 0) {
133
154
  // A manual bitrate has been set. Just choose Representation according to it.
134
155
  var manualRepresentation = selectOptimalRepresentation(representations, manualBitrateVal, 0, Infinity);
@@ -174,7 +195,7 @@ function getEstimateReference(_a, stopAllEstimates) {
174
195
  var lastPlaybackObservation = playbackObserver.getReference().getValue();
175
196
  /** Reference through which estimates are emitted. */
176
197
  var innerEstimateRef = createSharedReference(getCurrentEstimate());
177
- // subscribe to subsequent playback observations
198
+ // Listen to playback observations
178
199
  playbackObserver.listen(function (obs) {
179
200
  lastPlaybackObservation = obs;
180
201
  updateEstimate();
@@ -24,8 +24,8 @@ import { CancellationSignal } from "../../utils/task_canceller";
24
24
  * `PlaybackObserver` to know the current state of the media being played.
25
25
  *
26
26
  * You can use the PlaybackObserver to either get the last observation
27
- * performed, get the current media state or subscribe to an Observable emitting
28
- * regularly media conditions.
27
+ * performed, get the current media state or listen to media observation sent
28
+ * at a regular interval.
29
29
  *
30
30
  * @class {PlaybackObserver}
31
31
  */
@@ -77,8 +77,7 @@ export default class PlaybackObserver {
77
77
  constructor(mediaElement: HTMLMediaElement, options: IPlaybackObserverOptions);
78
78
  /**
79
79
  * Stop the `PlaybackObserver` from emitting playback observations and free all
80
- * resources reserved to emitting them such as event listeners, intervals and
81
- * subscribing callbacks.
80
+ * resources reserved to emitting them such as event listeners and intervals.
82
81
  *
83
82
  * Once `stop` is called, no new playback observation will ever be emitted.
84
83
  *
@@ -131,7 +130,7 @@ export default class PlaybackObserver {
131
130
  * produced by the `PlaybackObserver` and updated each time a new one is
132
131
  * produced.
133
132
  *
134
- * This value can then be for example subscribed to to be notified of future
133
+ * This value can then be for example listened to to be notified of future
135
134
  * playback observations.
136
135
  *
137
136
  * @returns {Object}
@@ -146,7 +145,7 @@ export default class PlaybackObserver {
146
145
  * - `clearSignal`: If set, the callback will be unregistered when this
147
146
  * CancellationSignal emits.
148
147
  */
149
- listen(cb: (observation: IPlaybackObservation) => void, options?: {
148
+ listen(cb: (observation: IPlaybackObservation, stopListening: () => void) => void, options?: {
150
149
  includeLastObservation?: boolean | undefined;
151
150
  clearSignal?: CancellationSignal | undefined;
152
151
  }): typeof noop | undefined;
@@ -168,7 +167,7 @@ export default class PlaybackObserver {
168
167
  /**
169
168
  * Creates the `IReadOnlySharedReference` that will generate playback
170
169
  * observations.
171
- * @returns {Observable}
170
+ * @returns {Object}
172
171
  */
173
172
  private _createSharedReference;
174
173
  private _generateInitialObservation;
@@ -328,7 +327,7 @@ export interface IReadOnlyPlaybackObserver<TObservationType> {
328
327
  * produced by the `IReadOnlyPlaybackObserver` and updated each time a new one
329
328
  * is produced.
330
329
  *
331
- * This value can then be for example subscribed to to be notified of future
330
+ * This value can then be for example listened to to be notified of future
332
331
  * playback observations.
333
332
  *
334
333
  * @returns {Object}
@@ -344,7 +343,7 @@ export interface IReadOnlyPlaybackObserver<TObservationType> {
344
343
  * CancellationSignal emits.
345
344
  * @returns {Function} - Allows to easily unregister the callback
346
345
  */
347
- listen(cb: (observation: TObservationType) => void, options?: {
346
+ listen(cb: (observation: TObservationType, stopListening: () => void) => void, options?: {
348
347
  includeLastObservation?: boolean | undefined;
349
348
  clearSignal?: CancellationSignal | undefined;
350
349
  }): void;
@@ -41,8 +41,8 @@ var SCANNED_MEDIA_ELEMENTS_EVENTS = ["canplay",
41
41
  * `PlaybackObserver` to know the current state of the media being played.
42
42
  *
43
43
  * You can use the PlaybackObserver to either get the last observation
44
- * performed, get the current media state or subscribe to an Observable emitting
45
- * regularly media conditions.
44
+ * performed, get the current media state or listen to media observation sent
45
+ * at a regular interval.
46
46
  *
47
47
  * @class {PlaybackObserver}
48
48
  */
@@ -67,8 +67,7 @@ var PlaybackObserver = /** @class */ (function () {
67
67
  }
68
68
  /**
69
69
  * Stop the `PlaybackObserver` from emitting playback observations and free all
70
- * resources reserved to emitting them such as event listeners, intervals and
71
- * subscribing callbacks.
70
+ * resources reserved to emitting them such as event listeners and intervals.
72
71
  *
73
72
  * Once `stop` is called, no new playback observation will ever be emitted.
74
73
  *
@@ -136,7 +135,7 @@ var PlaybackObserver = /** @class */ (function () {
136
135
  * produced by the `PlaybackObserver` and updated each time a new one is
137
136
  * produced.
138
137
  *
139
- * This value can then be for example subscribed to to be notified of future
138
+ * This value can then be for example listened to to be notified of future
140
139
  * playback observations.
141
140
  *
142
141
  * @returns {Object}
@@ -183,7 +182,7 @@ var PlaybackObserver = /** @class */ (function () {
183
182
  /**
184
183
  * Creates the `IReadOnlySharedReference` that will generate playback
185
184
  * observations.
186
- * @returns {Observable}
185
+ * @returns {Object}
187
186
  */
188
187
  PlaybackObserver.prototype._createSharedReference = function () {
189
188
  var _this = this;
@@ -220,7 +219,7 @@ var PlaybackObserver = /** @class */ (function () {
220
219
  }
221
220
  return timings;
222
221
  };
223
- var returnedSharedReference = createSharedReference(getCurrentObservation("init"));
222
+ var returnedSharedReference = createSharedReference(getCurrentObservation("init"), this._canceller.signal);
224
223
  var generateObservationForEvent = function (event) {
225
224
  var newObservation = getCurrentObservation(event);
226
225
  if (log.hasLevel("DEBUG")) {
@@ -38,7 +38,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
38
38
  readonly log: Logger;
39
39
  /**
40
40
  * Current state of the RxPlayer.
41
- * Please use `getLoadedContentState()` instead.
41
+ * Please use `getPlayerState()` instead.
42
42
  */
43
43
  state: IPlayerState;
44
44
  /**
@@ -46,7 +46,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
46
46
  * used for its normal functionment can be freed.
47
47
  * The player will be unusable after that.
48
48
  */
49
- private readonly _priv_destroy$;
49
+ private readonly _destroyCanceller;
50
50
  /**
51
51
  * Contains `true` when the previous content is cleaning-up, `false` when it's
52
52
  * done.
@@ -80,18 +80,6 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
80
80
  private _priv_preferredVideoTracks;
81
81
  /** If `true` trickMode video tracks will be chosen if available. */
82
82
  private _priv_preferTrickModeTracks;
83
- /**
84
- * TrackChoiceManager instance linked to the current content.
85
- * `null` if no content has been loaded or if the current content loaded
86
- * has no TrackChoiceManager.
87
- */
88
- private _priv_trackChoiceManager;
89
- /**
90
- * MediaElementTrackChoiceManager instance linked to the current content.
91
- * `null` if no content has been loaded or if the current content loaded
92
- * has no MediaElementTrackChoiceManager.
93
- */
94
- private _priv_mediaElementTrackChoiceManager;
95
83
  /** Refer to last picture in picture event received. */
96
84
  private _priv_pictureInPictureRef;
97
85
  /** Store wanted configuration for the `limitVideoWidth` option. */
@@ -241,11 +229,23 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
241
229
  */
242
230
  areTrickModeTracksEnabled(): boolean;
243
231
  /**
244
- * Returns the url of the content's manifest
232
+ * Returns the url of the currently considered Manifest, or of the content for
233
+ * directfile content.
245
234
  * @returns {string|undefined} - Current URL. `undefined` if not known or no
246
235
  * URL yet.
247
236
  */
248
237
  getUrl(): string | undefined;
238
+ /**
239
+ * Update URL of the content currently being played (e.g. DASH's MPD).
240
+ * @param {Array.<string>|undefined} urls - URLs to reach that content /
241
+ * Manifest from the most prioritized URL to the least prioritized URL.
242
+ * @param {Object|undefined} [params]
243
+ * @param {boolean} params.refresh - If `true` the resource in question
244
+ * (e.g. DASH's MPD) will be refreshed immediately.
245
+ */
246
+ updateContentUrls(urls: string[] | undefined, params?: {
247
+ refresh?: boolean;
248
+ } | undefined): void;
249
249
  /**
250
250
  * Returns the video duration, in seconds.
251
251
  * NaN if no video is playing.
@@ -685,58 +685,39 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
685
685
  * Reset all state properties relative to a playing content.
686
686
  */
687
687
  private _priv_cleanUpCurrentContentState;
688
- /**
689
- * Triggered each time the playback Observable emits.
690
- *
691
- * React to various events.
692
- *
693
- * @param {Object} event - payload emitted
694
- */
695
- private _priv_onPlaybackEvent;
696
- /**
697
- * Triggered when we received a fatal error.
698
- * Clean-up ressources and signal that the content has stopped on error.
699
- * @param {Error} error
700
- */
701
- private _priv_onPlaybackError;
702
- /**
703
- * Triggered when we received a warning event during playback.
704
- * Trigger the right API event.
705
- * @param {Error} error
706
- */
707
- private _priv_onPlaybackWarning;
708
688
  /**
709
689
  * Triggered when the Manifest has been loaded for the current content.
710
690
  * Initialize various private properties and emit initial event.
711
- * @param {Object} value
691
+ * @param {Object} contentInfos
692
+ * @param {Object} manifest
712
693
  */
713
694
  private _priv_onManifestReady;
714
695
  /**
715
696
  * Triggered each times the current Period Changed.
716
697
  * Store and emit initial state for the Period.
717
698
  *
718
- * @param {Object} value
699
+ * @param {Object} contentInfos
700
+ * @param {Object} periodInfo
719
701
  */
720
702
  private _priv_onActivePeriodChanged;
721
703
  /**
722
704
  * Triggered each times a new "PeriodStream" is ready.
723
705
  * Choose the right Adaptation for the Period and emit it.
706
+ * @param {Object} contentInfos
724
707
  * @param {Object} value
725
708
  */
726
709
  private _priv_onPeriodStreamReady;
727
710
  /**
728
711
  * Triggered each times we "remove" a PeriodStream.
712
+ * @param {Object} contentInfos
729
713
  * @param {Object} value
730
714
  */
731
715
  private _priv_onPeriodStreamCleared;
732
- /**
733
- * Triggered each time the content is re-loaded on the MediaSource.
734
- */
735
- private _priv_onReloadingMediaSource;
736
716
  /**
737
717
  * Triggered each times a new Adaptation is considered for the current
738
718
  * content.
739
719
  * Store given Adaptation and emit it if from the current Period.
720
+ * @param {Object} contentInfos
740
721
  * @param {Object} value
741
722
  */
742
723
  private _priv_onAdaptationChange;
@@ -745,6 +726,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
745
726
  *
746
727
  * Store given Representation and emit it if from the current Period.
747
728
  *
729
+ * @param {Object} contentInfos
748
730
  * @param {Object} obj
749
731
  */
750
732
  private _priv_onRepresentationChange;
@@ -777,6 +759,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
777
759
  *
778
760
  * Trigger the right Player Event
779
761
  *
762
+ * @param {Object} contentInfos
780
763
  * @param {Object} observation
781
764
  */
782
765
  private _priv_triggerPositionUpdate;
@@ -785,6 +768,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
785
768
  * the previously stored value.
786
769
  * @param {string} event
787
770
  * @param {Array.<number>} newVal
771
+ * @param {Object} currentContentCancelSignal
788
772
  */
789
773
  private _priv_triggerAvailableBitratesChangeEvent;
790
774
  /**
@@ -792,9 +776,23 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
792
776
  * previously stored value.
793
777
  * @param {string} event
794
778
  * @param {number} newVal
779
+ * @param {Object} currentContentCancelSignal
795
780
  */
796
781
  private _priv_triggerCurrentBitrateChangeEvent;
797
782
  private _priv_getCurrentRepresentations;
783
+ /**
784
+ * @param {string} evt
785
+ * @param {*} arg
786
+ * @param {Object} currentContentCancelSignal
787
+ */
788
+ private _priv_triggerEventIfNotStopped;
789
+ /**
790
+ * @param {Object} defaultAudioTrack
791
+ * @param {Object} defaultTextTrack
792
+ * @param {Object} cancelSignal
793
+ * @returns {Object}
794
+ */
795
+ private _priv_initializeMediaElementTrackChoiceManager;
798
796
  }
799
797
  /** Every events sent by the RxPlayer's public API. */
800
798
  interface IPublicAPIEvent {