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,7 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import initializeCoreEntry from "../../../core/entry";
3
2
  import type { IFeaturesObject } from "../../../features/types";
4
- import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
5
3
  import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
6
4
  import metaplaylist from "../../../transports/metaplaylist";
7
5
  import addLocalManifestFeature from "../metaplaylist";
@@ -12,16 +10,9 @@ describe("Features list - METAPLAYLIST", () => {
12
10
  addLocalManifestFeature(featureObject);
13
11
  expect(featureObject).toEqual({
14
12
  transports: { metaplaylist },
15
- monothread: {
16
- init: MediaSourceContentInitializer,
17
- coreInterface: MonoThreadCoreInterface,
18
- initializeCoreEntry,
19
- },
13
+ mainThreadMediaSourceInit: MediaSourceContentInitializer,
20
14
  });
21
15
  expect(featureObject.transports.metaplaylist).toBe(metaplaylist);
22
- expect(featureObject.monothread).not.toBe(null);
23
- expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
24
- expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
25
- expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
16
+ expect(featureObject.mainThreadMediaSourceInit).toBe(MediaSourceContentInitializer);
26
17
  });
27
18
  });
@@ -1,7 +1,6 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
  import type { IFeaturesObject } from "../../../features/types";
3
- import { WorkerCoreInterface } from "../../../main_thread/core_interface/multithread";
4
- import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
3
+ import MultiThreadContentInitializer from "../../../main_thread/init/multi_thread_content_initializer";
5
4
  import addMultiThreadFeature from "../multi_thread";
6
5
 
7
6
  describe("Features list - EME", () => {
@@ -9,14 +8,10 @@ describe("Features list - EME", () => {
9
8
  const featureObject: IFeaturesObject = {} as IFeaturesObject;
10
9
  addMultiThreadFeature(featureObject);
11
10
  expect(featureObject).toEqual({
12
- multithread: {
13
- init: MediaSourceContentInitializer,
14
- coreInterface: WorkerCoreInterface,
15
- },
11
+ multithread: { init: MultiThreadContentInitializer },
16
12
  });
17
13
  expect(featureObject.multithread).not.toBe(null);
18
14
  expect(featureObject.multithread).not.toBe(undefined);
19
- expect(featureObject.multithread?.init).toBe(MediaSourceContentInitializer);
20
- expect(featureObject.multithread?.coreInterface).toBe(WorkerCoreInterface);
15
+ expect(featureObject.multithread?.init).toBe(MultiThreadContentInitializer);
21
16
  });
22
17
  });
@@ -14,19 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import initializeCoreEntry from "../../core/entry";
18
17
  import type { IFeaturesObject } from "../../features/types";
19
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
20
18
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
21
19
  import local from "../../transports/local";
22
20
 
23
21
  function addLocalManifestFeature(features: IFeaturesObject): void {
24
22
  features.transports.local = local;
25
- features.monothread = {
26
- init: MediaSourceContentInitializer,
27
- coreInterface: MonoThreadCoreInterface,
28
- initializeCoreEntry,
29
- };
23
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
30
24
  }
31
25
 
32
26
  export { addLocalManifestFeature as LOCAL_MANIFEST };
@@ -14,19 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import initializeCoreEntry from "../../core/entry";
18
17
  import type { IFeaturesObject } from "../../features/types";
19
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
20
18
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
21
19
  import metaplaylist from "../../transports/metaplaylist";
22
20
 
23
21
  function addMetaPlaylistFeature(features: IFeaturesObject): void {
24
22
  features.transports.metaplaylist = metaplaylist;
25
- features.monothread = {
26
- init: MediaSourceContentInitializer,
27
- coreInterface: MonoThreadCoreInterface,
28
- initializeCoreEntry,
29
- };
23
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
30
24
  }
31
25
 
32
26
  export { addMetaPlaylistFeature as METAPLAYLIST };
@@ -1,16 +1,12 @@
1
1
  import type { IFeaturesObject } from "../../features/types";
2
- import { WorkerCoreInterface } from "../../main_thread/core_interface/multithread";
3
- import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
2
+ import MultiThreadContentInitializer from "../../main_thread/init/multi_thread_content_initializer";
4
3
 
5
4
  /**
6
5
  * Add ability to run the RxPlayer's main buffering logic in a WebMultiThread.
7
6
  * @param {Object} features
8
7
  */
9
8
  function addMultiThreadFeature(features: IFeaturesObject): void {
10
- features.multithread = {
11
- init: MediaSourceContentInitializer,
12
- coreInterface: WorkerCoreInterface,
13
- };
9
+ features.multithread = { init: MultiThreadContentInitializer };
14
10
  }
15
11
 
16
12
  export { addMultiThreadFeature as MULTI_THREAD };
@@ -27,7 +27,7 @@ const features: IFeaturesObject = {
27
27
  decrypt: null,
28
28
  htmlTextDisplayer: null,
29
29
  htmlTextTracksParsers: {},
30
- monothread: null,
30
+ mainThreadMediaSourceInit: null,
31
31
  multithread: null,
32
32
  nativeTextDisplayer: null,
33
33
  nativeTextTracksParsers: {},
@@ -1,6 +1,4 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import initializeCoreEntry from "../../../core/entry";
3
- import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
4
2
  import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
5
3
  import dashJsParser from "../../../parsers/manifest/dash/js-parser";
6
4
  import DASHFeature from "../../../transports/dash";
@@ -12,22 +10,15 @@ describe("Features list - DASH", () => {
12
10
  const featureObject = {
13
11
  transports: {},
14
12
  dashParsers: { js: null, wasm: null },
15
- monothread: null,
13
+ mainThreadMediaSourceInit: null,
16
14
  } as unknown as IFeaturesObject;
17
15
  addDASHFeature(featureObject);
18
16
  expect(featureObject).toEqual({
19
17
  transports: { dash: DASHFeature },
20
18
  dashParsers: { js: dashJsParser, wasm: null },
21
- monothread: {
22
- init: MediaSourceContentInitializer,
23
- coreInterface: MonoThreadCoreInterface,
24
- initializeCoreEntry,
25
- },
19
+ mainThreadMediaSourceInit: MediaSourceContentInitializer,
26
20
  });
27
21
  expect(featureObject.transports.dash).toBe(DASHFeature);
28
- expect(featureObject.monothread).not.toBe(null);
29
- expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
30
- expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
31
- expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
22
+ expect(featureObject.mainThreadMediaSourceInit).toBe(MediaSourceContentInitializer);
32
23
  });
33
24
  });
@@ -1,6 +1,4 @@
1
1
  import { describe, it, expect } from "vitest";
2
- import initializeCoreEntry from "../../../core/entry";
3
- import { MonoThreadCoreInterface } from "../../../main_thread/core_interface/monothread";
4
2
  import MediaSourceContentInitializer from "../../../main_thread/init/media_source_content_initializer";
5
3
  import SmoothFeature from "../../../transports/smooth";
6
4
  import type { IFeaturesObject } from "../../types";
@@ -12,16 +10,9 @@ describe("Features list - Smooth", () => {
12
10
  addSmoothFeature(featureObject);
13
11
  expect(featureObject).toEqual({
14
12
  transports: { smooth: SmoothFeature },
15
- monothread: {
16
- init: MediaSourceContentInitializer,
17
- coreInterface: MonoThreadCoreInterface,
18
- initializeCoreEntry,
19
- },
13
+ mainThreadMediaSourceInit: MediaSourceContentInitializer,
20
14
  });
21
15
  expect(featureObject.transports.smooth).toBe(SmoothFeature);
22
- expect(featureObject.monothread).not.toBe(null);
23
- expect(featureObject.monothread?.init).toBe(MediaSourceContentInitializer);
24
- expect(featureObject.monothread?.coreInterface).toBe(MonoThreadCoreInterface);
25
- expect(featureObject.monothread?.initializeCoreEntry).toBe(initializeCoreEntry);
16
+ expect(featureObject.mainThreadMediaSourceInit).toBe(MediaSourceContentInitializer);
26
17
  });
27
18
  });
@@ -14,8 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import initializeCoreEntry from "../../core/entry";
18
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
19
17
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
20
18
  import dashJsParser from "../../parsers/manifest/dash/js-parser";
21
19
  import dash from "../../transports/dash";
@@ -30,11 +28,7 @@ function addDASHFeature(features: IFeaturesObject): void {
30
28
  features.transports.dash = dash;
31
29
  }
32
30
  features.dashParsers.js = dashJsParser;
33
- features.monothread = {
34
- init: MediaSourceContentInitializer,
35
- coreInterface: MonoThreadCoreInterface,
36
- initializeCoreEntry,
37
- };
31
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
38
32
  }
39
33
 
40
34
  export { addDASHFeature as DASH };
@@ -14,9 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import initializeCoreEntry from "../../core/entry";
18
17
  import type { IFeaturesObject } from "../../features/types";
19
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
20
18
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
21
19
  import type { IDashWasmParserOptions } from "../../parsers/manifest/dash/wasm-parser";
22
20
  import DashWasmParser from "../../parsers/manifest/dash/wasm-parser";
@@ -29,11 +27,7 @@ const dashWasmFeature = {
29
27
  features.transports.dash = dash;
30
28
  }
31
29
  features.dashParsers.wasm = dashWasmParser;
32
- features.monothread = {
33
- init: MediaSourceContentInitializer,
34
- coreInterface: MonoThreadCoreInterface,
35
- initializeCoreEntry,
36
- };
30
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
37
31
  },
38
32
 
39
33
  initialize(opts: IDashWasmParserOptions): Promise<void> {
@@ -1,5 +1,3 @@
1
- import initializeCoreEntry from "../../core/entry";
2
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
3
1
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
4
2
  import type { IFeaturesObject } from "../types";
5
3
 
@@ -8,11 +6,7 @@ import type { IFeaturesObject } from "../types";
8
6
  * @param {Object} features
9
7
  */
10
8
  function addMediaSourceMainFeature(features: IFeaturesObject): void {
11
- features.monothread = {
12
- init: MediaSourceContentInitializer,
13
- coreInterface: MonoThreadCoreInterface,
14
- initializeCoreEntry,
15
- };
9
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
16
10
  }
17
11
 
18
12
  export { addMediaSourceMainFeature as MEDIA_SOURCE_MAIN };
@@ -14,8 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import initializeCoreEntry from "../../core/entry";
18
- import { MonoThreadCoreInterface } from "../../main_thread/core_interface/monothread";
19
17
  import MediaSourceContentInitializer from "../../main_thread/init/media_source_content_initializer";
20
18
  import smooth from "../../transports/smooth";
21
19
  import type { IFeaturesObject } from "../types";
@@ -28,11 +26,7 @@ function addSmoothFeature(features: IFeaturesObject): void {
28
26
  if (features.transports.smooth === undefined) {
29
27
  features.transports.smooth = smooth;
30
28
  }
31
- features.monothread = {
32
- init: MediaSourceContentInitializer,
33
- coreInterface: MonoThreadCoreInterface,
34
- initializeCoreEntry,
35
- };
29
+ features.mainThreadMediaSourceInit = MediaSourceContentInitializer;
36
30
  }
37
31
 
38
32
  export { addSmoothFeature as SMOOTH };
@@ -15,15 +15,11 @@
15
15
  */
16
16
 
17
17
  import type { IMediaElement } from "../compat/browser_compatibility_types";
18
- import type IInitializeCoreEntry from "../core/entry";
19
18
  import type { SegmentSink } from "../core/segment_sinks";
20
- import type {
21
- WorkerCoreInterface,
22
- MonoThreadCoreInterface,
23
- } from "../main_thread/core_interface/types";
24
19
  import type ContentDecryptor from "../main_thread/decrypt";
25
20
  import type DirectFileContentInitializer from "../main_thread/init/directfile_content_initializer";
26
21
  import type MediaSourceContentInitializer from "../main_thread/init/media_source_content_initializer";
22
+ import type MultiThreadContentInitializer from "../main_thread/init/multi_thread_content_initializer";
27
23
  import type HTMLTextDisplayer from "../main_thread/text_displayer/html";
28
24
  import type NativeTextDisplayer from "../main_thread/text_displayer/native/native_text_displayer";
29
25
  import type MediaElementTracksStore from "../main_thread/tracks_store/media_element_tracks_store";
@@ -118,29 +114,14 @@ export interface IFeaturesObject {
118
114
  * Feature allowing to load contents through MediaSource API through the
119
115
  * main thread.
120
116
  */
121
- monothread: {
122
- /** Class to load a content through the MediaSource API. */
123
- init: typeof MediaSourceContentInitializer;
124
- /** The RxPlayer's core logic. */
125
- initializeCoreEntry: typeof IInitializeCoreEntry;
126
- /**
127
- * Class allowing to exchange messages with the RxPlayer's `core`, here
128
- * running in `coreEntry`
129
- */
130
- coreInterface: typeof MonoThreadCoreInterface;
131
- } | null;
117
+ mainThreadMediaSourceInit: typeof MediaSourceContentInitializer | null;
132
118
  /**
133
119
  * Features allowing to load contents through MediaSource API through
134
120
  * a WebWorker.
135
121
  */
136
122
  multithread: {
137
- /** Class to load a content through the MediaSource API. */
138
- init: typeof MediaSourceContentInitializer;
139
- /**
140
- * Class allowing to exchange messages with the RxPlayer's `core`, here
141
- * running in another thread.
142
- */
143
- coreInterface: typeof WorkerCoreInterface;
123
+ /** Class to load a content through MediaSource API via a WebWorker. */
124
+ init: typeof MultiThreadContentInitializer;
144
125
  } | null;
145
126
  /**
146
127
  * Function for loading and parsing contents through various protocols, by
@@ -27,14 +27,6 @@ Those modules are:
27
27
  Negotiate content decryption. Only used for contents with DRM (Digital Right
28
28
  Management).
29
29
 
30
- - **the `CoreInterface` (./core_interface)**
31
-
32
- Provide an interface allowing to communicate to the central RxPlayer logic in the `core`
33
- directory (`../core/`), which may run in another thread.
34
-
35
- That interface depends on the context (e.g. depending on if we are playing in a
36
- mono-threaded mode or a multithreaded mode).
37
-
38
30
  - **the `TracksStore` (or `MediaElementTracksStore`) (./tracks_store)**
39
31
 
40
32
  Ease up text/audio/video track switching to provide a simple-to-use API.
@@ -38,9 +38,7 @@ import type {
38
38
  IInbandEvent,
39
39
  IABRThrottlers,
40
40
  IBufferType,
41
- ICoreMessage,
42
41
  } from "../../core/types";
43
- import { CoreMessageType } from "../../core/types";
44
42
  import type { IDefaultConfig } from "../../default_config";
45
43
  import type { IErrorCode, IErrorType } from "../../errors";
46
44
  import { ErrorCodes, ErrorTypes, formatError, MediaError } from "../../errors";
@@ -62,10 +60,13 @@ import {
62
60
  getMaximumSafePosition,
63
61
  getMinimumSafePosition,
64
62
  ManifestMetadataFormat,
63
+ createRepresentationFilterFromFnString,
65
64
  getPeriodForTime,
66
65
  toVideoRepresentation,
67
66
  toAudioRepresentation,
68
67
  } from "../../manifest";
68
+ import type { IWorkerMessage } from "../../multithread_types";
69
+ import { MainThreadMessageType, WorkerMessageType } from "../../multithread_types";
69
70
  import type { IPlaybackObservation } from "../../playback_observer";
70
71
  import MediaElementPlaybackObserver from "../../playback_observer/media_element_playback_observer";
71
72
  import type {
@@ -132,7 +133,6 @@ import type { ContentInitializer } from "../init";
132
133
  import renderThumbnail from "../render_thumbnail";
133
134
  import type { IMediaElementTracksStore, ITSPeriodObject } from "../tracks_store";
134
135
  import TracksStore from "../tracks_store";
135
- import { MainThreadMessageType } from "../types";
136
136
  import type { IParsedLoadVideoOptions, IParsedStartAtOption } from "./option_utils";
137
137
  import {
138
138
  checkReloadOptions,
@@ -445,7 +445,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
445
445
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
446
446
  videoElement.preload = "auto";
447
447
 
448
- this.version = /* PLAYER_VERSION */ "4.4.1-dev.2025101500";
448
+ this.version = /* PLAYER_VERSION */ "4.4.1";
449
449
  this.log = log;
450
450
  this.state = "STOPPED";
451
451
  this.videoElement = videoElement;
@@ -572,8 +572,8 @@ class Player extends EventEmitter<IPublicAPIEvent> {
572
572
  );
573
573
  };
574
574
  const handleInitMessages = (msg: MessageEvent) => {
575
- const msgData = msg.data as unknown as ICoreMessage;
576
- if (msgData.type === CoreMessageType.InitError) {
575
+ const msgData = msg.data as unknown as IWorkerMessage;
576
+ if (msgData.type === WorkerMessageType.InitError) {
577
577
  log.warn("API", "Processing InitError worker message: detaching worker");
578
578
  if (this._priv_worker !== null) {
579
579
  this._priv_worker.removeEventListener("message", handleInitMessages);
@@ -586,7 +586,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
586
586
  "Worker parser initialization failed: " + msgData.value.errorMessage,
587
587
  ),
588
588
  );
589
- } else if (msgData.type === CoreMessageType.InitSuccess) {
589
+ } else if (msgData.type === WorkerMessageType.InitSuccess) {
590
590
  log.info("API", "InitSuccess received from worker.");
591
591
  if (this._priv_worker !== null) {
592
592
  this._priv_worker.removeEventListener("message", handleInitMessages);
@@ -1034,19 +1034,6 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1034
1034
  connectionTimeout: requestConfig.segment?.connectionTimeout,
1035
1035
  };
1036
1036
 
1037
- const transportOptions = {
1038
- lowLatencyMode,
1039
- checkMediaSegmentIntegrity,
1040
- checkManifestIntegrity,
1041
- referenceDateTime,
1042
- serverSyncInfos,
1043
- manifestLoader,
1044
- segmentLoader,
1045
- representationFilter: options.representationFilter,
1046
- __priv_manifestUpdateUrl,
1047
- __priv_patchLastSegmentInSidx,
1048
- };
1049
-
1050
1037
  const canRunInMultiThread =
1051
1038
  features.multithread !== null &&
1052
1039
  this._priv_worker !== null &&
@@ -1057,33 +1044,39 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1057
1044
  ) &&
1058
1045
  typeof options.representationFilter !== "function";
1059
1046
  if (mode === "main" || (mode === "auto" && !canRunInMultiThread)) {
1060
- if (features.monothread === null) {
1047
+ if (features.mainThreadMediaSourceInit === null) {
1061
1048
  throw new Error(
1062
1049
  "Cannot load video, neither in a WebWorker nor with the " +
1063
1050
  "`MEDIA_SOURCE_MAIN` feature",
1064
1051
  );
1065
1052
  }
1053
+ const transportFn = features.transports[transport];
1054
+ if (typeof transportFn !== "function") {
1055
+ // Stop previous content and reset its state
1056
+ this.stop();
1057
+ this._priv_currentError = null;
1058
+ throw new Error(`transport "${transport}" not supported`);
1059
+ }
1060
+
1061
+ const representationFilter =
1062
+ typeof options.representationFilter === "string"
1063
+ ? createRepresentationFilterFromFnString(options.representationFilter)
1064
+ : options.representationFilter;
1065
+
1066
1066
  log.info("API", "Initializing MediaSource mode in the main thread");
1067
- const coreInterface = new features.monothread.coreInterface();
1068
- const coreInterfaceCallbacks = coreInterface.getCallbacks();
1069
- features.monothread.initializeCoreEntry(
1070
- coreInterfaceCallbacks.setCoreMessageReceiver,
1071
- coreInterfaceCallbacks.sendCoreMessage,
1072
- );
1073
- coreInterface.sendMessage({
1074
- type: MainThreadMessageType.Init,
1075
- value: {
1076
- dashWasmUrl: undefined,
1077
- hasVideo: this.videoElement?.nodeName.toLowerCase() === "video",
1078
- logLevel: log.getLevel(),
1079
- logFormat: log.getFormat(),
1080
- sendBackLogs: false,
1081
- date: Date.now(),
1082
- timestamp: getMonotonicTimeStamp(),
1083
- },
1067
+ const transportPipelines = transportFn({
1068
+ lowLatencyMode,
1069
+ checkMediaSegmentIntegrity,
1070
+ checkManifestIntegrity,
1071
+ manifestLoader,
1072
+ referenceDateTime,
1073
+ representationFilter,
1074
+ segmentLoader,
1075
+ serverSyncInfos,
1076
+ __priv_manifestUpdateUrl,
1077
+ __priv_patchLastSegmentInSidx,
1084
1078
  });
1085
- initializer = new features.monothread.init({
1086
- coreInterface,
1079
+ initializer = new features.mainThreadMediaSourceInit({
1087
1080
  adaptiveOptions,
1088
1081
  autoPlay,
1089
1082
  bufferOptions,
@@ -1092,15 +1085,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1092
1085
  experimentalOptions.enableRepresentationAvoidance,
1093
1086
  keySystems,
1094
1087
  lowLatencyMode,
1095
- transport,
1096
- transportOptions,
1088
+ transport: transportPipelines,
1097
1089
  manifestRequestSettings,
1098
1090
  segmentRequestOptions,
1099
1091
  speed: this._priv_speed,
1100
1092
  startAt,
1101
1093
  textTrackOptions,
1102
1094
  url,
1103
- useMseInWorker: false,
1104
1095
  });
1105
1096
  } else {
1106
1097
  if (features.multithread === null) {
@@ -1117,8 +1108,19 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1117
1108
  assert(typeof options.representationFilter !== "function");
1118
1109
  useWorker = true;
1119
1110
  log.info("API", "Initializing MediaSource mode in a WebWorker");
1111
+ const transportOptions = {
1112
+ lowLatencyMode,
1113
+ checkMediaSegmentIntegrity,
1114
+ checkManifestIntegrity,
1115
+ referenceDateTime,
1116
+ serverSyncInfos,
1117
+ manifestLoader: undefined,
1118
+ segmentLoader: undefined,
1119
+ representationFilter: options.representationFilter,
1120
+ __priv_manifestUpdateUrl,
1121
+ __priv_patchLastSegmentInSidx,
1122
+ };
1120
1123
  initializer = new features.multithread.init({
1121
- coreInterface: new features.multithread.coreInterface(this._priv_worker),
1122
1124
  adaptiveOptions,
1123
1125
  autoPlay,
1124
1126
  bufferOptions,
@@ -1127,13 +1129,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1127
1129
  experimentalOptions.enableRepresentationAvoidance,
1128
1130
  keySystems,
1129
1131
  lowLatencyMode,
1130
- transport,
1131
1132
  transportOptions,
1132
1133
  manifestRequestSettings,
1133
1134
  segmentRequestOptions,
1134
1135
  speed: this._priv_speed,
1135
1136
  startAt,
1136
1137
  textTrackOptions,
1138
+ worker: this._priv_worker,
1137
1139
  url,
1138
1140
  useMseInWorker: hasMseInWorker,
1139
1141
  });
@@ -1164,7 +1166,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1164
1166
  }
1165
1167
 
1166
1168
  /** Global "playback observer" which will emit playback conditions */
1167
- const playbackObserver = new MediaElementPlaybackObserver(videoElement, {
1169
+ const playbackObserver = new MediaElementPlaybackObserver({
1168
1170
  withMediaSource: !isDirectFile,
1169
1171
  lowLatencyMode,
1170
1172
  });
@@ -1287,6 +1289,8 @@ class Player extends EventEmitter<IPublicAPIEvent> {
1287
1289
  // content.
1288
1290
  this.stop();
1289
1291
 
1292
+ playbackObserver.attachMediaElement(videoElement);
1293
+
1290
1294
  // Update the RxPlayer's state at the right events
1291
1295
  const playerStateRef = constructPlayerStateReference(
1292
1296
  initializer,
@@ -3574,7 +3578,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
3574
3578
  }
3575
3579
  }
3576
3580
  }
3577
- Player.version = /* PLAYER_VERSION */ "4.4.1-dev.2025101500";
3581
+ Player.version = /* PLAYER_VERSION */ "4.4.1";
3578
3582
 
3579
3583
  /** Every events sent by the RxPlayer's public API. */
3580
3584
  interface IPublicAPIEvent {