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
@@ -32,7 +32,12 @@ var TemplateRepresentationIndex = /** @class */ (function () {
32
32
  var _a;
33
33
  var aggressiveMode = context.aggressiveMode, availabilityTimeOffset = context.availabilityTimeOffset, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, periodEnd = context.periodEnd, periodStart = context.periodStart, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, isEMSGWhitelisted = context.isEMSGWhitelisted;
34
34
  var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
35
- this._availabilityTimeOffset = availabilityTimeOffset;
35
+ var minBaseUrlAto = representationBaseURLs.length === 0 ?
36
+ 0 :
37
+ representationBaseURLs.reduce(function (acc, rbu) {
38
+ return Math.min(acc, rbu.availabilityTimeOffset);
39
+ }, Infinity);
40
+ this._availabilityTimeOffset = availabilityTimeOffset + minBaseUrlAto;
36
41
  this._manifestBoundsCalculator = manifestBoundsCalculator;
37
42
  this._aggressiveMode = aggressiveMode;
38
43
  var presentationTimeOffset = index.presentationTimeOffset != null ?
@@ -43,11 +48,12 @@ var TemplateRepresentationIndex = /** @class */ (function () {
43
48
  if (index.duration === undefined) {
44
49
  throw new Error("Invalid SegmentTemplate: no duration");
45
50
  }
51
+ var urlSources = representationBaseURLs.map(function (b) { return b.url; });
46
52
  this._index = { duration: index.duration, timescale: timescale, indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: index.initialization == null ?
47
53
  undefined :
48
- { mediaURLs: createIndexURLs(representationBaseURLs, index.initialization.media, representationId, representationBitrate),
54
+ { mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
49
55
  range: index.initialization.range },
50
- mediaURLs: createIndexURLs(representationBaseURLs, index.media, representationId, representationBitrate), presentationTimeOffset: presentationTimeOffset, startNumber: index.startNumber };
56
+ mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate), presentationTimeOffset: presentationTimeOffset, startNumber: index.startNumber };
51
57
  this._isDynamic = isDynamic;
52
58
  this._periodStart = periodStart;
53
59
  this._scaledPeriodEnd = periodEnd == null ? undefined :
@@ -87,8 +93,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
87
93
  }
88
94
  var segments = [];
89
95
  // number corresponding to the Period's start
90
- var numberOffset = startNumber == null ? 1 :
91
- startNumber;
96
+ var numberOffset = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
92
97
  // calcul initial time from Period start, where the first segment would have
93
98
  // the `0` number
94
99
  var numberIndexedToZero = Math.floor(startPosition / duration);
@@ -114,6 +119,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
114
119
  scaledDuration: realDuration / timescale,
115
120
  mediaURLs: detokenizedURLs,
116
121
  timestampOffset: -(index.indexTimeOffset / timescale),
122
+ complete: true,
117
123
  privateInfos: {
118
124
  isEMSGWhitelisted: this._isEMSGWhitelisted,
119
125
  } };
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import log from "../../../../../../log";
17
+ import isNullOrUndefined from "../../../../../../utils/is_null_or_undefined";
17
18
  /**
18
19
  * Translate parsed `S` node into Segment compatible with this index:
19
20
  * Find out the start, repeatCount and duration of each of these.
@@ -32,23 +33,23 @@ export default function convertElementsToIndexSegment(item, previousItem, nextIt
32
33
  var start = item.start;
33
34
  var duration = item.duration;
34
35
  var repeatCount = item.repeatCount;
35
- if (start == null) {
36
- if (previousItem == null) {
36
+ if (start === undefined) {
37
+ if (previousItem === null) {
37
38
  start = timelineStart;
38
39
  }
39
- else if (previousItem.duration != null) {
40
+ else if (!isNullOrUndefined(previousItem.duration)) {
40
41
  start = previousItem.start +
41
42
  (previousItem.duration * (previousItem.repeatCount + 1));
42
43
  }
43
44
  }
44
- if ((duration == null || isNaN(duration)) &&
45
- nextItem != null && nextItem.start != null && !isNaN(nextItem.start) &&
46
- start != null && !isNaN(start)) {
45
+ if ((duration === undefined || isNaN(duration)) &&
46
+ nextItem !== null && nextItem.start !== undefined && !isNaN(nextItem.start) &&
47
+ start !== undefined && !isNaN(start)) {
47
48
  duration = nextItem.start - start;
48
49
  }
49
- if ((start != null && !isNaN(start)) &&
50
- (duration != null && !isNaN(duration)) &&
51
- (repeatCount == null || !isNaN(repeatCount))) {
50
+ if ((start !== undefined && !isNaN(start)) &&
51
+ (duration !== undefined && !isNaN(duration)) &&
52
+ (repeatCount === undefined || !isNaN(repeatCount))) {
52
53
  return { start: start, duration: duration, repeatCount: repeatCount === undefined ? 0 :
53
54
  repeatCount };
54
55
  }
@@ -27,7 +27,7 @@ export default function parseSElement(root) {
27
27
  case "t":
28
28
  var start = parseInt(attribute.value, 10);
29
29
  if (isNaN(start)) {
30
- log.warn("DASH: invalid t (\"" + attribute.value + "\")");
30
+ log.warn("DASH: invalid t (\"".concat(attribute.value, "\")"));
31
31
  }
32
32
  else {
33
33
  parsedS.start = start;
@@ -36,7 +36,7 @@ export default function parseSElement(root) {
36
36
  case "d":
37
37
  var duration = parseInt(attribute.value, 10);
38
38
  if (isNaN(duration)) {
39
- log.warn("DASH: invalid d (\"" + attribute.value + "\")");
39
+ log.warn("DASH: invalid d (\"".concat(attribute.value, "\")"));
40
40
  }
41
41
  else {
42
42
  parsedS.duration = duration;
@@ -45,7 +45,7 @@ export default function parseSElement(root) {
45
45
  case "r":
46
46
  var repeatCount = parseInt(attribute.value, 10);
47
47
  if (isNaN(repeatCount)) {
48
- log.warn("DASH: invalid r (\"" + attribute.value + "\")");
48
+ log.warn("DASH: invalid r (\"".concat(attribute.value, "\")"));
49
49
  }
50
50
  else {
51
51
  parsedS.repeatCount = repeatCount;
@@ -19,12 +19,15 @@ import { IEMSG } from "../../../../../containers/isobmff";
19
19
  import { IIndexSegment } from "../../../../utils/index_helpers";
20
20
  import { ISegmentTimelineElement } from "../../../node_parser_types";
21
21
  import ManifestBoundsCalculator from "../../manifest_bounds_calculator";
22
+ import { IResolvedBaseUrl } from "../../resolve_base_urls";
22
23
  /**
23
24
  * Index property defined for a SegmentTimeline RepresentationIndex
24
25
  * This object contains every property needed to generate an ISegment for a
25
26
  * given media time.
26
27
  */
27
28
  export interface ITimelineIndex {
29
+ /** If `false`, the last segment anounced might be still incomplete. */
30
+ availabilityTimeComplete: boolean;
28
31
  /** Byte range for a possible index of segments in the server. */
29
32
  indexRange?: [number, number];
30
33
  /**
@@ -112,6 +115,8 @@ export interface ITimelineIndexIndexArgument {
112
115
  }
113
116
  /** Aditional context needed by a SegmentTimeline RepresentationIndex. */
114
117
  export interface ITimelineIndexContextArgument {
118
+ /** If `false`, the last segment anounced might be still incomplete. */
119
+ availabilityTimeComplete: boolean;
115
120
  /** Allows to obtain the minimum and maximum positions of a content. */
116
121
  manifestBoundsCalculator: ManifestBoundsCalculator;
117
122
  /** Start of the period concerned by this RepresentationIndex, in seconds. */
@@ -126,7 +131,7 @@ export interface ITimelineIndexContextArgument {
126
131
  */
127
132
  receivedTime?: number;
128
133
  /** Base URL for the Representation concerned. */
129
- representationBaseURLs: string[];
134
+ representationBaseURLs: IResolvedBaseUrl[];
130
135
  /** ID of the Representation concerned. */
131
136
  representationId?: string;
132
137
  /** Bitrate of the Representation concerned. */
@@ -39,7 +39,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
39
39
  throw new Error("The given index is not compatible with a " +
40
40
  "TimelineRepresentationIndex.");
41
41
  }
42
- var manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
42
+ var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
43
43
  var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
44
44
  var presentationTimeOffset = index.presentationTimeOffset != null ?
45
45
  index.presentationTimeOffset :
@@ -63,13 +63,14 @@ var TimelineRepresentationIndex = /** @class */ (function () {
63
63
  }
64
64
  this._isDynamic = isDynamic;
65
65
  this._parseTimeline = (_b = index.timelineParser) !== null && _b !== void 0 ? _b : null;
66
- this._index = { indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: index.initialization == null ?
66
+ var urlSources = representationBaseURLs.map(function (b) { return b.url; });
67
+ this._index = { availabilityTimeComplete: availabilityTimeComplete, indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: index.initialization == null ?
67
68
  undefined :
68
69
  {
69
- mediaURLs: createIndexURLs(representationBaseURLs, index.initialization.media, representationId, representationBitrate),
70
+ mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
70
71
  range: index.initialization.range,
71
72
  },
72
- mediaURLs: createIndexURLs(representationBaseURLs, index.media, representationId, representationBitrate),
73
+ mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate),
73
74
  startNumber: index.startNumber,
74
75
  timeline: (_c = index.timeline) !== null && _c !== void 0 ? _c : null, timescale: timescale };
75
76
  this._scaledPeriodStart = toIndexTime(periodStart, this._index);
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  /**
17
- * @param {string} representationURL
17
+ * @param {string} baseURLs
18
18
  * @param {string|undefined} media
19
19
  * @param {string|undefined} id
20
20
  * @param {number|undefined} bitrate
@@ -41,7 +41,7 @@ function processFormatedToken(replacer) {
41
41
  };
42
42
  }
43
43
  /**
44
- * @param {string} representationURL
44
+ * @param {string} baseURLs
45
45
  * @param {string|undefined} media
46
46
  * @param {string|undefined} id
47
47
  * @param {number|undefined} bitrate
@@ -72,7 +72,7 @@ export function replaceRepresentationDASHTokens(path, id, bitrate) {
72
72
  return path
73
73
  .replace(/\$\$/g, "$")
74
74
  .replace(/\$RepresentationID\$/g, String(id))
75
- .replace(/\$Bandwidth(|\%0(\d+)d)\$/g, processFormatedToken(bitrate === undefined ? 0 :
75
+ .replace(/\$Bandwidth(\%0(\d+)d)?\$/g, processFormatedToken(bitrate === undefined ? 0 :
76
76
  bitrate));
77
77
  }
78
78
  }
@@ -100,13 +100,13 @@ export function createDashUrlDetokenizer(time, nb) {
100
100
  else {
101
101
  return url
102
102
  .replace(/\$\$/g, "$")
103
- .replace(/\$Number(|\%0(\d+)d)\$/g, function (_x, _y, widthStr) {
103
+ .replace(/\$Number(\%0(\d+)d)?\$/g, function (_x, _y, widthStr) {
104
104
  if (nb === undefined) {
105
105
  throw new Error("Segment number not defined in a $Number$ scheme");
106
106
  }
107
107
  return processFormatedToken(nb)(_x, _y, widthStr);
108
108
  })
109
- .replace(/\$Time(|\%0(\d+)d)\$/g, function (_x, _y, widthStr) {
109
+ .replace(/\$Time(\%0(\d+)d)?\$/g, function (_x, _y, widthStr) {
110
110
  if (time === undefined) {
111
111
  throw new Error("Segment time not defined in a $Time$ scheme");
112
112
  }
@@ -17,14 +17,16 @@ import { Period } from "../../../../manifest";
17
17
  import { IParsedAdaptations } from "../../types";
18
18
  import { IAdaptationSetIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
19
19
  import ManifestBoundsCalculator from "./manifest_bounds_calculator";
20
+ import { IResolvedBaseUrl } from "./resolve_base_urls";
20
21
  /** Context needed when calling `parseAdaptationSets`. */
21
22
  export interface IAdaptationSetsContextInfos {
22
23
  /** Whether we should request new segments even if they are not yet finished. */
23
24
  aggressiveMode: boolean;
25
+ availabilityTimeComplete: boolean;
24
26
  /** availabilityTimeOffset of the concerned period. */
25
27
  availabilityTimeOffset: number;
26
28
  /** Eventual URLs from which every relative URL will be based on. */
27
- baseURLs: string[];
29
+ baseURLs: IResolvedBaseUrl[];
28
30
  /** Allows to obtain the first available position of a content. */
29
31
  manifestBoundsCalculator: ManifestBoundsCalculator;
30
32
  end?: number;
@@ -19,7 +19,6 @@ import arrayIncludes from "../../../../utils/array_includes";
19
19
  import isNonEmptyString from "../../../../utils/is_non_empty_string";
20
20
  import attachTrickModeTrack from "./attach_trickmode_track";
21
21
  // eslint-disable-next-line max-len
22
- import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
23
22
  import inferAdaptationType from "./infer_adaptation_type";
24
23
  import parseRepresentations from "./parse_representations";
25
24
  import resolveBaseURLs from "./resolve_base_urls";
@@ -83,7 +82,7 @@ function getAdaptationID(adaptation, infos) {
83
82
  var isClosedCaption = infos.isClosedCaption, isAudioDescription = infos.isAudioDescription, isSignInterpreted = infos.isSignInterpreted, isTrickModeTrack = infos.isTrickModeTrack, type = infos.type;
84
83
  var idString = type;
85
84
  if (isNonEmptyString(adaptation.attributes.language)) {
86
- idString += "-" + adaptation.attributes.language;
85
+ idString += "-".concat(adaptation.attributes.language);
87
86
  }
88
87
  if (isClosedCaption === true) {
89
88
  idString += "-cc";
@@ -98,16 +97,16 @@ function getAdaptationID(adaptation, infos) {
98
97
  idString += "-trickMode";
99
98
  }
100
99
  if (isNonEmptyString(adaptation.attributes.contentType)) {
101
- idString += "-" + adaptation.attributes.contentType;
100
+ idString += "-".concat(adaptation.attributes.contentType);
102
101
  }
103
102
  if (isNonEmptyString(adaptation.attributes.codecs)) {
104
- idString += "-" + adaptation.attributes.codecs;
103
+ idString += "-".concat(adaptation.attributes.codecs);
105
104
  }
106
105
  if (isNonEmptyString(adaptation.attributes.mimeType)) {
107
- idString += "-" + adaptation.attributes.mimeType;
106
+ idString += "-".concat(adaptation.attributes.mimeType);
108
107
  }
109
108
  if (isNonEmptyString(adaptation.attributes.frameRate)) {
110
- idString += "-" + adaptation.attributes.frameRate;
109
+ idString += "-".concat(adaptation.attributes.frameRate);
111
110
  }
112
111
  return idString;
113
112
  }
@@ -143,7 +142,7 @@ function getAdaptationSetSwitchingIDs(adaptation) {
143
142
  */
144
143
  export default function parseAdaptationSets(adaptationsIR, periodInfos) {
145
144
  var _a;
146
- var _b, _c, _d, _e, _f;
145
+ var _b, _c, _d, _e, _f, _g, _h;
147
146
  var parsedAdaptations = {};
148
147
  var trickModeAdaptations = [];
149
148
  var adaptationSwitchingInfos = {};
@@ -172,7 +171,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
172
171
  roles.some(function (role) { return role.value === "main"; }) &&
173
172
  roles.some(function (role) { return role.schemeIdUri === "urn:mpeg:dash:role:2011"; });
174
173
  var representationsIR = adaptation.children.representations;
175
- var availabilityTimeOffset = extractMinimumAvailabilityTimeOffset(adaptation.children.baseURLs) +
174
+ var availabilityTimeComplete = (_b = adaptation.attributes.availabilityTimeComplete) !== null && _b !== void 0 ? _b : periodInfos.availabilityTimeComplete;
175
+ var availabilityTimeOffset = ((_c = adaptation.attributes.availabilityTimeOffset) !== null && _c !== void 0 ? _c : 0) +
176
176
  periodInfos.availabilityTimeOffset;
177
177
  var adaptationMimeType = adaptation.attributes.mimeType;
178
178
  var adaptationCodecs = adaptation.attributes.codecs;
@@ -198,6 +198,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
198
198
  }
199
199
  var adaptationInfos = {
200
200
  aggressiveMode: periodInfos.aggressiveMode,
201
+ availabilityTimeComplete: availabilityTimeComplete,
201
202
  availabilityTimeOffset: availabilityTimeOffset,
202
203
  baseURLs: resolveBaseURLs(periodInfos.baseURLs, adaptationChildren.baseURLs),
203
204
  manifestBoundsCalculator: periodInfos.manifestBoundsCalculator,
@@ -214,7 +215,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
214
215
  arrayFind(essentialProperties, function (scheme) {
215
216
  return scheme.schemeIdUri === "http://dashif.org/guidelines/trickmode";
216
217
  }) : undefined;
217
- var trickModeAttachedAdaptationIds = (_b = trickModeProperty === null || trickModeProperty === void 0 ? void 0 : trickModeProperty.value) === null || _b === void 0 ? void 0 : _b.split(" ");
218
+ var trickModeAttachedAdaptationIds = (_d = trickModeProperty === null || trickModeProperty === void 0 ? void 0 : trickModeProperty.value) === null || _d === void 0 ? void 0 : _d.split(" ");
218
219
  var isTrickModeTrack = trickModeAttachedAdaptationIds !== undefined;
219
220
  if (type === "video" &&
220
221
  isMainAdaptation &&
@@ -225,8 +226,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
225
226
  // Add to the already existing main video adaptation
226
227
  // TODO remove that ugly custom logic?
227
228
  var videoMainAdaptation = parsedAdaptations.video[lastMainAdaptationIndex.video];
228
- adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_d = (_c = periodInfos
229
- .unsafelyBaseOnPreviousPeriod) === null || _c === void 0 ? void 0 : _c.getAdaptation(videoMainAdaptation.id)) !== null && _d !== void 0 ? _d : null;
229
+ adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_f = (_e = periodInfos
230
+ .unsafelyBaseOnPreviousPeriod) === null || _e === void 0 ? void 0 : _e.getAdaptation(videoMainAdaptation.id)) !== null && _f !== void 0 ? _f : null;
230
231
  var representations = parseRepresentations(representationsIR, adaptation, adaptationInfos);
231
232
  (_a = videoMainAdaptation.representations).push.apply(_a, representations);
232
233
  newID = videoMainAdaptation.id;
@@ -266,8 +267,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
266
267
  }
267
268
  newID = adaptationID;
268
269
  parsedAdaptationsIDs.push(adaptationID);
269
- adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_f = (_e = periodInfos
270
- .unsafelyBaseOnPreviousPeriod) === null || _e === void 0 ? void 0 : _e.getAdaptation(adaptationID)) !== null && _f !== void 0 ? _f : null;
270
+ adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_h = (_g = periodInfos
271
+ .unsafelyBaseOnPreviousPeriod) === null || _g === void 0 ? void 0 : _g.getAdaptation(adaptationID)) !== null && _h !== void 0 ? _h : null;
271
272
  var representations = parseRepresentations(representationsIR, adaptation, adaptationInfos);
272
273
  var parsedAdaptationSet = { id: adaptationID, representations: representations, type: type, isTrickModeTrack: isTrickModeTrack };
273
274
  if (adaptation.attributes.language != null) {
@@ -298,7 +299,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
298
299
  else {
299
300
  var mergedInto = null;
300
301
  var _loop_1 = function (id) {
301
- var _h;
302
+ var _k;
302
303
  var switchingInfos = adaptationSwitchingInfos[id];
303
304
  if (switchingInfos != null &&
304
305
  switchingInfos.newID !== newID &&
@@ -311,15 +312,15 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
311
312
  parsedAdaptationSet.closedCaption &&
312
313
  adaptationToMergeInto.language === parsedAdaptationSet.language) {
313
314
  log.info("DASH Parser: merging \"switchable\" AdaptationSets", originalID, id);
314
- (_h = adaptationToMergeInto.representations)
315
- .push.apply(_h, parsedAdaptationSet.representations);
315
+ (_k = adaptationToMergeInto.representations)
316
+ .push.apply(_k, parsedAdaptationSet.representations);
316
317
  mergedInto = adaptationToMergeInto;
317
318
  }
318
319
  }
319
320
  };
320
321
  // look if we have to merge this into another Adaptation
321
- for (var _g = 0, adaptationSetSwitchingIDs_1 = adaptationSetSwitchingIDs; _g < adaptationSetSwitchingIDs_1.length; _g++) {
322
- var id = adaptationSetSwitchingIDs_1[_g];
322
+ for (var _j = 0, adaptationSetSwitchingIDs_1 = adaptationSetSwitchingIDs; _j < adaptationSetSwitchingIDs_1.length; _j++) {
323
+ var id = adaptationSetSwitchingIDs_1[_j];
323
324
  _loop_1(id);
324
325
  }
325
326
  if (isMainAdaptation) {
@@ -16,6 +16,7 @@
16
16
  import Manifest from "../../../../manifest";
17
17
  import { IParsedManifest } from "../../types";
18
18
  import { IMPDIntermediateRepresentation, IPeriodIntermediateRepresentation } from "../node_parser_types";
19
+ import { IResponseData } from "../parsers_types";
19
20
  import { IXLinkInfos } from "./parse_periods";
20
21
  /** Possible options for `parseMPD`. */
21
22
  export interface IMPDParserArguments {
@@ -63,7 +64,7 @@ export interface IIrParserResponseNeedsClock {
63
64
  * Callback to call with the fetched clock data in argument to continue
64
65
  * parsing the MPD.
65
66
  */
66
- continue: (clockValue: string) => IIrParserResponse;
67
+ continue: (clockValue: IResponseData<string>) => IIrParserResponse;
67
68
  };
68
69
  }
69
70
  /**
@@ -27,7 +27,6 @@ import log from "../../../../log";
27
27
  import arrayFind from "../../../../utils/array_find";
28
28
  import { normalizeBaseURL } from "../../../../utils/resolve_url";
29
29
  // eslint-disable-next-line max-len
30
- import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
31
30
  import getClockOffset from "./get_clock_offset";
32
31
  import getHTTPUTCTimingURL from "./get_http_utc-timing_url";
33
32
  import getMinimumAndMaximumPosition from "./get_minimum_and_maximum_positions";
@@ -70,8 +69,13 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
70
69
  type: "needs-clock",
71
70
  value: {
72
71
  url: UTCTimingHTTPURL,
73
- continue: function continueParsingMPD(clockValue) {
74
- args.externalClockOffset = getClockOffset(clockValue);
72
+ continue: function continueParsingMPD(responseDataClock) {
73
+ if (!responseDataClock.success) {
74
+ warnings.push(responseDataClock.error);
75
+ log.warn("DASH Parser: Error on fetching the clock ressource", responseDataClock.error);
76
+ return parseMpdIr(mpdIR, args, warnings, true);
77
+ }
78
+ args.externalClockOffset = getClockOffset(responseDataClock.data);
75
79
  return parseMpdIr(mpdIR, args, warnings, true);
76
80
  },
77
81
  },
@@ -133,14 +137,16 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
133
137
  var _a, _b, _c;
134
138
  var rootChildren = mpdIR.children, rootAttributes = mpdIR.attributes;
135
139
  var isDynamic = rootAttributes.type === "dynamic";
136
- var baseURLs = resolveBaseURLs(args.url === undefined ?
137
- [] :
138
- [normalizeBaseURL(args.url)], rootChildren.baseURLs);
140
+ var initialBaseUrl = args.url !== undefined ?
141
+ [{ url: normalizeBaseURL(args.url),
142
+ availabilityTimeOffset: 0,
143
+ availabilityTimeComplete: true }] :
144
+ [];
145
+ var mpdBaseUrls = resolveBaseURLs(initialBaseUrl, rootChildren.baseURLs);
139
146
  var availabilityStartTime = parseAvailabilityStartTime(rootAttributes, args.referenceDateTime);
140
147
  var timeShiftBufferDepth = rootAttributes.timeShiftBufferDepth;
141
148
  var clockOffset = args.externalClockOffset, unsafelyBaseOnPreviousManifest = args.unsafelyBaseOnPreviousManifest;
142
- var availabilityTimeOffset = extractMinimumAvailabilityTimeOffset(rootChildren.baseURLs);
143
- var manifestInfos = { aggressiveMode: args.aggressiveMode, availabilityStartTime: availabilityStartTime, availabilityTimeOffset: availabilityTimeOffset, baseURLs: baseURLs, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
149
+ var manifestInfos = { aggressiveMode: args.aggressiveMode, availabilityStartTime: availabilityStartTime, baseURLs: mpdBaseUrls, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
144
150
  receivedTime: args.manifestReceivedTime, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousManifest: unsafelyBaseOnPreviousManifest, xlinkInfos: xlinkInfos, xmlNamespaces: mpdIR.attributes.namespaces };
145
151
  var parsedPeriods = parsePeriods(rootChildren.periods, manifestInfos);
146
152
  var mediaPresentationDuration = rootAttributes.duration;
@@ -16,6 +16,7 @@
16
16
  import Manifest from "../../../../manifest";
17
17
  import { IParsedPeriod } from "../../types";
18
18
  import { IPeriodIntermediateRepresentation } from "../node_parser_types";
19
+ import { IResolvedBaseUrl } from "./resolve_base_urls";
19
20
  /** Information about each linked Xlink. */
20
21
  export declare type IXLinkInfos = WeakMap<IPeriodIntermediateRepresentation, {
21
22
  /** Real URL (post-redirection) used to download this xlink. */
@@ -29,9 +30,8 @@ export declare type IXLinkInfos = WeakMap<IPeriodIntermediateRepresentation, {
29
30
  export interface IPeriodsContextInfos {
30
31
  /** Whether we should request new segments even if they are not yet finished. */
31
32
  aggressiveMode: boolean;
32
- availabilityTimeOffset: number;
33
33
  availabilityStartTime: number;
34
- baseURLs: string[];
34
+ baseURLs: IResolvedBaseUrl[];
35
35
  clockOffset?: number;
36
36
  duration?: number;
37
37
  isDynamic: boolean;
@@ -19,7 +19,6 @@ import idGenerator from "../../../../utils/id_generator";
19
19
  import objectValues from "../../../../utils/object_values";
20
20
  import { utf8ToStr } from "../../../../utils/string_parsing";
21
21
  // eslint-disable-next-line max-len
22
- import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
23
22
  import flattenOverlappingPeriods from "./flatten_overlapping_periods";
24
23
  import getPeriodsTimeInformation from "./get_periods_time_infos";
25
24
  import ManifestBoundsCalculator from "./manifest_bounds_calculator";
@@ -33,7 +32,7 @@ var generatePeriodID = idGenerator();
33
32
  * @returns {Array.<Object>}
34
33
  */
35
34
  export default function parsePeriods(periodsIR, contextInfos) {
36
- var _a, _b, _c, _d;
35
+ var _a, _b, _c, _d, _e, _f;
37
36
  var parsedPeriods = [];
38
37
  var periodsTimeInformation = getPeriodsTimeInformation(periodsIR, contextInfos);
39
38
  if (periodsTimeInformation.length !== periodsIR.length) {
@@ -48,7 +47,7 @@ export default function parsePeriods(periodsIR, contextInfos) {
48
47
  var periodIR = periodsIR[i];
49
48
  var xlinkInfos = contextInfos.xlinkInfos.get(periodIR);
50
49
  var periodBaseURLs = resolveBaseURLs(contextInfos.baseURLs, periodIR.children.baseURLs);
51
- var _e = periodsTimeInformation[i], periodStart = _e.periodStart, periodDuration = _e.periodDuration, periodEnd = _e.periodEnd;
50
+ var _g = periodsTimeInformation[i], periodStart = _g.periodStart, periodDuration = _g.periodDuration, periodEnd = _g.periodEnd;
52
51
  var periodID;
53
52
  if (periodIR.attributes.id == null) {
54
53
  log.warn("DASH: No usable id found in the Period. Generating one.");
@@ -63,15 +62,15 @@ export default function parsePeriods(periodsIR, contextInfos) {
63
62
  }
64
63
  var receivedTime = xlinkInfos !== undefined ? xlinkInfos.receivedTime :
65
64
  contextInfos.receivedTime;
66
- var availabilityTimeOffset = extractMinimumAvailabilityTimeOffset(periodIR.children.baseURLs) +
67
- contextInfos.availabilityTimeOffset;
68
65
  var unsafelyBaseOnPreviousPeriod = (_b = (_a = contextInfos
69
66
  .unsafelyBaseOnPreviousManifest) === null || _a === void 0 ? void 0 : _a.getPeriod(periodID)) !== null && _b !== void 0 ? _b : null;
70
- var periodInfos = { aggressiveMode: contextInfos.aggressiveMode, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, manifestProfiles: contextInfos.manifestProfiles, receivedTime: receivedTime, segmentTemplate: periodIR.children.segmentTemplate,
67
+ var availabilityTimeComplete = (_c = periodIR.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : true;
68
+ var availabilityTimeOffset = (_d = periodIR.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0;
69
+ var periodInfos = { aggressiveMode: contextInfos.aggressiveMode, availabilityTimeComplete: availabilityTimeComplete, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, manifestProfiles: contextInfos.manifestProfiles, receivedTime: receivedTime, segmentTemplate: periodIR.children.segmentTemplate,
71
70
  start: periodStart, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousPeriod: unsafelyBaseOnPreviousPeriod };
72
71
  var adaptations = parseAdaptationSets(periodIR.children.adaptations, periodInfos);
73
- var namespaces = ((_c = contextInfos.xmlNamespaces) !== null && _c !== void 0 ? _c : [])
74
- .concat((_d = periodIR.attributes.namespaces) !== null && _d !== void 0 ? _d : []);
72
+ var namespaces = ((_e = contextInfos.xmlNamespaces) !== null && _e !== void 0 ? _e : [])
73
+ .concat((_f = periodIR.attributes.namespaces) !== null && _f !== void 0 ? _f : []);
75
74
  var streamEvents = generateStreamEvents(periodIR.children.eventStreams, periodStart, namespaces);
76
75
  var parsedPeriod = { id: periodID,
77
76
  start: periodStart,
@@ -16,16 +16,18 @@
16
16
  import { IRepresentationIndex, Representation } from "../../../../manifest";
17
17
  import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation, IScheme } from "../node_parser_types";
18
18
  import ManifestBoundsCalculator from "./manifest_bounds_calculator";
19
+ import { IResolvedBaseUrl } from "./resolve_base_urls";
19
20
  /** Supplementary context needed to parse a RepresentationIndex. */
20
21
  export interface IRepresentationInfos {
21
22
  /** Parsed AdaptationSet which contains the Representation. */
22
23
  adaptation: IAdaptationSetIntermediateRepresentation;
23
24
  /** Whether we should request new segments even if they are not yet finished. */
24
25
  aggressiveMode: boolean;
26
+ availabilityTimeComplete: boolean;
25
27
  /** availability time offset of the concerned Adaptation. */
26
28
  availabilityTimeOffset: number;
27
29
  /** Eventual URLs from which every relative URL will be based on. */
28
- baseURLs: string[];
30
+ baseURLs: IResolvedBaseUrl[];
29
31
  /** Allows to obtain the first/last available position of a dynamic content. */
30
32
  manifestBoundsCalculator: ManifestBoundsCalculator;
31
33
  /** End time of the current period, in seconds. */
@@ -23,8 +23,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
23
23
  return to.concat(ar || Array.prototype.slice.call(from));
24
24
  };
25
25
  import objectAssign from "../../../../utils/object_assign";
26
- // eslint-disable-next-line max-len
27
- import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
28
26
  import { BaseRepresentationIndex, ListRepresentationIndex, TemplateRepresentationIndex, TimelineRepresentationIndex, } from "./indexes";
29
27
  import resolveBaseURLs from "./resolve_base_urls";
30
28
  /**
@@ -48,15 +46,11 @@ export default function parseRepresentationIndex(representation, representationI
48
46
  return schemeIdUri === inbandEvent.schemeIdUri;
49
47
  });
50
48
  };
51
- var context = { aggressiveMode: aggressiveMode, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
49
+ var context = { aggressiveMode: aggressiveMode, availabilityTimeComplete: true, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
52
50
  representationId: representation.attributes.id, timeShiftBufferDepth: timeShiftBufferDepth };
53
51
  var representationIndex;
54
52
  if (representation.children.segmentBase !== undefined) {
55
53
  var segmentBase = representation.children.segmentBase;
56
- context.availabilityTimeOffset =
57
- representationInfos.availabilityTimeOffset +
58
- extractMinimumAvailabilityTimeOffset(representation.children.baseURLs) +
59
- ((_a = segmentBase.availabilityTimeOffset) !== null && _a !== void 0 ? _a : 0);
60
54
  representationIndex = new BaseRepresentationIndex(segmentBase, context);
61
55
  }
62
56
  else if (representation.children.segmentList !== undefined) {
@@ -71,10 +65,11 @@ export default function parseRepresentationIndex(representation, representationI
71
65
  segmentTemplates.push(childSegmentTemplate);
72
66
  }
73
67
  var segmentTemplate = objectAssign.apply(void 0, __spreadArray([{}], segmentTemplates /* Ugly TS Hack */, false));
68
+ context.availabilityTimeComplete =
69
+ (_a = segmentTemplate.availabilityTimeComplete) !== null && _a !== void 0 ? _a : representationInfos.availabilityTimeComplete;
74
70
  context.availabilityTimeOffset =
75
- representationInfos.availabilityTimeOffset +
76
- extractMinimumAvailabilityTimeOffset(representation.children.baseURLs) +
77
- ((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0);
71
+ ((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0) +
72
+ representationInfos.availabilityTimeOffset;
78
73
  representationIndex = TimelineRepresentationIndex
79
74
  .isTimelineIndexArgument(segmentTemplate) ?
80
75
  new TimelineRepresentationIndex(segmentTemplate, context) :
@@ -17,14 +17,16 @@ import { Adaptation } from "../../../../manifest";
17
17
  import { IParsedRepresentation } from "../../types";
18
18
  import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
19
19
  import ManifestBoundsCalculator from "./manifest_bounds_calculator";
20
+ import { IResolvedBaseUrl } from "./resolve_base_urls";
20
21
  /** Supplementary context needed to parse a Representation. */
21
22
  export interface IAdaptationInfos {
22
23
  /** Whether we should request new segments even if they are not yet finished. */
23
24
  aggressiveMode: boolean;
25
+ availabilityTimeComplete: boolean;
24
26
  /** availability time offset of the concerned Adaptation. */
25
27
  availabilityTimeOffset: number;
26
28
  /** Eventual URLs from which every relative URL will be based on. */
27
- baseURLs: string[];
29
+ baseURLs: IResolvedBaseUrl[];
28
30
  /** Allows to obtain the first/last available position of a dynamic content. */
29
31
  manifestBoundsCalculator: ManifestBoundsCalculator;
30
32
  /** End time of the current period, in seconds. */