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,50 @@
1
+ import config from "../config";
2
+ import EnvDetector from "./env_detector";
3
+ /**
4
+ * When talking about `ISOBMFF`/.mp4 metadata, the `pssh` is a box (a subpart of
5
+ * that file) containing protection-related metadata that is then used to
6
+ * interact with EME APIs.
7
+ *
8
+ * The idea in EME scenarios is that the EME player (here the RxPlayer) will
9
+ * take that data and communicate it to the browser's CDM (Content Decryption
10
+ * Module) through an EME API (generally `generateRequest`).
11
+ *
12
+ * There is a mechanism in place in browsers, presumably to facilitate that work
13
+ * which is that when the browser sees a `pssh` box in media data (either linked
14
+ * directly through a media element's `src` attribute or one communicated
15
+ * through MSE API) it can send an `encrypted` event so a JS player can then
16
+ * communicate it to the right EME API.
17
+ *
18
+ * However, in an MSE/EME player, we often are distrustful of letting the browser
19
+ * do work that can without issue be already done on our side (due to being
20
+ * burned too much time on some weird environment, where the spec isn't respected
21
+ * to the letter). So instead historically in MSE scenarios, the RxPlayer read the
22
+ * `pssh` itself, and then "patched it out" (replaced it with a `free` box,
23
+ * effectively a no-op for ISOBMFF metadata) from the segment before giving it to
24
+ * the browser's buffer so that we skip that now unnecessary browser round-trip
25
+ * (the `encrypted` event) and supplementary API surface that could be broken.
26
+ *
27
+ * Several years pass without issue, but in early 2026, we found out that one
28
+ * device, a "Streama" STB from DStv (owned by Multichoice) refuse to bufferise
29
+ * segments which had this "optimization" performed.
30
+ * We have no idea why, from our POV it's an issue on the browser integration side.
31
+ * They don't disagree but they cannot update that part of their device easily.
32
+ *
33
+ * So we decided to fix it player-side. When discussing about it, we hesitated
34
+ * between removing that "optimization" altogether or only for the specific device
35
+ * where we identified the issue. I chose (though far from everyone agreed!) the
36
+ * second solution (only for problematic device) because I feared changing
37
+ * behavior too much compared to most of our previous versions could break
38
+ * other devices, even if we saw that some other players such as the
39
+ * shaka-player did not do that same optimization.
40
+ *
41
+ * @returns {boolean}
42
+ */
43
+ export default function canPatchOutPsshBox() {
44
+ const { PREVENT_PSSH_PATCHING } = config.getCurrent();
45
+ if (PREVENT_PSSH_PATCHING ||
46
+ EnvDetector.device === EnvDetector.DEVICES.StreamaMdp1001S) {
47
+ return false;
48
+ }
49
+ return true;
50
+ }
@@ -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"}
@@ -62,6 +62,8 @@ const DEVICES = {
62
62
  Xbox: 109,
63
63
  /** Another device that does not match with the others defined here. */
64
64
  Other: 110,
65
+ /** DSTtv's Streama STB MPD1001S, which is known to have some quirks. */
66
+ StreamaMdp1001S: 111,
65
67
  };
66
68
  /** Object giving information on the current environment where the RxPlayer runs. */
67
69
  const EnvDetector = {
@@ -148,6 +150,9 @@ function resetEnvironment() {
148
150
  else if (navigator.userAgent.indexOf("PlayStation 5") !== -1) {
149
151
  EnvDetector.device = DEVICES.PlayStation5;
150
152
  }
153
+ else if (navigator.userAgent.indexOf("DStv Streama, MDMP1001S") !== -1) {
154
+ EnvDetector.device = DEVICES.StreamaMdp1001S;
155
+ }
151
156
  else if (/Tizen/.test(navigator.userAgent)) {
152
157
  EnvDetector.device = DEVICES.Tizen;
153
158
  // 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"}
@@ -130,9 +130,9 @@ function estimateStarvationModeBitrate(pendingRequests, playbackInfo, currentRep
130
130
  }
131
131
  const concernedRequest = concernedRequests[0];
132
132
  const now = getMonotonicTimeStamp();
133
- let minimumRequestTime = concernedRequest.content.segment.duration * 1.5;
134
- minimumRequestTime = Math.min(minimumRequestTime, 3000);
135
- minimumRequestTime = Math.max(minimumRequestTime, 12000);
133
+ let minimumRequestTime = concernedRequest.content.segment.duration * 1500;
134
+ minimumRequestTime = Math.max(minimumRequestTime, 3000);
135
+ minimumRequestTime = Math.min(minimumRequestTime, 12000);
136
136
  if (now - concernedRequest.requestTimestamp < minimumRequestTime) {
137
137
  return undefined;
138
138
  }
@@ -74,7 +74,7 @@ export default class RepresentationScoreCalculator {
74
74
  representation,
75
75
  ewma: currentEWMA,
76
76
  loadedDuration: segmentDuration,
77
- loadedSegments: 0,
77
+ loadedSegments: 1,
78
78
  };
79
79
  }
80
80
  if (currentEWMA.getEstimate() > 1 &&
@@ -98,7 +98,7 @@ export default class RepresentationScoreCalculator {
98
98
  }
99
99
  const { ewma, loadedSegments, loadedDuration } = this._currentRepresentationData;
100
100
  const estimate = ewma.getEstimate();
101
- const confidenceLevel = loadedSegments >= 5 && loadedDuration >= 10
101
+ const confidenceLevel = loadedSegments >= 6 && loadedDuration >= 10
102
102
  ? 1 /* ScoreConfidenceLevel.HIGH */
103
103
  : 0 /* ScoreConfidenceLevel.LOW */;
104
104
  return { score: estimate, 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"}
@@ -99,7 +99,10 @@ export default class CmcdDataBuilder {
99
99
  props.sid = this._sessionId;
100
100
  const lastObservation = (_a = this._playbackObserver) === null || _a === void 0 ? void 0 : _a.getReference().getValue();
101
101
  props.pr =
102
- lastObservation === undefined || lastObservation.speed === 1
102
+ lastObservation === undefined ||
103
+ !isFinite(lastObservation.speed) ||
104
+ lastObservation.speed < 0 ||
105
+ lastObservation.speed === 1
103
106
  ? undefined
104
107
  : lastObservation.speed;
105
108
  if (lastObservation !== undefined) {
@@ -196,7 +199,10 @@ export default class CmcdDataBuilder {
196
199
  }
197
200
  }
198
201
  }
199
- const precizeDeadlineMs = precizeBufferLengthMs === undefined || lastObservation === undefined
202
+ const precizeDeadlineMs = precizeBufferLengthMs === undefined ||
203
+ lastObservation === undefined ||
204
+ !isFinite(lastObservation.speed) ||
205
+ lastObservation.speed <= 0
200
206
  ? undefined
201
207
  : precizeBufferLengthMs / lastObservation.speed;
202
208
  props.dl =
@@ -270,7 +276,7 @@ export default class CmcdDataBuilder {
270
276
  const addStringProperty = (prop, headerName) => {
271
277
  const val = props[prop];
272
278
  if (val !== undefined) {
273
- const formatted = `"${val.replace("\\", "\\\\").replace('"', '\\"')}"`;
279
+ const formatted = `"${val.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
274
280
  const toAdd = `${prop}=${formatted},`;
275
281
  addPayload(toAdd, headerName);
276
282
  }
@@ -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":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAOvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AACvG,OAAO,eAAe,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,iBAAiB,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAwC,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnF,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AACzE,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAU5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAA8B;IACrD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAgB;IACzC;;;;OAIG;IACH,OAAO,CAAC,4BAA4B,CAAgB;IAEpD,uBAAuB;IACvB,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;;;;OAQG;gBACS,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE;IAQ/C;;;;;;;;;;;;;OAaG;IACI,oBAAoB,CACzB,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,EACxE,OAAO,EAAE,0BAA0B;IACnC,6DAA6D;IAC7D,UAAU,EAAE,kCAAkC,EAC9C,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC,SAAS,CAAC;IAqLrB;;;;;OAKG;IACI,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIvD;;;;;;OAMG;IACI,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAIxE;;;;;;;;OAQG;IACI,iBAAiB,CACtB,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,GACvE,OAAO,CAAC,IAAI,CAAC;IA8ChB;;;;;;OAMG;IACI,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;CAIxD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,6BAA6B,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,WAAW,EAAE,qBAAqB,CAAC;IACnC,0DAA0D;IAC1D,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;;OAGG;IACH,uBAAuB,EAAE,wBAAwB,CAAC;IAClD;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kEAAkE;IAClE,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAClD;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,uCAAuC;IACvC,kBAAkB,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB"}
@@ -149,11 +149,6 @@ export default class ContentPreparer {
149
149
  checkIfReadyAndValidate();
150
150
  }, currentMediaSourceCanceller.signal);
151
151
  manifestFetcher.addEventListener("error", (err) => {
152
- sendMessage({
153
- type: "error" /* CoreMessageType.Error */,
154
- contentId,
155
- value: formatErrorForSender(err),
156
- });
157
152
  rej(err);
158
153
  }, contentCanceller.signal);
159
154
  manifestFetcher.start();
@@ -210,12 +205,15 @@ export default class ContentPreparer {
210
205
  * @returns {Promise}
211
206
  */
212
207
  reloadMediaSource(sendMessage) {
208
+ var _a;
213
209
  this._currentMediaSourceCanceller.cancel("ContentPreparer MediaSource reload");
214
210
  if (this._currentContent === null) {
215
211
  return Promise.reject(new Error("CP: No content anymore"));
216
212
  }
217
213
  this._currentContent.trackChoiceSetter.reset();
214
+ (_a = this._currentContent.coreTextSender) === null || _a === void 0 ? void 0 : _a.stop("ContentPreparer MediaSource reload");
218
215
  this._currentMediaSourceCanceller = new TaskCanceller("ContentPreparer MediaSource");
216
+ this._currentMediaSourceCanceller.linkToSignal(this._contentCanceller.signal);
219
217
  const [mediaSourceInterface, segmentSinksStore, coreTextSender] = createMediaSourceInterfaceAndSegmentSinksStore(sendMessage, this._currentContent.contentId, {
220
218
  useMseInWorker: this._currentContent.useMseInWorker,
221
219
  hasVideo: this._hasVideo,
@@ -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"}
@@ -907,15 +907,19 @@ function sendThumbnailData(sendMessage, contentPreparer, msg) {
907
907
  return respondWithError(new Error("Content changed"));
908
908
  }
909
909
  getThumbnailData(preparedContent.fetchThumbnailData, preparedContent.manifest, msg.value.periodId, msg.value.thumbnailTrackId, msg.value.time).then((result) => {
910
+ // Multiple thumbnail requests can share the same fetched payload.
911
+ // Transfer a copy here so replying to one request does not detach the
912
+ // ArrayBuffer that still has to be sent to another requester.
913
+ const data = result.data.slice(0);
910
914
  sendMessage({
911
915
  type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
912
916
  contentId: msg.contentId,
913
917
  value: {
914
918
  status: "success",
915
919
  requestId: msg.value.requestId,
916
- data: result,
920
+ data: Object.assign(Object.assign({}, result), { data }),
917
921
  },
918
- }, [result.data]);
922
+ }, [data]);
919
923
  }, (err) => {
920
924
  return respondWithError(err);
921
925
  });
@@ -21,12 +21,12 @@ export default class CoreTextDisplayerInterface {
21
21
  */
22
22
  pushTextData(infos) {
23
23
  return new Promise((resolve, reject) => {
24
+ this._queues.pushTextData.push({ resolve, reject });
24
25
  this._messageSender({
25
26
  type: "push-text-data" /* CoreMessageType.PushTextData */,
26
27
  contentId: this._contentId,
27
28
  value: infos,
28
29
  });
29
- this._queues.pushTextData.push({ resolve, reject });
30
30
  });
31
31
  }
32
32
  /**
@@ -34,12 +34,12 @@ export default class CoreTextDisplayerInterface {
34
34
  */
35
35
  remove(start, end) {
36
36
  return new Promise((resolve, reject) => {
37
+ this._queues.remove.push({ resolve, reject });
37
38
  this._messageSender({
38
39
  type: "remove-text-data" /* CoreMessageType.RemoveTextData */,
39
40
  contentId: this._contentId,
40
41
  value: { start, end },
41
42
  });
42
- this._queues.remove.push({ resolve, reject });
43
43
  });
44
44
  }
45
45
  /**
@@ -114,7 +114,7 @@ export default class CoreTextDisplayerInterface {
114
114
  onRemoveError(err) {
115
115
  const element = this._queues.remove.shift();
116
116
  if (element === undefined) {
117
- log.error("text", "pushTextData error for inexistant operation");
117
+ log.error("text", "remove error for inexistant operation");
118
118
  return;
119
119
  }
120
120
  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"}
@@ -108,6 +108,12 @@ export default class ManifestFetcher extends EventEmitter {
108
108
  */
109
109
  updateContentUrls(urls, refreshNow) {
110
110
  var _a;
111
+ // Keep track of the application-provided content URLs.
112
+ this._manifestUrls = urls;
113
+ // Indicate that we want to prioritize for the next refresh.
114
+ // Once a refreshed Manifest has been parsed we still let the Manifest's own
115
+ // URL list drive subsequent refreshes (e.g. if the transport/parser updated
116
+ // it on purpose).
111
117
  this._prioritizedContentUrl = (_a = urls === null || urls === void 0 ? void 0 : urls[0]) !== null && _a !== void 0 ? _a : undefined;
112
118
  if (refreshNow) {
113
119
  this.scheduleManualRefresh({
@@ -446,11 +452,17 @@ export default class ManifestFetcher extends EventEmitter {
446
452
  let fullRefresh;
447
453
  let refreshURL;
448
454
  if (this._prioritizedContentUrl !== null) {
455
+ // `updateContentUrls` explicitly requested that the next refresh uses that
456
+ // URL. This override is one-shot on purpose.
449
457
  fullRefresh = true;
450
458
  refreshURL = this._prioritizedContentUrl;
451
459
  this._prioritizedContentUrl = null;
452
460
  }
453
461
  else {
462
+ // Outside of that explicit one-shot override, prefer the URLs currently
463
+ // exposed by the Manifest itself. This allows parser/content-level URL
464
+ // updates (e.g. redirects or manifest-provided alternatives) to stay the
465
+ // source of truth after the refresh completed.
454
466
  fullRefresh = !enablePartialRefresh || manifestUpdateUrl === undefined;
455
467
  refreshURL = fullRefresh ? manifest.getUrls()[0] : manifestUpdateUrl;
456
468
  }
@@ -173,7 +173,7 @@ cdnPrioritizer) {
173
173
  * @returns {Promise}
174
174
  */
175
175
  function callLoaderWithUrl(cdnMetadata) {
176
- return loadThumbnail(cdnMetadata, thumbnail, pipelineRequestOptions, cancellationSignal);
176
+ return loadThumbnail(cdnMetadata, thumbnail, pipelineRequestOptions, requestCanceller.signal);
177
177
  }
178
178
  /**
179
179
  * 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"}
@@ -18,7 +18,6 @@ import log from "../../../log";
18
18
  import cancellableSleep from "../../../utils/cancellable_sleep";
19
19
  import getFuzzedDelay from "../../../utils/get_fuzzed_delay";
20
20
  import getTimestamp from "../../../utils/monotonic_timestamp";
21
- import noop from "../../../utils/noop";
22
21
  import { RequestError } from "../../../utils/request";
23
22
  import TaskCanceller from "../../../utils/task_canceller";
24
23
  /**
@@ -256,7 +255,7 @@ export async function scheduleRequestWithCdns(cdns, cdnPrioritizer, performReque
256
255
  cdnPrioritizer === null || cdnPrioritizer === void 0 ? void 0 : cdnPrioritizer.addEventListener("priorityChange", () => {
257
256
  const updatedPrioritaryCdn = getCdnToRequest();
258
257
  if (cancellationSignal.isCancelled()) {
259
- throw cancellationSignal.cancellationError;
258
+ return;
260
259
  }
261
260
  if (updatedPrioritaryCdn === undefined) {
262
261
  return cleanAndReject(prevRequestError);
@@ -266,7 +265,7 @@ export async function scheduleRequestWithCdns(cdns, cdnPrioritizer, performReque
266
265
  waitPotentialBackoffAndRequest(updatedPrioritaryCdn, prevRequestError).then(cleanAndResolve, cleanAndReject);
267
266
  }
268
267
  }, canceller.signal);
269
- cancellableSleep(blockedFor, canceller.signal).then(() => requestCdn(nextWantedCdn).then(cleanAndResolve, cleanAndReject), noop);
268
+ cancellableSleep(blockedFor, canceller.signal).then(() => requestCdn(nextWantedCdn).then(cleanAndResolve, cleanAndReject), (err) => cleanAndReject(cancellationSignal.isCancelled() ? cancellationSignal.cancellationError : err));
270
269
  function cleanAndResolve(response) {
271
270
  unlinkCanceller();
272
271
  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"}
@@ -26,8 +26,6 @@ import TaskCanceller from "../../utils/task_canceller";
26
26
  *
27
27
  * @param {Object} opt
28
28
  * @param {Object} cancellationSignal
29
- *
30
- * TODO Move to main thread?
31
29
  */
32
30
  export default function BufferGarbageCollector({ segmentSink, playbackObserver, maxBufferBehind, maxBufferAhead, }, cancellationSignal) {
33
31
  let lastPosition;
@@ -51,7 +49,6 @@ export default function BufferGarbageCollector({ segmentSink, playbackObserver,
51
49
  }
52
50
  maxBufferBehind.onUpdate(clean, { clearSignal: cancellationSignal });
53
51
  maxBufferAhead.onUpdate(clean, { clearSignal: cancellationSignal });
54
- clean();
55
52
  }
56
53
  /**
57
54
  * 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"}
@@ -98,9 +98,9 @@ export default class TextSegmentSink extends SegmentSink {
98
98
  getPendingOperations() {
99
99
  return this._pendingOperations.map((p) => p.operation);
100
100
  }
101
- dispose() {
101
+ dispose(reason) {
102
102
  log.debug("Stream", "Disposing TextSegmentSink");
103
- this._sender.reset();
103
+ this._sender.stop(reason);
104
104
  }
105
105
  _addToOperationQueue(promise, operation) {
106
106
  const queueObject = { operation, promise };
@@ -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"}
@@ -119,11 +119,11 @@ export default function AdaptationStream({ playbackObserver, content, options, r
119
119
  // decipherability updates, "`Representation` avoidance" etc.
120
120
  const newRepresentations = getRepresentationList(content.adaptation.representations, newRepIds);
121
121
  representationsList.setValueIfChanged(newRepresentations);
122
- cancelCurrentStreams = new TaskCanceller("AdaptationStream: RepresentationStream Group " + adaptation.type);
123
- cancelCurrentStreams.linkToSignal(adapStreamCanceller.signal);
124
- onRepresentationsChoiceChange(val, cancelCurrentStreams.signal).catch((err) => {
125
- if ((cancelCurrentStreams === null || cancelCurrentStreams === void 0 ? void 0 : cancelCurrentStreams.isUsed()) === true &&
126
- TaskCanceller.isCancellationError(err)) {
122
+ const currentStreamCanceller = new TaskCanceller("AdaptationStream: RepresentationStream Group " + adaptation.type);
123
+ cancelCurrentStreams = currentStreamCanceller;
124
+ currentStreamCanceller.linkToSignal(adapStreamCanceller.signal);
125
+ onRepresentationsChoiceChange(val, currentStreamCanceller.signal).catch((err) => {
126
+ if (currentStreamCanceller.isUsed() && TaskCanceller.isCancellationError(err)) {
127
127
  return;
128
128
  }
129
129
  adapStreamCanceller.cancel("RepresentationStream err");
@@ -445,7 +445,7 @@ export default function AdaptationStream({ playbackObserver, content, options, r
445
445
  // When `wba` is equal to `Infinity`, dividing it will still make it equal
446
446
  // to `Infinity`. To make the `bufferGoalRatio` still have an effect, we
447
447
  // just starts from a `wba` set to the high value of 5 minutes.
448
- return 5 * 60 * 1000 * bufferGoalRatio;
448
+ return 5 * 60 * bufferGoalRatio;
449
449
  }
450
450
  return wba * bufferGoalRatio;
451
451
  }
@@ -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"}