rx-player 4.4.0 → 4.4.1-dev.2025101500

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +52 -113
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  6. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  7. package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +1 -0
  8. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.js +3 -3
  9. package/dist/{es2017/core/main/worker → commonjs/core/entry}/content_preparer.d.ts +22 -15
  10. package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -0
  11. package/dist/commonjs/core/{main/worker → entry}/content_preparer.js +62 -64
  12. package/dist/{es2017/core/main/common → commonjs/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  13. package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  14. package/dist/commonjs/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  15. package/dist/commonjs/core/entry/core_entry.d.ts +36 -0
  16. package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -0
  17. package/dist/commonjs/core/{main/worker/worker_main.js → entry/core_entry.js} +192 -153
  18. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  19. package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  20. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +22 -22
  21. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  22. package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  23. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  24. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  25. package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  26. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  27. package/dist/{es2017/core/main/common → commonjs/core/entry}/get_thumbnail_data.d.ts +3 -3
  28. package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +1 -0
  29. package/dist/commonjs/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  30. package/dist/commonjs/core/entry/index.d.ts +5 -0
  31. package/dist/commonjs/core/entry/index.d.ts.map +1 -0
  32. package/dist/commonjs/core/entry/index.js +4 -0
  33. package/dist/{es2017/core/main/common → commonjs/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  34. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  35. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  36. package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +1 -0
  37. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.js +4 -4
  38. package/dist/commonjs/core/entry/utils.d.ts +3 -0
  39. package/dist/commonjs/core/entry/utils.d.ts.map +1 -0
  40. package/dist/commonjs/core/entry/utils.js +11 -0
  41. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  42. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +17 -0
  43. package/dist/commonjs/core/types.d.ts +519 -1
  44. package/dist/commonjs/core/types.d.ts.map +1 -1
  45. package/dist/commonjs/core/types.js +1 -0
  46. package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
  47. package/dist/commonjs/experimental/features/local.js +7 -1
  48. package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
  49. package/dist/commonjs/experimental/features/metaplaylist.js +7 -1
  50. package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
  51. package/dist/commonjs/experimental/features/multi_thread.js +6 -2
  52. package/dist/commonjs/features/features_object.js +1 -1
  53. package/dist/commonjs/features/list/dash.d.ts.map +1 -1
  54. package/dist/commonjs/features/list/dash.js +7 -1
  55. package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
  56. package/dist/commonjs/features/list/dash_wasm.js +7 -1
  57. package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
  58. package/dist/commonjs/features/list/media_source_main.js +7 -1
  59. package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
  60. package/dist/commonjs/features/list/smooth.js +7 -1
  61. package/dist/commonjs/features/types.d.ts +20 -4
  62. package/dist/commonjs/features/types.d.ts.map +1 -1
  63. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  64. package/dist/commonjs/main_thread/api/public_api.js +39 -42
  65. package/dist/commonjs/main_thread/core_interface/base.d.ts +13 -0
  66. package/dist/commonjs/main_thread/core_interface/base.d.ts.map +1 -0
  67. package/dist/commonjs/main_thread/core_interface/base.js +32 -0
  68. package/dist/commonjs/main_thread/core_interface/monothread.d.ts +13 -0
  69. package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +1 -0
  70. package/dist/commonjs/main_thread/core_interface/monothread.js +56 -0
  71. package/dist/commonjs/main_thread/core_interface/multithread.d.ts +25 -0
  72. package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +1 -0
  73. package/dist/commonjs/main_thread/core_interface/multithread.js +67 -0
  74. package/dist/commonjs/main_thread/core_interface/types.d.ts +6 -0
  75. package/dist/commonjs/main_thread/core_interface/types.d.ts.map +1 -0
  76. package/dist/commonjs/main_thread/core_interface/types.js +2 -0
  77. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +166 -108
  78. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  79. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +1492 -919
  80. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  81. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.js +2 -1
  82. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  83. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  84. package/dist/commonjs/main_thread/types.d.ts +537 -0
  85. package/dist/commonjs/main_thread/types.d.ts.map +1 -1
  86. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  87. package/dist/commonjs/manifest/utils.js +18 -4
  88. package/dist/commonjs/mse/worker_media_source_interface.d.ts +2 -2
  89. package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
  90. package/dist/commonjs/mse/worker_media_source_interface.js +12 -12
  91. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts +1 -1
  92. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  93. package/dist/commonjs/parsers/manifest/smooth/create_parser.js +31 -27
  94. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  95. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  96. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  97. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  98. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  99. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.js +37 -6
  100. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  101. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  102. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  103. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  104. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +28 -5
  105. package/dist/{es2017/playback_observer/worker_playback_observer.d.ts → commonjs/playback_observer/core_playback_observer.d.ts} +8 -8
  106. package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +1 -0
  107. package/dist/commonjs/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +13 -13
  108. package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
  109. package/dist/commonjs/transports/smooth/pipelines.js +25 -3
  110. package/dist/commonjs/worker_entry_point.js +62 -2
  111. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  112. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  113. package/dist/es2017/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  114. package/dist/es2017/core/entry/FreezeResolver.d.ts.map +1 -0
  115. package/dist/es2017/core/{main/common → entry}/FreezeResolver.js +3 -3
  116. package/dist/{commonjs/core/main/worker → es2017/core/entry}/content_preparer.d.ts +22 -15
  117. package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -0
  118. package/dist/es2017/core/{main/worker → entry}/content_preparer.js +53 -55
  119. package/dist/{commonjs/core/main/common → es2017/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  120. package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  121. package/dist/es2017/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  122. package/dist/es2017/core/entry/core_entry.d.ts +36 -0
  123. package/dist/es2017/core/entry/core_entry.d.ts.map +1 -0
  124. package/dist/es2017/core/{main/worker/worker_main.js → entry/core_entry.js} +153 -114
  125. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  126. package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  127. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +10 -10
  128. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  129. package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  130. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  131. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  132. package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  133. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  134. package/dist/{commonjs/core/main/common → es2017/core/entry}/get_thumbnail_data.d.ts +3 -3
  135. package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +1 -0
  136. package/dist/es2017/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  137. package/dist/es2017/core/entry/index.d.ts +5 -0
  138. package/dist/es2017/core/entry/index.d.ts.map +1 -0
  139. package/dist/es2017/core/entry/index.js +2 -0
  140. package/dist/{commonjs/core/main/common → es2017/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  141. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  142. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  143. package/dist/es2017/core/entry/track_choice_setter.d.ts.map +1 -0
  144. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.js +4 -4
  145. package/dist/es2017/core/entry/utils.d.ts +3 -0
  146. package/dist/es2017/core/entry/utils.d.ts.map +1 -0
  147. package/dist/es2017/core/entry/utils.js +8 -0
  148. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  149. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +18 -1
  150. package/dist/es2017/core/types.d.ts +519 -1
  151. package/dist/es2017/core/types.d.ts.map +1 -1
  152. package/dist/es2017/core/types.js +1 -0
  153. package/dist/es2017/experimental/features/local.d.ts.map +1 -1
  154. package/dist/es2017/experimental/features/local.js +7 -1
  155. package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
  156. package/dist/es2017/experimental/features/metaplaylist.js +7 -1
  157. package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
  158. package/dist/es2017/experimental/features/multi_thread.js +6 -2
  159. package/dist/es2017/features/features_object.js +1 -1
  160. package/dist/es2017/features/list/dash.d.ts.map +1 -1
  161. package/dist/es2017/features/list/dash.js +7 -1
  162. package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
  163. package/dist/es2017/features/list/dash_wasm.js +7 -1
  164. package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
  165. package/dist/es2017/features/list/media_source_main.js +7 -1
  166. package/dist/es2017/features/list/smooth.d.ts.map +1 -1
  167. package/dist/es2017/features/list/smooth.js +7 -1
  168. package/dist/es2017/features/types.d.ts +20 -4
  169. package/dist/es2017/features/types.d.ts.map +1 -1
  170. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  171. package/dist/es2017/main_thread/api/public_api.js +40 -43
  172. package/dist/es2017/main_thread/core_interface/base.d.ts +13 -0
  173. package/dist/es2017/main_thread/core_interface/base.d.ts.map +1 -0
  174. package/dist/es2017/main_thread/core_interface/base.js +28 -0
  175. package/dist/es2017/main_thread/core_interface/monothread.d.ts +13 -0
  176. package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +1 -0
  177. package/dist/es2017/main_thread/core_interface/monothread.js +32 -0
  178. package/dist/es2017/main_thread/core_interface/multithread.d.ts +25 -0
  179. package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +1 -0
  180. package/dist/es2017/main_thread/core_interface/multithread.js +45 -0
  181. package/dist/es2017/main_thread/core_interface/types.d.ts +6 -0
  182. package/dist/es2017/main_thread/core_interface/types.d.ts.map +1 -0
  183. package/dist/es2017/main_thread/core_interface/types.js +1 -0
  184. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +166 -108
  185. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  186. package/dist/es2017/main_thread/init/media_source_content_initializer.js +1405 -760
  187. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  188. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.js +2 -1
  189. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  190. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  191. package/dist/es2017/main_thread/types.d.ts +537 -0
  192. package/dist/es2017/main_thread/types.d.ts.map +1 -1
  193. package/dist/es2017/manifest/utils.d.ts.map +1 -1
  194. package/dist/es2017/manifest/utils.js +16 -4
  195. package/dist/es2017/mse/worker_media_source_interface.d.ts +2 -2
  196. package/dist/es2017/mse/worker_media_source_interface.d.ts.map +1 -1
  197. package/dist/es2017/mse/worker_media_source_interface.js +12 -12
  198. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts +1 -1
  199. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  200. package/dist/es2017/parsers/manifest/smooth/create_parser.js +31 -27
  201. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  202. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  203. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  204. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  205. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  206. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +15 -6
  207. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  208. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  209. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  210. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  211. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +6 -5
  212. package/dist/{commonjs/playback_observer/worker_playback_observer.d.ts → es2017/playback_observer/core_playback_observer.d.ts} +8 -8
  213. package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +1 -0
  214. package/dist/es2017/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +2 -2
  215. package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
  216. package/dist/es2017/transports/smooth/pipelines.js +25 -3
  217. package/dist/es2017/worker_entry_point.js +62 -2
  218. package/dist/rx-player.js +21882 -19021
  219. package/dist/rx-player.min.js +20 -20
  220. package/dist/worker.js +8 -8
  221. package/package.json +1 -1
  222. package/src/README.md +88 -198
  223. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  224. package/src/core/{main/common → entry}/FreezeResolver.ts +7 -7
  225. package/src/core/{main → entry}/README.md +1 -1
  226. package/src/core/{main/worker → entry}/content_preparer.ts +77 -76
  227. package/src/core/{main/common → entry}/content_time_boundaries_observer.ts +10 -10
  228. package/src/core/{main/worker/worker_main.ts → entry/core_entry.ts} +223 -149
  229. package/src/core/{main/worker/worker_text_displayer_interface.ts → entry/core_text_displayer_interface.ts} +26 -26
  230. package/src/core/{main/common → entry}/create_content_time_boundaries_observer.ts +7 -7
  231. package/src/core/{main/common → entry}/get_buffered_data_per_media_buffer.ts +6 -6
  232. package/src/core/{main/common → entry}/get_thumbnail_data.ts +5 -5
  233. package/src/core/entry/index.ts +4 -0
  234. package/src/core/{main/common → entry}/synchronize_sinks_on_observation.ts +2 -2
  235. package/src/core/{main/worker → entry}/track_choice_setter.ts +7 -7
  236. package/src/core/entry/utils.ts +11 -0
  237. package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -1
  238. package/src/core/types.ts +631 -3
  239. package/src/experimental/features/__tests__/local.test.ts +11 -2
  240. package/src/experimental/features/__tests__/metaplaylist.test.ts +11 -2
  241. package/src/experimental/features/__tests__/multi_thread.test.ts +8 -3
  242. package/src/experimental/features/local.ts +7 -1
  243. package/src/experimental/features/metaplaylist.ts +7 -1
  244. package/src/experimental/features/multi_thread.ts +6 -2
  245. package/src/features/features_object.ts +1 -1
  246. package/src/features/list/__tests__/dash.test.ts +12 -3
  247. package/src/features/list/__tests__/smooth.test.ts +11 -2
  248. package/src/features/list/dash.ts +7 -1
  249. package/src/features/list/dash_wasm.ts +7 -1
  250. package/src/features/list/media_source_main.ts +7 -1
  251. package/src/features/list/smooth.ts +7 -1
  252. package/src/features/types.ts +23 -4
  253. package/src/main_thread/README.md +8 -0
  254. package/src/main_thread/api/public_api.ts +46 -48
  255. package/src/main_thread/core_interface/README.md +22 -0
  256. package/src/main_thread/core_interface/base.ts +36 -0
  257. package/src/main_thread/core_interface/monothread.ts +46 -0
  258. package/src/main_thread/core_interface/multithread.ts +49 -0
  259. package/src/main_thread/core_interface/types.ts +5 -0
  260. package/src/main_thread/init/media_source_content_initializer.ts +2034 -1152
  261. package/src/main_thread/init/utils/create_core_playback_observer.ts +2 -1
  262. package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
  263. package/src/main_thread/types.ts +610 -0
  264. package/src/manifest/utils.ts +20 -4
  265. package/src/mse/worker_media_source_interface.ts +35 -35
  266. package/src/parsers/manifest/smooth/create_parser.ts +40 -34
  267. package/src/parsers/manifest/smooth/parse_C_nodes.ts +19 -8
  268. package/src/parsers/manifest/smooth/parse_protection_node.ts +17 -9
  269. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
  270. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +10 -7
  271. package/src/playback_observer/{worker_playback_observer.ts → core_playback_observer.ts} +13 -13
  272. package/src/transports/smooth/pipelines.ts +25 -5
  273. package/src/worker_entry_point.ts +71 -2
  274. package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +0 -1
  275. package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  276. package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  277. package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  278. package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  279. package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  280. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +0 -1
  281. package/dist/commonjs/core/main/worker/globals.d.ts +0 -14
  282. package/dist/commonjs/core/main/worker/globals.d.ts.map +0 -1
  283. package/dist/commonjs/core/main/worker/globals.js +0 -26
  284. package/dist/commonjs/core/main/worker/index.d.ts +0 -3
  285. package/dist/commonjs/core/main/worker/index.d.ts.map +0 -1
  286. package/dist/commonjs/core/main/worker/index.js +0 -4
  287. package/dist/commonjs/core/main/worker/send_message.d.ts +0 -4
  288. package/dist/commonjs/core/main/worker/send_message.d.ts.map +0 -1
  289. package/dist/commonjs/core/main/worker/send_message.js +0 -23
  290. package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +0 -1
  291. package/dist/commonjs/core/main/worker/worker_main.d.ts +0 -2
  292. package/dist/commonjs/core/main/worker/worker_main.d.ts.map +0 -1
  293. package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  294. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  295. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  296. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +0 -1713
  297. package/dist/commonjs/main_thread/init/send_message.d.ts +0 -3
  298. package/dist/commonjs/main_thread/init/send_message.d.ts.map +0 -1
  299. package/dist/commonjs/main_thread/init/send_message.js +0 -13
  300. package/dist/commonjs/multithread_types.d.ts +0 -915
  301. package/dist/commonjs/multithread_types.d.ts.map +0 -1
  302. package/dist/commonjs/multithread_types.js +0 -7
  303. package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +0 -1
  304. package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +0 -1
  305. package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  306. package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  307. package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  308. package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  309. package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  310. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +0 -1
  311. package/dist/es2017/core/main/worker/globals.d.ts +0 -14
  312. package/dist/es2017/core/main/worker/globals.d.ts.map +0 -1
  313. package/dist/es2017/core/main/worker/globals.js +0 -18
  314. package/dist/es2017/core/main/worker/index.d.ts +0 -3
  315. package/dist/es2017/core/main/worker/index.d.ts.map +0 -1
  316. package/dist/es2017/core/main/worker/index.js +0 -2
  317. package/dist/es2017/core/main/worker/send_message.d.ts +0 -4
  318. package/dist/es2017/core/main/worker/send_message.d.ts.map +0 -1
  319. package/dist/es2017/core/main/worker/send_message.js +0 -19
  320. package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +0 -1
  321. package/dist/es2017/core/main/worker/worker_main.d.ts +0 -2
  322. package/dist/es2017/core/main/worker/worker_main.d.ts.map +0 -1
  323. package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  324. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  325. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  326. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +0 -1559
  327. package/dist/es2017/main_thread/init/send_message.d.ts +0 -3
  328. package/dist/es2017/main_thread/init/send_message.d.ts.map +0 -1
  329. package/dist/es2017/main_thread/init/send_message.js +0 -10
  330. package/dist/es2017/multithread_types.d.ts +0 -915
  331. package/dist/es2017/multithread_types.d.ts.map +0 -1
  332. package/dist/es2017/multithread_types.js +0 -6
  333. package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +0 -1
  334. package/src/core/main/worker/globals.ts +0 -38
  335. package/src/core/main/worker/index.ts +0 -2
  336. package/src/core/main/worker/send_message.ts +0 -28
  337. package/src/main_thread/init/multi_thread_content_initializer.ts +0 -2330
  338. package/src/main_thread/init/send_message.ts +0 -15
  339. package/src/multithread_types.ts +0 -1095
  340. /package/dist/commonjs/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
  341. /package/dist/es2017/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
@@ -1,31 +1,51 @@
1
- import config from "../../../config";
2
- import { MediaError, OtherError } from "../../../errors";
3
- import features from "../../../features";
4
- import log from "../../../log";
5
- import Manifest, { Adaptation, Period, Representation } from "../../../manifest/classes";
6
- import DashJsParser from "../../../parsers/manifest/dash/js-parser";
7
- import DashWasmParser from "../../../parsers/manifest/dash/wasm-parser";
8
- import { ObservationPosition } from "../../../playback_observer";
9
- import WorkerPlaybackObserver from "../../../playback_observer/worker_playback_observer";
10
- import createDashPipelines from "../../../transports/dash";
11
- import arrayFind from "../../../utils/array_find";
12
- import assert, { assertUnreachable } from "../../../utils/assert";
13
- import globalScope from "../../../utils/global_scope";
14
- import { scaleTimestamp } from "../../../utils/monotonic_timestamp";
15
- import objectAssign from "../../../utils/object_assign";
16
- import SharedReference from "../../../utils/reference";
17
- import TaskCanceller from "../../../utils/task_canceller";
18
- import StreamOrchestrator from "../../stream";
19
- import createContentTimeBoundariesObserver from "../common/create_content_time_boundaries_observer";
20
- import getBufferedDataPerMediaBuffer from "../common/get_buffered_data_per_media_buffer";
21
- import getThumbnailData from "../common/get_thumbnail_data";
22
- import synchronizeSegmentSinksOnObservation from "../common/synchronize_sinks_on_observation";
1
+ import config from "../../config";
2
+ import { MediaError, OtherError } from "../../errors";
3
+ import features from "../../features";
4
+ import log from "../../log";
5
+ import Manifest, { Adaptation, Period, Representation } from "../../manifest/classes";
6
+ import { ObservationPosition } from "../../playback_observer";
7
+ import CorePlaybackObserver from "../../playback_observer/core_playback_observer";
8
+ import arrayFind from "../../utils/array_find";
9
+ import assert, { assertUnreachable } from "../../utils/assert";
10
+ import { scaleTimestamp } from "../../utils/monotonic_timestamp";
11
+ import objectAssign from "../../utils/object_assign";
12
+ import SharedReference from "../../utils/reference";
13
+ import TaskCanceller from "../../utils/task_canceller";
14
+ import StreamOrchestrator from "../stream";
23
15
  import ContentPreparer from "./content_preparer";
24
- import { limitVideoResolution, maxBufferAhead, maxBufferBehind, maxVideoBufferSize, throttleVideoBitrate, wantedBufferAhead, } from "./globals";
25
- import sendMessage, { formatErrorForSender } from "./send_message";
26
- export default function initializeWorkerMain() {
16
+ import createContentTimeBoundariesObserver from "./create_content_time_boundaries_observer";
17
+ import getBufferedDataPerMediaBuffer from "./get_buffered_data_per_media_buffer";
18
+ import getThumbnailData from "./get_thumbnail_data";
19
+ import synchronizeSegmentSinksOnObservation from "./synchronize_sinks_on_observation";
20
+ import { formatErrorForSender } from "./utils";
21
+ /**
22
+ * Initialize a `CoreEntry`, which is the part of the RxPlayer acting as an
23
+ * entry point to all its "core" code.
24
+ *
25
+ * Its role is to receive and react to messages coming from "main thead", which
26
+ * may include loading and playing a content, and to send back messages for the main
27
+ * thread.
28
+ * @param {Function} setMessageReceiver - Declares the function that will
29
+ * receive messages coming from the "main thread" part of the RxPlayer logic.
30
+ * @param {Function} sendMessage - Function allowing to send messages to the
31
+ * "main thread" part of the RxPlayer logic.
32
+ */
33
+ export default function initializeCoreEntry(setMessageReceiver, sendMessage) {
34
+ const { DEFAULT_WANTED_BUFFER_AHEAD, DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND, } = config.getCurrent();
35
+ const refs = {
36
+ wantedBufferAhead: new SharedReference(DEFAULT_WANTED_BUFFER_AHEAD),
37
+ maxVideoBufferSize: new SharedReference(DEFAULT_MAX_VIDEO_BUFFER_SIZE),
38
+ maxBufferAhead: new SharedReference(DEFAULT_MAX_BUFFER_AHEAD),
39
+ maxBufferBehind: new SharedReference(DEFAULT_MAX_BUFFER_BEHIND),
40
+ limitVideoResolution: new SharedReference({
41
+ height: undefined,
42
+ width: undefined,
43
+ pixelRatio: 1,
44
+ }),
45
+ throttleVideoBitrate: new SharedReference(Infinity),
46
+ };
27
47
  /**
28
- * `true` once the worker has been initialized.
48
+ * `true` once the CoreEntry has been initialized.
29
49
  * Allow to enforce the fact that it is only initialized once.
30
50
  */
31
51
  let isInitialized = false;
@@ -41,46 +61,42 @@ export default function initializeWorkerMain() {
41
61
  * `null` if there's no content loaded currently.
42
62
  */
43
63
  let currentContentHandle = null;
44
- // Initialize Manually a `DashWasmParser` and add the feature.
45
- // TODO allow worker-side feature-switching? Not sure how
46
- const dashWasmParser = new DashWasmParser();
47
- features.dashParsers.wasm = dashWasmParser;
48
- features.dashParsers.js = DashJsParser;
49
- features.transports.dash = createDashPipelines;
50
64
  /**
51
65
  * When set, emit playback observation made on the main thread.
52
66
  */
53
67
  let playbackObservationRef = null;
54
- globalScope.onmessageerror = (_msg) => {
55
- log.error("Core", "Error when receiving message from main thread.");
56
- };
57
- onmessage = function (e) {
68
+ setMessageReceiver((e) => {
58
69
  var _a, _b;
59
70
  log.debug("Core", "received message", { name: e.data.type });
60
71
  const msg = e.data;
61
72
  switch (msg.type) {
62
73
  case "init" /* MainThreadMessageType.Init */:
63
- assert(!isInitialized);
64
- isInitialized = true;
65
- scaleTimestamp(msg.value);
66
- updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
67
- if (msg.value.dashWasmUrl !== undefined && dashWasmParser.isCompatible()) {
68
- dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch((err) => {
69
- const error = err instanceof Error ? err.toString() : "Unknown Error";
70
- log.error("Core", "Could not initialize DASH_WASM parser", error);
71
- });
72
- }
73
- if (!msg.value.hasVideo) {
74
- contentPreparer.disposeCurrentContent();
75
- contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
74
+ {
75
+ assert(!isInitialized);
76
+ isInitialized = true;
77
+ scaleTimestamp(msg.value);
78
+ updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
79
+ const dashWasmParser = features.dashParsers.wasm;
80
+ if (dashWasmParser !== null &&
81
+ msg.value.dashWasmUrl !== undefined &&
82
+ dashWasmParser.isCompatible()) {
83
+ dashWasmParser.initialize({ wasmUrl: msg.value.dashWasmUrl }).catch((err) => {
84
+ const error = err instanceof Error ? err.toString() : "Unknown Error";
85
+ log.error("Core", "Could not initialize DASH_WASM parser", error);
86
+ });
87
+ }
88
+ if (!msg.value.hasVideo) {
89
+ contentPreparer.disposeCurrentContent();
90
+ contentPreparer = new ContentPreparer({ hasVideo: msg.value.hasVideo });
91
+ }
92
+ sendMessage({ type: "init-success" /* CoreMessageType.InitSuccess */, value: null });
76
93
  }
77
- sendMessage({ type: "init-success" /* WorkerMessageType.InitSuccess */, value: null });
78
94
  break;
79
95
  case "log-level-update" /* MainThreadMessageType.LogLevelUpdate */:
80
96
  updateLoggerLevel(msg.value.logLevel, msg.value.logFormat, msg.value.sendBackLogs);
81
97
  break;
82
98
  case "prepare" /* MainThreadMessageType.PrepareContent */:
83
- prepareNewContent(contentPreparer, msg.value);
99
+ prepareNewContent(sendMessage, contentPreparer, msg.value, refs);
84
100
  break;
85
101
  case "start" /* MainThreadMessageType.StartPreparedContent */: {
86
102
  const preparedContent = contentPreparer.getCurrentContent();
@@ -93,7 +109,7 @@ export default function initializeWorkerMain() {
93
109
  position: new ObservationPosition(...msg.value.initialObservation.position),
94
110
  }));
95
111
  playbackObservationRef = currentContentObservationRef;
96
- currentContentHandle = loadPreparedContent(msg.value, contentPreparer, currentContentObservationRef);
112
+ currentContentHandle = loadPreparedContent(sendMessage, msg.value, contentPreparer, currentContentObservationRef, refs);
97
113
  break;
98
114
  }
99
115
  case "observation" /* MainThreadMessageType.PlaybackObservation */: {
@@ -116,7 +132,7 @@ export default function initializeWorkerMain() {
116
132
  break;
117
133
  }
118
134
  case "ref-update" /* MainThreadMessageType.ReferenceUpdate */:
119
- updateGlobalReference(msg);
135
+ updateCoreReference(msg, refs);
120
136
  break;
121
137
  case "stop" /* MainThreadMessageType.StopContent */:
122
138
  if (msg.contentId !== ((_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId)) {
@@ -220,7 +236,7 @@ export default function initializeWorkerMain() {
220
236
  const warning = preparedContent.manifest.updateCodecSupport(newEvaluatedCodecs);
221
237
  if (warning !== null) {
222
238
  sendMessage({
223
- type: "warning" /* WorkerMessageType.Warning */,
239
+ type: "warning" /* CoreMessageType.Warning */,
224
240
  contentId: preparedContent.contentId,
225
241
  value: formatErrorForSender(warning),
226
242
  });
@@ -228,7 +244,7 @@ export default function initializeWorkerMain() {
228
244
  }
229
245
  catch (err) {
230
246
  sendMessage({
231
- type: "error" /* WorkerMessageType.Error */,
247
+ type: "error" /* CoreMessageType.Error */,
232
248
  contentId: preparedContent.contentId,
233
249
  value: formatErrorForSender(err),
234
250
  });
@@ -264,11 +280,11 @@ export default function initializeWorkerMain() {
264
280
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
265
281
  return;
266
282
  }
267
- if (preparedContent.workerTextSender === null) {
283
+ if (preparedContent.coreTextSender === null) {
268
284
  log.error("Core", "Added text track but text track aren't enabled");
269
285
  return;
270
286
  }
271
- preparedContent.workerTextSender.onPushedTrackSuccess(msg.value.ranges);
287
+ preparedContent.coreTextSender.onPushedTrackSuccess(msg.value.ranges);
272
288
  break;
273
289
  }
274
290
  case "push-text-error" /* MainThreadMessageType.PushTextDataError */: {
@@ -276,11 +292,11 @@ export default function initializeWorkerMain() {
276
292
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
277
293
  return;
278
294
  }
279
- if (preparedContent.workerTextSender === null) {
295
+ if (preparedContent.coreTextSender === null) {
280
296
  log.error("Core", "Added text track but text track aren't enabled");
281
297
  return;
282
298
  }
283
- preparedContent.workerTextSender.onPushedTrackError(new Error(msg.value.message));
299
+ preparedContent.coreTextSender.onPushedTrackError(new Error(msg.value.message));
284
300
  break;
285
301
  }
286
302
  case "remove-text-success" /* MainThreadMessageType.RemoveTextDataSuccess */: {
@@ -288,11 +304,11 @@ export default function initializeWorkerMain() {
288
304
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
289
305
  return;
290
306
  }
291
- if (preparedContent.workerTextSender === null) {
307
+ if (preparedContent.coreTextSender === null) {
292
308
  log.error("Core", "Removed text track but text track aren't enabled");
293
309
  return;
294
310
  }
295
- preparedContent.workerTextSender.onRemoveSuccess(msg.value.ranges);
311
+ preparedContent.coreTextSender.onRemoveSuccess(msg.value.ranges);
296
312
  break;
297
313
  }
298
314
  case "remove-text-error" /* MainThreadMessageType.RemoveTextDataError */: {
@@ -300,19 +316,19 @@ export default function initializeWorkerMain() {
300
316
  if (preparedContent === null || preparedContent.contentId !== msg.contentId) {
301
317
  return;
302
318
  }
303
- if (preparedContent.workerTextSender === null) {
319
+ if (preparedContent.coreTextSender === null) {
304
320
  log.error("Core", "Removed text track but text track aren't enabled");
305
321
  return;
306
322
  }
307
- preparedContent.workerTextSender.onRemoveError(new Error(msg.value.message));
323
+ preparedContent.coreTextSender.onRemoveError(new Error(msg.value.message));
308
324
  break;
309
325
  }
310
326
  case "pull-segment-sink-store-infos" /* MainThreadMessageType.PullSegmentSinkStoreInfos */: {
311
- sendSegmentSinksStoreInfos(contentPreparer, msg.value.requestId);
327
+ sendSegmentSinksStoreInfos(sendMessage, contentPreparer, msg.value.requestId);
312
328
  break;
313
329
  }
314
330
  case "thumbnail-request" /* MainThreadMessageType.ThumbnailDataRequest */: {
315
- sendThumbnailData(contentPreparer, msg);
331
+ sendThumbnailData(sendMessage, contentPreparer, msg);
316
332
  break;
317
333
  }
318
334
  case "config-update" /* MainThreadMessageType.ConfigUpdate */: {
@@ -322,48 +338,68 @@ export default function initializeWorkerMain() {
322
338
  default:
323
339
  assertUnreachable(msg);
324
340
  }
325
- };
341
+ });
326
342
  }
327
- function prepareNewContent(contentPreparer, contentInitData) {
328
- contentPreparer.initializeNewContent(contentInitData).then((manifest) => {
343
+ /**
344
+ * Performs steps needed to prepare a future content to be played:
345
+ * - Load its Manifest file
346
+ * - Create MSE `MediaSource` for that content.
347
+ * - Initialize all modules that will follow that content
348
+ * - etc.
349
+ * @param {Function} sendMessage - Function allowing to send messages to the
350
+ * "main thread" part of the RxPlayer logic.
351
+ * @param {ContentPreparer} contentPreparer
352
+ * @param {Object} contentInitData - Configuration wanted for the content to
353
+ * load.
354
+ * @param {Object} refs - Collection of so-called "references": values
355
+ * configuring playback that may be updated at any time and that the
356
+ * CoreEntry should react on.
357
+ */
358
+ function prepareNewContent(sendMessage, contentPreparer, contentInitData, refs) {
359
+ contentPreparer
360
+ .initializeNewContent(sendMessage, contentInitData, {
361
+ limitResolution: { video: refs.limitVideoResolution },
362
+ throttleBitrate: { video: refs.throttleVideoBitrate },
363
+ })
364
+ .then((manifest) => {
329
365
  sendMessage({
330
- type: "manifest-ready" /* WorkerMessageType.ManifestReady */,
366
+ type: "manifest-ready" /* CoreMessageType.ManifestReady */,
331
367
  contentId: contentInitData.contentId,
332
368
  value: { manifest },
333
369
  });
334
370
  }, (err) => {
335
371
  sendMessage({
336
- type: "error" /* WorkerMessageType.Error */,
372
+ type: "error" /* CoreMessageType.Error */,
337
373
  contentId: contentInitData.contentId,
338
374
  value: formatErrorForSender(err),
339
375
  });
340
376
  });
341
377
  }
342
- function updateGlobalReference(msg) {
378
+ function updateCoreReference(msg, refs) {
343
379
  switch (msg.value.name) {
344
380
  case "wantedBufferAhead":
345
- wantedBufferAhead.setValueIfChanged(msg.value.newVal);
381
+ refs.wantedBufferAhead.setValueIfChanged(msg.value.newVal);
346
382
  break;
347
383
  case "maxVideoBufferSize":
348
- maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
384
+ refs.maxVideoBufferSize.setValueIfChanged(msg.value.newVal);
349
385
  break;
350
386
  case "maxBufferBehind":
351
- maxBufferBehind.setValueIfChanged(msg.value.newVal);
387
+ refs.maxBufferBehind.setValueIfChanged(msg.value.newVal);
352
388
  break;
353
389
  case "maxBufferAhead":
354
- maxBufferAhead.setValueIfChanged(msg.value.newVal);
390
+ refs.maxBufferAhead.setValueIfChanged(msg.value.newVal);
355
391
  break;
356
392
  case "limitVideoResolution":
357
- limitVideoResolution.setValueIfChanged(msg.value.newVal);
393
+ refs.limitVideoResolution.setValueIfChanged(msg.value.newVal);
358
394
  break;
359
395
  case "throttleVideoBitrate":
360
- throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
396
+ refs.throttleVideoBitrate.setValueIfChanged(msg.value.newVal);
361
397
  break;
362
398
  default:
363
399
  assertUnreachable(msg.value);
364
400
  }
365
401
  }
366
- function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
402
+ function loadPreparedContent(sendMessage, val, contentPreparer, playbackObservationRef, refs) {
367
403
  log.debug("Core", "Loading pepared content.");
368
404
  const contentCanceller = new TaskCanceller();
369
405
  let currentLoadCanceller = null;
@@ -382,7 +418,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
382
418
  currentLoadCanceller = new TaskCanceller();
383
419
  currentLoadCanceller.linkToSignal(contentCanceller.signal);
384
420
  /**
385
- * Stores last discontinuity update sent to the worker for each Period and type
421
+ * Stores last discontinuity update sent to the Core for each Period and type
386
422
  * combinations, at least until the corresponding `PeriodStreamCleared`
387
423
  * message.
388
424
  *
@@ -394,7 +430,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
394
430
  if (preparedContent === null || preparedContent.manifest === null) {
395
431
  const error = new OtherError("NONE", "Loading content when none is prepared");
396
432
  sendMessage({
397
- type: "error" /* WorkerMessageType.Error */,
433
+ type: "error" /* CoreMessageType.Error */,
398
434
  contentId: undefined,
399
435
  value: formatErrorForSender(error),
400
436
  });
@@ -406,7 +442,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
406
442
  synchronizeSegmentSinksOnObservation(observation, segmentSinksStore);
407
443
  const freezeResolution = preparedContent.freezeResolver.onNewObservation(observation);
408
444
  if (freezeResolution !== null) {
409
- handleFreezeResolution(freezeResolution, {
445
+ handleFreezeResolution(sendMessage, freezeResolution, {
410
446
  contentId,
411
447
  manifest,
412
448
  handleMediaSourceReload: performMediaSourceReload,
@@ -418,36 +454,36 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
418
454
  if (initialPeriod === undefined) {
419
455
  const error = new MediaError("MEDIA_STARTING_TIME_NOT_FOUND", "Wanted starting time not found in the Manifest.");
420
456
  sendMessage({
421
- type: "error" /* WorkerMessageType.Error */,
457
+ type: "error" /* CoreMessageType.Error */,
422
458
  contentId,
423
459
  value: formatErrorForSender(error),
424
460
  });
425
461
  throw error;
426
462
  }
427
- const playbackObserver = new WorkerPlaybackObserver(playbackObservationRef, contentId, sendMessage, currentLoadCanceller.signal);
463
+ const playbackObserver = new CorePlaybackObserver(playbackObservationRef, contentId, sendMessage, currentLoadCanceller.signal);
428
464
  cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.startMonitoringPlayback(playbackObserver);
429
465
  currentLoadCanceller.signal.register(() => {
430
466
  cmcdDataBuilder === null || cmcdDataBuilder === void 0 ? void 0 : cmcdDataBuilder.stopMonitoringPlayback();
431
467
  });
432
468
  const contentTimeBoundariesObserver = createContentTimeBoundariesObserver(manifest, mediaSource, playbackObserver, segmentSinksStore, {
433
469
  onWarning: (err) => sendMessage({
434
- type: "warning" /* WorkerMessageType.Warning */,
470
+ type: "warning" /* CoreMessageType.Warning */,
435
471
  contentId,
436
472
  value: formatErrorForSender(err),
437
473
  }),
438
474
  onPeriodChanged: (period) => {
439
475
  sendMessage({
440
- type: "active-period-changed" /* WorkerMessageType.ActivePeriodChanged */,
476
+ type: "active-period-changed" /* CoreMessageType.ActivePeriodChanged */,
441
477
  contentId,
442
478
  value: { periodId: period.id },
443
479
  });
444
480
  },
445
481
  }, currentLoadCanceller.signal);
446
482
  StreamOrchestrator({ initialPeriod, manifest }, playbackObserver, representationEstimator, segmentSinksStore, segmentQueueCreator, {
447
- wantedBufferAhead,
448
- maxVideoBufferSize,
449
- maxBufferAhead,
450
- maxBufferBehind,
483
+ wantedBufferAhead: refs.wantedBufferAhead,
484
+ maxVideoBufferSize: refs.maxVideoBufferSize,
485
+ maxBufferAhead: refs.maxBufferAhead,
486
+ maxBufferBehind: refs.maxBufferBehind,
451
487
  drmSystemId,
452
488
  enableFastSwitching,
453
489
  onCodecSwitch,
@@ -461,7 +497,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
461
497
  return {
462
498
  needsBufferFlush(payload) {
463
499
  sendMessage({
464
- type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
500
+ type: "needs-buffer-flush" /* CoreMessageType.NeedsBufferFlush */,
465
501
  contentId,
466
502
  value: payload,
467
503
  });
@@ -498,7 +534,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
498
534
  },
499
535
  lockedStream(payload) {
500
536
  sendMessage({
501
- type: "locked-stream" /* WorkerMessageType.LockedStream */,
537
+ type: "locked-stream" /* CoreMessageType.LockedStream */,
502
538
  contentId,
503
539
  value: {
504
540
  periodId: payload.period.id,
@@ -514,7 +550,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
514
550
  return;
515
551
  }
516
552
  sendMessage({
517
- type: "adaptation-changed" /* WorkerMessageType.AdaptationChanged */,
553
+ type: "adaptation-changed" /* CoreMessageType.AdaptationChanged */,
518
554
  contentId,
519
555
  value: {
520
556
  adaptationId: (_b = (_a = value.adaptation) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null,
@@ -531,7 +567,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
531
567
  return;
532
568
  }
533
569
  sendMessage({
534
- type: "representation-changed" /* WorkerMessageType.RepresentationChanged */,
570
+ type: "representation-changed" /* CoreMessageType.RepresentationChanged */,
535
571
  contentId,
536
572
  value: {
537
573
  adaptationId: value.adaptation.id,
@@ -543,14 +579,14 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
543
579
  },
544
580
  inbandEvent(value) {
545
581
  sendMessage({
546
- type: "inband-event" /* WorkerMessageType.InbandEvent */,
582
+ type: "inband-event" /* CoreMessageType.InbandEvent */,
547
583
  contentId,
548
584
  value,
549
585
  });
550
586
  },
551
587
  warning(value) {
552
588
  sendMessage({
553
- type: "warning" /* WorkerMessageType.Warning */,
589
+ type: "warning" /* CoreMessageType.Warning */,
554
590
  contentId,
555
591
  value: formatErrorForSender(value),
556
592
  });
@@ -561,7 +597,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
561
597
  }
562
598
  preparedContent.trackChoiceSetter.addTrackSetter(value.period.id, value.type, value.adaptationRef);
563
599
  sendMessage({
564
- type: "period-stream-ready" /* WorkerMessageType.PeriodStreamReady */,
600
+ type: "period-stream-ready" /* CoreMessageType.PeriodStreamReady */,
565
601
  contentId,
566
602
  value: { periodId: value.period.id, bufferType: value.type },
567
603
  });
@@ -580,7 +616,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
580
616
  contentTimeBoundariesObserver.onPeriodCleared(value.type, value.period);
581
617
  preparedContent.trackChoiceSetter.removeTrackSetter(value.period.id, value.type);
582
618
  sendMessage({
583
- type: "period-stream-cleared" /* WorkerMessageType.PeriodStreamCleared */,
619
+ type: "period-stream-cleared" /* CoreMessageType.PeriodStreamCleared */,
584
620
  contentId,
585
621
  value: { periodId: value.period.id, bufferType: value.type },
586
622
  });
@@ -594,7 +630,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
594
630
  // Considering this is only for an unimportant undocumented API, we may
595
631
  // throttle such messages. (e.g. max one per 2 seconds for each type?).
596
632
  sendMessage({
597
- type: "bitrate-estimate-change" /* WorkerMessageType.BitrateEstimateChange */,
633
+ type: "bitrate-estimate-change" /* CoreMessageType.BitrateEstimateChange */,
598
634
  contentId,
599
635
  value: {
600
636
  bitrate: payload.bitrate,
@@ -607,7 +643,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
607
643
  },
608
644
  needsDecipherabilityFlush() {
609
645
  sendMessage({
610
- type: "needs-decipherability-flush" /* WorkerMessageType.NeedsDecipherabilityFlush */,
646
+ type: "needs-decipherability-flush" /* CoreMessageType.NeedsDecipherabilityFlush */,
611
647
  contentId,
612
648
  value: null,
613
649
  });
@@ -629,7 +665,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
629
665
  content.representation = content.representation.getMetadataSnapshot();
630
666
  }
631
667
  sendMessage({
632
- type: "encryption-data-encountered" /* WorkerMessageType.EncryptionDataEncountered */,
668
+ type: "encryption-data-encountered" /* CoreMessageType.EncryptionDataEncountered */,
633
669
  contentId,
634
670
  value: {
635
671
  keyIds: value.keyIds,
@@ -642,7 +678,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
642
678
  },
643
679
  error(error) {
644
680
  sendMessage({
645
- type: "error" /* WorkerMessageType.Error */,
681
+ type: "error" /* CoreMessageType.Error */,
646
682
  contentId,
647
683
  value: formatErrorForSender(error),
648
684
  });
@@ -677,7 +713,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
677
713
  };
678
714
  periodMap.set(value.bufferType, msgObj);
679
715
  sendMessage({
680
- type: "discontinuity-update" /* WorkerMessageType.DiscontinuityUpdate */,
716
+ type: "discontinuity-update" /* CoreMessageType.DiscontinuityUpdate */,
681
717
  contentId,
682
718
  value: msgObj,
683
719
  });
@@ -700,7 +736,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
700
736
  maximumPosition: payload.maximumPosition,
701
737
  });
702
738
  sendMessage({
703
- type: "reloading-media-source" /* WorkerMessageType.ReloadingMediaSource */,
739
+ type: "reloading-media-source" /* CoreMessageType.ReloadingMediaSource */,
704
740
  mediaSourceId,
705
741
  value: payload,
706
742
  }, []);
@@ -716,7 +752,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
716
752
  currentLoadCanceller = null;
717
753
  }
718
754
  const contentId = (_a = contentPreparer.getCurrentContent()) === null || _a === void 0 ? void 0 : _a.contentId;
719
- contentPreparer.reloadMediaSource().then(() => {
755
+ contentPreparer.reloadMediaSource(sendMessage).then(() => {
720
756
  log.info("Core", "MediaSource Reloaded, loading content again", {
721
757
  newInitialTime,
722
758
  });
@@ -727,7 +763,7 @@ function loadPreparedContent(val, contentPreparer, playbackObservationRef) {
727
763
  return;
728
764
  }
729
765
  sendMessage({
730
- type: "error" /* WorkerMessageType.Error */,
766
+ type: "error" /* CoreMessageType.Error */,
731
767
  contentId,
732
768
  value: formatErrorForSender(err),
733
769
  });
@@ -750,7 +786,7 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
750
786
  });
751
787
  // Not relying on `sendMessage` as it also logs
752
788
  postMessage({
753
- type: "log" /* WorkerMessageType.LogMessage */,
789
+ type: "log" /* CoreMessageType.LogMessage */,
754
790
  value: {
755
791
  namespace,
756
792
  logLevel: levelStr,
@@ -763,23 +799,26 @@ function updateLoggerLevel(logLevel, logFormat, sendBackLogs) {
763
799
  /**
764
800
  * Send a message `SegmentSinkStoreUpdate` to the main thread with
765
801
  * a serialized object that represents the segmentSinksStore state.
802
+ * @param {Function} sendMessage - Function allowing to send messages to the
803
+ * "main thread" part of the RxPlayer logic.
766
804
  * @param {ContentPreparer} contentPreparer
767
- * @returns {void}
768
805
  */
769
- function sendSegmentSinksStoreInfos(contentPreparer, requestId) {
806
+ function sendSegmentSinksStoreInfos(sendMessage, contentPreparer, requestId) {
770
807
  const currentContent = contentPreparer.getCurrentContent();
771
808
  if (currentContent === null) {
772
809
  return;
773
810
  }
774
811
  const segmentSinksMetrics = currentContent.segmentSinksStore.getSegmentSinksMetrics();
775
812
  sendMessage({
776
- type: "segment-sink-store-update" /* WorkerMessageType.SegmentSinkStoreUpdate */,
813
+ type: "segment-sink-store-update" /* CoreMessageType.SegmentSinkStoreUpdate */,
777
814
  contentId: currentContent.contentId,
778
815
  value: { segmentSinkMetrics: segmentSinksMetrics, requestId },
779
816
  });
780
817
  }
781
818
  /**
782
819
  * Handle accordingly an `IFreezeResolution` object.
820
+ * @param {Function} sendMessage - Function allowing to send messages to the
821
+ * "main thread" part of the RxPlayer logic.
783
822
  * @param {Object|null} freezeResolution - The `IFreezeResolution` suggested.
784
823
  * @param {Object} param - Parameters that might be needed to implement the
785
824
  * resolution.
@@ -792,7 +831,7 @@ function sendSegmentSinksStoreInfos(contentPreparer, requestId) {
792
831
  * function is authorized to mark `Representation` as "to avoid" if the
793
832
  * `IFreezeResolution` object suggest it.
794
833
  */
795
- function handleFreezeResolution(freezeResolution, { contentId, manifest, handleMediaSourceReload, enableRepresentationAvoidance, }) {
834
+ function handleFreezeResolution(sendMessage, freezeResolution, { contentId, manifest, handleMediaSourceReload, enableRepresentationAvoidance, }) {
796
835
  switch (freezeResolution.type) {
797
836
  case "reload": {
798
837
  log.info("Core", "Planning reload due to freeze");
@@ -806,7 +845,7 @@ function handleFreezeResolution(freezeResolution, { contentId, manifest, handleM
806
845
  case "flush": {
807
846
  log.info("Core", "Flushing buffer due to freeze");
808
847
  sendMessage({
809
- type: "needs-buffer-flush" /* WorkerMessageType.NeedsBufferFlush */,
848
+ type: "needs-buffer-flush" /* CoreMessageType.NeedsBufferFlush */,
810
849
  contentId,
811
850
  value: {
812
851
  relativeResumingPosition: freezeResolution.value.relativeSeek,
@@ -837,11 +876,11 @@ function handleFreezeResolution(freezeResolution, { contentId, manifest, handleM
837
876
  * @param {ContentPreparer} contentPreparer
838
877
  * @returns {void}
839
878
  */
840
- function sendThumbnailData(contentPreparer, msg) {
879
+ function sendThumbnailData(sendMessage, contentPreparer, msg) {
841
880
  const preparedContent = contentPreparer.getCurrentContent();
842
881
  const respondWithError = (err) => {
843
882
  sendMessage({
844
- type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
883
+ type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
845
884
  contentId: msg.contentId,
846
885
  value: {
847
886
  status: "error",
@@ -857,7 +896,7 @@ function sendThumbnailData(contentPreparer, msg) {
857
896
  }
858
897
  getThumbnailData(preparedContent.fetchThumbnailData, preparedContent.manifest, msg.value.periodId, msg.value.thumbnailTrackId, msg.value.time).then((result) => {
859
898
  sendMessage({
860
- type: "thumbnail-response" /* WorkerMessageType.ThumbnailDataResponse */,
899
+ type: "thumbnail-response" /* CoreMessageType.ThumbnailDataResponse */,
861
900
  contentId: msg.contentId,
862
901
  value: {
863
902
  status: "success",