rx-player 4.4.1-dev.2025101500 → 4.4.1

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 (350) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/README.md +111 -50
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  6. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  7. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  8. package/dist/commonjs/core/{entry → main/common}/FreezeResolver.d.ts +3 -3
  9. package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +1 -0
  10. package/dist/commonjs/core/{entry → main/common}/FreezeResolver.js +3 -3
  11. package/dist/commonjs/core/{entry → main/common}/content_time_boundaries_observer.d.ts +5 -5
  12. package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +1 -0
  13. package/dist/commonjs/core/{entry → main/common}/content_time_boundaries_observer.js +6 -6
  14. package/dist/{es2017/core/entry → commonjs/core/main/common}/create_content_time_boundaries_observer.d.ts +6 -6
  15. package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +1 -0
  16. package/dist/commonjs/core/{entry → main/common}/create_content_time_boundaries_observer.js +1 -1
  17. package/dist/{es2017/core/entry → commonjs/core/main/common}/get_buffered_data_per_media_buffer.d.ts +4 -4
  18. package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  19. package/dist/commonjs/core/{entry → main/common}/get_buffered_data_per_media_buffer.js +1 -1
  20. package/dist/{es2017/core/entry → commonjs/core/main/common}/get_thumbnail_data.d.ts +3 -3
  21. package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +1 -0
  22. package/dist/commonjs/core/{entry → main/common}/get_thumbnail_data.js +2 -2
  23. package/dist/{es2017/core/entry → commonjs/core/main/common}/synchronize_sinks_on_observation.d.ts +2 -2
  24. package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +1 -0
  25. package/dist/{es2017/core/entry → commonjs/core/main/worker}/content_preparer.d.ts +15 -22
  26. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +1 -0
  27. package/dist/commonjs/core/{entry → main/worker}/content_preparer.js +64 -62
  28. package/dist/commonjs/core/main/worker/globals.d.ts +14 -0
  29. package/dist/commonjs/core/main/worker/globals.d.ts.map +1 -0
  30. package/dist/commonjs/core/main/worker/globals.js +26 -0
  31. package/dist/commonjs/core/main/worker/index.d.ts +3 -0
  32. package/dist/commonjs/core/main/worker/index.d.ts.map +1 -0
  33. package/dist/commonjs/core/main/worker/index.js +4 -0
  34. package/dist/commonjs/core/main/worker/send_message.d.ts +4 -0
  35. package/dist/commonjs/core/main/worker/send_message.d.ts.map +1 -0
  36. package/dist/commonjs/core/main/worker/send_message.js +23 -0
  37. package/dist/{es2017/core/entry → commonjs/core/main/worker}/track_choice_setter.d.ts +4 -4
  38. package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +1 -0
  39. package/dist/commonjs/core/{entry → main/worker}/track_choice_setter.js +4 -4
  40. package/dist/commonjs/core/main/worker/worker_main.d.ts +2 -0
  41. package/dist/commonjs/core/main/worker/worker_main.d.ts.map +1 -0
  42. package/dist/commonjs/core/{entry/core_entry.js → main/worker/worker_main.js} +153 -192
  43. package/dist/commonjs/core/{entry/core_text_displayer_interface.d.ts → main/worker/worker_text_displayer_interface.d.ts} +11 -11
  44. package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +1 -0
  45. package/dist/commonjs/core/{entry/core_text_displayer_interface.js → main/worker/worker_text_displayer_interface.js} +22 -22
  46. package/dist/commonjs/core/types.d.ts +1 -519
  47. package/dist/commonjs/core/types.d.ts.map +1 -1
  48. package/dist/commonjs/core/types.js +0 -1
  49. package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
  50. package/dist/commonjs/experimental/features/local.js +1 -7
  51. package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
  52. package/dist/commonjs/experimental/features/metaplaylist.js +1 -7
  53. package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
  54. package/dist/commonjs/experimental/features/multi_thread.js +2 -6
  55. package/dist/commonjs/features/features_object.js +1 -1
  56. package/dist/commonjs/features/list/dash.d.ts.map +1 -1
  57. package/dist/commonjs/features/list/dash.js +1 -7
  58. package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
  59. package/dist/commonjs/features/list/dash_wasm.js +1 -7
  60. package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
  61. package/dist/commonjs/features/list/media_source_main.js +1 -7
  62. package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
  63. package/dist/commonjs/features/list/smooth.js +1 -7
  64. package/dist/commonjs/features/types.d.ts +4 -20
  65. package/dist/commonjs/features/types.d.ts.map +1 -1
  66. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  67. package/dist/commonjs/main_thread/api/public_api.js +44 -40
  68. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +108 -166
  69. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  70. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +918 -1491
  71. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +308 -0
  72. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -0
  73. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +1713 -0
  74. package/dist/commonjs/main_thread/init/send_message.d.ts +3 -0
  75. package/dist/commonjs/main_thread/init/send_message.d.ts.map +1 -0
  76. package/dist/commonjs/main_thread/init/send_message.js +13 -0
  77. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  78. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.js +1 -2
  79. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  80. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  81. package/dist/commonjs/main_thread/types.d.ts +0 -537
  82. package/dist/commonjs/main_thread/types.d.ts.map +1 -1
  83. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  84. package/dist/commonjs/manifest/utils.js +4 -18
  85. package/dist/commonjs/mse/worker_media_source_interface.d.ts +2 -2
  86. package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
  87. package/dist/commonjs/mse/worker_media_source_interface.js +12 -12
  88. package/dist/commonjs/multithread_types.d.ts +915 -0
  89. package/dist/commonjs/multithread_types.d.ts.map +1 -0
  90. package/dist/commonjs/multithread_types.js +7 -0
  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 +27 -31
  94. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +2 -3
  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 +7 -16
  97. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +2 -3
  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 +6 -37
  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 +2 -3
  103. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  104. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +5 -28
  105. package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts +28 -8
  106. package/dist/commonjs/playback_observer/media_element_playback_observer.d.ts.map +1 -1
  107. package/dist/commonjs/playback_observer/media_element_playback_observer.js +146 -64
  108. package/dist/{es2017/playback_observer/core_playback_observer.d.ts → commonjs/playback_observer/worker_playback_observer.d.ts} +8 -8
  109. package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +1 -0
  110. package/dist/commonjs/playback_observer/{core_playback_observer.js → worker_playback_observer.js} +13 -13
  111. package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
  112. package/dist/commonjs/transports/smooth/pipelines.js +3 -25
  113. package/dist/commonjs/worker_entry_point.js +2 -62
  114. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.d.ts.map +1 -1
  115. package/dist/es2017/__GENERATED_CODE/embedded_dash_wasm.js +1 -1
  116. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  117. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  118. package/dist/es2017/core/{entry → main/common}/FreezeResolver.d.ts +3 -3
  119. package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +1 -0
  120. package/dist/es2017/core/{entry → main/common}/FreezeResolver.js +3 -3
  121. package/dist/es2017/core/{entry → main/common}/content_time_boundaries_observer.d.ts +5 -5
  122. package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +1 -0
  123. package/dist/es2017/core/{entry → main/common}/content_time_boundaries_observer.js +6 -6
  124. package/dist/{commonjs/core/entry → es2017/core/main/common}/create_content_time_boundaries_observer.d.ts +6 -6
  125. package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +1 -0
  126. package/dist/es2017/core/{entry → main/common}/create_content_time_boundaries_observer.js +1 -1
  127. package/dist/{commonjs/core/entry → es2017/core/main/common}/get_buffered_data_per_media_buffer.d.ts +4 -4
  128. package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  129. package/dist/es2017/core/{entry → main/common}/get_buffered_data_per_media_buffer.js +1 -1
  130. package/dist/{commonjs/core/entry → es2017/core/main/common}/get_thumbnail_data.d.ts +3 -3
  131. package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +1 -0
  132. package/dist/es2017/core/{entry → main/common}/get_thumbnail_data.js +2 -2
  133. package/dist/{commonjs/core/entry → es2017/core/main/common}/synchronize_sinks_on_observation.d.ts +2 -2
  134. package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +1 -0
  135. package/dist/{commonjs/core/entry → es2017/core/main/worker}/content_preparer.d.ts +15 -22
  136. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +1 -0
  137. package/dist/es2017/core/{entry → main/worker}/content_preparer.js +55 -53
  138. package/dist/es2017/core/main/worker/globals.d.ts +14 -0
  139. package/dist/es2017/core/main/worker/globals.d.ts.map +1 -0
  140. package/dist/es2017/core/main/worker/globals.js +18 -0
  141. package/dist/es2017/core/main/worker/index.d.ts +3 -0
  142. package/dist/es2017/core/main/worker/index.d.ts.map +1 -0
  143. package/dist/es2017/core/main/worker/index.js +2 -0
  144. package/dist/es2017/core/main/worker/send_message.d.ts +4 -0
  145. package/dist/es2017/core/main/worker/send_message.d.ts.map +1 -0
  146. package/dist/es2017/core/main/worker/send_message.js +19 -0
  147. package/dist/{commonjs/core/entry → es2017/core/main/worker}/track_choice_setter.d.ts +4 -4
  148. package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +1 -0
  149. package/dist/es2017/core/{entry → main/worker}/track_choice_setter.js +4 -4
  150. package/dist/es2017/core/main/worker/worker_main.d.ts +2 -0
  151. package/dist/es2017/core/main/worker/worker_main.d.ts.map +1 -0
  152. package/dist/es2017/core/{entry/core_entry.js → main/worker/worker_main.js} +114 -153
  153. package/dist/es2017/core/{entry/core_text_displayer_interface.d.ts → main/worker/worker_text_displayer_interface.d.ts} +11 -11
  154. package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +1 -0
  155. package/dist/es2017/core/{entry/core_text_displayer_interface.js → main/worker/worker_text_displayer_interface.js} +10 -10
  156. package/dist/es2017/core/types.d.ts +1 -519
  157. package/dist/es2017/core/types.d.ts.map +1 -1
  158. package/dist/es2017/core/types.js +0 -1
  159. package/dist/es2017/experimental/features/local.d.ts.map +1 -1
  160. package/dist/es2017/experimental/features/local.js +1 -7
  161. package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
  162. package/dist/es2017/experimental/features/metaplaylist.js +1 -7
  163. package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
  164. package/dist/es2017/experimental/features/multi_thread.js +2 -6
  165. package/dist/es2017/features/features_object.js +1 -1
  166. package/dist/es2017/features/list/dash.d.ts.map +1 -1
  167. package/dist/es2017/features/list/dash.js +1 -7
  168. package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
  169. package/dist/es2017/features/list/dash_wasm.js +1 -7
  170. package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
  171. package/dist/es2017/features/list/media_source_main.js +1 -7
  172. package/dist/es2017/features/list/smooth.d.ts.map +1 -1
  173. package/dist/es2017/features/list/smooth.js +1 -7
  174. package/dist/es2017/features/types.d.ts +4 -20
  175. package/dist/es2017/features/types.d.ts.map +1 -1
  176. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  177. package/dist/es2017/main_thread/api/public_api.js +45 -41
  178. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +108 -166
  179. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  180. package/dist/es2017/main_thread/init/media_source_content_initializer.js +760 -1405
  181. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +308 -0
  182. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +1 -0
  183. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +1559 -0
  184. package/dist/es2017/main_thread/init/send_message.d.ts +3 -0
  185. package/dist/es2017/main_thread/init/send_message.d.ts.map +1 -0
  186. package/dist/es2017/main_thread/init/send_message.js +10 -0
  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 +1 -2
  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 +0 -537
  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 +4 -16
  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/multithread_types.d.ts +915 -0
  199. package/dist/es2017/multithread_types.d.ts.map +1 -0
  200. package/dist/es2017/multithread_types.js +6 -0
  201. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts +1 -1
  202. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  203. package/dist/es2017/parsers/manifest/smooth/create_parser.js +27 -31
  204. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +2 -3
  205. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  206. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +7 -16
  207. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +2 -3
  208. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  209. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +6 -15
  210. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  211. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  212. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts +2 -3
  213. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  214. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +5 -6
  215. package/dist/es2017/playback_observer/media_element_playback_observer.d.ts +28 -8
  216. package/dist/es2017/playback_observer/media_element_playback_observer.d.ts.map +1 -1
  217. package/dist/es2017/playback_observer/media_element_playback_observer.js +144 -64
  218. package/dist/{commonjs/playback_observer/core_playback_observer.d.ts → es2017/playback_observer/worker_playback_observer.d.ts} +8 -8
  219. package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +1 -0
  220. package/dist/es2017/playback_observer/{core_playback_observer.js → worker_playback_observer.js} +2 -2
  221. package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
  222. package/dist/es2017/transports/smooth/pipelines.js +3 -25
  223. package/dist/es2017/worker_entry_point.js +2 -62
  224. package/dist/mpd-parser.wasm +0 -0
  225. package/dist/rx-player.js +19165 -21886
  226. package/dist/rx-player.min.js +20 -20
  227. package/dist/worker.js +8 -8
  228. package/eslint.config.mjs +647 -348
  229. package/package.json +6 -6
  230. package/src/README.md +198 -88
  231. package/src/__GENERATED_CODE/embedded_dash_wasm.ts +1 -1
  232. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  233. package/src/core/{entry → main}/README.md +1 -1
  234. package/src/core/{entry → main/common}/FreezeResolver.ts +7 -7
  235. package/src/core/{entry → main/common}/content_time_boundaries_observer.ts +10 -10
  236. package/src/core/{entry → main/common}/create_content_time_boundaries_observer.ts +7 -7
  237. package/src/core/{entry → main/common}/get_buffered_data_per_media_buffer.ts +6 -6
  238. package/src/core/{entry → main/common}/get_thumbnail_data.ts +5 -5
  239. package/src/core/{entry → main/common}/synchronize_sinks_on_observation.ts +2 -2
  240. package/src/core/{entry → main/worker}/content_preparer.ts +76 -77
  241. package/src/core/main/worker/globals.ts +38 -0
  242. package/src/core/main/worker/index.ts +2 -0
  243. package/src/core/main/worker/send_message.ts +28 -0
  244. package/src/core/{entry → main/worker}/track_choice_setter.ts +7 -7
  245. package/src/core/{entry/core_entry.ts → main/worker/worker_main.ts} +149 -223
  246. package/src/core/{entry/core_text_displayer_interface.ts → main/worker/worker_text_displayer_interface.ts} +26 -26
  247. package/src/core/types.ts +3 -631
  248. package/src/experimental/features/__tests__/local.test.ts +2 -11
  249. package/src/experimental/features/__tests__/metaplaylist.test.ts +2 -11
  250. package/src/experimental/features/__tests__/multi_thread.test.ts +3 -8
  251. package/src/experimental/features/local.ts +1 -7
  252. package/src/experimental/features/metaplaylist.ts +1 -7
  253. package/src/experimental/features/multi_thread.ts +2 -6
  254. package/src/features/features_object.ts +1 -1
  255. package/src/features/list/__tests__/dash.test.ts +3 -12
  256. package/src/features/list/__tests__/smooth.test.ts +2 -11
  257. package/src/features/list/dash.ts +1 -7
  258. package/src/features/list/dash_wasm.ts +1 -7
  259. package/src/features/list/media_source_main.ts +1 -7
  260. package/src/features/list/smooth.ts +1 -7
  261. package/src/features/types.ts +4 -23
  262. package/src/main_thread/README.md +0 -8
  263. package/src/main_thread/api/public_api.ts +51 -47
  264. package/src/main_thread/init/media_source_content_initializer.ts +1164 -2046
  265. package/src/main_thread/init/multi_thread_content_initializer.ts +2330 -0
  266. package/src/main_thread/init/send_message.ts +15 -0
  267. package/src/main_thread/init/utils/create_core_playback_observer.ts +1 -2
  268. package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
  269. package/src/main_thread/types.ts +0 -610
  270. package/src/manifest/utils.ts +4 -20
  271. package/src/mse/worker_media_source_interface.ts +35 -35
  272. package/src/multithread_types.ts +1095 -0
  273. package/src/parsers/manifest/smooth/create_parser.ts +34 -40
  274. package/src/parsers/manifest/smooth/parse_C_nodes.ts +8 -19
  275. package/src/parsers/manifest/smooth/parse_protection_node.ts +9 -17
  276. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
  277. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +7 -10
  278. package/src/playback_observer/media_element_playback_observer.ts +177 -73
  279. package/src/playback_observer/{core_playback_observer.ts → worker_playback_observer.ts} +13 -13
  280. package/src/transports/smooth/pipelines.ts +5 -25
  281. package/src/worker_entry_point.ts +2 -71
  282. package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +0 -1
  283. package/dist/commonjs/core/entry/content_preparer.d.ts.map +0 -1
  284. package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +0 -1
  285. package/dist/commonjs/core/entry/core_entry.d.ts +0 -36
  286. package/dist/commonjs/core/entry/core_entry.d.ts.map +0 -1
  287. package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +0 -1
  288. package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +0 -1
  289. package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  290. package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +0 -1
  291. package/dist/commonjs/core/entry/index.d.ts +0 -5
  292. package/dist/commonjs/core/entry/index.d.ts.map +0 -1
  293. package/dist/commonjs/core/entry/index.js +0 -4
  294. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
  295. package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +0 -1
  296. package/dist/commonjs/core/entry/utils.d.ts +0 -3
  297. package/dist/commonjs/core/entry/utils.d.ts.map +0 -1
  298. package/dist/commonjs/core/entry/utils.js +0 -11
  299. package/dist/commonjs/main_thread/core_interface/base.d.ts +0 -13
  300. package/dist/commonjs/main_thread/core_interface/base.d.ts.map +0 -1
  301. package/dist/commonjs/main_thread/core_interface/base.js +0 -32
  302. package/dist/commonjs/main_thread/core_interface/monothread.d.ts +0 -13
  303. package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +0 -1
  304. package/dist/commonjs/main_thread/core_interface/monothread.js +0 -56
  305. package/dist/commonjs/main_thread/core_interface/multithread.d.ts +0 -25
  306. package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +0 -1
  307. package/dist/commonjs/main_thread/core_interface/multithread.js +0 -67
  308. package/dist/commonjs/main_thread/core_interface/types.d.ts +0 -6
  309. package/dist/commonjs/main_thread/core_interface/types.d.ts.map +0 -1
  310. package/dist/commonjs/main_thread/core_interface/types.js +0 -2
  311. package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +0 -1
  312. package/dist/es2017/core/entry/FreezeResolver.d.ts.map +0 -1
  313. package/dist/es2017/core/entry/content_preparer.d.ts.map +0 -1
  314. package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +0 -1
  315. package/dist/es2017/core/entry/core_entry.d.ts +0 -36
  316. package/dist/es2017/core/entry/core_entry.d.ts.map +0 -1
  317. package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +0 -1
  318. package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +0 -1
  319. package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  320. package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +0 -1
  321. package/dist/es2017/core/entry/index.d.ts +0 -5
  322. package/dist/es2017/core/entry/index.d.ts.map +0 -1
  323. package/dist/es2017/core/entry/index.js +0 -2
  324. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +0 -1
  325. package/dist/es2017/core/entry/track_choice_setter.d.ts.map +0 -1
  326. package/dist/es2017/core/entry/utils.d.ts +0 -3
  327. package/dist/es2017/core/entry/utils.d.ts.map +0 -1
  328. package/dist/es2017/core/entry/utils.js +0 -8
  329. package/dist/es2017/main_thread/core_interface/base.d.ts +0 -13
  330. package/dist/es2017/main_thread/core_interface/base.d.ts.map +0 -1
  331. package/dist/es2017/main_thread/core_interface/base.js +0 -28
  332. package/dist/es2017/main_thread/core_interface/monothread.d.ts +0 -13
  333. package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +0 -1
  334. package/dist/es2017/main_thread/core_interface/monothread.js +0 -32
  335. package/dist/es2017/main_thread/core_interface/multithread.d.ts +0 -25
  336. package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +0 -1
  337. package/dist/es2017/main_thread/core_interface/multithread.js +0 -45
  338. package/dist/es2017/main_thread/core_interface/types.d.ts +0 -6
  339. package/dist/es2017/main_thread/core_interface/types.d.ts.map +0 -1
  340. package/dist/es2017/main_thread/core_interface/types.js +0 -1
  341. package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +0 -1
  342. package/src/core/entry/index.ts +0 -4
  343. package/src/core/entry/utils.ts +0 -11
  344. package/src/main_thread/core_interface/README.md +0 -22
  345. package/src/main_thread/core_interface/base.ts +0 -36
  346. package/src/main_thread/core_interface/monothread.ts +0 -46
  347. package/src/main_thread/core_interface/multithread.ts +0 -49
  348. package/src/main_thread/core_interface/types.ts +0 -5
  349. /package/dist/commonjs/core/{entry → main/common}/synchronize_sinks_on_observation.js +0 -0
  350. /package/dist/es2017/core/{entry → main/common}/synchronize_sinks_on_observation.js +0 -0
@@ -1,86 +1,57 @@
1
- import config from "../../config";
2
- import { MediaError, OtherError } from "../../errors";
3
- import features from "../../features";
4
- import log from "../../log";
1
+ import config from "../../../config";
2
+ import { MediaError, OtherError } from "../../../errors";
3
+ import features from "../../../features";
4
+ import log from "../../../log";
5
+ import Manifest, { Adaptation, Period, Representation } from "../../../manifest/classes";
5
6
  import type {
6
7
  IContentInitializationData,
8
+ IDiscontinuityUpdateWorkerMessagePayload,
7
9
  IMainThreadMessage,
8
10
  IReferenceUpdateMessage,
9
11
  IThumbnailDataRequestMainMessage,
10
- } from "../../main_thread/types";
11
- import { MainThreadMessageType } from "../../main_thread/types";
12
- import Manifest, { Adaptation, Period, Representation } from "../../manifest/classes";
13
- import { ObservationPosition } from "../../playback_observer";
14
- import type { ICorePlaybackObservation } from "../../playback_observer/core_playback_observer";
15
- import CorePlaybackObserver from "../../playback_observer/core_playback_observer";
16
- import type { IPlayerError, ITrackType } from "../../public_types";
17
- import arrayFind from "../../utils/array_find";
18
- import assert, { assertUnreachable } from "../../utils/assert";
19
- import type { ILogFormat, ILoggerLevel } from "../../utils/logger";
20
- import { scaleTimestamp } from "../../utils/monotonic_timestamp";
21
- import objectAssign from "../../utils/object_assign";
22
- import type { IReadOnlySharedReference } from "../../utils/reference";
23
- import SharedReference from "../../utils/reference";
24
- import TaskCanceller from "../../utils/task_canceller";
12
+ } from "../../../multithread_types";
13
+ import { MainThreadMessageType, WorkerMessageType } from "../../../multithread_types";
14
+ import DashJsParser from "../../../parsers/manifest/dash/js-parser";
15
+ import DashWasmParser from "../../../parsers/manifest/dash/wasm-parser";
16
+ import { ObservationPosition } from "../../../playback_observer";
17
+ import type { IWorkerPlaybackObservation } from "../../../playback_observer/worker_playback_observer";
18
+ import WorkerPlaybackObserver from "../../../playback_observer/worker_playback_observer";
19
+ import type { IPlayerError, ITrackType } from "../../../public_types";
20
+ import createDashPipelines from "../../../transports/dash";
21
+ import arrayFind from "../../../utils/array_find";
22
+ import assert, { assertUnreachable } from "../../../utils/assert";
23
+ import globalScope from "../../../utils/global_scope";
24
+ import type { ILogFormat, ILoggerLevel } from "../../../utils/logger";
25
+ import { scaleTimestamp } from "../../../utils/monotonic_timestamp";
26
+ import objectAssign from "../../../utils/object_assign";
27
+ import type { IReadOnlySharedReference } from "../../../utils/reference";
28
+ import SharedReference from "../../../utils/reference";
29
+ import TaskCanceller from "../../../utils/task_canceller";
25
30
  import type {
26
31
  INeedsMediaSourceReloadPayload,
27
32
  IStreamOrchestratorCallbacks,
28
33
  IStreamStatusPayload,
29
- } from "../stream";
30
- import StreamOrchestrator from "../stream";
31
- import type {
32
- ICoreMessage,
33
- IDiscontinuityUpdateCoreMessagePayload,
34
- IResolutionInfo,
35
- } from "../types";
36
- import { CoreMessageType } from "../types";
34
+ } from "../../stream";
35
+ import StreamOrchestrator from "../../stream";
36
+ import createContentTimeBoundariesObserver from "../common/create_content_time_boundaries_observer";
37
+ import type { IFreezeResolution } from "../common/FreezeResolver";
38
+ import getBufferedDataPerMediaBuffer from "../common/get_buffered_data_per_media_buffer";
39
+ import getThumbnailData from "../common/get_thumbnail_data";
40
+ import synchronizeSegmentSinksOnObservation from "../common/synchronize_sinks_on_observation";
37
41
  import ContentPreparer from "./content_preparer";
38
- import createContentTimeBoundariesObserver from "./create_content_time_boundaries_observer";
39
- import type { IFreezeResolution } from "./FreezeResolver";
40
- import getBufferedDataPerMediaBuffer from "./get_buffered_data_per_media_buffer";
41
- import getThumbnailData from "./get_thumbnail_data";
42
- import synchronizeSegmentSinksOnObservation from "./synchronize_sinks_on_observation";
43
- import { formatErrorForSender } from "./utils";
44
-
45
- export type IMessageReceiverCallback = (evt: { data: IMainThreadMessage }) => void;
46
-
47
- /**
48
- * Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
49
- * entry point to all its "core" code.
50
- *
51
- * Its role is to receive and react to messages coming from "main thead", which
52
- * may include loading and playing a content, and to send back messages for the main
53
- * thread.
54
- * @param {Function} setMessageReceiver - Declares the function that will
55
- * receive messages coming from the "main thread" part of the RxPlayer logic.
56
- * @param {Function} sendMessage - Function allowing to send messages to the
57
- * "main thread" part of the RxPlayer logic.
58
- */
59
- export default function initializeCoreEntry(
60
- setMessageReceiver: (cb: IMessageReceiverCallback) => void,
61
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
62
- ): void {
63
- const {
64
- DEFAULT_WANTED_BUFFER_AHEAD,
65
- DEFAULT_MAX_VIDEO_BUFFER_SIZE,
66
- DEFAULT_MAX_BUFFER_AHEAD,
67
- DEFAULT_MAX_BUFFER_BEHIND,
68
- } = config.getCurrent();
69
- const refs: ICoreReferences = {
70
- wantedBufferAhead: new SharedReference(DEFAULT_WANTED_BUFFER_AHEAD),
71
- maxVideoBufferSize: new SharedReference(DEFAULT_MAX_VIDEO_BUFFER_SIZE),
72
- maxBufferAhead: new SharedReference(DEFAULT_MAX_BUFFER_AHEAD),
73
- maxBufferBehind: new SharedReference(DEFAULT_MAX_BUFFER_BEHIND),
74
- limitVideoResolution: new SharedReference<IResolutionInfo>({
75
- height: undefined,
76
- width: undefined,
77
- pixelRatio: 1,
78
- }),
79
- throttleVideoBitrate: new SharedReference(Infinity),
80
- };
81
-
42
+ import {
43
+ limitVideoResolution,
44
+ maxBufferAhead,
45
+ maxBufferBehind,
46
+ maxVideoBufferSize,
47
+ throttleVideoBitrate,
48
+ wantedBufferAhead,
49
+ } from "./globals";
50
+ import sendMessage, { formatErrorForSender } from "./send_message";
51
+
52
+ export default function initializeWorkerMain() {
82
53
  /**
83
- * `true` once the CoreEntry has been initialized.
54
+ * `true` once the worker has been initialized.
84
55
  * Allow to enforce the fact that it is only initialized once.
85
56
  */
86
57
  let isInitialized = false;
@@ -97,44 +68,48 @@ export default function initializeCoreEntry(
97
68
  */
98
69
  let currentContentHandle: IContentHandle | null = null;
99
70
 
71
+ // Initialize Manually a `DashWasmParser` and add the feature.
72
+ // TODO allow worker-side feature-switching? Not sure how
73
+ const dashWasmParser = new DashWasmParser();
74
+ features.dashParsers.wasm = dashWasmParser;
75
+ features.dashParsers.js = DashJsParser;
76
+ features.transports.dash = createDashPipelines;
77
+
100
78
  /**
101
79
  * When set, emit playback observation made on the main thread.
102
80
  */
103
- let playbackObservationRef: SharedReference<ICorePlaybackObservation> | null = null;
104
- setMessageReceiver((e) => {
81
+ let playbackObservationRef: SharedReference<IWorkerPlaybackObservation> | null = null;
82
+
83
+ globalScope.onmessageerror = (_msg: MessageEvent) => {
84
+ log.error("Core", "Error when receiving message from main thread.");
85
+ };
86
+ onmessage = function (e: MessageEvent<IMainThreadMessage>) {
105
87
  log.debug("Core", "received message", { name: e.data.type });
106
88
 
107
89
  const msg = e.data;
108
90
  switch (msg.type) {
109
91
  case MainThreadMessageType.Init:
110
- {
111
- assert(!isInitialized);
112
- isInitialized = true;
113
- scaleTimestamp(msg.value);
114
- updateLoggerLevel(
115
- msg.value.logLevel,
116
- msg.value.logFormat,
117
- msg.value.sendBackLogs,
118
- );
119
- const dashWasmParser = features.dashParsers.wasm;
120
- if (
121
- dashWasmParser !== null &&
122
- msg.value.dashWasmUrl !== undefined &&
123
- dashWasmParser.isCompatible()
124
- ) {
125
- dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch((err) => {
126
- const error = err instanceof Error ? err.toString() : "Unknown Error";
127
- log.error("Core", "Could not initialize DASH_WASM parser", error);
128
- });
129
- }
130
-
131
- if (!msg.value.hasVideo) {
132
- contentPreparer.disposeCurrentContent();
133
- contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
134
- }
92
+ assert(!isInitialized);
93
+ isInitialized = true;
94
+ scaleTimestamp(msg.value);
95
+ updateLoggerLevel(
96
+ msg.value.logLevel,
97
+ msg.value.logFormat,
98
+ msg.value.sendBackLogs,
99
+ );
100
+ if (msg.value.dashWasmUrl !== undefined && dashWasmParser.isCompatible()) {
101
+ dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch((err) => {
102
+ const error = err instanceof Error ? err.toString() : "Unknown Error";
103
+ log.error("Core", "Could not initialize DASH_WASM parser", error);
104
+ });
105
+ }
135
106
 
136
- sendMessage({ type: CoreMessageType.InitSuccess, value: null });
107
+ if (!msg.value.hasVideo) {
108
+ contentPreparer.disposeCurrentContent();
109
+ contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
137
110
  }
111
+
112
+ sendMessage({ type: WorkerMessageType.InitSuccess, value: null });
138
113
  break;
139
114
 
140
115
  case MainThreadMessageType.LogLevelUpdate:
@@ -146,7 +121,7 @@ export default function initializeCoreEntry(
146
121
  break;
147
122
 
148
123
  case MainThreadMessageType.PrepareContent:
149
- prepareNewContent(sendMessage, contentPreparer, msg.value, refs);
124
+ prepareNewContent(contentPreparer, msg.value);
150
125
  break;
151
126
 
152
127
  case MainThreadMessageType.StartPreparedContent: {
@@ -159,18 +134,16 @@ export default function initializeCoreEntry(
159
134
  playbackObservationRef?.finish();
160
135
 
161
136
  const currentContentObservationRef =
162
- new SharedReference<ICorePlaybackObservation>(
137
+ new SharedReference<IWorkerPlaybackObservation>(
163
138
  objectAssign(msg.value.initialObservation, {
164
139
  position: new ObservationPosition(...msg.value.initialObservation.position),
165
140
  }),
166
141
  );
167
142
  playbackObservationRef = currentContentObservationRef;
168
143
  currentContentHandle = loadPreparedContent(
169
- sendMessage,
170
144
  msg.value,
171
145
  contentPreparer,
172
146
  currentContentObservationRef,
173
- refs,
174
147
  );
175
148
  break;
176
149
  }
@@ -201,7 +174,7 @@ export default function initializeCoreEntry(
201
174
  }
202
175
 
203
176
  case MainThreadMessageType.ReferenceUpdate:
204
- updateCoreReference(msg, refs);
177
+ updateGlobalReference(msg);
205
178
  break;
206
179
 
207
180
  case MainThreadMessageType.StopContent:
@@ -331,14 +304,14 @@ export default function initializeCoreEntry(
331
304
  const warning = preparedContent.manifest.updateCodecSupport(newEvaluatedCodecs);
332
305
  if (warning !== null) {
333
306
  sendMessage({
334
- type: CoreMessageType.Warning,
307
+ type: WorkerMessageType.Warning,
335
308
  contentId: preparedContent.contentId,
336
309
  value: formatErrorForSender(warning),
337
310
  });
338
311
  }
339
312
  } catch (err) {
340
313
  sendMessage({
341
- type: CoreMessageType.Error,
314
+ type: WorkerMessageType.Error,
342
315
  contentId: preparedContent.contentId,
343
316
  value: formatErrorForSender(err),
344
317
  });
@@ -390,11 +363,11 @@ export default function initializeCoreEntry(
390
363
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
391
364
  return;
392
365
  }
393
- if (preparedContent.coreTextSender === null) {
366
+ if (preparedContent.workerTextSender === null) {
394
367
  log.error("Core", "Added text track but text track aren't enabled");
395
368
  return;
396
369
  }
397
- preparedContent.coreTextSender.onPushedTrackSuccess(msg.value.ranges);
370
+ preparedContent.workerTextSender.onPushedTrackSuccess(msg.value.ranges);
398
371
  break;
399
372
  }
400
373
 
@@ -403,11 +376,11 @@ export default function initializeCoreEntry(
403
376
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
404
377
  return;
405
378
  }
406
- if (preparedContent.coreTextSender === null) {
379
+ if (preparedContent.workerTextSender === null) {
407
380
  log.error("Core", "Added text track but text track aren't enabled");
408
381
  return;
409
382
  }
410
- preparedContent.coreTextSender.onPushedTrackError(new Error(msg.value.message));
383
+ preparedContent.workerTextSender.onPushedTrackError(new Error(msg.value.message));
411
384
  break;
412
385
  }
413
386
 
@@ -416,11 +389,11 @@ export default function initializeCoreEntry(
416
389
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
417
390
  return;
418
391
  }
419
- if (preparedContent.coreTextSender === null) {
392
+ if (preparedContent.workerTextSender === null) {
420
393
  log.error("Core", "Removed text track but text track aren't enabled");
421
394
  return;
422
395
  }
423
- preparedContent.coreTextSender.onRemoveSuccess(msg.value.ranges);
396
+ preparedContent.workerTextSender.onRemoveSuccess(msg.value.ranges);
424
397
  break;
425
398
  }
426
399
 
@@ -429,21 +402,21 @@ export default function initializeCoreEntry(
429
402
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
430
403
  return;
431
404
  }
432
- if (preparedContent.coreTextSender === null) {
405
+ if (preparedContent.workerTextSender === null) {
433
406
  log.error("Core", "Removed text track but text track aren't enabled");
434
407
  return;
435
408
  }
436
- preparedContent.coreTextSender.onRemoveError(new Error(msg.value.message));
409
+ preparedContent.workerTextSender.onRemoveError(new Error(msg.value.message));
437
410
  break;
438
411
  }
439
412
 
440
413
  case MainThreadMessageType.PullSegmentSinkStoreInfos: {
441
- sendSegmentSinksStoreInfos(sendMessage, contentPreparer, msg.value.requestId);
414
+ sendSegmentSinksStoreInfos(contentPreparer, msg.value.requestId);
442
415
  break;
443
416
  }
444
417
 
445
418
  case MainThreadMessageType.ThumbnailDataRequest: {
446
- sendThumbnailData(sendMessage, contentPreparer, msg);
419
+ sendThumbnailData(contentPreparer, msg);
447
420
  break;
448
421
  }
449
422
 
@@ -455,72 +428,50 @@ export default function initializeCoreEntry(
455
428
  default:
456
429
  assertUnreachable(msg);
457
430
  }
458
- });
431
+ };
459
432
  }
460
433
 
461
- /**
462
- * Performs steps needed to prepare a future content to be played:
463
- * - Load its Manifest file
464
- * - Create MSE `MediaSource` for that content.
465
- * - Initialize all modules that will follow that content
466
- * - etc.
467
- * @param {Function} sendMessage - Function allowing to send messages to the
468
- * "main thread" part of the RxPlayer logic.
469
- * @param {ContentPreparer} contentPreparer
470
- * @param {Object} contentInitData - Configuration wanted for the content to
471
- * load.
472
- * @param {Object} refs - Collection of so-called "references": values
473
- * configuring playback that may be updated at any time and that the
474
- * CoreEntry should react on.
475
- */
476
434
  function prepareNewContent(
477
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
478
435
  contentPreparer: ContentPreparer,
479
436
  contentInitData: IContentInitializationData,
480
- refs: ICoreReferences,
481
437
  ): void {
482
- contentPreparer
483
- .initializeNewContent(sendMessage, contentInitData, {
484
- limitResolution: { video: refs.limitVideoResolution },
485
- throttleBitrate: { video: refs.throttleVideoBitrate },
486
- })
487
- .then(
488
- (manifest) => {
489
- sendMessage({
490
- type: CoreMessageType.ManifestReady,
491
- contentId: contentInitData.contentId,
492
- value: { manifest },
493
- });
494
- },
495
- (err: unknown) => {
496
- sendMessage({
497
- type: CoreMessageType.Error,
498
- contentId: contentInitData.contentId,
499
- value: formatErrorForSender(err),
500
- });
501
- },
502
- );
438
+ contentPreparer.initializeNewContent(contentInitData).then(
439
+ (manifest) => {
440
+ sendMessage({
441
+ type: WorkerMessageType.ManifestReady,
442
+ contentId: contentInitData.contentId,
443
+ value: { manifest },
444
+ });
445
+ },
446
+ (err: unknown) => {
447
+ sendMessage({
448
+ type: WorkerMessageType.Error,
449
+ contentId: contentInitData.contentId,
450
+ value: formatErrorForSender(err),
451
+ });
452
+ },
453
+ );
503
454
  }
504
455
 
505
- function updateCoreReference(msg: IReferenceUpdateMessage, refs: ICoreReferences): void {
456
+ function updateGlobalReference(msg: IReferenceUpdateMessage): void {
506
457
  switch (msg.value.name) {
507
458
  case "wantedBufferAhead":
508
- refs.wantedBufferAhead.setValueIfChanged(msg.value.newVal);
459
+ wantedBufferAhead.setValueIfChanged(msg.value.newVal);
509
460
  break;
510
461
  case "maxVideoBufferSize":
511
- refs.maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
462
+ maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
512
463
  break;
513
464
  case "maxBufferBehind":
514
- refs.maxBufferBehind.setValueIfChanged(msg.value.newVal);
465
+ maxBufferBehind.setValueIfChanged(msg.value.newVal);
515
466
  break;
516
467
  case "maxBufferAhead":
517
- refs.maxBufferAhead.setValueIfChanged(msg.value.newVal);
468
+ maxBufferAhead.setValueIfChanged(msg.value.newVal);
518
469
  break;
519
470
  case "limitVideoResolution":
520
- refs.limitVideoResolution.setValueIfChanged(msg.value.newVal);
471
+ limitVideoResolution.setValueIfChanged(msg.value.newVal);
521
472
  break;
522
473
  case "throttleVideoBitrate":
523
- refs.throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
474
+ throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
524
475
  break;
525
476
  default:
526
477
  assertUnreachable(msg.value);
@@ -556,11 +507,9 @@ interface IContentHandle {
556
507
  }
557
508
 
558
509
  function loadPreparedContent(
559
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
560
510
  val: ILoadingContentParameters,
561
511
  contentPreparer: ContentPreparer,
562
- playbackObservationRef: IReadOnlySharedReference<ICorePlaybackObservation>,
563
- refs: ICoreReferences,
512
+ playbackObservationRef: IReadOnlySharedReference<IWorkerPlaybackObservation>,
564
513
  ): IContentHandle {
565
514
  log.debug("Core", "Loading pepared content.");
566
515
  const contentCanceller = new TaskCanceller();
@@ -583,7 +532,7 @@ function loadPreparedContent(
583
532
  currentLoadCanceller.linkToSignal(contentCanceller.signal);
584
533
 
585
534
  /**
586
- * Stores last discontinuity update sent to the Core for each Period and type
535
+ * Stores last discontinuity update sent to the worker for each Period and type
587
536
  * combinations, at least until the corresponding `PeriodStreamCleared`
588
537
  * message.
589
538
  *
@@ -592,14 +541,14 @@ function loadPreparedContent(
592
541
  */
593
542
  const lastSentDiscontinuitiesStore: Map<
594
543
  Period,
595
- Map<ITrackType, IDiscontinuityUpdateCoreMessagePayload>
544
+ Map<ITrackType, IDiscontinuityUpdateWorkerMessagePayload>
596
545
  > = new Map();
597
546
 
598
547
  const preparedContent = contentPreparer.getCurrentContent();
599
548
  if (preparedContent === null || preparedContent.manifest === null) {
600
549
  const error = new OtherError("NONE", "Loading content when none is prepared");
601
550
  sendMessage({
602
- type: CoreMessageType.Error,
551
+ type: WorkerMessageType.Error,
603
552
  contentId: undefined,
604
553
  value: formatErrorForSender(error),
605
554
  });
@@ -623,7 +572,7 @@ function loadPreparedContent(
623
572
  const freezeResolution =
624
573
  preparedContent.freezeResolver.onNewObservation(observation);
625
574
  if (freezeResolution !== null) {
626
- handleFreezeResolution(sendMessage, freezeResolution, {
575
+ handleFreezeResolution(freezeResolution, {
627
576
  contentId,
628
577
  manifest,
629
578
  handleMediaSourceReload: performMediaSourceReload,
@@ -642,14 +591,14 @@ function loadPreparedContent(
642
591
  "Wanted starting time not found in the Manifest.",
643
592
  );
644
593
  sendMessage({
645
- type: CoreMessageType.Error,
594
+ type: WorkerMessageType.Error,
646
595
  contentId,
647
596
  value: formatErrorForSender(error),
648
597
  });
649
598
  throw error;
650
599
  }
651
600
 
652
- const playbackObserver = new CorePlaybackObserver(
601
+ const playbackObserver = new WorkerPlaybackObserver(
653
602
  playbackObservationRef,
654
603
  contentId,
655
604
  sendMessage,
@@ -668,13 +617,13 @@ function loadPreparedContent(
668
617
  {
669
618
  onWarning: (err: IPlayerError) =>
670
619
  sendMessage({
671
- type: CoreMessageType.Warning,
620
+ type: WorkerMessageType.Warning,
672
621
  contentId,
673
622
  value: formatErrorForSender(err),
674
623
  }),
675
624
  onPeriodChanged: (period: Period) => {
676
625
  sendMessage({
677
- type: CoreMessageType.ActivePeriodChanged,
626
+ type: WorkerMessageType.ActivePeriodChanged,
678
627
  contentId,
679
628
  value: { periodId: period.id },
680
629
  });
@@ -690,10 +639,10 @@ function loadPreparedContent(
690
639
  segmentSinksStore,
691
640
  segmentQueueCreator,
692
641
  {
693
- wantedBufferAhead: refs.wantedBufferAhead,
694
- maxVideoBufferSize: refs.maxVideoBufferSize,
695
- maxBufferAhead: refs.maxBufferAhead,
696
- maxBufferBehind: refs.maxBufferBehind,
642
+ wantedBufferAhead,
643
+ maxVideoBufferSize,
644
+ maxBufferAhead,
645
+ maxBufferBehind,
697
646
  drmSystemId,
698
647
  enableFastSwitching,
699
648
  onCodecSwitch,
@@ -711,7 +660,7 @@ function loadPreparedContent(
711
660
  return {
712
661
  needsBufferFlush(payload) {
713
662
  sendMessage({
714
- type: CoreMessageType.NeedsBufferFlush,
663
+ type: WorkerMessageType.NeedsBufferFlush,
715
664
  contentId,
716
665
  value: payload,
717
666
  });
@@ -757,7 +706,7 @@ function loadPreparedContent(
757
706
 
758
707
  lockedStream(payload) {
759
708
  sendMessage({
760
- type: CoreMessageType.LockedStream,
709
+ type: WorkerMessageType.LockedStream,
761
710
  contentId,
762
711
  value: {
763
712
  periodId: payload.period.id,
@@ -779,7 +728,7 @@ function loadPreparedContent(
779
728
  return;
780
729
  }
781
730
  sendMessage({
782
- type: CoreMessageType.AdaptationChanged,
731
+ type: WorkerMessageType.AdaptationChanged,
783
732
  contentId,
784
733
  value: {
785
734
  adaptationId: value.adaptation?.id ?? null,
@@ -798,7 +747,7 @@ function loadPreparedContent(
798
747
  return;
799
748
  }
800
749
  sendMessage({
801
- type: CoreMessageType.RepresentationChanged,
750
+ type: WorkerMessageType.RepresentationChanged,
802
751
  contentId,
803
752
  value: {
804
753
  adaptationId: value.adaptation.id,
@@ -811,7 +760,7 @@ function loadPreparedContent(
811
760
 
812
761
  inbandEvent(value) {
813
762
  sendMessage({
814
- type: CoreMessageType.InbandEvent,
763
+ type: WorkerMessageType.InbandEvent,
815
764
  contentId,
816
765
  value,
817
766
  });
@@ -819,7 +768,7 @@ function loadPreparedContent(
819
768
 
820
769
  warning(value) {
821
770
  sendMessage({
822
- type: CoreMessageType.Warning,
771
+ type: WorkerMessageType.Warning,
823
772
  contentId,
824
773
  value: formatErrorForSender(value),
825
774
  });
@@ -835,7 +784,7 @@ function loadPreparedContent(
835
784
  value.adaptationRef,
836
785
  );
837
786
  sendMessage({
838
- type: CoreMessageType.PeriodStreamReady,
787
+ type: WorkerMessageType.PeriodStreamReady,
839
788
  contentId,
840
789
  value: { periodId: value.period.id, bufferType: value.type },
841
790
  });
@@ -862,7 +811,7 @@ function loadPreparedContent(
862
811
  value.type,
863
812
  );
864
813
  sendMessage({
865
- type: CoreMessageType.PeriodStreamCleared,
814
+ type: WorkerMessageType.PeriodStreamCleared,
866
815
  contentId,
867
816
  value: { periodId: value.period.id, bufferType: value.type },
868
817
  });
@@ -880,7 +829,7 @@ function loadPreparedContent(
880
829
  // Considering this is only for an unimportant undocumented API, we may
881
830
  // throttle such messages. (e.g. max one per 2 seconds for each type?).
882
831
  sendMessage({
883
- type: CoreMessageType.BitrateEstimateChange,
832
+ type: WorkerMessageType.BitrateEstimateChange,
884
833
  contentId,
885
834
  value: {
886
835
  bitrate: payload.bitrate,
@@ -895,7 +844,7 @@ function loadPreparedContent(
895
844
 
896
845
  needsDecipherabilityFlush() {
897
846
  sendMessage({
898
- type: CoreMessageType.NeedsDecipherabilityFlush,
847
+ type: WorkerMessageType.NeedsDecipherabilityFlush,
899
848
  contentId,
900
849
  value: null,
901
850
  });
@@ -918,7 +867,7 @@ function loadPreparedContent(
918
867
  content.representation = content.representation.getMetadataSnapshot();
919
868
  }
920
869
  sendMessage({
921
- type: CoreMessageType.EncryptionDataEncountered,
870
+ type: WorkerMessageType.EncryptionDataEncountered,
922
871
  contentId,
923
872
  value: {
924
873
  keyIds: value.keyIds,
@@ -932,7 +881,7 @@ function loadPreparedContent(
932
881
 
933
882
  error(error: unknown) {
934
883
  sendMessage({
935
- type: CoreMessageType.Error,
884
+ type: WorkerMessageType.Error,
936
885
  contentId,
937
886
  value: formatErrorForSender(error),
938
887
  });
@@ -971,7 +920,7 @@ function loadPreparedContent(
971
920
  };
972
921
  periodMap.set(value.bufferType, msgObj);
973
922
  sendMessage({
974
- type: CoreMessageType.DiscontinuityUpdate,
923
+ type: WorkerMessageType.DiscontinuityUpdate,
975
924
  contentId,
976
925
  value: msgObj,
977
926
  });
@@ -996,7 +945,7 @@ function loadPreparedContent(
996
945
 
997
946
  sendMessage(
998
947
  {
999
- type: CoreMessageType.ReloadingMediaSource,
948
+ type: WorkerMessageType.ReloadingMediaSource,
1000
949
  mediaSourceId,
1001
950
  value: payload,
1002
951
  },
@@ -1014,7 +963,7 @@ function loadPreparedContent(
1014
963
  currentLoadCanceller = null;
1015
964
  }
1016
965
  const contentId = contentPreparer.getCurrentContent()?.contentId;
1017
- contentPreparer.reloadMediaSource(sendMessage).then(
966
+ contentPreparer.reloadMediaSource().then(
1018
967
  () => {
1019
968
  log.info("Core", "MediaSource Reloaded, loading content again", {
1020
969
  newInitialTime,
@@ -1027,7 +976,7 @@ function loadPreparedContent(
1027
976
  return;
1028
977
  }
1029
978
  sendMessage({
1030
- type: CoreMessageType.Error,
979
+ type: WorkerMessageType.Error,
1031
980
  contentId,
1032
981
  value: formatErrorForSender(err),
1033
982
  });
@@ -1055,7 +1004,7 @@ function updateLoggerLevel(
1055
1004
  });
1056
1005
  // Not relying on `sendMessage` as it also logs
1057
1006
  postMessage({
1058
- type: CoreMessageType.LogMessage,
1007
+ type: WorkerMessageType.LogMessage,
1059
1008
  value: {
1060
1009
  namespace,
1061
1010
  logLevel: levelStr,
@@ -1069,12 +1018,10 @@ function updateLoggerLevel(
1069
1018
  /**
1070
1019
  * Send a message `SegmentSinkStoreUpdate` to the main thread with
1071
1020
  * a serialized object that represents the segmentSinksStore state.
1072
- * @param {Function} sendMessage - Function allowing to send messages to the
1073
- * "main thread" part of the RxPlayer logic.
1074
1021
  * @param {ContentPreparer} contentPreparer
1022
+ * @returns {void}
1075
1023
  */
1076
1024
  function sendSegmentSinksStoreInfos(
1077
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
1078
1025
  contentPreparer: ContentPreparer,
1079
1026
  requestId: number,
1080
1027
  ): void {
@@ -1084,7 +1031,7 @@ function sendSegmentSinksStoreInfos(
1084
1031
  }
1085
1032
  const segmentSinksMetrics = currentContent.segmentSinksStore.getSegmentSinksMetrics();
1086
1033
  sendMessage({
1087
- type: CoreMessageType.SegmentSinkStoreUpdate,
1034
+ type: WorkerMessageType.SegmentSinkStoreUpdate,
1088
1035
  contentId: currentContent.contentId,
1089
1036
  value: { segmentSinkMetrics: segmentSinksMetrics, requestId },
1090
1037
  });
@@ -1092,8 +1039,6 @@ function sendSegmentSinksStoreInfos(
1092
1039
 
1093
1040
  /**
1094
1041
  * Handle accordingly an `IFreezeResolution` object.
1095
- * @param {Function} sendMessage - Function allowing to send messages to the
1096
- * "main thread" part of the RxPlayer logic.
1097
1042
  * @param {Object|null} freezeResolution - The `IFreezeResolution` suggested.
1098
1043
  * @param {Object} param - Parameters that might be needed to implement the
1099
1044
  * resolution.
@@ -1107,7 +1052,6 @@ function sendSegmentSinksStoreInfos(
1107
1052
  * `IFreezeResolution` object suggest it.
1108
1053
  */
1109
1054
  function handleFreezeResolution(
1110
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
1111
1055
  freezeResolution: IFreezeResolution,
1112
1056
  {
1113
1057
  contentId,
@@ -1134,7 +1078,7 @@ function handleFreezeResolution(
1134
1078
  case "flush": {
1135
1079
  log.info("Core", "Flushing buffer due to freeze");
1136
1080
  sendMessage({
1137
- type: CoreMessageType.NeedsBufferFlush,
1081
+ type: WorkerMessageType.NeedsBufferFlush,
1138
1082
  contentId,
1139
1083
  value: {
1140
1084
  relativeResumingPosition: freezeResolution.value.relativeSeek,
@@ -1167,14 +1111,13 @@ function handleFreezeResolution(
1167
1111
  * @returns {void}
1168
1112
  */
1169
1113
  function sendThumbnailData(
1170
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
1171
1114
  contentPreparer: ContentPreparer,
1172
1115
  msg: IThumbnailDataRequestMainMessage,
1173
1116
  ): void {
1174
1117
  const preparedContent = contentPreparer.getCurrentContent();
1175
1118
  const respondWithError = (err: unknown) => {
1176
1119
  sendMessage({
1177
- type: CoreMessageType.ThumbnailDataResponse,
1120
+ type: WorkerMessageType.ThumbnailDataResponse,
1178
1121
  contentId: msg.contentId,
1179
1122
  value: {
1180
1123
  status: "error",
@@ -1202,7 +1145,7 @@ function sendThumbnailData(
1202
1145
  (result) => {
1203
1146
  sendMessage(
1204
1147
  {
1205
- type: CoreMessageType.ThumbnailDataResponse,
1148
+ type: WorkerMessageType.ThumbnailDataResponse,
1206
1149
  contentId: msg.contentId,
1207
1150
  value: {
1208
1151
  status: "success",
@@ -1218,20 +1161,3 @@ function sendThumbnailData(
1218
1161
  },
1219
1162
  );
1220
1163
  }
1221
-
1222
- /**
1223
- * Collection of so-called "references": values configuring playback that may
1224
- * be updated at any time and that the CoreEntry should react on.
1225
- */
1226
- export interface ICoreReferences {
1227
- limitVideoResolution: SharedReference<IResolutionInfo>;
1228
- /** Max buffer size after the current position, in seconds (we GC further up). */
1229
- maxBufferAhead: SharedReference<number>;
1230
- /** Max buffer size before the current position, in seconds (we GC further down). */
1231
- maxBufferBehind: SharedReference<number>;
1232
- /** Buffer maximum size in kiloBytes at which we stop downloading */
1233
- maxVideoBufferSize: SharedReference<number>;
1234
- throttleVideoBitrate: SharedReference<number>;
1235
- /** Buffer "goal" at which we stop downloading new segments. */
1236
- wantedBufferAhead: SharedReference<number>;
1237
- }