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

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 (340) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/FILES.md +5 -4
  3. package/VERSION +1 -1
  4. package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
  5. package/dist/_esm5.processed/compat/browser_detection.js +4 -2
  6. package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
  7. package/dist/_esm5.processed/compat/eme/close_session.js +144 -36
  8. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +21 -22
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
  12. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  13. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  14. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  15. package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
  16. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  17. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  18. package/dist/_esm5.processed/config.d.ts +166 -1080
  19. package/dist/_esm5.processed/config.js +17 -1119
  20. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  21. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  22. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  23. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  24. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +2 -1
  25. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
  26. package/dist/_esm5.processed/core/api/option_utils.js +19 -6
  27. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  28. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  29. package/dist/_esm5.processed/core/api/public_api.js +72 -33
  30. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -49
  31. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +25 -65
  32. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  33. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
  34. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  35. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
  36. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  37. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
  38. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  39. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  40. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  41. package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
  42. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
  43. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  44. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  45. package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
  46. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  47. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  48. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  49. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  50. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  51. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  52. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  53. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  54. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  55. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  56. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  57. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  58. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +119 -241
  59. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  60. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  61. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  62. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  63. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  64. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  65. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
  66. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  67. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  68. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  69. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  70. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  71. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  72. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  73. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  74. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  75. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  76. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  77. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  78. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  79. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
  80. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  81. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  82. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  83. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  84. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  85. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  86. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  87. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  88. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
  89. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
  90. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  91. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  92. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
  93. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  94. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +4 -2
  95. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  96. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  97. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  98. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  99. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  100. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  101. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  102. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  103. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  104. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  105. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  106. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  107. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  108. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  109. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  110. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  111. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  112. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  113. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
  114. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
  115. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  116. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +2 -2
  117. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  118. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  119. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  120. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  121. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  122. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  123. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  124. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  125. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  126. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  127. package/dist/_esm5.processed/default_config.js +1145 -0
  128. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  129. package/dist/_esm5.processed/experimental/index.js +2 -0
  130. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  131. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +1 -1
  132. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
  133. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
  134. package/dist/_esm5.processed/features/features_object.js +1 -1
  135. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  136. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  137. package/dist/_esm5.processed/features/list/eme.js +5 -5
  138. package/dist/_esm5.processed/features/types.d.ts +3 -3
  139. package/dist/_esm5.processed/manifest/manifest.d.ts +1 -14
  140. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  141. package/dist/_esm5.processed/manifest/representation.d.ts +35 -3
  142. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  143. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  144. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -1
  145. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +87 -75
  146. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  147. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  148. package/dist/_esm5.processed/public_types.d.ts +2 -2
  149. package/dist/_esm5.processed/transports/dash/image_pipelines.js +3 -0
  150. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  151. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  152. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  153. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  154. package/dist/_esm5.processed/transports/smooth/pipelines.js +68 -10
  155. package/dist/_esm5.processed/transports/types.d.ts +22 -0
  156. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  157. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  158. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  159. package/dist/_esm5.processed/utils/reference.js +72 -24
  160. package/dist/_esm5.processed/utils/request/fetch.js +1 -2
  161. package/dist/_esm5.processed/utils/request/xhr.js +1 -1
  162. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  163. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  164. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  165. package/dist/rx-player.js +5002 -3033
  166. package/dist/rx-player.min.js +1 -1
  167. package/dummy +1 -0
  168. package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
  169. package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
  170. package/package.json +32 -34
  171. package/scripts/build/templates/experimental/index.d.ts +16 -0
  172. package/scripts/build/templates/experimental/index.js +16 -0
  173. package/sonar-project.properties +1 -1
  174. package/src/README.md +6 -6
  175. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  176. package/src/compat/browser_detection.ts +4 -2
  177. package/src/compat/eme/close_session.ts +90 -56
  178. package/src/compat/eme/custom_media_keys/index.ts +21 -38
  179. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
  180. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
  181. package/src/compat/eme/generate_key_request.ts +25 -33
  182. package/src/compat/eme/load_session.ts +29 -31
  183. package/src/compat/event_listeners.ts +2 -1
  184. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  185. package/src/config.ts +17 -1210
  186. package/src/core/README.md +1 -1
  187. package/src/core/abr/bandwidth_estimator.ts +4 -4
  188. package/src/core/abr/network_analyzer.ts +5 -6
  189. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  190. package/src/core/api/__tests__/option_utils.test.ts +17 -17
  191. package/src/core/api/get_player_state.ts +1 -1
  192. package/src/core/api/index.ts +3 -0
  193. package/src/core/api/option_utils.ts +37 -20
  194. package/src/core/api/playback_observer.ts +12 -8
  195. package/src/core/api/public_api.ts +151 -111
  196. package/src/core/decrypt/README.md +22 -0
  197. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  198. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  199. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  200. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  201. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  202. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +31 -93
  203. package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
  204. package/src/core/decrypt/clear_on_stop.ts +48 -0
  205. package/src/core/decrypt/content_decryptor.ts +1158 -0
  206. package/src/core/decrypt/create_or_load_session.ts +130 -0
  207. package/src/core/decrypt/create_session.ts +175 -0
  208. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  209. package/src/core/{eme → decrypt}/find_key_system.ts +112 -122
  210. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  211. package/src/core/decrypt/get_media_keys.ts +145 -0
  212. package/src/core/{eme → decrypt}/index.ts +11 -8
  213. package/src/core/decrypt/init_media_keys.ts +51 -0
  214. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  215. package/src/core/decrypt/set_server_certificate.ts +104 -0
  216. package/src/core/{eme → decrypt}/types.ts +128 -258
  217. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  218. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  219. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  220. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  221. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  222. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
  223. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  224. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  225. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  226. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  227. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  228. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  229. package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
  230. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  231. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  232. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  233. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  234. package/src/core/fetchers/manifest/manifest_fetcher.ts +4 -4
  235. package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
  236. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  237. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  238. package/src/core/init/get_initial_time.ts +2 -1
  239. package/src/core/init/initialize_directfile.ts +17 -20
  240. package/src/core/init/initialize_media_source.ts +42 -105
  241. package/src/core/init/link_drm_and_content.ts +176 -0
  242. package/src/core/init/manifest_update_scheduler.ts +5 -3
  243. package/src/core/init/stall_avoider.ts +6 -5
  244. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  245. package/src/core/init/types.ts +1 -39
  246. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  247. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -4
  248. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  249. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  250. package/src/core/stream/events_generators.ts +9 -4
  251. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  252. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  253. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  254. package/src/core/stream/period/period_stream.ts +5 -2
  255. package/src/core/stream/representation/force_garbage_collection.ts +2 -2
  256. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  257. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  258. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  259. package/src/core/stream/representation/push_media_segment.ts +3 -2
  260. package/src/core/stream/representation/representation_stream.ts +30 -7
  261. package/src/core/stream/types.ts +1 -1
  262. package/src/default_config.ts +1241 -0
  263. package/src/experimental/index.ts +5 -0
  264. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  265. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +2 -1
  266. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  267. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
  268. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
  269. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
  270. package/src/features/__tests__/initialize_features.test.ts +2 -2
  271. package/src/features/features_object.ts +1 -1
  272. package/src/features/initialize_features.ts +1 -1
  273. package/src/features/list/__tests__/eme.test.ts +5 -5
  274. package/src/features/list/eme.ts +5 -5
  275. package/src/features/types.ts +3 -10
  276. package/src/manifest/manifest.ts +6 -76
  277. package/src/manifest/representation.ts +36 -3
  278. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  279. package/src/parsers/manifest/dash/common/indexes/template.ts +1 -2
  280. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +1 -1
  281. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +109 -64
  282. package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -2
  283. package/src/parsers/manifest/smooth/create_parser.ts +1 -0
  284. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  285. package/src/public_types.ts +5 -1
  286. package/src/transports/dash/image_pipelines.ts +3 -0
  287. package/src/transports/dash/segment_parser.ts +5 -0
  288. package/src/transports/dash/text_parser.ts +8 -0
  289. package/src/transports/local/segment_parser.ts +4 -0
  290. package/src/transports/local/text_parser.ts +8 -0
  291. package/src/transports/smooth/pipelines.ts +22 -9
  292. package/src/transports/types.ts +22 -0
  293. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  294. package/src/utils/deep_merge.ts +46 -0
  295. package/src/utils/reference.ts +116 -23
  296. package/src/utils/request/fetch.ts +1 -2
  297. package/src/utils/request/xhr.ts +2 -1
  298. package/src/utils/rx-from_cancellable_promise.ts +7 -2
  299. package/src/utils/task_canceller.ts +6 -4
  300. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  301. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  302. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  303. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  304. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  305. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  306. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  307. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  308. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -253
  309. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  310. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  311. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  312. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  313. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  314. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  315. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  316. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  317. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  318. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  319. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  320. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  321. package/src/core/eme/README.md +0 -26
  322. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  323. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  324. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  325. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  326. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  327. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  328. package/src/core/eme/clear_eme_session.ts +0 -62
  329. package/src/core/eme/create_session.ts +0 -187
  330. package/src/core/eme/dispose_eme.ts +0 -25
  331. package/src/core/eme/dispose_media_keys.ts +0 -46
  332. package/src/core/eme/eme_manager.ts +0 -387
  333. package/src/core/eme/get_media_keys.ts +0 -141
  334. package/src/core/eme/get_session.ts +0 -135
  335. package/src/core/eme/init_media_keys.ts +0 -106
  336. package/src/core/eme/set_server_certificate.ts +0 -115
  337. package/src/core/eme/utils/close_session.ts +0 -113
  338. package/src/core/eme/utils/init_data_store.ts +0 -234
  339. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  340. package/src/core/init/create_eme_manager.ts +0 -95
@@ -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,7 @@
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
19
  import { IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference } from "./track_choice_manager";
20
20
  export { IKeySystemOption };
21
21
  /** Value of the `serverSyncInfos` transport option. */
@@ -154,6 +154,7 @@ export interface IConstructorOptions {
154
154
  maxBufferAhead?: number;
155
155
  maxBufferBehind?: number;
156
156
  wantedBufferAhead?: number;
157
+ maxVideoBufferSize?: number;
157
158
  limitVideoWidth?: boolean;
158
159
  throttleWhenHidden?: boolean;
159
160
  throttleVideoBitrateWhenHidden?: boolean;
@@ -174,6 +175,7 @@ export interface IParsedConstructorOptions {
174
175
  maxBufferAhead: number;
175
176
  maxBufferBehind: number;
176
177
  wantedBufferAhead: number;
178
+ maxVideoBufferSize: number;
177
179
  limitVideoWidth: boolean;
178
180
  throttleWhenHidden: boolean;
179
181
  throttleVideoBitrateWhenHidden: boolean;
@@ -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
  }
@@ -349,8 +362,8 @@ function parseLoadVideoOptions(options) {
349
362
  "Please use the `TextTrackRenderer` tool instead.");
350
363
  var supplementaryTextTracks = Array.isArray(options.supplementaryTextTracks) ?
351
364
  options.supplementaryTextTracks : [options.supplementaryTextTracks];
352
- for (var _g = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _g < supplementaryTextTracks_1.length; _g++) {
353
- var supplementaryTextTrack = supplementaryTextTracks_1[_g];
365
+ for (var _h = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _h < supplementaryTextTracks_1.length; _h++) {
366
+ var supplementaryTextTrack = supplementaryTextTracks_1[_h];
354
367
  if (typeof supplementaryTextTrack.language !== "string" ||
355
368
  typeof supplementaryTextTrack.mimeType !== "string" ||
356
369
  typeof supplementaryTextTrack.url !== "string") {
@@ -365,8 +378,8 @@ function parseLoadVideoOptions(options) {
365
378
  "Please use the `parseBifThumbnails` tool instead.");
366
379
  var supplementaryImageTracks = Array.isArray(options.supplementaryImageTracks) ?
367
380
  options.supplementaryImageTracks : [options.supplementaryImageTracks];
368
- for (var _h = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _h < supplementaryImageTracks_1.length; _h++) {
369
- var supplementaryImageTrack = supplementaryImageTracks_1[_h];
381
+ for (var _j = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _j < supplementaryImageTracks_1.length; _j++) {
382
+ var supplementaryImageTrack = supplementaryImageTracks_1[_j];
370
383
  if (typeof supplementaryImageTrack.mimeType !== "string" ||
371
384
  typeof supplementaryImageTrack.url !== "string") {
372
385
  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 };
@@ -60,7 +60,7 @@ import PPromise from "../../utils/promise";
60
60
  import { getLeftSizeOfRange, getPlayedSizeOfRange, getSizeOfRange, } from "../../utils/ranges";
61
61
  import createSharedReference from "../../utils/reference";
62
62
  import warnOnce from "../../utils/warn_once";
63
- import { clearEMESession, disposeEME, getCurrentKeySystem, } from "../eme";
63
+ import { clearOnStop, disposeDecryptionResources, getCurrentKeySystem, } from "../decrypt";
64
64
  import { ManifestFetcher, SegmentFetcherCreator, } from "../fetchers";
65
65
  import initializeMediaSourcePlayback from "../init";
66
66
  import emitSeekEvents from "./emit_seek_events";
@@ -69,7 +69,6 @@ import { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, } f
69
69
  import PlaybackObserver from "./playback_observer";
70
70
  import TrackChoiceManager from "./track_choice_manager";
71
71
  /* eslint-disable @typescript-eslint/naming-convention */
72
- var DEFAULT_UNMUTED_VOLUME = config.DEFAULT_UNMUTED_VOLUME;
73
72
  var isPageActive = events.isPageActive, isVideoVisible = events.isVideoVisible, onEnded$ = events.onEnded$, onFullscreenChange$ = events.onFullscreenChange$, onPlayPause$ = events.onPlayPause$, onPictureInPictureEvent$ = events.onPictureInPictureEvent$, onSeeking$ = events.onSeeking$, onTextTrackChanges$ = events.onTextTrackChanges$, videoWidth$ = events.videoWidth$;
74
73
  /**
75
74
  * @class Player
@@ -84,11 +83,12 @@ var Player = /** @class */ (function (_super) {
84
83
  function Player(options) {
85
84
  if (options === void 0) { options = {}; }
86
85
  var _this = _super.call(this) || this;
87
- var _a = parseConstructorOptions(options), initialAudioBitrate = _a.initialAudioBitrate, initialVideoBitrate = _a.initialVideoBitrate, limitVideoWidth = _a.limitVideoWidth, minAudioBitrate = _a.minAudioBitrate, minVideoBitrate = _a.minVideoBitrate, maxAudioBitrate = _a.maxAudioBitrate, maxBufferAhead = _a.maxBufferAhead, maxBufferBehind = _a.maxBufferBehind, maxVideoBitrate = _a.maxVideoBitrate, preferredAudioTracks = _a.preferredAudioTracks, preferredTextTracks = _a.preferredTextTracks, preferredVideoTracks = _a.preferredVideoTracks, throttleWhenHidden = _a.throttleWhenHidden, throttleVideoBitrateWhenHidden = _a.throttleVideoBitrateWhenHidden, videoElement = _a.videoElement, wantedBufferAhead = _a.wantedBufferAhead, stopAtEnd = _a.stopAtEnd;
86
+ var _a = parseConstructorOptions(options), initialAudioBitrate = _a.initialAudioBitrate, initialVideoBitrate = _a.initialVideoBitrate, limitVideoWidth = _a.limitVideoWidth, minAudioBitrate = _a.minAudioBitrate, minVideoBitrate = _a.minVideoBitrate, maxAudioBitrate = _a.maxAudioBitrate, maxBufferAhead = _a.maxBufferAhead, maxBufferBehind = _a.maxBufferBehind, maxVideoBitrate = _a.maxVideoBitrate, preferredAudioTracks = _a.preferredAudioTracks, preferredTextTracks = _a.preferredTextTracks, preferredVideoTracks = _a.preferredVideoTracks, throttleWhenHidden = _a.throttleWhenHidden, throttleVideoBitrateWhenHidden = _a.throttleVideoBitrateWhenHidden, videoElement = _a.videoElement, wantedBufferAhead = _a.wantedBufferAhead, maxVideoBufferSize = _a.maxVideoBufferSize, stopAtEnd = _a.stopAtEnd;
87
+ var DEFAULT_UNMUTED_VOLUME = config.getCurrent().DEFAULT_UNMUTED_VOLUME;
88
88
  // Workaround to support Firefox autoplay on FF 42.
89
89
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
90
90
  videoElement.preload = "auto";
91
- _this.version = /* PLAYER_VERSION */ "3.26.3-dev.2022021400";
91
+ _this.version = /* PLAYER_VERSION */ "3.27.0-dev.2022031700";
92
92
  _this.log = log;
93
93
  _this.state = "STOPPED";
94
94
  _this.videoElement = videoElement;
@@ -138,6 +138,7 @@ var Player = /** @class */ (function (_super) {
138
138
  wantedBufferAhead: createSharedReference(wantedBufferAhead),
139
139
  maxBufferAhead: createSharedReference(maxBufferAhead),
140
140
  maxBufferBehind: createSharedReference(maxBufferBehind),
141
+ maxVideoBufferSize: createSharedReference(maxVideoBufferSize),
141
142
  };
142
143
  _this._priv_bitrateInfos = {
143
144
  lastBitrates: { audio: initialAudioBitrate,
@@ -224,8 +225,13 @@ var Player = /** @class */ (function (_super) {
224
225
  // free resources linked to the loaded content
225
226
  this.stop();
226
227
  if (this.videoElement !== null) {
227
- // free resources used for EME management
228
- disposeEME(this.videoElement);
228
+ // free resources used for decryption management
229
+ disposeDecryptionResources(this.videoElement)
230
+ .catch(function (err) {
231
+ var message = err instanceof Error ? err.message :
232
+ "Unknown error";
233
+ log.error("API: Could not dispose decryption resources: " + message);
234
+ });
229
235
  }
230
236
  // free Observables linked to the Player instance
231
237
  this._priv_destroy$.next();
@@ -236,6 +242,7 @@ var Player = /** @class */ (function (_super) {
236
242
  this._priv_speed.finish();
237
243
  this._priv_contentLock.finish();
238
244
  this._priv_bufferOptions.wantedBufferAhead.finish();
245
+ this._priv_bufferOptions.maxVideoBufferSize.finish();
239
246
  this._priv_bufferOptions.maxBufferAhead.finish();
240
247
  this._priv_bufferOptions.maxBufferBehind.finish();
241
248
  this._priv_bitrateInfos.manualBitrates.video.finish();
@@ -527,18 +534,23 @@ var Player = /** @class */ (function (_super) {
527
534
  }));
528
535
  /** Emit all player "state" updates. */
529
536
  var playerState$ = observableConcat(observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
530
- // LOADED as soon as the first "loaded" event is sent
531
- loaded$.pipe(take(1), map(function () { return PLAYER_STATES.LOADED; })), observableMerge(loadedStateUpdates$
532
- .pipe(
533
- // From the first reload onward, we enter another dynamic (below)
534
- takeUntil(reloading$), skipWhile(function (state) { return state === PLAYER_STATES.PAUSED; })),
535
- // when reloading
536
- reloading$.pipe(switchMap(function () {
537
- return loaded$.pipe(take(1), // wait for the next loaded event
538
- mergeMap(function () { return loadedStateUpdates$; }), // to update the state as usual
539
- startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
540
- );
541
- })))).pipe(distinctUntilChanged());
537
+ loaded$.pipe(switchMap(function (_, i) {
538
+ var isFirstLoad = i === 0;
539
+ return observableMerge(
540
+ // Purposely subscribed first so a RELOADING triggered synchronously
541
+ // after a LOADED state is catched.
542
+ reloading$.pipe(map(function () { return PLAYER_STATES.RELOADING; })),
543
+ // Only switch to LOADED state for the first (i.e. non-RELOADING) load
544
+ isFirstLoad ? observableOf(PLAYER_STATES.LOADED) :
545
+ EMPTY,
546
+ // Purposely put last so any other state change happens after we've
547
+ // already switched to LOADED
548
+ loadedStateUpdates$.pipe(takeUntil(reloading$),
549
+ // For the first load, we prefer staying at the LOADED state over
550
+ // PAUSED when autoPlay is disabled.
551
+ // For consecutive loads however, there's no LOADED state.
552
+ skipWhile(function (state) { return isFirstLoad && state === PLAYER_STATES.PAUSED; })));
553
+ }))).pipe(distinctUntilChanged());
542
554
  var playbackSubscription;
543
555
  stopContent$
544
556
  .pipe(take(1))
@@ -794,7 +806,22 @@ var Player = /** @class */ (function (_super) {
794
806
  }
795
807
  var _a = this._priv_contentInfos, isDirectFile = _a.isDirectFile, manifest = _a.manifest;
796
808
  if (isDirectFile) {
797
- return this.videoElement.currentTime;
809
+ // Calculating the "wall-clock time" necessitate to obtain first an offset,
810
+ // and then adding that offset to the HTMLMediaElement's current position.
811
+ // That offset is in most case present inside the Manifest file, yet in
812
+ // directfile mode, the RxPlayer won't parse that file, the browser does it.
813
+ //
814
+ // Thankfully Safari declares a `getStartDate` method allowing to obtain
815
+ // that offset when available. This logic is thus mainly useful when
816
+ // playing HLS contents in directfile mode on Safari.
817
+ var mediaElement = this.videoElement;
818
+ if (typeof mediaElement.getStartDate === "function") {
819
+ var startDate = mediaElement.getStartDate();
820
+ if (typeof startDate === "number" && !isNaN(startDate)) {
821
+ return startDate + mediaElement.currentTime;
822
+ }
823
+ }
824
+ return mediaElement.currentTime;
798
825
  }
799
826
  if (manifest !== null) {
800
827
  var currentTime = this.videoElement.currentTime;
@@ -1173,6 +1200,7 @@ var Player = /** @class */ (function (_super) {
1173
1200
  * If the volume was set to 0, set a default volume instead (see config).
1174
1201
  */
1175
1202
  Player.prototype.unMute = function () {
1203
+ var DEFAULT_UNMUTED_VOLUME = config.getCurrent().DEFAULT_UNMUTED_VOLUME;
1176
1204
  var vol = this.getVolume();
1177
1205
  if (vol === 0) {
1178
1206
  this.setVolume(this._priv_mutedMemory === 0 ? DEFAULT_UNMUTED_VOLUME :
@@ -1271,6 +1299,14 @@ var Player = /** @class */ (function (_super) {
1271
1299
  Player.prototype.setWantedBufferAhead = function (sizeInSeconds) {
1272
1300
  this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
1273
1301
  };
1302
+ /**
1303
+ * Set the max buffer size the buffer should take in memory
1304
+ * The player . will stop downloading chunks when this size is reached.
1305
+ * @param {Number} sizeInKBytes
1306
+ */
1307
+ Player.prototype.setMaxVideoBufferSize = function (sizeInKBytes) {
1308
+ this._priv_bufferOptions.maxVideoBufferSize.setValue(sizeInKBytes);
1309
+ };
1274
1310
  /**
1275
1311
  * Returns the max buffer size for the buffer behind the current position.
1276
1312
  * @returns {Number}
@@ -1292,6 +1328,13 @@ var Player = /** @class */ (function (_super) {
1292
1328
  Player.prototype.getWantedBufferAhead = function () {
1293
1329
  return this._priv_bufferOptions.wantedBufferAhead.getValue();
1294
1330
  };
1331
+ /**
1332
+ * Returns the max buffer memory size for the buffer in kilobytes
1333
+ * @returns {Number}
1334
+ */
1335
+ Player.prototype.getMaxVideoBufferSize = function () {
1336
+ return this._priv_bufferOptions.maxVideoBufferSize.getValue();
1337
+ };
1295
1338
  /**
1296
1339
  * Returns type of current keysystem (e.g. playready, widevine) if the content
1297
1340
  * is encrypted. null otherwise.
@@ -1712,24 +1755,20 @@ var Player = /** @class */ (function (_super) {
1712
1755
  (_a = this._priv_mediaElementTrackChoiceManager) === null || _a === void 0 ? void 0 : _a.dispose();
1713
1756
  this._priv_mediaElementTrackChoiceManager = null;
1714
1757
  this._priv_contentEventsMemory = {};
1715
- // EME cleaning
1758
+ // DRM-related clean-up
1716
1759
  var freeUpContentLock = function () {
1717
1760
  log.debug("Unlocking `contentLock`. Next content can begin.");
1718
1761
  _this._priv_contentLock.setValue(false);
1719
1762
  };
1720
1763
  if (!isNullOrUndefined(this.videoElement)) {
1721
- clearEMESession(this.videoElement)
1722
- .subscribe({
1723
- error: function (err) {
1724
- log.error("API: An error arised when trying to clean-up the EME session:" +
1725
- (err instanceof Error ? err.toString() :
1726
- "Unknown Error"));
1727
- freeUpContentLock();
1728
- },
1729
- complete: function () {
1730
- log.debug("API: EME session cleaned-up with success!");
1731
- freeUpContentLock();
1732
- },
1764
+ clearOnStop(this.videoElement).then(function () {
1765
+ log.debug("API: DRM session cleaned-up with success!");
1766
+ freeUpContentLock();
1767
+ }, function (err) {
1768
+ log.error("API: An error arised when trying to clean-up the DRM session:" +
1769
+ (err instanceof Error ? err.toString() :
1770
+ "Unknown Error"));
1771
+ freeUpContentLock();
1733
1772
  });
1734
1773
  }
1735
1774
  else {
@@ -2264,5 +2303,5 @@ var Player = /** @class */ (function (_super) {
2264
2303
  };
2265
2304
  return Player;
2266
2305
  }(EventEmitter));
2267
- Player.version = /* PLAYER_VERSION */ "3.26.3-dev.2022021400";
2306
+ Player.version = /* PLAYER_VERSION */ "3.27.0-dev.2022031700";
2268
2307
  export default Player;