rx-player 4.4.0 → 4.4.1-dev.2025101500

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 (341) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +52 -113
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  6. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  7. package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +1 -0
  8. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.js +3 -3
  9. package/dist/{es2017/core/main/worker → commonjs/core/entry}/content_preparer.d.ts +22 -15
  10. package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -0
  11. package/dist/commonjs/core/{main/worker → entry}/content_preparer.js +62 -64
  12. package/dist/{es2017/core/main/common → commonjs/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  13. package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  14. package/dist/commonjs/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  15. package/dist/commonjs/core/entry/core_entry.d.ts +36 -0
  16. package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -0
  17. package/dist/commonjs/core/{main/worker/worker_main.js → entry/core_entry.js} +192 -153
  18. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  19. package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  20. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +22 -22
  21. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  22. package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  23. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  24. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  25. package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  26. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  27. package/dist/{es2017/core/main/common → commonjs/core/entry}/get_thumbnail_data.d.ts +3 -3
  28. package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +1 -0
  29. package/dist/commonjs/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  30. package/dist/commonjs/core/entry/index.d.ts +5 -0
  31. package/dist/commonjs/core/entry/index.d.ts.map +1 -0
  32. package/dist/commonjs/core/entry/index.js +4 -0
  33. package/dist/{es2017/core/main/common → commonjs/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  34. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  35. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  36. package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +1 -0
  37. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.js +4 -4
  38. package/dist/commonjs/core/entry/utils.d.ts +3 -0
  39. package/dist/commonjs/core/entry/utils.d.ts.map +1 -0
  40. package/dist/commonjs/core/entry/utils.js +11 -0
  41. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  42. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +17 -0
  43. package/dist/commonjs/core/types.d.ts +519 -1
  44. package/dist/commonjs/core/types.d.ts.map +1 -1
  45. package/dist/commonjs/core/types.js +1 -0
  46. package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
  47. package/dist/commonjs/experimental/features/local.js +7 -1
  48. package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
  49. package/dist/commonjs/experimental/features/metaplaylist.js +7 -1
  50. package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
  51. package/dist/commonjs/experimental/features/multi_thread.js +6 -2
  52. package/dist/commonjs/features/features_object.js +1 -1
  53. package/dist/commonjs/features/list/dash.d.ts.map +1 -1
  54. package/dist/commonjs/features/list/dash.js +7 -1
  55. package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
  56. package/dist/commonjs/features/list/dash_wasm.js +7 -1
  57. package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
  58. package/dist/commonjs/features/list/media_source_main.js +7 -1
  59. package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
  60. package/dist/commonjs/features/list/smooth.js +7 -1
  61. package/dist/commonjs/features/types.d.ts +20 -4
  62. package/dist/commonjs/features/types.d.ts.map +1 -1
  63. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  64. package/dist/commonjs/main_thread/api/public_api.js +39 -42
  65. package/dist/commonjs/main_thread/core_interface/base.d.ts +13 -0
  66. package/dist/commonjs/main_thread/core_interface/base.d.ts.map +1 -0
  67. package/dist/commonjs/main_thread/core_interface/base.js +32 -0
  68. package/dist/commonjs/main_thread/core_interface/monothread.d.ts +13 -0
  69. package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +1 -0
  70. package/dist/commonjs/main_thread/core_interface/monothread.js +56 -0
  71. package/dist/commonjs/main_thread/core_interface/multithread.d.ts +25 -0
  72. package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +1 -0
  73. package/dist/commonjs/main_thread/core_interface/multithread.js +67 -0
  74. package/dist/commonjs/main_thread/core_interface/types.d.ts +6 -0
  75. package/dist/commonjs/main_thread/core_interface/types.d.ts.map +1 -0
  76. package/dist/commonjs/main_thread/core_interface/types.js +2 -0
  77. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +166 -108
  78. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  79. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +1492 -919
  80. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  81. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.js +2 -1
  82. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  83. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  84. package/dist/commonjs/main_thread/types.d.ts +537 -0
  85. package/dist/commonjs/main_thread/types.d.ts.map +1 -1
  86. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  87. package/dist/commonjs/manifest/utils.js +18 -4
  88. package/dist/commonjs/mse/worker_media_source_interface.d.ts +2 -2
  89. package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
  90. package/dist/commonjs/mse/worker_media_source_interface.js +12 -12
  91. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts +1 -1
  92. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  93. package/dist/commonjs/parsers/manifest/smooth/create_parser.js +31 -27
  94. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  95. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  96. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  97. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  98. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  99. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.js +37 -6
  100. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  101. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  102. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  103. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  104. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +28 -5
  105. package/dist/{es2017/playback_observer/worker_playback_observer.d.ts → commonjs/playback_observer/core_playback_observer.d.ts} +8 -8
  106. package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +1 -0
  107. package/dist/commonjs/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +13 -13
  108. package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
  109. package/dist/commonjs/transports/smooth/pipelines.js +25 -3
  110. package/dist/commonjs/worker_entry_point.js +62 -2
  111. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  112. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  113. package/dist/es2017/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  114. package/dist/es2017/core/entry/FreezeResolver.d.ts.map +1 -0
  115. package/dist/es2017/core/{main/common → entry}/FreezeResolver.js +3 -3
  116. package/dist/{commonjs/core/main/worker → es2017/core/entry}/content_preparer.d.ts +22 -15
  117. package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -0
  118. package/dist/es2017/core/{main/worker → entry}/content_preparer.js +53 -55
  119. package/dist/{commonjs/core/main/common → es2017/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  120. package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  121. package/dist/es2017/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  122. package/dist/es2017/core/entry/core_entry.d.ts +36 -0
  123. package/dist/es2017/core/entry/core_entry.d.ts.map +1 -0
  124. package/dist/es2017/core/{main/worker/worker_main.js → entry/core_entry.js} +153 -114
  125. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  126. package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  127. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +10 -10
  128. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  129. package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  130. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  131. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  132. package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  133. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  134. package/dist/{commonjs/core/main/common → es2017/core/entry}/get_thumbnail_data.d.ts +3 -3
  135. package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +1 -0
  136. package/dist/es2017/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  137. package/dist/es2017/core/entry/index.d.ts +5 -0
  138. package/dist/es2017/core/entry/index.d.ts.map +1 -0
  139. package/dist/es2017/core/entry/index.js +2 -0
  140. package/dist/{commonjs/core/main/common → es2017/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  141. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  142. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  143. package/dist/es2017/core/entry/track_choice_setter.d.ts.map +1 -0
  144. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.js +4 -4
  145. package/dist/es2017/core/entry/utils.d.ts +3 -0
  146. package/dist/es2017/core/entry/utils.d.ts.map +1 -0
  147. package/dist/es2017/core/entry/utils.js +8 -0
  148. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  149. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +18 -1
  150. package/dist/es2017/core/types.d.ts +519 -1
  151. package/dist/es2017/core/types.d.ts.map +1 -1
  152. package/dist/es2017/core/types.js +1 -0
  153. package/dist/es2017/experimental/features/local.d.ts.map +1 -1
  154. package/dist/es2017/experimental/features/local.js +7 -1
  155. package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
  156. package/dist/es2017/experimental/features/metaplaylist.js +7 -1
  157. package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
  158. package/dist/es2017/experimental/features/multi_thread.js +6 -2
  159. package/dist/es2017/features/features_object.js +1 -1
  160. package/dist/es2017/features/list/dash.d.ts.map +1 -1
  161. package/dist/es2017/features/list/dash.js +7 -1
  162. package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
  163. package/dist/es2017/features/list/dash_wasm.js +7 -1
  164. package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
  165. package/dist/es2017/features/list/media_source_main.js +7 -1
  166. package/dist/es2017/features/list/smooth.d.ts.map +1 -1
  167. package/dist/es2017/features/list/smooth.js +7 -1
  168. package/dist/es2017/features/types.d.ts +20 -4
  169. package/dist/es2017/features/types.d.ts.map +1 -1
  170. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  171. package/dist/es2017/main_thread/api/public_api.js +40 -43
  172. package/dist/es2017/main_thread/core_interface/base.d.ts +13 -0
  173. package/dist/es2017/main_thread/core_interface/base.d.ts.map +1 -0
  174. package/dist/es2017/main_thread/core_interface/base.js +28 -0
  175. package/dist/es2017/main_thread/core_interface/monothread.d.ts +13 -0
  176. package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +1 -0
  177. package/dist/es2017/main_thread/core_interface/monothread.js +32 -0
  178. package/dist/es2017/main_thread/core_interface/multithread.d.ts +25 -0
  179. package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +1 -0
  180. package/dist/es2017/main_thread/core_interface/multithread.js +45 -0
  181. package/dist/es2017/main_thread/core_interface/types.d.ts +6 -0
  182. package/dist/es2017/main_thread/core_interface/types.d.ts.map +1 -0
  183. package/dist/es2017/main_thread/core_interface/types.js +1 -0
  184. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +166 -108
  185. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  186. package/dist/es2017/main_thread/init/media_source_content_initializer.js +1405 -760
  187. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  188. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.js +2 -1
  189. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  190. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  191. package/dist/es2017/main_thread/types.d.ts +537 -0
  192. package/dist/es2017/main_thread/types.d.ts.map +1 -1
  193. package/dist/es2017/manifest/utils.d.ts.map +1 -1
  194. package/dist/es2017/manifest/utils.js +16 -4
  195. package/dist/es2017/mse/worker_media_source_interface.d.ts +2 -2
  196. package/dist/es2017/mse/worker_media_source_interface.d.ts.map +1 -1
  197. package/dist/es2017/mse/worker_media_source_interface.js +12 -12
  198. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts +1 -1
  199. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  200. package/dist/es2017/parsers/manifest/smooth/create_parser.js +31 -27
  201. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  202. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  203. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  204. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  205. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  206. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +15 -6
  207. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  208. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  209. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  210. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  211. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +6 -5
  212. package/dist/{commonjs/playback_observer/worker_playback_observer.d.ts → es2017/playback_observer/core_playback_observer.d.ts} +8 -8
  213. package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +1 -0
  214. package/dist/es2017/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +2 -2
  215. package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
  216. package/dist/es2017/transports/smooth/pipelines.js +25 -3
  217. package/dist/es2017/worker_entry_point.js +62 -2
  218. package/dist/rx-player.js +21882 -19021
  219. package/dist/rx-player.min.js +20 -20
  220. package/dist/worker.js +8 -8
  221. package/package.json +1 -1
  222. package/src/README.md +88 -198
  223. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  224. package/src/core/{main/common → entry}/FreezeResolver.ts +7 -7
  225. package/src/core/{main → entry}/README.md +1 -1
  226. package/src/core/{main/worker → entry}/content_preparer.ts +77 -76
  227. package/src/core/{main/common → entry}/content_time_boundaries_observer.ts +10 -10
  228. package/src/core/{main/worker/worker_main.ts → entry/core_entry.ts} +223 -149
  229. package/src/core/{main/worker/worker_text_displayer_interface.ts → entry/core_text_displayer_interface.ts} +26 -26
  230. package/src/core/{main/common → entry}/create_content_time_boundaries_observer.ts +7 -7
  231. package/src/core/{main/common → entry}/get_buffered_data_per_media_buffer.ts +6 -6
  232. package/src/core/{main/common → entry}/get_thumbnail_data.ts +5 -5
  233. package/src/core/entry/index.ts +4 -0
  234. package/src/core/{main/common → entry}/synchronize_sinks_on_observation.ts +2 -2
  235. package/src/core/{main/worker → entry}/track_choice_setter.ts +7 -7
  236. package/src/core/entry/utils.ts +11 -0
  237. package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -1
  238. package/src/core/types.ts +631 -3
  239. package/src/experimental/features/__tests__/local.test.ts +11 -2
  240. package/src/experimental/features/__tests__/metaplaylist.test.ts +11 -2
  241. package/src/experimental/features/__tests__/multi_thread.test.ts +8 -3
  242. package/src/experimental/features/local.ts +7 -1
  243. package/src/experimental/features/metaplaylist.ts +7 -1
  244. package/src/experimental/features/multi_thread.ts +6 -2
  245. package/src/features/features_object.ts +1 -1
  246. package/src/features/list/__tests__/dash.test.ts +12 -3
  247. package/src/features/list/__tests__/smooth.test.ts +11 -2
  248. package/src/features/list/dash.ts +7 -1
  249. package/src/features/list/dash_wasm.ts +7 -1
  250. package/src/features/list/media_source_main.ts +7 -1
  251. package/src/features/list/smooth.ts +7 -1
  252. package/src/features/types.ts +23 -4
  253. package/src/main_thread/README.md +8 -0
  254. package/src/main_thread/api/public_api.ts +46 -48
  255. package/src/main_thread/core_interface/README.md +22 -0
  256. package/src/main_thread/core_interface/base.ts +36 -0
  257. package/src/main_thread/core_interface/monothread.ts +46 -0
  258. package/src/main_thread/core_interface/multithread.ts +49 -0
  259. package/src/main_thread/core_interface/types.ts +5 -0
  260. package/src/main_thread/init/media_source_content_initializer.ts +2034 -1152
  261. package/src/main_thread/init/utils/create_core_playback_observer.ts +2 -1
  262. package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
  263. package/src/main_thread/types.ts +610 -0
  264. package/src/manifest/utils.ts +20 -4
  265. package/src/mse/worker_media_source_interface.ts +35 -35
  266. package/src/parsers/manifest/smooth/create_parser.ts +40 -34
  267. package/src/parsers/manifest/smooth/parse_C_nodes.ts +19 -8
  268. package/src/parsers/manifest/smooth/parse_protection_node.ts +17 -9
  269. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
  270. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +10 -7
  271. package/src/playback_observer/{worker_playback_observer.ts → core_playback_observer.ts} +13 -13
  272. package/src/transports/smooth/pipelines.ts +25 -5
  273. package/src/worker_entry_point.ts +71 -2
  274. package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +0 -1
  275. package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  276. package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  277. package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  278. package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  279. package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  280. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +0 -1
  281. package/dist/commonjs/core/main/worker/globals.d.ts +0 -14
  282. package/dist/commonjs/core/main/worker/globals.d.ts.map +0 -1
  283. package/dist/commonjs/core/main/worker/globals.js +0 -26
  284. package/dist/commonjs/core/main/worker/index.d.ts +0 -3
  285. package/dist/commonjs/core/main/worker/index.d.ts.map +0 -1
  286. package/dist/commonjs/core/main/worker/index.js +0 -4
  287. package/dist/commonjs/core/main/worker/send_message.d.ts +0 -4
  288. package/dist/commonjs/core/main/worker/send_message.d.ts.map +0 -1
  289. package/dist/commonjs/core/main/worker/send_message.js +0 -23
  290. package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +0 -1
  291. package/dist/commonjs/core/main/worker/worker_main.d.ts +0 -2
  292. package/dist/commonjs/core/main/worker/worker_main.d.ts.map +0 -1
  293. package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  294. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  295. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  296. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +0 -1713
  297. package/dist/commonjs/main_thread/init/send_message.d.ts +0 -3
  298. package/dist/commonjs/main_thread/init/send_message.d.ts.map +0 -1
  299. package/dist/commonjs/main_thread/init/send_message.js +0 -13
  300. package/dist/commonjs/multithread_types.d.ts +0 -915
  301. package/dist/commonjs/multithread_types.d.ts.map +0 -1
  302. package/dist/commonjs/multithread_types.js +0 -7
  303. package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +0 -1
  304. package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +0 -1
  305. package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  306. package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  307. package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  308. package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  309. package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  310. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +0 -1
  311. package/dist/es2017/core/main/worker/globals.d.ts +0 -14
  312. package/dist/es2017/core/main/worker/globals.d.ts.map +0 -1
  313. package/dist/es2017/core/main/worker/globals.js +0 -18
  314. package/dist/es2017/core/main/worker/index.d.ts +0 -3
  315. package/dist/es2017/core/main/worker/index.d.ts.map +0 -1
  316. package/dist/es2017/core/main/worker/index.js +0 -2
  317. package/dist/es2017/core/main/worker/send_message.d.ts +0 -4
  318. package/dist/es2017/core/main/worker/send_message.d.ts.map +0 -1
  319. package/dist/es2017/core/main/worker/send_message.js +0 -19
  320. package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +0 -1
  321. package/dist/es2017/core/main/worker/worker_main.d.ts +0 -2
  322. package/dist/es2017/core/main/worker/worker_main.d.ts.map +0 -1
  323. package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  324. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  325. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  326. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +0 -1559
  327. package/dist/es2017/main_thread/init/send_message.d.ts +0 -3
  328. package/dist/es2017/main_thread/init/send_message.d.ts.map +0 -1
  329. package/dist/es2017/main_thread/init/send_message.js +0 -10
  330. package/dist/es2017/multithread_types.d.ts +0 -915
  331. package/dist/es2017/multithread_types.d.ts.map +0 -1
  332. package/dist/es2017/multithread_types.js +0 -6
  333. package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +0 -1
  334. package/src/core/main/worker/globals.ts +0 -38
  335. package/src/core/main/worker/index.ts +0 -2
  336. package/src/core/main/worker/send_message.ts +0 -28
  337. package/src/main_thread/init/multi_thread_content_initializer.ts +0 -2330
  338. package/src/main_thread/init/send_message.ts +0 -15
  339. package/src/multithread_types.ts +0 -1095
  340. /package/dist/commonjs/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
  341. /package/dist/es2017/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
@@ -47,35 +47,55 @@ var __values = (this && this.__values) || function(o) {
47
47
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.default = initializeWorkerMain;
51
- var config_1 = require("../../../config");
52
- var errors_1 = require("../../../errors");
53
- var features_1 = require("../../../features");
54
- var log_1 = require("../../../log");
55
- var classes_1 = require("../../../manifest/classes");
56
- var js_parser_1 = require("../../../parsers/manifest/dash/js-parser");
57
- var wasm_parser_1 = require("../../../parsers/manifest/dash/wasm-parser");
58
- var playback_observer_1 = require("../../../playback_observer");
59
- var worker_playback_observer_1 = require("../../../playback_observer/worker_playback_observer");
60
- var dash_1 = require("../../../transports/dash");
61
- var array_find_1 = require("../../../utils/array_find");
62
- var assert_1 = require("../../../utils/assert");
63
- var global_scope_1 = require("../../../utils/global_scope");
64
- var monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
65
- var object_assign_1 = require("../../../utils/object_assign");
66
- var reference_1 = require("../../../utils/reference");
67
- var task_canceller_1 = require("../../../utils/task_canceller");
68
- var stream_1 = require("../../stream");
69
- var create_content_time_boundaries_observer_1 = require("../common/create_content_time_boundaries_observer");
70
- var get_buffered_data_per_media_buffer_1 = require("../common/get_buffered_data_per_media_buffer");
71
- var get_thumbnail_data_1 = require("../common/get_thumbnail_data");
72
- var synchronize_sinks_on_observation_1 = require("../common/synchronize_sinks_on_observation");
50
+ exports.default = initializeCoreEntry;
51
+ var config_1 = require("../../config");
52
+ var errors_1 = require("../../errors");
53
+ var features_1 = require("../../features");
54
+ var log_1 = require("../../log");
55
+ var classes_1 = require("../../manifest/classes");
56
+ var playback_observer_1 = require("../../playback_observer");
57
+ var core_playback_observer_1 = require("../../playback_observer/core_playback_observer");
58
+ var array_find_1 = require("../../utils/array_find");
59
+ var assert_1 = require("../../utils/assert");
60
+ var monotonic_timestamp_1 = require("../../utils/monotonic_timestamp");
61
+ var object_assign_1 = require("../../utils/object_assign");
62
+ var reference_1 = require("../../utils/reference");
63
+ var task_canceller_1 = require("../../utils/task_canceller");
64
+ var stream_1 = require("../stream");
73
65
  var content_preparer_1 = require("./content_preparer");
74
- var globals_1 = require("./globals");
75
- var send_message_1 = require("./send_message");
76
- function initializeWorkerMain() {
66
+ var create_content_time_boundaries_observer_1 = require("./create_content_time_boundaries_observer");
67
+ var get_buffered_data_per_media_buffer_1 = require("./get_buffered_data_per_media_buffer");
68
+ var get_thumbnail_data_1 = require("./get_thumbnail_data");
69
+ var synchronize_sinks_on_observation_1 = require("./synchronize_sinks_on_observation");
70
+ var utils_1 = require("./utils");
71
+ /**
72
+ * Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
73
+ * entry point to all its "core" code.
74
+ *
75
+ * Its role is to receive and react to messages coming from "main thead", which
76
+ * may include loading and playing a content, and to send back messages for the main
77
+ * thread.
78
+ * @param {Function} setMessageReceiver - Declares the function that will
79
+ * receive messages coming from the "main thread" part of the RxPlayer logic.
80
+ * @param {Function} sendMessage - Function allowing to send messages to the
81
+ * "main thread" part of the RxPlayer logic.
82
+ */
83
+ function initializeCoreEntry(setMessageReceiver, sendMessage) {
84
+ var _a = config_1.default.getCurrent(), DEFAULT_WANTED_BUFFER_AHEAD = _a.DEFAULT_WANTED_BUFFER_AHEAD, DEFAULT_MAX_VIDEO_BUFFER_SIZE = _a.DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_MAX_BUFFER_AHEAD = _a.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = _a.DEFAULT_MAX_BUFFER_BEHIND;
85
+ var refs = {
86
+ wantedBufferAhead: new reference_1.default(DEFAULT_WANTED_BUFFER_AHEAD),
87
+ maxVideoBufferSize: new reference_1.default(DEFAULT_MAX_VIDEO_BUFFER_SIZE),
88
+ maxBufferAhead: new reference_1.default(DEFAULT_MAX_BUFFER_AHEAD),
89
+ maxBufferBehind: new reference_1.default(DEFAULT_MAX_BUFFER_BEHIND),
90
+ limitVideoResolution: new reference_1.default({
91
+ height: undefined,
92
+ width: undefined,
93
+ pixelRatio: 1,
94
+ }),
95
+ throttleVideoBitrate: new reference_1.default(Infinity),
96
+ };
77
97
  /**
78
- * `true` once the worker has been initialized.
98
+ * `true` once the CoreEntry has been initialized.
79
99
  * Allow to enforce the fact that it is only initialized once.
80
100
  */
81
101
  var isInitialized = false;
@@ -91,46 +111,42 @@ function initializeWorkerMain() {
91
111
  * `null` if there's no content loaded currently.
92
112
  */
93
113
  var currentContentHandle = null;
94
- // Initialize Manually a `DashWasmParser` and add the feature.
95
- // TODO allow worker-side feature-switching? Not sure how
96
- var dashWasmParser = new wasm_parser_1.default();
97
- features_1.default.dashParsers.wasm = dashWasmParser;
98
- features_1.default.dashParsers.js = js_parser_1.default;
99
- features_1.default.transports.dash = dash_1.default;
100
114
  /**
101
115
  * When set, emit playback observation made on the main thread.
102
116
  */
103
117
  var playbackObservationRef = null;
104
- global_scope_1.default.onmessageerror = function (_msg) {
105
- log_1.default.error("Core", "Error when receiving message from main thread.");
106
- };
107
- onmessage = function (e) {
118
+ setMessageReceiver(function (e) {
108
119
  var _a, _b;
109
120
  log_1.default.debug("Core", "received message", { name: e.data.type });
110
121
  var msg = e.data;
111
122
  switch (msg.type) {
112
123
  case "init" /* MainThreadMessageType.Init */:
113
- (0, assert_1.default)(!isInitialized);
114
- isInitialized = true;
115
- (0, monotonic_timestamp_1.scaleTimestamp)(msg.value);
116
- updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
117
- if (msg.value.dashWasmUrl !== undefined && dashWasmParser.isCompatible()) {
118
- dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch(function (err) {
119
- var error = err instanceof Error ? err.toString() : "Unknown Error";
120
- log_1.default.error("Core", "Could not initialize DASH_WASM parser", error);
121
- });
122
- }
123
- if (!msg.value.hasVideo) {
124
- contentPreparer.disposeCurrentContent();
125
- contentPreparer = new content_preparer_1.default({ hasVideo: msg.value.hasVideo });
124
+ {
125
+ (0, assert_1.default)(!isInitialized);
126
+ isInitialized = true;
127
+ (0, monotonic_timestamp_1.scaleTimestamp)(msg.value);
128
+ updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
129
+ var dashWasmParser = features_1.default.dashParsers.wasm;
130
+ if (dashWasmParser !== null &&
131
+ msg.value.dashWasmUrl !== undefined &&
132
+ dashWasmParser.isCompatible()) {
133
+ dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch(function (err) {
134
+ var error = err instanceof Error ? err.toString() : "Unknown Error";
135
+ log_1.default.error("Core", "Could not initialize DASH_WASM parser", error);
136
+ });
137
+ }
138
+ if (!msg.value.hasVideo) {
139
+ contentPreparer.disposeCurrentContent();
140
+ contentPreparer = new content_preparer_1.default({ hasVideo: msg.value.hasVideo });
141
+ }
142
+ sendMessage({ type: "init-success" /* CoreMessageType.InitSuccess */, value: null });
126
143
  }
127
- (0, send_message_1.default)({ type: "init-success" /* WorkerMessageType.InitSuccess */, value: null });
128
144
  break;
129
145
  case "log-level-update" /* MainThreadMessageType.LogLevelUpdate */:
130
146
  updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
131
147
  break;
132
148
  case "prepare" /* MainThreadMessageType.PrepareContent */:
133
- prepareNewContent(contentPreparer, msg.value);
149
+ prepareNewContent(sendMessage, contentPreparer, msg.value, refs);
134
150
  break;
135
151
  case "start" /* MainThreadMessageType.StartPreparedContent */: {
136
152
  var preparedContent = contentPreparer.getCurrentContent();
@@ -143,7 +159,7 @@ function initializeWorkerMain() {
143
159
  position: new (playback_observer_1.ObservationPosition.bind.apply(playback_observer_1.ObservationPosition, __spreadArray([void 0], __read(msg.value.initialObservation.position), false)))(),
144
160
  }));
145
161
  playbackObservationRef = currentContentObservationRef;
146
- currentContentHandle = loadPreparedContent(msg.value, contentPreparer, currentContentObservationRef);
162
+ currentContentHandle = loadPreparedContent(sendMessage, msg.value, contentPreparer, currentContentObservationRef, refs);
147
163
  break;
148
164
  }
149
165
  case "observation" /* MainThreadMessageType.PlaybackObservation */: {
@@ -166,7 +182,7 @@ function initializeWorkerMain() {
166
182
  break;
167
183
  }
168
184
  case "ref-update" /* MainThreadMessageType.ReferenceUpdate */:
169
- updateGlobalReference(msg);
185
+ updateCoreReference(msg, refs);
170
186
  break;
171
187
  case "stop" /* MainThreadMessageType.StopContent */:
172
188
  if (msg.contentId !== ((_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId)) {
@@ -280,18 +296,18 @@ function initializeWorkerMain() {
280
296
  try {
281
297
  var warning = preparedContent.manifest.updateCodecSupport(newEvaluatedCodecs);
282
298
  if (warning !== null) {
283
- (0, send_message_1.default)({
284
- type: "warning" /* WorkerMessageType.Warning */,
299
+ sendMessage({
300
+ type: "warning" /* CoreMessageType.Warning */,
285
301
  contentId: preparedContent.contentId,
286
- value: (0, send_message_1.formatErrorForSender)(warning),
302
+ value: (0, utils_1.formatErrorForSender)(warning),
287
303
  });
288
304
  }
289
305
  }
290
306
  catch (err) {
291
- (0, send_message_1.default)({
292
- type: "error" /* WorkerMessageType.Error */,
307
+ sendMessage({
308
+ type: "error" /* CoreMessageType.Error */,
293
309
  contentId: preparedContent.contentId,
294
- value: (0, send_message_1.formatErrorForSender)(err),
310
+ value: (0, utils_1.formatErrorForSender)(err),
295
311
  });
296
312
  }
297
313
  break;
@@ -325,11 +341,11 @@ function initializeWorkerMain() {
325
341
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
326
342
  return;
327
343
  }
328
- if (preparedContent.workerTextSender === null) {
344
+ if (preparedContent.coreTextSender === null) {
329
345
  log_1.default.error("Core", "Added text track but text track aren't enabled");
330
346
  return;
331
347
  }
332
- preparedContent.workerTextSender.onPushedTrackSuccess(msg.value.ranges);
348
+ preparedContent.coreTextSender.onPushedTrackSuccess(msg.value.ranges);
333
349
  break;
334
350
  }
335
351
  case "push-text-error" /* MainThreadMessageType.PushTextDataError */: {
@@ -337,11 +353,11 @@ function initializeWorkerMain() {
337
353
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
338
354
  return;
339
355
  }
340
- if (preparedContent.workerTextSender === null) {
356
+ if (preparedContent.coreTextSender === null) {
341
357
  log_1.default.error("Core", "Added text track but text track aren't enabled");
342
358
  return;
343
359
  }
344
- preparedContent.workerTextSender.onPushedTrackError(new Error(msg.value.message));
360
+ preparedContent.coreTextSender.onPushedTrackError(new Error(msg.value.message));
345
361
  break;
346
362
  }
347
363
  case "remove-text-success" /* MainThreadMessageType.RemoveTextDataSuccess */: {
@@ -349,11 +365,11 @@ function initializeWorkerMain() {
349
365
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
350
366
  return;
351
367
  }
352
- if (preparedContent.workerTextSender === null) {
368
+ if (preparedContent.coreTextSender === null) {
353
369
  log_1.default.error("Core", "Removed text track but text track aren't enabled");
354
370
  return;
355
371
  }
356
- preparedContent.workerTextSender.onRemoveSuccess(msg.value.ranges);
372
+ preparedContent.coreTextSender.onRemoveSuccess(msg.value.ranges);
357
373
  break;
358
374
  }
359
375
  case "remove-text-error" /* MainThreadMessageType.RemoveTextDataError */: {
@@ -361,19 +377,19 @@ function initializeWorkerMain() {
361
377
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
362
378
  return;
363
379
  }
364
- if (preparedContent.workerTextSender === null) {
380
+ if (preparedContent.coreTextSender === null) {
365
381
  log_1.default.error("Core", "Removed text track but text track aren't enabled");
366
382
  return;
367
383
  }
368
- preparedContent.workerTextSender.onRemoveError(new Error(msg.value.message));
384
+ preparedContent.coreTextSender.onRemoveError(new Error(msg.value.message));
369
385
  break;
370
386
  }
371
387
  case "pull-segment-sink-store-infos" /* MainThreadMessageType.PullSegmentSinkStoreInfos */: {
372
- sendSegmentSinksStoreInfos(contentPreparer, msg.value.requestId);
388
+ sendSegmentSinksStoreInfos(sendMessage, contentPreparer, msg.value.requestId);
373
389
  break;
374
390
  }
375
391
  case "thumbnail-request" /* MainThreadMessageType.ThumbnailDataRequest */: {
376
- sendThumbnailData(contentPreparer, msg);
392
+ sendThumbnailData(sendMessage, contentPreparer, msg);
377
393
  break;
378
394
  }
379
395
  case "config-update" /* MainThreadMessageType.ConfigUpdate */: {
@@ -383,48 +399,68 @@ function initializeWorkerMain() {
383
399
  default:
384
400
  (0, assert_1.assertUnreachable)(msg);
385
401
  }
386
- };
402
+ });
387
403
  }
388
- function prepareNewContent(contentPreparer, contentInitData) {
389
- contentPreparer.initializeNewContent(contentInitData).then(function (manifest) {
390
- (0, send_message_1.default)({
391
- type: "manifest-ready" /* WorkerMessageType.ManifestReady */,
404
+ /**
405
+ * Performs steps needed to prepare a future content to be played:
406
+ * - Load its Manifest file
407
+ * - Create MSE `MediaSource` for that content.
408
+ * - Initialize all modules that will follow that content
409
+ * - etc.
410
+ * @param {Function} sendMessage - Function allowing to send messages to the
411
+ * "main thread" part of the RxPlayer logic.
412
+ * @param {ContentPreparer} contentPreparer
413
+ * @param {Object} contentInitData - Configuration wanted for the content to
414
+ * load.
415
+ * @param {Object} refs - Collection of so-called "references": values
416
+ * configuring playback that may be updated at any time and that the
417
+ * CoreEntry should react on.
418
+ */
419
+ function prepareNewContent(sendMessage, contentPreparer, contentInitData, refs) {
420
+ contentPreparer
421
+ .initializeNewContent(sendMessage, contentInitData, {
422
+ limitResolution: { video: refs.limitVideoResolution },
423
+ throttleBitrate: { video: refs.throttleVideoBitrate },
424
+ })
425
+ .then(function (manifest) {
426
+ sendMessage({
427
+ type: "manifest-ready" /* CoreMessageType.ManifestReady */,
392
428
  contentId: contentInitData.contentId,
393
429
  value: { manifest: manifest },
394
430
  });
395
431
  }, function (err) {
396
- (0, send_message_1.default)({
397
- type: "error" /* WorkerMessageType.Error */,
432
+ sendMessage({
433
+ type: "error" /* CoreMessageType.Error */,
398
434
  contentId: contentInitData.contentId,
399
- value: (0, send_message_1.formatErrorForSender)(err),
435
+ value: (0, utils_1.formatErrorForSender)(err),
400
436
  });
401
437
  });
402
438
  }
403
- function updateGlobalReference(msg) {
439
+ function updateCoreReference(msg, refs) {
404
440
  switch (msg.value.name) {
405
441
  case "wantedBufferAhead":
406
- globals_1.wantedBufferAhead.setValueIfChanged(msg.value.newVal);
442
+ refs.wantedBufferAhead.setValueIfChanged(msg.value.newVal);
407
443
  break;
408
444
  case "maxVideoBufferSize":
409
- globals_1.maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
445
+ refs.maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
410
446
  break;
411
447
  case "maxBufferBehind":
412
- globals_1.maxBufferBehind.setValueIfChanged(msg.value.newVal);
448
+ refs.maxBufferBehind.setValueIfChanged(msg.value.newVal);
413
449
  break;
414
450
  case "maxBufferAhead":
415
- globals_1.maxBufferAhead.setValueIfChanged(msg.value.newVal);
451
+ refs.maxBufferAhead.setValueIfChanged(msg.value.newVal);
416
452
  break;
417
453
  case "limitVideoResolution":
418
- globals_1.limitVideoResolution.setValueIfChanged(msg.value.newVal);
454
+ refs.limitVideoResolution.setValueIfChanged(msg.value.newVal);
419
455
  break;
420
456
  case "throttleVideoBitrate":
421
- globals_1.throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
457
+ refs.throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
422
458
  break;
423
459
  default:
424
460
  (0, assert_1.assertUnreachable)(msg.value);
425
461
  }
426
462
  }
427
- function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
463
+ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservationRef, refs) {
428
464
  log_1.default.debug("Core", "Loading pepared content.");
429
465
  var contentCanceller = new task_canceller_1.default();
430
466
  var currentLoadCanceller = null;
@@ -443,7 +479,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
443
479
  currentLoadCanceller = new task_canceller_1.default();
444
480
  currentLoadCanceller.linkToSignal(contentCanceller.signal);
445
481
  /**
446
- * Stores last discontinuity update sent to the worker for each Period and type
482
+ * Stores last discontinuity update sent to the Core for each Period and type
447
483
  * combinations, at least until the corresponding `PeriodStreamCleared`
448
484
  * message.
449
485
  *
@@ -454,10 +490,10 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
454
490
  var preparedContent = contentPreparer.getCurrentContent();
455
491
  if (preparedContent === null || preparedContent.manifest === null) {
456
492
  var error = new errors_1.OtherError("NONE", "Loading content when none is prepared");
457
- (0, send_message_1.default)({
458
- type: "error" /* WorkerMessageType.Error */,
493
+ sendMessage({
494
+ type: "error" /* CoreMessageType.Error */,
459
495
  contentId: undefined,
460
- value: (0, send_message_1.formatErrorForSender)(error),
496
+ value: (0, utils_1.formatErrorForSender)(error),
461
497
  });
462
498
  throw error;
463
499
  }
@@ -467,7 +503,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
467
503
  (0, synchronize_sinks_on_observation_1.default)(observation, segmentSinksStore);
468
504
  var freezeResolution = preparedContent.freezeResolver.onNewObservation(observation);
469
505
  if (freezeResolution !== null) {
470
- handleFreezeResolution(freezeResolution, {
506
+ handleFreezeResolution(sendMessage, freezeResolution, {
471
507
  contentId: contentId,
472
508
  manifest: manifest,
473
509
  handleMediaSourceReload: performMediaSourceReload,
@@ -478,39 +514,39 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
478
514
  var initialPeriod = (_a = manifest.getPeriodForTime(startTime)) !== null && _a !== void 0 ? _a : manifest.getNextPeriod(startTime);
479
515
  if (initialPeriod === undefined) {
480
516
  var error = new errors_1.MediaError("MEDIA_STARTING_TIME_NOT_FOUND", "Wanted starting time not found in the Manifest.");
481
- (0, send_message_1.default)({
482
- type: "error" /* WorkerMessageType.Error */,
517
+ sendMessage({
518
+ type: "error" /* CoreMessageType.Error */,
483
519
  contentId: contentId,
484
- value: (0, send_message_1.formatErrorForSender)(error),
520
+ value: (0, utils_1.formatErrorForSender)(error),
485
521
  });
486
522
  throw error;
487
523
  }
488
- var playbackObserver = new worker_playback_observer_1.default(playbackObservationRef, contentId, send_message_1.default, currentLoadCanceller.signal);
524
+ var playbackObserver = new core_playback_observer_1.default(playbackObservationRef, contentId, sendMessage, currentLoadCanceller.signal);
489
525
  cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.startMonitoringPlayback(playbackObserver);
490
526
  currentLoadCanceller.signal.register(function () {
491
527
  cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.stopMonitoringPlayback();
492
528
  });
493
529
  var contentTimeBoundariesObserver = (0, create_content_time_boundaries_observer_1.default)(manifest, mediaSource, playbackObserver, segmentSinksStore, {
494
530
  onWarning: function (err) {
495
- return (0, send_message_1.default)({
496
- type: "warning" /* WorkerMessageType.Warning */,
531
+ return sendMessage({
532
+ type: "warning" /* CoreMessageType.Warning */,
497
533
  contentId: contentId,
498
- value: (0, send_message_1.formatErrorForSender)(err),
534
+ value: (0, utils_1.formatErrorForSender)(err),
499
535
  });
500
536
  },
501
537
  onPeriodChanged: function (period) {
502
- (0, send_message_1.default)({
503
- type: "active-period-changed" /* WorkerMessageType.ActivePeriodChanged */,
538
+ sendMessage({
539
+ type: "active-period-changed" /* CoreMessageType.ActivePeriodChanged */,
504
540
  contentId: contentId,
505
541
  value: { periodId: period.id },
506
542
  });
507
543
  },
508
544
  }, currentLoadCanceller.signal);
509
545
  (0, stream_1.default)({ initialPeriod: initialPeriod, manifest: manifest }, playbackObserver, representationEstimator, segmentSinksStore, segmentQueueCreator, {
510
- wantedBufferAhead: globals_1.wantedBufferAhead,
511
- maxVideoBufferSize: globals_1.maxVideoBufferSize,
512
- maxBufferAhead: globals_1.maxBufferAhead,
513
- maxBufferBehind: globals_1.maxBufferBehind,
546
+ wantedBufferAhead: refs.wantedBufferAhead,
547
+ maxVideoBufferSize: refs.maxVideoBufferSize,
548
+ maxBufferAhead: refs.maxBufferAhead,
549
+ maxBufferBehind: refs.maxBufferBehind,
514
550
  drmSystemId: drmSystemId,
515
551
  enableFastSwitching: enableFastSwitching,
516
552
  onCodecSwitch: onCodecSwitch,
@@ -523,8 +559,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
523
559
  function handleStreamOrchestratorCallbacks() {
524
560
  return {
525
561
  needsBufferFlush: function (payload) {
526
- (0, send_message_1.default)({
527
- type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
562
+ sendMessage({
563
+ type: "needs-buffer-flush" /* CoreMessageType.NeedsBufferFlush */,
528
564
  contentId: contentId,
529
565
  value: payload,
530
566
  });
@@ -560,8 +596,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
560
596
  });
561
597
  },
562
598
  lockedStream: function (payload) {
563
- (0, send_message_1.default)({
564
- type: "locked-stream" /* WorkerMessageType.LockedStream */,
599
+ sendMessage({
600
+ type: "locked-stream" /* CoreMessageType.LockedStream */,
565
601
  contentId: contentId,
566
602
  value: {
567
603
  periodId: payload.period.id,
@@ -576,8 +612,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
576
612
  currentLoadCanceller.signal.isCancelled()) {
577
613
  return;
578
614
  }
579
- (0, send_message_1.default)({
580
- type: "adaptation-changed" /* WorkerMessageType.AdaptationChanged */,
615
+ sendMessage({
616
+ type: "adaptation-changed" /* CoreMessageType.AdaptationChanged */,
581
617
  contentId: contentId,
582
618
  value: {
583
619
  adaptationId: (_b = (_a = value.adaptation) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
@@ -593,8 +629,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
593
629
  currentLoadCanceller.signal.isCancelled()) {
594
630
  return;
595
631
  }
596
- (0, send_message_1.default)({
597
- type: "representation-changed" /* WorkerMessageType.RepresentationChanged */,
632
+ sendMessage({
633
+ type: "representation-changed" /* CoreMessageType.RepresentationChanged */,
598
634
  contentId: contentId,
599
635
  value: {
600
636
  adaptationId: value.adaptation.id,
@@ -605,17 +641,17 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
605
641
  });
606
642
  },
607
643
  inbandEvent: function (value) {
608
- (0, send_message_1.default)({
609
- type: "inband-event" /* WorkerMessageType.InbandEvent */,
644
+ sendMessage({
645
+ type: "inband-event" /* CoreMessageType.InbandEvent */,
610
646
  contentId: contentId,
611
647
  value: value,
612
648
  });
613
649
  },
614
650
  warning: function (value) {
615
- (0, send_message_1.default)({
616
- type: "warning" /* WorkerMessageType.Warning */,
651
+ sendMessage({
652
+ type: "warning" /* CoreMessageType.Warning */,
617
653
  contentId: contentId,
618
- value: (0, send_message_1.formatErrorForSender)(value),
654
+ value: (0, utils_1.formatErrorForSender)(value),
619
655
  });
620
656
  },
621
657
  periodStreamReady: function (value) {
@@ -623,8 +659,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
623
659
  return;
624
660
  }
625
661
  preparedContent.trackChoiceSetter.addTrackSetter(value.period.id, value.type, value.adaptationRef);
626
- (0, send_message_1.default)({
627
- type: "period-stream-ready" /* WorkerMessageType.PeriodStreamReady */,
662
+ sendMessage({
663
+ type: "period-stream-ready" /* CoreMessageType.PeriodStreamReady */,
628
664
  contentId: contentId,
629
665
  value: { periodId: value.period.id, bufferType: value.type },
630
666
  });
@@ -642,8 +678,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
642
678
  }
643
679
  contentTimeBoundariesObserver.onPeriodCleared(value.type, value.period);
644
680
  preparedContent.trackChoiceSetter.removeTrackSetter(value.period.id, value.type);
645
- (0, send_message_1.default)({
646
- type: "period-stream-cleared" /* WorkerMessageType.PeriodStreamCleared */,
681
+ sendMessage({
682
+ type: "period-stream-cleared" /* CoreMessageType.PeriodStreamCleared */,
647
683
  contentId: contentId,
648
684
  value: { periodId: value.period.id, bufferType: value.type },
649
685
  });
@@ -656,8 +692,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
656
692
  // TODO for low-latency contents it is __VERY__ frequent.
657
693
  // Considering this is only for an unimportant undocumented API, we may
658
694
  // throttle such messages. (e.g. max one per 2 seconds for each type?).
659
- (0, send_message_1.default)({
660
- type: "bitrate-estimate-change" /* WorkerMessageType.BitrateEstimateChange */,
695
+ sendMessage({
696
+ type: "bitrate-estimate-change" /* CoreMessageType.BitrateEstimateChange */,
661
697
  contentId: contentId,
662
698
  value: {
663
699
  bitrate: payload.bitrate,
@@ -669,8 +705,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
669
705
  performMediaSourceReload(payload);
670
706
  },
671
707
  needsDecipherabilityFlush: function () {
672
- (0, send_message_1.default)({
673
- type: "needs-decipherability-flush" /* WorkerMessageType.NeedsDecipherabilityFlush */,
708
+ sendMessage({
709
+ type: "needs-decipherability-flush" /* CoreMessageType.NeedsDecipherabilityFlush */,
674
710
  contentId: contentId,
675
711
  value: null,
676
712
  });
@@ -694,8 +730,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
694
730
  if (content.representation instanceof classes_1.Representation) {
695
731
  content.representation = content.representation.getMetadataSnapshot();
696
732
  }
697
- (0, send_message_1.default)({
698
- type: "encryption-data-encountered" /* WorkerMessageType.EncryptionDataEncountered */,
733
+ sendMessage({
734
+ type: "encryption-data-encountered" /* CoreMessageType.EncryptionDataEncountered */,
699
735
  contentId: contentId,
700
736
  value: {
701
737
  keyIds: value.keyIds,
@@ -715,10 +751,10 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
715
751
  }
716
752
  },
717
753
  error: function (error) {
718
- (0, send_message_1.default)({
719
- type: "error" /* WorkerMessageType.Error */,
754
+ sendMessage({
755
+ type: "error" /* CoreMessageType.Error */,
720
756
  contentId: contentId,
721
- value: (0, send_message_1.formatErrorForSender)(error),
757
+ value: (0, utils_1.formatErrorForSender)(error),
722
758
  });
723
759
  },
724
760
  };
@@ -750,8 +786,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
750
786
  position: value.position,
751
787
  };
752
788
  periodMap.set(value.bufferType, msgObj);
753
- (0, send_message_1.default)({
754
- type: "discontinuity-update" /* WorkerMessageType.DiscontinuityUpdate */,
789
+ sendMessage({
790
+ type: "discontinuity-update" /* CoreMessageType.DiscontinuityUpdate */,
755
791
  contentId: contentId,
756
792
  value: msgObj,
757
793
  });
@@ -773,8 +809,8 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
773
809
  minimumPosition: payload.minimumPosition,
774
810
  maximumPosition: payload.maximumPosition,
775
811
  });
776
- (0, send_message_1.default)({
777
- type: "reloading-media-source" /* WorkerMessageType.ReloadingMediaSource */,
812
+ sendMessage({
813
+ type: "reloading-media-source" /* CoreMessageType.ReloadingMediaSource */,
778
814
  mediaSourceId: mediaSourceId,
779
815
  value: payload,
780
816
  }, []);
@@ -790,7 +826,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
790
826
  currentLoadCanceller = null;
791
827
  }
792
828
  var contentId = (_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId;
793
- contentPreparer.reloadMediaSource().then(function () {
829
+ contentPreparer.reloadMediaSource(sendMessage).then(function () {
794
830
  log_1.default.info("Core", "MediaSource Reloaded, loading content again", {
795
831
  newInitialTime: newInitialTime,
796
832
  });
@@ -800,10 +836,10 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
800
836
  log_1.default.info("Core", "A reloading operation was cancelled");
801
837
  return;
802
838
  }
803
- (0, send_message_1.default)({
804
- type: "error" /* WorkerMessageType.Error */,
839
+ sendMessage({
840
+ type: "error" /* CoreMessageType.Error */,
805
841
  contentId: contentId,
806
- value: (0, send_message_1.formatErrorForSender)(err),
842
+ value: (0, utils_1.formatErrorForSender)(err),
807
843
  });
808
844
  });
809
845
  }
@@ -818,13 +854,13 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
818
854
  log_1.default.setLevel(logLevel, "standard", function (levelStr, namespace, logs) {
819
855
  var sentLogs = logs.map(function (e) {
820
856
  if (e instanceof Error) {
821
- return (0, send_message_1.formatErrorForSender)(e);
857
+ return (0, utils_1.formatErrorForSender)(e);
822
858
  }
823
859
  return e;
824
860
  });
825
861
  // Not relying on `sendMessage` as it also logs
826
862
  postMessage({
827
- type: "log" /* WorkerMessageType.LogMessage */,
863
+ type: "log" /* CoreMessageType.LogMessage */,
828
864
  value: {
829
865
  namespace: namespace,
830
866
  logLevel: levelStr,
@@ -837,23 +873,26 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
837
873
  /**
838
874
  * Send a message `SegmentSinkStoreUpdate` to the main thread with
839
875
  * a serialized object that represents the segmentSinksStore state.
876
+ * @param {Function} sendMessage - Function allowing to send messages to the
877
+ * "main thread" part of the RxPlayer logic.
840
878
  * @param {ContentPreparer} contentPreparer
841
- * @returns {void}
842
879
  */
843
- function sendSegmentSinksStoreInfos(contentPreparer, requestId) {
880
+ function sendSegmentSinksStoreInfos(sendMessage, contentPreparer, requestId) {
844
881
  var currentContent = contentPreparer.getCurrentContent();
845
882
  if (currentContent === null) {
846
883
  return;
847
884
  }
848
885
  var segmentSinksMetrics = currentContent.segmentSinksStore.getSegmentSinksMetrics();
849
- (0, send_message_1.default)({
850
- type: "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */,
886
+ sendMessage({
887
+ type: "segment-sink-store-update" /* CoreMessageType.SegmentSinkStoreUpdate */,
851
888
  contentId: currentContent.contentId,
852
889
  value: { segmentSinkMetrics: segmentSinksMetrics, requestId: requestId },
853
890
  });
854
891
  }
855
892
  /**
856
893
  * Handle accordingly an `IFreezeResolution` object.
894
+ * @param {Function} sendMessage - Function allowing to send messages to the
895
+ * "main thread" part of the RxPlayer logic.
857
896
  * @param {Object|null} freezeResolution - The `IFreezeResolution` suggested.
858
897
  * @param {Object} param - Parameters that might be needed to implement the
859
898
  * resolution.
@@ -866,7 +905,7 @@ function sendSegmentSinksStoreInfos(contentPreparer, requestId) {
866
905
  * function is authorized to mark `Representation` as "to avoid" if the
867
906
  * `IFreezeResolution` object suggest it.
868
907
  */
869
- function handleFreezeResolution(freezeResolution, _a) {
908
+ function handleFreezeResolution(sendMessage, freezeResolution, _a) {
870
909
  var contentId = _a.contentId, manifest = _a.manifest, handleMediaSourceReload = _a.handleMediaSourceReload, enableRepresentationAvoidance = _a.enableRepresentationAvoidance;
871
910
  switch (freezeResolution.type) {
872
911
  case "reload": {
@@ -880,8 +919,8 @@ function handleFreezeResolution(freezeResolution, _a) {
880
919
  }
881
920
  case "flush": {
882
921
  log_1.default.info("Core", "Flushing buffer due to freeze");
883
- (0, send_message_1.default)({
884
- type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
922
+ sendMessage({
923
+ type: "needs-buffer-flush" /* CoreMessageType.NeedsBufferFlush */,
885
924
  contentId: contentId,
886
925
  value: {
887
926
  relativeResumingPosition: freezeResolution.value.relativeSeek,
@@ -912,16 +951,16 @@ function handleFreezeResolution(freezeResolution, _a) {
912
951
  * @param {ContentPreparer} contentPreparer
913
952
  * @returns {void}
914
953
  */
915
- function sendThumbnailData(contentPreparer, msg) {
954
+ function sendThumbnailData(sendMessage, contentPreparer, msg) {
916
955
  var preparedContent = contentPreparer.getCurrentContent();
917
956
  var respondWithError = function (err) {
918
- (0, send_message_1.default)({
919
- type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
957
+ sendMessage({
958
+ type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
920
959
  contentId: msg.contentId,
921
960
  value: {
922
961
  status: "error",
923
962
  requestId: msg.value.requestId,
924
- error: (0, send_message_1.formatErrorForSender)(err),
963
+ error: (0, utils_1.formatErrorForSender)(err),
925
964
  },
926
965
  });
927
966
  };
@@ -931,8 +970,8 @@ function sendThumbnailData(contentPreparer, msg) {
931
970
  return respondWithError(new Error("Content changed"));
932
971
  }
933
972
  (0, get_thumbnail_data_1.default)(preparedContent.fetchThumbnailData, preparedContent.manifest, msg.value.periodId, msg.value.thumbnailTrackId, msg.value.time).then(function (result) {
934
- (0, send_message_1.default)({
935
- type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
973
+ sendMessage({
974
+ type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
936
975
  contentId: msg.contentId,
937
976
  value: {
938
977
  status: "success",