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
@@ -17,11 +17,8 @@ import Adaptation from "./adaptation";
17
17
  import Period from "./period";
18
18
  import Representation from "./representation";
19
19
  import { ISegment } from "./representation_index";
20
- /**
21
- * All information needed for a given chunk to know if it has the same content
22
- * than another chunk.
23
- */
24
- interface IBufferedChunkInfos {
20
+ /** All information needed to identify a given segment. */
21
+ export interface IBufferedChunkInfos {
25
22
  adaptation: Adaptation;
26
23
  period: Period;
27
24
  representation: Representation;
@@ -33,5 +30,10 @@ interface IBufferedChunkInfos {
33
30
  * @param {Object} content2
34
31
  * @returns {boolean}
35
32
  */
36
- export default function areSameContent(content1: IBufferedChunkInfos, content2: IBufferedChunkInfos): boolean;
37
- export {};
33
+ export declare function areSameContent(content1: IBufferedChunkInfos, content2: IBufferedChunkInfos): boolean;
34
+ /**
35
+ * Get string describing a given ISegment, useful for log functions.
36
+ * @param {Object} content
37
+ * @returns {string|null|undefined}
38
+ */
39
+ export declare function getLoggableSegmentId(content: IBufferedChunkInfos | null | undefined): string;
@@ -13,15 +13,32 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import isNullOrUndefined from "../utils/is_null_or_undefined";
16
17
  /**
17
18
  * Check if two contents are the same
18
19
  * @param {Object} content1
19
20
  * @param {Object} content2
20
21
  * @returns {boolean}
21
22
  */
22
- export default function areSameContent(content1, content2) {
23
+ export function areSameContent(content1, content2) {
23
24
  return (content1.segment.id === content2.segment.id &&
24
25
  content1.representation.id === content2.representation.id &&
25
26
  content1.adaptation.id === content2.adaptation.id &&
26
27
  content1.period.id === content2.period.id);
27
28
  }
29
+ /**
30
+ * Get string describing a given ISegment, useful for log functions.
31
+ * @param {Object} content
32
+ * @returns {string|null|undefined}
33
+ */
34
+ export function getLoggableSegmentId(content) {
35
+ if (isNullOrUndefined(content)) {
36
+ return "";
37
+ }
38
+ var period = content.period, adaptation = content.adaptation, representation = content.representation, segment = content.segment;
39
+ return "".concat(adaptation.type, " P: ").concat(period.id, " A: ").concat(adaptation.id, " ") +
40
+ "R: ".concat(representation.id, " S: ") +
41
+ (segment.isInit ? "init" :
42
+ segment.complete ? "".concat(segment.time, "-").concat(segment.duration) :
43
+ "".concat(segment.time));
44
+ }
@@ -37,8 +37,8 @@ var __extends = (this && this.__extends) || (function () {
37
37
  import Player from "./core/api";
38
38
  import { addFeatures, } from "./features";
39
39
  import logger from "./log";
40
- if (false) {
41
- logger.setLevel("NONE");
40
+ if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
41
+ logger.setLevel("NONE" /* CURRENT_LEVEL */);
42
42
  }
43
43
  /**
44
44
  * Minimal Player for which you can features at will:
@@ -16,17 +16,26 @@
16
16
  /**
17
17
  * Returns the content of a box based on its name.
18
18
  * `null` if not found.
19
- * @param {Uint8Array} buf - the isobmff structure
20
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
19
+ * @param {Uint8Array} buf - the isobmff data
20
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
21
21
  * generated from encoding the corresponding ASCII in big endian.
22
22
  * @returns {UInt8Array|null}
23
23
  */
24
24
  declare function getBoxContent(buf: Uint8Array, boxName: number): Uint8Array | null;
25
+ /**
26
+ * Reads the whole ISOBMFF and returns the content of all boxes with the given
27
+ * name, in order.
28
+ * @param {Uint8Array} buf - the isobmff data
29
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
30
+ * generated from encoding the corresponding ASCII in big endian.
31
+ * @returns {Array.<Uint8Array>}
32
+ */
33
+ declare function getBoxesContent(buf: Uint8Array, boxName: number): Uint8Array[];
25
34
  /**
26
35
  * Returns an ISOBMFF box - size and name included - based on its name.
27
36
  * `null` if not found.
28
- * @param {Uint8Array} buf - the isobmff structure
29
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
37
+ * @param {Uint8Array} buf - the isobmff data
38
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
30
39
  * generated from encoding the corresponding ASCII in big endian.
31
40
  * @returns {UInt8Array|null}
32
41
  */
@@ -43,8 +52,8 @@ declare function getBox(buf: Uint8Array, boxName: number): Uint8Array | null;
43
52
  * size and the name of the box.
44
53
  * 3. The first byte after the end of the box, might be equal to `buf`'s
45
54
  * length if we're considering the last box.
46
- * @param {Uint8Array} buf - the isobmff structure
47
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
55
+ * @param {Uint8Array} buf - the isobmff data
56
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
48
57
  * generated from encoding the corresponding ASCII in big endian.
49
58
  * @returns {Array.<number>|null}
50
59
  */
@@ -77,8 +86,8 @@ declare function getUuidContent(buf: Uint8Array, id1: number, id2: number, id3:
77
86
  * length if we're considering the last box.
78
87
  *
79
88
  * `null` if no box is found.
80
- * @param {Uint8Array} buf - the isobmff structure
81
- * @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
82
91
  * generated from encoding the corresponding ASCII in big endian.
83
92
  */
84
93
  declare function getNextBoxOffsets(buf: Uint8Array): [
@@ -86,4 +95,4 @@ declare function getNextBoxOffsets(buf: Uint8Array): [
86
95
  number,
87
96
  number
88
97
  ] | null;
89
- export { getBox, getBoxContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
98
+ export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
@@ -14,12 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import log from "../../../log";
17
+ import assert from "../../../utils/assert";
17
18
  import { be4toi, be8toi, } from "../../../utils/byte_parsing";
18
19
  /**
19
20
  * Returns the content of a box based on its name.
20
21
  * `null` if not found.
21
- * @param {Uint8Array} buf - the isobmff structure
22
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
22
+ * @param {Uint8Array} buf - the isobmff data
23
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
23
24
  * generated from encoding the corresponding ASCII in big endian.
24
25
  * @returns {UInt8Array|null}
25
26
  */
@@ -28,11 +29,33 @@ function getBoxContent(buf, boxName) {
28
29
  return offsets !== null ? buf.subarray(offsets[1], offsets[2]) :
29
30
  null;
30
31
  }
32
+ /**
33
+ * Reads the whole ISOBMFF and returns the content of all boxes with the given
34
+ * name, in order.
35
+ * @param {Uint8Array} buf - the isobmff data
36
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
37
+ * generated from encoding the corresponding ASCII in big endian.
38
+ * @returns {Array.<Uint8Array>}
39
+ */
40
+ function getBoxesContent(buf, boxName) {
41
+ var ret = [];
42
+ var currentBuf = buf;
43
+ while (true) {
44
+ var offsets = getBoxOffsets(currentBuf, boxName);
45
+ if (offsets === null) {
46
+ return ret;
47
+ }
48
+ // Guard against a (very highly improbable) infinite loop
49
+ assert(offsets[2] !== 0 && currentBuf.length !== 0);
50
+ ret.push(currentBuf.subarray(offsets[1], offsets[2]));
51
+ currentBuf = currentBuf.subarray(offsets[2]);
52
+ }
53
+ }
31
54
  /**
32
55
  * Returns an ISOBMFF box - size and name included - based on its name.
33
56
  * `null` if not found.
34
- * @param {Uint8Array} buf - the isobmff structure
35
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
57
+ * @param {Uint8Array} buf - the isobmff data
58
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
36
59
  * generated from encoding the corresponding ASCII in big endian.
37
60
  * @returns {UInt8Array|null}
38
61
  */
@@ -53,8 +76,8 @@ function getBox(buf, boxName) {
53
76
  * size and the name of the box.
54
77
  * 3. The first byte after the end of the box, might be equal to `buf`'s
55
78
  * length if we're considering the last box.
56
- * @param {Uint8Array} buf - the isobmff structure
57
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
79
+ * @param {Uint8Array} buf - the isobmff data
80
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
58
81
  * generated from encoding the corresponding ASCII in big endian.
59
82
  * @returns {Array.<number>|null}
60
83
  */
@@ -148,8 +171,8 @@ function getUuidContent(buf, id1, id2, id3, id4) {
148
171
  * length if we're considering the last box.
149
172
  *
150
173
  * `null` if no box is found.
151
- * @param {Uint8Array} buf - the isobmff structure
152
- * @param {Number} boxName - the 4-letter 'name' of the box as a 4 bit integer
174
+ * @param {Uint8Array} buf - the isobmff data
175
+ * @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
153
176
  * generated from encoding the corresponding ASCII in big endian.
154
177
  */
155
178
  function getNextBoxOffsets(buf) {
@@ -182,4 +205,4 @@ function getNextBoxOffsets(buf) {
182
205
  }
183
206
  return [0, lastOffset, boxSize];
184
207
  }
185
- export { getBox, getBoxContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
208
+ export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
@@ -14,31 +14,44 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  /**
17
- * Returns TRAF Box from the whole ISOBMFF File.
17
+ * Returns the content of the first "traf" box encountered in the given ISOBMFF
18
+ * data.
18
19
  * Returns null if not found.
19
20
  * @param {Uint8Array} buffer
20
21
  * @returns {Uint8Array|null}
21
22
  */
22
23
  declare function getTRAF(buffer: Uint8Array): Uint8Array | null;
23
24
  /**
24
- * Returns MDAT Box from the whole ISOBMFF File.
25
+ * Returns the content of all "traf" boxes encountered in the given ISOBMFF
26
+ * data.
27
+ * Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
28
+ * have multiple "moof" boxes.
29
+ * @param {Uint8Array} buffer
30
+ * @returns {Array.<Uint8Array>}
31
+ */
32
+ declare function getTRAFs(buffer: Uint8Array): Uint8Array[];
33
+ /**
34
+ * Returns the content of the first "moof" box encountered in the given ISOBMFF
35
+ * data.
25
36
  * Returns null if not found.
26
37
  * @param {Uint8Array} buffer
27
38
  * @returns {Uint8Array|null}
28
39
  */
29
40
  declare function getMDAT(buf: Uint8Array): Uint8Array | null;
30
41
  /**
31
- * Returns MDIA Box from the whole ISOBMFF File.
42
+ * Returns the content of the first "mdia" box encountered in the given ISOBMFF
43
+ * data.
32
44
  * Returns null if not found.
33
45
  * @param {Uint8Array} buffer
34
46
  * @returns {Uint8Array|null}
35
47
  */
36
48
  declare function getMDIA(buf: Uint8Array): Uint8Array | null;
37
49
  /**
38
- * Returns EMSG Box from the while ISOBMFF File.
50
+ * Returns the content of the first "emsg" box encountered in the given ISOBMFF
51
+ * data.
39
52
  * Returns null if not found.
40
53
  * @param {Uint8Array} buffer
41
54
  * @returns {Uint8Array|null}
42
55
  */
43
56
  declare function getEMSG(buffer: Uint8Array, offset?: number): Uint8Array | null;
44
- export { getTRAF, getMDAT, getMDIA, getEMSG, };
57
+ export { getTRAF, getTRAFs, getMDAT, getMDIA, getEMSG, };
@@ -13,9 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { getBoxContent } from "./get_box";
16
+ import { getBoxContent, getBoxesContent, } from "./get_box";
17
17
  /**
18
- * Returns TRAF Box from the whole ISOBMFF File.
18
+ * Returns the content of the first "traf" box encountered in the given ISOBMFF
19
+ * data.
19
20
  * Returns null if not found.
20
21
  * @param {Uint8Array} buffer
21
22
  * @returns {Uint8Array|null}
@@ -28,7 +29,26 @@ function getTRAF(buffer) {
28
29
  return getBoxContent(moof, 0x74726166 /* traf */);
29
30
  }
30
31
  /**
31
- * Returns MDAT Box from the whole ISOBMFF File.
32
+ * Returns the content of all "traf" boxes encountered in the given ISOBMFF
33
+ * data.
34
+ * Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
35
+ * have multiple "moof" boxes.
36
+ * @param {Uint8Array} buffer
37
+ * @returns {Array.<Uint8Array>}
38
+ */
39
+ function getTRAFs(buffer) {
40
+ var moofs = getBoxesContent(buffer, 0x6D6F6F66 /* moof */);
41
+ return moofs.reduce(function (acc, moof) {
42
+ var traf = getBoxContent(moof, 0x74726166 /* traf */);
43
+ if (traf !== null) {
44
+ acc.push(traf);
45
+ }
46
+ return acc;
47
+ }, []);
48
+ }
49
+ /**
50
+ * Returns the content of the first "moof" box encountered in the given ISOBMFF
51
+ * data.
32
52
  * Returns null if not found.
33
53
  * @param {Uint8Array} buffer
34
54
  * @returns {Uint8Array|null}
@@ -37,7 +57,8 @@ function getMDAT(buf) {
37
57
  return getBoxContent(buf, 0x6D646174 /* "mdat" */);
38
58
  }
39
59
  /**
40
- * Returns MDIA Box from the whole ISOBMFF File.
60
+ * Returns the content of the first "mdia" box encountered in the given ISOBMFF
61
+ * data.
41
62
  * Returns null if not found.
42
63
  * @param {Uint8Array} buffer
43
64
  * @returns {Uint8Array|null}
@@ -54,7 +75,8 @@ function getMDIA(buf) {
54
75
  return getBoxContent(trak, 0x6D646961 /* "mdia" */);
55
76
  }
56
77
  /**
57
- * Returns EMSG Box from the while ISOBMFF File.
78
+ * Returns the content of the first "emsg" box encountered in the given ISOBMFF
79
+ * data.
58
80
  * Returns null if not found.
59
81
  * @param {Uint8Array} buffer
60
82
  * @returns {Uint8Array|null}
@@ -63,4 +85,4 @@ function getEMSG(buffer, offset) {
63
85
  if (offset === void 0) { offset = 0; }
64
86
  return getBoxContent(buffer.subarray(offset), 0x656D7367 /* emsg */);
65
87
  }
66
- export { getTRAF, getMDAT, getMDIA, getEMSG, };
88
+ export { getTRAF, getTRAFs, getMDAT, getMDIA, getEMSG, };
@@ -21,7 +21,7 @@ import { MAX_32_BIT_INT } from "./constants";
21
21
  import { createBox } from "./create_box";
22
22
  import { getPlayReadyKIDFromPrivateData } from "./drm";
23
23
  import { getBoxContent, getBoxOffsets, } from "./get_box";
24
- import { getEMSG, getMDIA, getTRAF, } from "./read";
24
+ import { getEMSG, getMDIA, getTRAF, getTRAFs, } from "./read";
25
25
  /**
26
26
  * Parse the sidx part (segment index) of an ISOBMFF buffer and construct a
27
27
  * corresponding Array of available segments.
@@ -163,64 +163,69 @@ function getDefaultDurationFromTFHDInTRAF(traf) {
163
163
  * @returns {number | undefined}
164
164
  */
165
165
  function getDurationFromTrun(buffer) {
166
- var traf = getTRAF(buffer);
167
- if (traf === null) {
168
- return undefined;
169
- }
170
- var trun = getBoxContent(traf, 0x7472756E /* trun */);
171
- if (trun === null) {
172
- return undefined;
173
- }
174
- var cursor = 0;
175
- var version = trun[cursor];
176
- cursor += 1;
177
- if (version > 1) {
166
+ var trafs = getTRAFs(buffer);
167
+ if (trafs.length === 0) {
178
168
  return undefined;
179
169
  }
180
- var flags = be3toi(trun, cursor);
181
- cursor += 3;
182
- var hasSampleDuration = (flags & 0x000100) > 0;
183
- var defaultDuration = 0;
184
- if (!hasSampleDuration) {
185
- defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
186
- if (defaultDuration === undefined) {
170
+ var completeDuration = 0;
171
+ for (var _i = 0, trafs_1 = trafs; _i < trafs_1.length; _i++) {
172
+ var traf = trafs_1[_i];
173
+ var trun = getBoxContent(traf, 0x7472756E /* trun */);
174
+ if (trun === null) {
187
175
  return undefined;
188
176
  }
189
- }
190
- var hasDataOffset = (flags & 0x000001) > 0;
191
- var hasFirstSampleFlags = (flags & 0x000004) > 0;
192
- var hasSampleSize = (flags & 0x000200) > 0;
193
- var hasSampleFlags = (flags & 0x000400) > 0;
194
- var hasSampleCompositionOffset = (flags & 0x000800) > 0;
195
- var sampleCounts = be4toi(trun, cursor);
196
- cursor += 4;
197
- if (hasDataOffset) {
198
- cursor += 4;
199
- }
200
- if (hasFirstSampleFlags) {
201
- cursor += 4;
202
- }
203
- var i = sampleCounts;
204
- var duration = 0;
205
- while (i-- > 0) {
206
- if (hasSampleDuration) {
207
- duration += be4toi(trun, cursor);
208
- cursor += 4;
177
+ var cursor = 0;
178
+ var version = trun[cursor];
179
+ cursor += 1;
180
+ if (version > 1) {
181
+ return undefined;
209
182
  }
210
- else {
211
- duration += defaultDuration;
183
+ var flags = be3toi(trun, cursor);
184
+ cursor += 3;
185
+ var hasSampleDuration = (flags & 0x000100) > 0;
186
+ var defaultDuration = 0;
187
+ if (!hasSampleDuration) {
188
+ defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
189
+ if (defaultDuration === undefined) {
190
+ return undefined;
191
+ }
212
192
  }
213
- if (hasSampleSize) {
193
+ var hasDataOffset = (flags & 0x000001) > 0;
194
+ var hasFirstSampleFlags = (flags & 0x000004) > 0;
195
+ var hasSampleSize = (flags & 0x000200) > 0;
196
+ var hasSampleFlags = (flags & 0x000400) > 0;
197
+ var hasSampleCompositionOffset = (flags & 0x000800) > 0;
198
+ var sampleCounts = be4toi(trun, cursor);
199
+ cursor += 4;
200
+ if (hasDataOffset) {
214
201
  cursor += 4;
215
202
  }
216
- if (hasSampleFlags) {
203
+ if (hasFirstSampleFlags) {
217
204
  cursor += 4;
218
205
  }
219
- if (hasSampleCompositionOffset) {
220
- cursor += 4;
206
+ var i = sampleCounts;
207
+ var duration = 0;
208
+ while (i-- > 0) {
209
+ if (hasSampleDuration) {
210
+ duration += be4toi(trun, cursor);
211
+ cursor += 4;
212
+ }
213
+ else {
214
+ duration += defaultDuration;
215
+ }
216
+ if (hasSampleSize) {
217
+ cursor += 4;
218
+ }
219
+ if (hasSampleFlags) {
220
+ cursor += 4;
221
+ }
222
+ if (hasSampleCompositionOffset) {
223
+ cursor += 4;
224
+ }
221
225
  }
226
+ completeDuration += duration;
222
227
  }
223
- return duration;
228
+ return completeDuration;
224
229
  }
225
230
  /**
226
231
  * Get timescale information from a movie header box. Found in init segments.
@@ -41,7 +41,7 @@ function parseBif(buf) {
41
41
  pos += 1;
42
42
  var version = [minorVersion, majorVersion, patchVersion, increVersion].join(".");
43
43
  if (majorVersion > 0) {
44
- throw new Error("Unhandled version: " + majorVersion);
44
+ throw new Error("Unhandled version: ".concat(majorVersion));
45
45
  }
46
46
  var imageCount = le4toi(buf, pos);
47
47
  pos += 4;
@@ -48,9 +48,9 @@ export default function flattenOverlappingPeriods(parsedPeriods) {
48
48
  for (var i = 1; i < parsedPeriods.length; i++) {
49
49
  var parsedPeriod = parsedPeriods[i];
50
50
  var lastFlattenedPeriod = flattenedPeriods[flattenedPeriods.length - 1];
51
- while (lastFlattenedPeriod.duration == null ||
51
+ while (lastFlattenedPeriod.duration === undefined ||
52
52
  (lastFlattenedPeriod.start + lastFlattenedPeriod.duration) > parsedPeriod.start) {
53
- log.warn("DASH: Updating overlapping Periods.", lastFlattenedPeriod, parsedPeriod);
53
+ log.warn("DASH: Updating overlapping Periods.", lastFlattenedPeriod === null || lastFlattenedPeriod === void 0 ? void 0 : lastFlattenedPeriod.start, parsedPeriod.start);
54
54
  lastFlattenedPeriod.duration = parsedPeriod.start - lastFlattenedPeriod.start;
55
55
  lastFlattenedPeriod.end = parsedPeriod.start;
56
56
  if (lastFlattenedPeriod.duration <= 0) {
@@ -20,8 +20,8 @@
20
20
  export default function getHTTPUTCTimingURL(mpdIR) {
21
21
  var UTCTimingHTTP = mpdIR.children.utcTimings
22
22
  .filter(function (utcTiming) {
23
- return utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" &&
24
- utcTiming.value !== undefined;
23
+ return (utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" ||
24
+ utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-xsdate:2014") && utcTiming.value !== undefined;
25
25
  });
26
26
  return UTCTimingHTTP.length > 0 ? UTCTimingHTTP[0].value :
27
27
  undefined;
@@ -16,6 +16,7 @@
16
16
  import { IRepresentationIndex, ISegment } from "../../../../../manifest";
17
17
  import { IEMSG } from "../../../../containers/isobmff";
18
18
  import { IIndexSegment } from "../../../utils/index_helpers";
19
+ import { IResolvedBaseUrl } from "../resolve_base_urls";
19
20
  /**
20
21
  * Index property defined for a SegmentBase RepresentationIndex
21
22
  * This object contains every property needed to generate an ISegment for a
@@ -97,7 +98,7 @@ export interface IBaseIndexContextArgument {
97
98
  /** End of the period concerned by this RepresentationIndex, in seconds. */
98
99
  periodEnd: number | undefined;
99
100
  /** Base URL for the Representation concerned. */
100
- representationBaseURLs: string[];
101
+ representationBaseURLs: IResolvedBaseUrl[];
101
102
  /** ID of the Representation concerned. */
102
103
  representationId?: string;
103
104
  /** Bitrate of the Representation concerned. */
@@ -60,7 +60,8 @@ var BaseRepresentationIndex = /** @class */ (function () {
60
60
  var presentationTimeOffset = index.presentationTimeOffset != null ?
61
61
  index.presentationTimeOffset : 0;
62
62
  var indexTimeOffset = presentationTimeOffset - periodStart * timescale;
63
- var mediaURLs = createIndexURLs(representationBaseURLs, index.initialization !== undefined ?
63
+ var urlSources = representationBaseURLs.map(function (b) { return b.url; });
64
+ var mediaURLs = createIndexURLs(urlSources, index.initialization !== undefined ?
64
65
  index.initialization.media :
65
66
  undefined, representationId, representationBitrate);
66
67
  // TODO If indexRange is either undefined or behind the initialization segment
@@ -73,7 +74,7 @@ var BaseRepresentationIndex = /** @class */ (function () {
73
74
  index.indexRange !== undefined ? [0, index.indexRange[0] - 1] :
74
75
  undefined;
75
76
  this._index = { indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: { mediaURLs: mediaURLs, range: range },
76
- mediaURLs: createIndexURLs(representationBaseURLs, index.media, representationId, representationBitrate),
77
+ mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate),
77
78
  startNumber: index.startNumber,
78
79
  timeline: (_b = index.timeline) !== null && _b !== void 0 ? _b : [], timescale: timescale };
79
80
  this._scaledPeriodEnd = periodEnd == null ? undefined :
@@ -35,5 +35,6 @@ export default function getInitSegment(index, isEMSGWhitelisted) {
35
35
  range: initialization != null ? initialization.range :
36
36
  undefined,
37
37
  indexRange: index.indexRange,
38
- mediaURLs: (_a = initialization === null || initialization === void 0 ? void 0 : initialization.mediaURLs) !== null && _a !== void 0 ? _a : null, privateInfos: privateInfos, timestampOffset: -(index.indexTimeOffset / index.timescale) };
38
+ mediaURLs: (_a = initialization === null || initialization === void 0 ? void 0 : initialization.mediaURLs) !== null && _a !== void 0 ? _a : null,
39
+ complete: true, privateInfos: privateInfos, timestampOffset: -(index.indexTimeOffset / index.timescale) };
39
40
  }
@@ -26,6 +26,7 @@ import { IIndexSegment } from "../../../utils/index_helpers";
26
26
  * @returns {Array.<Object>}
27
27
  */
28
28
  export default function getSegmentsFromTimeline(index: {
29
+ availabilityTimeComplete?: boolean;
29
30
  mediaURLs: string[] | null;
30
31
  startNumber?: number;
31
32
  timeline: IIndexSegment[];
@@ -42,8 +42,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
42
42
  var scaledUp = toIndexTime(from, index);
43
43
  var scaledTo = toIndexTime(from + durationWanted, index);
44
44
  var timeline = index.timeline, timescale = index.timescale, mediaURLs = index.mediaURLs, startNumber = index.startNumber;
45
- var currentNumber = startNumber != null ? startNumber :
46
- undefined;
45
+ var currentNumber = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
47
46
  var segments = [];
48
47
  var timelineLength = timeline.length;
49
48
  // TODO(pierre): use @maxSegmentDuration if possible
@@ -55,11 +54,13 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
55
54
  var duration = timelineItem.duration, start = timelineItem.start, range = timelineItem.range;
56
55
  maxEncounteredDuration = Math.max(maxEncounteredDuration, duration);
57
56
  var repeat = calculateRepeat(timelineItem, timeline[i + 1], maximumTime);
57
+ var complete = index.availabilityTimeComplete !== false ||
58
+ i !== timelineLength - 1 &&
59
+ repeat !== 0;
58
60
  var segmentNumberInCurrentRange = getWantedRepeatIndex(start, duration, scaledUp);
59
61
  var segmentTime = start + segmentNumberInCurrentRange * duration;
60
62
  while (segmentTime < scaledTo && segmentNumberInCurrentRange <= repeat) {
61
- var segmentNumber = currentNumber != null ?
62
- currentNumber + segmentNumberInCurrentRange : undefined;
63
+ var segmentNumber = currentNumber + segmentNumberInCurrentRange;
63
64
  var detokenizedURLs = mediaURLs === null ?
64
65
  null :
65
66
  mediaURLs.map(createDashUrlDetokenizer(segmentTime, segmentNumber));
@@ -71,8 +72,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
71
72
  isInit: false, range: range, timescale: 1,
72
73
  mediaURLs: detokenizedURLs,
73
74
  number: segmentNumber,
74
- timestampOffset: -(index.indexTimeOffset / timescale),
75
- privateInfos: { isEMSGWhitelisted: isEMSGWhitelisted } };
75
+ timestampOffset: -(index.indexTimeOffset / timescale), complete: complete, privateInfos: { isEMSGWhitelisted: isEMSGWhitelisted } };
76
76
  segments.push(segment);
77
77
  // update segment number and segment time for the next segment
78
78
  segmentNumberInCurrentRange++;
@@ -82,9 +82,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
82
82
  // we reached ``scaledTo``, we're done
83
83
  return segments;
84
84
  }
85
- if (currentNumber != null) {
86
- currentNumber += repeat + 1;
87
- }
85
+ currentNumber += repeat + 1;
88
86
  }
89
87
  return segments;
90
88
  }
@@ -1,5 +1,6 @@
1
1
  import { IRepresentationIndex, ISegment } from "../../../../../manifest";
2
2
  import { IEMSG } from "../../../../containers/isobmff";
3
+ import { IResolvedBaseUrl } from "../resolve_base_urls";
3
4
  /**
4
5
  * Index property defined for a SegmentList RepresentationIndex
5
6
  * This object contains every property needed to generate an ISegment for a
@@ -84,7 +85,7 @@ export interface IListIndexContextArgument {
84
85
  /** Start of the period concerned by this RepresentationIndex, in seconds. */
85
86
  periodStart: number;
86
87
  /** Base URL for the Representation concerned. */
87
- representationBaseURLs: string[];
88
+ representationBaseURLs: IResolvedBaseUrl[];
88
89
  /** ID of the Representation concerned. */
89
90
  representationId?: string;
90
91
  /** Bitrate of the Representation concerned. */
@@ -34,14 +34,15 @@ var ListRepresentationIndex = /** @class */ (function () {
34
34
  0;
35
35
  var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
36
36
  var indexTimeOffset = presentationTimeOffset - periodStart * timescale;
37
+ var urlSources = representationBaseURLs.map(function (b) { return b.url; });
37
38
  var list = index.list.map(function (lItem) { return ({
38
- mediaURLs: createIndexURLs(representationBaseURLs, lItem.media, representationId, representationBitrate),
39
+ mediaURLs: createIndexURLs(urlSources, lItem.media, representationId, representationBitrate),
39
40
  mediaRange: lItem.mediaRange
40
41
  }); });
41
42
  this._index = { list: list, timescale: timescale, duration: index.duration, indexTimeOffset: indexTimeOffset, indexRange: index.indexRange,
42
43
  initialization: index.initialization == null ?
43
44
  undefined :
44
- { mediaURLs: createIndexURLs(representationBaseURLs, index.initialization.media, representationId, representationBitrate),
45
+ { mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
45
46
  range: index.initialization.range } };
46
47
  }
47
48
  /**
@@ -77,6 +78,7 @@ var ListRepresentationIndex = /** @class */ (function () {
77
78
  var segment = { id: String(i), time: time, isInit: false, range: range, duration: durationInSeconds,
78
79
  timescale: 1,
79
80
  end: time + durationInSeconds, mediaURLs: mediaURLs, timestampOffset: -(index.indexTimeOffset / timescale),
81
+ complete: true,
80
82
  privateInfos: { isEMSGWhitelisted: this._isEMSGWhitelisted } };
81
83
  segments.push(segment);
82
84
  i++;
@@ -16,6 +16,7 @@
16
16
  import { IRepresentationIndex, ISegment } from "../../../../../manifest";
17
17
  import { IEMSG } from "../../../../containers/isobmff";
18
18
  import ManifestBoundsCalculator from "../manifest_bounds_calculator";
19
+ import { IResolvedBaseUrl } from "../resolve_base_urls";
19
20
  /**
20
21
  * Index property defined for a SegmentTemplate RepresentationIndex
21
22
  * This object contains every property needed to generate an ISegment for a
@@ -108,7 +109,7 @@ export interface ITemplateIndexContextArgument {
108
109
  /** Whether the corresponding Manifest can be updated and changed. */
109
110
  isDynamic: boolean;
110
111
  /** Base URL for the Representation concerned. */
111
- representationBaseURLs: string[];
112
+ representationBaseURLs: IResolvedBaseUrl[];
112
113
  /** ID of the Representation concerned. */
113
114
  representationId?: string;
114
115
  /** Bitrate of the Representation concerned. */