rx-player 3.26.2 → 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 (500) hide show
  1. package/.github/workflows/perfs.yml +22 -0
  2. package/CHANGELOG.md +33 -1
  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 +144 -36
  9. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
  10. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +27 -24
  11. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
  12. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
  13. package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
  14. package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
  15. package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
  16. package/dist/_esm5.processed/compat/eme/load_session.js +68 -17
  17. package/dist/_esm5.processed/compat/event_listeners.js +2 -1
  18. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
  19. package/dist/_esm5.processed/config.d.ts +166 -1080
  20. package/dist/_esm5.processed/config.js +17 -1119
  21. package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
  22. package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
  23. package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
  24. package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
  25. package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
  26. package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
  27. package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
  28. package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
  29. package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
  30. package/dist/_esm5.processed/core/api/index.d.ts +2 -1
  31. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
  32. package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
  33. package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
  34. package/dist/_esm5.processed/core/api/option_utils.js +19 -6
  35. package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
  36. package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
  37. package/dist/_esm5.processed/core/api/public_api.js +72 -33
  38. package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
  39. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
  40. package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
  41. package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
  42. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -0
  43. package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
  44. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +41 -0
  45. package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
  46. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -0
  47. package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
  48. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
  49. package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
  50. package/dist/_esm5.processed/core/decrypt/create_session.js +174 -0
  51. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
  52. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
  53. package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
  54. package/dist/_esm5.processed/core/decrypt/find_key_system.js +300 -0
  55. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
  56. package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
  57. package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
  58. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
  59. package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
  60. package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
  61. package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
  62. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
  63. package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
  64. package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
  65. package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
  66. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
  67. package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +120 -242
  68. package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
  69. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
  70. package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
  71. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
  72. package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
  73. package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
  74. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +85 -0
  75. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
  76. package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
  77. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
  78. package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
  79. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
  80. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
  81. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
  82. package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
  83. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
  84. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
  85. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
  86. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
  87. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
  88. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +303 -0
  89. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
  90. package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
  91. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
  92. package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
  93. package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
  94. package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
  95. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
  96. package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
  97. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +4 -4
  98. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
  99. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
  100. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
  101. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
  102. package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +1 -1
  103. package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
  104. package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
  105. package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
  106. package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -3
  107. package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
  108. package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
  109. package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
  110. package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
  111. package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
  112. package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
  113. package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
  114. package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
  115. package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
  116. package/dist/_esm5.processed/core/init/types.d.ts +2 -4
  117. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
  118. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +3 -3
  119. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
  120. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
  121. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
  122. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
  123. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
  124. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
  125. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
  126. package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
  127. package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
  128. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
  129. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
  130. package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
  131. package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +1 -1
  132. package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
  133. package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
  134. package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
  135. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
  136. package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
  137. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
  138. package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
  139. package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
  140. package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
  141. package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
  142. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
  143. package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
  144. package/dist/_esm5.processed/default_config.d.ts +1114 -0
  145. package/dist/_esm5.processed/default_config.js +1145 -0
  146. package/dist/_esm5.processed/errors/request_error.js +3 -1
  147. package/dist/_esm5.processed/experimental/index.d.ts +2 -0
  148. package/dist/_esm5.processed/experimental/index.js +2 -0
  149. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
  150. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
  151. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
  152. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
  153. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
  154. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
  155. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
  156. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
  157. package/dist/_esm5.processed/features/features_object.js +1 -1
  158. package/dist/_esm5.processed/features/initialize_features.js +1 -1
  159. package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
  160. package/dist/_esm5.processed/features/list/eme.js +5 -5
  161. package/dist/_esm5.processed/features/types.d.ts +3 -3
  162. package/dist/_esm5.processed/manifest/adaptation.d.ts +2 -2
  163. package/dist/_esm5.processed/manifest/adaptation.js +3 -1
  164. package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
  165. package/dist/_esm5.processed/manifest/manifest.js +10 -74
  166. package/dist/_esm5.processed/manifest/period.d.ts +3 -3
  167. package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
  168. package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
  169. package/dist/_esm5.processed/manifest/types.d.ts +3 -3
  170. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
  171. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
  172. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
  173. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
  174. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
  175. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
  176. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
  177. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
  178. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
  179. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
  180. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
  181. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
  182. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
  183. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
  184. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
  185. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
  186. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
  187. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
  188. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
  189. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
  190. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
  191. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
  192. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
  193. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
  194. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
  195. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
  196. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
  197. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
  198. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
  199. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
  200. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
  201. package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
  202. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
  203. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
  204. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
  205. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
  206. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
  207. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
  208. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
  209. package/dist/_esm5.processed/public_types.d.ts +2 -2
  210. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
  211. package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
  212. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
  213. package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
  214. package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
  215. package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
  216. package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
  217. package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
  218. package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
  219. package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
  220. package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
  221. package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
  222. package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
  223. package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
  224. package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
  225. package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
  226. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +1 -1
  227. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
  228. package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
  229. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
  230. package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
  231. package/dist/_esm5.processed/transports/types.d.ts +58 -30
  232. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
  233. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
  234. package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
  235. package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
  236. package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
  237. package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
  238. package/dist/_esm5.processed/utils/deep_merge.js +53 -0
  239. package/dist/_esm5.processed/utils/reference.d.ts +29 -0
  240. package/dist/_esm5.processed/utils/reference.js +72 -24
  241. package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -5
  242. package/dist/_esm5.processed/utils/request/fetch.js +8 -6
  243. package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
  244. package/dist/_esm5.processed/utils/request/xhr.js +3 -2
  245. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
  246. package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
  247. package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
  248. package/dist/_esm5.processed/utils/task_canceller.js +3 -3
  249. package/dist/rx-player.js +5242 -3190
  250. package/dist/rx-player.min.js +1 -1
  251. package/dummy +1 -0
  252. package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
  253. package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
  254. package/package.json +33 -36
  255. package/scripts/build/templates/experimental/index.d.ts +16 -0
  256. package/scripts/build/templates/experimental/index.js +16 -0
  257. package/scripts/doc-generator/generate_header_html.js +6 -7
  258. package/scripts/doc-generator/generate_page_html.js +3 -4
  259. package/scripts/doc-generator/generate_page_list_html.js +4 -5
  260. package/scripts/doc-generator/generate_sidebar_html.js +4 -7
  261. package/scripts/doc-generator/utils.js +0 -11
  262. package/scripts/generate_demo_list.js +3 -3
  263. package/scripts/generate_documentation_list.js +3 -3
  264. package/scripts/launch_static_server.js +127 -67
  265. package/scripts/run_standalone_demo.js +1 -0
  266. package/scripts/start_demo_web_server.js +1 -0
  267. package/sonar-project.properties +1 -1
  268. package/src/README.md +6 -6
  269. package/src/compat/__tests__/fullscreen.test.ts +7 -7
  270. package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
  271. package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
  272. package/src/compat/browser_detection.ts +4 -2
  273. package/src/compat/eme/close_session.ts +90 -56
  274. package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
  275. package/src/compat/eme/custom_media_keys/index.ts +28 -41
  276. package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
  277. package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
  278. package/src/compat/eme/generate_key_request.ts +25 -33
  279. package/src/compat/eme/load_session.ts +29 -31
  280. package/src/compat/event_listeners.ts +2 -1
  281. package/src/compat/should_favour_custom_safari_EME.ts +5 -2
  282. package/src/config.ts +17 -1210
  283. package/src/core/README.md +1 -1
  284. package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
  285. package/src/core/abr/bandwidth_estimator.ts +4 -4
  286. package/src/core/abr/buffer_based_chooser.ts +85 -20
  287. package/src/core/abr/network_analyzer.ts +6 -7
  288. package/src/core/abr/pending_requests_store.ts +3 -5
  289. package/src/core/abr/representation_estimator.ts +6 -3
  290. package/src/core/api/__tests__/get_player_state.test.ts +3 -3
  291. package/src/core/api/__tests__/option_utils.test.ts +17 -17
  292. package/src/core/api/get_player_state.ts +1 -1
  293. package/src/core/api/index.ts +3 -0
  294. package/src/core/api/media_element_track_choice_manager.ts +22 -3
  295. package/src/core/api/option_utils.ts +37 -20
  296. package/src/core/api/playback_observer.ts +12 -8
  297. package/src/core/api/public_api.ts +152 -112
  298. package/src/core/api/track_choice_manager.ts +10 -9
  299. package/src/core/decrypt/README.md +22 -0
  300. package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
  301. package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
  302. package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
  303. package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
  304. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
  305. package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +36 -103
  306. package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
  307. package/src/core/decrypt/clear_on_stop.ts +48 -0
  308. package/src/core/decrypt/content_decryptor.ts +1158 -0
  309. package/src/core/decrypt/create_or_load_session.ts +130 -0
  310. package/src/core/decrypt/create_session.ts +175 -0
  311. package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
  312. package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
  313. package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
  314. package/src/core/decrypt/get_media_keys.ts +145 -0
  315. package/src/core/{eme → decrypt}/index.ts +11 -8
  316. package/src/core/decrypt/init_media_keys.ts +51 -0
  317. package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
  318. package/src/core/decrypt/set_server_certificate.ts +104 -0
  319. package/src/core/{eme → decrypt}/types.ts +129 -259
  320. package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
  321. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
  322. package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
  323. package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
  324. package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
  325. package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +20 -20
  326. package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
  327. package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
  328. package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
  329. package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
  330. package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
  331. package/src/core/decrypt/utils/key_session_record.ts +175 -0
  332. package/src/core/decrypt/utils/loaded_sessions_store.ts +318 -0
  333. package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
  334. package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
  335. package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
  336. package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
  337. package/src/core/fetchers/manifest/manifest_fetcher.ts +9 -9
  338. package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
  339. package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
  340. package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
  341. package/src/core/init/.initialize_media_source.ts.un~ +0 -0
  342. package/src/core/init/get_initial_time.ts +2 -1
  343. package/src/core/init/initialize_directfile.ts +19 -22
  344. package/src/core/init/initialize_media_source.ts +43 -106
  345. package/src/core/init/link_drm_and_content.ts +176 -0
  346. package/src/core/init/manifest_update_scheduler.ts +12 -10
  347. package/src/core/init/stall_avoider.ts +6 -5
  348. package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
  349. package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
  350. package/src/core/init/stream_events_emitter/types.ts +2 -2
  351. package/src/core/init/types.ts +1 -39
  352. package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
  353. package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +6 -7
  354. package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
  355. package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
  356. package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
  357. package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
  358. package/src/core/stream/events_generators.ts +9 -4
  359. package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
  360. package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
  361. package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
  362. package/src/core/stream/period/period_stream.ts +5 -2
  363. package/src/core/stream/representation/force_garbage_collection.ts +5 -7
  364. package/src/core/stream/representation/get_buffer_status.ts +28 -16
  365. package/src/core/stream/representation/get_needed_segments.ts +124 -28
  366. package/src/core/stream/representation/get_segment_priority.ts +1 -2
  367. package/src/core/stream/representation/push_media_segment.ts +3 -2
  368. package/src/core/stream/representation/representation_stream.ts +30 -7
  369. package/src/core/stream/types.ts +1 -1
  370. package/src/default_config.ts +1241 -0
  371. package/src/errors/request_error.ts +4 -1
  372. package/src/experimental/index.ts +5 -0
  373. package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
  374. package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +5 -7
  375. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
  376. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
  377. package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
  378. package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
  379. package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
  380. package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
  381. package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
  382. package/src/features/__tests__/initialize_features.test.ts +2 -2
  383. package/src/features/features_object.ts +1 -1
  384. package/src/features/initialize_features.ts +1 -1
  385. package/src/features/list/__tests__/eme.test.ts +5 -5
  386. package/src/features/list/eme.ts +5 -5
  387. package/src/features/types.ts +3 -10
  388. package/src/manifest/adaptation.ts +6 -4
  389. package/src/manifest/manifest.ts +16 -86
  390. package/src/manifest/period.ts +3 -3
  391. package/src/manifest/representation.ts +38 -5
  392. package/src/manifest/representation_index/types.ts +18 -18
  393. package/src/manifest/types.ts +3 -3
  394. package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
  395. package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
  396. package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
  397. package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
  398. package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
  399. package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
  400. package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
  401. package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
  402. package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
  403. package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
  404. package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
  405. package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
  406. package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
  407. package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
  408. package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
  409. package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
  410. package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
  411. package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
  412. package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
  413. package/src/parsers/manifest/dash/parsers_types.ts +3 -3
  414. package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
  415. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
  416. package/src/parsers/manifest/smooth/create_parser.ts +24 -21
  417. package/src/parsers/manifest/smooth/representation_index.ts +14 -14
  418. package/src/parsers/manifest/types.ts +28 -28
  419. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
  420. package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
  421. package/src/parsers/manifest/utils/index_helpers.ts +2 -2
  422. package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
  423. package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
  424. package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
  425. package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
  426. package/src/public_types.ts +5 -1
  427. package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
  428. package/src/transports/dash/image_pipelines.ts +4 -1
  429. package/src/transports/dash/init_segment_loader.ts +1 -1
  430. package/src/transports/dash/manifest_parser.ts +1 -1
  431. package/src/transports/dash/segment_loader.ts +7 -7
  432. package/src/transports/dash/segment_parser.ts +8 -1
  433. package/src/transports/dash/text_loader.ts +2 -2
  434. package/src/transports/dash/text_parser.ts +11 -1
  435. package/src/transports/local/segment_loader.ts +4 -4
  436. package/src/transports/local/segment_parser.ts +4 -0
  437. package/src/transports/local/text_parser.ts +8 -0
  438. package/src/transports/metaplaylist/manifest_loader.ts +1 -1
  439. package/src/transports/metaplaylist/pipelines.ts +1 -1
  440. package/src/transports/smooth/pipelines.ts +29 -16
  441. package/src/transports/smooth/segment_loader.ts +8 -8
  442. package/src/transports/types.ts +59 -30
  443. package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
  444. package/src/transports/utils/generate_manifest_loader.ts +1 -1
  445. package/src/utils/__tests__/deep_merge.test.ts +48 -0
  446. package/src/utils/__tests__/flat_map.test.ts +12 -7
  447. package/src/utils/cancellable_sleep.ts +1 -1
  448. package/src/utils/cast_to_observable.ts +1 -2
  449. package/src/utils/deep_merge.ts +46 -0
  450. package/src/utils/reference.ts +116 -23
  451. package/src/utils/request/fetch.ts +17 -15
  452. package/src/utils/request/xhr.ts +11 -8
  453. package/src/utils/rx-from_cancellable_promise.ts +8 -4
  454. package/src/utils/task_canceller.ts +6 -4
  455. package/tsconfig.json +1 -2
  456. package/tsconfig.modules.json +1 -2
  457. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
  458. package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
  459. package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
  460. package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
  461. package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
  462. package/dist/_esm5.processed/core/eme/create_session.js +0 -126
  463. package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
  464. package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
  465. package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
  466. package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
  467. package/dist/_esm5.processed/core/eme/find_key_system.js +0 -243
  468. package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
  469. package/dist/_esm5.processed/core/eme/get_session.js +0 -68
  470. package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
  471. package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
  472. package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
  473. package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
  474. package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
  475. package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
  476. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
  477. package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
  478. package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
  479. package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
  480. package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
  481. package/src/core/eme/README.md +0 -26
  482. package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
  483. package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
  484. package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
  485. package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
  486. package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
  487. package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
  488. package/src/core/eme/clear_eme_session.ts +0 -62
  489. package/src/core/eme/create_session.ts +0 -187
  490. package/src/core/eme/dispose_eme.ts +0 -25
  491. package/src/core/eme/dispose_media_keys.ts +0 -46
  492. package/src/core/eme/eme_manager.ts +0 -387
  493. package/src/core/eme/get_media_keys.ts +0 -141
  494. package/src/core/eme/get_session.ts +0 -135
  495. package/src/core/eme/init_media_keys.ts +0 -106
  496. package/src/core/eme/set_server_certificate.ts +0 -115
  497. package/src/core/eme/utils/close_session.ts +0 -113
  498. package/src/core/eme/utils/init_data_store.ts +0 -234
  499. package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
  500. package/src/core/init/create_eme_manager.ts +0 -95
@@ -17,7 +17,7 @@ import { Observable } from "rxjs";
17
17
  import { IReadOnlySharedReference } from "../../utils/reference";
18
18
  import { IABRManagerArguments } from "../abr";
19
19
  import { PlaybackObserver } from "../api";
20
- import { IKeySystemOption } from "../eme";
20
+ import { IKeySystemOption } from "../decrypt";
21
21
  import { IManifestFetcherParsedResult, IManifestFetcherWarningEvent, ManifestFetcher, SegmentFetcherCreator } from "../fetchers";
22
22
  import { ITextTrackSegmentBufferOptions } from "../segment_buffers";
23
23
  import { IInitialTimeOptions } from "./get_initial_time";
@@ -32,6 +32,8 @@ export interface IInitializeArguments {
32
32
  bufferOptions: {
33
33
  /** Buffer "goal" at which we stop downloading new segments. */
34
34
  wantedBufferAhead: IReadOnlySharedReference<number>;
35
+ /** Buffer maximum size in kiloBytes at which we stop downloading */
36
+ maxVideoBufferSize: IReadOnlySharedReference<number>;
35
37
  /** Max buffer size after the current position, in seconds (we GC further up). */
36
38
  maxBufferAhead: IReadOnlySharedReference<number>;
37
39
  /** Max buffer size before the current position, in seconds (we GC further down). */
@@ -67,7 +69,7 @@ export interface IInitializeArguments {
67
69
  /** Emit the playback rate (speed) set by the user. */
68
70
  speed: IReadOnlySharedReference<number>;
69
71
  /** The configured starting position. */
70
- startAt?: IInitialTimeOptions;
72
+ startAt?: IInitialTimeOptions | undefined;
71
73
  /** Configuration specific to the text track. */
72
74
  textTrackOptions: ITextTrackSegmentBufferOptions;
73
75
  }
@@ -83,7 +85,7 @@ export interface IInitializeArguments {
83
85
  *
84
86
  * - download the content's Manifest and handle its refresh logic
85
87
  *
86
- * - Perform EME management if needed
88
+ * - Perform decryption if needed
87
89
  *
88
90
  * - ask for the choice of the wanted Adaptation through events (e.g. to
89
91
  * choose a language)
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { combineLatest as observableCombineLatest, EMPTY, exhaustMap, filter, finalize, ignoreElements, map, merge as observableMerge, mergeMap, mergeScan, of as observableOf, share, shareReplay, startWith, Subject, switchMap, take, takeUntil, tap, } from "rxjs";
16
+ import { combineLatest as observableCombineLatest, filter, finalize, ignoreElements, map, merge as observableMerge, mergeMap, of as observableOf, share, shareReplay, startWith, Subject, switchMap, take, takeUntil, } from "rxjs";
17
17
  import { shouldReloadMediaSourceOnDecipherabilityUpdate } from "../../compat";
18
18
  import config from "../../config";
19
19
  import log from "../../log";
@@ -22,15 +22,14 @@ import { fromEvent } from "../../utils/event_emitter";
22
22
  import filterMap from "../../utils/filter_map";
23
23
  import objectAssign from "../../utils/object_assign";
24
24
  import ABRManager from "../abr";
25
- import { getCurrentKeySystem, } from "../eme";
26
- import createEMEManager from "./create_eme_manager";
25
+ import { getCurrentKeySystem, } from "../decrypt";
27
26
  import openMediaSource from "./create_media_source";
28
27
  import EVENTS from "./events_generators";
29
28
  import getInitialTime from "./get_initial_time";
29
+ import linkDrmAndContent from "./link_drm_and_content";
30
30
  import createMediaSourceLoader from "./load_on_media_source";
31
31
  import manifestUpdateScheduler from "./manifest_update_scheduler";
32
32
  import throwOnMediaError from "./throw_on_media_error";
33
- var OUT_OF_SYNC_MANIFEST_REFRESH_DELAY = config.OUT_OF_SYNC_MANIFEST_REFRESH_DELAY;
34
33
  /**
35
34
  * Begin content playback.
36
35
  *
@@ -43,7 +42,7 @@ var OUT_OF_SYNC_MANIFEST_REFRESH_DELAY = config.OUT_OF_SYNC_MANIFEST_REFRESH_DEL
43
42
  *
44
43
  * - download the content's Manifest and handle its refresh logic
45
44
  *
46
- * - Perform EME management if needed
45
+ * - Perform decryption if needed
47
46
  *
48
47
  * - ask for the choice of the wanted Adaptation through events (e.g. to
49
48
  * choose a language)
@@ -74,20 +73,21 @@ export default function InitializeOnMediaSource(_a) {
74
73
  * The MediaSource will be closed when subscriptions are down to 0.
75
74
  */
76
75
  var openMediaSource$ = openMediaSource(mediaElement).pipe(shareReplay({ refCount: true }));
77
- /** Send content protection data to the `EMEManager`. */
76
+ /** Send content protection initialization data. */
78
77
  var protectedSegments$ = new Subject();
79
- /** Create `EMEManager`, an observable which will handle content DRM. */
80
- var emeManager$ = createEMEManager(mediaElement, keySystems, protectedSegments$).pipe(
78
+ /** Initialize decryption capabilities and MediaSource. */
79
+ var drmEvents$ = linkDrmAndContent(mediaElement, keySystems, protectedSegments$, openMediaSource$)
80
+ .pipe(
81
81
  // Because multiple Observables here depend on this Observable as a source,
82
82
  // we prefer deferring Subscription until those Observables are themselves
83
83
  // all subscribed to.
84
- // This is needed because `emeManager$` might send events synchronously
84
+ // This is needed because `drmEvents$` might send events synchronously
85
85
  // on subscription. In that case, it might communicate those events directly
86
86
  // after the first Subscription is done, making the next subscription miss
87
87
  // out on those events, even if that second subscription is done
88
88
  // synchronously after the first one.
89
89
  // By calling `deferSubscriptions`, we ensure that subscription to
90
- // `emeManager$` effectively starts after a very short delay, thus
90
+ // `drmEvents$` effectively starts after a very short delay, thus
91
91
  // ensuring that no such race condition can occur.
92
92
  deferSubscriptions(), share());
93
93
  /**
@@ -95,53 +95,16 @@ export default function InitializeOnMediaSource(_a) {
95
95
  * through a throwing Observable.
96
96
  */
97
97
  var mediaError$ = throwOnMediaError(mediaElement);
98
- /**
99
- * Wait for the MediaKeys to have been created before opening the MediaSource,
100
- * after that second step is done, ask the EMEManager to attach the MediaKeys.
101
- * Steps are done in that specific order to avoid compatibility issues.
102
- *
103
- * This Observable will emit when ready both the MediaSource and useful
104
- * DRM-specific information.
105
- */
106
- var prepareMediaSource$ = emeManager$.pipe(mergeScan(function (acc, evt) {
107
- switch (evt.type) {
108
- case "eme-disabled":
109
- case "attached-media-keys":
110
- return observableOf({ isEmeReady: true,
111
- drmSystemId: acc.drmSystemId });
112
- case "created-media-keys":
113
- var drmSystemId_1 = evt.value.initializationDataSystemId;
114
- return openMediaSource$.pipe(mergeMap(function () {
115
- // Now that the MediaSource has been opened and linked to the media
116
- // element we can attach the MediaKeys instance to the latter.
117
- evt.value.canAttachMediaKeys.setValue(true);
118
- // If the `disableMediaKeysAttachmentLock` option has been set to
119
- // `true`, we should not wait until the MediaKeys instance has been
120
- // attached to start loading the content.
121
- // TODO we may want to keep keySystems option knowledge in the EME
122
- // code
123
- var shouldDisableLock = evt.value.options
124
- .disableMediaKeysAttachmentLock === true;
125
- return shouldDisableLock ? observableOf({ isEmeReady: true, drmSystemId: drmSystemId_1 }) :
126
- EMPTY;
127
- }), startWith({ isEmeReady: false, drmSystemId: drmSystemId_1 }));
128
- default:
129
- return EMPTY;
130
- }
131
- }, { isEmeReady: false, drmSystemId: undefined }), filter(function (emitted) { return emitted.isEmeReady; }), take(1), exhaustMap(function (_a) {
132
- var drmSystemId = _a.drmSystemId;
133
- return openMediaSource$
134
- .pipe(map(function (mediaSource) { return ({ mediaSource: mediaSource, drmSystemId: drmSystemId }); }));
135
- }));
98
+ var mediaSourceReady$ = drmEvents$.pipe(filter(function (evt) {
99
+ return evt.type === "decryption-ready" || evt.type === "decryption-disabled";
100
+ }), map(function (e) { return e.value; }), take(1));
136
101
  /** Load and play the content asked. */
137
- var loadContent$ = observableCombineLatest([manifest$,
138
- prepareMediaSource$]).pipe(mergeMap(function (_a) {
139
- var manifestEvt = _a[0], mediaSourceInfo = _a[1];
102
+ var loadContent$ = observableCombineLatest([manifest$, mediaSourceReady$]).pipe(mergeMap(function (_a) {
103
+ var manifestEvt = _a[0], _b = _a[1], drmSystemId = _b.drmSystemId, initialMediaSource = _b.mediaSource;
140
104
  if (manifestEvt.type === "warning") {
141
105
  return observableOf(manifestEvt);
142
106
  }
143
107
  var manifest = manifestEvt.manifest;
144
- var initialMediaSource = mediaSourceInfo.mediaSource, drmSystemId = mediaSourceInfo.drmSystemId;
145
108
  log.debug("Init: Calculating initial time");
146
109
  var initialTime = getInitialTime(manifest, lowLatencyMode, startAt);
147
110
  log.debug("Init: Initial time calculated:", initialTime);
@@ -162,22 +125,7 @@ export default function InitializeOnMediaSource(_a) {
162
125
  var manifestEvents$ = observableMerge(fromEvent(manifest, "manifestUpdate")
163
126
  .pipe(map(function () { return EVENTS.manifestUpdate(); })), fromEvent(manifest, "decipherabilityUpdate")
164
127
  .pipe(map(EVENTS.decipherabilityUpdate)));
165
- var setUndecipherableRepresentations$ = emeManager$.pipe(tap(function (evt) {
166
- if (evt.type === "keys-update") {
167
- manifest.updateDeciperabilitiesBasedOnKeyIds(evt.value);
168
- }
169
- else if (evt.type === "blacklist-protection-data") {
170
- log.info("Init: blacklisting Representations based on protection data.");
171
- manifest.addUndecipherableProtectionData(evt.value);
172
- }
173
- }),
174
- // NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
175
- // first type parameter as `any` instead of the perfectly fine `unknown`,
176
- // leading to linter issues, as it forbids the usage of `any`.
177
- // This is why we're disabling the eslint rule.
178
- /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */
179
- ignoreElements());
180
- return observableMerge(manifestEvents$, manifestUpdate$, setUndecipherableRepresentations$, recursiveLoad$)
128
+ return observableMerge(manifestEvents$, manifestUpdate$, recursiveLoad$)
181
129
  .pipe(startWith(EVENTS.manifestReady(manifest)), finalize(function () { scheduleRefresh$.complete(); }));
182
130
  /**
183
131
  * Load the content defined by the Manifest in the mediaSource given at the
@@ -199,6 +147,7 @@ export default function InitializeOnMediaSource(_a) {
199
147
  canUseUnsafeMode: true });
200
148
  return null;
201
149
  case "manifest-might-be-out-of-sync":
150
+ var OUT_OF_SYNC_MANIFEST_REFRESH_DELAY = config.getCurrent().OUT_OF_SYNC_MANIFEST_REFRESH_DELAY;
202
151
  scheduleRefresh$.next({
203
152
  completeRefresh: true,
204
153
  canUseUnsafeMode: false,
@@ -240,5 +189,5 @@ export default function InitializeOnMediaSource(_a) {
240
189
  return observableMerge(handleReloads$, currentLoad$);
241
190
  }
242
191
  }));
243
- return observableMerge(loadContent$, mediaError$, emeManager$);
192
+ return observableMerge(loadContent$, mediaError$, drmEvents$.pipe(ignoreElements()));
244
193
  }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Copyright 2015 CANAL+ Group
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Observable } from "rxjs";
17
+ import { IContentProtection, IKeySystemOption } from "../decrypt";
18
+ import { IWarningEvent } from "./types";
19
+ /**
20
+ * @param {HTMLMediaElement} mediaElement
21
+ * @param {Array.<Object>} keySystems
22
+ * @param {Observable<Object>} contentProtections$
23
+ * @param {Promise} linkingMedia$
24
+ * @returns {Observable}
25
+ */
26
+ export default function linkDrmAndContent<T>(mediaElement: HTMLMediaElement, keySystems: IKeySystemOption[], contentProtections$: Observable<IContentProtection>, linkingMedia$: Observable<T>): Observable<IContentDecryptorInitEvent<T>>;
27
+ export declare type IContentDecryptorInitEvent<T> = IDecryptionDisabledEvent<T> | IDecryptionReadyEvent<T> | IWarningEvent;
28
+ /**
29
+ * Event emitted after deciding that no decryption logic will be launched for
30
+ * the current content.
31
+ */
32
+ export interface IDecryptionDisabledEvent<T> {
33
+ type: "decryption-disabled";
34
+ value: {
35
+ /**
36
+ * Identify the current DRM's system ID.
37
+ * Here `undefined` as no decryption capability has been added.
38
+ */
39
+ drmSystemId: undefined;
40
+ /** The value outputed by the `linkingMedia$` Observable. */
41
+ mediaSource: T;
42
+ };
43
+ }
44
+ /**
45
+ * Event emitted when decryption capabilities have started and content can
46
+ * begin to be pushed on the HTMLMediaElement.
47
+ */
48
+ export interface IDecryptionReadyEvent<T> {
49
+ type: "decryption-ready";
50
+ value: {
51
+ /**
52
+ * Identify the current DRM's systemId as an hexadecimal string, so the
53
+ * RxPlayer may be able to (optionally) only send the corresponding
54
+ * encryption initialization data.
55
+ * `undefined` if unknown.
56
+ */
57
+ drmSystemId: string | undefined;
58
+ /** The value outputed by the `linkingMedia$` Observable. */
59
+ mediaSource: T;
60
+ };
61
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Copyright 2015 CANAL+ Group
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { map, merge as observableMerge, Observable, } from "rxjs";
17
+ import { events, hasEMEAPIs, } from "../../compat/";
18
+ import { EncryptedMediaError } from "../../errors";
19
+ import features from "../../features";
20
+ import log from "../../log";
21
+ import { ContentDecryptorState, } from "../decrypt";
22
+ var onEncrypted$ = events.onEncrypted$;
23
+ /**
24
+ * @param {HTMLMediaElement} mediaElement
25
+ * @param {Array.<Object>} keySystems
26
+ * @param {Observable<Object>} contentProtections$
27
+ * @param {Promise} linkingMedia$
28
+ * @returns {Observable}
29
+ */
30
+ export default function linkDrmAndContent(mediaElement, keySystems, contentProtections$, linkingMedia$) {
31
+ var encryptedEvents$ = observableMerge(onEncrypted$(mediaElement), contentProtections$);
32
+ if (features.ContentDecryptor == null) {
33
+ return observableMerge(encryptedEvents$.pipe(map(function () {
34
+ log.error("Init: Encrypted event but EME feature not activated");
35
+ throw new EncryptedMediaError("MEDIA_IS_ENCRYPTED_ERROR", "EME feature not activated.");
36
+ })), linkingMedia$.pipe(map(function (mediaSource) { return ({
37
+ type: "decryption-disabled",
38
+ value: { drmSystemId: undefined, mediaSource: mediaSource },
39
+ }); })));
40
+ }
41
+ if (keySystems.length === 0) {
42
+ return observableMerge(encryptedEvents$.pipe(map(function () {
43
+ log.error("Init: Ciphered media and no keySystem passed");
44
+ throw new EncryptedMediaError("MEDIA_IS_ENCRYPTED_ERROR", "Media is encrypted and no `keySystems` given");
45
+ })), linkingMedia$.pipe(map(function (mediaSource) { return ({
46
+ type: "decryption-disabled",
47
+ value: { drmSystemId: undefined, mediaSource: mediaSource },
48
+ }); })));
49
+ }
50
+ if (!hasEMEAPIs()) {
51
+ return observableMerge(encryptedEvents$.pipe(map(function () {
52
+ log.error("Init: Encrypted event but no EME API available");
53
+ throw new EncryptedMediaError("MEDIA_IS_ENCRYPTED_ERROR", "Encryption APIs not found.");
54
+ })), linkingMedia$.pipe(map(function (mediaSource) { return ({
55
+ type: "decryption-disabled",
56
+ value: { drmSystemId: undefined, mediaSource: mediaSource },
57
+ }); })));
58
+ }
59
+ log.debug("Init: Creating ContentDecryptor");
60
+ var ContentDecryptor = features.ContentDecryptor;
61
+ return new Observable(function (obs) {
62
+ var contentDecryptor = new ContentDecryptor(mediaElement, keySystems);
63
+ var mediaSub;
64
+ contentDecryptor.addEventListener("stateChange", function (state) {
65
+ if (state === ContentDecryptorState.WaitingForAttachment) {
66
+ contentDecryptor.removeEventListener("stateChange");
67
+ mediaSub = linkingMedia$.subscribe(function (mediaSource) {
68
+ contentDecryptor.addEventListener("stateChange", function (newState) {
69
+ if (newState === ContentDecryptorState.ReadyForContent) {
70
+ obs.next({ type: "decryption-ready",
71
+ value: { drmSystemId: contentDecryptor.systemId, mediaSource: mediaSource } });
72
+ contentDecryptor.removeEventListener("stateChange");
73
+ }
74
+ });
75
+ contentDecryptor.attach();
76
+ });
77
+ }
78
+ });
79
+ contentDecryptor.addEventListener("error", function (e) {
80
+ obs.error(e);
81
+ });
82
+ contentDecryptor.addEventListener("warning", function (w) {
83
+ obs.next({ type: "warning", value: w });
84
+ });
85
+ var protectionDataSub = contentProtections$.subscribe(function (data) {
86
+ contentDecryptor.onInitializationData(data);
87
+ });
88
+ return function () {
89
+ protectionDataSub.unsubscribe();
90
+ mediaSub === null || mediaSub === void 0 ? void 0 : mediaSub.unsubscribe();
91
+ contentDecryptor.dispose();
92
+ };
93
+ });
94
+ }
@@ -24,9 +24,9 @@ export interface IManifestUpdateSchedulerArguments {
24
24
  /** Information about the initial load of the manifest */
25
25
  initialManifest: {
26
26
  manifest: Manifest;
27
- sendingTime?: number;
28
- receivedTime?: number;
29
- parsingTime?: number;
27
+ sendingTime?: number | undefined;
28
+ receivedTime?: number | undefined;
29
+ parsingTime?: number | undefined;
30
30
  };
31
31
  /** Minimum interval to keep between Manifest updates */
32
32
  minimumManifestUpdateInterval: number;
@@ -47,7 +47,7 @@ export interface IManifestRefreshSchedulerEvent {
47
47
  * Optional wanted refresh delay, which is the minimum time you want to wait
48
48
  * before updating the Manifest
49
49
  */
50
- delay?: number;
50
+ delay?: number | undefined;
51
51
  /**
52
52
  * Whether the parsing can be done in the more efficient "unsafeMode".
53
53
  * This mode is extremely fast but can lead to de-synchronisation with the
@@ -17,7 +17,6 @@ import { defer as observableDefer, EMPTY, from as observableFrom, map, merge as
17
17
  import config from "../../config";
18
18
  import log from "../../log";
19
19
  import throttle from "../../utils/rx-throttle";
20
- var FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY = config.FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY, MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE = config.MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE, MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE = config.MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE;
21
20
  /**
22
21
  * Refresh the Manifest at the right time.
23
22
  * @param {Object} manifestUpdateSchedulerArguments
@@ -56,6 +55,7 @@ export default function manifestUpdateScheduler(_a) {
56
55
  var totalUpdateTime = parsingTime !== undefined ?
57
56
  parsingTime + (updatingTime !== null && updatingTime !== void 0 ? updatingTime : 0) :
58
57
  undefined;
58
+ var _b = config.getCurrent(), MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE = _b.MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE, MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE = _b.MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE;
59
59
  /**
60
60
  * "unsafeMode" is a mode where we unlock advanced Manifest parsing
61
61
  * optimizations with the added risk to lose some information.
@@ -194,6 +194,7 @@ export default function manifestUpdateScheduler(_a) {
194
194
  var message = e instanceof Error ? e.message :
195
195
  "unknown error";
196
196
  log.warn("MUS: Attempt to update Manifest failed: ".concat(message), "Re-downloading the Manifest fully");
197
+ var FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY = config.getCurrent().FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY;
197
198
  return startManualRefreshTimer(FAILED_PARTIAL_UPDATE_MANIFEST_REFRESH_DELAY, minimumManifestUpdateInterval, newSendingTime)
198
199
  .pipe(mergeMap(function () {
199
200
  return refreshManifest({ completeRefresh: true, unsafeMode: false });
@@ -20,7 +20,6 @@ import { MediaError } from "../../errors";
20
20
  import log from "../../log";
21
21
  import { getNextRangeGap } from "../../utils/ranges";
22
22
  import EVENTS from "../stream/events_generators";
23
- var BUFFER_DISCONTINUITY_THRESHOLD = config.BUFFER_DISCONTINUITY_THRESHOLD, FORCE_DISCONTINUITY_SEEK_DELAY = config.FORCE_DISCONTINUITY_SEEK_DELAY, FREEZING_STALLED_DELAY = config.FREEZING_STALLED_DELAY, UNFREEZING_SEEK_DELAY = config.UNFREEZING_SEEK_DELAY, UNFREEZING_DELTA_POSITION = config.UNFREEZING_DELTA_POSITION;
24
23
  /**
25
24
  * Work-around rounding errors with floating points by setting an acceptable,
26
25
  * very short, deviation when checking equalities.
@@ -106,6 +105,7 @@ export default function StallAvoider(playbackObserver, manifest, lockedStream$,
106
105
  var stall$ = playbackObserver.observe(true).pipe(withLatestFrom(discontinuitiesStore$), map(function (_a) {
107
106
  var observation = _a[0], discontinuitiesStore = _a[1];
108
107
  var buffered = observation.buffered, position = observation.position, readyState = observation.readyState, rebuffering = observation.rebuffering, freezing = observation.freezing;
108
+ var _b = config.getCurrent(), BUFFER_DISCONTINUITY_THRESHOLD = _b.BUFFER_DISCONTINUITY_THRESHOLD, FORCE_DISCONTINUITY_SEEK_DELAY = _b.FORCE_DISCONTINUITY_SEEK_DELAY, FREEZING_STALLED_DELAY = _b.FREEZING_STALLED_DELAY, UNFREEZING_SEEK_DELAY = _b.UNFREEZING_SEEK_DELAY, UNFREEZING_DELTA_POSITION = _b.UNFREEZING_DELTA_POSITION;
109
109
  if (freezing !== null) {
110
110
  var now = performance.now();
111
111
  var referenceTimestamp = prevFreezingState === null ?
@@ -28,12 +28,12 @@
28
28
  * @returns {Boolean}
29
29
  */
30
30
  declare function areSameStreamEvents(evt1: {
31
- id?: string;
31
+ id?: string | undefined;
32
32
  start: number;
33
- end?: number;
33
+ end?: number | undefined;
34
34
  }, evt2: {
35
- id?: string;
35
+ id?: string | undefined;
36
36
  start: number;
37
- end?: number;
37
+ end?: number | undefined;
38
38
  }): boolean;
39
39
  export default areSameStreamEvents;
@@ -17,7 +17,6 @@ import { combineLatest as observableCombineLatest, concat as observableConcat, d
17
17
  import config from "../../../config";
18
18
  import { fromEvent } from "../../../utils/event_emitter";
19
19
  import refreshScheduledEventsList from "./refresh_scheduled_events_list";
20
- var STREAM_EVENT_EMITTER_POLL_INTERVAL = config.STREAM_EVENT_EMITTER_POLL_INTERVAL;
21
20
  /**
22
21
  * Tells if a stream event has a duration
23
22
  * @param {Object} evt
@@ -109,6 +108,7 @@ function streamEventsEmitter(manifest, mediaElement, observation$) {
109
108
  if (!hasEvents) {
110
109
  return EMPTY;
111
110
  }
111
+ var STREAM_EVENT_EMITTER_POLL_INTERVAL = config.getCurrent().STREAM_EVENT_EMITTER_POLL_INTERVAL;
112
112
  return observableCombineLatest([
113
113
  interval(STREAM_EVENT_EMITTER_POLL_INTERVAL).pipe(startWith(null)),
114
114
  observation$,
@@ -22,14 +22,14 @@ export interface IStreamEventData {
22
22
  };
23
23
  }
24
24
  export interface IStreamEventPayload {
25
- id?: string;
25
+ id?: string | undefined;
26
26
  start: number;
27
27
  end: number;
28
28
  data: IStreamEventData;
29
29
  publicEvent: IPublicStreamEvent;
30
30
  }
31
31
  export interface INonFiniteStreamEventPayload {
32
- id?: string;
32
+ id?: string | undefined;
33
33
  start: number;
34
34
  data: IStreamEventData;
35
35
  publicEvent: IPublicNonFiniteStreamEvent;
@@ -15,10 +15,8 @@
15
15
  */
16
16
  import { ICustomError } from "../../errors";
17
17
  import Manifest, { Adaptation, Period, Representation } from "../../manifest";
18
- import { IAttachedMediaKeysEvent, IBlacklistProtectionDataEvent, ICreatedMediaKeysEvent, IEncryptedEvent, IInitDataIgnoredEvent, IKeysUpdateEvent, INoUpdateEvent, ISessionMessageEvent, ISessionUpdatedEvent } from "../eme";
19
18
  import SegmentBuffersStore from "../segment_buffers";
20
19
  import { IActivePeriodChangedEvent, IAdaptationChangeEvent, IBitrateEstimationChangeEvent, ICompletedStreamEvent, IEncryptionDataEncounteredEvent, IInbandEventsEvent, INeedsBufferFlushEvent, INeedsDecipherabilityFlush, INeedsMediaSourceReload, IPeriodStreamClearedEvent, IPeriodStreamReadyEvent, IRepresentationChangeEvent, IStreamEventAddedSegment, IStreamManifestMightBeOutOfSync, IStreamNeedsManifestRefresh } from "../stream";
21
- import { IEMEDisabledEvent } from "./create_eme_manager";
22
20
  import { IStreamEventEvent, IStreamEventSkipEvent } from "./stream_events_emitter";
23
21
  /** Event sent after the Manifest has been loaded and parsed for the first time. */
24
22
  export interface IManifestReadyEvent {
@@ -91,6 +89,6 @@ export { IRepresentationChangeEvent };
91
89
  /** Events emitted by a `MediaSourceLoader`. */
92
90
  export declare type IMediaSourceLoaderEvent = IStalledEvent | IUnstalledEvent | ILoadedEvent | IWarningEvent | IStreamEventEvent | IStreamEventSkipEvent | IActivePeriodChangedEvent | IPeriodStreamClearedEvent | ICompletedStreamEvent | IPeriodStreamReadyEvent | INeedsMediaSourceReload | INeedsBufferFlushEvent | IAdaptationChangeEvent | IBitrateEstimationChangeEvent | INeedsDecipherabilityFlush | IRepresentationChangeEvent | IStreamEventAddedSegment<unknown> | IEncryptionDataEncounteredEvent | IStreamManifestMightBeOutOfSync | IStreamNeedsManifestRefresh | IInbandEventsEvent;
93
91
  /** Every events emitted by the `Init` module. */
94
- export declare type IInitEvent = IManifestReadyEvent | IManifestUpdateEvent | IReloadingMediaSourceEvent | IDecipherabilityUpdateEvent | IWarningEvent | IEMEDisabledEvent | IEncryptedEvent | ICreatedMediaKeysEvent | IAttachedMediaKeysEvent | IInitDataIgnoredEvent | ISessionMessageEvent | IKeysUpdateEvent | INoUpdateEvent | ISessionUpdatedEvent | IBlacklistProtectionDataEvent | IStalledEvent | IUnstalledEvent | ILoadedEvent | IStreamEventEvent | IStreamEventSkipEvent | IActivePeriodChangedEvent | IPeriodStreamClearedEvent | ICompletedStreamEvent | IPeriodStreamReadyEvent | IAdaptationChangeEvent | IBitrateEstimationChangeEvent | IRepresentationChangeEvent | IStreamEventAddedSegment<unknown> | IInbandEventsEvent;
92
+ export declare type IInitEvent = IManifestReadyEvent | IManifestUpdateEvent | IReloadingMediaSourceEvent | IDecipherabilityUpdateEvent | IWarningEvent | IStalledEvent | IUnstalledEvent | ILoadedEvent | IStreamEventEvent | IStreamEventSkipEvent | IActivePeriodChangedEvent | IPeriodStreamClearedEvent | ICompletedStreamEvent | IPeriodStreamReadyEvent | IAdaptationChangeEvent | IBitrateEstimationChangeEvent | IRepresentationChangeEvent | IStreamEventAddedSegment<unknown> | IInbandEventsEvent;
95
93
  /** Events emitted by the `Init` module for directfile contents. */
96
- export declare type IDirectfileEvent = IStalledEvent | IUnstalledEvent | ILoadedEvent | IWarningEvent | IEMEDisabledEvent | IEncryptedEvent | ICreatedMediaKeysEvent | IAttachedMediaKeysEvent | IInitDataIgnoredEvent | ISessionMessageEvent | IKeysUpdateEvent | INoUpdateEvent | ISessionUpdatedEvent | IBlacklistProtectionDataEvent;
94
+ export declare type IDirectfileEvent = IStalledEvent | IUnstalledEvent | ILoadedEvent | IWarningEvent;
@@ -39,7 +39,6 @@ import { toUint8Array } from "../../../../utils/byte_parsing";
39
39
  import hashBuffer from "../../../../utils/hash_buffer";
40
40
  import objectAssign from "../../../../utils/object_assign";
41
41
  import { SegmentBuffer, SegmentBufferOperation, } from "../types";
42
- var SOURCE_BUFFER_FLUSHING_INTERVAL = config.SOURCE_BUFFER_FLUSHING_INTERVAL;
43
42
  /**
44
43
  * Allows to push and remove new segments to a SourceBuffer in a FIFO queue (not
45
44
  * doing so can lead to browser Errors) while keeping an inventory of what has
@@ -69,6 +68,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
69
68
  _this._pendingTask = null;
70
69
  _this._lastInitSegment = null;
71
70
  _this.codec = codec;
71
+ var SOURCE_BUFFER_FLUSHING_INTERVAL = config.getCurrent().SOURCE_BUFFER_FLUSHING_INTERVAL;
72
72
  // Some browsers (happened with firefox 66) sometimes "forget" to send us
73
73
  // `update` or `updateend` events.
74
74
  // In that case, we're completely unable to continue the queue here and
@@ -124,9 +124,9 @@ export interface INativeTextTracksBufferSegmentData {
124
124
  * This is mostly needed for "sami" subtitles, to know which cues can / should
125
125
  * be parsed.
126
126
  */
127
- language?: string;
127
+ language?: string | undefined;
128
128
  /** start time from which the segment apply, in seconds. */
129
- start?: number;
129
+ start?: number | undefined;
130
130
  /** end time until which the segment apply, in seconds. */
131
- end?: number;
131
+ end?: number | undefined;
132
132
  }
@@ -38,7 +38,6 @@ import parseTextTrackToElements from "./parsers";
38
38
  import TextTrackCuesStore from "./text_track_cues_store";
39
39
  import updateProportionalElements from "./update_proportional_elements";
40
40
  var onEnded$ = events.onEnded$, onSeeked$ = events.onSeeked$, onSeeking$ = events.onSeeking$;
41
- var MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL = config.MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL, TEXT_TRACK_SIZE_CHECKS_INTERVAL = config.TEXT_TRACK_SIZE_CHECKS_INTERVAL;
42
41
  /**
43
42
  * Generate the interval at which TextTrack HTML Cues should be refreshed.
44
43
  * @param {HTMLMediaElement} videoElement
@@ -48,6 +47,7 @@ function generateRefreshInterval(videoElement) {
48
47
  var seeking$ = onSeeking$(videoElement);
49
48
  var seeked$ = onSeeked$(videoElement);
50
49
  var ended$ = onEnded$(videoElement);
50
+ var MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL = config.getCurrent().MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL;
51
51
  var manualRefresh$ = observableMerge(seeked$, ended$);
52
52
  var autoRefresh$ = observableInterval(MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL)
53
53
  .pipe(startWith(null));
@@ -113,6 +113,7 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
113
113
  _this._disableCurrentCues();
114
114
  return;
115
115
  }
116
+ var MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL = config.getCurrent().MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL;
116
117
  // to spread the time error, we divide the regular chosen interval.
117
118
  var time = Math.max(_this._videoElement.currentTime +
118
119
  (MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL / 1000) / 2, 0);
@@ -315,6 +316,7 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
315
316
  var proportionalCues = this._currentCues
316
317
  .filter(function (cue) { return cue.resolution !== null; });
317
318
  if (proportionalCues.length > 0) {
319
+ var TEXT_TRACK_SIZE_CHECKS_INTERVAL = config.getCurrent().TEXT_TRACK_SIZE_CHECKS_INTERVAL;
318
320
  // update propertionally-sized elements periodically
319
321
  onHeightWidthChange(this._textTrackElement, TEXT_TRACK_SIZE_CHECKS_INTERVAL)
320
322
  .pipe(takeUntil(this._clearSizeUpdates$), takeUntil(this._destroy$))