rx-player 3.26.3-dev.2022021400 → 3.27.0-dev.2022032100

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 (400) hide show
  1. package/.eslintrc.js +0 -4
  2. package/CHANGELOG.md +17 -2
  3. package/FILES.md +5 -4
  4. package/VERSION +1 -1
  5. package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
  6. package/dist/_esm5.processed/compat/browser_detection.js +4 -2
  7. package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
  8. package/dist/_esm5.processed/compat/eme/close_session.js +143 -36
  9. package/dist/_esm5.processed/compat/eme/custom_key_system_access.d.ts +15 -0
  10. package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +1 -17
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +6 -7
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  13. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +20 -22
  14. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +58 -40
  15. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +49 -48
  16. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  17. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  18. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  19. package/dist/_esm5.processed/compat/eme/load_session.js +67 -17
  20. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  21. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  22. package/dist/_esm5.processed/config.d.ts +166 -1080
  23. package/dist/_esm5.processed/config.js +17 -1119
  24. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  27. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  28. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +2 -1
  29. package/dist/_esm5.processed/core/api/option_utils.d.ts +6 -3
  30. package/dist/_esm5.processed/core/api/option_utils.js +21 -7
  31. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  32. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  33. package/dist/_esm5.processed/core/api/public_api.js +73 -35
  34. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -49
  35. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +25 -65
  36. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  37. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +103 -0
  38. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  39. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +40 -0
  40. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  41. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +865 -0
  42. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  43. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  44. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  45. package/dist/_esm5.processed/core/decrypt/create_session.js +173 -0
  46. package/dist/_esm5.processed/core/{eme/dispose_media_keys.d.ts → decrypt/dispose_decryption_resources.d.ts} +4 -4
  47. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  48. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  49. package/dist/_esm5.processed/core/decrypt/find_key_system.js +299 -0
  50. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  51. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  52. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  53. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  54. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  55. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  56. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  57. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  58. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  60. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  61. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  62. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +119 -241
  63. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  65. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  66. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  67. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  68. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  69. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +84 -0
  70. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  73. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  74. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  75. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  76. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  77. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  78. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  79. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  81. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  82. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  83. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +302 -0
  84. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  85. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  86. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  87. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  88. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  89. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  91. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  92. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -5
  93. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
  94. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  95. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +2 -3
  96. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  97. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
  98. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  99. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +6 -3
  100. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  101. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  102. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  103. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  104. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  105. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  106. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  107. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  108. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  109. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  110. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  111. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  112. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  113. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  114. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  115. package/dist/_esm5.processed/core/stream/index.d.ts +1 -0
  116. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  117. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  118. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  119. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +15 -11
  120. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +6 -3
  121. package/dist/_esm5.processed/core/stream/period/index.d.ts +1 -0
  122. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +5 -12
  123. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  124. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +2 -2
  125. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  126. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  127. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  128. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  129. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  130. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  131. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  132. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  133. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  134. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  135. package/dist/_esm5.processed/default_config.js +1145 -0
  136. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  137. package/dist/_esm5.processed/experimental/index.js +2 -0
  138. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  139. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +6 -7
  140. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +2 -3
  141. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +15 -0
  142. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -2
  143. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +3 -5
  144. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +3 -5
  145. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +1 -2
  146. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +1 -2
  147. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +1 -2
  148. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -2
  149. package/dist/_esm5.processed/features/features_object.js +1 -1
  150. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  151. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  152. package/dist/_esm5.processed/features/list/eme.js +5 -5
  153. package/dist/_esm5.processed/features/types.d.ts +3 -3
  154. package/dist/_esm5.processed/manifest/manifest.d.ts +1 -14
  155. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  156. package/dist/_esm5.processed/manifest/representation.d.ts +35 -3
  157. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  158. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  159. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -1
  160. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +87 -75
  161. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  162. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +4 -5
  163. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  164. package/dist/_esm5.processed/public_types.d.ts +3 -2
  165. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +1 -2
  166. package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +4 -3
  167. package/dist/_esm5.processed/transports/dash/image_pipelines.js +60 -11
  168. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -2
  169. package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
  170. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +1 -1
  171. package/dist/_esm5.processed/transports/dash/segment_loader.js +3 -4
  172. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  173. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -2
  174. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  175. package/dist/_esm5.processed/transports/local/segment_loader.js +2 -3
  176. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  177. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  178. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +2 -3
  179. package/dist/_esm5.processed/transports/smooth/pipelines.js +71 -14
  180. package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -4
  181. package/dist/_esm5.processed/transports/types.d.ts +22 -0
  182. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -2
  183. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -2
  184. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -3
  185. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  186. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  187. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  188. package/dist/_esm5.processed/utils/reference.js +72 -24
  189. package/dist/_esm5.processed/utils/request/fetch.js +1 -2
  190. package/dist/_esm5.processed/utils/request/xhr.js +2 -3
  191. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  192. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  193. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  194. package/dist/rx-player.js +4936 -3340
  195. package/dist/rx-player.min.js +1 -1
  196. package/dummy +1 -0
  197. package/{dist/_esm5.processed/utils/promise.d.ts → experimental/index.d.ts} +1 -2
  198. package/{dist/_esm5.processed/utils/promise.js → experimental/index.js} +1 -3
  199. package/package.json +32 -35
  200. package/{src/typings/pinkie.d.ts → scripts/build/templates/experimental/index.d.ts} +1 -4
  201. package/scripts/build/templates/experimental/index.js +16 -0
  202. package/scripts/update-version +2 -2
  203. package/sonar-project.properties +1 -1
  204. package/src/README.md +6 -6
  205. package/src/compat/__tests__/play.test.ts +2 -4
  206. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  207. package/src/compat/browser_detection.ts +4 -2
  208. package/src/compat/eme/close_session.ts +89 -56
  209. package/src/compat/eme/custom_key_system_access.ts +1 -2
  210. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +6 -7
  211. package/src/compat/eme/custom_media_keys/index.ts +20 -38
  212. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +68 -52
  213. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +57 -56
  214. package/src/compat/eme/generate_key_request.ts +25 -33
  215. package/src/compat/eme/load_session.ts +28 -31
  216. package/src/compat/event_listeners.ts +2 -1
  217. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  218. package/src/config.ts +17 -1210
  219. package/src/core/README.md +1 -1
  220. package/src/core/abr/bandwidth_estimator.ts +4 -4
  221. package/src/core/abr/network_analyzer.ts +5 -6
  222. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  223. package/src/core/api/__tests__/option_utils.test.ts +29 -17
  224. package/src/core/api/get_player_state.ts +1 -1
  225. package/src/core/api/index.ts +3 -0
  226. package/src/core/api/option_utils.ts +42 -23
  227. package/src/core/api/playback_observer.ts +12 -8
  228. package/src/core/api/public_api.ts +152 -113
  229. package/src/core/decrypt/README.md +22 -0
  230. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  231. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  232. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  233. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  234. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  235. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +31 -93
  236. package/src/core/{eme → decrypt}/attach_media_keys.ts +48 -56
  237. package/src/core/decrypt/clear_on_stop.ts +47 -0
  238. package/src/core/decrypt/content_decryptor.ts +1157 -0
  239. package/src/core/decrypt/create_or_load_session.ts +130 -0
  240. package/src/core/decrypt/create_session.ts +174 -0
  241. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  242. package/src/core/{eme → decrypt}/find_key_system.ts +111 -122
  243. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  244. package/src/core/decrypt/get_media_keys.ts +145 -0
  245. package/src/core/{eme → decrypt}/index.ts +11 -8
  246. package/src/core/decrypt/init_media_keys.ts +51 -0
  247. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  248. package/src/core/decrypt/set_server_certificate.ts +104 -0
  249. package/src/core/{eme → decrypt}/types.ts +128 -258
  250. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  251. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  252. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  253. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  254. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  255. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +19 -20
  256. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  257. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  258. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  259. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  260. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  261. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  262. package/src/core/decrypt/utils/loaded_sessions_store.ts +317 -0
  263. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  264. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  265. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  266. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  267. package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -7
  268. package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
  269. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  270. package/src/core/fetchers/utils/try_urls_with_backoff.ts +2 -3
  271. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  272. package/src/core/init/get_initial_time.ts +2 -1
  273. package/src/core/init/initialize_directfile.ts +17 -20
  274. package/src/core/init/initialize_media_source.ts +44 -106
  275. package/src/core/init/link_drm_and_content.ts +176 -0
  276. package/src/core/init/manifest_update_scheduler.ts +5 -3
  277. package/src/core/init/stall_avoider.ts +6 -5
  278. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  279. package/src/core/init/types.ts +1 -39
  280. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  281. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -4
  282. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  283. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  284. package/src/core/stream/events_generators.ts +9 -4
  285. package/src/core/stream/index.ts +1 -0
  286. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  287. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  288. package/src/core/stream/period/get_adaptation_switch_strategy.ts +25 -15
  289. package/src/core/stream/period/index.ts +1 -0
  290. package/src/core/stream/period/period_stream.ts +10 -16
  291. package/src/core/stream/representation/force_garbage_collection.ts +2 -2
  292. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  293. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  294. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  295. package/src/core/stream/representation/push_media_segment.ts +3 -2
  296. package/src/core/stream/representation/representation_stream.ts +30 -7
  297. package/src/core/stream/types.ts +1 -1
  298. package/src/default_config.ts +1241 -0
  299. package/src/experimental/index.ts +5 -0
  300. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  301. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +7 -7
  302. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  303. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +9 -10
  304. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +2 -4
  305. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +2 -3
  306. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +1 -2
  307. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +3 -5
  308. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +3 -5
  309. package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +1 -2
  310. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +1 -2
  311. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +1 -2
  312. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +1 -2
  313. package/src/features/__tests__/initialize_features.test.ts +2 -2
  314. package/src/features/features_object.ts +1 -1
  315. package/src/features/initialize_features.ts +1 -1
  316. package/src/features/list/__tests__/eme.test.ts +5 -5
  317. package/src/features/list/eme.ts +5 -5
  318. package/src/features/types.ts +3 -10
  319. package/src/manifest/manifest.ts +6 -76
  320. package/src/manifest/representation.ts +36 -3
  321. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  322. package/src/parsers/manifest/dash/common/indexes/template.ts +1 -2
  323. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +1 -1
  324. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +109 -64
  325. package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -2
  326. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +4 -5
  327. package/src/parsers/manifest/smooth/create_parser.ts +1 -0
  328. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  329. package/src/public_types.ts +6 -1
  330. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +1 -2
  331. package/src/transports/dash/image_pipelines.ts +15 -14
  332. package/src/transports/dash/init_segment_loader.ts +1 -2
  333. package/src/transports/dash/manifest_parser.ts +2 -3
  334. package/src/transports/dash/segment_loader.ts +4 -5
  335. package/src/transports/dash/segment_parser.ts +5 -0
  336. package/src/transports/dash/text_loader.ts +2 -3
  337. package/src/transports/dash/text_parser.ts +8 -0
  338. package/src/transports/local/segment_loader.ts +2 -3
  339. package/src/transports/local/segment_parser.ts +4 -0
  340. package/src/transports/local/text_parser.ts +8 -0
  341. package/src/transports/metaplaylist/pipelines.ts +2 -3
  342. package/src/transports/smooth/pipelines.ts +26 -14
  343. package/src/transports/smooth/segment_loader.ts +5 -6
  344. package/src/transports/types.ts +22 -0
  345. package/src/transports/utils/call_custom_manifest_loader.ts +1 -2
  346. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  347. package/src/utils/cancellable_sleep.ts +1 -2
  348. package/src/utils/cast_to_observable.ts +0 -2
  349. package/src/utils/deep_merge.ts +46 -0
  350. package/src/utils/reference.ts +116 -23
  351. package/src/utils/request/fetch.ts +1 -2
  352. package/src/utils/request/xhr.ts +3 -3
  353. package/src/utils/rx-from_cancellable_promise.ts +7 -2
  354. package/src/utils/task_canceller.ts +6 -4
  355. package/tsconfig.json +0 -1
  356. package/tsconfig.modules.json +0 -1
  357. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  358. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  359. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  360. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  361. package/dist/_esm5.processed/core/eme/dispose_eme.d.ts +0 -19
  362. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  363. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  364. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  365. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  366. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -253
  367. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  368. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  369. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  370. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  371. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  372. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  373. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  374. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  375. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  376. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  377. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  378. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  379. package/src/core/eme/README.md +0 -26
  380. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  381. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  382. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  383. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  384. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  385. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  386. package/src/core/eme/clear_eme_session.ts +0 -62
  387. package/src/core/eme/create_session.ts +0 -187
  388. package/src/core/eme/dispose_eme.ts +0 -25
  389. package/src/core/eme/dispose_media_keys.ts +0 -46
  390. package/src/core/eme/eme_manager.ts +0 -387
  391. package/src/core/eme/get_media_keys.ts +0 -141
  392. package/src/core/eme/get_session.ts +0 -135
  393. package/src/core/eme/init_media_keys.ts +0 -106
  394. package/src/core/eme/set_server_certificate.ts +0 -115
  395. package/src/core/eme/utils/close_session.ts +0 -113
  396. package/src/core/eme/utils/init_data_store.ts +0 -234
  397. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  398. package/src/core/init/create_eme_manager.ts +0 -95
  399. package/src/utils/__tests__/promise.test.ts +0 -23
  400. package/src/utils/promise.ts +0 -20
@@ -15,7 +15,6 @@
15
15
  */
16
16
  import config from "../../config";
17
17
  import EWMA from "./utils/ewma";
18
- var ABR_MINIMUM_TOTAL_BYTES = config.ABR_MINIMUM_TOTAL_BYTES, ABR_MINIMUM_CHUNK_SIZE = config.ABR_MINIMUM_CHUNK_SIZE, ABR_FAST_EMA = config.ABR_FAST_EMA, ABR_SLOW_EMA = config.ABR_SLOW_EMA;
19
18
  /**
20
19
  * Calculate a mean bandwidth based on the bytes downloaded and the amount
21
20
  * of time needed to do so.
@@ -25,6 +24,7 @@ var ABR_MINIMUM_TOTAL_BYTES = config.ABR_MINIMUM_TOTAL_BYTES, ABR_MINIMUM_CHUNK_
25
24
  */
26
25
  var BandwidthEstimator = /** @class */ (function () {
27
26
  function BandwidthEstimator() {
27
+ var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
28
28
  /**
29
29
  * A fast-moving average.
30
30
  * @private
@@ -49,6 +49,7 @@ var BandwidthEstimator = /** @class */ (function () {
49
49
  * request.
50
50
  */
51
51
  BandwidthEstimator.prototype.addSample = function (durationInMs, numberOfBytes) {
52
+ var ABR_MINIMUM_CHUNK_SIZE = config.getCurrent().ABR_MINIMUM_CHUNK_SIZE;
52
53
  if (numberOfBytes < ABR_MINIMUM_CHUNK_SIZE) {
53
54
  return;
54
55
  }
@@ -63,6 +64,7 @@ var BandwidthEstimator = /** @class */ (function () {
63
64
  * @returns {Number|undefined}
64
65
  */
65
66
  BandwidthEstimator.prototype.getEstimate = function () {
67
+ var ABR_MINIMUM_TOTAL_BYTES = config.getCurrent().ABR_MINIMUM_TOTAL_BYTES;
66
68
  if (this._bytesSampled < ABR_MINIMUM_TOTAL_BYTES) {
67
69
  return undefined;
68
70
  }
@@ -74,6 +76,7 @@ var BandwidthEstimator = /** @class */ (function () {
74
76
  * Reset the bandwidth estimation.
75
77
  */
76
78
  BandwidthEstimator.prototype.reset = function () {
79
+ var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
77
80
  this._fastEWMA = new EWMA(ABR_FAST_EMA);
78
81
  this._slowEWMA = new EWMA(ABR_SLOW_EMA);
79
82
  this._bytesSampled = 0;
@@ -17,7 +17,6 @@ import config from "../../config";
17
17
  import log from "../../log";
18
18
  import arrayFind from "../../utils/array_find";
19
19
  import EWMA from "./utils/ewma";
20
- var ABR_REGULAR_FACTOR = config.ABR_REGULAR_FACTOR, ABR_STARVATION_DURATION_DELTA = config.ABR_STARVATION_DURATION_DELTA, ABR_STARVATION_FACTOR = config.ABR_STARVATION_FACTOR, ABR_STARVATION_GAP = config.ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP = config.OUT_OF_STARVATION_GAP;
21
20
  /**
22
21
  * Get pending segment request(s) starting with the asked segment position.
23
22
  * @param {Object} requests - Every requests pending, in a chronological
@@ -214,6 +213,7 @@ function shouldDirectlySwitchToLowBitrate(playbackInfo, requests, lowLatencyMode
214
213
  */
215
214
  var NetworkAnalyzer = /** @class */ (function () {
216
215
  function NetworkAnalyzer(initialBitrate, lowLatencyMode) {
216
+ var _a = config.getCurrent(), ABR_STARVATION_GAP = _a.ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP = _a.OUT_OF_STARVATION_GAP, ABR_STARVATION_FACTOR = _a.ABR_STARVATION_FACTOR, ABR_REGULAR_FACTOR = _a.ABR_REGULAR_FACTOR;
217
217
  this._initialBitrate = initialBitrate;
218
218
  this._inStarvationMode = false;
219
219
  this._lowLatencyMode = lowLatencyMode;
@@ -253,6 +253,7 @@ var NetworkAnalyzer = /** @class */ (function () {
253
253
  var bufferGap = playbackInfo.bufferGap, position = playbackInfo.position, duration = playbackInfo.duration;
254
254
  var realBufferGap = isFinite(bufferGap) ? bufferGap :
255
255
  0;
256
+ var ABR_STARVATION_DURATION_DELTA = config.getCurrent().ABR_STARVATION_DURATION_DELTA;
256
257
  // check if should get in/out of starvation mode
257
258
  if (isNaN(duration) ||
258
259
  realBufferGap + position < duration - ABR_STARVATION_DURATION_DELTA) {
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import config from "../../config";
17
- var FORCED_ENDED_THRESHOLD = config.FORCED_ENDED_THRESHOLD;
18
17
  /** Player state dictionnary. */
19
18
  export var PLAYER_STATES = { STOPPED: "STOPPED",
20
19
  LOADED: "LOADED",
@@ -35,6 +34,7 @@ export var PLAYER_STATES = { STOPPED: "STOPPED",
35
34
  * @returns {string}
36
35
  */
37
36
  export default function getLoadedContentState(mediaElement, isPlaying, stalledStatus) {
37
+ var FORCED_ENDED_THRESHOLD = config.getCurrent().FORCED_ENDED_THRESHOLD;
38
38
  if (mediaElement.ended) {
39
39
  return PLAYER_STATES.ENDED;
40
40
  }
@@ -15,8 +15,9 @@
15
15
  */
16
16
  import PlaybackObserver from "./playback_observer";
17
17
  import Player from "./public_api";
18
- export { IStreamEvent, IStreamEventData, } from "./public_api";
18
+ export { IBitrateEstimate, IPositionUpdateItem, IStreamEvent, IStreamEventData, } from "./public_api";
19
19
  export { PlaybackObserver };
20
+ export { IPlayerState } from "./get_player_state";
20
21
  export { IPlaybackObservation, IPlaybackObserverEventType, IReadOnlyPlaybackObserver, IFreezingStatus, IRebufferingStatus, } from "./playback_observer";
21
22
  export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, } from "./option_utils";
22
23
  export { ITMAudioTrackListItem, ITMTextTrackListItem, ITMVideoTrackListItem, ITMAudioTrack, ITMTextTrack, ITMVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, } from "./track_choice_manager";
@@ -131,8 +131,9 @@ function createVideoTracks(videoTracks) {
131
131
  var MediaElementTrackChoiceManager = /** @class */ (function (_super) {
132
132
  __extends(MediaElementTrackChoiceManager, _super);
133
133
  function MediaElementTrackChoiceManager(mediaElement) {
134
+ var _this = this;
134
135
  var _a, _b, _c;
135
- var _this = _super.call(this) || this;
136
+ _this = _super.call(this) || this;
136
137
  _this._preferredAudioTracks = [];
137
138
  _this._preferredTextTracks = [];
138
139
  _this._preferredVideoTracks = [];
@@ -15,7 +15,8 @@
15
15
  */
16
16
  import { IRepresentationFilter } from "../../manifest";
17
17
  import { ICustomManifestLoader, ICustomSegmentLoader, ILoadedManifestFormat, ITransportOptions as IParsedTransportOptions } from "../../transports";
18
- import { IKeySystemOption } from "../eme";
18
+ import { IKeySystemOption } from "../decrypt";
19
+ import { IAudioTrackSwitchingMode } from "../stream";
19
20
  import { IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference } from "./track_choice_manager";
20
21
  export { IKeySystemOption };
21
22
  /** Value of the `serverSyncInfos` transport option. */
@@ -154,6 +155,7 @@ export interface IConstructorOptions {
154
155
  maxBufferAhead?: number;
155
156
  maxBufferBehind?: number;
156
157
  wantedBufferAhead?: number;
158
+ maxVideoBufferSize?: number;
157
159
  limitVideoWidth?: boolean;
158
160
  throttleWhenHidden?: boolean;
159
161
  throttleVideoBitrateWhenHidden?: boolean;
@@ -174,6 +176,7 @@ export interface IParsedConstructorOptions {
174
176
  maxBufferAhead: number;
175
177
  maxBufferBehind: number;
176
178
  wantedBufferAhead: number;
179
+ maxVideoBufferSize: number;
177
180
  limitVideoWidth: boolean;
178
181
  throttleWhenHidden: boolean;
179
182
  throttleVideoBitrateWhenHidden: boolean;
@@ -204,7 +207,7 @@ export interface ILoadVideoOptions {
204
207
  textTrackElement?: HTMLElement;
205
208
  manualBitrateSwitchingMode?: "seamless" | "direct";
206
209
  enableFastSwitching?: boolean;
207
- audioTrackSwitchingMode?: "seamless" | "direct";
210
+ audioTrackSwitchingMode?: IAudioTrackSwitchingMode;
208
211
  onCodecSwitch?: "continue" | "reload";
209
212
  supplementaryTextTracks?: ISupplementaryTextTrackOption[];
210
213
  supplementaryImageTracks?: ISupplementaryImageTrackOption[];
@@ -230,7 +233,7 @@ interface IParsedLoadVideoOptionsBase {
230
233
  startAt: IParsedStartAtOption | undefined;
231
234
  manualBitrateSwitchingMode: "seamless" | "direct";
232
235
  enableFastSwitching: boolean;
233
- audioTrackSwitchingMode: "seamless" | "direct";
236
+ audioTrackSwitchingMode: IAudioTrackSwitchingMode;
234
237
  onCodecSwitch: "continue" | "reload";
235
238
  }
236
239
  /**
@@ -24,7 +24,6 @@ import isNullOrUndefined from "../../utils/is_null_or_undefined";
24
24
  import { normalizeAudioTrack, normalizeTextTrack, } from "../../utils/languages";
25
25
  import objectAssign from "../../utils/object_assign";
26
26
  import warnOnce from "../../utils/warn_once";
27
- var DEFAULT_AUDIO_TRACK_SWITCHING_MODE = config.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = config.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = config.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = config.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_INITIAL_BITRATES = config.DEFAULT_INITIAL_BITRATES, DEFAULT_LIMIT_VIDEO_WIDTH = config.DEFAULT_LIMIT_VIDEO_WIDTH, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = config.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_MIN_BITRATES = config.DEFAULT_MIN_BITRATES, DEFAULT_MAX_BITRATES = config.DEFAULT_MAX_BITRATES, DEFAULT_MAX_BUFFER_AHEAD = config.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = config.DEFAULT_MAX_BUFFER_BEHIND, DEFAULT_SHOW_NATIVE_SUBTITLE = config.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_STOP_AT_END = config.DEFAULT_STOP_AT_END, DEFAULT_TEXT_TRACK_MODE = config.DEFAULT_TEXT_TRACK_MODE, DEFAULT_THROTTLE_WHEN_HIDDEN = config.DEFAULT_THROTTLE_WHEN_HIDDEN, DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN = config.DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN, DEFAULT_WANTED_BUFFER_AHEAD = config.DEFAULT_WANTED_BUFFER_AHEAD;
28
27
  /**
29
28
  * Parse options given to the API constructor and set default options as found
30
29
  * in the config.
@@ -38,6 +37,7 @@ function parseConstructorOptions(options) {
38
37
  var maxBufferAhead;
39
38
  var maxBufferBehind;
40
39
  var wantedBufferAhead;
40
+ var maxVideoBufferSize;
41
41
  var throttleWhenHidden;
42
42
  var throttleVideoBitrateWhenHidden;
43
43
  var preferredAudioTracks;
@@ -50,6 +50,7 @@ function parseConstructorOptions(options) {
50
50
  var minVideoBitrate;
51
51
  var maxAudioBitrate;
52
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;
53
54
  if (isNullOrUndefined(options.maxBufferAhead)) {
54
55
  maxBufferAhead = DEFAULT_MAX_BUFFER_AHEAD;
55
56
  }
@@ -79,6 +80,17 @@ function parseConstructorOptions(options) {
79
80
  /* eslint-enable max-len */
80
81
  }
81
82
  }
83
+ if (isNullOrUndefined(options.maxVideoBufferSize)) {
84
+ maxVideoBufferSize = DEFAULT_MAX_VIDEO_BUFFER_SIZE;
85
+ }
86
+ else {
87
+ maxVideoBufferSize = Number(options.maxVideoBufferSize);
88
+ if (isNaN(maxVideoBufferSize)) {
89
+ /* eslint-disable max-len */
90
+ throw new Error("Invalid maxVideoBufferSize parameter. Should be a number.");
91
+ /* eslint-enable max-len */
92
+ }
93
+ }
82
94
  var limitVideoWidth = isNullOrUndefined(options.limitVideoWidth) ?
83
95
  DEFAULT_LIMIT_VIDEO_WIDTH :
84
96
  !!options.limitVideoWidth;
@@ -218,7 +230,7 @@ function parseConstructorOptions(options) {
218
230
  }
219
231
  var stopAtEnd = isNullOrUndefined(options.stopAtEnd) ? DEFAULT_STOP_AT_END :
220
232
  !!options.stopAtEnd;
221
- return { maxBufferAhead: maxBufferAhead, maxBufferBehind: maxBufferBehind, limitVideoWidth: limitVideoWidth, videoElement: videoElement, wantedBufferAhead: wantedBufferAhead, throttleWhenHidden: throttleWhenHidden, throttleVideoBitrateWhenHidden: throttleVideoBitrateWhenHidden, preferredAudioTracks: preferredAudioTracks, preferredTextTracks: preferredTextTracks, preferredVideoTracks: preferredVideoTracks, initialAudioBitrate: initialAudioBitrate, initialVideoBitrate: initialVideoBitrate, minAudioBitrate: minAudioBitrate, minVideoBitrate: minVideoBitrate, maxAudioBitrate: maxAudioBitrate, maxVideoBitrate: maxVideoBitrate, stopAtEnd: 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 };
222
234
  }
223
235
  /**
224
236
  * Check the format of given reload options.
@@ -264,6 +276,7 @@ function parseLoadVideoOptions(options) {
264
276
  var textTrackMode;
265
277
  var textTrackElement;
266
278
  var startAt;
279
+ var _g = config.getCurrent(), DEFAULT_AUDIO_TRACK_SWITCHING_MODE = _g.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = _g.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = _g.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = _g.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = _g.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_SHOW_NATIVE_SUBTITLE = _g.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_TEXT_TRACK_MODE = _g.DEFAULT_TEXT_TRACK_MODE;
267
280
  if (isNullOrUndefined(options)) {
268
281
  throw new Error("No option set on loadVideo");
269
282
  }
@@ -313,11 +326,12 @@ function parseLoadVideoOptions(options) {
313
326
  var audioTrackSwitchingMode = isNullOrUndefined(options.audioTrackSwitchingMode)
314
327
  ? DEFAULT_AUDIO_TRACK_SWITCHING_MODE
315
328
  : options.audioTrackSwitchingMode;
316
- if (!arrayIncludes(["seamless", "direct"], audioTrackSwitchingMode)) {
329
+ if (!arrayIncludes(["seamless", "direct", "reload"], audioTrackSwitchingMode)) {
317
330
  log.warn("The `audioTrackSwitchingMode` loadVideo option must match one of " +
318
331
  "the following strategy name:\n" +
319
332
  "- `seamless`\n" +
320
333
  "- `direct`\n" +
334
+ "- `reload`\n" +
321
335
  "If badly set, " + DEFAULT_AUDIO_TRACK_SWITCHING_MODE +
322
336
  " strategy will be used as default");
323
337
  audioTrackSwitchingMode = DEFAULT_AUDIO_TRACK_SWITCHING_MODE;
@@ -349,8 +363,8 @@ function parseLoadVideoOptions(options) {
349
363
  "Please use the `TextTrackRenderer` tool instead.");
350
364
  var supplementaryTextTracks = Array.isArray(options.supplementaryTextTracks) ?
351
365
  options.supplementaryTextTracks : [options.supplementaryTextTracks];
352
- for (var _g = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _g < supplementaryTextTracks_1.length; _g++) {
353
- var supplementaryTextTrack = supplementaryTextTracks_1[_g];
366
+ for (var _h = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _h < supplementaryTextTracks_1.length; _h++) {
367
+ var supplementaryTextTrack = supplementaryTextTracks_1[_h];
354
368
  if (typeof supplementaryTextTrack.language !== "string" ||
355
369
  typeof supplementaryTextTrack.mimeType !== "string" ||
356
370
  typeof supplementaryTextTrack.url !== "string") {
@@ -365,8 +379,8 @@ function parseLoadVideoOptions(options) {
365
379
  "Please use the `parseBifThumbnails` tool instead.");
366
380
  var supplementaryImageTracks = Array.isArray(options.supplementaryImageTracks) ?
367
381
  options.supplementaryImageTracks : [options.supplementaryImageTracks];
368
- for (var _h = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _h < supplementaryImageTracks_1.length; _h++) {
369
- var supplementaryImageTrack = supplementaryImageTracks_1[_h];
382
+ for (var _j = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _j < supplementaryImageTracks_1.length; _j++) {
383
+ var supplementaryImageTrack = supplementaryImageTracks_1[_j];
370
384
  if (typeof supplementaryImageTrack.mimeType !== "string" ||
371
385
  typeof supplementaryImageTrack.url !== "string") {
372
386
  throw new Error("Invalid supplementary image track given. " +
@@ -27,7 +27,6 @@ import config from "../../config";
27
27
  import log from "../../log";
28
28
  import objectAssign from "../../utils/object_assign";
29
29
  import { getRange } from "../../utils/ranges";
30
- var SAMPLING_INTERVAL_MEDIASOURCE = config.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = config.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = config.SAMPLING_INTERVAL_NO_MEDIASOURCE, RESUME_GAP_AFTER_SEEKING = config.RESUME_GAP_AFTER_SEEKING, RESUME_GAP_AFTER_NOT_ENOUGH_DATA = config.RESUME_GAP_AFTER_NOT_ENOUGH_DATA, RESUME_GAP_AFTER_BUFFERING = config.RESUME_GAP_AFTER_BUFFERING, REBUFFERING_GAP = config.REBUFFERING_GAP, MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING = config.MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING;
31
30
  /**
32
31
  * HTMLMediaElement Events for which playback observations are calculated and
33
32
  * emitted.
@@ -145,6 +144,7 @@ var PlaybackObserver = /** @class */ (function () {
145
144
  PlaybackObserver.prototype._createInnerObservable = function () {
146
145
  var _this = this;
147
146
  return observableDefer(function () {
147
+ var _a = config.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
148
148
  var getCurrentObservation = function (event) {
149
149
  var _a;
150
150
  var tmpEvt = event;
@@ -212,6 +212,7 @@ function getRebufferingEndGap(rebufferingStatus, lowLatencyMode) {
212
212
  }
213
213
  var suffix = lowLatencyMode ? "LOW_LATENCY" :
214
214
  "DEFAULT";
215
+ var _a = config.getCurrent(), RESUME_GAP_AFTER_SEEKING = _a.RESUME_GAP_AFTER_SEEKING, RESUME_GAP_AFTER_NOT_ENOUGH_DATA = _a.RESUME_GAP_AFTER_NOT_ENOUGH_DATA, RESUME_GAP_AFTER_BUFFERING = _a.RESUME_GAP_AFTER_BUFFERING;
215
216
  switch (rebufferingStatus.reason) {
216
217
  case "seeking":
217
218
  return RESUME_GAP_AFTER_SEEKING[suffix];
@@ -228,6 +229,7 @@ function getRebufferingEndGap(rebufferingStatus, lowLatencyMode) {
228
229
  * @returns {Boolean}
229
230
  */
230
231
  function hasLoadedUntilTheEnd(currentRange, duration, lowLatencyMode) {
232
+ var REBUFFERING_GAP = config.getCurrent().REBUFFERING_GAP;
231
233
  var suffix = lowLatencyMode ? "LOW_LATENCY" :
232
234
  "DEFAULT";
233
235
  return currentRange !== null &&
@@ -261,6 +263,7 @@ function getMediaInfos(mediaElement, event) {
261
263
  */
262
264
  function getRebufferingStatus(prevObservation, currentInfo, _a) {
263
265
  var withMediaSource = _a.withMediaSource, lowLatencyMode = _a.lowLatencyMode;
266
+ var REBUFFERING_GAP = config.getCurrent().REBUFFERING_GAP;
264
267
  var currentEvt = currentInfo.event, currentTime = currentInfo.position, bufferGap = currentInfo.bufferGap, currentRange = currentInfo.currentRange, duration = currentInfo.duration, paused = currentInfo.paused, readyState = currentInfo.readyState, ended = currentInfo.ended;
265
268
  var prevRebuffering = prevObservation.rebuffering, prevEvt = prevObservation.event, prevTime = prevObservation.position;
266
269
  var fullyLoaded = hasLoadedUntilTheEnd(currentRange, duration, lowLatencyMode);
@@ -354,6 +357,7 @@ function getRebufferingStatus(prevObservation, currentInfo, _a) {
354
357
  * @returns {Object|null}
355
358
  */
356
359
  function getFreezingStatus(prevObservation, currentInfo) {
360
+ var MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING = config.getCurrent().MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING;
357
361
  if (prevObservation.freezing) {
358
362
  if (currentInfo.ended ||
359
363
  currentInfo.paused ||
@@ -24,77 +24,6 @@ import { IInbandEvent } from "../stream";
24
24
  import { IPlayerState } from "./get_player_state";
25
25
  import { IConstructorOptions, ILoadVideoOptions } from "./option_utils";
26
26
  import { IAudioTrackPreference, ITextTrackPreference, ITMAudioTrack, ITMAudioTrackListItem, ITMTextTrack, ITMTextTrackListItem, ITMVideoTrack, ITMVideoTrackListItem, IVideoTrackPreference } from "./track_choice_manager";
27
- /** Payload emitted with a `positionUpdate` event. */
28
- interface IPositionUpdateItem {
29
- /** current position the player is in, in seconds. */
30
- position: number;
31
- /** Last position set for the current media currently, in seconds. */
32
- duration: number;
33
- /** Playback rate (i.e. speed) at which the current media is played. */
34
- playbackRate: number;
35
- /** Amount of buffer available for now in front of the current position, in seconds. */
36
- bufferGap: number;
37
- /** Current maximum seekable position. */
38
- maximumBufferTime?: number | undefined;
39
- wallClockTime?: number | undefined;
40
- /**
41
- * Only for live contents. Difference between the "live edge" and the current
42
- * position, in seconds.
43
- */
44
- liveGap?: number | undefined;
45
- }
46
- /** Payload emitted with a `bitrateEstimationChange` event. */
47
- interface IBitrateEstimate {
48
- /** The type of buffer this estimate was done for (e.g. "audio). */
49
- type: IBufferType;
50
- /** The calculated bitrate, in bits per seconds. */
51
- bitrate: number | undefined;
52
- }
53
- export declare type IStreamEvent = {
54
- data: IStreamEventData;
55
- start: number;
56
- end: number;
57
- onExit?: () => void;
58
- } | {
59
- data: IStreamEventData;
60
- start: number;
61
- };
62
- /** Every events sent by the RxPlayer's public API. */
63
- interface IPublicAPIEvent {
64
- playerStateChange: string;
65
- positionUpdate: IPositionUpdateItem;
66
- audioTrackChange: ITMAudioTrack | null;
67
- textTrackChange: ITMTextTrack | null;
68
- videoTrackChange: ITMVideoTrack | null;
69
- audioBitrateChange: number;
70
- videoBitrateChange: number;
71
- imageTrackUpdate: {
72
- data: IBifThumbnail[];
73
- };
74
- fullscreenChange: boolean;
75
- bitrateEstimationChange: IBitrateEstimate;
76
- volumeChange: number;
77
- error: ICustomError | Error;
78
- warning: ICustomError | Error;
79
- nativeTextTracksChange: TextTrack[];
80
- periodChange: Period;
81
- availableAudioBitratesChange: number[];
82
- availableVideoBitratesChange: number[];
83
- availableAudioTracksChange: ITMAudioTrackListItem[];
84
- availableTextTracksChange: ITMTextTrackListItem[];
85
- availableVideoTracksChange: ITMVideoTrackListItem[];
86
- decipherabilityUpdate: Array<{
87
- manifest: Manifest;
88
- period: Period;
89
- adaptation: Adaptation;
90
- representation: Representation;
91
- }>;
92
- seeking: null;
93
- seeked: null;
94
- streamEvent: IStreamEvent;
95
- streamEventSkip: IStreamEvent;
96
- inbandEvents: IInbandEvent[];
97
- }
98
27
  /**
99
28
  * @class Player
100
29
  * @extends EventEmitter
@@ -594,6 +523,12 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
594
523
  * @param {Number} sizeInSeconds
595
524
  */
596
525
  setWantedBufferAhead(sizeInSeconds: number): void;
526
+ /**
527
+ * Set the max buffer size the buffer should take in memory
528
+ * The player . will stop downloading chunks when this size is reached.
529
+ * @param {Number} sizeInKBytes
530
+ */
531
+ setMaxVideoBufferSize(sizeInKBytes: number): void;
597
532
  /**
598
533
  * Returns the max buffer size for the buffer behind the current position.
599
534
  * @returns {Number}
@@ -609,6 +544,11 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
609
544
  * @returns {Number}
610
545
  */
611
546
  getWantedBufferAhead(): number;
547
+ /**
548
+ * Returns the max buffer memory size for the buffer in kilobytes
549
+ * @returns {Number}
550
+ */
551
+ getMaxVideoBufferSize(): number;
612
552
  /**
613
553
  * Returns type of current keysystem (e.g. playready, widevine) if the content
614
554
  * is encrypted. null otherwise.
@@ -865,5 +805,76 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
865
805
  private _priv_triggerCurrentBitrateChangeEvent;
866
806
  private _priv_getCurrentRepresentations;
867
807
  }
808
+ /** Payload emitted with a `positionUpdate` event. */
809
+ export interface IPositionUpdateItem {
810
+ /** current position the player is in, in seconds. */
811
+ position: number;
812
+ /** Last position set for the current media currently, in seconds. */
813
+ duration: number;
814
+ /** Playback rate (i.e. speed) at which the current media is played. */
815
+ playbackRate: number;
816
+ /** Amount of buffer available for now in front of the current position, in seconds. */
817
+ bufferGap: number;
818
+ /** Current maximum seekable position. */
819
+ maximumBufferTime?: number | undefined;
820
+ wallClockTime?: number | undefined;
821
+ /**
822
+ * Only for live contents. Difference between the "live edge" and the current
823
+ * position, in seconds.
824
+ */
825
+ liveGap?: number | undefined;
826
+ }
827
+ /** Payload emitted with a `bitrateEstimationChange` event. */
828
+ export interface IBitrateEstimate {
829
+ /** The type of buffer this estimate was done for (e.g. "audio). */
830
+ type: IBufferType;
831
+ /** The calculated bitrate, in bits per seconds. */
832
+ bitrate: number | undefined;
833
+ }
834
+ export declare type IStreamEvent = {
835
+ data: IStreamEventData;
836
+ start: number;
837
+ end: number;
838
+ onExit?: () => void;
839
+ } | {
840
+ data: IStreamEventData;
841
+ start: number;
842
+ };
843
+ /** Every events sent by the RxPlayer's public API. */
844
+ interface IPublicAPIEvent {
845
+ playerStateChange: string;
846
+ positionUpdate: IPositionUpdateItem;
847
+ audioTrackChange: ITMAudioTrack | null;
848
+ textTrackChange: ITMTextTrack | null;
849
+ videoTrackChange: ITMVideoTrack | null;
850
+ audioBitrateChange: number;
851
+ videoBitrateChange: number;
852
+ imageTrackUpdate: {
853
+ data: IBifThumbnail[];
854
+ };
855
+ fullscreenChange: boolean;
856
+ bitrateEstimationChange: IBitrateEstimate;
857
+ volumeChange: number;
858
+ error: ICustomError | Error;
859
+ warning: ICustomError | Error;
860
+ nativeTextTracksChange: TextTrack[];
861
+ periodChange: Period;
862
+ availableAudioBitratesChange: number[];
863
+ availableVideoBitratesChange: number[];
864
+ availableAudioTracksChange: ITMAudioTrackListItem[];
865
+ availableTextTracksChange: ITMTextTrackListItem[];
866
+ availableVideoTracksChange: ITMVideoTrackListItem[];
867
+ decipherabilityUpdate: Array<{
868
+ manifest: Manifest;
869
+ period: Period;
870
+ adaptation: Adaptation;
871
+ representation: Representation;
872
+ }>;
873
+ seeking: null;
874
+ seeked: null;
875
+ streamEvent: IStreamEvent;
876
+ streamEventSkip: IStreamEvent;
877
+ inbandEvents: IInbandEvent[];
878
+ }
868
879
  export default Player;
869
880
  export { IStreamEventData };