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
@@ -17,6 +17,7 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  var is_seeking_approximate_1 = require("../compat/is_seeking_approximate");
19
19
  var config_1 = require("../config");
20
+ var manual_time_ranges_1 = require("../core/segment_sinks/implementations/utils/manual_time_ranges");
20
21
  var log_1 = require("../log");
21
22
  var monotonic_timestamp_1 = require("../utils/monotonic_timestamp");
22
23
  var noop_1 = require("../utils/noop");
@@ -58,35 +59,62 @@ var PlaybackObserver = /** @class */ (function () {
58
59
  * Create a new `PlaybackObserver`, which allows to produce new "playback
59
60
  * observations" on various media events and intervals.
60
61
  *
62
+ * Once a `PlaybackObserver` is created, you will want to "attach" the
63
+ * media element to it through the `attachMediaElement` method once that
64
+ * element is ready to play your content.
65
+ *
61
66
  * Note that creating a `PlaybackObserver` lead to the usage of resources,
62
67
  * such as event listeners which will only be freed once the `stop` method is
63
68
  * called.
64
- * @param {HTMLMediaElement} mediaElement
65
69
  * @param {Object} options
66
70
  */
67
- function PlaybackObserver(mediaElement, options) {
71
+ function PlaybackObserver(options) {
68
72
  var _this = this;
69
73
  this._internalSeeksIncoming = [];
70
- this._mediaElement = mediaElement;
74
+ this._mediaElementRef = new reference_1.default(null);
71
75
  this._withMediaSource = options.withMediaSource;
72
76
  this._lowLatencyMode = options.lowLatencyMode;
73
77
  this._canceller = new task_canceller_1.default();
74
- this._observationRef = this._createSharedReference();
75
78
  this._expectedSeekingPosition = null;
76
79
  this._pendingSeek = null;
77
80
  this._isSeekBlocked = false;
78
- var onLoadedMetadata = function () {
79
- if (_this._pendingSeek !== null && !_this._isSeekBlocked) {
80
- var _a = _this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
81
- _this._pendingSeek = null;
82
- _this._actuallySetCurrentTime(positionToSeekTo, isInternal);
83
- }
84
- };
85
- mediaElement.addEventListener("loadedmetadata", onLoadedMetadata);
81
+ this._observationIntervalId = null;
82
+ this._observationRef = this._createSharedReference();
86
83
  this._canceller.signal.register(function () {
87
- mediaElement.removeEventListener("loadedmetadata", onLoadedMetadata);
84
+ _this._mediaElementRef.finish();
88
85
  });
89
86
  }
87
+ /**
88
+ * "Link" the actual `HTMLMediaElement` to this `PlaybackObserver`.
89
+ *
90
+ * This is done in a step separate from the constructor to allow complex
91
+ * situations where you want to inialize the polling logic before the media
92
+ * element is ready to play your content (e.g. when pre-loading the next
93
+ * content).
94
+ *
95
+ * @param {HTMLMediaElement} mediaElement - The `HTMLMediaElement` on which
96
+ * the content plays.
97
+ */
98
+ PlaybackObserver.prototype.attachMediaElement = function (mediaElement) {
99
+ var prevMediaElement = this._mediaElementRef.getValue();
100
+ if (prevMediaElement !== null) {
101
+ throw new Error("A media element was already attached to this PlaybackObserver");
102
+ }
103
+ this._mediaElementRef.setValue(mediaElement);
104
+ if (this._canceller.isUsed()) {
105
+ return;
106
+ }
107
+ this._registerLoadedMetadataEvent(mediaElement);
108
+ this._restartInterval();
109
+ this._registerMediaElementEvents(mediaElement);
110
+ this._generateObservationForEvent("init");
111
+ if (this._canceller.isUsed()) {
112
+ return;
113
+ }
114
+ if (mediaElement.readyState >= 1) {
115
+ this._onLoadedMetadataEvent();
116
+ }
117
+ };
90
118
  /**
91
119
  * Stop the `PlaybackObserver` from emitting playback observations and free all
92
120
  * resources reserved to emitting them such as event listeners and intervals.
@@ -105,24 +133,27 @@ var PlaybackObserver = /** @class */ (function () {
105
133
  * @returns {number}
106
134
  */
107
135
  PlaybackObserver.prototype.getCurrentTime = function () {
108
- return this._mediaElement.currentTime;
136
+ var _a, _b;
137
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.currentTime) !== null && _b !== void 0 ? _b : this._observationRef.getValue().position.getPolled());
109
138
  };
110
139
  /**
111
140
  * Returns the current playback rate advertised by the `HTMLMediaElement`.
112
- * @returns {number}
141
+ * @returns {number|undefined}
113
142
  */
114
143
  PlaybackObserver.prototype.getPlaybackRate = function () {
115
- return this._mediaElement.playbackRate;
144
+ var _a, _b;
145
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.playbackRate) !== null && _b !== void 0 ? _b : this._observationRef.getValue().playbackRate);
116
146
  };
117
147
  /**
118
148
  * Returns the current `paused` status advertised by the `HTMLMediaElement`.
119
149
  *
120
150
  * Use this instead of the same status emitted on an observation when you want
121
151
  * to be sure you're using the current value.
122
- * @returns {boolean}
152
+ * @returns {boolean|undefined}
123
153
  */
124
154
  PlaybackObserver.prototype.getIsPaused = function () {
125
- return this._mediaElement.paused;
155
+ var _a, _b;
156
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.paused) !== null && _b !== void 0 ? _b : this._observationRef.getValue().paused);
126
157
  };
127
158
  /**
128
159
  * Prevent seeking operations from being performed from inside the
@@ -146,10 +177,13 @@ var PlaybackObserver = /** @class */ (function () {
146
177
  PlaybackObserver.prototype.unblockSeeking = function () {
147
178
  if (this._isSeekBlocked) {
148
179
  this._isSeekBlocked = false;
149
- if (this._pendingSeek !== null && this._mediaElement.readyState >= 1) {
180
+ var mediaElement = this._mediaElementRef.getValue();
181
+ if (mediaElement !== null &&
182
+ mediaElement.readyState >= 1 &&
183
+ this._pendingSeek !== null) {
150
184
  var _a = this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
151
185
  this._pendingSeek = null;
152
- this._actuallySetCurrentTime(positionToSeekTo, isInternal);
186
+ this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
153
187
  }
154
188
  }
155
189
  };
@@ -197,30 +231,34 @@ var PlaybackObserver = /** @class */ (function () {
197
231
  */
198
232
  PlaybackObserver.prototype.setCurrentTime = function (time, isInternal) {
199
233
  if (isInternal === void 0) { isInternal = true; }
200
- if (!this._isSeekBlocked && this._mediaElement.readyState >= 1) {
201
- this._actuallySetCurrentTime(time, isInternal);
234
+ var mediaElement = this._mediaElementRef.getValue();
235
+ if (mediaElement !== null && !this._isSeekBlocked && mediaElement.readyState >= 1) {
236
+ this._actuallySetCurrentTime(mediaElement, time, isInternal);
202
237
  }
203
238
  else {
204
239
  this._pendingSeek = { position: time, isInternal: isInternal };
205
240
  this._internalSeeksIncoming = [];
206
- if (!this._isSeekBlocked) {
207
- this._generateObservationForEvent("manual");
208
- }
241
+ this._generateObservationForEvent("manual");
209
242
  }
210
243
  };
211
244
  /**
212
- * Update the playback rate of the `HTMLMediaElement`.
245
+ * Update the playback rate of the `HTMLmediaElement`.
213
246
  * @param {number} playbackRate
214
247
  */
215
248
  PlaybackObserver.prototype.setPlaybackRate = function (playbackRate) {
216
- this._mediaElement.playbackRate = playbackRate;
249
+ var mediaElement = this._mediaElementRef.getValue();
250
+ if (mediaElement === null) {
251
+ return;
252
+ }
253
+ mediaElement.playbackRate = playbackRate;
217
254
  };
218
255
  /**
219
- * Returns the current `readyState` advertised by the `HTMLMediaElement`.
256
+ * Returns the current `readyState` advertised by the `HTMLmediaElement`.
220
257
  * @returns {number}
221
258
  */
222
259
  PlaybackObserver.prototype.getReadyState = function () {
223
- return this._mediaElement.readyState;
260
+ var _a, _b;
261
+ return ((_b = (_a = this._mediaElementRef.getValue()) === null || _a === void 0 ? void 0 : _a.readyState) !== null && _b !== void 0 ? _b : this._observationRef.getValue().readyState);
224
262
  };
225
263
  /**
226
264
  * Returns an `IReadOnlySharedReference` storing the last playback observation
@@ -270,12 +308,12 @@ var PlaybackObserver = /** @class */ (function () {
270
308
  PlaybackObserver.prototype.deriveReadOnlyObserver = function (transform) {
271
309
  return (0, generate_read_only_observer_1.default)(this, transform, this._canceller.signal);
272
310
  };
273
- PlaybackObserver.prototype._actuallySetCurrentTime = function (time, isInternal) {
311
+ PlaybackObserver.prototype._actuallySetCurrentTime = function (mediaElement, time, isInternal) {
274
312
  log_1.default.info("media", "Actually seeking.", { time: time, isInternal: isInternal });
275
313
  if (isInternal) {
276
314
  this._internalSeeksIncoming.push(time);
277
315
  }
278
- this._mediaElement.currentTime = time;
316
+ mediaElement.currentTime = time;
279
317
  };
280
318
  /**
281
319
  * Creates the `IReadOnlySharedReference` that will generate playback
@@ -287,50 +325,29 @@ var PlaybackObserver = /** @class */ (function () {
287
325
  if (this._observationRef !== undefined) {
288
326
  return this._observationRef;
289
327
  }
290
- var _a = config_1.default.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
291
328
  var returnedSharedReference = new reference_1.default(this._getCurrentObservation("init"), this._canceller.signal);
292
- var interval;
293
- if (this._lowLatencyMode) {
294
- interval = SAMPLING_INTERVAL_LOW_LATENCY;
295
- }
296
- else if (this._withMediaSource) {
297
- interval = SAMPLING_INTERVAL_MEDIASOURCE;
329
+ this._restartInterval();
330
+ var mediaElement = this._mediaElementRef.getValue();
331
+ if (mediaElement !== null) {
332
+ this._registerMediaElementEvents(mediaElement);
298
333
  }
299
- else {
300
- interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
301
- }
302
- var onInterval = function () {
303
- _this._generateObservationForEvent("timeupdate");
304
- };
305
- var intervalId = setInterval(onInterval, interval);
306
- SCANNED_MEDIA_ELEMENTS_EVENTS.map(function (eventName) {
307
- var onMediaEvent = function () {
308
- restartInterval();
309
- _this._generateObservationForEvent(eventName);
310
- };
311
- _this._mediaElement.addEventListener(eventName, onMediaEvent);
312
- _this._canceller.signal.register(function () {
313
- _this._mediaElement.removeEventListener(eventName, onMediaEvent);
314
- });
315
- });
316
334
  this._canceller.signal.register(function () {
317
- clearInterval(intervalId);
335
+ if (_this._observationIntervalId !== null) {
336
+ clearInterval(_this._observationIntervalId);
337
+ }
318
338
  returnedSharedReference.finish();
319
339
  });
320
340
  return returnedSharedReference;
321
- function restartInterval() {
322
- clearInterval(intervalId);
323
- intervalId = setInterval(onInterval, interval);
324
- }
325
341
  };
326
342
  PlaybackObserver.prototype._getCurrentObservation = function (event) {
327
343
  var _a, _b, _c, _d;
328
344
  /** Actual event emitted through an observation. */
329
345
  var tmpEvt = event;
346
+ var mediaElement = this._mediaElementRef.getValue();
330
347
  // NOTE: `this._observationRef` may be `undefined` because we might here be
331
348
  // called in the constructor when that property is not yet set.
332
349
  var previousObservation = this._observationRef === undefined
333
- ? getInitialObservation(this._mediaElement)
350
+ ? getInitialObservation(mediaElement)
334
351
  : this._observationRef.getValue();
335
352
  /**
336
353
  * If `true`, there is a seek operation ongoing but it was done from the
@@ -340,7 +357,7 @@ var PlaybackObserver = /** @class */ (function () {
340
357
  /** If set, the position for which we plan to seek to as soon as possible. */
341
358
  var pendingPosition = (_b = (_a = this._pendingSeek) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : null;
342
359
  /** Initially-polled playback observation, before adjustments. */
343
- var mediaTimings = getMediaInfos(this._mediaElement);
360
+ var mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
344
361
  var buffered = mediaTimings.buffered, readyState = mediaTimings.readyState, position = mediaTimings.position, seeking = mediaTimings.seeking;
345
362
  if (tmpEvt === "seeking") {
346
363
  // We just began seeking.
@@ -471,6 +488,52 @@ var PlaybackObserver = /** @class */ (function () {
471
488
  }
472
489
  this._observationRef.setValue(newObservation);
473
490
  };
491
+ PlaybackObserver.prototype._restartInterval = function () {
492
+ var _this = this;
493
+ var _a = config_1.default.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
494
+ var interval;
495
+ if (this._lowLatencyMode) {
496
+ interval = SAMPLING_INTERVAL_LOW_LATENCY;
497
+ }
498
+ else if (this._withMediaSource) {
499
+ interval = SAMPLING_INTERVAL_MEDIASOURCE;
500
+ }
501
+ else {
502
+ interval = SAMPLING_INTERVAL_NO_MEDIASOURCE;
503
+ }
504
+ if (this._observationIntervalId !== null) {
505
+ clearInterval(this._observationIntervalId);
506
+ }
507
+ this._observationIntervalId = setInterval(function () { return _this._generateObservationForEvent("timeupdate"); }, interval);
508
+ };
509
+ PlaybackObserver.prototype._registerMediaElementEvents = function (mediaElement) {
510
+ var _this = this;
511
+ SCANNED_MEDIA_ELEMENTS_EVENTS.map(function (eventName) {
512
+ var onMediaEvent = function () {
513
+ _this._restartInterval();
514
+ _this._generateObservationForEvent(eventName);
515
+ };
516
+ mediaElement.addEventListener(eventName, onMediaEvent);
517
+ _this._canceller.signal.register(function () {
518
+ mediaElement.removeEventListener(eventName, onMediaEvent);
519
+ });
520
+ });
521
+ };
522
+ PlaybackObserver.prototype._registerLoadedMetadataEvent = function (mediaElement) {
523
+ var loadedmetadataCb = this._onLoadedMetadataEvent.bind(this);
524
+ mediaElement.addEventListener("loadedmetadata", loadedmetadataCb);
525
+ this._canceller.signal.register(function () {
526
+ mediaElement.removeEventListener("loadedmetadata", loadedmetadataCb);
527
+ });
528
+ };
529
+ PlaybackObserver.prototype._onLoadedMetadataEvent = function () {
530
+ var mediaElement = this._mediaElementRef.getValue();
531
+ if (mediaElement !== null && this._pendingSeek !== null && !this._isSeekBlocked) {
532
+ var _a = this._pendingSeek, positionToSeekTo = _a.position, isInternal = _a.isInternal;
533
+ this._pendingSeek = null;
534
+ this._actuallySetCurrentTime(mediaElement, positionToSeekTo, isInternal);
535
+ }
536
+ };
474
537
  return PlaybackObserver;
475
538
  }());
476
539
  exports.default = PlaybackObserver;
@@ -514,9 +577,28 @@ function hasLoadedUntilTheEnd(currentTime, currentRange, ended, duration, lowLat
514
577
  }
515
578
  return currentRange !== null && duration - currentRange.end <= REBUFFERING_GAP[suffix];
516
579
  }
580
+ /**
581
+ * Get polled media metrics for when the `HTMLMediaElement` is not yet "attached"
582
+ * to the `PlaybackObserver`.
583
+ *
584
+ * Those metrics actually corresponds to an idle media element.
585
+ * @returns {Object}
586
+ */
587
+ function getEmptyMediaInfo() {
588
+ return {
589
+ buffered: new manual_time_ranges_1.default(),
590
+ position: 0,
591
+ duration: NaN,
592
+ ended: false,
593
+ paused: true,
594
+ playbackRate: 1,
595
+ readyState: 0,
596
+ seeking: false,
597
+ };
598
+ }
517
599
  /**
518
600
  * Get basic playback information.
519
- * @param {HTMLMediaElement} mediaElement
601
+ * @param {HTMLmediaElement} mediaElement
520
602
  * @returns {Object}
521
603
  */
522
604
  function getMediaInfos(mediaElement) {
@@ -746,7 +828,7 @@ function prettyPrintBuffered(buffered, currentTime) {
746
828
  * @returns {Object}
747
829
  */
748
830
  function getInitialObservation(mediaElement) {
749
- var mediaTimings = getMediaInfos(mediaElement);
831
+ var mediaTimings = mediaElement === null ? getEmptyMediaInfo() : getMediaInfos(mediaElement);
750
832
  return (0, object_assign_1.default)(mediaTimings, {
751
833
  rebuffering: null,
752
834
  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,36 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var generate_read_only_observer_1 = require("./utils/generate_read_only_observer");
4
- var CorePlaybackObserver = /** @class */ (function () {
5
- function CorePlaybackObserver(src, contentId, sendMessage, cancellationSignal) {
4
+ var WorkerPlaybackObserver = /** @class */ (function () {
5
+ function WorkerPlaybackObserver(src, contentId, sendMessage, cancellationSignal) {
6
6
  this._src = src;
7
7
  this._contentId = contentId;
8
8
  this._messageSender = sendMessage;
9
9
  this._cancelSignal = cancellationSignal;
10
10
  }
11
- CorePlaybackObserver.prototype.getCurrentTime = function () {
11
+ WorkerPlaybackObserver.prototype.getCurrentTime = function () {
12
12
  return undefined;
13
13
  };
14
- CorePlaybackObserver.prototype.getReadyState = function () {
14
+ WorkerPlaybackObserver.prototype.getReadyState = function () {
15
15
  return undefined;
16
16
  };
17
- CorePlaybackObserver.prototype.getIsPaused = function () {
17
+ WorkerPlaybackObserver.prototype.getIsPaused = function () {
18
18
  return undefined;
19
19
  };
20
- CorePlaybackObserver.prototype.getReference = function () {
20
+ WorkerPlaybackObserver.prototype.getReference = function () {
21
21
  return this._src;
22
22
  };
23
- CorePlaybackObserver.prototype.setPlaybackRate = function (playbackRate) {
23
+ WorkerPlaybackObserver.prototype.setPlaybackRate = function (playbackRate) {
24
24
  this._messageSender({
25
- type: "update-playback-rate" /* CoreMessageType.UpdatePlaybackRate */,
25
+ type: "update-playback-rate" /* WorkerMessageType.UpdatePlaybackRate */,
26
26
  contentId: this._contentId,
27
27
  value: playbackRate,
28
28
  });
29
29
  };
30
- CorePlaybackObserver.prototype.getPlaybackRate = function () {
30
+ WorkerPlaybackObserver.prototype.getPlaybackRate = function () {
31
31
  return undefined;
32
32
  };
33
- CorePlaybackObserver.prototype.listen = function (cb, params) {
33
+ WorkerPlaybackObserver.prototype.listen = function (cb, params) {
34
34
  if (this._cancelSignal.isCancelled() || params.clearSignal.isCancelled()) {
35
35
  return;
36
36
  }
@@ -39,9 +39,9 @@ var CorePlaybackObserver = /** @class */ (function () {
39
39
  emitCurrentValue: params.includeLastObservation,
40
40
  });
41
41
  };
42
- CorePlaybackObserver.prototype.deriveReadOnlyObserver = function (transform) {
42
+ WorkerPlaybackObserver.prototype.deriveReadOnlyObserver = function (transform) {
43
43
  return (0, generate_read_only_observer_1.default)(this, transform, this._cancelSignal);
44
44
  };
45
- return CorePlaybackObserver;
45
+ return WorkerPlaybackObserver;
46
46
  }());
47
- exports.default = CorePlaybackObserver;
47
+ exports.default = WorkerPlaybackObserver;
@@ -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"}
@@ -31,8 +31,6 @@ var log_1 = require("../../log");
31
31
  var classes_1 = require("../../manifest/classes");
32
32
  var isobmff_1 = require("../../parsers/containers/isobmff");
33
33
  var smooth_1 = require("../../parsers/manifest/smooth");
34
- var global_scope_1 = require("../../utils/global_scope");
35
- var is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
36
34
  var request_1 = require("../../utils/request");
37
35
  var string_parsing_1 = require("../../utils/string_parsing");
38
36
  var add_query_string_1 = require("../utils/add_query_string");
@@ -56,7 +54,9 @@ function default_1(transportOptions) {
56
54
  var _a;
57
55
  var url = (_a = manifestData.url) !== null && _a !== void 0 ? _a : parserOptions.originalUrl;
58
56
  var manifestReceivedTime = manifestData.receivedTime, responseData = manifestData.responseData;
59
- var documentData = getManifestAsString(responseData);
57
+ var documentData = typeof responseData === "string"
58
+ ? new DOMParser().parseFromString(responseData, "text/xml")
59
+ : responseData; // TODO find a way to check if Document?
60
60
  var parserResult = smoothManifestParser(documentData, url, manifestReceivedTime);
61
61
  var manifest = new classes_1.default(parserResult, {
62
62
  representationFilter: transportOptions.representationFilter,
@@ -350,25 +350,3 @@ function default_1(transportOptions) {
350
350
  },
351
351
  };
352
352
  }
353
- /**
354
- * Try to convert a Manifest from an unknown format to a JS string format.
355
- *
356
- * Throws if the format cannot be converted.
357
- * @param {*} manifestSrc
358
- * @returns {Array.<Object | string>}
359
- */
360
- function getManifestAsString(manifestSrc) {
361
- if (manifestSrc instanceof ArrayBuffer) {
362
- return (0, string_parsing_1.utf8ToStr)(new Uint8Array(manifestSrc));
363
- }
364
- else if (typeof manifestSrc === "string") {
365
- return manifestSrc;
366
- }
367
- else if (!(0, is_null_or_undefined_1.default)(global_scope_1.default.Document) &&
368
- manifestSrc instanceof global_scope_1.default.Document) {
369
- return manifestSrc.documentElement.outerHTML;
370
- }
371
- else {
372
- throw new Error("Smooth Manifest Parser: Unrecognized Manifest format");
373
- }
374
- }
@@ -4,65 +4,5 @@
4
4
  * on when running in a multithread mode.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- var entry_1 = require("./core/entry");
8
- var log_1 = require("./experimental/tools/mediaCapabilitiesProber/log");
9
- var features_1 = require("./features");
10
- var classes_1 = require("./manifest/classes");
11
- var js_parser_1 = require("./parsers/manifest/dash/js-parser");
12
- var wasm_parser_1 = require("./parsers/manifest/dash/wasm-parser");
13
- var dash_1 = require("./transports/dash");
14
- var global_scope_1 = require("./utils/global_scope");
15
- // Initialize Manually a `DashWasmParser` and add the feature.
16
- // TODO allow worker-side feature-switching? Not sure how
17
- var dashWasmParser = new wasm_parser_1.default();
18
- features_1.default.dashParsers.wasm = dashWasmParser;
19
- features_1.default.dashParsers.js = js_parser_1.default;
20
- features_1.default.transports.dash = dash_1.default;
21
- global_scope_1.default.onmessageerror = function (_msg) {
22
- log_1.default.error("Core", "Error when receiving message from main thread.");
23
- };
24
- (0, entry_1.default)(function (handler) {
25
- onmessage = handler;
26
- }, sendMessage);
27
- /**
28
- * Perform a `postMessage` to main thread with the given message.
29
- * Arguments follow the `postMessage` API.
30
- * @param {Object} msg
31
- * @param {Array.<Object>} [transferables]
32
- */
33
- function sendMessage(msg, transferables) {
34
- updateMessageFormat(msg);
35
- if (msg.type !== "log" /* CoreMessageType.LogMessage */) {
36
- log_1.default.debug("M<--C", "Sending message from worker", { name: msg.type });
37
- }
38
- if (transferables === undefined) {
39
- postMessage(msg);
40
- }
41
- else {
42
- // TypeScript made a mistake here, and 2busy2fix
43
- postMessage(msg, transferables);
44
- }
45
- }
46
- /**
47
- * Ensure that we're sending data that can be serialized, as this is a
48
- * requirement for the `postMessage` browser API.
49
- *
50
- * If necessary, mutations are done in place.
51
- * @param {Object} msg
52
- */
53
- function updateMessageFormat(msg) {
54
- if (msg.type === "manifest-ready" /* CoreMessageType.ManifestReady */ ||
55
- msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
56
- if (msg.value.manifest instanceof classes_1.default) {
57
- msg.value.manifest = msg.value.manifest.getMetadataSnapshot();
58
- if (msg.type === "manifest-update" /* CoreMessageType.ManifestUpdate */) {
59
- // Remove `periods` key to reduce cost of an unnecessary manifest
60
- // clone.
61
- msg.value.manifest.periods = [];
62
- }
63
- }
64
- else {
65
- log_1.default.warn("Core", "the Manifest instance should be communicated to `sendMessage`.");
66
- }
67
- }
68
- }
7
+ var worker_1 = require("./core/main/worker");
8
+ (0, worker_1.default)();
@@ -1 +1 @@
1
- {"version":3,"file":"embedded_dash_wasm.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_dash_wasm.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,aAA0tqV,CAAC;AAChvqV,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,CAAC;AACjD,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"embedded_dash_wasm.d.ts","sourceRoot":"","sources":["../../../src/__GENERATED_CODE/embedded_dash_wasm.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,eAAe,aAA8ssV,CAAC;AACpusV,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,CAAC;AACjD,eAAe,eAAe,CAAC"}