rx-player 4.2.0-dev.2024090300 → 4.2.0-dev.2024090500

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 (596) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/VERSION +1 -1
  3. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  5. package/dist/commonjs/compat/add_class_name.d.ts.map +1 -1
  6. package/dist/commonjs/compat/add_class_name.js +1 -2
  7. package/dist/commonjs/compat/browser_compatibility_types.d.ts.map +1 -1
  8. package/dist/commonjs/compat/browser_compatibility_types.js +4 -1
  9. package/dist/commonjs/compat/clear_element_src.js +1 -1
  10. package/dist/commonjs/compat/eme/custom_media_keys/moz_media_keys_constructor.d.ts.map +1 -1
  11. package/dist/commonjs/compat/eme/custom_media_keys/moz_media_keys_constructor.js +2 -4
  12. package/dist/commonjs/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts.map +1 -1
  13. package/dist/commonjs/compat/eme/custom_media_keys/ms_media_keys_constructor.js +2 -4
  14. package/dist/commonjs/compat/eme/custom_media_keys/old_webkit_media_keys.d.ts.map +1 -1
  15. package/dist/commonjs/compat/eme/custom_media_keys/old_webkit_media_keys.js +3 -6
  16. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  17. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys.js +2 -17
  18. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys_constructor.d.ts.map +1 -1
  19. package/dist/commonjs/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +1 -2
  20. package/dist/commonjs/compat/eme/eme-api-implementation.js +0 -2
  21. package/dist/commonjs/compat/event_listeners.d.ts.map +1 -1
  22. package/dist/commonjs/compat/event_listeners.js +2 -6
  23. package/dist/commonjs/compat/has_mse_in_worker.js +1 -1
  24. package/dist/commonjs/compat/is_codec_supported.d.ts.map +1 -1
  25. package/dist/commonjs/compat/is_codec_supported.js +0 -2
  26. package/dist/commonjs/compat/is_vtt_cue.d.ts.map +1 -1
  27. package/dist/commonjs/compat/is_vtt_cue.js +1 -2
  28. package/dist/commonjs/compat/on_height_width_change.d.ts.map +1 -1
  29. package/dist/commonjs/compat/patch_webkit_source_buffer.d.ts.map +1 -1
  30. package/dist/commonjs/compat/patch_webkit_source_buffer.js +8 -18
  31. package/dist/commonjs/compat/remove_cue.js +2 -2
  32. package/dist/commonjs/core/fetchers/index.d.ts +4 -4
  33. package/dist/commonjs/core/fetchers/index.d.ts.map +1 -1
  34. package/dist/commonjs/core/fetchers/index.js +2 -2
  35. package/dist/commonjs/core/fetchers/segment/index.d.ts +6 -5
  36. package/dist/commonjs/core/fetchers/segment/index.d.ts.map +1 -1
  37. package/dist/commonjs/core/fetchers/segment/index.js +2 -2
  38. package/dist/{es2017/core/stream/representation/utils/downloading_queue.d.ts → commonjs/core/fetchers/segment/segment_queue.d.ts} +63 -80
  39. package/dist/commonjs/core/fetchers/segment/segment_queue.d.ts.map +1 -0
  40. package/dist/commonjs/core/{stream/representation/utils/downloading_queue.js → fetchers/segment/segment_queue.js} +132 -111
  41. package/dist/commonjs/core/fetchers/segment/{segment_fetcher_creator.d.ts → segment_queue_creator.d.ts} +25 -12
  42. package/dist/commonjs/core/fetchers/segment/segment_queue_creator.d.ts.map +1 -0
  43. package/dist/commonjs/core/fetchers/segment/{segment_fetcher_creator.js → segment_queue_creator.js} +15 -9
  44. package/dist/commonjs/core/fetchers/segment/task_prioritizer.d.ts +9 -0
  45. package/dist/commonjs/core/fetchers/segment/task_prioritizer.d.ts.map +1 -1
  46. package/dist/commonjs/core/fetchers/segment/task_prioritizer.js +38 -8
  47. package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
  48. package/dist/commonjs/core/main/common/content_time_boundaries_observer.js +21 -10
  49. package/dist/commonjs/core/main/worker/content_preparer.d.ts +3 -3
  50. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +1 -1
  51. package/dist/commonjs/core/main/worker/content_preparer.js +2 -2
  52. package/dist/commonjs/core/main/worker/send_message.js +1 -1
  53. package/dist/commonjs/core/main/worker/worker_main.js +2 -2
  54. package/dist/commonjs/core/segment_sinks/implementations/text/text_segment_buffer.js +1 -5
  55. package/dist/commonjs/core/segment_sinks/inventory/segment_inventory.js +39 -30
  56. package/dist/commonjs/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  57. package/dist/commonjs/core/segment_sinks/segment_buffers_store.js +3 -2
  58. package/dist/commonjs/core/stream/adaptation/adaptation_stream.d.ts +1 -1
  59. package/dist/commonjs/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  60. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +3 -3
  61. package/dist/commonjs/core/stream/adaptation/types.d.ts +2 -2
  62. package/dist/commonjs/core/stream/adaptation/types.d.ts.map +1 -1
  63. package/dist/commonjs/core/stream/orchestrator/get_time_ranges_for_content.d.ts.map +1 -1
  64. package/dist/commonjs/core/stream/orchestrator/get_time_ranges_for_content.js +27 -6
  65. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts +3 -3
  66. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  67. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +3 -3
  68. package/dist/commonjs/core/stream/period/period_stream.d.ts +1 -1
  69. package/dist/commonjs/core/stream/period/period_stream.d.ts.map +1 -1
  70. package/dist/commonjs/core/stream/period/period_stream.js +2 -2
  71. package/dist/commonjs/core/stream/period/types.d.ts +2 -2
  72. package/dist/commonjs/core/stream/period/types.d.ts.map +1 -1
  73. package/dist/commonjs/core/stream/representation/representation_stream.d.ts +1 -1
  74. package/dist/commonjs/core/stream/representation/representation_stream.d.ts.map +1 -1
  75. package/dist/commonjs/core/stream/representation/representation_stream.js +19 -28
  76. package/dist/commonjs/core/stream/representation/types.d.ts +2 -2
  77. package/dist/commonjs/core/stream/representation/types.d.ts.map +1 -1
  78. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.d.ts.map +1 -1
  79. package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +39 -18
  80. package/dist/commonjs/core/types.d.ts +2 -2
  81. package/dist/commonjs/core/types.d.ts.map +1 -1
  82. package/dist/commonjs/default_config.d.ts.map +1 -1
  83. package/dist/commonjs/default_config.js +0 -8
  84. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.d.ts.map +1 -1
  85. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +0 -13
  86. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.d.ts.map +1 -1
  87. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +0 -4
  88. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  89. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +1 -2
  90. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.d.ts.map +1 -1
  91. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +2 -13
  92. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.d.ts.map +1 -1
  93. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -2
  94. package/dist/commonjs/features/add_features.d.ts.map +1 -1
  95. package/dist/commonjs/features/add_features.js +31 -10
  96. package/dist/commonjs/main_thread/api/option_utils.d.ts.map +1 -1
  97. package/dist/commonjs/main_thread/api/option_utils.js +2 -6
  98. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  99. package/dist/commonjs/main_thread/api/public_api.js +33 -27
  100. package/dist/commonjs/main_thread/decrypt/utils/persistent_sessions_store.d.ts.map +1 -1
  101. package/dist/commonjs/main_thread/decrypt/utils/persistent_sessions_store.js +4 -3
  102. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +6 -6
  103. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  104. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +32 -37
  105. package/dist/commonjs/main_thread/text_displayer/html/html_text_displayer.js +1 -5
  106. package/dist/commonjs/main_thread/text_displayer/native/native_text_displayer.js +3 -7
  107. package/dist/commonjs/main_thread/tracks_store/track_dispatcher.js +1 -1
  108. package/dist/commonjs/main_thread/types.d.ts.map +1 -1
  109. package/dist/commonjs/manifest/classes/manifest.d.ts.map +1 -1
  110. package/dist/commonjs/manifest/classes/manifest.js +0 -6
  111. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  112. package/dist/commonjs/manifest/utils.js +72 -62
  113. package/dist/commonjs/mse/main_media_source_interface.js +1 -1
  114. package/dist/commonjs/multithread_types.d.ts +2 -2
  115. package/dist/commonjs/multithread_types.d.ts.map +1 -1
  116. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/parse_s_element.d.ts.map +1 -1
  117. package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +12 -6
  118. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/AdaptationSet.d.ts.map +1 -1
  119. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/AdaptationSet.js +14 -7
  120. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/MPD.d.ts.map +1 -1
  121. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/MPD.js +8 -4
  122. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/Period.d.ts.map +1 -1
  123. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/Period.js +10 -5
  124. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/Representation.d.ts.map +1 -1
  125. package/dist/commonjs/parsers/manifest/dash/fast-js-parser/node_parsers/Representation.js +10 -5
  126. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/AdaptationSet.d.ts.map +1 -1
  127. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/AdaptationSet.js +14 -7
  128. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/EventStream.d.ts.map +1 -1
  129. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/EventStream.js +2 -1
  130. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/MPD.d.ts.map +1 -1
  131. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/MPD.js +8 -4
  132. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/Period.d.ts.map +1 -1
  133. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/Period.js +10 -5
  134. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/Representation.d.ts.map +1 -1
  135. package/dist/commonjs/parsers/manifest/dash/native-parser/node_parsers/Representation.js +10 -5
  136. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts.map +1 -1
  137. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.d.ts.map +1 -1
  138. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +2 -1
  139. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.d.ts.map +1 -1
  140. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +2 -1
  141. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.d.ts.map +1 -1
  142. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +4 -2
  143. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/MPD.d.ts.map +1 -1
  144. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +10 -5
  145. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Period.d.ts.map +1 -1
  146. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +2 -1
  147. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/root.d.ts.map +1 -1
  148. package/dist/commonjs/parsers/manifest/dash/wasm-parser/ts/generators/root.js +2 -1
  149. package/dist/commonjs/parsers/manifest/local/representation_index.d.ts.map +1 -1
  150. package/dist/commonjs/parsers/manifest/local/representation_index.js +29 -8
  151. package/dist/commonjs/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts.map +1 -1
  152. package/dist/commonjs/parsers/manifest/metaplaylist/metaplaylist_parser.js +31 -10
  153. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  154. package/dist/commonjs/parsers/manifest/smooth/create_parser.js +2 -1
  155. package/dist/commonjs/parsers/manifest/smooth/shared_smooth_segment_timeline.js +26 -4
  156. package/dist/commonjs/parsers/manifest/utils/get_first_time_from_adaptation.js +29 -7
  157. package/dist/commonjs/parsers/manifest/utils/get_last_time_from_adaptation.js +29 -7
  158. package/dist/commonjs/parsers/texttracks/srt/html.js +28 -6
  159. package/dist/commonjs/parsers/texttracks/ttml/html/create_element.js +1 -1
  160. package/dist/commonjs/parsers/texttracks/ttml/html/parse_ttml_to_div.js +29 -7
  161. package/dist/commonjs/parsers/texttracks/ttml/native/parse_ttml_to_vtt.d.ts.map +1 -1
  162. package/dist/commonjs/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +26 -5
  163. package/dist/commonjs/parsers/texttracks/ttml/resolve_styles_inheritance.d.ts.map +1 -1
  164. package/dist/commonjs/parsers/texttracks/ttml/resolve_styles_inheritance.js +25 -4
  165. package/dist/commonjs/parsers/texttracks/webvtt/html/to_html.d.ts +9 -3
  166. package/dist/commonjs/parsers/texttracks/webvtt/html/to_html.d.ts.map +1 -1
  167. package/dist/commonjs/parsers/texttracks/webvtt/html/to_html.js +9 -3
  168. package/dist/commonjs/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +30 -8
  169. package/dist/commonjs/public_types.d.ts +5 -7
  170. package/dist/commonjs/public_types.d.ts.map +1 -1
  171. package/dist/commonjs/transports/smooth/extract_timings_infos.js +30 -8
  172. package/dist/commonjs/utils/array_find.d.ts +1 -1
  173. package/dist/commonjs/utils/array_find.d.ts.map +1 -1
  174. package/dist/commonjs/utils/array_find.js +3 -1
  175. package/dist/commonjs/utils/array_find_index.d.ts +1 -1
  176. package/dist/commonjs/utils/array_find_index.d.ts.map +1 -1
  177. package/dist/commonjs/utils/array_find_index.js +3 -1
  178. package/dist/commonjs/utils/array_includes.d.ts.map +1 -1
  179. package/dist/commonjs/utils/array_includes.js +1 -3
  180. package/dist/commonjs/utils/assert.d.ts.map +1 -1
  181. package/dist/commonjs/utils/assert.js +0 -2
  182. package/dist/commonjs/utils/base64.d.ts +1 -1
  183. package/dist/commonjs/utils/base64.d.ts.map +1 -1
  184. package/dist/commonjs/utils/base64.js +3 -2
  185. package/dist/commonjs/utils/event_emitter.js +1 -1
  186. package/dist/commonjs/utils/flat_map.d.ts.map +1 -1
  187. package/dist/commonjs/utils/flat_map.js +1 -2
  188. package/dist/commonjs/utils/id_generator.d.ts.map +1 -1
  189. package/dist/commonjs/utils/id_generator.js +0 -1
  190. package/dist/commonjs/utils/logger.js +1 -1
  191. package/dist/commonjs/utils/monotonic_timestamp.js +2 -2
  192. package/dist/commonjs/utils/noop.js +1 -2
  193. package/dist/commonjs/utils/object_assign.d.ts.map +1 -1
  194. package/dist/commonjs/utils/object_assign.js +27 -6
  195. package/dist/commonjs/utils/object_values.d.ts.map +1 -1
  196. package/dist/commonjs/utils/object_values.js +1 -1
  197. package/dist/commonjs/utils/reference.js +1 -1
  198. package/dist/commonjs/utils/request/xhr.js +1 -1
  199. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  200. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  201. package/dist/es2017/compat/add_class_name.d.ts.map +1 -1
  202. package/dist/es2017/compat/add_class_name.js +1 -2
  203. package/dist/es2017/compat/browser_compatibility_types.d.ts.map +1 -1
  204. package/dist/es2017/compat/browser_compatibility_types.js +4 -1
  205. package/dist/es2017/compat/clear_element_src.js +1 -1
  206. package/dist/es2017/compat/eme/custom_media_keys/moz_media_keys_constructor.d.ts.map +1 -1
  207. package/dist/es2017/compat/eme/custom_media_keys/moz_media_keys_constructor.js +2 -4
  208. package/dist/es2017/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts.map +1 -1
  209. package/dist/es2017/compat/eme/custom_media_keys/ms_media_keys_constructor.js +2 -4
  210. package/dist/es2017/compat/eme/custom_media_keys/old_webkit_media_keys.d.ts.map +1 -1
  211. package/dist/es2017/compat/eme/custom_media_keys/old_webkit_media_keys.js +3 -6
  212. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.d.ts.map +1 -1
  213. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys.js +2 -17
  214. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys_constructor.d.ts.map +1 -1
  215. package/dist/es2017/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +1 -2
  216. package/dist/es2017/compat/eme/eme-api-implementation.js +0 -2
  217. package/dist/es2017/compat/event_listeners.d.ts.map +1 -1
  218. package/dist/es2017/compat/event_listeners.js +2 -6
  219. package/dist/es2017/compat/has_mse_in_worker.js +1 -1
  220. package/dist/es2017/compat/is_codec_supported.d.ts.map +1 -1
  221. package/dist/es2017/compat/is_codec_supported.js +0 -2
  222. package/dist/es2017/compat/is_vtt_cue.d.ts.map +1 -1
  223. package/dist/es2017/compat/is_vtt_cue.js +1 -2
  224. package/dist/es2017/compat/on_height_width_change.d.ts.map +1 -1
  225. package/dist/es2017/compat/patch_webkit_source_buffer.d.ts.map +1 -1
  226. package/dist/es2017/compat/patch_webkit_source_buffer.js +8 -18
  227. package/dist/es2017/compat/remove_cue.js +2 -2
  228. package/dist/es2017/core/fetchers/index.d.ts +4 -4
  229. package/dist/es2017/core/fetchers/index.d.ts.map +1 -1
  230. package/dist/es2017/core/fetchers/index.js +2 -2
  231. package/dist/es2017/core/fetchers/segment/index.d.ts +6 -5
  232. package/dist/es2017/core/fetchers/segment/index.d.ts.map +1 -1
  233. package/dist/es2017/core/fetchers/segment/index.js +2 -2
  234. package/dist/{commonjs/core/stream/representation/utils/downloading_queue.d.ts → es2017/core/fetchers/segment/segment_queue.d.ts} +63 -80
  235. package/dist/es2017/core/fetchers/segment/segment_queue.d.ts.map +1 -0
  236. package/dist/es2017/core/{stream/representation/utils/downloading_queue.js → fetchers/segment/segment_queue.js} +126 -105
  237. package/dist/es2017/core/fetchers/segment/{segment_fetcher_creator.d.ts → segment_queue_creator.d.ts} +25 -12
  238. package/dist/es2017/core/fetchers/segment/segment_queue_creator.d.ts.map +1 -0
  239. package/dist/es2017/core/fetchers/segment/{segment_fetcher_creator.js → segment_queue_creator.js} +12 -6
  240. package/dist/es2017/core/fetchers/segment/task_prioritizer.d.ts +9 -0
  241. package/dist/es2017/core/fetchers/segment/task_prioritizer.d.ts.map +1 -1
  242. package/dist/es2017/core/fetchers/segment/task_prioritizer.js +10 -2
  243. package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
  244. package/dist/es2017/core/main/common/content_time_boundaries_observer.js +4 -4
  245. package/dist/es2017/core/main/worker/content_preparer.d.ts +3 -3
  246. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +1 -1
  247. package/dist/es2017/core/main/worker/content_preparer.js +3 -3
  248. package/dist/es2017/core/main/worker/send_message.js +1 -1
  249. package/dist/es2017/core/main/worker/worker_main.js +2 -2
  250. package/dist/es2017/core/segment_sinks/implementations/text/text_segment_buffer.js +1 -5
  251. package/dist/es2017/core/segment_sinks/inventory/segment_inventory.js +1 -2
  252. package/dist/es2017/core/segment_sinks/segment_buffers_store.d.ts.map +1 -1
  253. package/dist/es2017/core/segment_sinks/segment_buffers_store.js +3 -2
  254. package/dist/es2017/core/stream/adaptation/adaptation_stream.d.ts +1 -1
  255. package/dist/es2017/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  256. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +3 -3
  257. package/dist/es2017/core/stream/adaptation/types.d.ts +2 -2
  258. package/dist/es2017/core/stream/adaptation/types.d.ts.map +1 -1
  259. package/dist/es2017/core/stream/orchestrator/get_time_ranges_for_content.d.ts.map +1 -1
  260. package/dist/es2017/core/stream/orchestrator/get_time_ranges_for_content.js +1 -2
  261. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts +3 -3
  262. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  263. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +3 -3
  264. package/dist/es2017/core/stream/period/period_stream.d.ts +1 -1
  265. package/dist/es2017/core/stream/period/period_stream.d.ts.map +1 -1
  266. package/dist/es2017/core/stream/period/period_stream.js +2 -2
  267. package/dist/es2017/core/stream/period/types.d.ts +2 -2
  268. package/dist/es2017/core/stream/period/types.d.ts.map +1 -1
  269. package/dist/es2017/core/stream/representation/representation_stream.d.ts +1 -1
  270. package/dist/es2017/core/stream/representation/representation_stream.d.ts.map +1 -1
  271. package/dist/es2017/core/stream/representation/representation_stream.js +19 -28
  272. package/dist/es2017/core/stream/representation/types.d.ts +2 -2
  273. package/dist/es2017/core/stream/representation/types.d.ts.map +1 -1
  274. package/dist/es2017/core/stream/representation/utils/get_needed_segments.d.ts.map +1 -1
  275. package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -2
  276. package/dist/es2017/core/types.d.ts +2 -2
  277. package/dist/es2017/core/types.d.ts.map +1 -1
  278. package/dist/es2017/default_config.d.ts.map +1 -1
  279. package/dist/es2017/default_config.js +0 -8
  280. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.d.ts.map +1 -1
  281. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +0 -13
  282. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.d.ts.map +1 -1
  283. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +0 -4
  284. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  285. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +1 -2
  286. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.d.ts.map +1 -1
  287. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +2 -13
  288. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.d.ts.map +1 -1
  289. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -2
  290. package/dist/es2017/features/add_features.d.ts.map +1 -1
  291. package/dist/es2017/features/add_features.js +1 -2
  292. package/dist/es2017/main_thread/api/option_utils.d.ts.map +1 -1
  293. package/dist/es2017/main_thread/api/option_utils.js +2 -6
  294. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  295. package/dist/es2017/main_thread/api/public_api.js +29 -23
  296. package/dist/es2017/main_thread/decrypt/utils/persistent_sessions_store.d.ts.map +1 -1
  297. package/dist/es2017/main_thread/decrypt/utils/persistent_sessions_store.js +2 -1
  298. package/dist/es2017/main_thread/init/media_source_content_initializer.js +6 -6
  299. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -1
  300. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +7 -12
  301. package/dist/es2017/main_thread/text_displayer/html/html_text_displayer.js +1 -5
  302. package/dist/es2017/main_thread/text_displayer/native/native_text_displayer.js +3 -7
  303. package/dist/es2017/main_thread/tracks_store/track_dispatcher.js +1 -1
  304. package/dist/es2017/main_thread/types.d.ts.map +1 -1
  305. package/dist/es2017/manifest/classes/manifest.d.ts.map +1 -1
  306. package/dist/es2017/manifest/classes/manifest.js +0 -6
  307. package/dist/es2017/manifest/utils.d.ts.map +1 -1
  308. package/dist/es2017/manifest/utils.js +1 -2
  309. package/dist/es2017/mse/main_media_source_interface.js +1 -1
  310. package/dist/es2017/multithread_types.d.ts +2 -2
  311. package/dist/es2017/multithread_types.d.ts.map +1 -1
  312. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/parse_s_element.d.ts.map +1 -1
  313. package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +12 -6
  314. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/AdaptationSet.d.ts.map +1 -1
  315. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/AdaptationSet.js +14 -7
  316. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/MPD.d.ts.map +1 -1
  317. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/MPD.js +8 -4
  318. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/Period.d.ts.map +1 -1
  319. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/Period.js +10 -5
  320. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/Representation.d.ts.map +1 -1
  321. package/dist/es2017/parsers/manifest/dash/fast-js-parser/node_parsers/Representation.js +10 -5
  322. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/AdaptationSet.d.ts.map +1 -1
  323. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/AdaptationSet.js +14 -7
  324. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/EventStream.d.ts.map +1 -1
  325. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/EventStream.js +2 -1
  326. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/MPD.d.ts.map +1 -1
  327. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/MPD.js +8 -4
  328. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/Period.d.ts.map +1 -1
  329. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/Period.js +10 -5
  330. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/Representation.d.ts.map +1 -1
  331. package/dist/es2017/parsers/manifest/dash/native-parser/node_parsers/Representation.js +10 -5
  332. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts.map +1 -1
  333. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -2
  334. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.d.ts.map +1 -1
  335. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +2 -1
  336. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.d.ts.map +1 -1
  337. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +2 -1
  338. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.d.ts.map +1 -1
  339. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +4 -2
  340. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/MPD.d.ts.map +1 -1
  341. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +10 -5
  342. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Period.d.ts.map +1 -1
  343. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +2 -1
  344. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/root.d.ts.map +1 -1
  345. package/dist/es2017/parsers/manifest/dash/wasm-parser/ts/generators/root.js +2 -1
  346. package/dist/es2017/parsers/manifest/local/representation_index.d.ts.map +1 -1
  347. package/dist/es2017/parsers/manifest/local/representation_index.js +1 -2
  348. package/dist/es2017/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts.map +1 -1
  349. package/dist/es2017/parsers/manifest/metaplaylist/metaplaylist_parser.js +2 -3
  350. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  351. package/dist/es2017/parsers/manifest/smooth/create_parser.js +2 -1
  352. package/dist/es2017/parsers/manifest/smooth/shared_smooth_segment_timeline.js +2 -2
  353. package/dist/es2017/parsers/manifest/utils/get_first_time_from_adaptation.js +2 -2
  354. package/dist/es2017/parsers/manifest/utils/get_last_time_from_adaptation.js +2 -2
  355. package/dist/es2017/parsers/texttracks/srt/html.js +2 -2
  356. package/dist/es2017/parsers/texttracks/ttml/html/create_element.js +1 -1
  357. package/dist/es2017/parsers/texttracks/ttml/html/parse_ttml_to_div.js +3 -3
  358. package/dist/es2017/parsers/texttracks/ttml/native/parse_ttml_to_vtt.d.ts.map +1 -1
  359. package/dist/es2017/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +1 -2
  360. package/dist/es2017/parsers/texttracks/ttml/resolve_styles_inheritance.d.ts.map +1 -1
  361. package/dist/es2017/parsers/texttracks/ttml/resolve_styles_inheritance.js +1 -2
  362. package/dist/es2017/parsers/texttracks/webvtt/html/to_html.d.ts +9 -3
  363. package/dist/es2017/parsers/texttracks/webvtt/html/to_html.d.ts.map +1 -1
  364. package/dist/es2017/parsers/texttracks/webvtt/html/to_html.js +9 -3
  365. package/dist/es2017/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +2 -2
  366. package/dist/es2017/public_types.d.ts +5 -7
  367. package/dist/es2017/public_types.d.ts.map +1 -1
  368. package/dist/es2017/transports/smooth/extract_timings_infos.js +3 -3
  369. package/dist/es2017/utils/array_find.d.ts +1 -1
  370. package/dist/es2017/utils/array_find.d.ts.map +1 -1
  371. package/dist/es2017/utils/array_find.js +3 -1
  372. package/dist/es2017/utils/array_find_index.d.ts +1 -1
  373. package/dist/es2017/utils/array_find_index.d.ts.map +1 -1
  374. package/dist/es2017/utils/array_find_index.js +3 -1
  375. package/dist/es2017/utils/array_includes.d.ts.map +1 -1
  376. package/dist/es2017/utils/array_includes.js +1 -3
  377. package/dist/es2017/utils/assert.d.ts.map +1 -1
  378. package/dist/es2017/utils/assert.js +0 -2
  379. package/dist/es2017/utils/base64.d.ts +1 -1
  380. package/dist/es2017/utils/base64.d.ts.map +1 -1
  381. package/dist/es2017/utils/base64.js +3 -2
  382. package/dist/es2017/utils/event_emitter.js +1 -1
  383. package/dist/es2017/utils/flat_map.d.ts.map +1 -1
  384. package/dist/es2017/utils/flat_map.js +1 -2
  385. package/dist/es2017/utils/id_generator.d.ts.map +1 -1
  386. package/dist/es2017/utils/id_generator.js +0 -1
  387. package/dist/es2017/utils/logger.js +1 -1
  388. package/dist/es2017/utils/monotonic_timestamp.js +2 -2
  389. package/dist/es2017/utils/noop.js +1 -2
  390. package/dist/es2017/utils/object_assign.d.ts.map +1 -1
  391. package/dist/es2017/utils/object_assign.js +1 -2
  392. package/dist/es2017/utils/object_values.d.ts.map +1 -1
  393. package/dist/es2017/utils/object_values.js +1 -2
  394. package/dist/es2017/utils/reference.js +1 -1
  395. package/dist/es2017/utils/request/xhr.js +1 -1
  396. package/dist/rx-player.js +39336 -18
  397. package/dist/rx-player.min.js +18 -0
  398. package/dist/worker.js +5 -5
  399. package/package.json +16 -9
  400. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  401. package/src/compat/__tests__/add_text_track.test.ts +8 -12
  402. package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -7
  403. package/src/compat/__tests__/browser_version.test.ts +20 -19
  404. package/src/compat/__tests__/can_patch_isobmff.test.ts +7 -10
  405. package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +17 -21
  406. package/src/compat/__tests__/can_reuse_media_keys.test.ts +13 -21
  407. package/src/compat/__tests__/clear_element_src.test.ts +37 -34
  408. package/src/compat/__tests__/enable_audio_track.test.ts +22 -21
  409. package/src/compat/__tests__/is_codec_supported.test.ts +17 -18
  410. package/src/compat/__tests__/is_seeking_approximate.test.ts +8 -14
  411. package/src/compat/__tests__/is_vtt_cue.test.ts +8 -13
  412. package/src/compat/__tests__/make_vtt_cue.test.ts +7 -12
  413. package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +44 -32
  414. package/src/compat/__tests__/remove_cue.test.ts +30 -31
  415. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +21 -26
  416. package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +9 -17
  417. package/src/compat/__tests__/should_unset_media_keys.test.ts +7 -14
  418. package/src/compat/__tests__/should_validate_metadata.test.ts +7 -17
  419. package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +17 -26
  420. package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +10 -15
  421. package/src/compat/add_class_name.ts +1 -2
  422. package/src/compat/browser_compatibility_types.ts +4 -2
  423. package/src/compat/clear_element_src.ts +1 -1
  424. package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +1 -2
  425. package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +1 -2
  426. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +3 -6
  427. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +2 -17
  428. package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +1 -4
  429. package/src/compat/eme/eme-api-implementation.ts +0 -2
  430. package/src/compat/event_listeners.ts +2 -6
  431. package/src/compat/has_mse_in_worker.ts +1 -1
  432. package/src/compat/is_codec_supported.ts +0 -2
  433. package/src/compat/is_debug_mode_enabled.ts +1 -1
  434. package/src/compat/is_vtt_cue.ts +1 -2
  435. package/src/compat/on_height_width_change.ts +1 -2
  436. package/src/compat/patch_webkit_source_buffer.ts +48 -29
  437. package/src/compat/remove_cue.ts +2 -2
  438. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +21 -26
  439. package/src/core/fetchers/README.md +13 -12
  440. package/src/core/fetchers/index.ts +5 -8
  441. package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +17 -23
  442. package/src/core/fetchers/segment/index.ts +6 -5
  443. package/src/core/{stream/representation/utils/downloading_queue.ts → fetchers/segment/segment_queue.ts} +204 -166
  444. package/src/core/fetchers/segment/{segment_fetcher_creator.ts → segment_queue_creator.ts} +31 -14
  445. package/src/core/fetchers/segment/task_prioritizer.ts +10 -2
  446. package/src/core/fetchers/utils/schedule_request.ts +1 -1
  447. package/src/core/main/common/content_time_boundaries_observer.ts +4 -4
  448. package/src/core/main/worker/content_preparer.ts +5 -5
  449. package/src/core/main/worker/send_message.ts +1 -1
  450. package/src/core/main/worker/worker_main.ts +2 -2
  451. package/src/core/segment_sinks/implementations/text/text_segment_buffer.ts +1 -5
  452. package/src/core/segment_sinks/inventory/segment_inventory.ts +1 -2
  453. package/src/core/segment_sinks/segment_buffers_store.ts +3 -2
  454. package/src/core/stream/adaptation/adaptation_stream.ts +3 -3
  455. package/src/core/stream/adaptation/types.ts +2 -2
  456. package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +1 -2
  457. package/src/core/stream/orchestrator/stream_orchestrator.ts +4 -4
  458. package/src/core/stream/period/period_stream.ts +2 -2
  459. package/src/core/stream/period/types.ts +2 -2
  460. package/src/core/stream/representation/representation_stream.ts +59 -56
  461. package/src/core/stream/representation/types.ts +3 -4
  462. package/src/core/stream/representation/utils/get_needed_segments.ts +1 -2
  463. package/src/core/types.ts +2 -4
  464. package/src/default_config.ts +0 -8
  465. package/src/errors/__tests__/format_error.test.ts +18 -18
  466. package/src/experimental/features/__tests__/multi_thread.test.ts +5 -5
  467. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +11 -11
  468. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +18 -26
  469. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +13 -21
  470. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +24 -20
  471. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +28 -30
  472. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +32 -38
  473. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +64 -51
  474. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +4 -17
  475. package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -4
  476. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +1 -2
  477. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +16 -14
  478. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +1 -2
  479. package/src/features/__tests__/add_features.test.ts +12 -11
  480. package/src/features/add_features.ts +1 -2
  481. package/src/features/list/__tests__/dash_wasm.test.ts +4 -4
  482. package/src/main_thread/api/__tests__/option_utils.test.ts +114 -70
  483. package/src/main_thread/api/__tests__/public_api.test.ts +85 -48
  484. package/src/main_thread/api/option_utils.ts +2 -6
  485. package/src/main_thread/api/public_api.ts +24 -18
  486. package/src/main_thread/decrypt/__tests__/__global__/get_license.test.ts +12 -18
  487. package/src/main_thread/decrypt/__tests__/__global__/init_data.test.ts +128 -101
  488. package/src/main_thread/decrypt/__tests__/__global__/media_key_system_access.test.ts +26 -33
  489. package/src/main_thread/decrypt/__tests__/__global__/media_keys.test.ts +46 -48
  490. package/src/main_thread/decrypt/__tests__/__global__/server_certificate.test.ts +33 -34
  491. package/src/main_thread/decrypt/__tests__/__global__/utils.ts +13 -17
  492. package/src/main_thread/decrypt/session_events_listener.ts +1 -1
  493. package/src/main_thread/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -5
  494. package/src/main_thread/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +14 -17
  495. package/src/main_thread/decrypt/utils/persistent_sessions_store.ts +2 -1
  496. package/src/main_thread/init/media_source_content_initializer.ts +7 -7
  497. package/src/main_thread/init/multi_thread_content_initializer.ts +7 -12
  498. package/src/main_thread/init/utils/__tests__/are_same_stream_events.test.ts +11 -16
  499. package/src/main_thread/init/utils/__tests__/refresh_scheduled_events_list.test.ts +48 -18
  500. package/src/main_thread/text_displayer/html/__tests__/text_track_cues_store.test.ts +32 -17
  501. package/src/main_thread/text_displayer/html/html_text_displayer.ts +1 -5
  502. package/src/main_thread/text_displayer/native/native_text_displayer.ts +3 -7
  503. package/src/main_thread/tracks_store/__tests__/media_element_tracks_store.test.ts +33 -28
  504. package/src/main_thread/tracks_store/track_dispatcher.ts +1 -1
  505. package/src/main_thread/types.ts +0 -1
  506. package/src/manifest/classes/__tests__/adaptation.test.ts +167 -62
  507. package/src/manifest/classes/__tests__/manifest.test.ts +130 -74
  508. package/src/manifest/classes/__tests__/period.test.ts +293 -211
  509. package/src/manifest/classes/__tests__/update_period_in_place.test.ts +0 -2
  510. package/src/manifest/classes/__tests__/update_periods.test.ts +57 -57
  511. package/src/manifest/classes/manifest.ts +0 -6
  512. package/src/manifest/utils.ts +1 -2
  513. package/src/mse/main_media_source_interface.ts +1 -1
  514. package/src/mse/types.ts +1 -1
  515. package/src/multithread_types.ts +2 -2
  516. package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +5 -10
  517. package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +38 -30
  518. package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -3
  519. package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +12 -6
  520. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/AdaptationSet.ts +14 -7
  521. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/MPD.ts +8 -4
  522. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/Period.ts +10 -5
  523. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/Representation.ts +10 -5
  524. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/ContentProtection.test.ts +15 -27
  525. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/Initialization.test.ts +13 -17
  526. package/src/parsers/manifest/dash/fast-js-parser/node_parsers/__tests__/SegmentURL.test.ts +18 -15
  527. package/src/parsers/manifest/dash/native-parser/node_parsers/AdaptationSet.ts +14 -7
  528. package/src/parsers/manifest/dash/native-parser/node_parsers/EventStream.ts +2 -1
  529. package/src/parsers/manifest/dash/native-parser/node_parsers/MPD.ts +8 -4
  530. package/src/parsers/manifest/dash/native-parser/node_parsers/Period.ts +10 -5
  531. package/src/parsers/manifest/dash/native-parser/node_parsers/Representation.ts +10 -5
  532. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/ContentProtection.test.ts +15 -27
  533. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/Initialization.test.ts +13 -17
  534. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/SegmentTimeline.test.ts +9 -14
  535. package/src/parsers/manifest/dash/native-parser/node_parsers/__tests__/SegmentURL.test.ts +18 -15
  536. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -2
  537. package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +2 -1
  538. package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +2 -1
  539. package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +4 -2
  540. package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +10 -5
  541. package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +2 -1
  542. package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +2 -1
  543. package/src/parsers/manifest/local/representation_index.ts +1 -2
  544. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +2 -3
  545. package/src/parsers/manifest/smooth/create_parser.ts +2 -1
  546. package/src/parsers/manifest/smooth/shared_smooth_segment_timeline.ts +2 -2
  547. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +3 -8
  548. package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +2 -2
  549. package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +2 -2
  550. package/src/parsers/texttracks/srt/html.ts +2 -2
  551. package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +3 -7
  552. package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.ts +4 -4
  553. package/src/parsers/texttracks/ttml/html/create_element.ts +1 -1
  554. package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +3 -3
  555. package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +1 -2
  556. package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +1 -2
  557. package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +11 -11
  558. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +5 -18
  559. package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +23 -28
  560. package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +9 -14
  561. package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +11 -11
  562. package/src/parsers/texttracks/webvtt/html/to_html.ts +9 -3
  563. package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +2 -2
  564. package/src/public_types.ts +7 -8
  565. package/src/tools/TextTrackRenderer/text_track_renderer.ts +1 -1
  566. package/src/transports/smooth/extract_timings_infos.ts +3 -3
  567. package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +30 -28
  568. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +38 -44
  569. package/src/utils/__tests__/array_find.test.ts +12 -12
  570. package/src/utils/__tests__/array_find_index.test.ts +13 -12
  571. package/src/utils/__tests__/array_includes.test.ts +7 -7
  572. package/src/utils/__tests__/assert.test.ts +19 -25
  573. package/src/utils/__tests__/base64.test.ts +18 -13
  574. package/src/utils/__tests__/event_emitter.test.ts +225 -50
  575. package/src/utils/__tests__/flat_map.test.ts +2 -6
  576. package/src/utils/__tests__/starts_with.test.ts +7 -8
  577. package/src/utils/array_find.ts +3 -7
  578. package/src/utils/array_find_index.ts +3 -7
  579. package/src/utils/array_includes.ts +1 -3
  580. package/src/utils/assert.ts +0 -2
  581. package/src/utils/base64.ts +3 -2
  582. package/src/utils/event_emitter.ts +1 -1
  583. package/src/utils/flat_map.ts +1 -2
  584. package/src/utils/id_generator.ts +0 -2
  585. package/src/utils/is_worker.ts +1 -1
  586. package/src/utils/logger.ts +1 -1
  587. package/src/utils/monotonic_timestamp.ts +2 -2
  588. package/src/utils/noop.ts +1 -2
  589. package/src/utils/object_assign.ts +1 -2
  590. package/src/utils/object_values.ts +1 -2
  591. package/src/utils/reference.ts +1 -1
  592. package/src/utils/request/xhr.ts +1 -1
  593. package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts.map +0 -1
  594. package/dist/commonjs/core/stream/representation/utils/downloading_queue.d.ts.map +0 -1
  595. package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts.map +0 -1
  596. package/dist/es2017/core/stream/representation/utils/downloading_queue.d.ts.map +0 -1
@@ -30,57 +30,28 @@ var __extends = (this && this.__extends) || (function () {
30
30
  };
31
31
  })();
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- var log_1 = require("../../../../log");
34
- var assert_1 = require("../../../../utils/assert");
35
- var event_emitter_1 = require("../../../../utils/event_emitter");
36
- var noop_1 = require("../../../../utils/noop");
37
- var object_assign_1 = require("../../../../utils/object_assign");
38
- var reference_1 = require("../../../../utils/reference");
39
- var task_canceller_1 = require("../../../../utils/task_canceller");
33
+ var log_1 = require("../../../log");
34
+ var assert_1 = require("../../../utils/assert");
35
+ var event_emitter_1 = require("../../../utils/event_emitter");
36
+ var noop_1 = require("../../../utils/noop");
37
+ var object_assign_1 = require("../../../utils/object_assign");
38
+ var reference_1 = require("../../../utils/reference");
39
+ var task_canceller_1 = require("../../../utils/task_canceller");
40
40
  /**
41
- * Class scheduling segment downloads for a single Representation.
42
- *
43
- * TODO The request scheduling abstractions might be simplified by integrating
44
- * the `DownloadingQueue` in the segment fetchers code, instead of having it as
45
- * an utilis of the `RepresentationStream` like here.
46
- * @class DownloadingQueue
41
+ * Class scheduling segment downloads as a FIFO queue.
47
42
  */
48
- var DownloadingQueue = /** @class */ (function (_super) {
49
- __extends(DownloadingQueue, _super);
43
+ var SegmentQueue = /** @class */ (function (_super) {
44
+ __extends(SegmentQueue, _super);
50
45
  /**
51
- * Create a new `DownloadingQueue`.
46
+ * Create a new `SegmentQueue`.
52
47
  *
53
- * @param {Object} content - The context of the Representation you want to
54
- * load segments for.
55
- * @param {Object} downloadQueue - Queue of segments you want to load.
56
48
  * @param {Object} segmentFetcher - Interface to facilitate the download of
57
49
  * segments.
58
- * @param {boolean} hasInitSegment - Declare that an initialization segment
59
- * will need to be downloaded.
60
- *
61
- * A `DownloadingQueue` ALWAYS wait for the initialization segment to be
62
- * loaded and parsed before parsing a media segment.
63
- *
64
- * In cases where no initialization segment exist, this would lead to the
65
- * `DownloadingQueue` waiting indefinitely for it.
66
- *
67
- * By setting that value to `false`, you anounce to the `DownloadingQueue`
68
- * that it should not wait for an initialization segment before parsing a
69
- * media segment.
70
50
  */
71
- function DownloadingQueue(content, downloadQueue, segmentFetcher, hasInitSegment) {
51
+ function SegmentQueue(segmentFetcher) {
72
52
  var _this = _super.call(this) || this;
73
- _this._content = content;
74
- _this._currentCanceller = null;
75
- _this._downloadQueue = downloadQueue;
76
- _this._initSegmentRequest = null;
77
- _this._mediaSegmentRequest = null;
78
53
  _this._segmentFetcher = segmentFetcher;
79
- _this._initSegmentInfoRef = new reference_1.default(undefined);
80
- _this._mediaSegmentAwaitingInitMetadata = null;
81
- if (!hasInitSegment) {
82
- _this._initSegmentInfoRef.setValue(null);
83
- }
54
+ _this._currentContentInfo = null;
84
55
  return _this;
85
56
  }
86
57
  /**
@@ -88,72 +59,116 @@ var DownloadingQueue = /** @class */ (function (_super) {
88
59
  * Returns `null` if no initialization segment request is pending.
89
60
  * @returns {Object | null}
90
61
  */
91
- DownloadingQueue.prototype.getRequestedInitSegment = function () {
92
- return this._initSegmentRequest === null ? null : this._initSegmentRequest.segment;
62
+ SegmentQueue.prototype.getRequestedInitSegment = function () {
63
+ var _a, _b, _c;
64
+ return (_c = (_b = (_a = this._currentContentInfo) === null || _a === void 0 ? void 0 : _a.initSegmentRequest) === null || _b === void 0 ? void 0 : _b.segment) !== null && _c !== void 0 ? _c : null;
93
65
  };
94
66
  /**
95
67
  * Returns the media segment currently being requested.
96
68
  * Returns `null` if no media segment request is pending.
97
69
  * @returns {Object | null}
98
70
  */
99
- DownloadingQueue.prototype.getRequestedMediaSegment = function () {
100
- return this._mediaSegmentRequest === null ? null : this._mediaSegmentRequest.segment;
71
+ SegmentQueue.prototype.getRequestedMediaSegment = function () {
72
+ var _a, _b, _c;
73
+ return (_c = (_b = (_a = this._currentContentInfo) === null || _a === void 0 ? void 0 : _a.mediaSegmentRequest) === null || _b === void 0 ? void 0 : _b.segment) !== null && _c !== void 0 ? _c : null;
101
74
  };
102
75
  /**
103
- * Start the current downloading queue, emitting events as it loads and parses
104
- * initialization and media segments.
76
+ * Return an object allowing to schedule segment requests linked to the given
77
+ * content.
78
+ * The `SegmentQueue` will emit events as it loads and parses initialization
79
+ * and media segments.
80
+ *
81
+ * Calling this method resets all previous queues that were previously started
82
+ * on the same instance.
83
+ *
84
+ * @param {Object} content - The context of the Representation you want to
85
+ * load segments for.
86
+ * @param {boolean} hasInitSegment - Declare that an initialization segment
87
+ * will need to be downloaded.
88
+ *
89
+ * A `SegmentQueue` ALWAYS wait for the initialization segment to be
90
+ * loaded and parsed before parsing a media segment.
91
+ *
92
+ * In cases where no initialization segment exist, this would lead to the
93
+ * `SegmentQueue` waiting indefinitely for it.
94
+ *
95
+ * By setting that value to `false`, you anounce to the `SegmentQueue`
96
+ * that it should not wait for an initialization segment before parsing a
97
+ * media segment.
98
+ * @returns {Object} - `SharedReference` on which the queue of segment for
99
+ * that content can be communicated and updated. See type for more
100
+ * information.
105
101
  */
106
- DownloadingQueue.prototype.start = function () {
102
+ SegmentQueue.prototype.resetForContent = function (content, hasInitSegment) {
107
103
  var _this = this;
108
- if (this._currentCanceller !== null) {
109
- return;
110
- }
111
- this._currentCanceller = new task_canceller_1.default();
104
+ var _a;
105
+ (_a = this._currentContentInfo) === null || _a === void 0 ? void 0 : _a.currentCanceller.cancel();
106
+ var downloadQueue = new reference_1.default({
107
+ initSegment: null,
108
+ segmentQueue: [],
109
+ });
110
+ var currentCanceller = new task_canceller_1.default();
111
+ currentCanceller.signal.register(function () {
112
+ downloadQueue.finish();
113
+ });
114
+ var currentContentInfo = {
115
+ content: content,
116
+ downloadQueue: downloadQueue,
117
+ initSegmentInfoRef: hasInitSegment
118
+ ? new reference_1.default(undefined)
119
+ : new reference_1.default(null),
120
+ currentCanceller: currentCanceller,
121
+ initSegmentRequest: null,
122
+ mediaSegmentRequest: null,
123
+ mediaSegmentAwaitingInitMetadata: null,
124
+ };
125
+ this._currentContentInfo = currentContentInfo;
112
126
  // Listen for asked media segments
113
- this._downloadQueue.onUpdate(function (queue) {
127
+ downloadQueue.onUpdate(function (queue) {
114
128
  var segmentQueue = queue.segmentQueue;
115
129
  if (segmentQueue.length > 0 &&
116
- segmentQueue[0].segment.id === _this._mediaSegmentAwaitingInitMetadata) {
130
+ segmentQueue[0].segment.id ===
131
+ currentContentInfo.mediaSegmentAwaitingInitMetadata) {
117
132
  // The most needed segment is still the same one, and there's no need to
118
133
  // update its priority as the request already ended, just quit.
119
134
  return;
120
135
  }
121
- var currentSegmentRequest = _this._mediaSegmentRequest;
136
+ var currentSegmentRequest = currentContentInfo.mediaSegmentRequest;
122
137
  if (segmentQueue.length === 0) {
123
138
  if (currentSegmentRequest === null) {
124
139
  // There's nothing to load but there's already no request pending.
125
140
  return;
126
141
  }
127
- log_1.default.debug("Stream: no more media segment to request. Cancelling queue.", _this._content.adaptation.type);
128
- _this._restartMediaSegmentDownloadingQueue();
142
+ log_1.default.debug("SQ: no more media segment to request. Cancelling queue.", content.adaptation.type);
143
+ _this._restartMediaSegmentDownloadingQueue(currentContentInfo);
129
144
  return;
130
145
  }
131
146
  else if (currentSegmentRequest === null) {
132
147
  // There's no request although there are needed segments: start requests
133
- log_1.default.debug("Stream: Media segments now need to be requested. Starting queue.", _this._content.adaptation.type, segmentQueue.length);
134
- _this._restartMediaSegmentDownloadingQueue();
148
+ log_1.default.debug("SQ: Media segments now need to be requested. Starting queue.", content.adaptation.type, segmentQueue.length);
149
+ _this._restartMediaSegmentDownloadingQueue(currentContentInfo);
135
150
  return;
136
151
  }
137
152
  else {
138
153
  var nextItem = segmentQueue[0];
139
154
  if (currentSegmentRequest.segment.id !== nextItem.segment.id) {
140
155
  // The most important request if for another segment, request it
141
- log_1.default.debug("Stream: Next media segment changed, cancelling previous", _this._content.adaptation.type);
142
- _this._restartMediaSegmentDownloadingQueue();
156
+ log_1.default.debug("SQ: Next media segment changed, cancelling previous", content.adaptation.type);
157
+ _this._restartMediaSegmentDownloadingQueue(currentContentInfo);
143
158
  return;
144
159
  }
145
160
  if (currentSegmentRequest.priority !== nextItem.priority) {
146
161
  // The priority of the most important request has changed, update it
147
- log_1.default.debug("Stream: Priority of next media segment changed, updating", _this._content.adaptation.type, currentSegmentRequest.priority, nextItem.priority);
162
+ log_1.default.debug("SQ: Priority of next media segment changed, updating", content.adaptation.type, currentSegmentRequest.priority, nextItem.priority);
148
163
  _this._segmentFetcher.updatePriority(currentSegmentRequest.request, nextItem.priority);
149
164
  }
150
165
  return;
151
166
  }
152
- }, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
167
+ }, { emitCurrentValue: true, clearSignal: currentCanceller.signal });
153
168
  // Listen for asked init segment
154
- this._downloadQueue.onUpdate(function (next) {
169
+ downloadQueue.onUpdate(function (next) {
155
170
  var _a;
156
- var initSegmentRequest = _this._initSegmentRequest;
171
+ var initSegmentRequest = currentContentInfo.initSegmentRequest;
157
172
  if (next.initSegment !== null && initSegmentRequest !== null) {
158
173
  if (next.initSegment.priority !== initSegmentRequest.priority) {
159
174
  _this._segmentFetcher.updatePriority(initSegmentRequest.request, next.initSegment.priority);
@@ -164,42 +179,49 @@ var DownloadingQueue = /** @class */ (function (_super) {
164
179
  return;
165
180
  }
166
181
  if (next.initSegment === null) {
167
- log_1.default.debug("Stream: no more init segment to request. Cancelling queue.", _this._content.adaptation.type);
182
+ log_1.default.debug("SQ: no more init segment to request. Cancelling queue.", content.adaptation.type);
168
183
  }
169
- _this._restartInitSegmentDownloadingQueue(next.initSegment);
170
- }, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
184
+ _this._restartInitSegmentDownloadingQueue(currentContentInfo, next.initSegment);
185
+ }, { emitCurrentValue: true, clearSignal: currentCanceller.signal });
186
+ return downloadQueue;
171
187
  };
172
- DownloadingQueue.prototype.stop = function () {
188
+ /**
189
+ * Stop the currently-active `SegmentQueue`.
190
+ *
191
+ * Do nothing if no queue is active.
192
+ */
193
+ SegmentQueue.prototype.stop = function () {
173
194
  var _a;
174
- (_a = this._currentCanceller) === null || _a === void 0 ? void 0 : _a.cancel();
175
- this._currentCanceller = null;
195
+ (_a = this._currentContentInfo) === null || _a === void 0 ? void 0 : _a.currentCanceller.cancel();
196
+ this._currentContentInfo = null;
176
197
  };
177
198
  /**
178
199
  * Internal logic performing media segment requests.
179
200
  */
180
- DownloadingQueue.prototype._restartMediaSegmentDownloadingQueue = function () {
201
+ SegmentQueue.prototype._restartMediaSegmentDownloadingQueue = function (contentInfo) {
181
202
  var _this = this;
182
- if (this._mediaSegmentRequest !== null) {
183
- this._mediaSegmentRequest.canceller.cancel();
203
+ if (contentInfo.mediaSegmentRequest !== null) {
204
+ contentInfo.mediaSegmentRequest.canceller.cancel();
184
205
  }
185
- var segmentQueue = this._downloadQueue.getValue().segmentQueue;
206
+ var downloadQueue = contentInfo.downloadQueue, content = contentInfo.content, initSegmentInfoRef = contentInfo.initSegmentInfoRef, currentCanceller = contentInfo.currentCanceller;
207
+ var segmentQueue = downloadQueue.getValue().segmentQueue;
186
208
  var currentNeededSegment = segmentQueue[0];
187
209
  var recursivelyRequestSegments = function (startingSegment) {
188
- if (_this._currentCanceller !== null && _this._currentCanceller.isUsed()) {
189
- _this._mediaSegmentRequest = null;
210
+ if (currentCanceller !== null && currentCanceller.isUsed()) {
211
+ contentInfo.mediaSegmentRequest = null;
190
212
  return;
191
213
  }
192
214
  if (startingSegment === undefined) {
193
- _this._mediaSegmentRequest = null;
215
+ contentInfo.mediaSegmentRequest = null;
194
216
  _this.trigger("emptyQueue", null);
195
217
  return;
196
218
  }
197
219
  var canceller = new task_canceller_1.default();
198
- var unlinkCanceller = _this._currentCanceller === null
220
+ var unlinkCanceller = currentCanceller === null
199
221
  ? noop_1.default
200
- : canceller.linkToSignal(_this._currentCanceller.signal);
222
+ : canceller.linkToSignal(currentCanceller.signal);
201
223
  var segment = startingSegment.segment, priority = startingSegment.priority;
202
- var context = (0, object_assign_1.default)({ segment: segment }, _this._content);
224
+ var context = (0, object_assign_1.default)({ segment: segment }, content);
203
225
  /**
204
226
  * If `true` , the current task has either errored, finished, or was
205
227
  * cancelled.
@@ -211,12 +233,12 @@ var DownloadingQueue = /** @class */ (function (_super) {
211
233
  */
212
234
  var isWaitingOnInitSegment = false;
213
235
  canceller.signal.register(function () {
214
- _this._mediaSegmentRequest = null;
236
+ contentInfo.mediaSegmentRequest = null;
215
237
  if (isComplete) {
216
238
  return;
217
239
  }
218
- if (_this._mediaSegmentAwaitingInitMetadata === segment.id) {
219
- _this._mediaSegmentAwaitingInitMetadata = null;
240
+ if (contentInfo.mediaSegmentAwaitingInitMetadata === segment.id) {
241
+ contentInfo.mediaSegmentAwaitingInitMetadata = null;
220
242
  }
221
243
  isComplete = true;
222
244
  isWaitingOnInitSegment = false;
@@ -226,7 +248,7 @@ var DownloadingQueue = /** @class */ (function (_super) {
226
248
  _this.trigger("parsedMediaSegment", (0, object_assign_1.default)({}, parsed, { segment: segment }));
227
249
  };
228
250
  var continueToNextSegment = function () {
229
- var lastQueue = _this._downloadQueue.getValue().segmentQueue;
251
+ var lastQueue = downloadQueue.getValue().segmentQueue;
230
252
  if (lastQueue.length === 0) {
231
253
  isComplete = true;
232
254
  _this.trigger("emptyQueue", null);
@@ -252,14 +274,14 @@ var DownloadingQueue = /** @class */ (function (_super) {
252
274
  * restarted later.
253
275
  */
254
276
  beforeInterrupted: function () {
255
- log_1.default.info("Stream: segment request interrupted temporarly.", segment.id, segment.time);
277
+ log_1.default.info("SQ: segment request interrupted temporarly.", segment.id, segment.time);
256
278
  },
257
279
  /**
258
280
  * Callback called when a decodable chunk of the segment is available.
259
281
  * @param {Function} parse - Function allowing to parse the segment.
260
282
  */
261
283
  onChunk: function (parse) {
262
- var initTimescale = _this._initSegmentInfoRef.getValue();
284
+ var initTimescale = initSegmentInfoRef.getValue();
263
285
  if (initTimescale !== undefined) {
264
286
  emitChunk(parse(initTimescale !== null && initTimescale !== void 0 ? initTimescale : undefined));
265
287
  }
@@ -269,7 +291,7 @@ var DownloadingQueue = /** @class */ (function (_super) {
269
291
  // but I found it globally clearer to segregate the two cases,
270
292
  // especially to always have a meaningful `isWaitingOnInitSegment`
271
293
  // boolean which is a very important variable.
272
- _this._initSegmentInfoRef.waitUntilDefined(function (actualTimescale) {
294
+ initSegmentInfoRef.waitUntilDefined(function (actualTimescale) {
273
295
  emitChunk(parse(actualTimescale !== null && actualTimescale !== void 0 ? actualTimescale : undefined));
274
296
  }, { clearSignal: canceller.signal });
275
297
  }
@@ -280,9 +302,9 @@ var DownloadingQueue = /** @class */ (function (_super) {
280
302
  _this.trigger("fullyLoadedSegment", segment);
281
303
  }
282
304
  else {
283
- _this._mediaSegmentAwaitingInitMetadata = segment.id;
284
- _this._initSegmentInfoRef.waitUntilDefined(function () {
285
- _this._mediaSegmentAwaitingInitMetadata = null;
305
+ contentInfo.mediaSegmentAwaitingInitMetadata = segment.id;
306
+ initSegmentInfoRef.waitUntilDefined(function () {
307
+ contentInfo.mediaSegmentAwaitingInitMetadata = null;
286
308
  isWaitingOnInitSegment = false;
287
309
  _this.trigger("fullyLoadedSegment", segment);
288
310
  }, { clearSignal: canceller.signal });
@@ -294,9 +316,9 @@ var DownloadingQueue = /** @class */ (function (_super) {
294
316
  */
295
317
  beforeEnded: function () {
296
318
  unlinkCanceller();
297
- _this._mediaSegmentRequest = null;
319
+ contentInfo.mediaSegmentRequest = null;
298
320
  if (isWaitingOnInitSegment) {
299
- _this._initSegmentInfoRef.waitUntilDefined(continueToNextSegment, {
321
+ initSegmentInfoRef.waitUntilDefined(continueToNextSegment, {
300
322
  clearSignal: canceller.signal,
301
323
  });
302
324
  }
@@ -313,31 +335,30 @@ var DownloadingQueue = /** @class */ (function (_super) {
313
335
  _this.trigger("error", error);
314
336
  }
315
337
  });
316
- _this._mediaSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
338
+ contentInfo.mediaSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
317
339
  };
318
340
  recursivelyRequestSegments(currentNeededSegment);
319
341
  };
320
342
  /**
321
343
  * Internal logic performing initialization segment requests.
344
+ * @param {Object} contentInfo
322
345
  * @param {Object} queuedInitSegment
323
346
  */
324
- DownloadingQueue.prototype._restartInitSegmentDownloadingQueue = function (queuedInitSegment) {
347
+ SegmentQueue.prototype._restartInitSegmentDownloadingQueue = function (contentInfo, queuedInitSegment) {
325
348
  var _this = this;
326
- if (this._currentCanceller !== null && this._currentCanceller.isUsed()) {
327
- return;
328
- }
329
- if (this._initSegmentRequest !== null) {
330
- this._initSegmentRequest.canceller.cancel();
349
+ var content = contentInfo.content, initSegmentInfoRef = contentInfo.initSegmentInfoRef;
350
+ if (contentInfo.initSegmentRequest !== null) {
351
+ contentInfo.initSegmentRequest.canceller.cancel();
331
352
  }
332
353
  if (queuedInitSegment === null) {
333
354
  return;
334
355
  }
335
356
  var canceller = new task_canceller_1.default();
336
- var unlinkCanceller = this._currentCanceller === null
357
+ var unlinkCanceller = contentInfo.currentCanceller === null
337
358
  ? noop_1.default
338
- : canceller.linkToSignal(this._currentCanceller.signal);
359
+ : canceller.linkToSignal(contentInfo.currentCanceller.signal);
339
360
  var segment = queuedInitSegment.segment, priority = queuedInitSegment.priority;
340
- var context = (0, object_assign_1.default)({ segment: segment }, this._content);
361
+ var context = (0, object_assign_1.default)({ segment: segment }, content);
341
362
  /**
342
363
  * If `true` , the current task has either errored, finished, or was
343
364
  * cancelled.
@@ -348,11 +369,11 @@ var DownloadingQueue = /** @class */ (function (_super) {
348
369
  _this.trigger("requestRetry", { segment: segment, error: err });
349
370
  },
350
371
  beforeInterrupted: function () {
351
- log_1.default.info("Stream: init segment request interrupted temporarly.", segment.id);
372
+ log_1.default.info("SQ: init segment request interrupted temporarly.", segment.id);
352
373
  },
353
374
  beforeEnded: function () {
354
375
  unlinkCanceller();
355
- _this._initSegmentRequest = null;
376
+ contentInfo.initSegmentRequest = null;
356
377
  isComplete = true;
357
378
  },
358
379
  onChunk: function (parse) {
@@ -361,7 +382,7 @@ var DownloadingQueue = /** @class */ (function (_super) {
361
382
  (0, assert_1.default)(parsed.segmentType === "init", "Should have loaded an init segment.");
362
383
  _this.trigger("parsedInitSegment", (0, object_assign_1.default)({}, parsed, { segment: segment }));
363
384
  if (parsed.segmentType === "init") {
364
- _this._initSegmentInfoRef.setValue((_a = parsed.initTimescale) !== null && _a !== void 0 ? _a : null);
385
+ initSegmentInfoRef.setValue((_a = parsed.initTimescale) !== null && _a !== void 0 ? _a : null);
365
386
  }
366
387
  },
367
388
  onAllChunksReceived: function () {
@@ -377,14 +398,14 @@ var DownloadingQueue = /** @class */ (function (_super) {
377
398
  }
378
399
  });
379
400
  canceller.signal.register(function () {
380
- _this._initSegmentRequest = null;
401
+ contentInfo.initSegmentRequest = null;
381
402
  if (isComplete) {
382
403
  return;
383
404
  }
384
405
  isComplete = true;
385
406
  });
386
- this._initSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
407
+ contentInfo.initSegmentRequest = { segment: segment, priority: priority, request: request, canceller: canceller };
387
408
  };
388
- return DownloadingQueue;
409
+ return SegmentQueue;
389
410
  }(event_emitter_1.default));
390
- exports.default = DownloadingQueue;
411
+ exports.default = SegmentQueue;
@@ -17,22 +17,22 @@ import type { ITransportPipelines } from "../../../transports";
17
17
  import type { CancellationSignal } from "../../../utils/task_canceller";
18
18
  import type CmcdDataBuilder from "../../cmcd";
19
19
  import type { IBufferType } from "../../segment_sinks";
20
- import type { IPrioritizedSegmentFetcher } from "./prioritized_segment_fetcher";
21
20
  import type { ISegmentFetcherLifecycleCallbacks } from "./segment_fetcher";
21
+ import SegmentQueue from "./segment_queue";
22
22
  /**
23
23
  * Interact with the transport pipelines to download segments with the right
24
24
  * priority.
25
25
  *
26
- * @class SegmentFetcherCreator
26
+ * @class SegmentQueueCreator
27
27
  */
28
- export default class SegmentFetcherCreator {
28
+ export default class SegmentQueueCreator {
29
29
  /**
30
30
  * Transport pipelines of the currently choosen streaming protocol (e.g. DASH,
31
31
  * Smooth etc.).
32
32
  */
33
33
  private readonly _transport;
34
34
  /**
35
- * `TaskPrioritizer` linked to this SegmentFetcherCreator.
35
+ * `TaskPrioritizer` linked to this SegmentQueueCreator.
36
36
  *
37
37
  * Note: this is typed as `any` because segment loaders / parsers can use
38
38
  * different types depending on the type of buffer. We could maybe be smarter
@@ -41,27 +41,32 @@ export default class SegmentFetcherCreator {
41
41
  */
42
42
  private readonly _prioritizer;
43
43
  /**
44
- * Options used by the SegmentFetcherCreator, e.g. to allow configuration on
44
+ * Options used by the SegmentQueueCreator, e.g. to allow configuration on
45
45
  * segment retries (number of retries maximum, default delay and so on).
46
46
  */
47
47
  private readonly _backoffOptions;
48
+ /** Class allowing to select a CDN when multiple are available for a given resource. */
48
49
  private readonly _cdnPrioritizer;
49
50
  private _cmcdDataBuilder;
50
51
  /**
51
52
  * @param {Object} transport
53
+ * @param {Object} options
54
+ * @param {Object} cancelSignal
52
55
  */
53
- constructor(transport: ITransportPipelines, cmcdDataBuilder: CmcdDataBuilder | null, options: ISegmentFetcherCreatorBackoffOptions, cancelSignal: CancellationSignal);
56
+ constructor(transport: ITransportPipelines, cmcdDataBuilder: CmcdDataBuilder | null, options: ISegmentQueueCreatorBackoffOptions, cancelSignal: CancellationSignal);
54
57
  /**
55
- * Create a segment fetcher, allowing to easily perform segment requests.
58
+ * Create a `SegmentQueue`, allowing to easily perform segment requests.
56
59
  * @param {string} bufferType - The type of buffer concerned (e.g. "audio",
57
60
  * "video", etc.)
58
61
  * @param {Object} eventListeners
59
- * @returns {Object}
62
+ * @returns {Object} - `SegmentQueue`, which is an abstraction allowing to
63
+ * perform a queue of segment requests for a given media type (here defined by
64
+ * `bufferType`) with associated priorities.
60
65
  */
61
- createSegmentFetcher(bufferType: IBufferType, eventListeners: ISegmentFetcherLifecycleCallbacks): IPrioritizedSegmentFetcher<unknown>;
66
+ createSegmentQueue(bufferType: IBufferType, eventListeners: ISegmentFetcherLifecycleCallbacks): SegmentQueue<unknown>;
62
67
  }
63
- /** Options used by the `SegmentFetcherCreator`. */
64
- export interface ISegmentFetcherCreatorBackoffOptions {
68
+ /** Options used by the `SegmentQueueCreator`. */
69
+ export interface ISegmentQueueCreatorBackoffOptions {
65
70
  /**
66
71
  * Whether the content is played in a low-latency mode.
67
72
  * This has an impact on default backoff delays.
@@ -76,6 +81,14 @@ export interface ISegmentFetcherCreatorBackoffOptions {
76
81
  * `undefined` will lead to a default, large, timeout being used.
77
82
  */
78
83
  requestTimeout: number | undefined;
84
+ /**
85
+ * Timeout for just the "connection" part of the request, before data is
86
+ * actually being transferred.
87
+ *
88
+ * Setting a lower `connectionTimeout` than a `requestTimeout` allows to
89
+ * fail faster without having to take into account a potentially low
90
+ * bandwidth.
91
+ */
79
92
  connectionTimeout: number | undefined;
80
93
  }
81
- //# sourceMappingURL=segment_fetcher_creator.d.ts.map
94
+ //# sourceMappingURL=segment_queue_creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment_queue_creator.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/segment_queue_creator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,eAAe,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAG3C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IAErE,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;OAIG;gBAED,SAAS,EAAE,mBAAmB,EAC9B,eAAe,EAAE,eAAe,GAAG,IAAI,EACvC,OAAO,EAAE,kCAAkC,EAC3C,YAAY,EAAE,kBAAkB;IAiBlC;;;;;;;;OAQG;IACI,kBAAkB,CACvB,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,iCAAiC,GAChD,YAAY,CAAC,OAAO,CAAC;CAmBzB;AAED,iDAAiD;AACjD,MAAM,WAAW,kCAAkC;IACjD;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;;;OAOG;IACH,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC"}
@@ -19,18 +19,21 @@ var config_1 = require("../../../config");
19
19
  var cdn_prioritizer_1 = require("../cdn_prioritizer");
20
20
  var prioritized_segment_fetcher_1 = require("./prioritized_segment_fetcher");
21
21
  var segment_fetcher_1 = require("./segment_fetcher");
22
+ var segment_queue_1 = require("./segment_queue");
22
23
  var task_prioritizer_1 = require("./task_prioritizer");
23
24
  /**
24
25
  * Interact with the transport pipelines to download segments with the right
25
26
  * priority.
26
27
  *
27
- * @class SegmentFetcherCreator
28
+ * @class SegmentQueueCreator
28
29
  */
29
- var SegmentFetcherCreator = /** @class */ (function () {
30
+ var SegmentQueueCreator = /** @class */ (function () {
30
31
  /**
31
32
  * @param {Object} transport
33
+ * @param {Object} options
34
+ * @param {Object} cancelSignal
32
35
  */
33
- function SegmentFetcherCreator(transport, cmcdDataBuilder, options, cancelSignal) {
36
+ function SegmentQueueCreator(transport, cmcdDataBuilder, options, cancelSignal) {
34
37
  var cdnPrioritizer = new cdn_prioritizer_1.default(cancelSignal);
35
38
  var _a = config_1.default.getCurrent(), MIN_CANCELABLE_PRIORITY = _a.MIN_CANCELABLE_PRIORITY, MAX_HIGH_PRIORITY_LEVEL = _a.MAX_HIGH_PRIORITY_LEVEL;
36
39
  this._transport = transport;
@@ -45,13 +48,15 @@ var SegmentFetcherCreator = /** @class */ (function () {
45
48
  this._cmcdDataBuilder = cmcdDataBuilder;
46
49
  }
47
50
  /**
48
- * Create a segment fetcher, allowing to easily perform segment requests.
51
+ * Create a `SegmentQueue`, allowing to easily perform segment requests.
49
52
  * @param {string} bufferType - The type of buffer concerned (e.g. "audio",
50
53
  * "video", etc.)
51
54
  * @param {Object} eventListeners
52
- * @returns {Object}
55
+ * @returns {Object} - `SegmentQueue`, which is an abstraction allowing to
56
+ * perform a queue of segment requests for a given media type (here defined by
57
+ * `bufferType`) with associated priorities.
53
58
  */
54
- SegmentFetcherCreator.prototype.createSegmentFetcher = function (bufferType, eventListeners) {
59
+ SegmentQueueCreator.prototype.createSegmentQueue = function (bufferType, eventListeners) {
55
60
  var requestOptions = (0, segment_fetcher_1.getSegmentFetcherRequestOptions)(this._backoffOptions);
56
61
  var pipelines = this._transport[bufferType];
57
62
  // Types are very complicated here as they are per-type of buffer.
@@ -63,8 +68,9 @@ var SegmentFetcherCreator = /** @class */ (function () {
63
68
  eventListeners: eventListeners,
64
69
  requestOptions: requestOptions,
65
70
  });
66
- return (0, prioritized_segment_fetcher_1.default)(this._prioritizer, segmentFetcher);
71
+ var prioritizedSegmentFetcher = (0, prioritized_segment_fetcher_1.default)(this._prioritizer, segmentFetcher);
72
+ return new segment_queue_1.default(prioritizedSegmentFetcher);
67
73
  };
68
- return SegmentFetcherCreator;
74
+ return SegmentQueueCreator;
69
75
  }());
70
- exports.default = SegmentFetcherCreator;
76
+ exports.default = SegmentQueueCreator;
@@ -1,4 +1,13 @@
1
1
  import type { CancellationSignal } from "../../../utils/task_canceller";
2
+ /**
3
+ * Utilitary class which allows to perform multiple tasks at once each with an
4
+ * associated priority.
5
+ *
6
+ * This class will then schedule the given tasks in the right order based on the
7
+ * priorities.
8
+ *
9
+ * @class TaskPrioritizer
10
+ */
2
11
  export default class TaskPrioritizer<T> {
3
12
  /**
4
13
  * Priority of the most prioritary task currently running.
@@ -1 +1 @@
1
- {"version":3,"file":"task_prioritizer.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/task_prioritizer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,MAAM,CAAC,OAAO,OAAO,eAAe,CAAC,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAA6B;IAClD,gCAAgC;IAChC,OAAO,CAAC,aAAa,CAA6B;IAClD,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAA4B;IAElD;;OAEG;gBACS,EAAE,aAAa,EAAE,EAAE,mBAAmB;IAclD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,MAAM,CACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,yBAAyB,EACpC,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAoFb,OAAO,CAAC,QAAQ;IA2BhB;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwElE;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAclC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAUnC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;CAMpC;AAkBD;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAwBhF,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,aAAa,EAAE,yBAAyB,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,iBAAiB,IAAI,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,IAAI,IAAI,CAAC;CACrB"}
1
+ {"version":3,"file":"task_prioritizer.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/segment/task_prioritizer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe,CAAC,CAAC;IACpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,2EAA2E;IAC3E,OAAO,CAAC,aAAa,CAA6B;IAClD,gCAAgC;IAChC,OAAO,CAAC,aAAa,CAA6B;IAClD,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAA4B;IAElD;;OAEG;gBACS,EAAE,aAAa,EAAE,EAAE,mBAAmB;IAclD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,MAAM,CACX,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,yBAAyB,EACpC,YAAY,EAAE,kBAAkB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAoFb,OAAO,CAAC,QAAQ;IA2BhB;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwElE;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAalC;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAUnC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;CAMpC;AAkBD;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAwBhF,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,aAAa,EAAE,yBAAyB,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,iBAAiB,IAAI,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,IAAI,IAAI,CAAC;CACrB"}