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
@@ -6,7 +6,7 @@
6
6
  | Multithread environment | Should be runnable in a WebWorker entirely |
7
7
 
8
8
  [1] In a Multithreading mode, no file from that directory should ever be imported by
9
- external code but the `CoreEntry` to generate the worker bundle. In a monothreading mode,
9
+ external code but the `WorkerMain` to generate the worker bundle. In a monothreading mode,
10
10
  any file may be directly imported.
11
11
 
12
12
  ## Overview
@@ -1,14 +1,14 @@
1
- import { config } from "../../experimental";
2
- import log from "../../log";
3
- import type { IAdaptation, IPeriod, IRepresentation } from "../../manifest";
1
+ import { config } from "../../../experimental";
2
+ import log from "../../../log";
3
+ import type { IAdaptation, IPeriod, IRepresentation } from "../../../manifest";
4
4
  import type {
5
5
  IFreezingStatus,
6
6
  IRebufferingStatus,
7
7
  ObservationPosition,
8
- } from "../../playback_observer";
9
- import getMonotonicTimeStamp from "../../utils/monotonic_timestamp";
10
- import type SegmentSinksStore from "../segment_sinks";
11
- import type { IBufferedChunk } from "../segment_sinks";
8
+ } from "../../../playback_observer";
9
+ import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
10
+ import type SegmentSinksStore from "../../segment_sinks";
11
+ import type { IBufferedChunk } from "../../segment_sinks";
12
12
 
13
13
  /**
14
14
  * "Freezing" is a complex situation indicating that playback is not advancing
@@ -17,21 +17,21 @@
17
17
  import type {
18
18
  IStreamOrchestratorPlaybackObservation,
19
19
  IBufferType,
20
- } from "../../core/types";
21
- import { MediaError } from "../../errors";
20
+ } from "../../../core/types";
21
+ import { MediaError } from "../../../errors";
22
22
  import type {
23
23
  IManifest,
24
24
  IAdaptation,
25
25
  IRepresentationIndex,
26
26
  IPeriod,
27
- } from "../../manifest";
28
- import type { IReadOnlyPlaybackObserver } from "../../playback_observer";
29
- import type { IPlayerError } from "../../public_types";
30
- import EventEmitter from "../../utils/event_emitter";
31
- import isNullOrUndefined from "../../utils/is_null_or_undefined";
32
- import queueMicrotask from "../../utils/queue_microtask";
33
- import SortedList from "../../utils/sorted_list";
34
- import TaskCanceller from "../../utils/task_canceller";
27
+ } from "../../../manifest";
28
+ import type { IReadOnlyPlaybackObserver } from "../../../playback_observer";
29
+ import type { IPlayerError } from "../../../public_types";
30
+ import EventEmitter from "../../../utils/event_emitter";
31
+ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
32
+ import queueMicrotask from "../../../utils/queue_microtask";
33
+ import SortedList from "../../../utils/sorted_list";
34
+ import TaskCanceller from "../../../utils/task_canceller";
35
35
 
36
36
  /**
37
37
  * Observes what's being played and take care of media events relating to time
@@ -1,13 +1,13 @@
1
1
  import type {
2
2
  ISegmentSinksStore,
3
3
  IStreamOrchestratorPlaybackObservation,
4
- } from "../../core/types";
5
- import log from "../../log";
6
- import type { IManifest, IPeriod } from "../../manifest";
7
- import type { IMediaSourceInterface } from "../../mse";
8
- import type { IReadOnlyPlaybackObserver } from "../../playback_observer";
9
- import type { IPlayerError } from "../../public_types";
10
- import type { CancellationSignal } from "../../utils/task_canceller";
4
+ } from "../../../core/types";
5
+ import log from "../../../log";
6
+ import type { IManifest, IPeriod } from "../../../manifest";
7
+ import type { IMediaSourceInterface } from "../../../mse";
8
+ import type { IReadOnlyPlaybackObserver } from "../../../playback_observer";
9
+ import type { IPlayerError } from "../../../public_types";
10
+ import type { CancellationSignal } from "../../../utils/task_canceller";
11
11
  import ContentTimeBoundariesObserver from "./content_time_boundaries_observer";
12
12
 
13
13
  export interface IContentTimeBoundariesObserverCallbacks {
@@ -1,9 +1,9 @@
1
- import type { ITextDisplayer } from "../../main_thread/types";
2
- import type { IMediaSourceInterface } from "../../mse";
3
- import { SourceBufferType } from "../../mse";
4
- import type { ITrackType } from "../../public_types";
5
- import arrayFind from "../../utils/array_find";
6
- import type { IRange } from "../../utils/ranges";
1
+ import type { ITextDisplayer } from "../../../main_thread/types";
2
+ import type { IMediaSourceInterface } from "../../../mse";
3
+ import { SourceBufferType } from "../../../mse";
4
+ import type { ITrackType } from "../../../public_types";
5
+ import arrayFind from "../../../utils/array_find";
6
+ import type { IRange } from "../../../utils/ranges";
7
7
 
8
8
  /**
9
9
  * Returns a JS object where keys are the type of buffers (e.g. "audio",
@@ -1,8 +1,8 @@
1
- import type { IManifest } from "../../manifest";
2
- import type { IThumbnailResponse } from "../../transports";
3
- import arrayFind from "../../utils/array_find";
4
- import TaskCanceller from "../../utils/task_canceller";
5
- import type { IThumbnailFetcher } from "../fetchers";
1
+ import type { IManifest } from "../../../manifest";
2
+ import type { IThumbnailResponse } from "../../../transports";
3
+ import arrayFind from "../../../utils/array_find";
4
+ import TaskCanceller from "../../../utils/task_canceller";
5
+ import type { IThumbnailFetcher } from "../../fetchers";
6
6
 
7
7
  /**
8
8
  * @param {function} fetchThumbnails
@@ -1,5 +1,5 @@
1
- import type { ICorePlaybackObservation } from "../../main_thread/init/utils/create_core_playback_observer";
2
- import type SegmentSinksStore from "../segment_sinks";
1
+ import type { ICorePlaybackObservation } from "../../../main_thread/init/utils/create_core_playback_observer";
2
+ import type SegmentSinksStore from "../../segment_sinks";
3
3
 
4
4
  /**
5
5
  * Synchronize SegmentSinks with what has been buffered.
@@ -1,34 +1,41 @@
1
- import { MediaSource_ } from "../../compat/browser_compatibility_types";
2
- import features from "../../features";
3
- import log from "../../log";
4
- import type { IContentInitializationData } from "../../main_thread/types";
5
- import type { IManifest } from "../../manifest";
6
- import { createRepresentationFilterFromFnString } from "../../manifest";
7
- import type Manifest from "../../manifest/classes";
8
- import type { IMediaSourceInterface } from "../../mse";
9
- import MainMediaSourceInterface from "../../mse/main_media_source_interface";
10
- import WorkerMediaSourceInterface from "../../mse/worker_media_source_interface";
11
- import type { IPlayerError } from "../../public_types";
12
- import idGenerator from "../../utils/id_generator";
13
- import isNullOrUndefined from "../../utils/is_null_or_undefined";
14
- import type { CancellationError, CancellationSignal } from "../../utils/task_canceller";
15
- import TaskCanceller from "../../utils/task_canceller";
16
- import type { IRepresentationEstimator } from "../adaptive";
17
- import createAdaptiveRepresentationSelector from "../adaptive";
18
- import type { IRepresentationEstimatorThrottlers } from "../adaptive/adaptive_representation_selector";
19
- import CmcdDataBuilder from "../cmcd";
20
- import type { IManifestRefreshSettings } from "../fetchers";
21
- import { ManifestFetcher, SegmentQueueCreator } from "../fetchers";
22
- import CdnPrioritizer from "../fetchers/cdn_prioritizer";
23
- import createThumbnailFetcher from "../fetchers/thumbnails/thumbnail_fetcher";
24
- import type { IThumbnailFetcher } from "../fetchers/thumbnails/thumbnail_fetcher";
25
- import SegmentSinksStore from "../segment_sinks";
26
- import type { IAttachMediaSourceCoreMessagePayload, ICoreMessage } from "../types";
27
- import { CoreMessageType } from "../types";
28
- import CoreTextDisplayerInterface from "./core_text_displayer_interface";
29
- import FreezeResolver from "./FreezeResolver";
1
+ import { MediaSource_ } from "../../../compat/browser_compatibility_types";
2
+ import features from "../../../features";
3
+ import log from "../../../log";
4
+ import type { IManifest, IManifestMetadata } from "../../../manifest";
5
+ import { createRepresentationFilterFromFnString } from "../../../manifest";
6
+ import type Manifest from "../../../manifest/classes";
7
+ import type { IMediaSourceInterface } from "../../../mse";
8
+ import MainMediaSourceInterface from "../../../mse/main_media_source_interface";
9
+ import WorkerMediaSourceInterface from "../../../mse/worker_media_source_interface";
10
+ import type {
11
+ IAttachMediaSourceWorkerMessagePayload,
12
+ IContentInitializationData,
13
+ } from "../../../multithread_types";
14
+ import { WorkerMessageType } from "../../../multithread_types";
15
+ import type { IPlayerError } from "../../../public_types";
16
+ import assert from "../../../utils/assert";
17
+ import idGenerator from "../../../utils/id_generator";
18
+ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
19
+ import objectAssign from "../../../utils/object_assign";
20
+ import type {
21
+ CancellationError,
22
+ CancellationSignal,
23
+ } from "../../../utils/task_canceller";
24
+ import TaskCanceller from "../../../utils/task_canceller";
25
+ import type { IRepresentationEstimator } from "../../adaptive";
26
+ import createAdaptiveRepresentationSelector from "../../adaptive";
27
+ import CmcdDataBuilder from "../../cmcd";
28
+ import type { IManifestRefreshSettings } from "../../fetchers";
29
+ import { ManifestFetcher, SegmentQueueCreator } from "../../fetchers";
30
+ import CdnPrioritizer from "../../fetchers/cdn_prioritizer";
31
+ import createThumbnailFetcher from "../../fetchers/thumbnails/thumbnail_fetcher";
32
+ import type { IThumbnailFetcher } from "../../fetchers/thumbnails/thumbnail_fetcher";
33
+ import SegmentSinksStore from "../../segment_sinks";
34
+ import FreezeResolver from "../common/FreezeResolver";
35
+ import { limitVideoResolution, throttleVideoBitrate } from "./globals";
36
+ import sendMessage, { formatErrorForSender } from "./send_message";
30
37
  import TrackChoiceSetter from "./track_choice_setter";
31
- import { formatErrorForSender } from "./utils";
38
+ import WorkerTextDisplayerInterface from "./worker_text_displayer_interface";
32
39
 
33
40
  /** Function allowing to associate a unique identifier to all created `MediaSource` */
34
41
  const generateMediaSourceId = idGenerator();
@@ -104,11 +111,8 @@ export default class ContentPreparer {
104
111
  * @returns {Promise.<Object>}
105
112
  */
106
113
  public initializeNewContent(
107
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
108
114
  context: IContentInitializationData,
109
- /** Allows to filter which Representations can be choosen. */
110
- throttlers: IRepresentationEstimatorThrottlers,
111
- ): Promise<IManifest> {
115
+ ): Promise<IManifestMetadata> {
112
116
  return new Promise((res, rej) => {
113
117
  this.disposeCurrentContent();
114
118
  const contentCanceller = this._contentCanceller;
@@ -124,25 +128,19 @@ export default class ContentPreparer {
124
128
  transportOptions,
125
129
  useMseInWorker,
126
130
  enableRepresentationAvoidance,
127
- transport,
128
131
  } = context;
129
132
  let manifest: IManifest | null = null;
130
133
 
131
- const transportFn = features.transports[transport];
132
- if (typeof transportFn !== "function") {
133
- rej(
134
- new Error(
135
- `transport "${transport}" not supported. ` +
136
- "Did you add the corresponding feature?",
137
- ),
138
- );
139
- return;
140
- }
134
+ // TODO better way
135
+ assert(
136
+ features.transports.dash !== undefined,
137
+ "Multithread RxPlayer should have access to the DASH feature",
138
+ );
141
139
  const representationFilter =
142
140
  typeof transportOptions.representationFilter === "string"
143
141
  ? createRepresentationFilterFromFnString(transportOptions.representationFilter)
144
- : transportOptions.representationFilter;
145
- const transportPipelines = transportFn({
142
+ : undefined;
143
+ const dashPipelines = features.transports.dash({
146
144
  ...transportOptions,
147
145
  representationFilter,
148
146
  });
@@ -151,7 +149,7 @@ export default class ContentPreparer {
151
149
  context.cmcd === undefined ? null : new CmcdDataBuilder(context.cmcd);
152
150
  const manifestFetcher = new ManifestFetcher(
153
151
  url === undefined ? undefined : [url],
154
- transportPipelines,
152
+ dashPipelines,
155
153
  {
156
154
  cmcdDataBuilder,
157
155
  ...context.manifestRetryOptions,
@@ -163,7 +161,10 @@ export default class ContentPreparer {
163
161
  video: context.initialVideoBitrate ?? 0,
164
162
  },
165
163
  lowLatencyMode: transportOptions.lowLatencyMode,
166
- throttlers,
164
+ throttlers: {
165
+ limitResolution: { video: limitVideoResolution },
166
+ throttleBitrate: { video: throttleVideoBitrate },
167
+ },
167
168
  });
168
169
 
169
170
  const unbindRejectOnCancellation = currentMediaSourceCanceller.signal.register(
@@ -174,21 +175,20 @@ export default class ContentPreparer {
174
175
 
175
176
  const cdnPrioritizer = new CdnPrioritizer(contentCanceller.signal);
176
177
  const segmentQueueCreator = new SegmentQueueCreator(
177
- transportPipelines,
178
+ dashPipelines,
178
179
  cdnPrioritizer,
179
180
  cmcdDataBuilder,
180
181
  context.segmentRetryOptions,
181
182
  );
182
183
  const fetchThumbnailData = createThumbnailFetcher(
183
- transportPipelines.thumbnails,
184
+ dashPipelines.thumbnails,
184
185
  cdnPrioritizer,
185
186
  );
186
187
 
187
188
  const trackChoiceSetter = new TrackChoiceSetter();
188
189
 
189
- const [mediaSource, segmentSinksStore, coreTextSender] =
190
+ const [mediaSource, segmentSinksStore, workerTextSender] =
190
191
  createMediaSourceInterfaceAndSegmentSinksStore(
191
- sendMessage,
192
192
  contentId,
193
193
  {
194
194
  useMseInWorker,
@@ -210,7 +210,7 @@ export default class ContentPreparer {
210
210
  segmentSinksStore,
211
211
  segmentQueueCreator,
212
212
  fetchThumbnailData,
213
- coreTextSender,
213
+ workerTextSender,
214
214
  trackChoiceSetter,
215
215
  useMseInWorker,
216
216
  };
@@ -229,7 +229,7 @@ export default class ContentPreparer {
229
229
  "warning",
230
230
  (err: IPlayerError) => {
231
231
  sendMessage({
232
- type: CoreMessageType.Warning,
232
+ type: WorkerMessageType.Warning,
233
233
  contentId,
234
234
  value: formatErrorForSender(err),
235
235
  });
@@ -255,7 +255,7 @@ export default class ContentPreparer {
255
255
  "error",
256
256
  (err: unknown) => {
257
257
  sendMessage({
258
- type: CoreMessageType.Error,
258
+ type: WorkerMessageType.Error,
259
259
  contentId,
260
260
  value: formatErrorForSender(err),
261
261
  });
@@ -274,6 +274,7 @@ export default class ContentPreparer {
274
274
  return;
275
275
  }
276
276
  updateCodecSupportInWorkerMode(manifest);
277
+ const sentManifest = manifest.getMetadataSnapshot();
277
278
  manifest.addEventListener(
278
279
  "manifestUpdate",
279
280
  (updates) => {
@@ -281,16 +282,22 @@ export default class ContentPreparer {
281
282
  // TODO log warn?
282
283
  return;
283
284
  }
285
+
286
+ // Remove `periods` key to reduce cost of an unnecessary manifest
287
+ // clone.
288
+ const snapshot = objectAssign(manifest.getMetadataSnapshot(), {
289
+ periods: [],
290
+ });
284
291
  sendMessage({
285
- type: CoreMessageType.ManifestUpdate,
292
+ type: WorkerMessageType.ManifestUpdate,
286
293
  contentId,
287
- value: { manifest, updates },
294
+ value: { manifest: snapshot, updates },
288
295
  });
289
296
  },
290
297
  contentCanceller.signal,
291
298
  );
292
299
  unbindRejectOnCancellation();
293
- res(manifest);
300
+ res(sentManifest);
294
301
  }
295
302
  });
296
303
  }
@@ -317,17 +324,12 @@ export default class ContentPreparer {
317
324
  }
318
325
 
319
326
  /**
320
- * Change the MediaSource attached for the current content.
321
- * It is assumed that main thread is already notified that such a reload is
322
- * happening.
327
+ * Signal the ContentPreparer that the MediaSource is "reloading".
323
328
  *
324
329
  * The returned Promise resolves when it restarts being ready.
325
- * @param {Function} sendMessage
326
330
  * @returns {Promise}
327
331
  */
328
- public reloadMediaSource(
329
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
330
- ): Promise<void> {
332
+ public reloadMediaSource(): Promise<void> {
331
333
  this._currentMediaSourceCanceller.cancel();
332
334
  if (this._currentContent === null) {
333
335
  return Promise.reject(new Error("CP: No content anymore"));
@@ -335,21 +337,20 @@ export default class ContentPreparer {
335
337
  this._currentContent.trackChoiceSetter.reset();
336
338
  this._currentMediaSourceCanceller = new TaskCanceller();
337
339
 
338
- const [mediaSourceInterface, segmentSinksStore, coreTextSender] =
340
+ const [mediaSourceInterface, segmentSinksStore, workerTextSender] =
339
341
  createMediaSourceInterfaceAndSegmentSinksStore(
340
- sendMessage,
341
342
  this._currentContent.contentId,
342
343
  {
343
344
  useMseInWorker: this._currentContent.useMseInWorker,
344
345
  hasVideo: this._hasVideo,
345
- hasText: this._currentContent.coreTextSender !== null,
346
+ hasText: this._currentContent.workerTextSender !== null,
346
347
  },
347
348
  this._currentMediaSourceCanceller.signal,
348
349
  );
349
350
  this._currentContent.mediaSource = mediaSourceInterface;
350
351
  this._currentContent.segmentSinksStore = segmentSinksStore;
351
352
  this._currentContent.freezeResolver = new FreezeResolver(segmentSinksStore);
352
- this._currentContent.coreTextSender = coreTextSender;
353
+ this._currentContent.workerTextSender = workerTextSender;
353
354
  return new Promise((res, rej) => {
354
355
  mediaSourceInterface.addEventListener(
355
356
  "mediaSourceOpen",
@@ -432,7 +433,7 @@ export interface IPreparedContentData {
432
433
  */
433
434
  segmentSinksStore: SegmentSinksStore;
434
435
  /** Allows to send timed text media data so it can be rendered. */
435
- coreTextSender: CoreTextDisplayerInterface | null;
436
+ workerTextSender: WorkerTextDisplayerInterface | null;
436
437
  /**
437
438
  * Allows to create `SegmentQueue` which simplifies complex media segment
438
439
  * fetching.
@@ -454,7 +455,6 @@ export interface IPreparedContentData {
454
455
  }
455
456
 
456
457
  /**
457
- * @param {Function} sendMessage
458
458
  * @param {string} contentId
459
459
  * @param {Object} capabilities
460
460
  * @param {boolean} capabilities.useMseInWorker
@@ -464,7 +464,6 @@ export interface IPreparedContentData {
464
464
  * @returns {Array.<Object>}
465
465
  */
466
466
  function createMediaSourceInterfaceAndSegmentSinksStore(
467
- sendMessage: (msg: ICoreMessage, transferables?: Transferable[]) => void,
468
467
  contentId: string,
469
468
  capabilities: {
470
469
  useMseInWorker: boolean;
@@ -472,13 +471,13 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
472
471
  hasText: boolean;
473
472
  },
474
473
  cancelSignal: CancellationSignal,
475
- ): [IMediaSourceInterface, SegmentSinksStore, CoreTextDisplayerInterface | null] {
474
+ ): [IMediaSourceInterface, SegmentSinksStore, WorkerTextDisplayerInterface | null] {
476
475
  let mediaSourceInterface: IMediaSourceInterface;
477
476
  if (capabilities.useMseInWorker) {
478
477
  const mainMediaSource = new MainMediaSourceInterface(generateMediaSourceId());
479
478
  mediaSourceInterface = mainMediaSource;
480
479
 
481
- let sentMediaSourceLink: IAttachMediaSourceCoreMessagePayload;
480
+ let sentMediaSourceLink: IAttachMediaSourceWorkerMessagePayload;
482
481
  const handle = mainMediaSource.handle;
483
482
  if (handle.type === "handle") {
484
483
  sentMediaSourceLink = { type: "handle" as const, value: handle.value };
@@ -492,7 +491,7 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
492
491
 
493
492
  sendMessage(
494
493
  {
495
- type: CoreMessageType.AttachMediaSource,
494
+ type: WorkerMessageType.AttachMediaSource,
496
495
  contentId,
497
496
  value: sentMediaSourceLink,
498
497
  mediaSourceId: mediaSourceInterface.id,
@@ -508,7 +507,7 @@ function createMediaSourceInterfaceAndSegmentSinksStore(
508
507
  }
509
508
 
510
509
  const textSender = capabilities.hasText
511
- ? new CoreTextDisplayerInterface(contentId, sendMessage)
510
+ ? new WorkerTextDisplayerInterface(contentId, sendMessage)
512
511
  : null;
513
512
  const { hasVideo } = capabilities;
514
513
  const segmentSinksStore = new SegmentSinksStore(
@@ -0,0 +1,38 @@
1
+ import config from "../../../config";
2
+ import SharedReference from "../../../utils/reference";
3
+ import type { IResolutionInfo } from "../../adaptive";
4
+
5
+ const {
6
+ DEFAULT_WANTED_BUFFER_AHEAD,
7
+ DEFAULT_MAX_VIDEO_BUFFER_SIZE,
8
+ DEFAULT_MAX_BUFFER_AHEAD,
9
+ DEFAULT_MAX_BUFFER_BEHIND,
10
+ } = config.getCurrent();
11
+
12
+ /** Buffer "goal" at which we stop downloading new segments. */
13
+ const wantedBufferAhead = new SharedReference(DEFAULT_WANTED_BUFFER_AHEAD);
14
+
15
+ /** Buffer maximum size in kiloBytes at which we stop downloading */
16
+ const maxVideoBufferSize = new SharedReference(DEFAULT_MAX_VIDEO_BUFFER_SIZE);
17
+
18
+ /** Max buffer size after the current position, in seconds (we GC further up). */
19
+ const maxBufferAhead = new SharedReference(DEFAULT_MAX_BUFFER_AHEAD);
20
+
21
+ /** Max buffer size before the current position, in seconds (we GC further down). */
22
+ const maxBufferBehind = new SharedReference(DEFAULT_MAX_BUFFER_BEHIND);
23
+
24
+ const limitVideoResolution = new SharedReference<IResolutionInfo>({
25
+ height: undefined,
26
+ width: undefined,
27
+ pixelRatio: 1,
28
+ });
29
+ const throttleVideoBitrate = new SharedReference(Infinity);
30
+
31
+ export {
32
+ wantedBufferAhead,
33
+ maxVideoBufferSize,
34
+ maxBufferBehind,
35
+ maxBufferAhead,
36
+ limitVideoResolution,
37
+ throttleVideoBitrate,
38
+ };
@@ -0,0 +1,2 @@
1
+ import initializeWorkerMain from "./worker_main";
2
+ export default initializeWorkerMain;
@@ -0,0 +1,28 @@
1
+ import { formatError } from "../../../errors";
2
+ import log from "../../../log";
3
+ import type { ISentError, IWorkerMessage } from "../../../multithread_types";
4
+
5
+ export default function sendMessage(
6
+ msg: IWorkerMessage,
7
+ transferables?: Transferable[],
8
+ ): void {
9
+ log.debug("M<--C", "Sending message", { name: msg.type });
10
+ if (transferables === undefined) {
11
+ postMessage(msg);
12
+ } else {
13
+ // TypeScript made a mistake here, and 2busy2fix
14
+ (postMessage as (msg: IWorkerMessage, transferables: Transferable[]) => void)(
15
+ msg,
16
+ transferables,
17
+ );
18
+ }
19
+ }
20
+
21
+ export function formatErrorForSender(error: unknown): ISentError {
22
+ const formattedError = formatError(error, {
23
+ defaultCode: "NONE",
24
+ defaultReason: "An unknown error stopped content playback.",
25
+ });
26
+
27
+ return formattedError.serialize();
28
+ }
@@ -1,10 +1,10 @@
1
- import log from "../../log";
2
- import type { ITrackUpdateChoiceObject } from "../../main_thread/types";
3
- import type { ITrackType } from "../../public_types";
4
- import isNullOrUndefined from "../../utils/is_null_or_undefined";
5
- import objectAssign from "../../utils/object_assign";
6
- import SharedReference from "../../utils/reference";
7
- import type { IAdaptationChoice, IRepresentationsChoice } from "../stream";
1
+ import log from "../../../log";
2
+ import type { ITrackUpdateChoiceObject } from "../../../multithread_types";
3
+ import type { ITrackType } from "../../../public_types";
4
+ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
5
+ import objectAssign from "../../../utils/object_assign";
6
+ import SharedReference from "../../../utils/reference";
7
+ import type { IAdaptationChoice, IRepresentationsChoice } from "../../stream";
8
8
 
9
9
  export default class TrackChoiceSetter {
10
10
  /**