rx-player 3.26.1 → 3.26.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/.github/workflows/checks.yml +99 -0
  2. package/.github/workflows/sonarcloud_analysis.yml +20 -0
  3. package/CHANGELOG.md +99 -71
  4. package/README.md +19 -18
  5. package/VERSION +1 -1
  6. package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
  7. package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
  8. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
  12. package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
  13. package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
  14. package/dist/_esm5.processed/compat/event_listeners.d.ts +3 -2
  15. package/dist/_esm5.processed/compat/event_listeners.js +8 -14
  16. package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
  17. package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
  18. package/dist/_esm5.processed/compat/set_element_src.js +1 -1
  19. package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
  20. package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
  21. package/dist/_esm5.processed/config.d.ts +3 -8
  22. package/dist/_esm5.processed/config.js +4 -9
  23. package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
  24. package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
  25. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
  26. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
  27. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
  28. package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
  29. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
  30. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
  31. package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
  32. package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
  33. package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
  34. package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
  35. package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
  36. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +25 -7
  37. package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
  38. package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
  39. package/dist/_esm5.processed/core/abr/pending_requests_store.js +9 -7
  40. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
  41. package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
  42. package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
  43. package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
  44. package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
  45. package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
  46. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
  47. package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
  48. package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
  49. package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
  50. package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
  51. package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
  52. package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
  53. package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
  54. package/dist/_esm5.processed/core/api/index.d.ts +3 -1
  55. package/dist/_esm5.processed/core/api/index.js +2 -0
  56. package/dist/_esm5.processed/core/api/option_utils.js +4 -4
  57. package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
  58. package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
  59. package/dist/_esm5.processed/core/api/public_api.d.ts +8 -7
  60. package/dist/_esm5.processed/core/api/public_api.js +98 -94
  61. package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
  62. package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
  63. package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
  64. package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
  65. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
  66. package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
  67. package/dist/_esm5.processed/core/eme/create_session.js +1 -2
  68. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
  69. package/dist/_esm5.processed/core/eme/eme_manager.js +4 -5
  70. package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
  71. package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
  72. package/dist/_esm5.processed/core/eme/get_session.js +1 -2
  73. package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
  74. package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
  75. package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
  76. package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
  77. package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
  78. package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
  79. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
  80. package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +3 -3
  81. package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
  82. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
  83. package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
  84. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
  85. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
  86. package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
  87. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +42 -11
  88. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
  89. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
  90. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
  91. package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
  92. package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
  93. package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
  94. package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
  95. package/dist/_esm5.processed/core/init/duration_updater.js +16 -7
  96. package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
  97. package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
  98. package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
  99. package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
  100. package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
  101. package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
  102. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
  103. package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
  104. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
  105. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
  106. package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
  107. package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
  108. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
  109. package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
  110. package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
  111. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
  112. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
  113. package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
  114. package/dist/_esm5.processed/core/init/types.d.ts +0 -20
  115. package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
  116. package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
  117. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
  118. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +8 -7
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
  122. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
  123. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
  124. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
  125. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
  126. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
  127. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
  128. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
  129. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
  130. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
  131. package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -20
  132. package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
  133. package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
  134. package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
  135. package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
  136. package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
  137. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
  138. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +22 -21
  139. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
  140. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +11 -10
  141. package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
  142. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
  143. package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
  144. package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
  145. package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
  146. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
  147. package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
  148. package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +9 -9
  149. package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
  150. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
  151. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +6 -8
  152. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
  153. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +7 -8
  154. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
  155. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
  156. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
  157. package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
  158. package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +4 -2
  159. package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
  160. package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
  161. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
  162. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
  163. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
  164. package/dist/_esm5.processed/errors/error_message.js +1 -1
  165. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
  166. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
  167. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
  168. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
  169. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
  170. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
  171. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
  172. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
  173. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
  174. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
  175. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
  176. package/dist/_esm5.processed/features/initialize_features.js +47 -44
  177. package/dist/_esm5.processed/index.js +2 -2
  178. package/dist/_esm5.processed/manifest/index.d.ts +2 -2
  179. package/dist/_esm5.processed/manifest/index.js +2 -2
  180. package/dist/_esm5.processed/manifest/representation.js +1 -1
  181. package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
  182. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
  183. package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
  184. package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
  185. package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
  186. package/dist/_esm5.processed/minimal.js +2 -2
  187. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
  188. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
  189. package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
  190. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
  191. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +52 -47
  192. package/dist/_esm5.processed/parsers/images/bif.js +1 -1
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
  194. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
  195. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
  196. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
  197. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
  198. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
  199. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
  200. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
  201. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
  202. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
  203. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
  204. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
  205. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
  206. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -1
  207. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
  208. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
  209. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
  210. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +3 -1
  211. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
  212. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
  213. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
  214. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
  215. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
  216. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
  217. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
  218. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
  219. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
  220. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
  221. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
  222. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
  223. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
  224. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
  225. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
  226. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +12 -9
  227. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
  228. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
  229. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
  230. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
  231. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
  232. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
  233. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +5 -0
  234. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
  235. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -0
  236. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
  237. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
  238. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
  239. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
  240. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +1 -1
  241. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
  242. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
  243. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
  244. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
  245. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
  246. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
  247. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
  248. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
  249. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
  250. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
  251. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
  252. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
  253. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
  254. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
  255. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
  256. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +2 -2
  257. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  258. package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
  259. package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
  260. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  261. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
  262. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  263. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  264. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
  265. package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
  266. package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
  267. package/dist/_esm5.processed/transports/types.d.ts +29 -15
  268. package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
  269. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  270. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
  271. package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
  272. package/dist/_esm5.processed/utils/assert.js +3 -3
  273. package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
  274. package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
  275. package/dist/_esm5.processed/utils/filter_map.js +1 -2
  276. package/dist/_esm5.processed/utils/reference.d.ts +108 -0
  277. package/dist/_esm5.processed/utils/reference.js +137 -0
  278. package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
  279. package/dist/_esm5.processed/utils/request/fetch.js +3 -3
  280. package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
  281. package/dist/_esm5.processed/utils/request/xhr.js +1 -1
  282. package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
  283. package/dist/mpd-parser.wasm +0 -0
  284. package/dist/rx-player.d.ts +1 -15
  285. package/dist/rx-player.js +3666 -2470
  286. package/dist/rx-player.min.d.ts +1 -15
  287. package/dist/rx-player.min.js +1 -1
  288. package/jest.config.js +28 -1
  289. package/package.json +43 -43
  290. package/scripts/build/constants.d.ts +50 -0
  291. package/scripts/build/generate_build.js +1 -189
  292. package/scripts/doc-generator/construct_table_of_contents.js +31 -24
  293. package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
  294. package/scripts/doc-generator/create_documentation.js +331 -0
  295. package/scripts/doc-generator/create_documentation_page.js +209 -0
  296. package/scripts/doc-generator/create_page.js +117 -35
  297. package/scripts/doc-generator/generate_header_html.js +148 -0
  298. package/scripts/doc-generator/generate_page_html.js +116 -0
  299. package/scripts/doc-generator/generate_page_list_html.js +93 -0
  300. package/scripts/doc-generator/generate_sidebar_html.js +88 -0
  301. package/scripts/doc-generator/get_search_data_for_content.js +137 -0
  302. package/scripts/doc-generator/index.js +14 -15
  303. package/scripts/doc-generator/parse_doc_configs.js +327 -0
  304. package/scripts/doc-generator/scripts/lunr.js +10 -0
  305. package/scripts/doc-generator/scripts/script.js +451 -0
  306. package/scripts/doc-generator/styles/style.css +712 -144
  307. package/scripts/doc-generator/utils.js +85 -0
  308. package/scripts/fast_demo_build.js +143 -0
  309. package/scripts/generate_documentation_list.js +6 -2
  310. package/scripts/generate_full_demo.js +26 -49
  311. package/scripts/start_demo_web_server.js +14 -4
  312. package/scripts/update-version +1 -1
  313. package/sonar-project.properties +2 -1
  314. package/src/compat/__tests__/add_text_track.test.ts +1 -0
  315. package/src/compat/__tests__/clear_element_src.test.ts +55 -28
  316. package/src/compat/__tests__/set_element_src.test.ts +2 -2
  317. package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
  318. package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
  319. package/src/compat/clear_element_src.ts +8 -6
  320. package/src/compat/eme/close_session.ts +3 -5
  321. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  322. package/src/compat/eme/custom_media_keys/index.ts +6 -6
  323. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
  324. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
  325. package/src/compat/eme/generate_key_request.ts +1 -1
  326. package/src/compat/eme/load_session.ts +4 -6
  327. package/src/compat/event_listeners.ts +12 -21
  328. package/src/compat/on_height_width_change.ts +3 -5
  329. package/src/compat/set_element_src.ts +1 -1
  330. package/src/compat/when_loaded_metadata.ts +1 -1
  331. package/src/compat/when_media_source_open.ts +1 -1
  332. package/src/config.ts +4 -9
  333. package/src/core/abr/README.md +7 -7
  334. package/src/core/abr/abr_manager.ts +62 -21
  335. package/src/core/abr/bandwidth_estimator.ts +1 -1
  336. package/src/core/abr/buffer_based_chooser.ts +8 -6
  337. package/src/core/abr/get_buffer_levels.ts +3 -0
  338. package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
  339. package/src/core/abr/guess_based_chooser.ts +308 -0
  340. package/src/core/abr/index.ts +7 -3
  341. package/src/core/abr/last_estimate_storage.ts +79 -0
  342. package/src/core/abr/network_analyzer.ts +74 -31
  343. package/src/core/abr/pending_requests_store.ts +76 -42
  344. package/src/core/abr/representation_estimator.ts +200 -125
  345. package/src/core/abr/representation_score_calculator.ts +33 -26
  346. package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
  347. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
  348. package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
  349. package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
  350. package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
  351. package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
  352. package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
  353. package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
  354. package/src/core/api/README.md +4 -3
  355. package/src/core/api/__tests__/option_utils.test.ts +1 -0
  356. package/src/core/api/emit_seek_events.ts +21 -20
  357. package/src/core/api/index.ts +6 -2
  358. package/src/core/api/playback_observer.ts +768 -0
  359. package/src/core/api/public_api.ts +111 -111
  360. package/src/core/api/track_choice_manager.ts +6 -3
  361. package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
  362. package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
  363. package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
  364. package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
  365. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
  366. package/src/core/eme/__tests__/__global__/utils.ts +1 -0
  367. package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
  368. package/src/core/eme/attach_media_keys.ts +2 -1
  369. package/src/core/eme/check_key_statuses.ts +10 -8
  370. package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
  371. package/src/core/eme/clear_eme_session.ts +6 -1
  372. package/src/core/eme/create_session.ts +3 -5
  373. package/src/core/eme/dispose_media_keys.ts +2 -2
  374. package/src/core/eme/eme_manager.ts +10 -12
  375. package/src/core/eme/find_key_system.ts +3 -5
  376. package/src/core/eme/get_media_keys.ts +4 -6
  377. package/src/core/eme/get_session.ts +2 -4
  378. package/src/core/eme/init_media_keys.ts +9 -9
  379. package/src/core/eme/session_events_listener.ts +14 -15
  380. package/src/core/eme/set_server_certificate.ts +9 -5
  381. package/src/core/eme/types.ts +15 -4
  382. package/src/core/eme/utils/close_session.ts +7 -7
  383. package/src/core/eme/utils/is_session_usable.ts +1 -1
  384. package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
  385. package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
  386. package/src/core/fetchers/index.ts +2 -2
  387. package/src/core/fetchers/manifest/manifest_fetcher.ts +1 -1
  388. package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
  389. package/src/core/fetchers/segment/index.ts +2 -2
  390. package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
  391. package/src/core/fetchers/segment/prioritizer.ts +82 -82
  392. package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
  393. package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
  394. package/src/core/init/create_eme_manager.ts +1 -1
  395. package/src/core/init/create_media_source.ts +5 -7
  396. package/src/core/init/create_stream_playback_observer.ts +88 -0
  397. package/src/core/init/duration_updater.ts +20 -17
  398. package/src/core/init/emit_loaded_event.ts +11 -15
  399. package/src/core/init/end_of_stream.ts +2 -4
  400. package/src/core/init/get_initial_time.ts +0 -1
  401. package/src/core/init/initial_seek_and_play.ts +67 -51
  402. package/src/core/init/initialize_directfile.ts +26 -35
  403. package/src/core/init/initialize_media_source.ts +28 -28
  404. package/src/core/init/load_on_media_source.ts +51 -58
  405. package/src/core/init/manifest_update_scheduler.ts +11 -12
  406. package/src/core/init/stall_avoider.ts +64 -47
  407. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
  408. package/src/core/init/throw_on_media_error.ts +1 -1
  409. package/src/core/init/types.ts +0 -24
  410. package/src/core/init/update_playback_rate.ts +15 -16
  411. package/src/core/segment_buffers/README.md +3 -3
  412. package/src/core/segment_buffers/garbage_collector.ts +15 -11
  413. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
  414. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
  415. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
  416. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  417. package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
  418. package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
  419. package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
  420. package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
  421. package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
  422. package/src/core/stream/adaptation/index.ts +2 -2
  423. package/src/core/stream/index.ts +2 -2
  424. package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
  425. package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
  426. package/src/core/stream/orchestrator/index.ts +2 -2
  427. package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
  428. package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
  429. package/src/core/stream/period/index.ts +2 -2
  430. package/src/core/stream/period/period_stream.ts +118 -75
  431. package/src/core/stream/reload_after_switch.ts +13 -10
  432. package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
  433. package/src/core/stream/representation/downloading_queue.ts +21 -24
  434. package/src/core/stream/representation/force_garbage_collection.ts +16 -23
  435. package/src/core/stream/representation/get_buffer_status.ts +9 -11
  436. package/src/core/stream/representation/get_needed_segments.ts +1 -1
  437. package/src/core/stream/representation/get_segment_priority.ts +8 -10
  438. package/src/core/stream/representation/index.ts +2 -2
  439. package/src/core/stream/representation/push_init_segment.ts +19 -16
  440. package/src/core/stream/representation/push_media_segment.ts +21 -17
  441. package/src/core/stream/representation/representation_stream.ts +50 -47
  442. package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
  443. package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
  444. package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
  445. package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
  446. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
  447. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
  448. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
  449. package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
  450. package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
  451. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
  452. package/src/features/__tests__/initialize_features.test.ts +191 -101
  453. package/src/features/initialize_features.ts +40 -37
  454. package/src/features/list/__tests__/bif_parser.test.ts +1 -0
  455. package/src/features/list/__tests__/dash.test.ts +1 -0
  456. package/src/features/list/__tests__/directfile.test.ts +1 -0
  457. package/src/features/list/__tests__/eme.test.ts +1 -0
  458. package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
  459. package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
  460. package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
  461. package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
  462. package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
  463. package/src/features/list/__tests__/image_buffer.test.ts +1 -0
  464. package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
  465. package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
  466. package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
  467. package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
  468. package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
  469. package/src/features/list/__tests__/smooth.test.ts +1 -0
  470. package/src/index.ts +2 -2
  471. package/src/manifest/__tests__/manifest.test.ts +1 -0
  472. package/src/manifest/index.ts +7 -1
  473. package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
  474. package/src/manifest/representation_index/static.ts +1 -0
  475. package/src/manifest/representation_index/types.ts +25 -3
  476. package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
  477. package/src/minimal.ts +3 -2
  478. package/src/parsers/containers/isobmff/get_box.ts +35 -8
  479. package/src/parsers/containers/isobmff/read.ts +32 -5
  480. package/src/parsers/containers/isobmff/utils.ts +52 -47
  481. package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
  482. package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
  483. package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
  484. package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
  485. package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
  486. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
  487. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
  488. package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
  489. package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
  490. package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
  491. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +13 -5
  492. package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
  493. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
  494. package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
  495. package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
  496. package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
  497. package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
  498. package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
  499. package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
  500. package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
  501. package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
  502. package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
  503. package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
  504. package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
  505. package/src/parsers/manifest/dash/node_parser_types.ts +8 -0
  506. package/src/parsers/manifest/dash/parsers_types.ts +8 -2
  507. package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
  508. package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
  509. package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
  510. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
  511. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
  512. package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
  513. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +6 -0
  514. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
  515. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -0
  516. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
  517. package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
  518. package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
  519. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
  520. package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +1 -1
  521. package/src/parsers/manifest/local/representation_index.ts +2 -0
  522. package/src/parsers/manifest/smooth/create_parser.ts +1 -1
  523. package/src/parsers/manifest/smooth/representation_index.ts +3 -1
  524. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
  525. package/src/parsers/manifest/utils/index_helpers.ts +21 -11
  526. package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
  527. package/src/parsers/texttracks/sami/html.ts +1 -1
  528. package/src/parsers/texttracks/sami/native.ts +1 -1
  529. package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
  530. package/src/transports/dash/image_pipelines.ts +4 -4
  531. package/src/transports/dash/init_segment_loader.ts +1 -1
  532. package/src/transports/dash/manifest_parser.ts +99 -25
  533. package/src/transports/dash/segment_loader.ts +1 -1
  534. package/src/transports/dash/segment_parser.ts +4 -4
  535. package/src/transports/dash/text_parser.ts +8 -8
  536. package/src/transports/local/segment_loader.ts +2 -2
  537. package/src/transports/local/segment_parser.ts +4 -4
  538. package/src/transports/local/text_parser.ts +8 -8
  539. package/src/transports/metaplaylist/pipelines.ts +11 -11
  540. package/src/transports/smooth/extract_timings_infos.ts +1 -1
  541. package/src/transports/smooth/pipelines.ts +8 -8
  542. package/src/transports/smooth/segment_loader.ts +3 -3
  543. package/src/transports/types.ts +31 -17
  544. package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
  545. package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
  546. package/src/transports/utils/parse_text_track.ts +4 -2
  547. package/src/typings/globals.d.ts +57 -40
  548. package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
  549. package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
  550. package/src/utils/__tests__/event_emitter.test.ts +1 -1
  551. package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
  552. package/src/utils/assert.ts +1 -1
  553. package/src/utils/concat_map_latest.ts +2 -4
  554. package/src/utils/defer_subscriptions.ts +1 -1
  555. package/src/utils/filter_map.ts +2 -4
  556. package/src/utils/reference.ts +234 -0
  557. package/src/utils/request/fetch.ts +3 -3
  558. package/src/utils/request/xhr.ts +2 -2
  559. package/src/utils/rx-retry_with_backoff.ts +2 -4
  560. package/tsconfig.json +4 -1
  561. package/tsconfig.modules.json +8 -3
  562. package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
  563. package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
  564. package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
  565. package/dist/_esm5.processed/core/api/clock.js +0 -363
  566. package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
  567. package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
  568. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
  569. package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
  570. package/scripts/doc-generator/construct_html.js +0 -135
  571. package/scripts/doc-generator/construct_page_list.js +0 -120
  572. package/scripts/doc-generator/create_for_dir.js +0 -151
  573. package/scripts/doc-generator/get_files_to_convert.js +0 -71
  574. package/scripts/doc-generator/mkdir_parent.js +0 -21
  575. package/scripts/doc-generator/read_title_from_md.js +0 -22
  576. package/scripts/doc-generator/remove_toc_from_md.js +0 -20
  577. package/src/core/abr/create_filters.ts +0 -59
  578. package/src/core/api/clock.ts +0 -573
  579. package/src/core/init/create_stream_clock.ts +0 -93
  580. package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
@@ -22,11 +22,11 @@
22
22
  * position and what is currently buffered.
23
23
  */
24
24
  import nextTick from "next-tick";
25
- import { BehaviorSubject, combineLatest as observableCombineLatest, concat as observableConcat, defer as observableDefer, EMPTY, merge as observableMerge, of as observableOf, Subject, } from "rxjs";
26
- import { ignoreElements, mergeMap, share, startWith, take, takeWhile, withLatestFrom, } from "rxjs/operators";
25
+ import { combineLatest as observableCombineLatest, concat as observableConcat, defer as observableDefer, EMPTY, ignoreElements, merge as observableMerge, mergeMap, of as observableOf, share, startWith, Subject, take, takeWhile, withLatestFrom, } from "rxjs";
27
26
  import log from "../../../log";
28
27
  import assertUnreachable from "../../../utils/assert_unreachable";
29
28
  import objectAssign from "../../../utils/object_assign";
29
+ import { createSharedReference } from "../../../utils/reference";
30
30
  import EVENTS from "../events_generators";
31
31
  import DownloadingQueue from "./downloading_queue";
32
32
  import getBufferStatus from "./get_buffer_status";
@@ -46,7 +46,7 @@ import pushMediaSegment from "./push_media_segment";
46
46
  * @returns {Observable}
47
47
  */
48
48
  export default function RepresentationStream(_a) {
49
- var clock$ = _a.clock$, content = _a.content, segmentBuffer = _a.segmentBuffer, segmentFetcher = _a.segmentFetcher, terminate$ = _a.terminate$, options = _a.options;
49
+ var content = _a.content, options = _a.options, playbackObserver = _a.playbackObserver, segmentBuffer = _a.segmentBuffer, segmentFetcher = _a.segmentFetcher, terminate$ = _a.terminate$;
50
50
  var period = content.period, adaptation = content.adaptation, representation = content.representation;
51
51
  var bufferGoal$ = options.bufferGoal$, drmSystemId = options.drmSystemId, fastSwitchThreshold$ = options.fastSwitchThreshold$;
52
52
  var bufferType = adaptation.type;
@@ -59,11 +59,13 @@ export default function RepresentationStream(_a) {
59
59
  /** Allows to manually re-check which segments are needed. */
60
60
  var reCheckNeededSegments$ = new Subject();
61
61
  /** Emit the last scheduled downloading queue for segments. */
62
- var lastSegmentQueue$ = new BehaviorSubject({ initSegment: null,
63
- segmentQueue: [] });
62
+ var lastSegmentQueue = createSharedReference({
63
+ initSegment: null,
64
+ segmentQueue: [],
65
+ });
64
66
  var hasInitSegment = initSegmentState.segment !== null;
65
- /** Will load every segments in `lastSegmentQueue$` */
66
- var downloadingQueue = new DownloadingQueue(content, lastSegmentQueue$, segmentFetcher, hasInitSegment);
67
+ /** Will load every segments in `lastSegmentQueue` */
68
+ var downloadingQueue = new DownloadingQueue(content, lastSegmentQueue, segmentFetcher, hasInitSegment);
67
69
  if (!hasInitSegment) {
68
70
  initSegmentState.segmentData = null;
69
71
  initSegmentState.isLoaded = true;
@@ -84,18 +86,19 @@ export default function RepresentationStream(_a) {
84
86
  hasSentEncryptionData = true;
85
87
  }
86
88
  }
87
- /** Observable loading and pushing segments scheduled through `lastSegmentQueue$`. */
89
+ /** Observable loading and pushing segments scheduled through `lastSegmentQueue`. */
88
90
  var queue$ = downloadingQueue.start()
89
91
  .pipe(mergeMap(onQueueEvent));
90
- /** Observable emitting the stream "status" and filling `lastSegmentQueue$`. */
92
+ /** Observable emitting the stream "status" and filling `lastSegmentQueue`. */
91
93
  var status$ = observableCombineLatest([
92
- clock$,
94
+ playbackObserver.observe(true),
93
95
  bufferGoal$,
94
96
  terminate$.pipe(take(1), startWith(null)),
95
97
  reCheckNeededSegments$.pipe(startWith(undefined)),
96
98
  ]).pipe(withLatestFrom(fastSwitchThreshold$), mergeMap(function (_a) {
97
- var _b = _a[0], tick = _b[0], bufferGoal = _b[1], terminate = _b[2], fastSwitchThreshold = _a[1];
98
- var status = getBufferStatus(content, tick, fastSwitchThreshold, bufferGoal, segmentBuffer);
99
+ var _b = _a[0], observation = _b[0], bufferGoal = _b[1], terminate = _b[2], fastSwitchThreshold = _a[1];
100
+ var wantedStartPosition = observation.position + observation.wantedTimeOffset;
101
+ var status = getBufferStatus(content, wantedStartPosition, playbackObserver, fastSwitchThreshold, bufferGoal, segmentBuffer);
99
102
  var neededSegments = status.neededSegments;
100
103
  var neededInitSegment = null;
101
104
  // Add initialization segment if required
@@ -108,8 +111,9 @@ export default function RepresentationStream(_a) {
108
111
  "initialization segment");
109
112
  }
110
113
  else {
114
+ var wantedStart = observation.position + observation.wantedTimeOffset;
111
115
  neededInitSegment = { segment: initSegmentState.segment,
112
- priority: getSegmentPriority(period.start, tick) };
116
+ priority: getSegmentPriority(period.start, wantedStart) };
113
117
  }
114
118
  }
115
119
  else if (neededSegments.length > 0 &&
@@ -120,13 +124,13 @@ export default function RepresentationStream(_a) {
120
124
  priority: initSegmentPriority };
121
125
  }
122
126
  if (terminate === null) {
123
- lastSegmentQueue$.next({ initSegment: neededInitSegment,
127
+ lastSegmentQueue.setValue({ initSegment: neededInitSegment,
124
128
  segmentQueue: neededSegments });
125
129
  }
126
130
  else if (terminate.urgent) {
127
131
  log.debug("Stream: Urgent switch, terminate now.", bufferType);
128
- lastSegmentQueue$.next({ initSegment: null, segmentQueue: [] });
129
- lastSegmentQueue$.complete();
132
+ lastSegmentQueue.setValue({ initSegment: null, segmentQueue: [] });
133
+ lastSegmentQueue.finish();
130
134
  return observableOf(EVENTS.streamTerminating());
131
135
  }
132
136
  else {
@@ -144,16 +148,16 @@ export default function RepresentationStream(_a) {
144
148
  [mostNeededSegment];
145
149
  var nextInit = initSegmentRequest === null ? null :
146
150
  neededInitSegment;
147
- lastSegmentQueue$.next({ initSegment: nextInit,
151
+ lastSegmentQueue.setValue({ initSegment: nextInit,
148
152
  segmentQueue: nextQueue });
149
153
  if (nextQueue.length === 0 && nextInit === null) {
150
154
  log.debug("Stream: No request left, terminate", bufferType);
151
- lastSegmentQueue$.complete();
155
+ lastSegmentQueue.finish();
152
156
  return observableOf(EVENTS.streamTerminating());
153
157
  }
154
158
  }
155
159
  var bufferStatusEvt = observableOf({ type: "stream-status",
156
- value: { period: period, position: tick.position, bufferType: bufferType, imminentDiscontinuity: status.imminentDiscontinuity,
160
+ value: { period: period, position: observation.position, bufferType: bufferType, imminentDiscontinuity: status.imminentDiscontinuity,
157
161
  hasFinishedLoading: status.hasFinishedLoading,
158
162
  neededSegments: status.neededSegments } });
159
163
  return status.shouldRefreshManifest ?
@@ -186,6 +190,11 @@ export default function RepresentationStream(_a) {
186
190
  case "end-of-segment": {
187
191
  var segment = evt.value.segment;
188
192
  return segmentBuffer.endOfSegment(objectAssign({ segment: segment }, content))
193
+ // NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
194
+ // first type parameter as `any` instead of the perfectly fine `unknown`,
195
+ // leading to linter issues, as it forbids the usage of `any`.
196
+ // This is why we're disabling the eslint rule.
197
+ /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */
189
198
  .pipe(ignoreElements());
190
199
  }
191
200
  case "end-of-queue":
@@ -217,7 +226,7 @@ export default function RepresentationStream(_a) {
217
226
  return EVENTS.encryptionDataEncountered(p);
218
227
  })) :
219
228
  EMPTY;
220
- var pushEvent$ = pushInitSegment({ clock$: clock$, content: content, segment: evt.segment,
229
+ var pushEvent$ = pushInitSegment({ playbackObserver: playbackObserver, content: content, segment: evt.segment,
221
230
  segmentData: evt.initializationData, segmentBuffer: segmentBuffer });
222
231
  return observableMerge(initEncEvt$, pushEvent$);
223
232
  }
@@ -239,7 +248,7 @@ export default function RepresentationStream(_a) {
239
248
  value: inbandEvents }) :
240
249
  EMPTY;
241
250
  var initSegmentData = initSegmentState.segmentData;
242
- var pushMediaSegment$ = pushMediaSegment({ clock$: clock$, content: content, initSegmentData: initSegmentData, parsedSegment: evt,
251
+ var pushMediaSegment$ = pushMediaSegment({ playbackObserver: playbackObserver, content: content, initSegmentData: initSegmentData, parsedSegment: evt,
243
252
  segment: evt.segment, segmentBuffer: segmentBuffer });
244
253
  return observableConcat(segmentEncryptionEvent$, manifestRefresh$, inbandEvents$, pushMediaSegment$);
245
254
  }
@@ -21,5 +21,5 @@
21
21
  * @returns {string}
22
22
  */
23
23
  export default function errorMessage(name, code, reason) {
24
- return name + " (" + code + ") " + reason;
24
+ return "".concat(name, " (").concat(code, ") ").concat(reason);
25
25
  }
@@ -1,11 +1,13 @@
1
1
  import { ISegmentFetcher } from "../../../core/fetchers/segment/segment_fetcher";
2
2
  import { ISegment } from "../../../manifest";
3
- import { ISegmentParserParsedInitSegment, ISegmentParserParsedSegment } from "../../../transports";
3
+ import { ISegmentParserParsedInitChunk, ISegmentParserParsedMediaChunk } from "../../../transports";
4
4
  import { IContentInfos } from "./types";
5
5
  export interface ICancellableRequest {
6
- data?: ISegmentParserParsedInitSegment<Uint8Array | ArrayBuffer> | ISegmentParserParsedSegment<Uint8Array | ArrayBuffer>;
6
+ data?: ISegmentParserParsedInitChunk<Uint8Array | ArrayBuffer> | ISegmentParserParsedMediaChunk<Uint8Array | ArrayBuffer>;
7
+ isComplete: boolean;
7
8
  error?: Error;
8
- onData?: (data: ISegmentParserParsedInitSegment<Uint8Array | ArrayBuffer> | ISegmentParserParsedSegment<Uint8Array | ArrayBuffer>) => void;
9
+ onData?: (data: ISegmentParserParsedInitChunk<Uint8Array | ArrayBuffer> | ISegmentParserParsedMediaChunk<Uint8Array | ArrayBuffer>) => void;
10
+ onComplete?: () => void;
9
11
  onError?: (err: Error) => void;
10
12
  cancel: () => void;
11
13
  }
@@ -1,5 +1,4 @@
1
- import { EMPTY, } from "rxjs";
2
- import { catchError, filter, take, } from "rxjs/operators";
1
+ import { catchError, EMPTY, filter, take, } from "rxjs";
3
2
  import getCompleteSegmentId from "./get_complete_segment_id";
4
3
  var requests = new Map();
5
4
  /**
@@ -17,24 +16,38 @@ export function createRequest(segmentFetcher, contentInfos, segment) {
17
16
  return lastRequest;
18
17
  }
19
18
  var _request = {
20
- cancel: function () { return subscription.unsubscribe(); },
19
+ cancel: function () {
20
+ subscription.unsubscribe();
21
+ this.isComplete = true;
22
+ },
23
+ isComplete: false,
21
24
  };
22
25
  var subscription = segmentFetcher({ manifest: contentInfos.manifest,
23
26
  period: contentInfos.period,
24
27
  adaptation: contentInfos.adaptation,
25
28
  representation: contentInfos.representation, segment: segment }).pipe(filter(function (evt) {
26
- return evt.type === "chunk";
29
+ return evt.type === "chunk" ||
30
+ evt.type === "chunk-complete";
27
31
  }), take(1), catchError(function (err) {
28
32
  _request.error = err;
29
33
  if (_request.onError !== undefined) {
30
34
  _request.onError(err);
31
35
  }
36
+ _request.isComplete = true;
32
37
  return EMPTY;
33
38
  })).subscribe(function (evt) {
34
- var parsed = evt.parse();
35
- _request.data = parsed;
36
- if (_request.onData !== undefined) {
37
- _request.onData(parsed);
39
+ if (evt.type === "chunk-complete") {
40
+ if (_request.onComplete !== undefined) {
41
+ _request.onComplete();
42
+ _request.isComplete = true;
43
+ }
44
+ }
45
+ else {
46
+ var parsed = evt.parse();
47
+ _request.data = parsed;
48
+ if (_request.onData !== undefined) {
49
+ _request.onData(parsed);
50
+ }
38
51
  }
39
52
  });
40
53
  requests.set(completeSegmentId, _request);
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { EMPTY, of as observableOf, ReplaySubject, merge as observableMerge, Subject, } from "rxjs";
17
- import { map, mapTo, mergeMap, tap, } from "rxjs/operators";
16
+ import { EMPTY, map, merge as observableMerge, mergeMap, of as observableOf, ReplaySubject, Subject, tap, } from "rxjs";
18
17
  import prepareSourceBuffer from "./prepare_source_buffer";
19
18
  var mediaSourceSubscription;
20
19
  var sourceBufferContent;
@@ -105,7 +104,7 @@ export function getInitializedSourceBuffer$(contentInfos, element, segmentFetche
105
104
  return observableOf(sourceBuffer);
106
105
  }
107
106
  return loadAndPushInitData(contentInfos, initSegment, sourceBuffer, segmentFetcher)
108
- .pipe(mapTo(sourceBuffer));
107
+ .pipe(map(function () { return sourceBuffer; }));
109
108
  }), tap(function () { sourceBufferContent = contentInfos; }));
110
109
  }
111
110
  /**
@@ -1,7 +1,7 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { ISegmentFetcher } from "../../../core/fetchers/segment/segment_fetcher";
3
3
  import { ISegment } from "../../../manifest";
4
- import { ISegmentParserParsedInitSegment, ISegmentParserParsedSegment } from "../../../transports";
4
+ import { ISegmentParserParsedInitChunk, ISegmentParserParsedMediaChunk } from "../../../transports";
5
5
  import { IContentInfos } from "./types";
6
6
  /**
7
7
  * Load needed segments, from already running requests or by running new ones.
@@ -13,5 +13,5 @@ import { IContentInfos } from "./types";
13
13
  */
14
14
  export default function loadSegments(segments: ISegment[], segmentFetcher: ISegmentFetcher<ArrayBuffer | Uint8Array>, contentInfos: IContentInfos): Observable<Array<{
15
15
  segment: ISegment;
16
- data: ISegmentParserParsedSegment<ArrayBuffer | Uint8Array> | ISegmentParserParsedInitSegment<ArrayBuffer | Uint8Array>;
16
+ data: ISegmentParserParsedMediaChunk<ArrayBuffer | Uint8Array> | ISegmentParserParsedInitChunk<ArrayBuffer | Uint8Array>;
17
17
  }>>;
@@ -25,11 +25,15 @@ export default function loadSegments(segments, segmentFetcher, contentInfos) {
25
25
  };
26
26
  if (request.data !== undefined) {
27
27
  obs.next({ data: request.data, segment: segment });
28
+ }
29
+ if (request.isComplete) {
28
30
  obs.complete();
29
31
  return;
30
32
  }
31
33
  request.onData = function (data) {
32
34
  obs.next({ data: data, segment: segment });
35
+ };
36
+ request.onComplete = function () {
33
37
  obs.complete();
34
38
  };
35
39
  });
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { map } from "rxjs/operators";
16
+ import { map, } from "rxjs";
17
17
  import openMediaSource from "../../../core/init/create_media_source";
18
18
  import { AudioVideoSegmentBuffer } from "../../../core/segment_buffers/implementations";
19
19
  /**
@@ -1,7 +1,7 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { AudioVideoSegmentBuffer } from "../../../core/segment_buffers/implementations";
3
3
  import Manifest, { Adaptation, ISegment, Period, Representation } from "../../../manifest";
4
- import { ISegmentParserParsedSegment } from "../../../transports";
4
+ import { ISegmentParserParsedMediaChunk } from "../../../transports";
5
5
  /**
6
6
  * Push data to the video source buffer.
7
7
  * @param {Object} inventoryInfos
@@ -18,4 +18,4 @@ export default function pushData(inventoryInfos: {
18
18
  segment: ISegment;
19
19
  start: number;
20
20
  end: number;
21
- }, parsed: ISegmentParserParsedSegment<Uint8Array | ArrayBuffer>, videoSourceBuffer: AudioVideoSegmentBuffer): Observable<void>;
21
+ }, parsed: ISegmentParserParsedMediaChunk<Uint8Array | ArrayBuffer>, videoSourceBuffer: AudioVideoSegmentBuffer): Observable<void>;
@@ -14,8 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import pinkie from "pinkie";
17
- import { combineLatest, lastValueFrom, merge as observableMerge, race as observableRace, Subject, } from "rxjs";
18
- import { catchError, finalize, ignoreElements, map, mergeMap, take, tap, } from "rxjs/operators";
17
+ import { catchError, combineLatest, finalize, ignoreElements, lastValueFrom, map, merge as observableMerge, mergeMap, race as observableRace, Subject, take, tap, } from "rxjs";
19
18
  import createSegmentFetcher from "../../../core/fetchers/segment/segment_fetcher";
20
19
  import log from "../../../log";
21
20
  import objectAssign from "../../../utils/object_assign";
@@ -141,7 +140,9 @@ var VideoThumbnailLoader = /** @class */ (function () {
141
140
  var abortError$ = killTask$.pipe(map(function () {
142
141
  throw new VideoThumbnailLoaderError("ABORTED", "VideoThumbnailLoaderError: Aborted job.");
143
142
  }));
144
- var segmentFetcher = createSegmentFetcher("video", loader.video, new Subject(), { baseDelay: 0,
143
+ var segmentFetcher = createSegmentFetcher("video", loader.video,
144
+ // We don't care about the SegmentFetcher's lifecycle events
145
+ {}, { baseDelay: 0,
145
146
  maxDelay: 0,
146
147
  maxRetryOffline: 0,
147
148
  maxRetryRegular: 0 });
@@ -155,13 +156,23 @@ var VideoThumbnailLoader = /** @class */ (function () {
155
156
  if (data.segmentType === "init") {
156
157
  throw new Error("Unexpected initialization segment parsed.");
157
158
  }
158
- var start = segment.time / segment.timescale;
159
- var end = start + (segment.duration / segment.timescale);
159
+ var start;
160
+ var end;
161
+ if (data.chunkInfos !== null) {
162
+ start = data.chunkInfos.time;
163
+ end = data.chunkInfos.duration;
164
+ }
165
+ else {
166
+ start = segment.time / segment.timescale;
167
+ }
168
+ if (end === undefined) {
169
+ end = start + (segment.duration / segment.timescale);
170
+ }
160
171
  var inventoryInfos = objectAssign({ segment: segment, start: start, end: end }, contentInfos);
161
172
  return pushData(inventoryInfos, data, videoSourceBuffer)
162
173
  .pipe(tap(function () {
163
174
  freeRequest(getCompleteSegmentId(inventoryInfos, segment));
164
- log.debug("VTL: Appended segment.", data);
175
+ log.debug("VTL: Appended segment.");
165
176
  }));
166
177
  }));
167
178
  }), map(function () {
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { throwError, } from "rxjs";
17
- import { map } from "rxjs/operators";
16
+ import { map, throwError, } from "rxjs";
18
17
  import isNonEmptyString from "../../../utils/is_non_empty_string";
19
18
  import request from "../../../utils/request/xhr";
20
19
  import fromCancellablePromise from "../../../utils/rx-from_cancellable_promise";
@@ -13,8 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { combineLatest as observableCombineLatest, lastValueFrom, of as observableOf, } from "rxjs";
17
- import { map } from "rxjs/operators";
16
+ import { combineLatest as observableCombineLatest, lastValueFrom, map, of as observableOf, } from "rxjs";
18
17
  import getDurationFromManifest from "./get_duration_from_manifest";
19
18
  /**
20
19
  * From given information about wanted metaplaylist and contents,
@@ -33,7 +33,7 @@ export default function probeMatchMedia(config) {
33
33
  throw new Error("MediaCapabilitiesProber >>> API_CALL: " +
34
34
  "Not enough arguments for calling matchMedia.");
35
35
  }
36
- var match = window.matchMedia("(color-gamut: " + config.display.colorSpace + ")");
36
+ var match = window.matchMedia("(color-gamut: ".concat(config.display.colorSpace, ")"));
37
37
  if (match.media === "not all") {
38
38
  throw new Error("MediaCapabilitiesProber >>> API_CALL: " +
39
39
  "Bad arguments for calling matchMedia.");
@@ -23,78 +23,81 @@ import features from "./features_object";
23
23
  * @param {Object} features
24
24
  */
25
25
  export default function initializeFeaturesObject() {
26
- if (false) {
27
- features.emeManager = require("../core/eme/index.js").default;
26
+ if (0 /* EME */ === 1 /* IS_ENABLED */) {
27
+ features.emeManager = require("../core/eme/index.ts").default;
28
28
  }
29
- if (false) {
30
- features.imageBuffer = require("../core/segment_buffers/implementations/image/index.js").default;
31
- features.imageParser = require("../parsers/images/bif.js").default;
29
+ if (0 /* BIF_PARSER */ === 1 /* IS_ENABLED */) {
30
+ features.imageBuffer =
31
+ require("../core/segment_buffers/implementations/image/index.ts").default;
32
+ features.imageParser = require("../parsers/images/bif.ts").default;
32
33
  }
33
34
  // Feature switching the Native TextTrack implementation
34
- var HAS_NATIVE_MODE = false ||
35
- false ||
36
- false ||
37
- false;
38
- if (false) {
39
- features.transports.smooth = require("../transports/smooth/index.js").default;
35
+ var HAS_NATIVE_MODE = 0 /* NATIVE_VTT */ ||
36
+ 0 /* NATIVE_SAMI */ ||
37
+ 0 /* NATIVE_TTML */ ||
38
+ 0 /* NATIVE_SRT */;
39
+ if (0 /* SMOOTH */ === 1 /* IS_ENABLED */) {
40
+ features.transports.smooth = require("../transports/smooth/index.ts").default;
40
41
  }
41
- if (false) {
42
- features.transports.dash = require("../transports/dash/index.js").default;
43
- features.dashParsers.js = require("../parsers/manifest/dash/js-parser/index.js").default;
42
+ if (0 /* DASH */ === 1 /* IS_ENABLED */) {
43
+ features.transports.dash = require("../transports/dash/index.ts").default;
44
+ features.dashParsers.js =
45
+ require("../parsers/manifest/dash/js-parser/index.ts").default;
44
46
  }
45
- if (false) {
46
- features.transports.local = require("../transports/local/index.js").default;
47
+ if (0 /* LOCAL_MANIFEST */ === 1 /* IS_ENABLED */) {
48
+ features.transports.local = require("../transports/local/index.ts").default;
47
49
  }
48
- if (false) {
49
- features.transports.metaplaylist = require("../transports/dash/index.js").default;
50
+ if (0 /* METAPLAYLIST */ === 1 /* IS_ENABLED */) {
51
+ features.transports.metaplaylist =
52
+ require("../transports/metaplaylist/index.ts").default;
50
53
  }
51
- if (HAS_NATIVE_MODE) {
54
+ if (HAS_NATIVE_MODE === 1 /* IS_ENABLED */) {
52
55
  features.nativeTextTracksBuffer =
53
- require("../core/segment_buffers/implementations/text/native/index.js").default;
54
- if (false) {
56
+ require("../core/segment_buffers/implementations/text/native/index.ts").default;
57
+ if (0 /* NATIVE_VTT */ === 1 /* IS_ENABLED */) {
55
58
  features.nativeTextTracksParsers.vtt =
56
- require("../parsers/texttracks/webvtt/native.js").default;
59
+ require("../parsers/texttracks/webvtt/native/index.ts").default;
57
60
  }
58
- if (false) {
61
+ if (0 /* NATIVE_TTML */ === 1 /* IS_ENABLED */) {
59
62
  features.nativeTextTracksParsers.ttml =
60
- require("../parsers/texttracks/ttml/native/index.js").default;
63
+ require("../parsers/texttracks/ttml/native/index.ts").default;
61
64
  }
62
- if (false) {
65
+ if (0 /* NATIVE_SAMI */ === 1 /* IS_ENABLED */) {
63
66
  features.nativeTextTracksParsers.sami =
64
- require("../parsers/texttracks/sami/native.js").default;
67
+ require("../parsers/texttracks/sami/native.ts").default;
65
68
  }
66
- if (false) {
69
+ if (0 /* NATIVE_SRT */ === 1 /* IS_ENABLED */) {
67
70
  features.nativeTextTracksParsers.srt =
68
- require("../parsers/texttracks/srt/native.js").default;
71
+ require("../parsers/texttracks/srt/native.ts").default;
69
72
  }
70
73
  }
71
74
  // Feature switching the HTML TextTrack implementation
72
- var HAS_HTML_MODE = false ||
73
- false ||
74
- false ||
75
- false;
76
- if (HAS_HTML_MODE) {
75
+ var HAS_HTML_MODE = 0 /* HTML_VTT */ ||
76
+ 0 /* HTML_SAMI */ ||
77
+ 0 /* HTML_TTML */ ||
78
+ 0 /* HTML_SRT */;
79
+ if (HAS_HTML_MODE === 1 /* IS_ENABLED */) {
77
80
  features.htmlTextTracksBuffer =
78
- require("../core/segment_buffers/implementations/text/html/index.js").default;
79
- if (false) {
81
+ require("../core/segment_buffers/implementations/text/html/index.ts").default;
82
+ if (0 /* HTML_SAMI */ === 1 /* IS_ENABLED */) {
80
83
  features.htmlTextTracksParsers.sami =
81
- require("../parsers/texttracks/sami/html.js").default;
84
+ require("../parsers/texttracks/sami/html.ts").default;
82
85
  }
83
- if (false) {
86
+ if (0 /* HTML_TTML */ === 1 /* IS_ENABLED */) {
84
87
  features.htmlTextTracksParsers.ttml =
85
- require("../parsers/texttracks/ttml/html/index.js").default;
88
+ require("../parsers/texttracks/ttml/html/index.ts").default;
86
89
  }
87
- if (false) {
90
+ if (0 /* HTML_SRT */ === 1 /* IS_ENABLED */) {
88
91
  features.htmlTextTracksParsers.srt =
89
- require("../parsers/texttracks/srt/html.js").default;
92
+ require("../parsers/texttracks/srt/html.ts").default;
90
93
  }
91
- if (false) {
94
+ if (0 /* HTML_VTT */ === 1 /* IS_ENABLED */) {
92
95
  features.htmlTextTracksParsers.vtt =
93
- require("../parsers/texttracks/webvtt/html/index.js").default;
96
+ require("../parsers/texttracks/webvtt/html/index.ts").default;
94
97
  }
95
98
  }
96
- if (false) {
97
- var initDirectFile = require("../core/init/directfile.js").default;
99
+ if (0 /* DIRECTFILE */ === 1 /* IS_ENABLED */) {
100
+ var initDirectFile = require("../core/init/initialize_directfile.ts").default;
98
101
  var mediaElementTrackChoiceManager = require("../core/api/media_element_track_choice_manager.ts").default;
99
102
  features.directfile = { initDirectFile: initDirectFile, mediaElementTrackChoiceManager: mediaElementTrackChoiceManager };
100
103
  }
@@ -24,7 +24,7 @@ import initializeFeatures from "./features/initialize_features";
24
24
  import logger from "./log";
25
25
  // set initial features according to environment variables
26
26
  initializeFeatures();
27
- if (false) {
28
- logger.setLevel("NONE");
27
+ if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
28
+ logger.setLevel("NONE" /* CURRENT_LEVEL */);
29
29
  }
30
30
  export default Player;
@@ -14,12 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import Adaptation, { IRepresentationFilter, IRepresentationInfos, SUPPORTED_ADAPTATIONS_TYPE } from "./adaptation";
17
- import areSameContent from "./are_same_content";
18
17
  import Manifest, { IManifestParsingOptions, ISupplementaryImageTrack, ISupplementaryTextTrack } from "./manifest";
19
18
  import Period from "./period";
20
19
  import Representation from "./representation";
21
20
  import { IBaseContentInfos, IMetaPlaylistPrivateInfos, IRepresentationIndex, ISegment, StaticRepresentationIndex } from "./representation_index";
22
21
  import { IAdaptationType, IHDRInformation } from "./types";
22
+ import { areSameContent, getLoggableSegmentId, IBufferedChunkInfos } from "./utils";
23
23
  export default Manifest;
24
24
  export * from "./types";
25
- export { areSameContent, Period, Adaptation, Representation, IAdaptationType, IBaseContentInfos, IHDRInformation, IManifestParsingOptions, IMetaPlaylistPrivateInfos, IRepresentationFilter, IRepresentationInfos, IRepresentationIndex, ISegment, ISupplementaryImageTrack, ISupplementaryTextTrack, StaticRepresentationIndex, SUPPORTED_ADAPTATIONS_TYPE, };
25
+ export { areSameContent, getLoggableSegmentId, IBufferedChunkInfos, Period, Adaptation, Representation, IAdaptationType, IBaseContentInfos, IHDRInformation, IManifestParsingOptions, IMetaPlaylistPrivateInfos, IRepresentationFilter, IRepresentationInfos, IRepresentationIndex, ISegment, ISupplementaryImageTrack, ISupplementaryTextTrack, StaticRepresentationIndex, SUPPORTED_ADAPTATIONS_TYPE, };
@@ -14,15 +14,15 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import Adaptation, { SUPPORTED_ADAPTATIONS_TYPE, } from "./adaptation";
17
- import areSameContent from "./are_same_content";
18
17
  import Manifest from "./manifest";
19
18
  import Period from "./period";
20
19
  import Representation from "./representation";
21
20
  import { StaticRepresentationIndex, } from "./representation_index";
21
+ import { areSameContent, getLoggableSegmentId, } from "./utils";
22
22
  export default Manifest;
23
23
  export * from "./types";
24
24
  export {
25
25
  // utils
26
- areSameContent,
26
+ areSameContent, getLoggableSegmentId,
27
27
  // classes
28
28
  Period, Adaptation, Representation, StaticRepresentationIndex, SUPPORTED_ADAPTATIONS_TYPE, };
@@ -59,7 +59,7 @@ var Representation = /** @class */ (function () {
59
59
  */
60
60
  Representation.prototype.getMimeTypeString = function () {
61
61
  var _a, _b;
62
- return ((_a = this.mimeType) !== null && _a !== void 0 ? _a : "") + ";codecs=\"" + ((_b = this.codec) !== null && _b !== void 0 ? _b : "") + "\"";
62
+ return "".concat((_a = this.mimeType) !== null && _a !== void 0 ? _a : "", ";codecs=\"").concat((_b = this.codec) !== null && _b !== void 0 ? _b : "", "\"");
63
63
  };
64
64
  /**
65
65
  * Returns encryption initialization data linked to the given DRM's system ID.
@@ -45,6 +45,7 @@ var StaticRepresentationIndex = /** @class */ (function () {
45
45
  time: 0,
46
46
  end: Number.MAX_VALUE,
47
47
  duration: Number.MAX_VALUE,
48
+ complete: true,
48
49
  timescale: 1 }];
49
50
  };
50
51
  /**
@@ -173,9 +173,20 @@ export interface ISegment {
173
173
  end: number;
174
174
  /**
175
175
  * Estimated duration for the segment, in seconds.
176
- * Note that some rounding errors and some differences between what the
177
- * Manifest says and what the content really is might make that time not
178
- * exact.
176
+ *
177
+ * Note that this may not reflect the exact segment duration:
178
+ *
179
+ * 1. In some very specific cases, segments might be generated and served
180
+ * progressively. In this case, the full duration of a segment might not
181
+ * be yet known and thus this property only reflect the currently known
182
+ * `duration` of the segment, which may be inferior to its final duration.
183
+ *
184
+ * You can know if we're in that case when the `complete` property of
185
+ * this same segment is set to `false`.
186
+ *
187
+ * 2. some rounding errors and some differences between what the
188
+ * Manifest says and what the content really is might make that time not
189
+ * exact.
179
190
  *
180
191
  * `0` for initialization segments.
181
192
  */
@@ -188,6 +199,16 @@ export interface ISegment {
188
199
  * As both are always in seconds now, this property became unneeded.
189
200
  */
190
201
  timescale: 1;
202
+ /**
203
+ * If `false`, this segment's `duration` property may not be the duration of
204
+ * the full segment as it could still be in the process of being generated
205
+ * on the server-side (when this `ISegment` had been constructed).
206
+ *
207
+ * Note that if the `duration` is sure to be the final one, `complete`
208
+ * should be set to `true` even if the segment is still being
209
+ * generated.
210
+ */
211
+ complete: boolean;
191
212
  }
192
213
  /** Interface that should be implemented by any Representation's `index` value. */
193
214
  export interface IRepresentationIndex {
@@ -44,7 +44,7 @@ export default function updatePeriodInPlace(oldPeriod, newPeriod, updateType) {
44
44
  var oldRepresentation = oldRepresentations[k];
45
45
  var newRepresentation = arrayFind(newRepresentations, function (representation) { return representation.id === oldRepresentation.id; });
46
46
  if (newRepresentation === undefined) {
47
- log.warn("Manifest: Representation \"" + oldRepresentations[k].id + "\" " +
47
+ log.warn("Manifest: Representation \"".concat(oldRepresentations[k].id, "\" ") +
48
48
  "not found when merging.");
49
49
  }
50
50
  else {