rx-player 4.4.0 → 4.4.1-dev.2025101500

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +52 -113
  3. package/VERSION +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  5. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  6. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  7. package/dist/commonjs/core/entry/FreezeResolver.d.ts.map +1 -0
  8. package/dist/commonjs/core/{main/common → entry}/FreezeResolver.js +3 -3
  9. package/dist/{es2017/core/main/worker → commonjs/core/entry}/content_preparer.d.ts +22 -15
  10. package/dist/commonjs/core/entry/content_preparer.d.ts.map +1 -0
  11. package/dist/commonjs/core/{main/worker → entry}/content_preparer.js +62 -64
  12. package/dist/{es2017/core/main/common → commonjs/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  13. package/dist/commonjs/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  14. package/dist/commonjs/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  15. package/dist/commonjs/core/entry/core_entry.d.ts +36 -0
  16. package/dist/commonjs/core/entry/core_entry.d.ts.map +1 -0
  17. package/dist/commonjs/core/{main/worker/worker_main.js → entry/core_entry.js} +192 -153
  18. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  19. package/dist/commonjs/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  20. package/dist/commonjs/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +22 -22
  21. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  22. package/dist/commonjs/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  23. package/dist/commonjs/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  24. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  25. package/dist/commonjs/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  26. package/dist/commonjs/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  27. package/dist/{es2017/core/main/common → commonjs/core/entry}/get_thumbnail_data.d.ts +3 -3
  28. package/dist/commonjs/core/entry/get_thumbnail_data.d.ts.map +1 -0
  29. package/dist/commonjs/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  30. package/dist/commonjs/core/entry/index.d.ts +5 -0
  31. package/dist/commonjs/core/entry/index.d.ts.map +1 -0
  32. package/dist/commonjs/core/entry/index.js +4 -0
  33. package/dist/{es2017/core/main/common → commonjs/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  34. package/dist/commonjs/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  35. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  36. package/dist/commonjs/core/entry/track_choice_setter.d.ts.map +1 -0
  37. package/dist/commonjs/core/{main/worker → entry}/track_choice_setter.js +4 -4
  38. package/dist/commonjs/core/entry/utils.d.ts +3 -0
  39. package/dist/commonjs/core/entry/utils.d.ts.map +1 -0
  40. package/dist/commonjs/core/entry/utils.js +11 -0
  41. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  42. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +17 -0
  43. package/dist/commonjs/core/types.d.ts +519 -1
  44. package/dist/commonjs/core/types.d.ts.map +1 -1
  45. package/dist/commonjs/core/types.js +1 -0
  46. package/dist/commonjs/experimental/features/local.d.ts.map +1 -1
  47. package/dist/commonjs/experimental/features/local.js +7 -1
  48. package/dist/commonjs/experimental/features/metaplaylist.d.ts.map +1 -1
  49. package/dist/commonjs/experimental/features/metaplaylist.js +7 -1
  50. package/dist/commonjs/experimental/features/multi_thread.d.ts.map +1 -1
  51. package/dist/commonjs/experimental/features/multi_thread.js +6 -2
  52. package/dist/commonjs/features/features_object.js +1 -1
  53. package/dist/commonjs/features/list/dash.d.ts.map +1 -1
  54. package/dist/commonjs/features/list/dash.js +7 -1
  55. package/dist/commonjs/features/list/dash_wasm.d.ts.map +1 -1
  56. package/dist/commonjs/features/list/dash_wasm.js +7 -1
  57. package/dist/commonjs/features/list/media_source_main.d.ts.map +1 -1
  58. package/dist/commonjs/features/list/media_source_main.js +7 -1
  59. package/dist/commonjs/features/list/smooth.d.ts.map +1 -1
  60. package/dist/commonjs/features/list/smooth.js +7 -1
  61. package/dist/commonjs/features/types.d.ts +20 -4
  62. package/dist/commonjs/features/types.d.ts.map +1 -1
  63. package/dist/commonjs/main_thread/api/public_api.d.ts.map +1 -1
  64. package/dist/commonjs/main_thread/api/public_api.js +39 -42
  65. package/dist/commonjs/main_thread/core_interface/base.d.ts +13 -0
  66. package/dist/commonjs/main_thread/core_interface/base.d.ts.map +1 -0
  67. package/dist/commonjs/main_thread/core_interface/base.js +32 -0
  68. package/dist/commonjs/main_thread/core_interface/monothread.d.ts +13 -0
  69. package/dist/commonjs/main_thread/core_interface/monothread.d.ts.map +1 -0
  70. package/dist/commonjs/main_thread/core_interface/monothread.js +56 -0
  71. package/dist/commonjs/main_thread/core_interface/multithread.d.ts +25 -0
  72. package/dist/commonjs/main_thread/core_interface/multithread.d.ts.map +1 -0
  73. package/dist/commonjs/main_thread/core_interface/multithread.js +67 -0
  74. package/dist/commonjs/main_thread/core_interface/types.d.ts +6 -0
  75. package/dist/commonjs/main_thread/core_interface/types.d.ts.map +1 -0
  76. package/dist/commonjs/main_thread/core_interface/types.js +2 -0
  77. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts +166 -108
  78. package/dist/commonjs/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  79. package/dist/commonjs/main_thread/init/media_source_content_initializer.js +1492 -919
  80. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  81. package/dist/commonjs/main_thread/init/utils/create_core_playback_observer.js +2 -1
  82. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  83. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  84. package/dist/commonjs/main_thread/types.d.ts +537 -0
  85. package/dist/commonjs/main_thread/types.d.ts.map +1 -1
  86. package/dist/commonjs/manifest/utils.d.ts.map +1 -1
  87. package/dist/commonjs/manifest/utils.js +18 -4
  88. package/dist/commonjs/mse/worker_media_source_interface.d.ts +2 -2
  89. package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
  90. package/dist/commonjs/mse/worker_media_source_interface.js +12 -12
  91. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts +1 -1
  92. package/dist/commonjs/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  93. package/dist/commonjs/parsers/manifest/smooth/create_parser.js +31 -27
  94. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  95. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  96. package/dist/commonjs/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  97. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  98. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  99. package/dist/commonjs/parsers/manifest/smooth/parse_protection_node.js +37 -6
  100. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  101. package/dist/commonjs/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  102. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  103. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  104. package/dist/commonjs/parsers/manifest/smooth/utils/reduceChildren.js +28 -5
  105. package/dist/{es2017/playback_observer/worker_playback_observer.d.ts → commonjs/playback_observer/core_playback_observer.d.ts} +8 -8
  106. package/dist/commonjs/playback_observer/core_playback_observer.d.ts.map +1 -0
  107. package/dist/commonjs/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +13 -13
  108. package/dist/commonjs/transports/smooth/pipelines.d.ts.map +1 -1
  109. package/dist/commonjs/transports/smooth/pipelines.js +25 -3
  110. package/dist/commonjs/worker_entry_point.js +62 -2
  111. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  112. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  113. package/dist/es2017/core/{main/common → entry}/FreezeResolver.d.ts +3 -3
  114. package/dist/es2017/core/entry/FreezeResolver.d.ts.map +1 -0
  115. package/dist/es2017/core/{main/common → entry}/FreezeResolver.js +3 -3
  116. package/dist/{commonjs/core/main/worker → es2017/core/entry}/content_preparer.d.ts +22 -15
  117. package/dist/es2017/core/entry/content_preparer.d.ts.map +1 -0
  118. package/dist/es2017/core/{main/worker → entry}/content_preparer.js +53 -55
  119. package/dist/{commonjs/core/main/common → es2017/core/entry}/content_time_boundaries_observer.d.ts +5 -5
  120. package/dist/es2017/core/entry/content_time_boundaries_observer.d.ts.map +1 -0
  121. package/dist/es2017/core/{main/common → entry}/content_time_boundaries_observer.js +6 -6
  122. package/dist/es2017/core/entry/core_entry.d.ts +36 -0
  123. package/dist/es2017/core/entry/core_entry.d.ts.map +1 -0
  124. package/dist/es2017/core/{main/worker/worker_main.js → entry/core_entry.js} +153 -114
  125. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.d.ts → entry/core_text_displayer_interface.d.ts} +11 -11
  126. package/dist/es2017/core/entry/core_text_displayer_interface.d.ts.map +1 -0
  127. package/dist/es2017/core/{main/worker/worker_text_displayer_interface.js → entry/core_text_displayer_interface.js} +10 -10
  128. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.d.ts +6 -6
  129. package/dist/es2017/core/entry/create_content_time_boundaries_observer.d.ts.map +1 -0
  130. package/dist/es2017/core/{main/common → entry}/create_content_time_boundaries_observer.js +1 -1
  131. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.d.ts +4 -4
  132. package/dist/es2017/core/entry/get_buffered_data_per_media_buffer.d.ts.map +1 -0
  133. package/dist/es2017/core/{main/common → entry}/get_buffered_data_per_media_buffer.js +1 -1
  134. package/dist/{commonjs/core/main/common → es2017/core/entry}/get_thumbnail_data.d.ts +3 -3
  135. package/dist/es2017/core/entry/get_thumbnail_data.d.ts.map +1 -0
  136. package/dist/es2017/core/{main/common → entry}/get_thumbnail_data.js +2 -2
  137. package/dist/es2017/core/entry/index.d.ts +5 -0
  138. package/dist/es2017/core/entry/index.d.ts.map +1 -0
  139. package/dist/es2017/core/entry/index.js +2 -0
  140. package/dist/{commonjs/core/main/common → es2017/core/entry}/synchronize_sinks_on_observation.d.ts +2 -2
  141. package/dist/es2017/core/entry/synchronize_sinks_on_observation.d.ts.map +1 -0
  142. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.d.ts +4 -4
  143. package/dist/es2017/core/entry/track_choice_setter.d.ts.map +1 -0
  144. package/dist/es2017/core/{main/worker → entry}/track_choice_setter.js +4 -4
  145. package/dist/es2017/core/entry/utils.d.ts +3 -0
  146. package/dist/es2017/core/entry/utils.d.ts.map +1 -0
  147. package/dist/es2017/core/entry/utils.js +8 -0
  148. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.d.ts.map +1 -1
  149. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +18 -1
  150. package/dist/es2017/core/types.d.ts +519 -1
  151. package/dist/es2017/core/types.d.ts.map +1 -1
  152. package/dist/es2017/core/types.js +1 -0
  153. package/dist/es2017/experimental/features/local.d.ts.map +1 -1
  154. package/dist/es2017/experimental/features/local.js +7 -1
  155. package/dist/es2017/experimental/features/metaplaylist.d.ts.map +1 -1
  156. package/dist/es2017/experimental/features/metaplaylist.js +7 -1
  157. package/dist/es2017/experimental/features/multi_thread.d.ts.map +1 -1
  158. package/dist/es2017/experimental/features/multi_thread.js +6 -2
  159. package/dist/es2017/features/features_object.js +1 -1
  160. package/dist/es2017/features/list/dash.d.ts.map +1 -1
  161. package/dist/es2017/features/list/dash.js +7 -1
  162. package/dist/es2017/features/list/dash_wasm.d.ts.map +1 -1
  163. package/dist/es2017/features/list/dash_wasm.js +7 -1
  164. package/dist/es2017/features/list/media_source_main.d.ts.map +1 -1
  165. package/dist/es2017/features/list/media_source_main.js +7 -1
  166. package/dist/es2017/features/list/smooth.d.ts.map +1 -1
  167. package/dist/es2017/features/list/smooth.js +7 -1
  168. package/dist/es2017/features/types.d.ts +20 -4
  169. package/dist/es2017/features/types.d.ts.map +1 -1
  170. package/dist/es2017/main_thread/api/public_api.d.ts.map +1 -1
  171. package/dist/es2017/main_thread/api/public_api.js +40 -43
  172. package/dist/es2017/main_thread/core_interface/base.d.ts +13 -0
  173. package/dist/es2017/main_thread/core_interface/base.d.ts.map +1 -0
  174. package/dist/es2017/main_thread/core_interface/base.js +28 -0
  175. package/dist/es2017/main_thread/core_interface/monothread.d.ts +13 -0
  176. package/dist/es2017/main_thread/core_interface/monothread.d.ts.map +1 -0
  177. package/dist/es2017/main_thread/core_interface/monothread.js +32 -0
  178. package/dist/es2017/main_thread/core_interface/multithread.d.ts +25 -0
  179. package/dist/es2017/main_thread/core_interface/multithread.d.ts.map +1 -0
  180. package/dist/es2017/main_thread/core_interface/multithread.js +45 -0
  181. package/dist/es2017/main_thread/core_interface/types.d.ts +6 -0
  182. package/dist/es2017/main_thread/core_interface/types.d.ts.map +1 -0
  183. package/dist/es2017/main_thread/core_interface/types.js +1 -0
  184. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts +166 -108
  185. package/dist/es2017/main_thread/init/media_source_content_initializer.d.ts.map +1 -1
  186. package/dist/es2017/main_thread/init/media_source_content_initializer.js +1405 -760
  187. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.d.ts.map +1 -1
  188. package/dist/es2017/main_thread/init/utils/create_core_playback_observer.js +2 -1
  189. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts +1 -1
  190. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  191. package/dist/es2017/main_thread/types.d.ts +537 -0
  192. package/dist/es2017/main_thread/types.d.ts.map +1 -1
  193. package/dist/es2017/manifest/utils.d.ts.map +1 -1
  194. package/dist/es2017/manifest/utils.js +16 -4
  195. package/dist/es2017/mse/worker_media_source_interface.d.ts +2 -2
  196. package/dist/es2017/mse/worker_media_source_interface.d.ts.map +1 -1
  197. package/dist/es2017/mse/worker_media_source_interface.js +12 -12
  198. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts +1 -1
  199. package/dist/es2017/parsers/manifest/smooth/create_parser.d.ts.map +1 -1
  200. package/dist/es2017/parsers/manifest/smooth/create_parser.js +31 -27
  201. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts +3 -2
  202. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.d.ts.map +1 -1
  203. package/dist/es2017/parsers/manifest/smooth/parse_C_nodes.js +16 -7
  204. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts +3 -2
  205. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.d.ts.map +1 -1
  206. package/dist/es2017/parsers/manifest/smooth/parse_protection_node.js +15 -6
  207. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts +1 -1
  208. package/dist/es2017/parsers/manifest/smooth/utils/parseBoolean.d.ts.map +1 -1
  209. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts +3 -2
  210. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.d.ts.map +1 -1
  211. package/dist/es2017/parsers/manifest/smooth/utils/reduceChildren.js +6 -5
  212. package/dist/{commonjs/playback_observer/worker_playback_observer.d.ts → es2017/playback_observer/core_playback_observer.d.ts} +8 -8
  213. package/dist/es2017/playback_observer/core_playback_observer.d.ts.map +1 -0
  214. package/dist/es2017/playback_observer/{worker_playback_observer.js → core_playback_observer.js} +2 -2
  215. package/dist/es2017/transports/smooth/pipelines.d.ts.map +1 -1
  216. package/dist/es2017/transports/smooth/pipelines.js +25 -3
  217. package/dist/es2017/worker_entry_point.js +62 -2
  218. package/dist/rx-player.js +21882 -19021
  219. package/dist/rx-player.min.js +20 -20
  220. package/dist/worker.js +8 -8
  221. package/package.json +1 -1
  222. package/src/README.md +88 -198
  223. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  224. package/src/core/{main/common → entry}/FreezeResolver.ts +7 -7
  225. package/src/core/{main → entry}/README.md +1 -1
  226. package/src/core/{main/worker → entry}/content_preparer.ts +77 -76
  227. package/src/core/{main/common → entry}/content_time_boundaries_observer.ts +10 -10
  228. package/src/core/{main/worker/worker_main.ts → entry/core_entry.ts} +223 -149
  229. package/src/core/{main/worker/worker_text_displayer_interface.ts → entry/core_text_displayer_interface.ts} +26 -26
  230. package/src/core/{main/common → entry}/create_content_time_boundaries_observer.ts +7 -7
  231. package/src/core/{main/common → entry}/get_buffered_data_per_media_buffer.ts +6 -6
  232. package/src/core/{main/common → entry}/get_thumbnail_data.ts +5 -5
  233. package/src/core/entry/index.ts +4 -0
  234. package/src/core/{main/common → entry}/synchronize_sinks_on_observation.ts +2 -2
  235. package/src/core/{main/worker → entry}/track_choice_setter.ts +7 -7
  236. package/src/core/entry/utils.ts +11 -0
  237. package/src/core/stream/orchestrator/stream_orchestrator.ts +26 -1
  238. package/src/core/types.ts +631 -3
  239. package/src/experimental/features/__tests__/local.test.ts +11 -2
  240. package/src/experimental/features/__tests__/metaplaylist.test.ts +11 -2
  241. package/src/experimental/features/__tests__/multi_thread.test.ts +8 -3
  242. package/src/experimental/features/local.ts +7 -1
  243. package/src/experimental/features/metaplaylist.ts +7 -1
  244. package/src/experimental/features/multi_thread.ts +6 -2
  245. package/src/features/features_object.ts +1 -1
  246. package/src/features/list/__tests__/dash.test.ts +12 -3
  247. package/src/features/list/__tests__/smooth.test.ts +11 -2
  248. package/src/features/list/dash.ts +7 -1
  249. package/src/features/list/dash_wasm.ts +7 -1
  250. package/src/features/list/media_source_main.ts +7 -1
  251. package/src/features/list/smooth.ts +7 -1
  252. package/src/features/types.ts +23 -4
  253. package/src/main_thread/README.md +8 -0
  254. package/src/main_thread/api/public_api.ts +46 -48
  255. package/src/main_thread/core_interface/README.md +22 -0
  256. package/src/main_thread/core_interface/base.ts +36 -0
  257. package/src/main_thread/core_interface/monothread.ts +46 -0
  258. package/src/main_thread/core_interface/multithread.ts +49 -0
  259. package/src/main_thread/core_interface/types.ts +5 -0
  260. package/src/main_thread/init/media_source_content_initializer.ts +2034 -1152
  261. package/src/main_thread/init/utils/create_core_playback_observer.ts +2 -1
  262. package/src/main_thread/init/utils/update_manifest_codec_support.ts +1 -1
  263. package/src/main_thread/types.ts +610 -0
  264. package/src/manifest/utils.ts +20 -4
  265. package/src/mse/worker_media_source_interface.ts +35 -35
  266. package/src/parsers/manifest/smooth/create_parser.ts +40 -34
  267. package/src/parsers/manifest/smooth/parse_C_nodes.ts +19 -8
  268. package/src/parsers/manifest/smooth/parse_protection_node.ts +17 -9
  269. package/src/parsers/manifest/smooth/utils/parseBoolean.ts +1 -1
  270. package/src/parsers/manifest/smooth/utils/reduceChildren.ts +10 -7
  271. package/src/playback_observer/{worker_playback_observer.ts → core_playback_observer.ts} +13 -13
  272. package/src/transports/smooth/pipelines.ts +25 -5
  273. package/src/worker_entry_point.ts +71 -2
  274. package/dist/commonjs/core/main/common/FreezeResolver.d.ts.map +0 -1
  275. package/dist/commonjs/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  276. package/dist/commonjs/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  277. package/dist/commonjs/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  278. package/dist/commonjs/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  279. package/dist/commonjs/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  280. package/dist/commonjs/core/main/worker/content_preparer.d.ts.map +0 -1
  281. package/dist/commonjs/core/main/worker/globals.d.ts +0 -14
  282. package/dist/commonjs/core/main/worker/globals.d.ts.map +0 -1
  283. package/dist/commonjs/core/main/worker/globals.js +0 -26
  284. package/dist/commonjs/core/main/worker/index.d.ts +0 -3
  285. package/dist/commonjs/core/main/worker/index.d.ts.map +0 -1
  286. package/dist/commonjs/core/main/worker/index.js +0 -4
  287. package/dist/commonjs/core/main/worker/send_message.d.ts +0 -4
  288. package/dist/commonjs/core/main/worker/send_message.d.ts.map +0 -1
  289. package/dist/commonjs/core/main/worker/send_message.js +0 -23
  290. package/dist/commonjs/core/main/worker/track_choice_setter.d.ts.map +0 -1
  291. package/dist/commonjs/core/main/worker/worker_main.d.ts +0 -2
  292. package/dist/commonjs/core/main/worker/worker_main.d.ts.map +0 -1
  293. package/dist/commonjs/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  294. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  295. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  296. package/dist/commonjs/main_thread/init/multi_thread_content_initializer.js +0 -1713
  297. package/dist/commonjs/main_thread/init/send_message.d.ts +0 -3
  298. package/dist/commonjs/main_thread/init/send_message.d.ts.map +0 -1
  299. package/dist/commonjs/main_thread/init/send_message.js +0 -13
  300. package/dist/commonjs/multithread_types.d.ts +0 -915
  301. package/dist/commonjs/multithread_types.d.ts.map +0 -1
  302. package/dist/commonjs/multithread_types.js +0 -7
  303. package/dist/commonjs/playback_observer/worker_playback_observer.d.ts.map +0 -1
  304. package/dist/es2017/core/main/common/FreezeResolver.d.ts.map +0 -1
  305. package/dist/es2017/core/main/common/content_time_boundaries_observer.d.ts.map +0 -1
  306. package/dist/es2017/core/main/common/create_content_time_boundaries_observer.d.ts.map +0 -1
  307. package/dist/es2017/core/main/common/get_buffered_data_per_media_buffer.d.ts.map +0 -1
  308. package/dist/es2017/core/main/common/get_thumbnail_data.d.ts.map +0 -1
  309. package/dist/es2017/core/main/common/synchronize_sinks_on_observation.d.ts.map +0 -1
  310. package/dist/es2017/core/main/worker/content_preparer.d.ts.map +0 -1
  311. package/dist/es2017/core/main/worker/globals.d.ts +0 -14
  312. package/dist/es2017/core/main/worker/globals.d.ts.map +0 -1
  313. package/dist/es2017/core/main/worker/globals.js +0 -18
  314. package/dist/es2017/core/main/worker/index.d.ts +0 -3
  315. package/dist/es2017/core/main/worker/index.d.ts.map +0 -1
  316. package/dist/es2017/core/main/worker/index.js +0 -2
  317. package/dist/es2017/core/main/worker/send_message.d.ts +0 -4
  318. package/dist/es2017/core/main/worker/send_message.d.ts.map +0 -1
  319. package/dist/es2017/core/main/worker/send_message.js +0 -19
  320. package/dist/es2017/core/main/worker/track_choice_setter.d.ts.map +0 -1
  321. package/dist/es2017/core/main/worker/worker_main.d.ts +0 -2
  322. package/dist/es2017/core/main/worker/worker_main.d.ts.map +0 -1
  323. package/dist/es2017/core/main/worker/worker_text_displayer_interface.d.ts.map +0 -1
  324. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts +0 -308
  325. package/dist/es2017/main_thread/init/multi_thread_content_initializer.d.ts.map +0 -1
  326. package/dist/es2017/main_thread/init/multi_thread_content_initializer.js +0 -1559
  327. package/dist/es2017/main_thread/init/send_message.d.ts +0 -3
  328. package/dist/es2017/main_thread/init/send_message.d.ts.map +0 -1
  329. package/dist/es2017/main_thread/init/send_message.js +0 -10
  330. package/dist/es2017/multithread_types.d.ts +0 -915
  331. package/dist/es2017/multithread_types.d.ts.map +0 -1
  332. package/dist/es2017/multithread_types.js +0 -6
  333. package/dist/es2017/playback_observer/worker_playback_observer.d.ts.map +0 -1
  334. package/src/core/main/worker/globals.ts +0 -38
  335. package/src/core/main/worker/index.ts +0 -2
  336. package/src/core/main/worker/send_message.ts +0 -28
  337. package/src/main_thread/init/multi_thread_content_initializer.ts +0 -2330
  338. package/src/main_thread/init/send_message.ts +0 -15
  339. package/src/multithread_types.ts +0 -1095
  340. /package/dist/commonjs/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
  341. /package/dist/es2017/core/{main/common → entry}/synchronize_sinks_on_observation.js +0 -0
@@ -1,19 +1,19 @@
1
+ import type {
2
+ IAbortBufferCoreMessage,
3
+ IAddSourceBufferCoreMessage,
4
+ IAppendBufferCoreMessage,
5
+ ICreateMediaSourceCoreMessage,
6
+ IDisposeMediaSourceCoreMessage,
7
+ IEndOfStreamCoreMessage,
8
+ IInterruptMediaSourceDurationCoreMessage,
9
+ IRemoveBufferCoreMessage,
10
+ IStopEndOfStreamCoreMessage,
11
+ IUpdateMediaSourceDurationCoreMessage,
12
+ } from "../core/types";
13
+ import { CoreMessageType } from "../core/types";
1
14
  import { SourceBufferError } from "../errors";
2
15
  import type { ISerializedSourceBufferError } from "../errors/source_buffer_error";
3
16
  import log from "../log";
4
- import type {
5
- IAbortBufferWorkerMessage,
6
- IAddSourceBufferWorkerMessage,
7
- IAppendBufferWorkerMessage,
8
- ICreateMediaSourceWorkerMessage,
9
- IDisposeMediaSourceWorkerMessage,
10
- IEndOfStreamWorkerMessage,
11
- IInterruptMediaSourceDurationWorkerMessage,
12
- IRemoveBufferWorkerMessage,
13
- IStopEndOfStreamWorkerMessage,
14
- IUpdateMediaSourceDurationWorkerMessage,
15
- } from "../multithread_types";
16
- import { WorkerMessageType } from "../multithread_types";
17
17
  import EventEmitter from "../utils/event_emitter";
18
18
  import idGenerator from "../utils/id_generator";
19
19
  import type { IRange } from "../utils/ranges";
@@ -73,7 +73,7 @@ export default class WorkerMediaSourceInterface
73
73
 
74
74
  const mediaSourceId = generateMediaSourceId();
75
75
  this._messageSender({
76
- type: WorkerMessageType.CreateMediaSource,
76
+ type: CoreMessageType.CreateMediaSource,
77
77
  contentId,
78
78
  mediaSourceId,
79
79
  });
@@ -101,7 +101,7 @@ export default class WorkerMediaSourceInterface
101
101
  codec: string,
102
102
  ): ISourceBufferInterface {
103
103
  this._messageSender({
104
- type: WorkerMessageType.AddSourceBuffer,
104
+ type: CoreMessageType.AddSourceBuffer,
105
105
  mediaSourceId: this.id,
106
106
  value: {
107
107
  sourceBufferType: sbType,
@@ -120,7 +120,7 @@ export default class WorkerMediaSourceInterface
120
120
 
121
121
  public setDuration(newDuration: number, isRealEndKnown: boolean) {
122
122
  this._messageSender({
123
- type: WorkerMessageType.UpdateMediaSourceDuration,
123
+ type: CoreMessageType.UpdateMediaSourceDuration,
124
124
  mediaSourceId: this.id,
125
125
  value: {
126
126
  duration: newDuration,
@@ -131,7 +131,7 @@ export default class WorkerMediaSourceInterface
131
131
 
132
132
  public interruptDurationSetting() {
133
133
  this._messageSender({
134
- type: WorkerMessageType.InterruptMediaSourceDurationUpdate,
134
+ type: CoreMessageType.InterruptMediaSourceDurationUpdate,
135
135
  mediaSourceId: this.id,
136
136
  value: null,
137
137
  });
@@ -139,7 +139,7 @@ export default class WorkerMediaSourceInterface
139
139
 
140
140
  public maintainEndOfStream() {
141
141
  this._messageSender({
142
- type: WorkerMessageType.EndOfStream,
142
+ type: CoreMessageType.EndOfStream,
143
143
  mediaSourceId: this.id,
144
144
  value: null,
145
145
  });
@@ -147,7 +147,7 @@ export default class WorkerMediaSourceInterface
147
147
 
148
148
  public stopEndOfStream() {
149
149
  this._messageSender({
150
- type: WorkerMessageType.InterruptEndOfStream,
150
+ type: CoreMessageType.InterruptEndOfStream,
151
151
  mediaSourceId: this.id,
152
152
  value: null,
153
153
  });
@@ -157,7 +157,7 @@ export default class WorkerMediaSourceInterface
157
157
  this.sourceBuffers.forEach((s) => s.dispose());
158
158
  this._canceller.cancel();
159
159
  this._messageSender({
160
- type: WorkerMessageType.DisposeMediaSource,
160
+ type: CoreMessageType.DisposeMediaSource,
161
161
  mediaSourceId: this.id,
162
162
  value: null,
163
163
  });
@@ -166,16 +166,16 @@ export default class WorkerMediaSourceInterface
166
166
 
167
167
  export type IWorkerMediaSourceInterfaceMessageSender = (
168
168
  msg:
169
- | IAppendBufferWorkerMessage
170
- | IRemoveBufferWorkerMessage
171
- | IAbortBufferWorkerMessage
172
- | ICreateMediaSourceWorkerMessage
173
- | IAddSourceBufferWorkerMessage
174
- | IUpdateMediaSourceDurationWorkerMessage
175
- | IInterruptMediaSourceDurationWorkerMessage
176
- | IEndOfStreamWorkerMessage
177
- | IStopEndOfStreamWorkerMessage
178
- | IDisposeMediaSourceWorkerMessage,
169
+ | IAppendBufferCoreMessage
170
+ | IRemoveBufferCoreMessage
171
+ | IAbortBufferCoreMessage
172
+ | ICreateMediaSourceCoreMessage
173
+ | IAddSourceBufferCoreMessage
174
+ | IUpdateMediaSourceDurationCoreMessage
175
+ | IInterruptMediaSourceDurationCoreMessage
176
+ | IEndOfStreamCoreMessage
177
+ | IStopEndOfStreamCoreMessage
178
+ | IDisposeMediaSourceCoreMessage,
179
179
  transferables?: Transferable[],
180
180
  ) => void;
181
181
 
@@ -299,7 +299,7 @@ export class WorkerSourceBufferInterface implements ISourceBufferInterface {
299
299
  const operationId = generateSourceBufferOperationId();
300
300
  this._messageSender(
301
301
  {
302
- type: WorkerMessageType.SourceBufferAppend,
302
+ type: CoreMessageType.SourceBufferAppend,
303
303
  mediaSourceId: this._mediaSourceId,
304
304
  sourceBufferType: this.type,
305
305
  operationId,
@@ -334,7 +334,7 @@ export class WorkerSourceBufferInterface implements ISourceBufferInterface {
334
334
  try {
335
335
  const operationId = generateSourceBufferOperationId();
336
336
  this._messageSender({
337
- type: WorkerMessageType.SourceBufferRemove,
337
+ type: CoreMessageType.SourceBufferRemove,
338
338
  mediaSourceId: this._mediaSourceId,
339
339
  sourceBufferType: this.type,
340
340
  operationId,
@@ -352,7 +352,7 @@ export class WorkerSourceBufferInterface implements ISourceBufferInterface {
352
352
 
353
353
  public abort(): void {
354
354
  this._messageSender({
355
- type: WorkerMessageType.AbortSourceBuffer,
355
+ type: CoreMessageType.AbortSourceBuffer,
356
356
  mediaSourceId: this._mediaSourceId,
357
357
  sourceBufferType: this.type,
358
358
  value: null,
@@ -411,7 +411,7 @@ export class WorkerSourceBufferInterface implements ISourceBufferInterface {
411
411
  const nOpId = generateSourceBufferOperationId();
412
412
  this._messageSender(
413
413
  {
414
- type: WorkerMessageType.SourceBufferAppend,
414
+ type: CoreMessageType.SourceBufferAppend,
415
415
  mediaSourceId: this._mediaSourceId,
416
416
  sourceBufferType: this.type,
417
417
  operationId: nOpId,
@@ -427,7 +427,7 @@ export class WorkerSourceBufferInterface implements ISourceBufferInterface {
427
427
  const [start, end] = nextOp.params;
428
428
  const nOpId = generateSourceBufferOperationId();
429
429
  this._messageSender({
430
- type: WorkerMessageType.SourceBufferRemove,
430
+ type: CoreMessageType.SourceBufferRemove,
431
431
  mediaSourceId: this._mediaSourceId,
432
432
  sourceBufferType: this.type,
433
433
  operationId: nOpId,
@@ -25,6 +25,7 @@ import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
25
25
  import objectAssign from "../../../utils/object_assign";
26
26
  import { hexToBytes } from "../../../utils/string_parsing";
27
27
  import { getFilenameIndexInUrl } from "../../../utils/url-utils";
28
+ import { parseXml, type ITNode } from "../../../utils/xml-parser";
28
29
  import { createBox } from "../../containers/isobmff";
29
30
  import type {
30
31
  IParsedAdaptation,
@@ -44,7 +45,7 @@ import reduceChildren from "./utils/reduceChildren";
44
45
  import { replaceRepresentationSmoothTokens } from "./utils/tokens";
45
46
 
46
47
  interface IAdaptationParserArguments {
47
- root: Element;
48
+ root: ITNode;
48
49
  baseUrl: string;
49
50
  timescale: number;
50
51
  protections: IContentProtectionSmooth[];
@@ -108,7 +109,7 @@ interface ISmoothParsedQualityLevel {
108
109
  function createSmoothStreamingParser(
109
110
  parserOptions: IHSSParserConfiguration = {},
110
111
  ): (
111
- manifest: Document,
112
+ manifest: string,
112
113
  url?: string | undefined,
113
114
  manifestReceivedTime?: number | undefined,
114
115
  ) => IParsedManifest {
@@ -128,12 +129,12 @@ function createSmoothStreamingParser(
128
129
  : undefined;
129
130
 
130
131
  /**
131
- * @param {Element} q
132
+ * @param {Object} q
132
133
  * @param {string} streamType
133
134
  * @return {Object}
134
135
  */
135
136
  function parseQualityLevel(
136
- q: Element,
137
+ q: ITNode,
137
138
  streamType: string,
138
139
  ): ISmoothParsedQualityLevel | null {
139
140
  const customAttributes = reduceChildren<string[]>(
@@ -145,9 +146,9 @@ function createSmoothStreamingParser(
145
146
  qNode,
146
147
  (cAttrs, cName, cNode) => {
147
148
  if (cName === "Attribute") {
148
- const name = cNode.getAttribute("Name");
149
- const value = cNode.getAttribute("Value");
150
- if (name !== null && value !== null) {
149
+ const name = cNode.attributes.Name;
150
+ const value = cNode.attributes.Value;
151
+ if (!isNullOrUndefined(name) && !isNullOrUndefined(value)) {
151
152
  cAttrs.push(name + "=" + value);
152
153
  }
153
154
  }
@@ -167,7 +168,7 @@ function createSmoothStreamingParser(
167
168
  * @returns {string|undefined}
168
169
  */
169
170
  function getAttribute(name: string): string | undefined {
170
- const attr = q.getAttribute(name);
171
+ const attr = q.attributes[name];
171
172
  return attr === null ? undefined : attr;
172
173
  }
173
174
 
@@ -286,14 +287,14 @@ function createSmoothStreamingParser(
286
287
  manifestReceivedTime,
287
288
  isLive,
288
289
  } = args;
289
- const timescaleAttr = root.getAttribute("Timescale");
290
- let _timescale = timescaleAttr === null ? timescale : +timescaleAttr;
290
+ const timescaleAttr = root.attributes.Timescale;
291
+ let _timescale = !isNonEmptyString(timescaleAttr) ? timescale : +timescaleAttr;
291
292
  if (isNaN(_timescale)) {
292
293
  _timescale = timescale;
293
294
  }
294
295
 
295
- const typeAttribute = root.getAttribute("Type");
296
- if (typeAttribute === null) {
296
+ const typeAttribute = root.attributes.Type;
297
+ if (isNullOrUndefined(typeAttribute)) {
297
298
  throw new Error("StreamIndex without type.");
298
299
  }
299
300
  if (!arrayIncludes(SUPPORTED_ADAPTATIONS_TYPE, typeAttribute)) {
@@ -301,15 +302,15 @@ function createSmoothStreamingParser(
301
302
  }
302
303
  const adaptationType = typeAttribute as IAdaptationType;
303
304
 
304
- const subType = root.getAttribute("Subtype");
305
- const language = root.getAttribute("Language");
306
- const UrlAttr = root.getAttribute("Url");
307
- const UrlPathWithTokens = UrlAttr === null ? "" : UrlAttr;
305
+ const subType = root.attributes.Subtype;
306
+ const language = root.attributes.Language;
307
+ const UrlAttr = root.attributes.Url;
308
+ const UrlPathWithTokens = UrlAttr ?? "";
308
309
  assert(UrlPathWithTokens !== "");
309
310
 
310
311
  const { qualityLevels, cNodes } = reduceChildren<{
311
312
  qualityLevels: ISmoothParsedQualityLevel[];
312
- cNodes: Element[];
313
+ cNodes: ITNode[];
313
314
  }>(
314
315
  root,
315
316
  (res, _name, node) => {
@@ -452,31 +453,36 @@ function createSmoothStreamingParser(
452
453
  return parsedAdaptation;
453
454
  }
454
455
 
455
- function parseFromDocument(
456
- doc: Document,
456
+ function parseFromNode(
457
+ xml: string,
457
458
  url?: string,
458
459
  manifestReceivedTime?: number,
459
460
  ): IParsedManifest {
461
+ const parsed = parseXml(xml);
462
+ const root = parsed[parsed.length - 1];
460
463
  let baseUrl: string = "";
461
464
  if (url !== undefined) {
462
465
  const filenameIdx = getFilenameIndexInUrl(url);
463
466
  baseUrl = url.substring(0, filenameIdx);
464
467
  }
465
- const root = doc.documentElement;
466
- if (isNullOrUndefined(root) || root.nodeName !== "SmoothStreamingMedia") {
468
+ if (
469
+ isNullOrUndefined(root) ||
470
+ typeof root === "string" ||
471
+ root.tagName !== "SmoothStreamingMedia"
472
+ ) {
467
473
  throw new Error("document root should be SmoothStreamingMedia");
468
474
  }
469
- const majorVersionAttr = root.getAttribute("MajorVersion");
470
- const minorVersionAttr = root.getAttribute("MinorVersion");
475
+ const majorVersionAttr = root.attributes.MajorVersion;
476
+ const minorVersionAttr = root.attributes.MinorVersion;
471
477
  if (
472
- majorVersionAttr === null ||
473
- minorVersionAttr === null ||
478
+ isNullOrUndefined(majorVersionAttr) ||
479
+ isNullOrUndefined(minorVersionAttr) ||
474
480
  !/^[2]-[0-2]$/.test(majorVersionAttr + "-" + minorVersionAttr)
475
481
  ) {
476
482
  throw new Error("Version should be 2.0, 2.1 or 2.2");
477
483
  }
478
484
 
479
- const timescaleAttr = root.getAttribute("Timescale");
485
+ const timescaleAttr = root.attributes.Timescale;
480
486
  let timescale = !isNonEmptyString(timescaleAttr) ? 10000000 : +timescaleAttr;
481
487
  if (isNaN(timescale)) {
482
488
  timescale = 10000000;
@@ -484,7 +490,7 @@ function createSmoothStreamingParser(
484
490
 
485
491
  const { protections, adaptationNodes } = reduceChildren<{
486
492
  protections: IContentProtectionSmooth[];
487
- adaptationNodes: Element[];
493
+ adaptationNodes: ITNode[];
488
494
  }>(
489
495
  root,
490
496
  (res, name, node) => {
@@ -507,13 +513,13 @@ function createSmoothStreamingParser(
507
513
 
508
514
  const initialAdaptations: IParsedAdaptations = {};
509
515
 
510
- const isLive = parseBoolean(root.getAttribute("IsLive"));
516
+ const isLive = parseBoolean(root.attributes.IsLive);
511
517
 
512
518
  let timeShiftBufferDepth: number | undefined;
513
519
  if (isLive) {
514
- const dvrWindowLength = root.getAttribute("DVRWindowLength");
520
+ const dvrWindowLength = root.attributes.DVRWindowLength;
515
521
  if (
516
- dvrWindowLength !== null &&
522
+ !isNullOrUndefined(dvrWindowLength) &&
517
523
  !isNaN(+dvrWindowLength) &&
518
524
  +dvrWindowLength !== 0
519
525
  ) {
@@ -522,7 +528,7 @@ function createSmoothStreamingParser(
522
528
  }
523
529
 
524
530
  const adaptations: IParsedAdaptations = adaptationNodes.reduce(
525
- (acc: IParsedAdaptations, node: Element) => {
531
+ (acc: IParsedAdaptations, node: ITNode) => {
526
532
  const adaptation = parseAdaptation({
527
533
  root: node,
528
534
  baseUrl,
@@ -622,9 +628,9 @@ function createSmoothStreamingParser(
622
628
  }
623
629
  }
624
630
 
625
- const manifestDuration = root.getAttribute("Duration");
631
+ const manifestDuration = root.attributes.Duration;
626
632
  const duration =
627
- manifestDuration !== null && +manifestDuration !== 0
633
+ !isNullOrUndefined(manifestDuration) && +manifestDuration !== 0
628
634
  ? +manifestDuration / timescale
629
635
  : undefined;
630
636
 
@@ -694,7 +700,7 @@ function createSmoothStreamingParser(
694
700
  return manifest;
695
701
  }
696
702
 
697
- return parseFromDocument;
703
+ return parseFromNode;
698
704
  }
699
705
 
700
706
  /**
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import isNonEmptyString from "../../../utils/is_non_empty_string";
18
+ import type { ITNode } from "../../../utils/xml-parser";
18
19
 
19
20
  interface IHSSManifestSegment {
20
21
  start: number;
@@ -24,13 +25,18 @@ interface IHSSManifestSegment {
24
25
 
25
26
  /**
26
27
  * Parse C nodes to build index timeline.
27
- * @param {Element} nodes
28
+ * @param {Object} nodes
28
29
  */
29
- export default function parseCNodes(nodes: Element[]): IHSSManifestSegment[] {
30
+ export default function parseCNodes(
31
+ nodes: Array<ITNode | string>,
32
+ ): IHSSManifestSegment[] {
30
33
  return nodes.reduce<IHSSManifestSegment[]>((timeline, node, i) => {
31
- const dAttr = node.getAttribute("d");
32
- const tAttr = node.getAttribute("t");
33
- const rAttr = node.getAttribute("r");
34
+ if (typeof node === "string") {
35
+ return timeline;
36
+ }
37
+ const dAttr = node.attributes.d ?? null;
38
+ const tAttr = node.attributes.t ?? null;
39
+ const rAttr = node.attributes.r ?? null;
34
40
 
35
41
  const repeatCount = rAttr !== null ? +rAttr - 1 : 0;
36
42
  let start = tAttr !== null ? +tAttr : undefined;
@@ -50,9 +56,14 @@ export default function parseCNodes(nodes: Element[]): IHSSManifestSegment[] {
50
56
  }
51
57
  }
52
58
  if (duration === undefined || isNaN(duration)) {
53
- const nextNode = nodes[i + 1];
54
- if (nextNode !== undefined) {
55
- const nextTAttr = nextNode.getAttribute("t");
59
+ let nextNodeIdx = i;
60
+ let nextNodeElt: ITNode | undefined | string;
61
+ do {
62
+ nextNodeIdx++;
63
+ nextNodeElt = nodes[nextNodeIdx];
64
+ } while (nextNodeElt !== undefined && typeof nextNodeElt === "string");
65
+ if (nextNodeElt !== undefined) {
66
+ const nextTAttr = nextNodeElt.attributes.t ?? null;
56
67
  const nextStart = isNonEmptyString(nextTAttr) ? +nextTAttr : null;
57
68
  if (nextStart === null) {
58
69
  throw new Error("Can't build index timeline from Smooth Manifest.");
@@ -17,6 +17,7 @@
17
17
  import { base64ToBytes } from "../../../utils/base64";
18
18
  import { concat } from "../../../utils/byte_parsing";
19
19
  import { hexToBytes } from "../../../utils/string_parsing";
20
+ import type { ITNode } from "../../../utils/xml-parser";
20
21
  import { getPlayReadyKIDFromPrivateData } from "../../containers/isobmff";
21
22
 
22
23
  export interface IKeySystem {
@@ -44,28 +45,35 @@ function createWidevineKeySystem(keyIdBytes: Uint8Array): IKeySystem[] {
44
45
 
45
46
  /**
46
47
  * Parse "Protection" Node, which contains DRM information
47
- * @param {Element} protectionNode
48
+ * @param {Object} protectionNode
48
49
  * @returns {Object}
49
50
  */
50
51
  export default function parseProtectionNode(
51
- protectionNode: Element,
52
+ protectionNode: ITNode,
52
53
  keySystemCreator: (keyId: Uint8Array) => IKeySystem[] = createWidevineKeySystem,
53
54
  ): IContentProtectionSmooth {
54
- if (
55
- protectionNode.firstElementChild === null ||
56
- protectionNode.firstElementChild.nodeName !== "ProtectionHeader"
57
- ) {
55
+ let header;
56
+ for (const subNode of protectionNode.children) {
57
+ if (typeof subNode === "string") {
58
+ continue;
59
+ }
60
+ if (subNode.tagName === "ProtectionHeader") {
61
+ header = subNode;
62
+ break;
63
+ }
64
+ }
65
+ if (header === undefined) {
58
66
  throw new Error("Protection should have ProtectionHeader child");
59
67
  }
60
- const header = protectionNode.firstElementChild;
68
+
61
69
  const privateData = base64ToBytes(
62
- header.textContent === null ? "" : header.textContent,
70
+ typeof header.children[0] === "string" ? header.children[0] : "",
63
71
  );
64
72
  const keyIdHex = getPlayReadyKIDFromPrivateData(privateData);
65
73
  const keyIdBytes = hexToBytes(keyIdHex);
66
74
 
67
75
  // remove possible braces
68
- const systemIdAttr = header.getAttribute("SystemID");
76
+ const systemIdAttr = header.attributes.SystemID ?? null;
69
77
  const systemId = (systemIdAttr !== null ? systemIdAttr : "")
70
78
  .toLowerCase()
71
79
  .replace(/\{|\}/g, "");
@@ -18,7 +18,7 @@
18
18
  * @param {*} val
19
19
  * @returns {Boolean}
20
20
  */
21
- export default function parseBoolean(val: string | null): boolean {
21
+ export default function parseBoolean(val: string | null | undefined | boolean): boolean {
22
22
  if (typeof val === "boolean") {
23
23
  return val;
24
24
  } else if (typeof val === "string") {
@@ -14,23 +14,26 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import type { ITNode } from "../../../../utils/xml-parser";
18
+
17
19
  /**
18
20
  * Reduce implementation for the children of the given element.
19
- * @param {Element} root
21
+ * @param {Object} root
20
22
  * @param {Function} fn
21
23
  * @param {*} init
22
24
  * @returns {*}
23
25
  */
24
26
  export default function reduceChildren<T>(
25
- root: Element,
26
- fn: (accu: T, nodeName: string, nodeElt: Element) => T,
27
+ root: ITNode,
28
+ fn: (accu: T, nodeName: string, nodeElt: ITNode) => T,
27
29
  init: T,
28
30
  ): T {
29
- let node = root.firstElementChild;
30
31
  let accumulator = init;
31
- while (node !== null) {
32
- accumulator = fn(accumulator, node.nodeName, node);
33
- node = node.nextElementSibling;
32
+ for (const elt of root.children) {
33
+ if (typeof elt === "string") {
34
+ continue;
35
+ }
36
+ accumulator = fn(accumulator, elt.tagName, elt);
34
37
  }
35
38
  return accumulator;
36
39
  }
@@ -1,5 +1,5 @@
1
- import type { IUpdatePlaybackRateWorkerMessage } from "../multithread_types";
2
- import { WorkerMessageType } from "../multithread_types";
1
+ import type { IUpdatePlaybackRateCoreMessage } from "../core/types";
2
+ import { CoreMessageType } from "../core/types";
3
3
  import type { ITrackType } from "../public_types";
4
4
  import type { IRange } from "../utils/ranges";
5
5
  import type { IReadOnlySharedReference } from "../utils/reference";
@@ -12,7 +12,7 @@ import type {
12
12
  import generateReadOnlyObserver from "./utils/generate_read_only_observer";
13
13
  import type ObservationPosition from "./utils/observation_position";
14
14
 
15
- export interface IWorkerPlaybackObservation {
15
+ export interface ICorePlaybackObservation {
16
16
  /**
17
17
  * Information on whether the media element was paused at the time of the
18
18
  * Observation.
@@ -73,18 +73,18 @@ export interface IPausedPlaybackObservation {
73
73
  pending: boolean | undefined;
74
74
  }
75
75
 
76
- export default class WorkerPlaybackObserver
77
- implements IReadOnlyPlaybackObserver<IWorkerPlaybackObservation>
76
+ export default class CorePlaybackObserver
77
+ implements IReadOnlyPlaybackObserver<ICorePlaybackObservation>
78
78
  {
79
- private _src: IReadOnlySharedReference<IWorkerPlaybackObservation>;
79
+ private _src: IReadOnlySharedReference<ICorePlaybackObservation>;
80
80
  private _cancelSignal: CancellationSignal;
81
- private _messageSender: (msg: IUpdatePlaybackRateWorkerMessage) => void;
81
+ private _messageSender: (msg: IUpdatePlaybackRateCoreMessage) => void;
82
82
  private _contentId: string;
83
83
 
84
84
  constructor(
85
- src: IReadOnlySharedReference<IWorkerPlaybackObservation>,
85
+ src: IReadOnlySharedReference<ICorePlaybackObservation>,
86
86
  contentId: string,
87
- sendMessage: (msg: IUpdatePlaybackRateWorkerMessage) => void,
87
+ sendMessage: (msg: IUpdatePlaybackRateCoreMessage) => void,
88
88
  cancellationSignal: CancellationSignal,
89
89
  ) {
90
90
  this._src = src;
@@ -105,13 +105,13 @@ export default class WorkerPlaybackObserver
105
105
  return undefined;
106
106
  }
107
107
 
108
- public getReference(): IReadOnlySharedReference<IWorkerPlaybackObservation> {
108
+ public getReference(): IReadOnlySharedReference<ICorePlaybackObservation> {
109
109
  return this._src;
110
110
  }
111
111
 
112
112
  public setPlaybackRate(playbackRate: number): void {
113
113
  this._messageSender({
114
- type: WorkerMessageType.UpdatePlaybackRate,
114
+ type: CoreMessageType.UpdatePlaybackRate,
115
115
  contentId: this._contentId,
116
116
  value: playbackRate,
117
117
  });
@@ -122,7 +122,7 @@ export default class WorkerPlaybackObserver
122
122
  }
123
123
 
124
124
  public listen(
125
- cb: (observation: IWorkerPlaybackObservation, stopListening: () => void) => void,
125
+ cb: (observation: ICorePlaybackObservation, stopListening: () => void) => void,
126
126
  params: {
127
127
  includeLastObservation?: boolean | undefined;
128
128
  clearSignal: CancellationSignal;
@@ -140,7 +140,7 @@ export default class WorkerPlaybackObserver
140
140
 
141
141
  public deriveReadOnlyObserver<TDest>(
142
142
  transform: (
143
- observationRef: IReadOnlySharedReference<IWorkerPlaybackObservation>,
143
+ observationRef: IReadOnlySharedReference<ICorePlaybackObservation>,
144
144
  cancellationSignal: CancellationSignal,
145
145
  ) => IReadOnlySharedReference<TDest>,
146
146
  ): IReadOnlyPlaybackObserver<TDest> {
@@ -19,6 +19,8 @@ import Manifest from "../../manifest/classes";
19
19
  import { getMDAT } from "../../parsers/containers/isobmff";
20
20
  import type { ICdnMetadata } from "../../parsers/manifest";
21
21
  import createSmoothManifestParser from "../../parsers/manifest/smooth";
22
+ import globalScope from "../../utils/global_scope";
23
+ import isNullOrUndefined from "../../utils/is_null_or_undefined";
22
24
  import request from "../../utils/request";
23
25
  import { strToUtf8, utf8ToStr } from "../../utils/string_parsing";
24
26
  import type { CancellationSignal } from "../../utils/task_canceller";
@@ -69,11 +71,7 @@ export default function (transportOptions: ITransportOptions): ITransportPipelin
69
71
  const url = manifestData.url ?? parserOptions.originalUrl;
70
72
  const { receivedTime: manifestReceivedTime, responseData } = manifestData;
71
73
 
72
- const documentData =
73
- typeof responseData === "string"
74
- ? new DOMParser().parseFromString(responseData, "text/xml")
75
- : (responseData as Document); // TODO find a way to check if Document?
76
-
74
+ const documentData = getManifestAsString(responseData);
77
75
  const parserResult = smoothManifestParser(documentData, url, manifestReceivedTime);
78
76
 
79
77
  const manifest = new Manifest(parserResult, {
@@ -434,3 +432,25 @@ export default function (transportOptions: ITransportOptions): ITransportPipelin
434
432
  },
435
433
  };
436
434
  }
435
+
436
+ /**
437
+ * Try to convert a Manifest from an unknown format to a JS string format.
438
+ *
439
+ * Throws if the format cannot be converted.
440
+ * @param {*} manifestSrc
441
+ * @returns {Array.<Object | string>}
442
+ */
443
+ function getManifestAsString(manifestSrc: unknown): string {
444
+ if (manifestSrc instanceof ArrayBuffer) {
445
+ return utf8ToStr(new Uint8Array(manifestSrc));
446
+ } else if (typeof manifestSrc === "string") {
447
+ return manifestSrc;
448
+ } else if (
449
+ !isNullOrUndefined(globalScope.Document) &&
450
+ manifestSrc instanceof globalScope.Document
451
+ ) {
452
+ return manifestSrc.documentElement.outerHTML;
453
+ } else {
454
+ throw new Error("Smooth Manifest Parser: Unrecognized Manifest format");
455
+ }
456
+ }