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
@@ -162,7 +162,7 @@ export default class DashWasmParser {
162
162
  memoryBase: 0,
163
163
  tableBase: 0,
164
164
  memory: new WebAssembly.Memory({ initial: 10 }),
165
- table: new WebAssembly.Table({ initial: 2, element: "anyfunc" }),
165
+ table: new WebAssembly.Table({ initial: 1, element: "anyfunc" }),
166
166
  onTagOpen,
167
167
  onCustomEvent,
168
168
  onAttribute,
@@ -391,7 +391,7 @@ export default class DashWasmParser {
391
391
 
392
392
  try {
393
393
  // TODO better type this
394
- (this._instance.instance.exports.parse_xlink as () => void)();
394
+ (this._instance.instance.exports.parse as () => void)();
395
395
  } catch (err) {
396
396
  this._parsersStack.reset();
397
397
  this._warnings = [];
@@ -441,12 +441,15 @@ export default class DashWasmParser {
441
441
  ) : IDashParserResponse<string> | IDashParserResponse<ArrayBuffer> => {
442
442
  const resourceInfos : ILoadedXlinkData[] = [];
443
443
  for (let i = 0; i < loadedXlinks.length; i++) {
444
- const { responseData: xlinkData,
444
+ const { responseData: xlinkResp,
445
445
  receivedTime,
446
446
  sendingTime,
447
447
  url } = loadedXlinks[i];
448
+ if (!xlinkResp.success) {
449
+ throw xlinkResp.error;
450
+ }
448
451
  const [periodsIr,
449
- periodsIRWarnings] = this._parseXlink(xlinkData);
452
+ periodsIRWarnings] = this._parseXlink(xlinkResp.data);
450
453
  resourceInfos.push({ url,
451
454
  receivedTime,
452
455
  sendingTime,
@@ -200,6 +200,13 @@ export function generateAdaptationSetChildrenParser(
200
200
  generateSegmentTemplateAttrParser(stObj, linearMemory));
201
201
  break;
202
202
  }
203
+
204
+ default:
205
+ // Allows to make sure we're not mistakenly closing a re-opened
206
+ // tag.
207
+ parsersStack.pushParsers(nodeId, noop, noop);
208
+ break;
209
+
203
210
  }
204
211
  };
205
212
  }
@@ -313,6 +320,12 @@ export function generateAdaptationSetAttrParser(
313
320
  case AttributeName.MaxSAPPeriod:
314
321
  adaptationAttrs.maximumSAPPeriod = dataView.getFloat64(ptr, true);
315
322
  break;
323
+ case AttributeName.AvailabilityTimeOffset:
324
+ adaptationAttrs.availabilityTimeOffset = dataView.getFloat64(ptr, true);
325
+ break;
326
+ case AttributeName.AvailabilityTimeComplete:
327
+ adaptationAttrs.availabilityTimeComplete = dataView.getUint8(0) === 0;
328
+ break;
316
329
 
317
330
  // TODO
318
331
  // case AttributeName.StartsWithSap:
@@ -37,10 +37,17 @@ export function generateBaseUrlAttrParser(
37
37
  baseUrlAttrs.value = parseString(textDecoder, linearMemory.buffer, ptr, len);
38
38
  break;
39
39
 
40
- case AttributeName.AvailabilityTimeOffset:
40
+ case AttributeName.AvailabilityTimeOffset: {
41
41
  dataView = new DataView(linearMemory.buffer);
42
42
  baseUrlAttrs.attributes.availabilityTimeOffset = dataView.getFloat64(ptr, true);
43
43
  break;
44
+ }
45
+
46
+ case AttributeName.AvailabilityTimeComplete: {
47
+ baseUrlAttrs.attributes.availabilityTimeComplete =
48
+ new DataView(linearMemory.buffer).getUint8(0) === 0;
49
+ break;
50
+ }
44
51
  }
45
52
  };
46
53
  }
@@ -53,6 +53,12 @@ export function generateEventStreamChildrenParser(
53
53
  parsersStack.pushParsers(nodeId, noop, attrParser);
54
54
  break;
55
55
  }
56
+
57
+ default:
58
+ // Allows to make sure we're not mistakenly closing a re-opened
59
+ // tag.
60
+ parsersStack.pushParsers(nodeId, noop, noop);
61
+ break;
56
62
  }
57
63
  };
58
64
  }
@@ -86,6 +86,12 @@ export function generateMPDChildrenParser(
86
86
  parsersStack.pushParsers(nodeId, childrenParser, attributeParser);
87
87
  break;
88
88
  }
89
+
90
+ default:
91
+ // Allows to make sure we're not mistakenly closing a re-opened
92
+ // tag.
93
+ parsersStack.pushParsers(nodeId, noop, noop);
94
+ break;
89
95
  }
90
96
  };
91
97
  }
@@ -103,6 +103,12 @@ export function generatePeriodChildrenParser(
103
103
  generateSegmentTemplateAttrParser(stObj, linearMemory));
104
104
  break;
105
105
  }
106
+
107
+ default:
108
+ // Allows to make sure we're not mistakenly closing a re-opened
109
+ // tag.
110
+ parsersStack.pushParsers(nodeId, noop, noop);
111
+ break;
106
112
  }
107
113
  };
108
114
  }
@@ -141,6 +147,14 @@ export function generatePeriodAttrParser(
141
147
  ptr,
142
148
  len);
143
149
  break;
150
+ case AttributeName.AvailabilityTimeOffset:
151
+ periodAttrs.availabilityTimeOffset =
152
+ new DataView(linearMemory.buffer).getFloat64(ptr, true);
153
+ break;
154
+ case AttributeName.AvailabilityTimeComplete:
155
+ periodAttrs.availabilityTimeComplete =
156
+ new DataView(linearMemory.buffer).getUint8(0) === 0;
157
+ break;
144
158
  case AttributeName.Namespace:
145
159
  const xmlNs = { key: "", value: "" };
146
160
  const dataView = new DataView(linearMemory.buffer);
@@ -30,6 +30,7 @@ import {
30
30
  } from "../types";
31
31
  import { parseString } from "../utils";
32
32
  import { generateBaseUrlAttrParser } from "./BaseURL";
33
+ import { generateContentProtectionAttrParser } from "./ContentProtection";
33
34
  import { generateSchemeAttrParser } from "./Scheme";
34
35
  import { generateSegmentBaseAttrParser } from "./SegmentBase";
35
36
  import { generateSegmentListChildrenParser } from "./SegmentList";
@@ -59,6 +60,19 @@ export function generateRepresentationChildrenParser(
59
60
  break;
60
61
  }
61
62
 
63
+ case TagName.ContentProtection: {
64
+ const contentProtection = { children: { cencPssh: [] },
65
+ attributes: {} };
66
+ if (childrenObj.contentProtections === undefined) {
67
+ childrenObj.contentProtections = [];
68
+ }
69
+ childrenObj.contentProtections.push(contentProtection);
70
+ const contentProtAttrParser =
71
+ generateContentProtectionAttrParser(contentProtection, linearMemory);
72
+ parsersStack.pushParsers(nodeId, noop, contentProtAttrParser);
73
+ break;
74
+ }
75
+
62
76
  case TagName.InbandEventStream: {
63
77
  const inbandEvent = {};
64
78
  if (childrenObj.inbandEventStreams === undefined) {
@@ -102,6 +116,12 @@ export function generateRepresentationChildrenParser(
102
116
  generateSegmentTemplateAttrParser(stObj, linearMemory));
103
117
  break;
104
118
  }
119
+
120
+ default:
121
+ // Allows to make sure we're not mistakenly closing a re-opened
122
+ // tag.
123
+ parsersStack.pushParsers(nodeId, noop, noop);
124
+ break;
105
125
  }
106
126
  };
107
127
  }
@@ -168,6 +188,12 @@ export function generateRepresentationAttrParser(
168
188
  representationAttrs.segmentProfiles =
169
189
  parseString(textDecoder, linearMemory.buffer, ptr, len);
170
190
  break;
191
+ case AttributeName.AvailabilityTimeOffset:
192
+ representationAttrs.availabilityTimeOffset = dataView.getFloat64(ptr, true);
193
+ break;
194
+ case AttributeName.AvailabilityTimeComplete:
195
+ representationAttrs.availabilityTimeComplete = dataView.getUint8(0) === 0;
196
+ break;
171
197
  }
172
198
  };
173
199
  }
@@ -50,6 +50,12 @@ export function generateSegmentListChildrenParser(
50
50
  parsersStack.pushParsers(nodeId, noop, attrParser);
51
51
  break;
52
52
  }
53
+
54
+ default:
55
+ // Allows to make sure we're not mistakenly closing a re-opened
56
+ // tag.
57
+ parsersStack.pushParsers(nodeId, noop, noop);
58
+ break;
53
59
  }
54
60
  };
55
61
  }
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import noop from "../../../../../../utils/noop";
17
18
  import { IPeriodIntermediateRepresentation } from "../../../node_parser_types";
18
19
  import ParsersStack, {
19
20
  IChildrenParser,
@@ -54,6 +55,12 @@ export function generateXLinkChildrenParser(
54
55
  parsersStack.pushParsers(nodeId, childrenParser, attributeParser);
55
56
  break;
56
57
  }
58
+
59
+ default:
60
+ // Allows to make sure we're not mistakenly closing a re-opened
61
+ // tag.
62
+ parsersStack.pushParsers(nodeId, noop, noop);
63
+ break;
57
64
  }
58
65
  };
59
66
  }
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import noop from "../../../../../../utils/noop";
17
18
  import {
18
19
  IMPDIntermediateRepresentation,
19
20
  } from "../../../node_parser_types";
@@ -54,6 +55,12 @@ export function generateRootChildrenParser(
54
55
  linearMemory);
55
56
  parsersStack.pushParsers(nodeId, childrenParser, attributeParser);
56
57
  break;
58
+
59
+ default:
60
+ // Allows to make sure we're not mistakenly closing a re-opened
61
+ // tag.
62
+ parsersStack.pushParsers(nodeId, noop, noop);
63
+ break;
57
64
  }
58
65
  };
59
66
  }
@@ -196,7 +196,7 @@ export const enum AttributeName {
196
196
  MaxSegmentDuration = 41, // f64
197
197
  MaxSubsegmentDuration = 42, // f64
198
198
 
199
- // BaseURL + SegmentTemplate
199
+ // BaseURL + SegmentTemplate + Period + AdaptationSet + Representation
200
200
  AvailabilityTimeOffset = 43, // f64
201
201
 
202
202
  // BaseURL
@@ -46,6 +46,7 @@ export default class LocalRepresentationIndex implements IRepresentationIndex {
46
46
  duration: 0,
47
47
  timescale: 1,
48
48
  mediaURLs: null,
49
+ complete: true,
49
50
  privateInfos: {
50
51
  localManifestInitSegment: { load: this._index.loadInitSegment } },
51
52
  };
@@ -83,6 +84,7 @@ export default class LocalRepresentationIndex implements IRepresentationIndex {
83
84
  timescale: 1,
84
85
  timestampOffset: wantedSegment.timestampOffset,
85
86
  mediaURLs: null,
87
+ complete: true,
86
88
  privateInfos: {
87
89
  localManifestSegment: { load: this._index.loadSegment,
88
90
  segment: wantedSegment },
@@ -301,7 +301,7 @@ function createSmoothStreamingParser(
301
301
  const baseURLAttr = root.getAttribute("Url");
302
302
  const baseURL = baseURLAttr === null ? "" :
303
303
  baseURLAttr;
304
- if (__DEV__) {
304
+ if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
305
305
  assert(baseURL !== "");
306
306
  }
307
307
 
@@ -312,7 +312,8 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
312
312
  time: 0,
313
313
  end: 0,
314
314
  duration: 0,
315
- timescale: 1 };
315
+ timescale: 1,
316
+ complete: true };
316
317
  }
317
318
 
318
319
  /**
@@ -362,6 +363,7 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
362
363
  timescale: 1 as const,
363
364
  number,
364
365
  mediaURLs: [replaceSegmentSmoothTokens(media, time)],
366
+ complete: true,
365
367
  privateInfos: { smoothMediaSegment: { time,
366
368
  duration } } };
367
369
  segments.push(segment);
@@ -36,7 +36,7 @@ export default function clearTimelineFromPosition(
36
36
  timeline.shift();
37
37
  } else { // we have a segment repetition
38
38
  const nextElt = timeline[1];
39
- if (nextElt != null && nextElt.start <= firstAvailablePosition) {
39
+ if (nextElt !== undefined && nextElt.start <= firstAvailablePosition) {
40
40
  timeline.shift();
41
41
  } else { // no next segment or next segment is available
42
42
  if (firstElt.duration <= 0) {
@@ -14,24 +14,34 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- // Generic way to representat segments in an index of segments
18
- export interface IIndexSegment { start: number; // start time
19
- duration: number; // duration
20
- repeatCount: number; // repeat counter
21
- range?: [number, number]; } // possible
22
- // byte-range
17
+ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
18
+
19
+ /** Generic way to represent segments in an index of segments. */
20
+ export interface IIndexSegment {
21
+ /** The segment starting presentation time. */
22
+ start: number;
23
+ /** Difference between the last and first presentation time. */
24
+ duration: number;
25
+ /**
26
+ * Repeat counter.
27
+ * 1 === Repeat 1 time == 2 consecutive segments of this same duration.
28
+ */
29
+ repeatCount: number;
30
+ /** Optional byte-range the segment is available at when requested. */
31
+ range?: [number, number];
32
+ }
23
33
 
24
34
  /**
25
35
  * Calculate the number of times a timeline element repeats based on the next
26
36
  * element.
27
37
  * @param {Object} element
28
- * @param {Object} nextElement
29
- * @param {number} maxPosition
38
+ * @param {Object|null|undefined} nextElement
39
+ * @param {number|undefined} maxPosition
30
40
  * @returns {Number}
31
41
  */
32
42
  export function calculateRepeat(
33
43
  element : IIndexSegment,
34
- nextElement? : IIndexSegment|null,
44
+ nextElement? : IIndexSegment | null | undefined,
35
45
  maxPosition? : number
36
46
  ) : number {
37
47
  const { repeatCount } = element;
@@ -45,9 +55,9 @@ export function calculateRepeat(
45
55
  // start of the next S element, the end of the Period or until the
46
56
  // next MPD update.
47
57
  let segmentEnd : number;
48
- if (nextElement != null) {
58
+ if (!isNullOrUndefined(nextElement)) {
49
59
  segmentEnd = nextElement.start;
50
- } else if (maxPosition != null) {
60
+ } else if (maxPosition !== undefined) {
51
61
  segmentEnd = maxPosition;
52
62
  } else {
53
63
  segmentEnd = Number.MAX_VALUE;
@@ -16,6 +16,7 @@
16
16
 
17
17
  import { ISegment } from "../../../manifest";
18
18
  import { IIndexSegment } from "./index_helpers";
19
+
19
20
  /**
20
21
  * Returns true if a Segment returned by the corresponding index is still
21
22
  * considered available.
@@ -39,17 +40,14 @@ export default function isSegmentStillAvailable(
39
40
  if (tSegmentTime > segment.time) {
40
41
  return false;
41
42
  } else if (tSegmentTime === segment.time) {
42
- if ((tSegment.duration / timescale) !== segment.duration) {
43
- return false;
44
- }
45
- if (tSegment.range == null) {
46
- return segment.range == null;
43
+ if (tSegment.range === undefined) {
44
+ return segment.range === undefined;
47
45
  }
48
46
  return segment.range != null &&
49
47
  tSegment.range[0] === segment.range[0] &&
50
48
  tSegment.range[1] === segment.range[1];
51
49
  } else { // tSegment.start < segment.time
52
- if (tSegment.repeatCount >= 0 && tSegment.duration != null) {
50
+ if (tSegment.repeatCount >= 0 && tSegment.duration !== undefined) {
53
51
  const timeDiff = tSegmentTime - tSegment.start;
54
52
  const repeat = (timeDiff / tSegment.duration) - 1;
55
53
  return repeat % 1 === 0 && repeat <= tSegment.repeatCount;
@@ -90,7 +90,7 @@ function getCSSProperty(str : string, name : string) : string|null {
90
90
  */
91
91
  function decodeEntities(text : string) : string {
92
92
  return text
93
- .replace(HTML_ENTITIES, (_, $1) => String.fromCharCode($1));
93
+ .replace(HTML_ENTITIES, (_, $1) => String.fromCharCode(Number($1)));
94
94
  }
95
95
 
96
96
  /**
@@ -94,7 +94,7 @@ function getCSSProperty(str : string, name : string) : string|null {
94
94
  function decodeEntities(text : string) : string {
95
95
  return text
96
96
  .replace(BR, "\n")
97
- .replace(HTML_ENTITIES, (_, $1) => String.fromCharCode($1));
97
+ .replace(HTML_ENTITIES, (_, $1) => String.fromCharCode(Number($1)));
98
98
  }
99
99
 
100
100
  /**
@@ -38,7 +38,6 @@ export default function applyFontSize(
38
38
  }
39
39
 
40
40
  if (firstFontSize[2] === "px" ||
41
- firstFontSize[2] === "%" ||
42
41
  firstFontSize[2] === "em")
43
42
  {
44
43
  element.style.fontSize = firstFontSize[1] + firstFontSize[2];
@@ -46,6 +45,17 @@ export default function applyFontSize(
46
45
  element.style.position = "relative";
47
46
  addClassName(element, "proportional-style");
48
47
  element.setAttribute("data-proportional-font-size", firstFontSize[1]);
48
+ } else if (firstFontSize[2] === "%") {
49
+ const toNum = Number(firstFontSize[1]);
50
+ if (isNaN(toNum)) {
51
+ log.warn("TTML Parser: could not parse fontSize value \"" +
52
+ firstFontSize[1] +
53
+ "\" into a number");
54
+ } else {
55
+ element.style.position = "relative";
56
+ addClassName(element, "proportional-style");
57
+ element.setAttribute("data-proportional-font-size", String(toNum / 100));
58
+ }
49
59
  } else {
50
60
  log.warn("TTML Parser: unhandled fontSize unit:", firstFontSize[2]);
51
61
  }
@@ -27,8 +27,8 @@ import {
27
27
  ISegmentLoaderResultChunkedComplete,
28
28
  ISegmentLoaderResultSegmentCreated,
29
29
  ISegmentLoaderResultSegmentLoaded,
30
- ISegmentParserParsedInitSegment,
31
- ISegmentParserParsedSegment,
30
+ ISegmentParserParsedInitChunk,
31
+ ISegmentParserParsedMediaChunk,
32
32
  } from "../types";
33
33
 
34
34
  /**
@@ -70,8 +70,8 @@ export function imageParser(
70
70
  loadedSegment : { data : ArrayBuffer | Uint8Array | null;
71
71
  isChunked : boolean; },
72
72
  content : ISegmentContext
73
- ) : ISegmentParserParsedSegment< IImageTrackSegmentData | null > |
74
- ISegmentParserParsedInitSegment< null > {
73
+ ) : ISegmentParserParsedMediaChunk< IImageTrackSegmentData | null > |
74
+ ISegmentParserParsedInitChunk< null > {
75
75
  const { segment, period } = content;
76
76
  const { data, isChunked } = loadedSegment;
77
77
 
@@ -99,7 +99,7 @@ export default function initSegmentLoader(
99
99
  resultData: { url,
100
100
  responseData: data,
101
101
  size: initData.size + indexData.size,
102
- duration: receivedTime - sendingTime,
102
+ requestDuration: receivedTime - sendingTime,
103
103
  sendingTime,
104
104
  receivedTime } };
105
105
 
@@ -15,10 +15,14 @@
15
15
  */
16
16
 
17
17
  import PPromise from "pinkie";
18
+ import { formatError } from "../../errors";
18
19
  import features from "../../features";
19
20
  import log from "../../log";
20
21
  import Manifest from "../../manifest";
21
- import { IDashParserResponse } from "../../parsers/manifest/dash/parsers_types";
22
+ import {
23
+ IDashParserResponse,
24
+ ILoadedResource,
25
+ } from "../../parsers/manifest/dash/parsers_types";
22
26
  import objectAssign from "../../utils/object_assign";
23
27
  import request from "../../utils/request";
24
28
  import {
@@ -146,42 +150,112 @@ export default function generateManifestParser(
146
150
 
147
151
  const externalResources = value.urls.map(resourceUrl => {
148
152
  return scheduleRequest(() => {
149
- const req = value.format === "string" ?
150
- request({ url: resourceUrl,
151
- responseType: "text" as const,
152
- cancelSignal }) :
153
- request({ url: resourceUrl,
154
- responseType: "arraybuffer" as const,
155
- cancelSignal });
156
- return req;
157
- });
158
- });
153
+ return value.format === "string" ? request({ url: resourceUrl,
154
+ responseType: "text",
155
+ cancelSignal }) :
159
156
 
160
- return PPromise.all(externalResources).then(loadedResources => {
161
- if (value.format === "string") {
162
- const resources = loadedResources.map(resource => {
163
- if (typeof resource.responseData !== "string") {
157
+ request({ url: resourceUrl,
158
+ responseType: "arraybuffer",
159
+ cancelSignal });
160
+ }).then((res) => {
161
+ if (value.format === "string") {
162
+ if (typeof res.responseData !== "string") {
164
163
  throw new Error("External DASH resources should have been a string");
165
164
  }
166
- // Normally not needed but TypeScript is just dumb here
167
- return objectAssign(resource, { responseData: resource.responseData });
168
- });
169
- return processMpdParserResponse(value.continue(resources));
170
- } else {
171
- const resources = loadedResources.map(resource => {
172
- if (!(resource.responseData instanceof ArrayBuffer)) {
165
+ return objectAssign(res, {
166
+ responseData: {
167
+ success: true as const,
168
+ data: res.responseData },
169
+ });
170
+ } else {
171
+ if (!(res.responseData instanceof ArrayBuffer)) {
173
172
  throw new Error("External DASH resources should have been ArrayBuffers");
174
173
  }
175
- // Normally not needed but TypeScript is just dumb here
176
- return objectAssign(resource, { responseData: resource.responseData });
174
+ return objectAssign(res, {
175
+ responseData: {
176
+ success: true as const,
177
+ data: res.responseData },
178
+ });
179
+ }
180
+ }, (err) => {
181
+ const error = formatError(err, {
182
+ defaultCode: "PIPELINE_PARSE_ERROR",
183
+ defaultReason: "An unknown error occured when parsing ressources.",
177
184
  });
178
- return processMpdParserResponse(value.continue(resources));
185
+ return objectAssign({}, {
186
+ size: undefined,
187
+ requestDuration: undefined,
188
+ responseData: {
189
+ success: false as const,
190
+ error },
191
+ });
192
+ });
193
+ });
194
+
195
+ return PPromise.all(externalResources).then(loadedResources => {
196
+ if (value.format === "string") {
197
+ assertLoadedResourcesFormatString(loadedResources);
198
+ return processMpdParserResponse(value.continue(loadedResources));
199
+ } else {
200
+ assertLoadedResourcesFormatArrayBuffer(loadedResources);
201
+ return processMpdParserResponse(value.continue(loadedResources));
179
202
  }
180
203
  });
181
204
  }
182
205
  };
183
206
  }
184
207
 
208
+ /**
209
+ * Throw if the given input is not in the expected format.
210
+ * Allows to enforce runtime type-checking as compile-time type-checking here is
211
+ * difficult to enforce.
212
+ *
213
+ * @param loadedResource
214
+ * @returns
215
+ */
216
+ function assertLoadedResourcesFormatString(
217
+ loadedResources : Array<ILoadedResource<string | ArrayBuffer>>
218
+ ) : asserts loadedResources is Array<ILoadedResource<string>> {
219
+ if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.PRODUCTION as number) {
220
+ return;
221
+ }
222
+ loadedResources.forEach((loadedResource) => {
223
+ const { responseData } = loadedResource;
224
+ if (responseData.success && typeof responseData.data === "string") {
225
+ return;
226
+ } else if (!responseData.success) {
227
+ return;
228
+ }
229
+ throw new Error("Invalid data given to the LoadedRessource");
230
+ });
231
+ }
232
+
233
+ /**
234
+ * Throw if the given input is not in the expected format.
235
+ * Allows to enforce runtime type-checking as compile-time type-checking here is
236
+ * difficult to enforce.
237
+ *
238
+ * @param loadedResource
239
+ * @returns
240
+ */
241
+ function assertLoadedResourcesFormatArrayBuffer(
242
+ loadedResources : Array<ILoadedResource<string | ArrayBuffer>>
243
+ ) : asserts loadedResources is Array<ILoadedResource<ArrayBuffer>> {
244
+ if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.PRODUCTION as number) {
245
+ return;
246
+ }
247
+
248
+ loadedResources.forEach((loadedResource) => {
249
+ const { responseData } = loadedResource;
250
+ if (responseData.success && responseData.data instanceof ArrayBuffer) {
251
+ return;
252
+ } else if (!responseData.success) {
253
+ return;
254
+ }
255
+ throw new Error("Invalid data given to the LoadedRessource");
256
+ });
257
+ }
258
+
185
259
  /**
186
260
  * Try to convert a Manifest from an unknown format to a `Document` format.
187
261
  * Useful to exploit DOM-parsing APIs to quickly parse an XML Manifest.
@@ -151,7 +151,7 @@ export default function generateSegmentLoader(
151
151
  res({ resultType: "segment-loaded",
152
152
  resultData: { responseData: _args.data,
153
153
  size: _args.size,
154
- duration: _args.duration } });
154
+ requestDuration: _args.duration } });
155
155
  };
156
156
 
157
157
  /**