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
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import isSeekingApproximate from "../compat/is_seeking_approximate";
17
17
  import config from "../config";
18
+ import ManualTimeRanges from "../core/segment_sinks/implementations/utils/manual_time_ranges";
18
19
  import log from "../log";
19
20
  import getMonotonicTimeStamp from "../utils/monotonic_timestamp";
20
21
  import noop from "../utils/noop";
@@ -56,34 +57,61 @@ export default class PlaybackObserver {
56
57
  * Create a new `PlaybackObserver`, which allows to produce new "playback
57
58
  * observations" on various media events and intervals.
58
59
  *
60
+ * Once a `PlaybackObserver` is created, you will want to "attach" the
61
+ * media element to it through the `attachMediaElement` method once that
62
+ * element is ready to play your content.
63
+ *
59
64
  * Note that creating a `PlaybackObserver` lead to the usage of resources,
60
65
  * such as event listeners which will only be freed once the `stop` method is
61
66
  * called.
62
- * @param {HTMLMediaElement} mediaElement
63
67
  * @param {Object} options
64
68
  */
65
- constructor(mediaElement, options) {
69
+ constructor(options) {
66
70
  this._internalSeeksIncoming = [];
67
- this._mediaElement = mediaElement;
71
+ this._mediaElementRef = new SharedReference(null);
68
72
  this._withMediaSource = options.withMediaSource;
69
73
  this._lowLatencyMode = options.lowLatencyMode;
70
74
  this._canceller = new TaskCanceller();
71
- this._observationRef = this._createSharedReference();
72
75
  this._expectedSeekingPosition = null;
73
76
  this._pendingSeek = null;
74
77
  this._isSeekBlocked = false;
75
- const onLoadedMetadata = () => {
76
- if (this._pendingSeek !== null && !this._isSeekBlocked) {
77
- const { position: positionToSeekTo, isInternal } = this._pendingSeek;
78
- this._pendingSeek = null;
79
- this._actuallySetCurrentTime(positionToSeekTo, isInternal);
80
- }
81
- };
82
- mediaElement.addEventListener("loadedmetadata", onLoadedMetadata);
78
+ this._observationIntervalId = null;
79
+ this._observationRef = this._createSharedReference();
83
80
  this._canceller.signal.register(() => {
84
- mediaElement.removeEventListener("loadedmetadata", onLoadedMetadata);
81
+ this._mediaElementRef.finish();
85
82
  });
86
83
  }
84
+ /**
85
+ * "Link" the actual `HTMLMediaElement` to this `PlaybackObserver`.
86
+ *
87
+ * This is done in a step separate from the constructor to allow complex
88
+ * situations where you want to inialize the polling logic before the media
89
+ * element is ready to play your content (e.g. when pre-loading the next
90
+ * content).
91
+ *
92
+ * @param {HTMLMediaElement} mediaElement - The `HTMLMediaElement` on which
93
+ * the content plays.
94
+ */
95
+ attachMediaElement(mediaElement) {
96
+ const prevMediaElement = this._mediaElementRef.getValue();
97
+ if (prevMediaElement !== null) {
98
+ throw new Error("A media element was already attached to this PlaybackObserver");
99
+ }
100
+ this._mediaElementRef.setValue(mediaElement);
101
+ if (this._canceller.isUsed()) {
102
+ return;
103
+ }
104
+ this._registerLoadedMetadataEvent(mediaElement);
105
+ this._restartInterval();
106
+ this._registerMediaElementEvents(mediaElement);
107
+ this._generateObservationForEvent("init");
108
+ if (this._canceller.isUsed()) {
109
+ return;
110
+ }
111
+ if (mediaElement.readyState >= 1) {
112
+ this._onLoadedMetadataEvent();
113
+ }
114
+ }
87
115
  /**
88
116
  * Stop the `PlaybackObserver` from emitting playback observations and free all
89
117
  * resources reserved to emitting them such as event listeners and intervals.
@@ -102,24 +130,27 @@ export default class PlaybackObserver {
102
130
  * @returns {number}
103
131
  */
104
132
  getCurrentTime() {
105
- return this._mediaElement.currentTime;
133
+ var _a, _b;
134
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.currentTime) !== null && _b !== void 0 ? _b : this._observationRef.getValue().position.getPolled());
106
135
  }
107
136
  /**
108
137
  * Returns the current playback rate advertised by the `HTMLMediaElement`.
109
- * @returns {number}
138
+ * @returns {number|undefined}
110
139
  */
111
140
  getPlaybackRate() {
112
- return this._mediaElement.playbackRate;
141
+ var _a, _b;
142
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.playbackRate) !== null && _b !== void 0 ? _b : this._observationRef.getValue().playbackRate);
113
143
  }
114
144
  /**
115
145
  * Returns the current `paused` status advertised by the `HTMLMediaElement`.
116
146
  *
117
147
  * Use this instead of the same status emitted on an observation when you want
118
148
  * to be sure you're using the current value.
119
- * @returns {boolean}
149
+ * @returns {boolean|undefined}
120
150
  */
121
151
  getIsPaused() {
122
- return this._mediaElement.paused;
152
+ var _a, _b;
153
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.paused) !== null && _b !== void 0 ? _b : this._observationRef.getValue().paused);
123
154
  }
124
155
  /**
125
156
  * Prevent seeking operations from being performed from inside the
@@ -143,10 +174,13 @@ export default class PlaybackObserver {
143
174
  unblockSeeking() {
144
175
  if (this._isSeekBlocked) {
145
176
  this._isSeekBlocked = false;
146
- if (this._pendingSeek !== null && this._mediaElement.readyState >= 1) {
177
+ const mediaElement = this._mediaElementRef.getValue();
178
+ if (mediaElement !== null &&
179
+ mediaElement.readyState >= 1 &&
180
+ this._pendingSeek !== null) {
147
181
  const { position: positionToSeekTo, isInternal } = this._pendingSeek;
148
182
  this._pendingSeek = null;
149
- this._actuallySetCurrentTime(positionToSeekTo, isInternal);
183
+ this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
150
184
  }
151
185
  }
152
186
  }
@@ -193,30 +227,34 @@ export default class PlaybackObserver {
193
227
  * the user.
194
228
  */
195
229
  setCurrentTime(time, isInternal = true) {
196
- if (!this._isSeekBlocked && this._mediaElement.readyState >= 1) {
197
- this._actuallySetCurrentTime(time, isInternal);
230
+ const mediaElement = this._mediaElementRef.getValue();
231
+ if (mediaElement !== null && !this._isSeekBlocked && mediaElement.readyState >= 1) {
232
+ this._actuallySetCurrentTime(mediaElement, time, isInternal);
198
233
  }
199
234
  else {
200
235
  this._pendingSeek = { position: time, isInternal };
201
236
  this._internalSeeksIncoming = [];
202
- if (!this._isSeekBlocked) {
203
- this._generateObservationForEvent("manual");
204
- }
237
+ this._generateObservationForEvent("manual");
205
238
  }
206
239
  }
207
240
  /**
208
- * Update the playback rate of the `HTMLMediaElement`.
241
+ * Update the playback rate of the `HTMLmediaElement`.
209
242
  * @param {number} playbackRate
210
243
  */
211
244
  setPlaybackRate(playbackRate) {
212
- this._mediaElement.playbackRate = playbackRate;
245
+ const mediaElement = this._mediaElementRef.getValue();
246
+ if (mediaElement === null) {
247
+ return;
248
+ }
249
+ mediaElement.playbackRate = playbackRate;
213
250
  }
214
251
  /**
215
- * Returns the current `readyState` advertised by the `HTMLMediaElement`.
252
+ * Returns the current `readyState` advertised by the `HTMLmediaElement`.
216
253
  * @returns {number}
217
254
  */
218
255
  getReadyState() {
219
- return this._mediaElement.readyState;
256
+ var _a, _b;
257
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.readyState) !== null && _b !== void 0 ? _b : this._observationRef.getValue().readyState);
220
258
  }
221
259
  /**
222
260
  * Returns an `IReadOnlySharedReference` storing the last playback observation
@@ -266,12 +304,12 @@ export default class PlaybackObserver {
266
304
  deriveReadOnlyObserver(transform) {
267
305
  return generateReadOnlyObserver(this, transform, this._canceller.signal);
268
306
  }
269
- _actuallySetCurrentTime(time, isInternal) {
307
+ _actuallySetCurrentTime(mediaElement, time, isInternal) {
270
308
  log.info("media", "Actually seeking.", { time, isInternal });
271
309
  if (isInternal) {
272
310
  this._internalSeeksIncoming.push(time);
273
311
  }
274
- this._mediaElement.currentTime = time;
312
+ mediaElement.currentTime = time;
275
313
  }
276
314
  /**
277
315
  * Creates the `IReadOnlySharedReference` that will generate playback
@@ -282,50 +320,29 @@ export default class PlaybackObserver {
282
320
  if (this._observationRef !== undefined) {
283
321
  return this._observationRef;
284
322
  }
285
- const { SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE, } = config.getCurrent();
286
323
  const returnedSharedReference = new SharedReference(this._getCurrentObservation("init"), this._canceller.signal);
287
- let interval;
288
- if (this._lowLatencyMode) {
289
- interval = SAMPLING_INTERVAL_LOW_LATENCY;
290
- }
291
- else if (this._withMediaSource) {
292
- interval = SAMPLING_INTERVAL_MEDIASOURCE;
293
- }
294
- else {
295
- interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
324
+ this._restartInterval();
325
+ const mediaElement = this._mediaElementRef.getValue();
326
+ if (mediaElement !== null) {
327
+ this._registerMediaElementEvents(mediaElement);
296
328
  }
297
- const onInterval = () => {
298
- this._generateObservationForEvent("timeupdate");
299
- };
300
- let intervalId = setInterval(onInterval, interval);
301
- SCANNED_MEDIA_ELEMENTS_EVENTS.map((eventName) => {
302
- const onMediaEvent = () => {
303
- restartInterval();
304
- this._generateObservationForEvent(eventName);
305
- };
306
- this._mediaElement.addEventListener(eventName, onMediaEvent);
307
- this._canceller.signal.register(() => {
308
- this._mediaElement.removeEventListener(eventName, onMediaEvent);
309
- });
310
- });
311
329
  this._canceller.signal.register(() => {
312
- clearInterval(intervalId);
330
+ if (this._observationIntervalId !== null) {
331
+ clearInterval(this._observationIntervalId);
332
+ }
313
333
  returnedSharedReference.finish();
314
334
  });
315
335
  return returnedSharedReference;
316
- function restartInterval() {
317
- clearInterval(intervalId);
318
- intervalId = setInterval(onInterval, interval);
319
- }
320
336
  }
321
337
  _getCurrentObservation(event) {
322
338
  var _a, _b, _c, _d;
323
339
  /** Actual event emitted through an observation. */
324
340
  let tmpEvt = event;
341
+ const mediaElement = this._mediaElementRef.getValue();
325
342
  // NOTE: `this._observationRef` may be `undefined` because we might here be
326
343
  // called in the constructor when that property is not yet set.
327
344
  const previousObservation = this._observationRef === undefined
328
- ? getInitialObservation(this._mediaElement)
345
+ ? getInitialObservation(mediaElement)
329
346
  : this._observationRef.getValue();
330
347
  /**
331
348
  * If `true`, there is a seek operation ongoing but it was done from the
@@ -335,7 +352,7 @@ export default class PlaybackObserver {
335
352
  /** If set, the position for which we plan to seek to as soon as possible. */
336
353
  let pendingPosition = (_b = (_a = this._pendingSeek) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : null;
337
354
  /** Initially-polled playback observation, before adjustments. */
338
- const mediaTimings = getMediaInfos(this._mediaElement);
355
+ const mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
339
356
  const { buffered, readyState, position, seeking } = mediaTimings;
340
357
  if (tmpEvt === "seeking") {
341
358
  // We just began seeking.
@@ -466,6 +483,50 @@ export default class PlaybackObserver {
466
483
  }
467
484
  this._observationRef.setValue(newObservation);
468
485
  }
486
+ _restartInterval() {
487
+ const { SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE, } = config.getCurrent();
488
+ let interval;
489
+ if (this._lowLatencyMode) {
490
+ interval = SAMPLING_INTERVAL_LOW_LATENCY;
491
+ }
492
+ else if (this._withMediaSource) {
493
+ interval = SAMPLING_INTERVAL_MEDIASOURCE;
494
+ }
495
+ else {
496
+ interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
497
+ }
498
+ if (this._observationIntervalId !== null) {
499
+ clearInterval(this._observationIntervalId);
500
+ }
501
+ this._observationIntervalId = setInterval(() => this._generateObservationForEvent("timeupdate"), interval);
502
+ }
503
+ _registerMediaElementEvents(mediaElement) {
504
+ SCANNED_MEDIA_ELEMENTS_EVENTS.map((eventName) => {
505
+ const onMediaEvent = () => {
506
+ this._restartInterval();
507
+ this._generateObservationForEvent(eventName);
508
+ };
509
+ mediaElement.addEventListener(eventName, onMediaEvent);
510
+ this._canceller.signal.register(() => {
511
+ mediaElement.removeEventListener(eventName, onMediaEvent);
512
+ });
513
+ });
514
+ }
515
+ _registerLoadedMetadataEvent(mediaElement) {
516
+ const loadedmetadataCb = this._onLoadedMetadataEvent.bind(this);
517
+ mediaElement.addEventListener("loadedmetadata", loadedmetadataCb);
518
+ this._canceller.signal.register(() => {
519
+ mediaElement.removeEventListener("loadedmetadata", loadedmetadataCb);
520
+ });
521
+ }
522
+ _onLoadedMetadataEvent() {
523
+ const mediaElement = this._mediaElementRef.getValue();
524
+ if (mediaElement !== null && this._pendingSeek !== null && !this._isSeekBlocked) {
525
+ const { position: positionToSeekTo, isInternal } = this._pendingSeek;
526
+ this._pendingSeek = null;
527
+ this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
528
+ }
529
+ }
469
530
  }
470
531
  /**
471
532
  * Returns the amount of time in seconds the buffer should have ahead of the
@@ -507,9 +568,28 @@ function hasLoadedUntilTheEnd(currentTime, currentRange, ended, duration, lowLat
507
568
  }
508
569
  return currentRange !== null && duration - currentRange.end <= REBUFFERING_GAP[suffix];
509
570
  }
571
+ /**
572
+ * Get polled media metrics for when the `HTMLMediaElement` is not yet "attached"
573
+ * to the `PlaybackObserver`.
574
+ *
575
+ * Those metrics actually corresponds to an idle media element.
576
+ * @returns {Object}
577
+ */
578
+ function getEmptyMediaInfo() {
579
+ return {
580
+ buffered: new ManualTimeRanges(),
581
+ position: 0,
582
+ duration: NaN,
583
+ ended: false,
584
+ paused: true,
585
+ playbackRate: 1,
586
+ readyState: 0,
587
+ seeking: false,
588
+ };
589
+ }
510
590
  /**
511
591
  * Get basic playback information.
512
- * @param {HTMLMediaElement} mediaElement
592
+ * @param {HTMLmediaElement} mediaElement
513
593
  * @returns {Object}
514
594
  */
515
595
  function getMediaInfos(mediaElement) {
@@ -738,7 +818,7 @@ function prettyPrintBuffered(buffered, currentTime) {
738
818
  * @returns {Object}
739
819
  */
740
820
  function getInitialObservation(mediaElement) {
741
- const mediaTimings = getMediaInfos(mediaElement);
821
+ const mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
742
822
  return objectAssign(mediaTimings, {
743
823
  rebuffering: null,
744
824
  event: "init",
@@ -1,11 +1,11 @@
1
- import type { IUpdatePlaybackRateCoreMessage } from "../core/types";
1
+ import type { IUpdatePlaybackRateWorkerMessage } from "../multithread_types";
2
2
  import type { ITrackType } from "../public_types";
3
3
  import type { IRange } from "../utils/ranges";
4
4
  import type { IReadOnlySharedReference } from "../utils/reference";
5
5
  import type { CancellationSignal } from "../utils/task_canceller";
6
6
  import type { IFreezingStatus, IReadOnlyPlaybackObserver, IRebufferingStatus } from "./types";
7
7
  import type ObservationPosition from "./utils/observation_position";
8
- export interface ICorePlaybackObservation {
8
+ export interface IWorkerPlaybackObservation {
9
9
  /**
10
10
  * Information on whether the media element was paused at the time of the
11
11
  * Observation.
@@ -64,22 +64,22 @@ export interface IPausedPlaybackObservation {
64
64
  */
65
65
  pending: boolean | undefined;
66
66
  }
67
- export default class CorePlaybackObserver implements IReadOnlyPlaybackObserver<ICorePlaybackObservation> {
67
+ export default class WorkerPlaybackObserver implements IReadOnlyPlaybackObserver<IWorkerPlaybackObservation> {
68
68
  private _src;
69
69
  private _cancelSignal;
70
70
  private _messageSender;
71
71
  private _contentId;
72
- constructor(src: IReadOnlySharedReference<ICorePlaybackObservation>, contentId: string, sendMessage: (msg: IUpdatePlaybackRateCoreMessage) => void, cancellationSignal: CancellationSignal);
72
+ constructor(src: IReadOnlySharedReference<IWorkerPlaybackObservation>, contentId: string, sendMessage: (msg: IUpdatePlaybackRateWorkerMessage) => void, cancellationSignal: CancellationSignal);
73
73
  getCurrentTime(): number | undefined;
74
74
  getReadyState(): number | undefined;
75
75
  getIsPaused(): boolean | undefined;
76
- getReference(): IReadOnlySharedReference<ICorePlaybackObservation>;
76
+ getReference(): IReadOnlySharedReference<IWorkerPlaybackObservation>;
77
77
  setPlaybackRate(playbackRate: number): void;
78
78
  getPlaybackRate(): number | undefined;
79
- listen(cb: (observation: ICorePlaybackObservation, stopListening: () => void) => void, params: {
79
+ listen(cb: (observation: IWorkerPlaybackObservation, stopListening: () => void) => void, params: {
80
80
  includeLastObservation?: boolean | undefined;
81
81
  clearSignal: CancellationSignal;
82
82
  }): void;
83
- deriveReadOnlyObserver<TDest>(transform: (observationRef: IReadOnlySharedReference<ICorePlaybackObservation>, cancellationSignal: CancellationSignal) => IReadOnlySharedReference<TDest>): IReadOnlyPlaybackObserver<TDest>;
83
+ deriveReadOnlyObserver<TDest>(transform: (observationRef: IReadOnlySharedReference<IWorkerPlaybackObservation>, cancellationSignal: CancellationSignal) => IReadOnlySharedReference<TDest>): IReadOnlyPlaybackObserver<TDest>;
84
84
  }
85
- //# sourceMappingURL=core_playback_observer.d.ts.map
85
+ //# sourceMappingURL=worker_playback_observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_playback_observer.d.ts","sourceRoot":"","sources":["../../../src/playback_observer/worker_playback_observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,mBAAmB,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,MAAM,EAAE,0BAA0B,CAAC;IACnC;;;OAGG;IACH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;;OAQG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,sBACnB,YAAW,yBAAyB,CAAC,0BAA0B,CAAC;IAEhE,OAAO,CAAC,IAAI,CAAuD;IACnE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,UAAU,CAAS;gBAGzB,GAAG,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,EACzD,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,CAAC,GAAG,EAAE,gCAAgC,KAAK,IAAI,EAC5D,kBAAkB,EAAE,kBAAkB;IAQjC,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,WAAW,IAAI,OAAO,GAAG,SAAS;IAIlC,YAAY,IAAI,wBAAwB,CAAC,0BAA0B,CAAC;IAIpE,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ3C,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC,MAAM,CACX,EAAE,EAAE,CAAC,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,IAAI,KAAK,IAAI,EAChF,MAAM,EAAE;QACN,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7C,WAAW,EAAE,kBAAkB,CAAC;KACjC,GACA,IAAI;IAWA,sBAAsB,CAAC,KAAK,EACjC,SAAS,EAAE,CACT,cAAc,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,EACpE,kBAAkB,EAAE,kBAAkB,KACnC,wBAAwB,CAAC,KAAK,CAAC,GACnC,yBAAyB,CAAC,KAAK,CAAC;CAGpC"}
@@ -1,5 +1,5 @@
1
1
  import generateReadOnlyObserver from "./utils/generate_read_only_observer";
2
- export default class CorePlaybackObserver {
2
+ export default class WorkerPlaybackObserver {
3
3
  constructor(src, contentId, sendMessage, cancellationSignal) {
4
4
  this._src = src;
5
5
  this._contentId = contentId;
@@ -20,7 +20,7 @@ export default class CorePlaybackObserver {
20
20
  }
21
21
  setPlaybackRate(playbackRate) {
22
22
  this._messageSender({
23
- type: "update-playback-rate" /* CoreMessageType.UpdatePlaybackRate */,
23
+ type: "update-playback-rate" /* WorkerMessageType.UpdatePlaybackRate */,
24
24
  contentId: this._contentId,
25
25
  value: playbackRate,
26
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAgBV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAUlB,MAAM,CAAC,OAAO,WAAW,gBAAgB,EAAE,iBAAiB,GAAG,mBAAmB,CA2XjF"}
1
+ {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/smooth/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,KAAK,EAgBV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAUlB,MAAM,CAAC,OAAO,WAAW,gBAAgB,EAAE,iBAAiB,GAAG,mBAAmB,CA+XjF"}
@@ -17,8 +17,6 @@ import log from "../../log";
17
17
  import Manifest from "../../manifest/classes";
18
18
  import { getMDAT } from "../../parsers/containers/isobmff";
19
19
  import createSmoothManifestParser from "../../parsers/manifest/smooth";
20
- import globalScope from "../../utils/global_scope";
21
- import isNullOrUndefined from "../../utils/is_null_or_undefined";
22
20
  import request from "../../utils/request";
23
21
  import { strToUtf8, utf8ToStr } from "../../utils/string_parsing";
24
22
  import addQueryString from "../utils/add_query_string";
@@ -42,7 +40,9 @@ export default function (transportOptions) {
42
40
  var _a;
43
41
  const url = (_a = manifestData.url) !== null && _a !== void 0 ? _a : parserOptions.originalUrl;
44
42
  const { receivedTime: manifestReceivedTime, responseData } = manifestData;
45
- const documentData = getManifestAsString(responseData);
43
+ const documentData = typeof responseData === "string"
44
+ ? new DOMParser().parseFromString(responseData, "text/xml")
45
+ : responseData; // TODO find a way to check if Document?
46
46
  const parserResult = smoothManifestParser(documentData, url, manifestReceivedTime);
47
47
  const manifest = new Manifest(parserResult, {
48
48
  representationFilter: transportOptions.representationFilter,
@@ -334,25 +334,3 @@ export default function (transportOptions) {
334
334
  },
335
335
  };
336
336
  }
337
- /**
338
- * Try to convert a Manifest from an unknown format to a JS string format.
339
- *
340
- * Throws if the format cannot be converted.
341
- * @param {*} manifestSrc
342
- * @returns {Array.<Object | string>}
343
- */
344
- function getManifestAsString(manifestSrc) {
345
- if (manifestSrc instanceof ArrayBuffer) {
346
- return utf8ToStr(new Uint8Array(manifestSrc));
347
- }
348
- else if (typeof manifestSrc === "string") {
349
- return manifestSrc;
350
- }
351
- else if (!isNullOrUndefined(globalScope.Document) &&
352
- manifestSrc instanceof globalScope.Document) {
353
- return manifestSrc.documentElement.outerHTML;
354
- }
355
- else {
356
- throw new Error("Smooth Manifest Parser: Unrecognized Manifest format");
357
- }
358
- }
@@ -2,65 +2,5 @@
2
2
  * This file is the entry point of the worker part of the RxPlayer, only relied
3
3
  * on when running in a multithread mode.
4
4
  */
5
- import initializeCoreEntry from "./core/entry";
6
- import log from "./experimental/tools/mediaCapabilitiesProber/log";
7
- import features from "./features";
8
- import Manifest from "./manifest/classes";
9
- import DashJsParser from "./parsers/manifest/dash/js-parser";
10
- import DashWasmParser from "./parsers/manifest/dash/wasm-parser";
11
- import createDashPipelines from "./transports/dash";
12
- import globalScope from "./utils/global_scope";
13
- // Initialize Manually a `DashWasmParser` and add the feature.
14
- // TODO allow worker-side feature-switching? Not sure how
15
- const dashWasmParser = new DashWasmParser();
16
- features.dashParsers.wasm = dashWasmParser;
17
- features.dashParsers.js = DashJsParser;
18
- features.transports.dash = createDashPipelines;
19
- globalScope.onmessageerror = (_msg) => {
20
- log.error("Core", "Error when receiving message from main thread.");
21
- };
22
- initializeCoreEntry((handler) => {
23
- onmessage = handler;
24
- }, sendMessage);
25
- /**
26
- * Perform a `postMessage` to main thread with the given message.
27
- * Arguments follow the `postMessage` API.
28
- * @param {Object} msg
29
- * @param {Array.<Object>} [transferables]
30
- */
31
- function sendMessage(msg, transferables) {
32
- updateMessageFormat(msg);
33
- if (msg.type !== "log" /* CoreMessageType.LogMessage */) {
34
- log.debug("M<--C", "Sending message from worker", { name: msg.type });
35
- }
36
- if (transferables === undefined) {
37
- postMessage(msg);
38
- }
39
- else {
40
- // TypeScript made a mistake here, and 2busy2fix
41
- postMessage(msg, transferables);
42
- }
43
- }
44
- /**
45
- * Ensure that we're sending data that can be serialized, as this is a
46
- * requirement for the `postMessage` browser API.
47
- *
48
- * If necessary, mutations are done in place.
49
- * @param {Object} msg
50
- */
51
- function updateMessageFormat(msg) {
52
- if (msg.type === "manifest-ready" /* CoreMessageType.ManifestReady */ ||
53
- msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
54
- if (msg.value.manifest instanceof Manifest) {
55
- msg.value.manifest = msg.value.manifest.getMetadataSnapshot();
56
- if (msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
57
- // Remove `periods` key to reduce cost of an unnecessary manifest
58
- // clone.
59
- msg.value.manifest.periods = [];
60
- }
61
- }
62
- else {
63
- log.warn("Core", "the Manifest instance should be communicated to `sendMessage`.");
64
- }
65
- }
66
- }
5
+ import initializeWorkerMain from "./core/main/worker";
6
+ initializeWorkerMain();
Binary file