rx-player 4.0.0-dev.2023120600 → 4.0.0-dev.2023121900

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 (326) hide show
  1. package/CHANGELOG.md +178 -2
  2. package/README.md +2 -33
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/add_text_track.d.ts +3 -1
  5. package/dist/_esm5.processed/compat/add_text_track.js +7 -4
  6. package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +7 -0
  7. package/dist/_esm5.processed/compat/event_listeners.d.ts +15 -2
  8. package/dist/_esm5.processed/compat/event_listeners.js +37 -2
  9. package/dist/_esm5.processed/compat/fullscreen.d.ts +32 -0
  10. package/dist/_esm5.processed/compat/fullscreen.js +78 -0
  11. package/dist/_esm5.processed/compat/index.d.ts +3 -1
  12. package/dist/_esm5.processed/compat/index.js +3 -1
  13. package/dist/_esm5.processed/compat/is_offline.d.ts +39 -0
  14. package/dist/_esm5.processed/compat/is_offline.js +43 -0
  15. package/dist/_esm5.processed/config.d.ts +21 -9
  16. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +58 -0
  17. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +54 -14
  18. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +8 -2
  19. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +11 -2
  20. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +46 -17
  21. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
  22. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
  23. package/dist/_esm5.processed/core/api/option_utils.d.ts +35 -14
  24. package/dist/_esm5.processed/core/api/option_utils.js +230 -47
  25. package/dist/_esm5.processed/core/api/public_api.d.ts +266 -92
  26. package/dist/_esm5.processed/core/api/public_api.js +802 -444
  27. package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.d.ts → tracks_management/media_element_track_choice_manager.d.ts} +75 -15
  28. package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.js → tracks_management/media_element_track_choice_manager.js} +193 -74
  29. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +258 -0
  30. package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +989 -0
  31. package/dist/_esm5.processed/core/api/utils.d.ts +0 -1
  32. package/dist/_esm5.processed/core/api/utils.js +11 -28
  33. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
  34. package/dist/_esm5.processed/core/decrypt/find_key_system.js +71 -83
  35. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +5 -6
  36. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +72 -10
  37. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
  38. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +4 -6
  39. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +3 -1
  40. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +26 -7
  41. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +9 -3
  42. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +9 -16
  43. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +3 -1
  44. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  45. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +6 -1
  46. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +41 -4
  47. package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +8 -1
  48. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -2
  49. package/dist/_esm5.processed/core/init/types.d.ts +15 -5
  50. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
  51. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +75 -0
  52. package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +133 -0
  53. package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.d.ts +2 -3
  54. package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.js +2 -3
  55. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
  56. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +2 -1
  57. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -3
  58. package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
  59. package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
  60. package/dist/_esm5.processed/core/segment_buffers/index.js +1 -2
  61. package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +2 -3
  62. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +0 -1
  63. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
  64. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +19 -10
  65. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +1 -0
  66. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +16 -2
  67. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -0
  68. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +93 -183
  69. package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +13 -27
  70. package/dist/_esm5.processed/core/stream/index.d.ts +3 -2
  71. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +0 -2
  72. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +7 -5
  73. package/dist/_esm5.processed/core/stream/period/period_stream.js +12 -13
  74. package/dist/_esm5.processed/core/stream/period/types.d.ts +14 -5
  75. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -2
  76. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +46 -10
  77. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +23 -29
  78. package/dist/_esm5.processed/core/stream/representation/types.d.ts +1 -11
  79. package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +1 -1
  80. package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +1 -1
  81. package/dist/_esm5.processed/default_config.d.ts +98 -35
  82. package/dist/_esm5.processed/default_config.js +113 -36
  83. package/dist/_esm5.processed/errors/custom_loader_error.d.ts +3 -1
  84. package/dist/_esm5.processed/errors/custom_loader_error.js +3 -1
  85. package/dist/_esm5.processed/errors/media_error.js +2 -2
  86. package/dist/_esm5.processed/errors/network_error.d.ts +1 -0
  87. package/dist/_esm5.processed/errors/network_error.js +1 -0
  88. package/dist/_esm5.processed/errors/request_error.d.ts +3 -2
  89. package/dist/_esm5.processed/errors/request_error.js +5 -2
  90. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
  91. package/dist/_esm5.processed/features/features_object.js +2 -0
  92. package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.js → features/list/bif_parser.d.ts} +6 -7
  93. package/dist/_esm5.processed/features/list/bif_parser.js +27 -0
  94. package/dist/_esm5.processed/features/list/directfile.js +5 -2
  95. package/dist/_esm5.processed/features/list/image_buffer.d.ts +23 -0
  96. package/dist/_esm5.processed/features/list/image_buffer.js +25 -0
  97. package/dist/_esm5.processed/features/list/index.d.ts +2 -0
  98. package/dist/_esm5.processed/features/list/index.js +2 -0
  99. package/dist/_esm5.processed/features/types.d.ts +27 -3
  100. package/dist/_esm5.processed/manifest/adaptation.d.ts +11 -9
  101. package/dist/_esm5.processed/manifest/adaptation.js +30 -41
  102. package/dist/_esm5.processed/manifest/index.d.ts +4 -3
  103. package/dist/_esm5.processed/manifest/manifest.d.ts +54 -5
  104. package/dist/_esm5.processed/manifest/manifest.js +110 -5
  105. package/dist/_esm5.processed/manifest/period.d.ts +5 -4
  106. package/dist/_esm5.processed/manifest/representation.d.ts +5 -10
  107. package/dist/_esm5.processed/manifest/representation.js +5 -15
  108. package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
  109. package/dist/_esm5.processed/manifest/representation_index/static.d.ts +0 -2
  110. package/dist/_esm5.processed/manifest/representation_index/static.js +0 -6
  111. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +21 -42
  112. package/dist/_esm5.processed/manifest/types.d.ts +2 -0
  113. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +31 -17
  114. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +19 -26
  115. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +0 -2
  116. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +1 -7
  117. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +6 -2
  118. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +8 -11
  119. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +0 -2
  120. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +0 -6
  121. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  122. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +6 -1
  123. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +5 -3
  124. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -0
  125. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
  126. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
  127. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +2 -0
  128. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
  129. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +6 -10
  130. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +2 -4
  131. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +1 -10
  132. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +2 -18
  133. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +4 -4
  134. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +6 -3
  135. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +2 -1
  136. package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +0 -2
  137. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +0 -6
  138. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
  139. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +3 -12
  140. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +2 -11
  141. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +1 -0
  142. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +17 -11
  143. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +83 -21
  144. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +125 -53
  145. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +6 -3
  146. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
  147. package/dist/_esm5.processed/parsers/manifest/types.d.ts +3 -3
  148. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
  149. package/dist/_esm5.processed/public_types.d.ts +310 -396
  150. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +4 -5
  151. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +4 -5
  152. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
  153. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +38 -0
  154. package/dist/_esm5.processed/transports/dash/image_pipelines.js +129 -0
  155. package/dist/_esm5.processed/transports/dash/manifest_parser.js +3 -2
  156. package/dist/_esm5.processed/transports/dash/pipelines.js +4 -1
  157. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  158. package/dist/_esm5.processed/transports/dash/segment_loader.js +20 -26
  159. package/dist/_esm5.processed/transports/dash/segment_parser.js +24 -19
  160. package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
  161. package/dist/_esm5.processed/transports/dash/text_parser.js +33 -28
  162. package/dist/_esm5.processed/transports/local/pipelines.js +10 -1
  163. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
  164. package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
  165. package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
  166. package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
  167. package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
  168. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +52 -34
  169. package/dist/_esm5.processed/transports/smooth/pipelines.js +190 -33
  170. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
  171. package/dist/_esm5.processed/transports/smooth/segment_loader.js +22 -28
  172. package/dist/_esm5.processed/transports/smooth/utils.d.ts +26 -1
  173. package/dist/_esm5.processed/transports/smooth/utils.js +55 -1
  174. package/dist/_esm5.processed/transports/types.d.ts +89 -94
  175. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
  176. package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
  177. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +7 -5
  178. package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +12 -8
  179. package/dist/_esm5.processed/transports/utils/parse_text_track.js +21 -19
  180. package/dist/_esm5.processed/utils/array_includes.d.ts +1 -2
  181. package/dist/_esm5.processed/utils/array_includes.js +28 -30
  182. package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.d.ts → utils/list_to_map.d.ts} +5 -5
  183. package/dist/_esm5.processed/utils/list_to_map.js +28 -0
  184. package/dist/_esm5.processed/utils/request/xhr.js +5 -5
  185. package/dist/_esm5.processed/utils/simple_set.d.ts +51 -0
  186. package/dist/_esm5.processed/utils/simple_set.js +57 -0
  187. package/dist/_esm5.processed/utils/uniq.d.ts +36 -0
  188. package/dist/_esm5.processed/utils/uniq.js +43 -0
  189. package/dist/commonjs/config.d.ts +1 -1
  190. package/dist/commonjs/core/adaptive/adaptive_representation_selector.d.ts +2 -19
  191. package/dist/commonjs/core/adaptive/adaptive_representation_selector.js +2 -2
  192. package/dist/commonjs/core/adaptive/network_analyzer.js +3 -3
  193. package/dist/commonjs/core/api/index.d.ts +1 -1
  194. package/dist/commonjs/core/api/playback_observer.d.ts +128 -8
  195. package/dist/commonjs/core/api/playback_observer.js +217 -64
  196. package/dist/commonjs/core/api/public_api.js +9 -9
  197. package/dist/commonjs/core/api/utils.js +1 -1
  198. package/dist/commonjs/core/decrypt/get_media_keys.js +2 -6
  199. package/dist/commonjs/core/init/directfile_content_initializer.js +5 -1
  200. package/dist/commonjs/core/init/media_source_content_initializer.js +28 -14
  201. package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +1 -2
  202. package/dist/commonjs/core/init/utils/create_stream_playback_observer.d.ts +1 -5
  203. package/dist/commonjs/core/init/utils/create_stream_playback_observer.js +16 -14
  204. package/dist/commonjs/core/init/utils/initial_seek_and_play.d.ts +9 -11
  205. package/dist/commonjs/core/init/utils/initial_seek_and_play.js +121 -91
  206. package/dist/commonjs/core/init/utils/rebuffering_controller.js +27 -70
  207. package/dist/commonjs/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
  208. package/dist/commonjs/core/segment_buffers/garbage_collector.js +1 -2
  209. package/dist/commonjs/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
  210. package/dist/commonjs/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
  211. package/dist/commonjs/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
  212. package/dist/commonjs/core/segment_buffers/index.d.ts +2 -2
  213. package/dist/commonjs/core/segment_buffers/inventory/index.d.ts +2 -2
  214. package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
  215. package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.js +19 -10
  216. package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
  217. package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
  218. package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +14 -18
  219. package/dist/commonjs/core/stream/period/period_stream.js +5 -8
  220. package/dist/commonjs/core/stream/period/types.d.ts +2 -3
  221. package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
  222. package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
  223. package/dist/commonjs/core/stream/representation/representation_stream.js +3 -4
  224. package/dist/commonjs/core/stream/representation/types.d.ts +2 -2
  225. package/dist/commonjs/core/stream/representation/utils/append_segment_to_buffer.js +11 -12
  226. package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +1 -1
  227. package/dist/commonjs/default_config.d.ts +7 -16
  228. package/dist/commonjs/default_config.js +16 -16
  229. package/dist/commonjs/manifest/adaptation.js +2 -1
  230. package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
  231. package/dist/commonjs/public_types.d.ts +29 -2
  232. package/dist/es2017/config.d.ts +1 -1
  233. package/dist/es2017/core/adaptive/adaptive_representation_selector.d.ts +2 -19
  234. package/dist/es2017/core/adaptive/adaptive_representation_selector.js +2 -2
  235. package/dist/es2017/core/adaptive/network_analyzer.js +3 -3
  236. package/dist/es2017/core/api/index.d.ts +1 -1
  237. package/dist/es2017/core/api/playback_observer.d.ts +128 -8
  238. package/dist/es2017/core/api/playback_observer.js +217 -66
  239. package/dist/es2017/core/api/public_api.js +9 -9
  240. package/dist/es2017/core/api/utils.js +1 -1
  241. package/dist/es2017/core/decrypt/get_media_keys.js +2 -6
  242. package/dist/es2017/core/init/directfile_content_initializer.js +7 -1
  243. package/dist/es2017/core/init/media_source_content_initializer.js +30 -16
  244. package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +1 -2
  245. package/dist/es2017/core/init/utils/create_stream_playback_observer.d.ts +1 -5
  246. package/dist/es2017/core/init/utils/create_stream_playback_observer.js +16 -14
  247. package/dist/es2017/core/init/utils/initial_seek_and_play.d.ts +9 -11
  248. package/dist/es2017/core/init/utils/initial_seek_and_play.js +120 -91
  249. package/dist/es2017/core/init/utils/rebuffering_controller.js +27 -70
  250. package/dist/es2017/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
  251. package/dist/es2017/core/segment_buffers/garbage_collector.js +1 -2
  252. package/dist/es2017/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
  253. package/dist/es2017/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
  254. package/dist/es2017/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
  255. package/dist/es2017/core/segment_buffers/index.d.ts +2 -2
  256. package/dist/es2017/core/segment_buffers/inventory/index.d.ts +2 -2
  257. package/dist/es2017/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
  258. package/dist/es2017/core/segment_buffers/inventory/segment_inventory.js +19 -10
  259. package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
  260. package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
  261. package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +16 -18
  262. package/dist/es2017/core/stream/period/period_stream.js +4 -7
  263. package/dist/es2017/core/stream/period/types.d.ts +2 -3
  264. package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
  265. package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
  266. package/dist/es2017/core/stream/representation/representation_stream.js +3 -4
  267. package/dist/es2017/core/stream/representation/types.d.ts +2 -2
  268. package/dist/es2017/core/stream/representation/utils/append_segment_to_buffer.js +1 -2
  269. package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +1 -1
  270. package/dist/es2017/default_config.d.ts +7 -16
  271. package/dist/es2017/default_config.js +16 -16
  272. package/dist/es2017/manifest/adaptation.js +2 -1
  273. package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
  274. package/dist/es2017/public_types.d.ts +29 -2
  275. package/dist/mpd-parser.wasm +0 -0
  276. package/dist/rx-player.js +614 -438
  277. package/dist/rx-player.min.js +1 -1
  278. package/package.json +5 -1
  279. package/scripts/canal-release.patch +78 -0
  280. package/scripts/make-dev-releases +65 -0
  281. package/scripts/update-version +5 -0
  282. package/sonar-project.properties +1 -1
  283. package/src/core/adaptive/adaptive_representation_selector.ts +4 -21
  284. package/src/core/adaptive/network_analyzer.ts +3 -3
  285. package/src/core/api/index.ts +1 -0
  286. package/src/core/api/playback_observer.ts +327 -107
  287. package/src/core/api/public_api.ts +9 -9
  288. package/src/core/api/utils.ts +3 -1
  289. package/src/core/decrypt/get_media_keys.ts +2 -8
  290. package/src/core/init/directfile_content_initializer.ts +8 -8
  291. package/src/core/init/media_source_content_initializer.ts +27 -20
  292. package/src/core/init/utils/content_time_boundaries_observer.ts +1 -1
  293. package/src/core/init/utils/create_stream_playback_observer.ts +19 -20
  294. package/src/core/init/utils/initial_seek_and_play.ts +140 -108
  295. package/src/core/init/utils/rebuffering_controller.ts +32 -77
  296. package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +5 -2
  297. package/src/core/segment_buffers/garbage_collector.ts +1 -1
  298. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
  299. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
  300. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +1 -1
  301. package/src/core/segment_buffers/index.ts +2 -0
  302. package/src/core/segment_buffers/inventory/index.ts +2 -0
  303. package/src/core/segment_buffers/inventory/segment_inventory.ts +49 -17
  304. package/src/core/stream/adaptation/get_representations_switch_strategy.ts +21 -12
  305. package/src/core/stream/orchestrator/stream_orchestrator.ts +14 -19
  306. package/src/core/stream/period/period_stream.ts +7 -8
  307. package/src/core/stream/period/types.ts +2 -3
  308. package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +21 -15
  309. package/src/core/stream/representation/representation_stream.ts +3 -5
  310. package/src/core/stream/representation/types.ts +2 -2
  311. package/src/core/stream/representation/utils/append_segment_to_buffer.ts +1 -1
  312. package/src/core/stream/representation/utils/get_buffer_status.ts +2 -1
  313. package/src/default_config.ts +17 -17
  314. package/src/manifest/adaptation.ts +2 -1
  315. package/src/parsers/texttracks/ttml/html/apply_line_height.ts +3 -1
  316. package/src/public_types.ts +29 -2
  317. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +0 -84
  318. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +0 -158
  319. package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +0 -406
  320. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +0 -932
  321. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +0 -33
  322. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +0 -49
  323. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +0 -39
  324. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +0 -133
  325. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +0 -119
  326. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +0 -159
@@ -13,7 +13,8 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { IAudioTrackSwitchingMode, IConstructorOptions, IKeySystemOption, ILoadedManifestFormat, ILoadVideoOptions, IManifestLoader, IRequestConfig, IRepresentationFilter, ISegmentLoader, IServerSyncInfos } from "../../public_types";
16
+ import { ISupplementaryImageTrack, ISupplementaryTextTrack } from "../../manifest";
17
+ import { IAudioTrackPreference, IAudioTrackSwitchingMode, IConstructorOptions, IKeySystemOption, ILoadedManifestFormat, ILoadVideoOptions, IManifestLoader, INetworkConfigOption, IRepresentationFilter, ISegmentLoader, IServerSyncInfos, ITextTrackPreference, IVideoTrackPreference } from "../../public_types";
17
18
  /** Value once parsed for the `startAt` option of the `loadVideo` method. */
18
19
  export type IParsedStartAtOption = {
19
20
  position: number;
@@ -26,6 +27,20 @@ export type IParsedStartAtOption = {
26
27
  } | {
27
28
  fromFirstPosition: number;
28
29
  };
30
+ export interface IParsedTransportOptions {
31
+ aggressiveMode?: boolean | undefined;
32
+ checkMediaSegmentIntegrity?: boolean | undefined;
33
+ lowLatencyMode: boolean;
34
+ manifestLoader?: IManifestLoader | undefined;
35
+ referenceDateTime?: number | undefined;
36
+ representationFilter?: IRepresentationFilter | undefined;
37
+ segmentLoader?: ISegmentLoader | undefined;
38
+ serverSyncInfos?: IServerSyncInfos | undefined;
39
+ manifestUpdateUrl?: string | undefined;
40
+ supplementaryImageTracks?: ISupplementaryImageTrack[] | undefined;
41
+ supplementaryTextTracks?: ISupplementaryTextTrack[] | undefined;
42
+ __priv_patchLastSegmentInSidx?: boolean | undefined;
43
+ }
29
44
  /** Options of the RxPlayer's constructor once parsed. */
30
45
  export interface IParsedConstructorOptions {
31
46
  maxBufferAhead: number;
@@ -33,9 +48,19 @@ export interface IParsedConstructorOptions {
33
48
  wantedBufferAhead: number;
34
49
  maxVideoBufferSize: number;
35
50
  limitVideoWidth: boolean;
51
+ throttleWhenHidden: boolean;
36
52
  throttleVideoBitrateWhenHidden: boolean;
53
+ preferredAudioTracks: IAudioTrackPreference[];
54
+ preferredTextTracks: ITextTrackPreference[];
55
+ preferredVideoTracks: IVideoTrackPreference[];
37
56
  videoElement: HTMLMediaElement;
38
- baseBandwidth: number;
57
+ initialVideoBitrate: number;
58
+ initialAudioBitrate: number;
59
+ minAudioBitrate: number;
60
+ minVideoBitrate: number;
61
+ maxAudioBitrate: number;
62
+ maxVideoBitrate: number;
63
+ stopAtEnd: boolean;
39
64
  }
40
65
  /**
41
66
  * Base type which the types for the parsed options of the RxPlayer's
@@ -49,19 +74,15 @@ interface IParsedLoadVideoOptionsBase {
49
74
  keySystems: IKeySystemOption[];
50
75
  lowLatencyMode: boolean;
51
76
  minimumManifestUpdateInterval: number;
52
- requestConfig: IRequestConfig;
77
+ networkConfig: INetworkConfigOption;
78
+ transportOptions: IParsedTransportOptions;
79
+ defaultAudioTrack: IAudioTrackPreference | null | undefined;
80
+ defaultTextTrack: ITextTrackPreference | null | undefined;
53
81
  startAt: IParsedStartAtOption | undefined;
82
+ manualBitrateSwitchingMode: "seamless" | "direct";
54
83
  enableFastSwitching: boolean;
55
- defaultAudioTrackSwitchingMode: IAudioTrackSwitchingMode | undefined;
84
+ audioTrackSwitchingMode: IAudioTrackSwitchingMode;
56
85
  onCodecSwitch: "continue" | "reload";
57
- checkMediaSegmentIntegrity?: boolean | undefined;
58
- manifestLoader?: IManifestLoader | undefined;
59
- referenceDateTime?: number | undefined;
60
- representationFilter?: IRepresentationFilter | undefined;
61
- segmentLoader?: ISegmentLoader | undefined;
62
- serverSyncInfos?: IServerSyncInfos | undefined;
63
- manifestUpdateUrl?: string | undefined;
64
- __priv_patchLastSegmentInSidx?: boolean | undefined;
65
86
  }
66
87
  /**
67
88
  * Options of the RxPlayer's `loadVideo` method once parsed when a "native"
@@ -69,6 +90,7 @@ interface IParsedLoadVideoOptionsBase {
69
90
  */
70
91
  interface IParsedLoadVideoOptionsNative extends IParsedLoadVideoOptionsBase {
71
92
  textTrackMode: "native";
93
+ hideNativeSubtitle: boolean;
72
94
  }
73
95
  /**
74
96
  * Options of the RxPlayer's `loadVideo` method once parsed when an "html"
@@ -103,8 +125,6 @@ declare function checkReloadOptions(options?: {
103
125
  position?: number;
104
126
  relative?: number;
105
127
  };
106
- keySystems?: IKeySystemOption[];
107
- autoPlay?: boolean;
108
128
  }): void;
109
129
  /**
110
130
  * Parse options given to loadVideo and set default options as found
@@ -115,6 +135,7 @@ declare function checkReloadOptions(options?: {
115
135
  *
116
136
  * Throws if any mandatory option is not set.
117
137
  * @param {Object|undefined} options
138
+ * @param {Object} ctx - The player context, needed for some default values.
118
139
  * @returns {Object}
119
140
  */
120
141
  declare function parseLoadVideoOptions(options: ILoadVideoOptions): IParsedLoadVideoOptions;
@@ -21,6 +21,7 @@ import config from "../../config";
21
21
  import log from "../../log";
22
22
  import arrayIncludes from "../../utils/array_includes";
23
23
  import isNullOrUndefined from "../../utils/is_null_or_undefined";
24
+ import { normalizeAudioTrack, normalizeTextTrack, } from "../../utils/languages";
24
25
  import objectAssign from "../../utils/object_assign";
25
26
  import warnOnce from "../../utils/warn_once";
26
27
  /**
@@ -37,9 +38,19 @@ function parseConstructorOptions(options) {
37
38
  var maxBufferBehind;
38
39
  var wantedBufferAhead;
39
40
  var maxVideoBufferSize;
41
+ var throttleWhenHidden;
42
+ var throttleVideoBitrateWhenHidden;
43
+ var preferredAudioTracks;
44
+ var preferredTextTracks;
45
+ var preferredVideoTracks;
40
46
  var videoElement;
41
- var baseBandwidth;
42
- var _a = config.getCurrent(), DEFAULT_BASE_BANDWIDTH = _a.DEFAULT_BASE_BANDWIDTH, DEFAULT_LIMIT_VIDEO_WIDTH = _a.DEFAULT_LIMIT_VIDEO_WIDTH, DEFAULT_MAX_BUFFER_AHEAD = _a.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = _a.DEFAULT_MAX_BUFFER_BEHIND, DEFAULT_MAX_VIDEO_BUFFER_SIZE = _a.DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN = _a.DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN, DEFAULT_WANTED_BUFFER_AHEAD = _a.DEFAULT_WANTED_BUFFER_AHEAD;
47
+ var initialVideoBitrate;
48
+ var initialAudioBitrate;
49
+ var minAudioBitrate;
50
+ var minVideoBitrate;
51
+ var maxAudioBitrate;
52
+ var maxVideoBitrate;
53
+ var _a = config.getCurrent(), DEFAULT_INITIAL_BITRATES = _a.DEFAULT_INITIAL_BITRATES, DEFAULT_LIMIT_VIDEO_WIDTH = _a.DEFAULT_LIMIT_VIDEO_WIDTH, DEFAULT_MIN_BITRATES = _a.DEFAULT_MIN_BITRATES, DEFAULT_MAX_BITRATES = _a.DEFAULT_MAX_BITRATES, DEFAULT_MAX_BUFFER_AHEAD = _a.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = _a.DEFAULT_MAX_BUFFER_BEHIND, DEFAULT_MAX_VIDEO_BUFFER_SIZE = _a.DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_STOP_AT_END = _a.DEFAULT_STOP_AT_END, DEFAULT_THROTTLE_WHEN_HIDDEN = _a.DEFAULT_THROTTLE_WHEN_HIDDEN, DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN = _a.DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN, DEFAULT_WANTED_BUFFER_AHEAD = _a.DEFAULT_WANTED_BUFFER_AHEAD;
43
54
  if (isNullOrUndefined(options.maxBufferAhead)) {
44
55
  maxBufferAhead = DEFAULT_MAX_BUFFER_AHEAD;
45
56
  }
@@ -83,9 +94,61 @@ function parseConstructorOptions(options) {
83
94
  var limitVideoWidth = isNullOrUndefined(options.limitVideoWidth) ?
84
95
  DEFAULT_LIMIT_VIDEO_WIDTH :
85
96
  !!options.limitVideoWidth;
86
- var throttleVideoBitrateWhenHidden = isNullOrUndefined(options.throttleVideoBitrateWhenHidden) ?
87
- DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN :
88
- !!options.throttleVideoBitrateWhenHidden;
97
+ if (!isNullOrUndefined(options.throttleWhenHidden)) {
98
+ warnOnce("`throttleWhenHidden` API is deprecated. Consider using " +
99
+ "`throttleVideoBitrateWhenHidden` instead.");
100
+ throttleWhenHidden = !!options.throttleWhenHidden;
101
+ }
102
+ else {
103
+ throttleWhenHidden = DEFAULT_THROTTLE_WHEN_HIDDEN;
104
+ }
105
+ // `throttleWhenHidden` and `throttleVideoBitrateWhenHidden` can be in conflict
106
+ // Do not activate the latter if the former is
107
+ if (throttleWhenHidden) {
108
+ throttleVideoBitrateWhenHidden = false;
109
+ }
110
+ else {
111
+ throttleVideoBitrateWhenHidden =
112
+ isNullOrUndefined(options.throttleVideoBitrateWhenHidden) ?
113
+ DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN :
114
+ !!options.throttleVideoBitrateWhenHidden;
115
+ }
116
+ if (options.preferredTextTracks !== undefined) {
117
+ if (!Array.isArray(options.preferredTextTracks)) {
118
+ warnOnce("Invalid `preferredTextTracks` option, it should be an Array");
119
+ preferredTextTracks = [];
120
+ }
121
+ else {
122
+ preferredTextTracks = options.preferredTextTracks;
123
+ }
124
+ }
125
+ else {
126
+ preferredTextTracks = [];
127
+ }
128
+ if (options.preferredAudioTracks !== undefined) {
129
+ if (!Array.isArray(options.preferredAudioTracks)) {
130
+ warnOnce("Invalid `preferredAudioTracks` option, it should be an Array");
131
+ preferredAudioTracks = [];
132
+ }
133
+ else {
134
+ preferredAudioTracks = options.preferredAudioTracks;
135
+ }
136
+ }
137
+ else {
138
+ preferredAudioTracks = [];
139
+ }
140
+ if (options.preferredVideoTracks !== undefined) {
141
+ if (!Array.isArray(options.preferredVideoTracks)) {
142
+ warnOnce("Invalid `preferredVideoTracks` option, it should be an Array");
143
+ preferredVideoTracks = [];
144
+ }
145
+ else {
146
+ preferredVideoTracks = options.preferredVideoTracks;
147
+ }
148
+ }
149
+ else {
150
+ preferredVideoTracks = [];
151
+ }
89
152
  if (isNullOrUndefined(options.videoElement)) {
90
153
  videoElement = document.createElement("video");
91
154
  }
@@ -97,18 +160,77 @@ function parseConstructorOptions(options) {
97
160
  throw new Error("Invalid videoElement parameter. Should be a HTMLMediaElement.");
98
161
  /* eslint-enable max-len */
99
162
  }
100
- if (isNullOrUndefined(options.baseBandwidth)) {
101
- baseBandwidth = DEFAULT_BASE_BANDWIDTH;
163
+ if (isNullOrUndefined(options.initialVideoBitrate)) {
164
+ initialVideoBitrate = DEFAULT_INITIAL_BITRATES.video;
102
165
  }
103
166
  else {
104
- baseBandwidth = Number(options.baseBandwidth);
105
- if (isNaN(baseBandwidth)) {
167
+ initialVideoBitrate = Number(options.initialVideoBitrate);
168
+ if (isNaN(initialVideoBitrate)) {
106
169
  /* eslint-disable max-len */
107
- throw new Error("Invalid baseBandwidth parameter. Should be a number.");
170
+ throw new Error("Invalid initialVideoBitrate parameter. Should be a number.");
108
171
  /* eslint-enable max-len */
109
172
  }
110
173
  }
111
- return { maxBufferAhead: maxBufferAhead, maxBufferBehind: maxBufferBehind, limitVideoWidth: limitVideoWidth, videoElement: videoElement, wantedBufferAhead: wantedBufferAhead, maxVideoBufferSize: maxVideoBufferSize, throttleVideoBitrateWhenHidden: throttleVideoBitrateWhenHidden, baseBandwidth: baseBandwidth };
174
+ if (isNullOrUndefined(options.initialAudioBitrate)) {
175
+ initialAudioBitrate = DEFAULT_INITIAL_BITRATES.audio;
176
+ }
177
+ else {
178
+ initialAudioBitrate = Number(options.initialAudioBitrate);
179
+ if (isNaN(initialAudioBitrate)) {
180
+ /* eslint-disable max-len */
181
+ throw new Error("Invalid initialAudioBitrate parameter. Should be a number.");
182
+ /* eslint-enable max-len */
183
+ }
184
+ }
185
+ if (isNullOrUndefined(options.minVideoBitrate)) {
186
+ minVideoBitrate = DEFAULT_MIN_BITRATES.video;
187
+ }
188
+ else {
189
+ minVideoBitrate = Number(options.minVideoBitrate);
190
+ if (isNaN(minVideoBitrate)) {
191
+ throw new Error("Invalid maxVideoBitrate parameter. Should be a number.");
192
+ }
193
+ }
194
+ if (isNullOrUndefined(options.minAudioBitrate)) {
195
+ minAudioBitrate = DEFAULT_MIN_BITRATES.audio;
196
+ }
197
+ else {
198
+ minAudioBitrate = Number(options.minAudioBitrate);
199
+ if (isNaN(minAudioBitrate)) {
200
+ throw new Error("Invalid minAudioBitrate parameter. Should be a number.");
201
+ }
202
+ }
203
+ if (isNullOrUndefined(options.maxVideoBitrate)) {
204
+ maxVideoBitrate = DEFAULT_MAX_BITRATES.video;
205
+ }
206
+ else {
207
+ maxVideoBitrate = Number(options.maxVideoBitrate);
208
+ if (isNaN(maxVideoBitrate)) {
209
+ throw new Error("Invalid maxVideoBitrate parameter. Should be a number.");
210
+ }
211
+ else if (minVideoBitrate > maxVideoBitrate) {
212
+ throw new Error("Invalid maxVideoBitrate parameter. Its value, \"" +
213
+ "".concat(maxVideoBitrate, "\", is inferior to the set minVideoBitrate, \"") +
214
+ "".concat(minVideoBitrate, "\""));
215
+ }
216
+ }
217
+ if (isNullOrUndefined(options.maxAudioBitrate)) {
218
+ maxAudioBitrate = DEFAULT_MAX_BITRATES.audio;
219
+ }
220
+ else {
221
+ maxAudioBitrate = Number(options.maxAudioBitrate);
222
+ if (isNaN(maxAudioBitrate)) {
223
+ throw new Error("Invalid maxAudioBitrate parameter. Should be a number.");
224
+ }
225
+ else if (minAudioBitrate > maxAudioBitrate) {
226
+ throw new Error("Invalid maxAudioBitrate parameter. Its value, \"" +
227
+ "".concat(maxAudioBitrate, "\", is inferior to the set minAudioBitrate, \"") +
228
+ "".concat(minAudioBitrate, "\""));
229
+ }
230
+ }
231
+ var stopAtEnd = isNullOrUndefined(options.stopAtEnd) ? DEFAULT_STOP_AT_END :
232
+ !!options.stopAtEnd;
233
+ return { maxBufferAhead: maxBufferAhead, maxBufferBehind: maxBufferBehind, limitVideoWidth: limitVideoWidth, videoElement: videoElement, wantedBufferAhead: wantedBufferAhead, maxVideoBufferSize: maxVideoBufferSize, throttleWhenHidden: throttleWhenHidden, throttleVideoBitrateWhenHidden: throttleVideoBitrateWhenHidden, preferredAudioTracks: preferredAudioTracks, preferredTextTracks: preferredTextTracks, preferredVideoTracks: preferredVideoTracks, initialAudioBitrate: initialAudioBitrate, initialVideoBitrate: initialVideoBitrate, minAudioBitrate: minAudioBitrate, minVideoBitrate: minVideoBitrate, maxAudioBitrate: maxAudioBitrate, maxVideoBitrate: maxVideoBitrate, stopAtEnd: stopAtEnd };
112
234
  }
113
235
  /**
114
236
  * Check the format of given reload options.
@@ -133,12 +255,6 @@ function checkReloadOptions(options) {
133
255
  ((_d = options === null || options === void 0 ? void 0 : options.reloadAt) === null || _d === void 0 ? void 0 : _d.relative) !== undefined) {
134
256
  throw new Error("API: reload - Invalid 'reloadAt.relative' option format.");
135
257
  }
136
- if (!Array.isArray(options === null || options === void 0 ? void 0 : options.keySystems) && (options === null || options === void 0 ? void 0 : options.keySystems) !== undefined) {
137
- throw new Error("API: reload - Invalid 'keySystems' option format.");
138
- }
139
- if ((options === null || options === void 0 ? void 0 : options.autoPlay) !== undefined && typeof options.autoPlay !== "boolean") {
140
- throw new Error("API: reload - Invalid 'autoPlay' option format.");
141
- }
142
258
  }
143
259
  /**
144
260
  * Parse options given to loadVideo and set default options as found
@@ -149,29 +265,30 @@ function checkReloadOptions(options) {
149
265
  *
150
266
  * Throws if any mandatory option is not set.
151
267
  * @param {Object|undefined} options
268
+ * @param {Object} ctx - The player context, needed for some default values.
152
269
  * @returns {Object}
153
270
  */
154
271
  function parseLoadVideoOptions(options) {
155
- var _a, _b, _c;
272
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
156
273
  var url;
157
274
  var transport;
158
275
  var keySystems;
159
276
  var textTrackMode;
160
277
  var textTrackElement;
161
278
  var startAt;
162
- var _d = config.getCurrent(), DEFAULT_AUTO_PLAY = _d.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = _d.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = _d.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_TEXT_TRACK_MODE = _d.DEFAULT_TEXT_TRACK_MODE;
279
+ var _k = config.getCurrent(), DEFAULT_AUDIO_TRACK_SWITCHING_MODE = _k.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = _k.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = _k.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = _k.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = _k.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_SHOW_NATIVE_SUBTITLE = _k.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_TEXT_TRACK_MODE = _k.DEFAULT_TEXT_TRACK_MODE;
163
280
  if (isNullOrUndefined(options)) {
164
281
  throw new Error("No option set on loadVideo");
165
282
  }
166
283
  if (!isNullOrUndefined(options.url)) {
167
284
  url = String(options.url);
168
285
  }
169
- else if (isNullOrUndefined(options.initialManifest) &&
170
- isNullOrUndefined(options.manifestLoader)) {
286
+ else if (isNullOrUndefined((_a = options.transportOptions) === null || _a === void 0 ? void 0 : _a.initialManifest) &&
287
+ isNullOrUndefined((_b = options.transportOptions) === null || _b === void 0 ? void 0 : _b.manifestLoader)) {
171
288
  throw new Error("Unable to load a content: no url set on loadVideo.\n" +
172
289
  "Please provide at least either an `url` argument, a " +
173
- "`initialManifest` option or a " +
174
- "`manifestLoader` option so the RxPlayer " +
290
+ "`transportOptions.initialManifest` option or a " +
291
+ "`transportOptions.manifestLoader` option so the RxPlayer " +
175
292
  "can load the content.");
176
293
  }
177
294
  if (isNullOrUndefined(options.transport)) {
@@ -180,6 +297,11 @@ function parseLoadVideoOptions(options) {
180
297
  else {
181
298
  transport = String(options.transport);
182
299
  }
300
+ if (!isNullOrUndefined((_c = options.transportOptions) === null || _c === void 0 ? void 0 : _c.aggressiveMode)) {
301
+ warnOnce("`transportOptions.aggressiveMode` is deprecated and won't " +
302
+ "be present in the next major version. " +
303
+ "Please open an issue if you still need this.");
304
+ }
183
305
  var autoPlay = isNullOrUndefined(options.autoPlay) ? DEFAULT_AUTO_PLAY :
184
306
  !!options.autoPlay;
185
307
  if (isNullOrUndefined(options.keySystems)) {
@@ -195,6 +317,11 @@ function parseLoadVideoOptions(options) {
195
317
  throw new Error("Invalid key system given: Missing type string or " +
196
318
  "getLicense callback");
197
319
  }
320
+ if (!isNullOrUndefined(keySystem.onKeyStatusesChange)) {
321
+ warnOnce("`keySystems[].onKeyStatusesChange` is deprecated and won't " +
322
+ "be present in the next major version. " +
323
+ "Please open an issue if you still need this.");
324
+ }
198
325
  if (!isNullOrUndefined(keySystem.throwOnLicenseExpiration)) {
199
326
  warnOnce("`keySystems[].throwOnLicenseExpiration` is deprecated and won't " +
200
327
  "be present in the next major version. " +
@@ -205,17 +332,24 @@ function parseLoadVideoOptions(options) {
205
332
  var lowLatencyMode = options.lowLatencyMode === undefined ?
206
333
  false :
207
334
  !!options.lowLatencyMode;
208
- var initialManifest = options.initialManifest;
209
- var minimumManifestUpdateInterval = (_a = options.minimumManifestUpdateInterval) !== null && _a !== void 0 ? _a : 0;
210
- var defaultAudioTrackSwitchingMode = (_b = options.defaultAudioTrackSwitchingMode) !== null && _b !== void 0 ? _b : undefined;
211
- if (defaultAudioTrackSwitchingMode !== undefined &&
212
- !arrayIncludes(["seamless", "direct", "reload"], defaultAudioTrackSwitchingMode)) {
213
- log.warn("The `defaultAudioTrackSwitchingMode` loadVideo option must match one of " +
335
+ var transportOptsArg = typeof options.transportOptions === "object" &&
336
+ options.transportOptions !== null ?
337
+ options.transportOptions :
338
+ {};
339
+ var initialManifest = (_d = options.transportOptions) === null || _d === void 0 ? void 0 : _d.initialManifest;
340
+ var minimumManifestUpdateInterval = (_f = (_e = options.transportOptions) === null || _e === void 0 ? void 0 : _e.minimumManifestUpdateInterval) !== null && _f !== void 0 ? _f : 0;
341
+ var audioTrackSwitchingMode = isNullOrUndefined(options.audioTrackSwitchingMode)
342
+ ? DEFAULT_AUDIO_TRACK_SWITCHING_MODE
343
+ : options.audioTrackSwitchingMode;
344
+ if (!arrayIncludes(["seamless", "direct", "reload"], audioTrackSwitchingMode)) {
345
+ log.warn("The `audioTrackSwitchingMode` loadVideo option must match one of " +
214
346
  "the following strategy name:\n" +
215
347
  "- `seamless`\n" +
216
348
  "- `direct`\n" +
217
- "- `reload`");
218
- defaultAudioTrackSwitchingMode = undefined;
349
+ "- `reload`\n" +
350
+ "If badly set, " + DEFAULT_AUDIO_TRACK_SWITCHING_MODE +
351
+ " strategy will be used as default");
352
+ audioTrackSwitchingMode = DEFAULT_AUDIO_TRACK_SWITCHING_MODE;
219
353
  }
220
354
  var onCodecSwitch = isNullOrUndefined(options.onCodecSwitch)
221
355
  ? DEFAULT_CODEC_SWITCHING_BEHAVIOR
@@ -229,7 +363,48 @@ function parseLoadVideoOptions(options) {
229
363
  " will be used as default");
230
364
  onCodecSwitch = DEFAULT_CODEC_SWITCHING_BEHAVIOR;
231
365
  }
232
- if (!isNullOrUndefined(options.manifestUpdateUrl)) {
366
+ var transportOptions = objectAssign({}, transportOptsArg, {
367
+ /* eslint-disable import/no-deprecated */
368
+ supplementaryImageTracks: [],
369
+ supplementaryTextTracks: [],
370
+ /* eslint-enable import/no-deprecated */
371
+ lowLatencyMode: lowLatencyMode,
372
+ });
373
+ // remove already parsed data to simplify the `transportOptions` object
374
+ delete transportOptions.initialManifest;
375
+ delete transportOptions.minimumManifestUpdateInterval;
376
+ if (options.supplementaryTextTracks !== undefined) {
377
+ warnOnce("The `supplementaryTextTracks` loadVideo option is deprecated.\n" +
378
+ "Please use the `TextTrackRenderer` tool instead.");
379
+ var supplementaryTextTracks = Array.isArray(options.supplementaryTextTracks) ?
380
+ options.supplementaryTextTracks : [options.supplementaryTextTracks];
381
+ for (var _l = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _l < supplementaryTextTracks_1.length; _l++) {
382
+ var supplementaryTextTrack = supplementaryTextTracks_1[_l];
383
+ if (typeof supplementaryTextTrack.language !== "string" ||
384
+ typeof supplementaryTextTrack.mimeType !== "string" ||
385
+ typeof supplementaryTextTrack.url !== "string") {
386
+ throw new Error("Invalid supplementary text track given. " +
387
+ "Missing either language, mimetype or url");
388
+ }
389
+ }
390
+ transportOptions.supplementaryTextTracks = supplementaryTextTracks;
391
+ }
392
+ if (options.supplementaryImageTracks !== undefined) {
393
+ warnOnce("The `supplementaryImageTracks` loadVideo option is deprecated.\n" +
394
+ "Please use the `parseBifThumbnails` tool instead.");
395
+ var supplementaryImageTracks = Array.isArray(options.supplementaryImageTracks) ?
396
+ options.supplementaryImageTracks : [options.supplementaryImageTracks];
397
+ for (var _m = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _m < supplementaryImageTracks_1.length; _m++) {
398
+ var supplementaryImageTrack = supplementaryImageTracks_1[_m];
399
+ if (typeof supplementaryImageTrack.mimeType !== "string" ||
400
+ typeof supplementaryImageTrack.url !== "string") {
401
+ throw new Error("Invalid supplementary image track given. " +
402
+ "Missing either mimetype or url");
403
+ }
404
+ }
405
+ transportOptions.supplementaryImageTracks = supplementaryImageTracks;
406
+ }
407
+ if (!isNullOrUndefined((_g = options.transportOptions) === null || _g === void 0 ? void 0 : _g.manifestUpdateUrl)) {
233
408
  warnOnce("`manifestUpdateUrl` API is deprecated, please open an issue if you" +
234
409
  " still rely on this.");
235
410
  }
@@ -242,6 +417,24 @@ function parseLoadVideoOptions(options) {
242
417
  }
243
418
  textTrackMode = options.textTrackMode;
244
419
  }
420
+ if (!isNullOrUndefined(options.defaultAudioTrack)) {
421
+ warnOnce("The `defaultAudioTrack` loadVideo option is deprecated.\n" +
422
+ "Please use the `preferredAudioTracks` constructor option or the" +
423
+ "`setPreferredAudioTracks` method instead");
424
+ }
425
+ var defaultAudioTrack = normalizeAudioTrack(options.defaultAudioTrack);
426
+ if (!isNullOrUndefined(options.defaultTextTrack)) {
427
+ warnOnce("The `defaultTextTrack` loadVideo option is deprecated.\n" +
428
+ "Please use the `preferredTextTracks` constructor option or the" +
429
+ "`setPreferredTextTracks` method instead");
430
+ }
431
+ var defaultTextTrack = normalizeTextTrack(options.defaultTextTrack);
432
+ var hideNativeSubtitle = !DEFAULT_SHOW_NATIVE_SUBTITLE;
433
+ if (!isNullOrUndefined(options.hideNativeSubtitle)) {
434
+ warnOnce("The `hideNativeSubtitle` loadVideo option is deprecated");
435
+ hideNativeSubtitle = !!options.hideNativeSubtitle;
436
+ }
437
+ var manualBitrateSwitchingMode = (_h = options.manualBitrateSwitchingMode) !== null && _h !== void 0 ? _h : DEFAULT_MANUAL_BITRATE_SWITCHING_MODE;
245
438
  var enableFastSwitching = isNullOrUndefined(options.enableFastSwitching) ?
246
439
  DEFAULT_ENABLE_FAST_SWITCHING :
247
440
  options.enableFastSwitching;
@@ -274,20 +467,10 @@ function parseLoadVideoOptions(options) {
274
467
  startAt = options.startAt;
275
468
  }
276
469
  }
277
- var requestConfig = (_c = options.requestConfig) !== null && _c !== void 0 ? _c : {};
278
- // All those eslint disable are needed because the option is voluntarily
279
- // hidden from the base type to limit discovery of this hidden API.
280
- /* eslint-disable @typescript-eslint/no-explicit-any */
281
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
282
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
283
- return { __priv_patchLastSegmentInSidx: options.__priv_patchLastSegmentInSidx,
284
- /* eslint-enable @typescript-eslint/no-explicit-any */
285
- /* eslint-enable @typescript-eslint/no-unsafe-assignment */
286
- /* eslint-enable @typescript-eslint/no-unsafe-member-access */
287
- checkMediaSegmentIntegrity: options.checkMediaSegmentIntegrity, autoPlay: autoPlay, defaultAudioTrackSwitchingMode: defaultAudioTrackSwitchingMode, enableFastSwitching: enableFastSwitching, initialManifest: initialManifest, keySystems: keySystems, lowLatencyMode: lowLatencyMode, manifestLoader: options.manifestLoader,
288
- manifestUpdateUrl: options.manifestUpdateUrl, minimumManifestUpdateInterval: minimumManifestUpdateInterval, requestConfig: requestConfig, onCodecSwitch: onCodecSwitch, referenceDateTime: options.referenceDateTime,
289
- representationFilter: options.representationFilter,
290
- segmentLoader: options.segmentLoader,
291
- serverSyncInfos: options.serverSyncInfos, startAt: startAt, textTrackElement: textTrackElement, textTrackMode: textTrackMode, transport: transport, url: url };
470
+ var networkConfig = (_j = options.networkConfig) !== null && _j !== void 0 ? _j : {};
471
+ // TODO without cast
472
+ /* eslint-disable @typescript-eslint/consistent-type-assertions */
473
+ return { autoPlay: autoPlay, defaultAudioTrack: defaultAudioTrack, defaultTextTrack: defaultTextTrack, enableFastSwitching: enableFastSwitching, hideNativeSubtitle: hideNativeSubtitle, keySystems: keySystems, initialManifest: initialManifest, lowLatencyMode: lowLatencyMode, manualBitrateSwitchingMode: manualBitrateSwitchingMode, audioTrackSwitchingMode: audioTrackSwitchingMode, minimumManifestUpdateInterval: minimumManifestUpdateInterval, networkConfig: networkConfig, onCodecSwitch: onCodecSwitch, startAt: startAt, textTrackElement: textTrackElement, textTrackMode: textTrackMode, transport: transport, transportOptions: transportOptions, url: url };
474
+ /* eslint-enable @typescript-eslint/consistent-type-assertions */
292
475
  }
293
476
  export { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, };