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
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
18
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
18
19
 
19
20
  import SmoothFeature from "../../../transports/smooth";
20
21
  import addSmoothFeature from "../smooth";
package/src/index.ts CHANGED
@@ -28,8 +28,8 @@ import logger from "./log";
28
28
  // set initial features according to environment variables
29
29
  initializeFeatures();
30
30
 
31
- if (__DEV__) {
32
- logger.setLevel(__LOGGER_LEVEL__);
31
+ if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
32
+ logger.setLevel(__LOGGER_LEVEL__.CURRENT_LEVEL);
33
33
  }
34
34
 
35
35
  export default Player;
@@ -20,6 +20,7 @@
20
20
  /* eslint-disable @typescript-eslint/no-unsafe-call */
21
21
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
22
22
  /* eslint-disable @typescript-eslint/no-unsafe-return */
23
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
23
24
  /* eslint-disable @typescript-eslint/restrict-template-expressions */
24
25
 
25
26
  describe("Manifest - Manifest", () => {
@@ -19,7 +19,6 @@ import Adaptation, {
19
19
  IRepresentationInfos,
20
20
  SUPPORTED_ADAPTATIONS_TYPE,
21
21
  } from "./adaptation";
22
- import areSameContent from "./are_same_content";
23
22
  import Manifest, {
24
23
  IManifestParsingOptions,
25
24
  ISupplementaryImageTrack,
@@ -38,12 +37,19 @@ import {
38
37
  IAdaptationType,
39
38
  IHDRInformation,
40
39
  } from "./types";
40
+ import {
41
+ areSameContent,
42
+ getLoggableSegmentId,
43
+ IBufferedChunkInfos,
44
+ } from "./utils";
41
45
 
42
46
  export default Manifest;
43
47
  export * from "./types";
44
48
  export {
45
49
  // utils
46
50
  areSameContent,
51
+ getLoggableSegmentId,
52
+ IBufferedChunkInfos,
47
53
 
48
54
  // classes
49
55
  Period,
@@ -26,6 +26,7 @@ describe("manifest - StaticRepresentationIndex", () => {
26
26
  it("should return a single segment with the maximum duration and the right url", () => {
27
27
  const staticRI = new StaticRepresentationIndex({ media: "foo" });
28
28
  expect(staticRI.getSegments()).toEqual([{ id: "0",
29
+ complete: true,
29
30
  isInit: false,
30
31
  number: 0,
31
32
  time: 0,
@@ -58,6 +58,7 @@ export default class StaticRepresentationIndex implements IRepresentationIndex {
58
58
  time: 0,
59
59
  end: Number.MAX_VALUE,
60
60
  duration: Number.MAX_VALUE,
61
+ complete: true,
61
62
  timescale: 1 }];
62
63
  }
63
64
 
@@ -187,9 +187,20 @@ export interface ISegment {
187
187
  end : number;
188
188
  /**
189
189
  * Estimated duration for the segment, in seconds.
190
- * Note that some rounding errors and some differences between what the
191
- * Manifest says and what the content really is might make that time not
192
- * exact.
190
+ *
191
+ * Note that this may not reflect the exact segment duration:
192
+ *
193
+ * 1. In some very specific cases, segments might be generated and served
194
+ * progressively. In this case, the full duration of a segment might not
195
+ * be yet known and thus this property only reflect the currently known
196
+ * `duration` of the segment, which may be inferior to its final duration.
197
+ *
198
+ * You can know if we're in that case when the `complete` property of
199
+ * this same segment is set to `false`.
200
+ *
201
+ * 2. some rounding errors and some differences between what the
202
+ * Manifest says and what the content really is might make that time not
203
+ * exact.
193
204
  *
194
205
  * `0` for initialization segments.
195
206
  */
@@ -202,6 +213,17 @@ export interface ISegment {
202
213
  * As both are always in seconds now, this property became unneeded.
203
214
  */
204
215
  timescale : 1;
216
+
217
+ /**
218
+ * If `false`, this segment's `duration` property may not be the duration of
219
+ * the full segment as it could still be in the process of being generated
220
+ * on the server-side (when this `ISegment` had been constructed).
221
+ *
222
+ * Note that if the `duration` is sure to be the final one, `complete`
223
+ * should be set to `true` even if the segment is still being
224
+ * generated.
225
+ */
226
+ complete : boolean;
205
227
  }
206
228
 
207
229
  /** Interface that should be implemented by any Representation's `index` value. */
@@ -14,19 +14,17 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import isNullOrUndefined from "../utils/is_null_or_undefined";
17
18
  import Adaptation from "./adaptation";
18
19
  import Period from "./period";
19
20
  import Representation from "./representation";
20
21
  import { ISegment } from "./representation_index";
21
22
 
22
- /**
23
- * All information needed for a given chunk to know if it has the same content
24
- * than another chunk.
25
- */
26
- interface IBufferedChunkInfos { adaptation : Adaptation;
27
- period : Period;
28
- representation : Representation;
29
- segment : ISegment; }
23
+ /** All information needed to identify a given segment. */
24
+ export interface IBufferedChunkInfos { adaptation : Adaptation;
25
+ period : Period;
26
+ representation : Representation;
27
+ segment : ISegment; }
30
28
 
31
29
  /**
32
30
  * Check if two contents are the same
@@ -34,7 +32,7 @@ interface IBufferedChunkInfos { adaptation : Adaptation;
34
32
  * @param {Object} content2
35
33
  * @returns {boolean}
36
34
  */
37
- export default function areSameContent(
35
+ export function areSameContent(
38
36
  content1: IBufferedChunkInfos,
39
37
  content2: IBufferedChunkInfos
40
38
  ): boolean {
@@ -43,3 +41,22 @@ export default function areSameContent(
43
41
  content1.adaptation.id === content2.adaptation.id &&
44
42
  content1.period.id === content2.period.id);
45
43
  }
44
+
45
+ /**
46
+ * Get string describing a given ISegment, useful for log functions.
47
+ * @param {Object} content
48
+ * @returns {string|null|undefined}
49
+ */
50
+ export function getLoggableSegmentId(
51
+ content : IBufferedChunkInfos | null | undefined
52
+ ) : string {
53
+ if (isNullOrUndefined(content)) {
54
+ return "";
55
+ }
56
+ const { period, adaptation, representation, segment } = content;
57
+ return `${adaptation.type} P: ${period.id} A: ${adaptation.id} ` +
58
+ `R: ${representation.id} S: ` +
59
+ (segment.isInit ? "init" :
60
+ segment.complete ? `${segment.time}-${segment.duration}` :
61
+ `${segment.time}`);
62
+ }
package/src/minimal.ts CHANGED
@@ -20,6 +20,7 @@
20
20
  * This allows to import a "minimal" player with a small bundle size and then
21
21
  * import only features that is needed.
22
22
  */
23
+
23
24
  import Player from "./core/api";
24
25
  import {
25
26
  addFeatures,
@@ -27,8 +28,8 @@ import {
27
28
  } from "./features";
28
29
  import logger from "./log";
29
30
 
30
- if (__DEV__) {
31
- logger.setLevel(__LOGGER_LEVEL__);
31
+ if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
32
+ logger.setLevel(__LOGGER_LEVEL__.CURRENT_LEVEL);
32
33
  }
33
34
 
34
35
  /**
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import log from "../../../log";
18
+ import assert from "../../../utils/assert";
18
19
  import {
19
20
  be4toi,
20
21
  be8toi,
@@ -23,8 +24,8 @@ import {
23
24
  /**
24
25
  * Returns the content of a box based on its name.
25
26
  * `null` if not found.
26
- * @param {Uint8Array} buf - the isobmff structure
27
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
27
+ * @param {Uint8Array} buf - the isobmff data
28
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
28
29
  * generated from encoding the corresponding ASCII in big endian.
29
30
  * @returns {UInt8Array|null}
30
31
  */
@@ -34,11 +35,36 @@ function getBoxContent(buf : Uint8Array, boxName : number) : Uint8Array|null {
34
35
  null;
35
36
  }
36
37
 
38
+ /**
39
+ * Reads the whole ISOBMFF and returns the content of all boxes with the given
40
+ * name, in order.
41
+ * @param {Uint8Array} buf - the isobmff data
42
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
43
+ * generated from encoding the corresponding ASCII in big endian.
44
+ * @returns {Array.<Uint8Array>}
45
+ */
46
+ function getBoxesContent(buf : Uint8Array, boxName : number) : Uint8Array[] {
47
+ const ret = [];
48
+ let currentBuf = buf;
49
+ while (true) {
50
+ const offsets = getBoxOffsets(currentBuf, boxName);
51
+ if (offsets === null) {
52
+ return ret;
53
+ }
54
+
55
+ // Guard against a (very highly improbable) infinite loop
56
+ assert(offsets[2] !== 0 && currentBuf.length !== 0);
57
+
58
+ ret.push(currentBuf.subarray(offsets[1], offsets[2]));
59
+ currentBuf = currentBuf.subarray(offsets[2]);
60
+ }
61
+ }
62
+
37
63
  /**
38
64
  * Returns an ISOBMFF box - size and name included - based on its name.
39
65
  * `null` if not found.
40
- * @param {Uint8Array} buf - the isobmff structure
41
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
66
+ * @param {Uint8Array} buf - the isobmff data
67
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
42
68
  * generated from encoding the corresponding ASCII in big endian.
43
69
  * @returns {UInt8Array|null}
44
70
  */
@@ -60,8 +86,8 @@ function getBox(buf : Uint8Array, boxName : number) : Uint8Array|null {
60
86
  * size and the name of the box.
61
87
  * 3. The first byte after the end of the box, might be equal to `buf`'s
62
88
  * length if we're considering the last box.
63
- * @param {Uint8Array} buf - the isobmff structure
64
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
89
+ * @param {Uint8Array} buf - the isobmff data
90
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
65
91
  * generated from encoding the corresponding ASCII in big endian.
66
92
  * @returns {Array.<number>|null}
67
93
  */
@@ -176,8 +202,8 @@ function getUuidContent(
176
202
  * length if we're considering the last box.
177
203
  *
178
204
  * `null` if no box is found.
179
- * @param {Uint8Array} buf - the isobmff structure
180
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
205
+ * @param {Uint8Array} buf - the isobmff data
206
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
181
207
  * generated from encoding the corresponding ASCII in big endian.
182
208
  */
183
209
  function getNextBoxOffsets(buf : Uint8Array
@@ -221,6 +247,7 @@ function getNextBoxOffsets(buf : Uint8Array
221
247
  export {
222
248
  getBox,
223
249
  getBoxContent,
250
+ getBoxesContent,
224
251
  getBoxOffsets,
225
252
  getNextBoxOffsets,
226
253
  getUuidContent,
@@ -14,10 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { getBoxContent } from "./get_box";
17
+ import {
18
+ getBoxContent,
19
+ getBoxesContent,
20
+ } from "./get_box";
18
21
 
19
22
  /**
20
- * Returns TRAF Box from the whole ISOBMFF File.
23
+ * Returns the content of the first "traf" box encountered in the given ISOBMFF
24
+ * data.
21
25
  * Returns null if not found.
22
26
  * @param {Uint8Array} buffer
23
27
  * @returns {Uint8Array|null}
@@ -31,7 +35,27 @@ function getTRAF(buffer : Uint8Array) : Uint8Array|null {
31
35
  }
32
36
 
33
37
  /**
34
- * Returns MDAT Box from the whole ISOBMFF File.
38
+ * Returns the content of all "traf" boxes encountered in the given ISOBMFF
39
+ * data.
40
+ * Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
41
+ * have multiple "moof" boxes.
42
+ * @param {Uint8Array} buffer
43
+ * @returns {Array.<Uint8Array>}
44
+ */
45
+ function getTRAFs(buffer : Uint8Array) : Uint8Array[] {
46
+ const moofs = getBoxesContent(buffer, 0x6D6F6F66 /* moof */);
47
+ return moofs.reduce((acc : Uint8Array[], moof : Uint8Array) => {
48
+ const traf = getBoxContent(moof, 0x74726166 /* traf */);
49
+ if (traf !== null) {
50
+ acc.push(traf);
51
+ }
52
+ return acc;
53
+ }, []);
54
+ }
55
+
56
+ /**
57
+ * Returns the content of the first "moof" box encountered in the given ISOBMFF
58
+ * data.
35
59
  * Returns null if not found.
36
60
  * @param {Uint8Array} buffer
37
61
  * @returns {Uint8Array|null}
@@ -41,7 +65,8 @@ function getMDAT(buf : Uint8Array) : Uint8Array|null {
41
65
  }
42
66
 
43
67
  /**
44
- * Returns MDIA Box from the whole ISOBMFF File.
68
+ * Returns the content of the first "mdia" box encountered in the given ISOBMFF
69
+ * data.
45
70
  * Returns null if not found.
46
71
  * @param {Uint8Array} buffer
47
72
  * @returns {Uint8Array|null}
@@ -61,7 +86,8 @@ function getMDIA(buf : Uint8Array) : Uint8Array|null {
61
86
  }
62
87
 
63
88
  /**
64
- * Returns EMSG Box from the while ISOBMFF File.
89
+ * Returns the content of the first "emsg" box encountered in the given ISOBMFF
90
+ * data.
65
91
  * Returns null if not found.
66
92
  * @param {Uint8Array} buffer
67
93
  * @returns {Uint8Array|null}
@@ -72,6 +98,7 @@ function getEMSG(buffer: Uint8Array, offset = 0) : Uint8Array|null {
72
98
 
73
99
  export {
74
100
  getTRAF,
101
+ getTRAFs,
75
102
  getMDAT,
76
103
  getMDIA,
77
104
  getEMSG,
@@ -40,6 +40,7 @@ import {
40
40
  getEMSG,
41
41
  getMDIA,
42
42
  getTRAF,
43
+ getTRAFs,
43
44
  } from "./read";
44
45
 
45
46
  /** Information related to a PSSH box. */
@@ -240,68 +241,72 @@ function getDefaultDurationFromTFHDInTRAF(traf : Uint8Array) : number | undefine
240
241
  * @returns {number | undefined}
241
242
  */
242
243
  function getDurationFromTrun(buffer : Uint8Array) : number | undefined {
243
- const traf = getTRAF(buffer);
244
- if (traf === null) {
244
+ const trafs = getTRAFs(buffer);
245
+ if (trafs.length === 0) {
245
246
  return undefined;
246
247
  }
247
248
 
248
- const trun = getBoxContent(traf, 0x7472756E /* trun */);
249
- if (trun === null) {
250
- return undefined;
251
- }
252
- let cursor = 0;
253
- const version = trun[cursor]; cursor += 1;
254
- if (version > 1) {
255
- return undefined;
256
- }
257
-
258
- const flags = be3toi(trun, cursor); cursor += 3;
259
- const hasSampleDuration = (flags & 0x000100) > 0;
260
-
261
- let defaultDuration : number | undefined = 0;
262
- if (!hasSampleDuration) {
263
- defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
264
- if (defaultDuration === undefined) {
249
+ let completeDuration : number = 0;
250
+ for (const traf of trafs) {
251
+ const trun = getBoxContent(traf, 0x7472756E /* trun */);
252
+ if (trun === null) {
253
+ return undefined;
254
+ }
255
+ let cursor = 0;
256
+ const version = trun[cursor]; cursor += 1;
257
+ if (version > 1) {
265
258
  return undefined;
266
259
  }
267
- }
268
260
 
269
- const hasDataOffset = (flags & 0x000001) > 0;
270
- const hasFirstSampleFlags = (flags & 0x000004) > 0;
271
- const hasSampleSize = (flags & 0x000200) > 0;
272
- const hasSampleFlags = (flags & 0x000400) > 0;
273
- const hasSampleCompositionOffset = (flags & 0x000800) > 0;
261
+ const flags = be3toi(trun, cursor); cursor += 3;
262
+ const hasSampleDuration = (flags & 0x000100) > 0;
274
263
 
275
- const sampleCounts = be4toi(trun, cursor); cursor += 4;
264
+ let defaultDuration : number | undefined = 0;
265
+ if (!hasSampleDuration) {
266
+ defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
267
+ if (defaultDuration === undefined) {
268
+ return undefined;
269
+ }
270
+ }
276
271
 
277
- if (hasDataOffset) {
278
- cursor += 4;
279
- }
280
- if (hasFirstSampleFlags) {
281
- cursor += 4;
282
- }
272
+ const hasDataOffset = (flags & 0x000001) > 0;
273
+ const hasFirstSampleFlags = (flags & 0x000004) > 0;
274
+ const hasSampleSize = (flags & 0x000200) > 0;
275
+ const hasSampleFlags = (flags & 0x000400) > 0;
276
+ const hasSampleCompositionOffset = (flags & 0x000800) > 0;
283
277
 
284
- let i = sampleCounts;
285
- let duration = 0;
286
- while (i-- > 0) {
287
- if (hasSampleDuration) {
288
- duration += be4toi(trun, cursor);
289
- cursor += 4;
290
- } else {
291
- duration += defaultDuration;
292
- }
293
- if (hasSampleSize) {
278
+ const sampleCounts = be4toi(trun, cursor); cursor += 4;
279
+
280
+ if (hasDataOffset) {
294
281
  cursor += 4;
295
282
  }
296
- if (hasSampleFlags) {
283
+ if (hasFirstSampleFlags) {
297
284
  cursor += 4;
298
285
  }
299
- if (hasSampleCompositionOffset) {
300
- cursor += 4;
286
+
287
+ let i = sampleCounts;
288
+ let duration = 0;
289
+ while (i-- > 0) {
290
+ if (hasSampleDuration) {
291
+ duration += be4toi(trun, cursor);
292
+ cursor += 4;
293
+ } else {
294
+ duration += defaultDuration;
295
+ }
296
+ if (hasSampleSize) {
297
+ cursor += 4;
298
+ }
299
+ if (hasSampleFlags) {
300
+ cursor += 4;
301
+ }
302
+ if (hasSampleCompositionOffset) {
303
+ cursor += 4;
304
+ }
301
305
  }
302
- }
303
306
 
304
- return duration;
307
+ completeDuration += duration;
308
+ }
309
+ return completeDuration;
305
310
  }
306
311
 
307
312
  /**
@@ -49,7 +49,7 @@ describe("flattenOverlappingPeriods", function() {
49
49
 
50
50
  expect(logSpy).toHaveBeenCalledTimes(1);
51
51
  expect(logSpy).toHaveBeenCalledWith(
52
- "DASH: Updating overlapping Periods.", periods[1], periods[2]);
52
+ "DASH: Updating overlapping Periods.", 60, 60);
53
53
  logSpy.mockRestore();
54
54
  });
55
55
 
@@ -78,7 +78,7 @@ describe("flattenOverlappingPeriods", function() {
78
78
 
79
79
  expect(logSpy).toHaveBeenCalledTimes(1);
80
80
  expect(logSpy).toHaveBeenCalledWith(
81
- "DASH: Updating overlapping Periods.", periods[1], periods[2]);
81
+ "DASH: Updating overlapping Periods.", 60, 90);
82
82
  logSpy.mockRestore();
83
83
  });
84
84
 
@@ -104,9 +104,9 @@ describe("flattenOverlappingPeriods", function() {
104
104
 
105
105
  expect(logSpy).toHaveBeenCalledTimes(2);
106
106
  expect(logSpy).toHaveBeenCalledWith(
107
- "DASH: Updating overlapping Periods.", periods[0], periods[2]);
107
+ "DASH: Updating overlapping Periods.", 60, 50);
108
108
  expect(logSpy).toHaveBeenCalledWith(
109
- "DASH: Updating overlapping Periods.", periods[1], periods[2]);
109
+ "DASH: Updating overlapping Periods.", 0, 50);
110
110
  logSpy.mockRestore();
111
111
  });
112
112
 
@@ -54,10 +54,12 @@ export default function flattenOverlappingPeriods(
54
54
  const parsedPeriod = parsedPeriods[i];
55
55
  let lastFlattenedPeriod = flattenedPeriods[flattenedPeriods.length - 1];
56
56
  while (
57
- lastFlattenedPeriod.duration == null ||
57
+ lastFlattenedPeriod.duration === undefined ||
58
58
  (lastFlattenedPeriod.start + lastFlattenedPeriod.duration) > parsedPeriod.start
59
59
  ) {
60
- log.warn("DASH: Updating overlapping Periods.", lastFlattenedPeriod, parsedPeriod);
60
+ log.warn("DASH: Updating overlapping Periods.",
61
+ lastFlattenedPeriod?.start,
62
+ parsedPeriod.start);
61
63
  lastFlattenedPeriod.duration = parsedPeriod.start - lastFlattenedPeriod.start;
62
64
  lastFlattenedPeriod.end = parsedPeriod.start;
63
65
  if (lastFlattenedPeriod.duration <= 0) {
@@ -30,11 +30,11 @@ import log from "../../../../log";
30
30
  * @returns {number|undefined}
31
31
  */
32
32
  export default function getClockOffset(
33
- serverClock : string
34
- ) : number|undefined {
33
+ serverClock: string
34
+ ): number | undefined {
35
35
  const httpOffset = Date.parse(serverClock) - performance.now();
36
36
  if (isNaN(httpOffset)) {
37
- log.warn("DASH Parser: Invalid clock received: ", serverClock);
37
+ log.warn("DASH Parser: Invalid clock received: ", serverClock);
38
38
  return undefined;
39
39
  }
40
40
  return httpOffset;
@@ -16,6 +16,16 @@
16
16
 
17
17
  import { IMPDIntermediateRepresentation } from "../node_parser_types";
18
18
 
19
+ type ISupportedHttpUtcTimingScheme =
20
+ {
21
+ schemeIdUri : "urn:mpeg:dash:utc:http-iso:2014";
22
+ value : string;
23
+ } |
24
+ {
25
+ schemeIdUri : "urn:mpeg:dash:utc:http-xsdate:2014";
26
+ value : string;
27
+ };
28
+
19
29
  /**
20
30
  * @param {Object} mpdIR
21
31
  * @returns {string|undefined}
@@ -24,12 +34,11 @@ export default function getHTTPUTCTimingURL(
24
34
  mpdIR : IMPDIntermediateRepresentation
25
35
  ) : string|undefined {
26
36
  const UTCTimingHTTP = mpdIR.children.utcTimings
27
- .filter((utcTiming) : utcTiming is {
28
- schemeIdUri : "urn:mpeg:dash:utc:http-iso:2014";
29
- value : string;
30
- } =>
31
- utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" &&
32
- utcTiming.value !== undefined
37
+ .filter((utcTiming) : utcTiming is ISupportedHttpUtcTimingScheme =>
38
+ (
39
+ utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" ||
40
+ utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-xsdate:2014"
41
+ ) && utcTiming.value !== undefined
33
42
  );
34
43
 
35
44
  return UTCTimingHTTP.length > 0 ? UTCTimingHTTP[0].value :
@@ -26,6 +26,7 @@ import {
26
26
  IIndexSegment,
27
27
  toIndexTime,
28
28
  } from "../../../utils/index_helpers";
29
+ import { IResolvedBaseUrl } from "../resolve_base_urls";
29
30
  import getInitSegment from "./get_init_segment";
30
31
  import getSegmentsFromTimeline from "./get_segments_from_timeline";
31
32
  import { createIndexURLs } from "./tokens";
@@ -110,7 +111,7 @@ export interface IBaseIndexContextArgument {
110
111
  /** End of the period concerned by this RepresentationIndex, in seconds. */
111
112
  periodEnd : number|undefined;
112
113
  /** Base URL for the Representation concerned. */
113
- representationBaseURLs : string[];
114
+ representationBaseURLs : IResolvedBaseUrl[];
114
115
  /** ID of the Representation concerned. */
115
116
  representationId? : string;
116
117
  /** Bitrate of the Representation concerned. */
@@ -192,7 +193,8 @@ export default class BaseRepresentationIndex implements IRepresentationIndex {
192
193
 
193
194
  const indexTimeOffset = presentationTimeOffset - periodStart * timescale;
194
195
 
195
- const mediaURLs = createIndexURLs(representationBaseURLs,
196
+ const urlSources : string[] = representationBaseURLs.map(b => b.url);
197
+ const mediaURLs = createIndexURLs(urlSources,
196
198
  index.initialization !== undefined ?
197
199
  index.initialization.media :
198
200
  undefined,
@@ -213,7 +215,7 @@ export default class BaseRepresentationIndex implements IRepresentationIndex {
213
215
  this._index = { indexRange: index.indexRange,
214
216
  indexTimeOffset,
215
217
  initialization: { mediaURLs, range },
216
- mediaURLs: createIndexURLs(representationBaseURLs,
218
+ mediaURLs: createIndexURLs(urlSources,
217
219
  index.media,
218
220
  representationId,
219
221
  representationBitrate),
@@ -45,6 +45,7 @@ export default function getInitSegment(
45
45
  undefined,
46
46
  indexRange: index.indexRange,
47
47
  mediaURLs: initialization?.mediaURLs ?? null,
48
+ complete: true,
48
49
  privateInfos,
49
50
  timestampOffset: -(index.indexTimeOffset / index.timescale) };
50
51
  }