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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rx-player",
3
3
  "author": "Canal+",
4
- "version": "4.4.1-dev.2025101500",
4
+ "version": "4.4.1",
5
5
  "description": "Canal+ HTML5 Video Player",
6
6
  "main": "./dist/commonjs/index.js",
7
7
  "module": "./dist/es2017/index.js",
@@ -166,11 +166,11 @@
166
166
  "fmt:prettier:check": "prettier . --check",
167
167
  "fmt:rust": "cd ./src/parsers/manifest/dash/wasm-parser && cargo fmt",
168
168
  "fmt:rust:check": "cd ./src/parsers/manifest/dash/wasm-parser && cargo fmt --check",
169
- "lint": "eslint src -c eslint.config.mjs",
170
- "lint:all": "npm run lint && npm run lint:demo && npm run lint:scripts && npm run lint:tests",
171
- "lint:demo": "eslint -c demo/eslint.config.mjs demo/scripts",
172
- "lint:scripts": "eslint -c scripts/eslint.config.mjs --ext .js --ext .mjs --ext .cjs scripts",
173
- "lint:tests": "eslint -c tests/eslint.config.mjs tests",
169
+ "lint": "eslint -c eslint.config.mjs src",
170
+ "lint:all": "eslint -c eslint.config.mjs",
171
+ "lint:demo": "eslint -c eslint.config.mjs demo",
172
+ "lint:scripts": "eslint -c eslint.config.mjs scripts",
173
+ "lint:tests": "eslint -c eslint.config.mjs tests",
174
174
  "list": "node scripts/list-npm-scripts.mjs",
175
175
  "prepublishOnly": "bash ./scripts/make_all_builds.sh",
176
176
  "releases:changelog": "node ./scripts/update_changelog.mjs",
package/src/README.md CHANGED
@@ -34,13 +34,13 @@ it:
34
34
  -------------------------|- RxPlayer Main Thread ---------------------------
35
35
  |
36
36
  Front-facing API v
37
- +---------------------------------------+ +----------------------+
38
- | Public API | uses | TracksStore |
39
- | (./main_thread/api) |----->|(./main_thread/tracks_|
40
- +---------------------------------------+ |store) |
41
- | +----------------------+
42
- | Facilitate track switching
43
- Initialize | creates for the API
37
+ +---------------------------------------+ +--------------------+
38
+ | Public API |uses| TracksStore |
39
+ | (./main_thread/api) |--->|(./main_thread/track|
40
+ +---------------------------------------+ |s_store) |
41
+ | +--------------------+
42
+ | Facilitate track switching
43
+ Initialize | creates for the API
44
44
  playback and |
45
45
  create/connect | Negotiate content
46
46
  modules v decryption
@@ -52,49 +52,41 @@ it:
52
52
  |(./main_thread/init)| creates | Text Displayer |
53
53
  | | --------------------------->|(./main_thread/te |
54
54
  +--------------------+ |xt_displayer) |
55
- | ^ +------------------+
56
- V | ^
57
- +--------------------------------+ |
58
- | CoreInterface | Link `main_thread` |
59
- | (./main_thread/core_interface) | to `core` logic |
60
- +--------------------------------+ |
61
- | ^ |
62
- | | |
63
- | | |
64
- | | Message exchanges |
65
- | | |
66
- | | |
67
- ---|--|----------- RxPlayer Core (May run in a WebWorker) ----------------
68
- | | |
69
- | | |
70
- | | |
71
- | | Exchange messages with the main |
72
- V | thread and process them. |
73
- +-----------------------+ +--------------------------+ |
74
- | Core Entry |------------>| Manifest Fetcher | |
75
- | (./core/entry) | creates |(./core/fetchers/manifest)| |
76
- +-----------------------+ +--------------------------+ |
77
- | Creates | Load and | |
78
- V | refresh the | Ask to load |
79
- +-------------------+ | Manifest | and parse the |
80
- | | | creates | Manifest |
81
- | CMCD data builder | | v |
82
- | (./core/cmcd) | | +--------------------+ | ` Internet
83
- | | | | | request | ` ,,,,,
84
- +-------------------+ | | transport |--------------+---`-->( CDN )
85
- Perform data collection | | (./transport) | | ` `````
86
- for the "Common Media | | |<-----+ | `
87
- Client Data" (CMCD) | +--------------------+ \ |
88
- scheme. | Abstract the streaming \ |
89
- | protocol (e.g. DASH) \ |
90
- | \ |
91
- Stream (./core/stream) | \ +
92
- +------------------------|---------------------------------+ \ \
93
- | v | \ \
94
- | Create PeriodStreams +----------------------------+ | Ask to\ \
95
- | based on the position | StreamOrchestrator | | load \ \
96
- | and settings |(./core/stream/orchestrator)| | and \ \
97
- | +----------------------------+ | parse \ \
55
+ | ^ +------------------+
56
+ | | Message exchanges ^
57
+ | | |
58
+ ---|--|----------- RxPlayer Core (May run in a WebWorker) ---------|---
59
+ | | |
60
+ | | (*Only if running in a WebWorker) +----+
61
+ | | Exchange messages with the main |
62
+ V | thread and process them. |
63
+ +---------------------------+ +----------------------------+ |
64
+ | | creates | | |
65
+ | Worker Main* |-------->| Manifest Fetcher | |
66
+ | (./core/main/worker) | | (./core/fetchers/manifest) | |
67
+ | | | | |
68
+ +---------------------------+ +----------------------------+ |
69
+ | Creates | Load and | |
70
+ V | refresh the | Ask to load |
71
+ +-------------------+ | Manifest | and parse the |
72
+ | | | creates | Manifest |
73
+ | CMCD data builder | | v |
74
+ | (./core/cmcd) | | +--------------------+ | ` Internet
75
+ | | | | | request | ` ,,,,,
76
+ +-------------------+ | | transport |--------------+---`-->( CDN )
77
+ Perform data collection | | (./transport) | | ` `````
78
+ for the "Common Media | | |<---+ | `
79
+ Client Data" (CMCD) | +--------------------+ \ |
80
+ scheme. | Abstract the streaming \ |
81
+ | protocol (e.g. DASH) \ |
82
+ | \ |
83
+ Stream (./core/stream) | \ |
84
+ +--------------------------|-------------------------------+ \ |
85
+ | v | \ +
86
+ | Create the right +----------------------------+ | Ask to\ \
87
+ | PeriodStreams depending | StreamOrchestrator | | load \ \
88
+ | on the current position,|(./core/stream/orchestrator)| | and \ \
89
+ | and settings +----------------------------+ | parse \ \
98
90
  | | | | | segments \ \
99
91
  | | creates | | | \ \
100
92
  | | | | | \ +
@@ -158,7 +150,7 @@ Stream (./core/stream) | \ +
158
150
  +-----------------------+ +-------------------------+ |
159
151
  Actually pushes | MediaSource | | TextDisplayer | |
160
152
  audio and video | Interface | | Message sender |-----+
161
- data to the right | (./mse) | | (./core/enry) |
153
+ data to the right | (./mse) | | (./core/main) |
162
154
  low-level buffers +-----------------------+ +-------------------------+
163
155
  Small interface
164
156
  facilitating communication
@@ -215,43 +207,161 @@ For the subdirectories and files in this directory not represented in that schem
215
207
  RxPlayer which will run in the WebWorker (and which will have to be loaded separately by
216
208
  the application).
217
209
 
218
- ## Directfile mode
210
+ ## Multithread, Monothread and Directfile code paths
219
211
 
220
- The RxPlayer can also play content already natively decodable by the browser, e.g. mp4
221
- files or HLS playlists on Safari.
212
+ There are actually three different main "code paths" that may be run, depending on the
213
+ current content played.
222
214
 
223
- When playing such content, the code path is slightly different and simpler:
215
+ The previous schema mostly illustrated the most complex code path of the three (the
216
+ "multithread mode"). Yet, to be more exact we need to separate those three cases:
224
217
 
225
- ```
226
- +---------------------------------------------+
227
- | Application/UI |
228
- +---------------------------------------------+
229
- |
230
- | call RxPlayer API
231
- |
232
- -------------------------|--- RxPlayer Main Thread ----------------------------
233
- |
234
- Front-facing API v
235
- +---------------------------------------+ +-------------------------+
236
- | Public API | uses | MediaElementTracksStore |
237
- | (./main_thread/api) |----->|(./main_thread/tracks_sto|
238
- +---------------------------------------+ |re) |
239
- | +-------------------------+
240
- Manage playback of | creates Handle track switching
241
- a "directfile" | using directly the media
242
- content V element's API (`audioTracks`,
243
- +---------------------------------------+ `textTracks` etc.)
244
- | DirectfileContentInitializer |
245
- | (./main_thread/init) |
246
- +---------------------------------------+
247
- |
248
- V
249
- ... Some other RxPlayer modules
250
- (All running in main thread)
251
- ```
252
-
253
- As you can see, everything runs in main thread, a specialized module called the
254
- `DirectfileContentInitializer` is called by the API to start-up such contents and a
255
- specialized `MediaElementTracksStore` is handling tracks specifically for directfile
256
- contents (as they are handled differently than for other code paths, here trough API
257
- exposed by the browser).
218
+ 1. For "directfile" contents (contents directly decodable by the browser, e.g. mp4 files
219
+ or HLS playlists on Safari), the code path is the simplest and follows something like
220
+ this:
221
+
222
+ ```
223
+ +---------------------------------------------+
224
+ | Application/UI |
225
+ +---------------------------------------------+
226
+ |
227
+ | call RxPlayer API
228
+ |
229
+ -------------------------|--- RxPlayer Main Thread ----------------------------
230
+ |
231
+ Front-facing API v
232
+ +---------------------------------------+ +-------------------------+
233
+ | Public API | uses | MediaElementTracksStore |
234
+ | (./main_thread/api) |----->|(./main_thread/tracks_sto|
235
+ +---------------------------------------+ |re) |
236
+ | +-------------------------+
237
+ Manage playback of | creates Handle track switching
238
+ a "directfile" | using directly the media
239
+ content V element's API (`audioTracks`,
240
+ +---------------------------------------+ `textTracks` etc.)
241
+ | DirectfileContentInitializer |
242
+ | (./main_thread/init) |
243
+ +---------------------------------------+
244
+ |
245
+ V
246
+ ... Some other RxPlayer modules
247
+ (All running in main thread)
248
+ ```
249
+
250
+ As you can see, everything runs in main thread, a specialized module called the
251
+ `DirectfileContentInitializer` is called by the API to start-up such contents and a
252
+ specialized `MediaElementTracksStore` is handling tracks specifically for directfile
253
+ contents (as they are handled differently than for other code paths, here trough API
254
+ exposed by the browser).
255
+
256
+ 2. A second code path, we may call the "monothreaded code path" apply for non-directfile
257
+ contents (so, contents which rely on the MSE API instead) loaded in monothreaded mode,
258
+ which is the default.
259
+
260
+ It is much closer to the schema of the previous chapter:
261
+
262
+ ```
263
+ +---------------------------------------------+
264
+ | Application/UI |
265
+ +---------------------------------------------+
266
+ |
267
+ | call RxPlayer API
268
+ |
269
+ -------------------------|- RxPlayer Main Thread ---------------------------
270
+ |
271
+ Front-facing API v
272
+ +---------------------------------------+ +--------------------+
273
+ | Public API |uses| TracksStore |
274
+ | (./main_thread/api) |--->|(./main_thread/track|
275
+ +---------------------------------------+ |s_store) |
276
+ | +--------------------+
277
+ | Facilitate track switching
278
+ Manage playback of | creates for the API
279
+ contents relying |
280
+ on a MediaSource, |
281
+ all in main thread v
282
+ +---------------------------------------+
283
+ | MediaSourceContentInitializer | ----> ... Some other RxPlayer
284
+ | (./main_thread/init) | modules not in ./core
285
+ +---------------------------------------+
286
+ |
287
+ Actually load and parse |
288
+ the right manifest and | creates
289
+ media segments |
290
+ (here in main thread) V
291
+ +--------------------------------------+
292
+ | Core modules |
293
+ | (./core) |
294
+ +--------------------------------------+
295
+ ```
296
+
297
+ As you can see, the part of `./main_thread/init` run by the API is this time different
298
+ (`MediaSourceContentInitializer`) and the track handling also goes to a differently
299
+ named `TracksStore` when compared to directfile contents.
300
+
301
+ I also summarized all core modules into a single block, you can refer to the previous
302
+ chapter to have some examples of what they are (you can look at modules in the `./core`
303
+ directory in that schema - or at the `./core` directory itself).
304
+
305
+ 3. A third code path, the "multithreaded code path" apply for non-directfile contents (so,
306
+ contents which rely on MSE API instead) loaded in "multithread mode" (which has to be
307
+ explicitely enabled by the application).
308
+
309
+ Here you get all the complexity of the previous chapter, with two threads running. To
310
+ repeat the schema than the one used for the other code paths here, you would have
311
+ something like:
312
+
313
+ ```
314
+ +---------------------------------------------+
315
+ | Application/UI |
316
+ +---------------------------------------------+
317
+ |
318
+ | call RxPlayer API
319
+ |
320
+ -------------------------|----- RxPlayer Main Thread ---------------------------
321
+ |
322
+ Front-facing API v
323
+ +---------------------------------------+ +--------------------+
324
+ | Public API |uses| TracksStore |
325
+ | (./main_thread/api) |--->|(./main_thread/track|
326
+ +---------------------------------------+ |s_store) |
327
+ | +--------------------+
328
+ | Facilitate track switching
329
+ Manage playback of | creates for the API
330
+ contents relying |
331
+ on a MediaSource, |
332
+ in multiple threads v
333
+ +---------------------------------------+
334
+ | MultiThreadContentInitializer | ----> ... Some other RxPlayer
335
+ | (./main_thread/init) | modules not in ./core
336
+ +---------------------------------------+
337
+ | ^
338
+ | | postMessage exchanges
339
+ | |
340
+ ------------------------|--|- RxPlayer WebWorker --------------------------
341
+ | |
342
+ Actually load and parse | |
343
+ the right manifest and | |
344
+ media segments | |
345
+ (here in a Worker) V |
346
+ +--+--------------------------------+--+
347
+ | | Worker Main | |
348
+ | | (./core/main/worker) | |
349
+ | +--------------------------------+ |
350
+ | Core modules |
351
+ | (./core) |
352
+ +--------------------------------------+
353
+ ```
354
+
355
+ This time, the part of `./main_thread/init` run by the API is the
356
+ `MultiThreadContentInitializer` and the track handling also goes through the
357
+ `TracksStore`, like for the monothreaded code path.
358
+
359
+ The main difference however is that now all core modules are running completely in a
360
+ WebWorker, meaning in another thread. It is the role of the
361
+ `MultiThreadContentInitializer` to send message to it and to process most of the
362
+ messages the WebWorker sends back.
363
+
364
+ Because this time, the core also has to reception and send backs messages from and to
365
+ the main thread, there's a supplementary core module involved than on the "monothreaded
366
+ code path", the "Worker Main". It then however relies on the exact same other core
367
+ modules than for the "monothreaded code path".