rx-player 4.5.0-dev.2026033100 → 4.5.0-dev.2026041501

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 (251) hide show
  1. package/CHANGELOG.md +22 -5
  2. package/VERSION +1 -1
  3. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  6. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  7. package/dist/commonjs/compat/can_patch_out_pssh.d.ts +42 -0
  8. package/dist/commonjs/compat/can_patch_out_pssh.d.ts.map +1 -0
  9. package/dist/commonjs/compat/can_patch_out_pssh.js +53 -0
  10. package/dist/commonjs/compat/env_detector.d.ts +2 -0
  11. package/dist/commonjs/compat/env_detector.d.ts.map +1 -1
  12. package/dist/commonjs/compat/env_detector.js +5 -0
  13. package/dist/commonjs/core/adaptive/network_analyzer.d.ts +1 -2
  14. package/dist/commonjs/core/adaptive/network_analyzer.d.ts.map +1 -1
  15. package/dist/commonjs/core/adaptive/network_analyzer.js +3 -3
  16. package/dist/commonjs/core/adaptive/utils/representation_score_calculator.js +2 -2
  17. package/dist/commonjs/core/cmcd/cmcd_data_builder.d.ts.map +1 -1
  18. package/dist/commonjs/core/cmcd/cmcd_data_builder.js +9 -3
  19. package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -1
  20. package/dist/commonjs/core/entry/content_preparer.js +5 -7
  21. package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -1
  22. package/dist/commonjs/core/entry/core_entry.js +6 -2
  23. package/dist/commonjs/core/entry/core_text_displayer_interface.js +3 -3
  24. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts.map +1 -1
  25. package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +12 -0
  26. package/dist/commonjs/core/fetchers/thumbnails/thumbnail_fetcher.js +1 -1
  27. package/dist/commonjs/core/fetchers/utils/schedule_request.d.ts.map +1 -1
  28. package/dist/commonjs/core/fetchers/utils/schedule_request.js +4 -3
  29. package/dist/commonjs/core/segment_sinks/garbage_collector.d.ts +0 -2
  30. package/dist/commonjs/core/segment_sinks/garbage_collector.d.ts.map +1 -1
  31. package/dist/commonjs/core/segment_sinks/garbage_collector.js +0 -3
  32. package/dist/commonjs/core/segment_sinks/implementations/text/text_segment_sink.d.ts +1 -1
  33. package/dist/commonjs/core/segment_sinks/implementations/text/text_segment_sink.d.ts.map +1 -1
  34. package/dist/commonjs/core/segment_sinks/implementations/text/text_segment_sink.js +2 -2
  35. package/dist/commonjs/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  36. package/dist/commonjs/core/stream/adaptation/adaptation_stream.js +6 -6
  37. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  38. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +37 -40
  39. package/dist/commonjs/default_config.d.ts +5 -0
  40. package/dist/commonjs/default_config.d.ts.map +1 -1
  41. package/dist/commonjs/default_config.js +5 -0
  42. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  43. package/dist/commonjs/main_thread/api/public_api.js +23 -16
  44. package/dist/commonjs/main_thread/decrypt/content_decryptor.d.ts.map +1 -1
  45. package/dist/commonjs/main_thread/decrypt/content_decryptor.js +4 -1
  46. package/dist/commonjs/main_thread/decrypt/session_events_listener.js +1 -1
  47. package/dist/commonjs/main_thread/decrypt/set_server_certificate.d.ts +2 -0
  48. package/dist/commonjs/main_thread/decrypt/set_server_certificate.d.ts.map +1 -1
  49. package/dist/commonjs/main_thread/decrypt/set_server_certificate.js +4 -0
  50. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +0 -8
  51. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  52. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +58 -50
  53. package/dist/commonjs/main_thread/init/utils/stream_events_emitter/stream_events_emitter.d.ts +35 -5
  54. package/dist/commonjs/main_thread/init/utils/stream_events_emitter/stream_events_emitter.d.ts.map +1 -1
  55. package/dist/commonjs/main_thread/init/utils/stream_events_emitter/stream_events_emitter.js +60 -19
  56. package/dist/commonjs/main_thread/render_thumbnail.d.ts.map +1 -1
  57. package/dist/commonjs/main_thread/render_thumbnail.js +4 -0
  58. package/dist/commonjs/main_thread/tracks_store/media_element_tracks_store.d.ts.map +1 -1
  59. package/dist/commonjs/main_thread/tracks_store/media_element_tracks_store.js +1 -0
  60. package/dist/commonjs/main_thread/tracks_store/tracks_store.d.ts +1 -1
  61. package/dist/commonjs/main_thread/tracks_store/tracks_store.js +1 -1
  62. package/dist/{es2017/parsers/containers/isobmff/take_pssh_out.d.ts → commonjs/parsers/containers/isobmff/extract_pssh.d.ts} +6 -4
  63. package/dist/commonjs/parsers/containers/isobmff/extract_pssh.d.ts.map +1 -0
  64. package/dist/commonjs/parsers/containers/isobmff/{take_pssh_out.js → extract_pssh.js} +22 -17
  65. package/dist/commonjs/parsers/containers/isobmff/index.d.ts +2 -2
  66. package/dist/commonjs/parsers/containers/isobmff/index.d.ts.map +1 -1
  67. package/dist/commonjs/parsers/containers/isobmff/index.js +4 -4
  68. package/dist/commonjs/playback_observer/core_playback_observer.d.ts +4 -4
  69. package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +1 -1
  70. package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts +1 -2
  71. package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts.map +1 -1
  72. package/dist/commonjs/transports/dash/segment_parser.js +1 -1
  73. package/dist/commonjs/transports/local/segment_parser.js +1 -1
  74. package/dist/commonjs/utils/test-utils.d.ts +30 -0
  75. package/dist/commonjs/utils/test-utils.d.ts.map +1 -0
  76. package/dist/commonjs/utils/test-utils.js +79 -0
  77. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  78. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  79. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  80. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  81. package/dist/es2017/compat/can_patch_out_pssh.d.ts +42 -0
  82. package/dist/es2017/compat/can_patch_out_pssh.d.ts.map +1 -0
  83. package/dist/es2017/compat/can_patch_out_pssh.js +50 -0
  84. package/dist/es2017/compat/env_detector.d.ts +2 -0
  85. package/dist/es2017/compat/env_detector.d.ts.map +1 -1
  86. package/dist/es2017/compat/env_detector.js +5 -0
  87. package/dist/es2017/core/adaptive/network_analyzer.d.ts +1 -2
  88. package/dist/es2017/core/adaptive/network_analyzer.d.ts.map +1 -1
  89. package/dist/es2017/core/adaptive/network_analyzer.js +3 -3
  90. package/dist/es2017/core/adaptive/utils/representation_score_calculator.js +2 -2
  91. package/dist/es2017/core/cmcd/cmcd_data_builder.d.ts.map +1 -1
  92. package/dist/es2017/core/cmcd/cmcd_data_builder.js +9 -3
  93. package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -1
  94. package/dist/es2017/core/entry/content_preparer.js +3 -5
  95. package/dist/es2017/core/entry/core_entry.d.ts.map +1 -1
  96. package/dist/es2017/core/entry/core_entry.js +6 -2
  97. package/dist/es2017/core/entry/core_text_displayer_interface.js +3 -3
  98. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts.map +1 -1
  99. package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +12 -0
  100. package/dist/es2017/core/fetchers/thumbnails/thumbnail_fetcher.js +1 -1
  101. package/dist/es2017/core/fetchers/utils/schedule_request.d.ts.map +1 -1
  102. package/dist/es2017/core/fetchers/utils/schedule_request.js +2 -3
  103. package/dist/es2017/core/segment_sinks/garbage_collector.d.ts +0 -2
  104. package/dist/es2017/core/segment_sinks/garbage_collector.d.ts.map +1 -1
  105. package/dist/es2017/core/segment_sinks/garbage_collector.js +0 -3
  106. package/dist/es2017/core/segment_sinks/implementations/text/text_segment_sink.d.ts +1 -1
  107. package/dist/es2017/core/segment_sinks/implementations/text/text_segment_sink.d.ts.map +1 -1
  108. package/dist/es2017/core/segment_sinks/implementations/text/text_segment_sink.js +2 -2
  109. package/dist/es2017/core/stream/adaptation/adaptation_stream.d.ts.map +1 -1
  110. package/dist/es2017/core/stream/adaptation/adaptation_stream.js +6 -6
  111. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  112. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +40 -39
  113. package/dist/es2017/default_config.d.ts +5 -0
  114. package/dist/es2017/default_config.d.ts.map +1 -1
  115. package/dist/es2017/default_config.js +5 -0
  116. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  117. package/dist/es2017/main_thread/api/public_api.js +20 -13
  118. package/dist/es2017/main_thread/decrypt/content_decryptor.d.ts.map +1 -1
  119. package/dist/es2017/main_thread/decrypt/content_decryptor.js +4 -1
  120. package/dist/es2017/main_thread/decrypt/session_events_listener.js +1 -1
  121. package/dist/es2017/main_thread/decrypt/set_server_certificate.d.ts +2 -0
  122. package/dist/es2017/main_thread/decrypt/set_server_certificate.d.ts.map +1 -1
  123. package/dist/es2017/main_thread/decrypt/set_server_certificate.js +4 -0
  124. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +0 -8
  125. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  126. package/dist/es2017/main_thread/init/media_source_content_initializer.js +58 -50
  127. package/dist/es2017/main_thread/init/utils/stream_events_emitter/stream_events_emitter.d.ts +35 -5
  128. package/dist/es2017/main_thread/init/utils/stream_events_emitter/stream_events_emitter.d.ts.map +1 -1
  129. package/dist/es2017/main_thread/init/utils/stream_events_emitter/stream_events_emitter.js +60 -19
  130. package/dist/es2017/main_thread/render_thumbnail.d.ts.map +1 -1
  131. package/dist/es2017/main_thread/render_thumbnail.js +4 -0
  132. package/dist/es2017/main_thread/tracks_store/media_element_tracks_store.d.ts.map +1 -1
  133. package/dist/es2017/main_thread/tracks_store/media_element_tracks_store.js +1 -0
  134. package/dist/es2017/main_thread/tracks_store/tracks_store.d.ts +1 -1
  135. package/dist/es2017/main_thread/tracks_store/tracks_store.js +1 -1
  136. package/dist/{commonjs/parsers/containers/isobmff/take_pssh_out.d.ts → es2017/parsers/containers/isobmff/extract_pssh.d.ts} +6 -4
  137. package/dist/es2017/parsers/containers/isobmff/extract_pssh.d.ts.map +1 -0
  138. package/dist/es2017/parsers/containers/isobmff/{take_pssh_out.js → extract_pssh.js} +21 -16
  139. package/dist/es2017/parsers/containers/isobmff/index.d.ts +2 -2
  140. package/dist/es2017/parsers/containers/isobmff/index.d.ts.map +1 -1
  141. package/dist/es2017/parsers/containers/isobmff/index.js +2 -2
  142. package/dist/es2017/playback_observer/core_playback_observer.d.ts +4 -4
  143. package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +1 -1
  144. package/dist/es2017/playback_observer/media_element_playback_observer.d.ts +1 -2
  145. package/dist/es2017/playback_observer/media_element_playback_observer.d.ts.map +1 -1
  146. package/dist/es2017/transports/dash/segment_parser.js +2 -2
  147. package/dist/es2017/transports/local/segment_parser.js +2 -2
  148. package/dist/es2017/utils/test-utils.d.ts +30 -0
  149. package/dist/es2017/utils/test-utils.d.ts.map +1 -0
  150. package/dist/es2017/utils/test-utils.js +36 -0
  151. package/dist/mpd-parser.wasm +0 -0
  152. package/dist/worker.js +6 -6
  153. package/package.json +4 -2
  154. package/src/README.md +7 -7
  155. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  156. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  157. package/src/compat/__tests__/can_patch_out_pssh.test.ts +40 -0
  158. package/src/compat/can_patch_out_pssh.ts +53 -0
  159. package/src/compat/env_detector.ts +4 -0
  160. package/src/core/README.md +1 -1
  161. package/src/core/adaptive/README.md +3 -3
  162. package/src/core/adaptive/__tests__/adaptive_representation_selector.test.ts +181 -110
  163. package/src/core/adaptive/__tests__/guess_based_chooser.test.ts +229 -123
  164. package/src/core/adaptive/__tests__/mocks.ts +100 -0
  165. package/src/core/adaptive/__tests__/network_analyzer.test.ts +152 -59
  166. package/src/core/adaptive/network_analyzer.ts +4 -4
  167. package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +11 -19
  168. package/src/core/adaptive/utils/__tests__/filter_by_resolution.test.ts +12 -12
  169. package/src/core/adaptive/utils/__tests__/last_estimate_storage.test.ts +25 -12
  170. package/src/core/adaptive/utils/__tests__/pending_requests_store.test.ts +13 -9
  171. package/src/core/adaptive/utils/__tests__/representation_score_calculator.test.ts +11 -11
  172. package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +13 -23
  173. package/src/core/adaptive/utils/representation_score_calculator.ts +2 -2
  174. package/src/core/cmcd/__tests__/cmcd_data_builder.test.ts +60 -15
  175. package/src/core/cmcd/cmcd_data_builder.ts +9 -3
  176. package/src/core/entry/README.md +2 -2
  177. package/src/core/entry/__tests__/core_text_displayer_interface.test.ts +20 -0
  178. package/src/core/entry/content_preparer.ts +2 -5
  179. package/src/core/entry/core_entry.ts +6 -2
  180. package/src/core/entry/core_text_displayer_interface.ts +3 -3
  181. package/src/core/fetchers/manifest/__tests__/manifest_fetcher.test.ts +52 -3
  182. package/src/core/fetchers/manifest/manifest_fetcher.ts +12 -0
  183. package/src/core/fetchers/thumbnails/__tests__/thumbnail_fetcher.test.ts +70 -0
  184. package/src/core/fetchers/thumbnails/thumbnail_fetcher.ts +1 -1
  185. package/src/core/fetchers/utils/schedule_request.ts +5 -3
  186. package/src/core/segment_sinks/__tests__/garbage_collector.test.ts +434 -0
  187. package/src/core/segment_sinks/__tests__/mocks.ts +49 -0
  188. package/src/core/segment_sinks/garbage_collector.ts +0 -3
  189. package/src/core/segment_sinks/implementations/text/__tests__/text_segment_sink.test.ts +177 -0
  190. package/src/core/segment_sinks/implementations/text/text_segment_sink.ts +2 -2
  191. package/src/core/segment_sinks/inventory/__tests__/buffered_history.test.ts +215 -0
  192. package/src/core/segment_sinks/inventory/__tests__/segment_inventory.test.ts +448 -0
  193. package/src/core/stream/adaptation/__tests__/adaptation_stream.test.ts +973 -0
  194. package/src/core/stream/adaptation/__tests__/get_representations_switch_strategy.test.ts +283 -374
  195. package/src/core/stream/adaptation/adaptation_stream.ts +6 -8
  196. package/src/core/stream/orchestrator/README.md +4 -4
  197. package/src/core/stream/orchestrator/__tests__/stream_orchestrator.test.ts +707 -0
  198. package/src/core/stream/orchestrator/stream_orchestrator.ts +41 -46
  199. package/src/core/stream/period/utils/__tests__/get_adaptation_switch_strategy.test.ts +290 -220
  200. package/src/core/stream/representation/__tests__/encryption_data_notifier.test.ts +93 -63
  201. package/src/core/stream/representation/utils/__tests__/append_segment_to_buffer.test.ts +106 -63
  202. package/src/core/stream/representation/utils/__tests__/check_for_discontinuity.test.ts +179 -204
  203. package/src/core/stream/representation/utils/__tests__/get_segment_priority.test.ts +7 -7
  204. package/src/core/stream/representation/utils/__tests__/push_init_segment.test.ts +103 -60
  205. package/src/core/stream/representation/utils/__tests__/push_media_segment.test.ts +231 -165
  206. package/src/default_config.ts +6 -0
  207. package/src/experimental/README.md +1 -1
  208. package/src/features/README.md +3 -3
  209. package/src/main_thread/api/README.md +6 -7
  210. package/src/main_thread/api/public_api.ts +16 -10
  211. package/src/main_thread/decrypt/README.md +4 -4
  212. package/src/main_thread/decrypt/__tests__/__global__/content_decryptor.test.ts +135 -0
  213. package/src/main_thread/decrypt/__tests__/__global__/get_license.test.ts +70 -0
  214. package/src/main_thread/decrypt/__tests__/__global__/server_certificate.test.ts +44 -0
  215. package/src/main_thread/decrypt/__tests__/__global__/utils.ts +2 -2
  216. package/src/main_thread/decrypt/content_decryptor.ts +6 -1
  217. package/src/main_thread/decrypt/session_events_listener.ts +1 -1
  218. package/src/main_thread/decrypt/set_server_certificate.ts +5 -0
  219. package/src/main_thread/init/media_source_content_initializer.ts +69 -55
  220. package/src/main_thread/init/utils/__tests__/stream_events_emitter.test.ts +175 -0
  221. package/src/main_thread/init/utils/stream_events_emitter/stream_events_emitter.ts +90 -26
  222. package/src/main_thread/render_thumbnail.ts +4 -0
  223. package/src/main_thread/tracks_store/README.md +12 -0
  224. package/src/main_thread/tracks_store/__tests__/media_element_tracks_store.test.ts +25 -18
  225. package/src/main_thread/tracks_store/media_element_tracks_store.ts +1 -0
  226. package/src/main_thread/tracks_store/tracks_store.ts +1 -1
  227. package/src/manifest/classes/__tests__/mocks.ts +202 -0
  228. package/src/parsers/containers/isobmff/__tests__/extract_pssh.test.ts +199 -0
  229. package/src/parsers/containers/isobmff/{take_pssh_out.ts → extract_pssh.ts} +21 -17
  230. package/src/parsers/containers/isobmff/index.ts +2 -2
  231. package/src/parsers/manifest/dash/wasm-parser/README.md +9 -9
  232. package/src/playback_observer/__tests__/mocks.ts +152 -0
  233. package/src/playback_observer/core_playback_observer.ts +4 -4
  234. package/src/playback_observer/media_element_playback_observer.ts +1 -1
  235. package/src/tools/README.md +2 -2
  236. package/src/transports/README.md +5 -5
  237. package/src/transports/dash/segment_parser.ts +2 -2
  238. package/src/transports/local/segment_parser.ts +2 -2
  239. package/src/transports/metaplaylist/README.md +4 -4
  240. package/src/utils/README.md +3 -3
  241. package/src/utils/test-utils.ts +50 -0
  242. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts +0 -11
  243. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
  244. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.js +0 -20
  245. package/dist/commonjs/parsers/containers/isobmff/take_pssh_out.d.ts.map +0 -1
  246. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts +0 -11
  247. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
  248. package/dist/es2017/core/entry/synchronize_sinks_on_observation.js +0 -17
  249. package/dist/es2017/parsers/containers/isobmff/take_pssh_out.d.ts.map +0 -1
  250. package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -117
  251. package/src/core/entry/synchronize_sinks_on_observation.ts +0 -22
@@ -0,0 +1,42 @@
1
+ /**
2
+ * When talking about `ISOBMFF`/.mp4 metadata, the `pssh` is a box (a subpart of
3
+ * that file) containing protection-related metadata that is then used to
4
+ * interact with EME APIs.
5
+ *
6
+ * The idea in EME scenarios is that the EME player (here the RxPlayer) will
7
+ * take that data and communicate it to the browser's CDM (Content Decryption
8
+ * Module) through an EME API (generally `generateRequest`).
9
+ *
10
+ * There is a mechanism in place in browsers, presumably to facilitate that work
11
+ * which is that when the browser sees a `pssh` box in media data (either linked
12
+ * directly through a media element's `src` attribute or one communicated
13
+ * through MSE API) it can send an `encrypted` event so a JS player can then
14
+ * communicate it to the right EME API.
15
+ *
16
+ * However, in an MSE/EME player, we often are distrustful of letting the browser
17
+ * do work that can without issue be already done on our side (due to being
18
+ * burned too much time on some weird environment, where the spec isn't respected
19
+ * to the letter). So instead historically in MSE scenarios, the RxPlayer read the
20
+ * `pssh` itself, and then "patched it out" (replaced it with a `free` box,
21
+ * effectively a no-op for ISOBMFF metadata) from the segment before giving it to
22
+ * the browser's buffer so that we skip that now unnecessary browser round-trip
23
+ * (the `encrypted` event) and supplementary API surface that could be broken.
24
+ *
25
+ * Several years pass without issue, but in early 2026, we found out that one
26
+ * device, a "Streama" STB from DStv (owned by Multichoice) refuse to bufferise
27
+ * segments which had this "optimization" performed.
28
+ * We have no idea why, from our POV it's an issue on the browser integration side.
29
+ * They don't disagree but they cannot update that part of their device easily.
30
+ *
31
+ * So we decided to fix it player-side. When discussing about it, we hesitated
32
+ * between removing that "optimization" altogether or only for the specific device
33
+ * where we identified the issue. I chose (though far from everyone agreed!) the
34
+ * second solution (only for problematic device) because I feared changing
35
+ * behavior too much compared to most of our previous versions could break
36
+ * other devices, even if we saw that some other players such as the
37
+ * shaka-player did not do that same optimization.
38
+ *
39
+ * @returns {boolean}
40
+ */
41
+ export default function canPatchOutPsshBox(): boolean;
42
+ //# sourceMappingURL=can_patch_out_pssh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can_patch_out_pssh.d.ts","sourceRoot":"","sources":["../../../src/compat/can_patch_out_pssh.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,IAAI,OAAO,CASpD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = canPatchOutPsshBox;
4
+ var config_1 = require("../config");
5
+ var env_detector_1 = require("./env_detector");
6
+ /**
7
+ * When talking about `ISOBMFF`/.mp4 metadata, the `pssh` is a box (a subpart of
8
+ * that file) containing protection-related metadata that is then used to
9
+ * interact with EME APIs.
10
+ *
11
+ * The idea in EME scenarios is that the EME player (here the RxPlayer) will
12
+ * take that data and communicate it to the browser's CDM (Content Decryption
13
+ * Module) through an EME API (generally `generateRequest`).
14
+ *
15
+ * There is a mechanism in place in browsers, presumably to facilitate that work
16
+ * which is that when the browser sees a `pssh` box in media data (either linked
17
+ * directly through a media element's `src` attribute or one communicated
18
+ * through MSE API) it can send an `encrypted` event so a JS player can then
19
+ * communicate it to the right EME API.
20
+ *
21
+ * However, in an MSE/EME player, we often are distrustful of letting the browser
22
+ * do work that can without issue be already done on our side (due to being
23
+ * burned too much time on some weird environment, where the spec isn't respected
24
+ * to the letter). So instead historically in MSE scenarios, the RxPlayer read the
25
+ * `pssh` itself, and then "patched it out" (replaced it with a `free` box,
26
+ * effectively a no-op for ISOBMFF metadata) from the segment before giving it to
27
+ * the browser's buffer so that we skip that now unnecessary browser round-trip
28
+ * (the `encrypted` event) and supplementary API surface that could be broken.
29
+ *
30
+ * Several years pass without issue, but in early 2026, we found out that one
31
+ * device, a "Streama" STB from DStv (owned by Multichoice) refuse to bufferise
32
+ * segments which had this "optimization" performed.
33
+ * We have no idea why, from our POV it's an issue on the browser integration side.
34
+ * They don't disagree but they cannot update that part of their device easily.
35
+ *
36
+ * So we decided to fix it player-side. When discussing about it, we hesitated
37
+ * between removing that "optimization" altogether or only for the specific device
38
+ * where we identified the issue. I chose (though far from everyone agreed!) the
39
+ * second solution (only for problematic device) because I feared changing
40
+ * behavior too much compared to most of our previous versions could break
41
+ * other devices, even if we saw that some other players such as the
42
+ * shaka-player did not do that same optimization.
43
+ *
44
+ * @returns {boolean}
45
+ */
46
+ function canPatchOutPsshBox() {
47
+ var PREVENT_PSSH_PATCHING = config_1.default.getCurrent().PREVENT_PSSH_PATCHING;
48
+ if (PREVENT_PSSH_PATCHING ||
49
+ env_detector_1.default.device === env_detector_1.default.DEVICES.StreamaMdp1001S) {
50
+ return false;
51
+ }
52
+ return true;
53
+ }
@@ -57,6 +57,8 @@ declare const DEVICES: {
57
57
  readonly Xbox: 109;
58
58
  /** Another device that does not match with the others defined here. */
59
59
  readonly Other: 110;
60
+ /** DSTtv's Streama STB MPD1001S, which is known to have some quirks. */
61
+ readonly StreamaMdp1001S: 111;
60
62
  };
61
63
  /** Interface giving information on the current environment where the RxPlayer runs. */
62
64
  export interface IEnvDetector {
@@ -1 +1 @@
1
- {"version":3,"file":"env_detector.d.ts","sourceRoot":"","sources":["../../../src/compat/env_detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,iCAAiC;AACjC,QAAA,MAAM,QAAQ;IACZ,0DAA0D;;IAE1D,+CAA+C;;IAE/C,yCAAyC;;IAEzC;;;OAGG;;IAEH,4DAA4D;;IAE5D,8CAA8C;;IAE9C,wEAAwE;;CAEhE,CAAC;AAEX,gCAAgC;AAChC,QAAA,MAAM,OAAO;IAKX,kDAAkD;;IAElD,0BAA0B;;IAE1B,+BAA+B;;IAE/B,sCAAsC;;IAEtC,sCAAsC;;IAEtC,wDAAwD;;IAExD,gDAAgD;;IAEhD,gDAAgD;;IAEhD,kDAAkD;;IAElD,oCAAoC;;IAEpC,uEAAuE;;CAE/D,CAAC;AAEX,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,mEAAmE;IACnE,OAAO,EAAE,OAAO,OAAO,CAAC;IAExB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;IAE3D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;IAExD;;oEAEgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAaD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,EACjD,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,EAC9C,gBAAgB,GAAE,OAAe,GAChC,MAAM,IAAI,CAKZ;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,IAAI,IAAI,CA0FhC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;wBACE,YAAY;AAA1C,wBAA2C"}
1
+ {"version":3,"file":"env_detector.d.ts","sourceRoot":"","sources":["../../../src/compat/env_detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,iCAAiC;AACjC,QAAA,MAAM,QAAQ;IACZ,0DAA0D;;IAE1D,+CAA+C;;IAE/C,yCAAyC;;IAEzC;;;OAGG;;IAEH,4DAA4D;;IAE5D,8CAA8C;;IAE9C,wEAAwE;;CAEhE,CAAC;AAEX,gCAAgC;AAChC,QAAA,MAAM,OAAO;IAKX,kDAAkD;;IAElD,0BAA0B;;IAE1B,+BAA+B;;IAE/B,sCAAsC;;IAEtC,sCAAsC;;IAEtC,wDAAwD;;IAExD,gDAAgD;;IAEhD,gDAAgD;;IAEhD,kDAAkD;;IAElD,oCAAoC;;IAEpC,uEAAuE;;IAEvE,wEAAwE;;CAEhE,CAAC;AAEX,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,mEAAmE;IACnE,OAAO,EAAE,OAAO,OAAO,CAAC;IAExB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;IAE3D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;IAExD;;oEAEgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAaD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,EACjD,MAAM,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,EAC9C,gBAAgB,GAAE,OAAe,GAChC,MAAM,IAAI,CAKZ;AAED;;;;;GAKG;AACH,iBAAS,gBAAgB,IAAI,IAAI,CA4FhC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;wBACE,YAAY;AAA1C,wBAA2C"}
@@ -66,6 +66,8 @@ var DEVICES = {
66
66
  Xbox: 109,
67
67
  /** Another device that does not match with the others defined here. */
68
68
  Other: 110,
69
+ /** DSTtv's Streama STB MPD1001S, which is known to have some quirks. */
70
+ StreamaMdp1001S: 111,
69
71
  };
70
72
  /** Object giving information on the current environment where the RxPlayer runs. */
71
73
  var EnvDetector = {
@@ -153,6 +155,9 @@ function resetEnvironment() {
153
155
  else if (navigator.userAgent.indexOf("PlayStation 5") !== -1) {
154
156
  EnvDetector.device = DEVICES.PlayStation5;
155
157
  }
158
+ else if (navigator.userAgent.indexOf("DStv Streama, MDMP1001S") !== -1) {
159
+ EnvDetector.device = DEVICES.StreamaMdp1001S;
160
+ }
156
161
  else if (/Tizen/.test(navigator.userAgent)) {
157
162
  EnvDetector.device = DEVICES.Tizen;
158
163
  // Inspired form: http://webostv.developer.lge.com/discover/specifications/web-engine/
@@ -18,7 +18,7 @@ import type { IRepresentationEstimatorPlaybackObservation } from "./adaptive_rep
18
18
  import type BandwidthEstimator from "./utils/bandwidth_estimator";
19
19
  import type { IRequestInfo } from "./utils/pending_requests_store";
20
20
  /** Object describing the current playback conditions. */
21
- type IPlaybackConditionsInfo = Pick<IRepresentationEstimatorPlaybackObservation, "bufferGap" | "position" | "speed" | "duration">;
21
+ export type IPlaybackConditionsInfo = Pick<IRepresentationEstimatorPlaybackObservation, "bufferGap" | "position" | "speed" | "duration">;
22
22
  /**
23
23
  * Estimate the __VERY__ recent bandwidth based on a single unfinished request.
24
24
  * Useful when the current bandwidth seemed to have fallen quickly.
@@ -70,5 +70,4 @@ export default class NetworkAnalyzer {
70
70
  */
71
71
  isUrgent(bitrate: number, currentRepresentation: IRepresentation | null, currentRequests: IRequestInfo[], playbackInfo: IPlaybackConditionsInfo): boolean;
72
72
  }
73
- export {};
74
73
  //# sourceMappingURL=network_analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"network_analyzer.d.ts","sourceRoot":"","sources":["../../../../src/core/adaptive/network_analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,gCAAgC,CAAC;AAExC,yDAAyD;AACzD,KAAK,uBAAuB,GAAG,IAAI,CACjC,2CAA2C,EAC3C,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAChD,CAAC;AAqDF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAkBlF;AA4JD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAKb;gBAEU,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IA2B3D;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CACzB,YAAY,EAAE,uBAAuB,EACrC,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,eAAe,GAAG,IAAI,EAC7C,eAAe,EAAE,YAAY,EAAE,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC;QAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAsFpE;;;;;;;;;OASG;IACI,QAAQ,CACb,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,eAAe,GAAG,IAAI,EAC7C,eAAe,EAAE,YAAY,EAAE,EAC/B,YAAY,EAAE,uBAAuB,GACpC,OAAO;CAYX"}
1
+ {"version":3,"file":"network_analyzer.d.ts","sourceRoot":"","sources":["../../../../src/core/adaptive/network_analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,OAAO,KAAK,EAAE,2CAA2C,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAC;AAElE,OAAO,KAAK,EAEV,YAAY,EACb,MAAM,gCAAgC,CAAC;AAExC,yDAAyD;AACzD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,2CAA2C,EAC3C,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAChD,CAAC;AAqDF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAkBlF;AA4JD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAKb;gBAEU,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;IA2B3D;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CACzB,YAAY,EAAE,uBAAuB,EACrC,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,eAAe,GAAG,IAAI,EAC7C,eAAe,EAAE,YAAY,EAAE,EAC/B,oBAAoB,EAAE,MAAM,GAAG,SAAS,GACvC;QAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAsFpE;;;;;;;;;OASG;IACI,QAAQ,CACb,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,eAAe,GAAG,IAAI,EAC7C,eAAe,EAAE,YAAY,EAAE,EAC/B,YAAY,EAAE,uBAAuB,GACpC,OAAO;CAYX"}
@@ -133,9 +133,9 @@ function estimateStarvationModeBitrate(pendingRequests, playbackInfo, currentRep
133
133
  }
134
134
  var concernedRequest = concernedRequests[0];
135
135
  var now = (0, monotonic_timestamp_1.default)();
136
- var minimumRequestTime = concernedRequest.content.segment.duration * 1.5;
137
- minimumRequestTime = Math.min(minimumRequestTime, 3000);
138
- minimumRequestTime = Math.max(minimumRequestTime, 12000);
136
+ var minimumRequestTime = concernedRequest.content.segment.duration * 1500;
137
+ minimumRequestTime = Math.max(minimumRequestTime, 3000);
138
+ minimumRequestTime = Math.min(minimumRequestTime, 12000);
139
139
  if (now - concernedRequest.requestTimestamp < minimumRequestTime) {
140
140
  return undefined;
141
141
  }
@@ -76,7 +76,7 @@ var RepresentationScoreCalculator = /** @class */ (function () {
76
76
  representation: representation,
77
77
  ewma: currentEWMA,
78
78
  loadedDuration: segmentDuration,
79
- loadedSegments: 0,
79
+ loadedSegments: 1,
80
80
  };
81
81
  }
82
82
  if (currentEWMA.getEstimate() > 1 &&
@@ -100,7 +100,7 @@ var RepresentationScoreCalculator = /** @class */ (function () {
100
100
  }
101
101
  var _a = this._currentRepresentationData, ewma = _a.ewma, loadedSegments = _a.loadedSegments, loadedDuration = _a.loadedDuration;
102
102
  var estimate = ewma.getEstimate();
103
- var confidenceLevel = loadedSegments >= 5 && loadedDuration >= 10
103
+ var confidenceLevel = loadedSegments >= 6 && loadedDuration >= 10
104
104
  ? 1 /* ScoreConfidenceLevel.HIGH */
105
105
  : 0 /* ScoreConfidenceLevel.LOW */;
106
106
  return { score: estimate, confidenceLevel: confidenceLevel };
@@ -1 +1 @@
1
- {"version":3,"file":"cmcd_data_builder.d.ts","sourceRoot":"","sources":["../../../../src/core/cmcd/cmcd_data_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgBjD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,UAAU,EAAE,WAAW,CAAC;IACxB,4DAA4D;IAC5D,cAAc,EAAE,eAAe,CAAC;IAChC,qDAAqD;IACrD,OAAO,EAAE,QAAQ,CAAC;IAClB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C;;;OAGG;IACH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,iBAAiB,CAAwE;IACjG,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;OAIG;gBACS,OAAO,EAAE,YAAY;IAajC;;;;;;;;;OASG;IACI,uBAAuB,CAC5B,gBAAgB,EAAE,yBAAyB,CAAC,mCAAmC,CAAC,GAC/E,IAAI;IAcP;;;OAGG;IACI,sBAAsB,IAAI,IAAI;IAMrC;;;;;;OAMG;IACI,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS;IAI7E;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;;OAKG;IACI,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY;IAoBlE;;;;;OAKG;IACI,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,GAAG,YAAY;IAsH5E;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAsHxB"}
1
+ {"version":3,"file":"cmcd_data_builder.d.ts","sourceRoot":"","sources":["../../../../src/core/cmcd/cmcd_data_builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgBjD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,UAAU,EAAE,WAAW,CAAC;IACxB,4DAA4D;IAC5D,cAAc,EAAE,eAAe,CAAC;IAChC,qDAAqD;IACrD,OAAO,EAAE,QAAQ,CAAC;IAClB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C;;;OAGG;IACH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,iBAAiB,CAAwE;IACjG,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;OAIG;gBACS,OAAO,EAAE,YAAY;IAajC;;;;;;;;;OASG;IACI,uBAAuB,CAC5B,gBAAgB,EAAE,yBAAyB,CAAC,mCAAmC,CAAC,GAC/E,IAAI;IAcP;;;OAGG;IACI,sBAAsB,IAAI,IAAI;IAMrC;;;;;;OAMG;IACI,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS;IAI7E;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;;OAKG;IACI,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY;IAoBlE;;;;;OAKG;IACI,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,GAAG,YAAY;IAyH5E;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAsHxB"}
@@ -113,7 +113,10 @@ var CmcdDataBuilder = /** @class */ (function () {
113
113
  props.sid = this._sessionId;
114
114
  var lastObservation = (_a = this._playbackObserver) === null || _a === void 0 ? void 0 : _a.getReference().getValue();
115
115
  props.pr =
116
- lastObservation === undefined || lastObservation.speed === 1
116
+ lastObservation === undefined ||
117
+ !isFinite(lastObservation.speed) ||
118
+ lastObservation.speed < 0 ||
119
+ lastObservation.speed === 1
117
120
  ? undefined
118
121
  : lastObservation.speed;
119
122
  if (lastObservation !== undefined) {
@@ -221,7 +224,10 @@ var CmcdDataBuilder = /** @class */ (function () {
221
224
  }
222
225
  }
223
226
  }
224
- var precizeDeadlineMs = precizeBufferLengthMs === undefined || lastObservation === undefined
227
+ var precizeDeadlineMs = precizeBufferLengthMs === undefined ||
228
+ lastObservation === undefined ||
229
+ !isFinite(lastObservation.speed) ||
230
+ lastObservation.speed <= 0
225
231
  ? undefined
226
232
  : precizeBufferLengthMs / lastObservation.speed;
227
233
  props.dl =
@@ -296,7 +302,7 @@ var CmcdDataBuilder = /** @class */ (function () {
296
302
  var addStringProperty = function (prop, headerName) {
297
303
  var val = props[prop];
298
304
  if (val !== undefined) {
299
- var formatted = "\"".concat(val.replace("\\", "\\\\").replace('"', '\\"'), "\"");
305
+ var formatted = "\"".concat(val.replace(/\\/g, "\\\\").replace(/"/g, '\\"'), "\"");
300
306
  var toAdd = "".concat(prop, "=").concat(formatted, ",");
301
307
  addPayload(toAdd, headerName);
302
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"content_preparer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_preparer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content_preparer.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/content_preparer.ts"],"names":[],"mappings":"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"}
@@ -180,11 +180,6 @@ var ContentPreparer = /** @class */ (function () {
180
180
  checkIfReadyAndValidate();
181
181
  }, currentMediaSourceCanceller.signal);
182
182
  manifestFetcher.addEventListener("error", function (err) {
183
- sendMessage({
184
- type: "error" /* CoreMessageType.Error */,
185
- contentId: contentId,
186
- value: (0, utils_1.formatErrorForSender)(err),
187
- });
188
183
  rej(err);
189
184
  }, contentCanceller.signal);
190
185
  manifestFetcher.start();
@@ -242,17 +237,20 @@ var ContentPreparer = /** @class */ (function () {
242
237
  */
243
238
  ContentPreparer.prototype.reloadMediaSource = function (sendMessage) {
244
239
  var _this = this;
240
+ var _a;
245
241
  this._currentMediaSourceCanceller.cancel("ContentPreparer MediaSource reload");
246
242
  if (this._currentContent === null) {
247
243
  return Promise.reject(new Error("CP: No content anymore"));
248
244
  }
249
245
  this._currentContent.trackChoiceSetter.reset();
246
+ (_a = this._currentContent.coreTextSender) === null || _a === void 0 ? void 0 : _a.stop("ContentPreparer MediaSource reload");
250
247
  this._currentMediaSourceCanceller = new task_canceller_1.default("ContentPreparer MediaSource");
251
- var _a = __read(createMediaSourceInterfaceAndSegmentSinksStore(sendMessage, this._currentContent.contentId, {
248
+ this._currentMediaSourceCanceller.linkToSignal(this._contentCanceller.signal);
249
+ var _b = __read(createMediaSourceInterfaceAndSegmentSinksStore(sendMessage, this._currentContent.contentId, {
252
250
  useMseInWorker: this._currentContent.useMseInWorker,
253
251
  hasVideo: this._hasVideo,
254
252
  hasText: this._currentContent.coreTextSender !== null,
255
- }, this._currentMediaSourceCanceller.signal), 3), mediaSourceInterface = _a[0], segmentSinksStore = _a[1], coreTextSender = _a[2];
253
+ }, this._currentMediaSourceCanceller.signal), 3), mediaSourceInterface = _b[0], segmentSinksStore = _b[1], coreTextSender = _b[2];
256
254
  this._currentContent.mediaSource = mediaSourceInterface;
257
255
  this._currentContent.segmentSinksStore = segmentSinksStore;
258
256
  this._currentContent.freezeResolver = new FreezeResolver_1.default(segmentSinksStore);
@@ -1 +1 @@
1
- {"version":3,"file":"core_entry.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_entry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAQpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,EAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,WAAW,EAAE,YAAY,GACxB,IAAI,CA2ZN;AA8vBD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,iFAAiF;IACjF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,oEAAoE;IACpE,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5C"}
1
+ {"version":3,"file":"core_entry.d.ts","sourceRoot":"","sources":["../../../../src/core/entry/core_entry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,kBAAkB,EAGnB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AAQpD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,UAAU,CAAC;AAOlB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,KAAK,IAAI,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,IAAI,EAC1D,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,WAAW,EAAE,YAAY,GACxB,IAAI,CA2ZN;AAkwBD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACvD,iFAAiF;IACjF,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,oEAAoE;IACpE,kBAAkB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,oBAAoB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,iBAAiB,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;CAC5C"}
@@ -982,15 +982,19 @@ function sendThumbnailData(sendMessage, contentPreparer, msg) {
982
982
  return respondWithError(new Error("Content changed"));
983
983
  }
984
984
  (0, get_thumbnail_data_1.default)(preparedContent.fetchThumbnailData, preparedContent.manifest, msg.value.periodId, msg.value.thumbnailTrackId, msg.value.time).then(function (result) {
985
+ // Multiple thumbnail requests can share the same fetched payload.
986
+ // Transfer a copy here so replying to one request does not detach the
987
+ // ArrayBuffer that still has to be sent to another requester.
988
+ var data = result.data.slice(0);
985
989
  sendMessage({
986
990
  type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
987
991
  contentId: msg.contentId,
988
992
  value: {
989
993
  status: "success",
990
994
  requestId: msg.value.requestId,
991
- data: result,
995
+ data: __assign(__assign({}, result), { data: data }),
992
996
  },
993
- }, [result.data]);
997
+ }, [data]);
994
998
  }, function (err) {
995
999
  return respondWithError(err);
996
1000
  });
@@ -24,12 +24,12 @@ var CoreTextDisplayerInterface = /** @class */ (function () {
24
24
  CoreTextDisplayerInterface.prototype.pushTextData = function (infos) {
25
25
  var _this = this;
26
26
  return new Promise(function (resolve, reject) {
27
+ _this._queues.pushTextData.push({ resolve: resolve, reject: reject });
27
28
  _this._messageSender({
28
29
  type: "push-text-data" /* CoreMessageType.PushTextData */,
29
30
  contentId: _this._contentId,
30
31
  value: infos,
31
32
  });
32
- _this._queues.pushTextData.push({ resolve: resolve, reject: reject });
33
33
  });
34
34
  };
35
35
  /**
@@ -38,12 +38,12 @@ var CoreTextDisplayerInterface = /** @class */ (function () {
38
38
  CoreTextDisplayerInterface.prototype.remove = function (start, end) {
39
39
  var _this = this;
40
40
  return new Promise(function (resolve, reject) {
41
+ _this._queues.remove.push({ resolve: resolve, reject: reject });
41
42
  _this._messageSender({
42
43
  type: "remove-text-data" /* CoreMessageType.RemoveTextData */,
43
44
  contentId: _this._contentId,
44
45
  value: { start: start, end: end },
45
46
  });
46
- _this._queues.remove.push({ resolve: resolve, reject: reject });
47
47
  });
48
48
  };
49
49
  /**
@@ -118,7 +118,7 @@ var CoreTextDisplayerInterface = /** @class */ (function () {
118
118
  CoreTextDisplayerInterface.prototype.onRemoveError = function (err) {
119
119
  var element = this._queues.remove.shift();
120
120
  if (element === undefined) {
121
- log_1.default.error("text", "pushTextData error for inexistant operation");
121
+ log_1.default.error("text", "remove error for inexistant operation");
122
122
  return;
123
123
  }
124
124
  element.reject(err);
@@ -1 +1 @@
1
- {"version":3,"file":"manifest_fetcher.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/manifest/manifest_fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,YAAY,MAAM,8BAA8B,CAAC;AAIxD,OAAO,KAAK,eAAe,MAAM,YAAY,CAAC;AAK9C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAC9E;;;;OAIG;IACI,qBAAqB,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAE3E,uCAAuC;IACvC,OAAO,CAAC,SAAS,CAA2B;IAC5C,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAAuB;IAC5C,mDAAmD;IACnD,OAAO,CAAC,cAAc,CAAiB;IACvC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAA6B;IAC/C;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAU;IAC5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAC;IAC1B,sFAAsF;IACtF,OAAO,CAAC,sBAAsB,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAA4B;IAE1D;;;;;;;;;OASG;gBAED,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,wBAAwB;IAepC;;;;;;;;OAQG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKzC;;;;;;OAMG;IACI,KAAK,IAAI,IAAI;IAiCpB;;;;;;OAMG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAW/E;;;;;;;;;;;OAWG;YACW,cAAc;IAgE5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK;IAYb;;;;;;;;OAQG;YACW,oBAAoB;IA2FlC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA8KnC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IA8GnC,OAAO,CAAC,aAAa;CAOtB;AAqDD,+CAA+C;AAC/C,MAAM,WAAW,wBAAwB;IACvC;;;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;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,+CAA+C;IAC/C,6BAA6B,EAAE,MAAM,CAAC;IACtC;;;OAGG;IACH,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C;;;OAGG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC;AAED,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,aAAa,EAAE,QAAQ,CAAC;CACzB;AAED,wDAAwD;AACxD,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;OAYG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B"}
1
+ {"version":3,"file":"manifest_fetcher.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/manifest/manifest_fetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAKV,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,YAAY,MAAM,8BAA8B,CAAC;AAIxD,OAAO,KAAK,eAAe,MAAM,YAAY,CAAC;AAK9C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAC9E;;;;OAIG;IACI,qBAAqB,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAE3E,uCAAuC;IACvC,OAAO,CAAC,SAAS,CAA2B;IAC5C,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAAuB;IAC5C,mDAAmD;IACnD,OAAO,CAAC,cAAc,CAAiB;IACvC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAA6B;IAC/C;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAU;IAC5B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAC;IAC1B,sFAAsF;IACtF,OAAO,CAAC,sBAAsB,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CAA4B;IAE1D;;;;;;;;;OASG;gBAED,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,wBAAwB;IAepC;;;;;;;;OAQG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAKzC;;;;;;OAMG;IACI,KAAK,IAAI,IAAI;IAiCpB;;;;;;OAMG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAiB/E;;;;;;;;;;;OAWG;YACW,cAAc;IAgE5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK;IAYb;;;;;;;;OAQG;YACW,oBAAoB;IA2FlC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA8KnC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAoHnC,OAAO,CAAC,aAAa;CAOtB;AAqDD,+CAA+C;AAC/C,MAAM,WAAW,wBAAwB;IACvC;;;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;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,+CAA+C;IAC/C,6BAA6B,EAAE,MAAM,CAAC;IACtC;;;OAGG;IACH,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C;;;OAGG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC;AAED,2CAA2C;AAC3C,MAAM,WAAW,qBAAqB;IACpC,mFAAmF;IACnF,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,aAAa,EAAE,QAAQ,CAAC;CACzB;AAED,wDAAwD;AACxD,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;OAYG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B"}
@@ -175,6 +175,12 @@ var ManifestFetcher = /** @class */ (function (_super) {
175
175
  */
176
176
  ManifestFetcher.prototype.updateContentUrls = function (urls, refreshNow) {
177
177
  var _a;
178
+ // Keep track of the application-provided content URLs.
179
+ this._manifestUrls = urls;
180
+ // Indicate that we want to prioritize for the next refresh.
181
+ // Once a refreshed Manifest has been parsed we still let the Manifest's own
182
+ // URL list drive subsequent refreshes (e.g. if the transport/parser updated
183
+ // it on purpose).
178
184
  this._prioritizedContentUrl = (_a = urls === null || urls === void 0 ? void 0 : urls[0]) !== null && _a !== void 0 ? _a : undefined;
179
185
  if (refreshNow) {
180
186
  this.scheduleManualRefresh({
@@ -561,11 +567,17 @@ var ManifestFetcher = /** @class */ (function (_super) {
561
567
  var fullRefresh;
562
568
  var refreshURL;
563
569
  if (this._prioritizedContentUrl !== null) {
570
+ // `updateContentUrls` explicitly requested that the next refresh uses that
571
+ // URL. This override is one-shot on purpose.
564
572
  fullRefresh = true;
565
573
  refreshURL = this._prioritizedContentUrl;
566
574
  this._prioritizedContentUrl = null;
567
575
  }
568
576
  else {
577
+ // Outside of that explicit one-shot override, prefer the URLs currently
578
+ // exposed by the Manifest itself. This allows parser/content-level URL
579
+ // updates (e.g. redirects or manifest-provided alternatives) to stay the
580
+ // source of truth after the refresh completed.
569
581
  fullRefresh = !enablePartialRefresh || manifestUpdateUrl === undefined;
570
582
  refreshURL = fullRefresh ? manifest.getUrls()[0] : manifestUpdateUrl;
571
583
  }
@@ -144,7 +144,7 @@ cdnPrioritizer) {
144
144
  * @returns {Promise}
145
145
  */
146
146
  function callLoaderWithUrl(cdnMetadata) {
147
- return loadThumbnail(cdnMetadata, thumbnail, pipelineRequestOptions, cancellationSignal);
147
+ return loadThumbnail(cdnMetadata, thumbnail, pipelineRequestOptions, requestCanceller.signal);
148
148
  }
149
149
  /**
150
150
  * Function called when the function request is retried.
@@ -1 +1 @@
1
- {"version":3,"file":"schedule_request.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/utils/schedule_request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC;AAiDrD,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAC3B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,cAAc,EAAE,CACd,GAAG,EAAE,YAAY,GAAG,IAAI,EACxB,kBAAkB,EAAE,kBAAkB,KACnC,OAAO,CAAC,CAAC,CAAC,EACf,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,CAAC,CAAC,CA+OZ;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,CAAC,CAAC,CAGZ"}
1
+ {"version":3,"file":"schedule_request.d.ts","sourceRoot":"","sources":["../../../../../src/core/fetchers/utils/schedule_request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,cAAc,MAAM,oBAAoB,CAAC;AAiDrD,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAC3B,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,cAAc,EAAE,CACd,GAAG,EAAE,YAAY,GAAG,IAAI,EACxB,kBAAkB,EAAE,kBAAkB,KACnC,OAAO,CAAC,CAAC,CAAC,EACf,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,CAAC,CAAC,CAkPZ;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,cAAc,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAChC,OAAO,EAAE,gBAAgB,EACzB,kBAAkB,EAAE,kBAAkB,GACrC,OAAO,CAAC,CAAC,CAAC,CAGZ"}
@@ -58,7 +58,6 @@ var log_1 = require("../../../log");
58
58
  var cancellable_sleep_1 = require("../../../utils/cancellable_sleep");
59
59
  var get_fuzzed_delay_1 = require("../../../utils/get_fuzzed_delay");
60
60
  var monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
61
- var noop_1 = require("../../../utils/noop");
62
61
  var request_1 = require("../../../utils/request");
63
62
  var task_canceller_1 = require("../../../utils/task_canceller");
64
63
  /**
@@ -299,7 +298,7 @@ function scheduleRequestWithCdns(cdns, cdnPrioritizer, performRequest, options,
299
298
  cdnPrioritizer === null || cdnPrioritizer === void 0 ? void 0 : cdnPrioritizer.addEventListener("priorityChange", function () {
300
299
  var updatedPrioritaryCdn = getCdnToRequest();
301
300
  if (cancellationSignal.isCancelled()) {
302
- throw cancellationSignal.cancellationError;
301
+ return;
303
302
  }
304
303
  if (updatedPrioritaryCdn === undefined) {
305
304
  return cleanAndReject(prevRequestError);
@@ -309,7 +308,9 @@ function scheduleRequestWithCdns(cdns, cdnPrioritizer, performRequest, options,
309
308
  waitPotentialBackoffAndRequest(updatedPrioritaryCdn, prevRequestError).then(cleanAndResolve, cleanAndReject);
310
309
  }
311
310
  }, canceller.signal);
312
- (0, cancellable_sleep_1.default)(blockedFor, canceller.signal).then(function () { return requestCdn(nextWantedCdn).then(cleanAndResolve, cleanAndReject); }, noop_1.default);
311
+ (0, cancellable_sleep_1.default)(blockedFor, canceller.signal).then(function () { return requestCdn(nextWantedCdn).then(cleanAndResolve, cleanAndReject); }, function (err) {
312
+ return cleanAndReject(cancellationSignal.isCancelled() ? cancellationSignal.cancellationError : err);
313
+ });
313
314
  function cleanAndResolve(response) {
314
315
  unlinkCanceller();
315
316
  res(response);
@@ -37,8 +37,6 @@ export interface IGarbageCollectorArgument {
37
37
  *
38
38
  * @param {Object} opt
39
39
  * @param {Object} cancellationSignal
40
- *
41
- * TODO Move to main thread?
42
40
  */
43
41
  export default function BufferGarbageCollector({ segmentSink, playbackObserver, maxBufferBehind, maxBufferAhead, }: IGarbageCollectorArgument, cancellationSignal: CancellationSignal): void;
44
42
  //# sourceMappingURL=garbage_collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"garbage_collector.d.ts","sourceRoot":"","sources":["../../../../src/core/segment_sinks/garbage_collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,EAAE,yBAAyB,CACzC,IAAI,CAAC,sCAAsC,EAAE,UAAU,GAAG,UAAU,CAAC,CACtE,CAAC;IACF,oEAAoE;IACpE,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAClD,oEAAoE;IACpE,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,EACE,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,EAAE,yBAAyB,EAC5B,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CAiCN"}
1
+ {"version":3,"file":"garbage_collector.d.ts","sourceRoot":"","sources":["../../../../src/core/segment_sinks/garbage_collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAIzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,EAAE,yBAAyB,CACzC,IAAI,CAAC,sCAAsC,EAAE,UAAU,GAAG,UAAU,CAAC,CACtE,CAAC;IACF,oEAAoE;IACpE,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAClD,oEAAoE;IACpE,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;CAClD;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,EACE,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,EAAE,yBAAyB,EAC5B,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CAgCN"}
@@ -76,8 +76,6 @@ var task_canceller_1 = require("../../utils/task_canceller");
76
76
  *
77
77
  * @param {Object} opt
78
78
  * @param {Object} cancellationSignal
79
- *
80
- * TODO Move to main thread?
81
79
  */
82
80
  function BufferGarbageCollector(_a, cancellationSignal) {
83
81
  var segmentSink = _a.segmentSink, playbackObserver = _a.playbackObserver, maxBufferBehind = _a.maxBufferBehind, maxBufferAhead = _a.maxBufferAhead;
@@ -102,7 +100,6 @@ function BufferGarbageCollector(_a, cancellationSignal) {
102
100
  }
103
101
  maxBufferBehind.onUpdate(clean, { clearSignal: cancellationSignal });
104
102
  maxBufferAhead.onUpdate(clean, { clearSignal: cancellationSignal });
105
- clean();
106
103
  }
107
104
  /**
108
105
  * Remove buffer from the browser's memory based on the user's
@@ -45,7 +45,7 @@ export default class TextSegmentSink extends SegmentSink {
45
45
  * @returns {Array.<Object>}
46
46
  */
47
47
  getPendingOperations(): Array<ISBOperation<unknown>>;
48
- dispose(): void;
48
+ dispose(reason: string | undefined): void;
49
49
  private _addToOperationQueue;
50
50
  }
51
51
  /** Data of chunks that should be pushed to the HTMLTextSegmentSink. */
@@ -1 +1 @@
1
- {"version":3,"file":"text_segment_sink.d.ts","sourceRoot":"","sources":["../../../../../../src/core/segment_sinks/implementations/text/text_segment_sink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,WAAW,EAAwB,MAAM,UAAU,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,OAAO,CAA0B;IAEzC,OAAO,CAAC,kBAAkB,CAGvB;IAEH;;OAEG;gBACS,mBAAmB,EAAE,uBAAuB;IASxD;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMjD;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM9C;;;;OAIG;IACU,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwB1E;;;;;OAKG;IACU,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWxE;;;OAGG;IACU,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E;;OAEG;IACI,oBAAoB,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAIpD,OAAO,IAAI,IAAI;IAKtB,OAAO,CAAC,oBAAoB;CAc7B;AAED,uEAAuE;AACvE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW,GACpD,MAAM,GACN,UAAU,CAAC,WAAW,CAAC,GACvB,WAAW;IAEf,8DAA8D;IAC9D,IAAI,EAAE,CAAC,CAAC;IACR,8DAA8D;IAC9D,IAAI,EAAE,yBAAyB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;OAOG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAoED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,YAAY,CACV,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,MAAM,CACJ,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACxC"}
1
+ {"version":3,"file":"text_segment_sink.d.ts","sourceRoot":"","sources":["../../../../../../src/core/segment_sinks/implementations/text/text_segment_sink.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,WAAW,EAAwB,MAAM,UAAU,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAW;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,OAAO,CAA0B;IAEzC,OAAO,CAAC,kBAAkB,CAGvB;IAEH;;OAEG;gBACS,mBAAmB,EAAE,uBAAuB;IASxD;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMjD;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM9C;;;;OAIG;IACU,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwB1E;;;;;OAKG;IACU,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWxE;;;OAGG;IACU,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E;;OAEG;IACI,oBAAoB,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAIpD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKhD,OAAO,CAAC,oBAAoB;CAc7B;AAED,uEAAuE;AACvE,MAAM,WAAW,4BAA4B,CAC3C,CAAC,SAAS,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,WAAW,GACpD,MAAM,GACN,UAAU,CAAC,WAAW,CAAC,GACvB,WAAW;IAEf,8DAA8D;IAC9D,IAAI,EAAE,CAAC,CAAC;IACR,8DAA8D;IAC9D,IAAI,EAAE,yBAAyB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;OAOG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAoED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,YAAY,CACV,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,MAAM,CACJ,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACxC"}
@@ -196,9 +196,9 @@ var TextSegmentSink = /** @class */ (function (_super) {
196
196
  TextSegmentSink.prototype.getPendingOperations = function () {
197
197
  return this._pendingOperations.map(function (p) { return p.operation; });
198
198
  };
199
- TextSegmentSink.prototype.dispose = function () {
199
+ TextSegmentSink.prototype.dispose = function (reason) {
200
200
  log_1.default.debug("Stream", "Disposing TextSegmentSink");
201
- this._sender.reset();
201
+ this._sender.stop(reason);
202
202
  };
203
203
  TextSegmentSink.prototype._addToOperationQueue = function (promise, operation) {
204
204
  var _this = this;
@@ -1 +1 @@
1
- {"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA+gBN"}
1
+ {"version":3,"file":"adaptation_stream.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/adaptation/adaptation_stream.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AASxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,EACE,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,0BAA0B,EAC7B,SAAS,EAAE,0BAA0B,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,IAAI,CA6gBN"}
@@ -171,11 +171,11 @@ function AdaptationStream(_a, callbacks, parentCancelSignal) {
171
171
  // decipherability updates, "`Representation` avoidance" etc.
172
172
  var newRepresentations = getRepresentationList(content.adaptation.representations, newRepIds);
173
173
  representationsList.setValueIfChanged(newRepresentations);
174
- cancelCurrentStreams = new task_canceller_1.default("AdaptationStream: RepresentationStream Group " + adaptation.type);
175
- cancelCurrentStreams.linkToSignal(adapStreamCanceller.signal);
176
- onRepresentationsChoiceChange(val, cancelCurrentStreams.signal).catch(function (err) {
177
- if ((cancelCurrentStreams === null || cancelCurrentStreams === void 0 ? void 0 : cancelCurrentStreams.isUsed()) === true &&
178
- task_canceller_1.default.isCancellationError(err)) {
174
+ var currentStreamCanceller = new task_canceller_1.default("AdaptationStream: RepresentationStream Group " + adaptation.type);
175
+ cancelCurrentStreams = currentStreamCanceller;
176
+ currentStreamCanceller.linkToSignal(adapStreamCanceller.signal);
177
+ onRepresentationsChoiceChange(val, currentStreamCanceller.signal).catch(function (err) {
178
+ if (currentStreamCanceller.isUsed() && task_canceller_1.default.isCancellationError(err)) {
179
179
  return;
180
180
  }
181
181
  adapStreamCanceller.cancel("RepresentationStream err");
@@ -564,7 +564,7 @@ function AdaptationStream(_a, callbacks, parentCancelSignal) {
564
564
  // When `wba` is equal to `Infinity`, dividing it will still make it equal
565
565
  // to `Infinity`. To make the `bufferGoalRatio` still have an effect, we
566
566
  // just starts from a `wba` set to the high value of 5 minutes.
567
- return 5 * 60 * 1000 * bufferGoalRatio;
567
+ return 5 * 60 * bufferGoalRatio;
568
568
  }
569
569
  return wba * bufferGoalRatio;
570
570
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream_orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/orchestrator/stream_orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,SAAS,EAA8B,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,gCAAgC,EAEjC,MAAM,WAAW,CAAC;AAKnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,OAAO,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,EACxD,gBAAgB,EAAE,yBAAyB,CAAC,sCAAsC,CAAC,EACnF,uBAAuB,EAAE,wBAAwB,EACjD,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,EAAE,0BAA0B,EACnC,SAAS,EAAE,4BAA4B,EACvC,wBAAwB,EAAE,kBAAkB,GAC3C,IAAI,CAgmBN;AAED,MAAM,MAAM,sCAAsC,GAAG,gCAAgC,CAAC;AAEtF,+DAA+D;AAC/D,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,GAAG;IAC9D,iBAAiB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACpD,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjD,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;CACnD,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;IAChE;;;;;;;;;OASG;IACH,mBAAmB,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAChE;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACtE;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD;;;;;;;;;OASG;IACH,yBAAyB,IAAI,IAAI,CAAC;CACnC;AAED,sDAAsD;AACtD,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,UAAU,EAAE,WAAW,CAAC;CACzB"}
1
+ {"version":3,"file":"stream_orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/core/stream/orchestrator/stream_orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,SAAS,EAA8B,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAGzD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,gCAAgC,EAEjC,MAAM,WAAW,CAAC;AAKnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,OAAO,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,EACxD,gBAAgB,EAAE,yBAAyB,CAAC,sCAAsC,CAAC,EACnF,uBAAuB,EAAE,wBAAwB,EACjD,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,EAAE,0BAA0B,EACnC,SAAS,EAAE,4BAA4B,EACvC,wBAAwB,EAAE,kBAAkB,GAC3C,IAAI,CA2lBN;AAED,MAAM,MAAM,sCAAsC,GAAG,gCAAgC,CAAC;AAEtF,+DAA+D;AAC/D,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,GAAG;IAC9D,iBAAiB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACpD,kBAAkB,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjD,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;CACnD,CAAC;AAEF,sEAAsE;AACtE,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;IAChE;;;;;;;;;OASG;IACH,mBAAmB,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAChE;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAAC;IACtE;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD;;;;;;;;;OASG;IACH,yBAAyB,IAAI,IAAI,CAAC;CACnC;AAED,sDAAsD;AACtD,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;OAKG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,UAAU,EAAE,WAAW,CAAC;CACzB"}