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
@@ -15,7 +15,6 @@
15
15
  */
16
16
 
17
17
  import { isCodecSupported } from "../compat";
18
- import { IContentProtection } from "../core/eme";
19
18
  import log from "../log";
20
19
  import {
21
20
  IContentProtections,
@@ -55,7 +54,7 @@ class Representation {
55
54
  * A string describing the codec used for this Representation.
56
55
  * undefined if we do not know.
57
56
  */
58
- public codec? : string;
57
+ public codec : string | undefined;
59
58
 
60
59
  /**
61
60
  * A string describing the mime-type for this Representation.
@@ -93,7 +92,7 @@ class Representation {
93
92
  * Representation
94
93
  * - if `undefined` there is no certainty on this matter
95
94
  */
96
- public decipherable? : boolean;
95
+ public decipherable? : boolean | undefined;
97
96
 
98
97
  /** `true` if the Representation is in a supported codec, false otherwise. */
99
98
  public isSupported : boolean;
@@ -166,7 +165,7 @@ class Representation {
166
165
  * @param {string} drmSystemId - The hexa-encoded DRM system ID
167
166
  * @returns {Array.<Object>}
168
167
  */
169
- public getEncryptionData(drmSystemId : string) : IContentProtection[] {
168
+ public getEncryptionData(drmSystemId : string) : IRepresentationProtectionData[] {
170
169
  const allInitData = this.getAllEncryptionData();
171
170
  const filtered = [];
172
171
  for (let i = 0; i < allInitData.length; i++) {
@@ -216,7 +215,7 @@ class Representation {
216
215
  * after parsing this Representation's initialization segment, if one exists.
217
216
  * @returns {Array.<Object>}
218
217
  */
219
- public getAllEncryptionData() : IContentProtection[] {
218
+ public getAllEncryptionData() : IRepresentationProtectionData[] {
220
219
  if (this.contentProtections === undefined ||
221
220
  this.contentProtections.initData.length === 0)
222
221
  {
@@ -297,4 +296,38 @@ class Representation {
297
296
  }
298
297
  }
299
298
 
299
+ /** Protection data as returned by a Representation. */
300
+ export interface IRepresentationProtectionData {
301
+ /**
302
+ * Initialization data type.
303
+ * String describing the format of the initialization data sent through this
304
+ * event.
305
+ * https://www.w3.org/TR/eme-initdata-registry/
306
+ */
307
+ type: string;
308
+ /**
309
+ * The key ids linked to those initialization data.
310
+ * This should be the key ids for the key concerned by the media which have
311
+ * the present initialization data.
312
+ *
313
+ * `undefined` when not known (different from an empty array - which would
314
+ * just mean that there's no key id involved).
315
+ */
316
+ keyIds : Uint8Array[] | undefined;
317
+ /** Every initialization data for that type. */
318
+ values: Array<{
319
+ /**
320
+ * Hex encoded system id, which identifies the key system.
321
+ * https://dashif.org/identifiers/content_protection/
322
+ */
323
+ systemId: string;
324
+ /**
325
+ * The initialization data itself for that type and systemId.
326
+ * For example, with "cenc" initialization data found in an ISOBMFF file,
327
+ * this will be the whole PSSH box.
328
+ */
329
+ data: Uint8Array;
330
+ }>;
331
+ }
332
+
300
333
  export default Representation;
@@ -38,12 +38,12 @@ export interface ISmoothInitSegmentPrivateInfos {
38
38
  * as found in the Manifest.
39
39
  */
40
40
  timescale : number;
41
- codecPrivateData? : string;
42
- bitsPerSample? : number;
43
- channels? : number;
44
- packetSize? : number;
45
- samplingRate? : number;
46
- protection? : { keyId : Uint8Array };
41
+ codecPrivateData? : string | undefined;
42
+ bitsPerSample? : number | undefined;
43
+ channels? : number | undefined;
44
+ packetSize? : number | undefined;
45
+ samplingRate? : number | undefined;
46
+ protection? : { keyId : Uint8Array } | undefined;
47
47
  }
48
48
 
49
49
  /**
@@ -78,7 +78,7 @@ export interface IMetaPlaylistPrivateInfos {
78
78
  /** The segment originally created by this transport's RepresentationIndex. */
79
79
  originalSegment : ISegment;
80
80
  contentStart : number;
81
- contentEnd? : number;
81
+ contentEnd? : number | undefined;
82
82
  }
83
83
 
84
84
  /**
@@ -112,12 +112,12 @@ export interface ILocalManifestSegmentPrivateInfos {
112
112
  * exploited by the corresponding transport logic.
113
113
  */
114
114
  export interface IPrivateInfos {
115
- smoothInitSegment? : ISmoothInitSegmentPrivateInfos;
116
- smoothMediaSegment? : ISmoothSegmentPrivateInfos;
117
- metaplaylistInfos? : IMetaPlaylistPrivateInfos;
118
- localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos;
119
- localManifestSegment? : ILocalManifestSegmentPrivateInfos;
120
- isEMSGWhitelisted? : (evt: IEMSG) => boolean;
115
+ smoothInitSegment? : ISmoothInitSegmentPrivateInfos | undefined;
116
+ smoothMediaSegment? : ISmoothSegmentPrivateInfos | undefined;
117
+ metaplaylistInfos? : IMetaPlaylistPrivateInfos | undefined;
118
+ localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos | undefined;
119
+ localManifestSegment? : ILocalManifestSegmentPrivateInfos | undefined;
120
+ isEMSGWhitelisted? : ((evt: IEMSG) => boolean) | undefined;
121
121
  }
122
122
 
123
123
  /** Represent a single Segment from a Representation. */
@@ -149,24 +149,24 @@ export interface ISegment {
149
149
  * contain an index describing other Segments
150
150
  * TODO put in privateInfos?
151
151
  */
152
- indexRange? : [number, number];
152
+ indexRange? : [number, number] | undefined;
153
153
  /**
154
154
  * Optional number of the Segment
155
155
  * TODO put in privateInfos?
156
156
  */
157
- number? : number;
157
+ number? : number | undefined;
158
158
  /**
159
159
  * Allows to store supplementary information on a segment that can be later
160
160
  * exploited by the transport logic.
161
161
  */
162
- privateInfos? : IPrivateInfos;
162
+ privateInfos? : IPrivateInfos | undefined;
163
163
  /** Optional byte range to retrieve the Segment from its URL(s) */
164
- range? : [number, number];
164
+ range? : [number, number] | undefined;
165
165
  /**
166
166
  * Estimated time, in seconds, at which the concerned segment should be
167
167
  * offseted when decoded.
168
168
  */
169
- timestampOffset? : number;
169
+ timestampOffset? : number | undefined;
170
170
  /**
171
171
  * Estimated start time for the segment, in seconds.
172
172
  * Note that some rounding errors and some differences between what the
@@ -39,7 +39,7 @@ export interface IHDRInformation {
39
39
  * It is used to ask to the user agent if the color depth is supported by the
40
40
  * output device.
41
41
  */
42
- colorDepth?: number;
42
+ colorDepth? : number | undefined;
43
43
  /**
44
44
  * It is the HDR eotf. It is the transfer function having the video signal as
45
45
  * input and converting it into the linear light output of the display. The
@@ -47,14 +47,14 @@ export interface IHDRInformation {
47
47
  *
48
48
  * It may be used here to ask the MediaSource if it supported.
49
49
  */
50
- eotf?: string;
50
+ eotf? : string | undefined;
51
51
  /**
52
52
  * It is the video color space used for encoding. An HDR content may not have
53
53
  * a wide color gamut.
54
54
  *
55
55
  * It may be used to ask about output device color space support.
56
56
  */
57
- colorSpace?: string;
57
+ colorSpace? : string | undefined;
58
58
  }
59
59
 
60
60
  /** Manifest, as documented in the API documentation. */
@@ -46,6 +46,7 @@ describe("DASH parsers - ManifestBoundsCalculator", () => {
46
46
  /* eslint-enable max-len */
47
47
  const manifestBoundsCalculator = new ManifestBoundsCalculator({
48
48
  isDynamic: false,
49
+ timeShiftBufferDepth: undefined,
49
50
  });
50
51
  expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0);
51
52
  expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0);
@@ -39,7 +39,7 @@ export interface IParsedWEBMHDRInformation {
39
39
  *
40
40
  * It may be used to ask about output device color space support.
41
41
  */
42
- colorSpace?: "rec2020";
42
+ colorSpace: "rec2020" | undefined;
43
43
  }
44
44
 
45
45
  /**
@@ -21,9 +21,9 @@ interface IPeriodTimeInformation {
21
21
  /** Time in seconds at which the Period starts. */
22
22
  periodStart: number;
23
23
  /** Difference in seconds between the Period's end and its start. */
24
- periodDuration?: number;
24
+ periodDuration?: number | undefined;
25
25
  /** Time in seconds at which the Period ends. */
26
- periodEnd?: number;
26
+ periodEnd?: number | undefined;
27
27
  }
28
28
 
29
29
  /** Additionnal context needed to retrieve the period time information. */
@@ -31,7 +31,7 @@ export interface IParsedPeriodsContext {
31
31
  /** Value of MPD@availabilityStartTime. */
32
32
  availabilityStartTime : number;
33
33
  /** Value of MPD@mediaPresentationDuration. */
34
- duration? : number;
34
+ duration? : number | undefined;
35
35
  /** `true` if MPD@type is equal to "dynamic". */
36
36
  isDynamic : boolean;
37
37
  }
@@ -38,7 +38,7 @@ import { createIndexURLs } from "./tokens";
38
38
  */
39
39
  export interface IBaseIndex {
40
40
  /** Byte range for a possible index of segments in the server. */
41
- indexRange?: [number, number];
41
+ indexRange?: [number, number] | undefined;
42
42
  /**
43
43
  * Temporal offset, in the current timescale (see timescale), to add to the
44
44
  * presentation time (time a segment has at decoding time) to obtain the
@@ -57,15 +57,15 @@ export interface IBaseIndex {
57
57
  /** URLs to access the initialization segment. */
58
58
  mediaURLs: string[] | null;
59
59
  /** possible byte range to request it. */
60
- range?: [number, number];
61
- };
60
+ range?: [number, number] | undefined;
61
+ } | undefined;
62
62
  /**
63
63
  * Base URL(s) to access any segment. Can contain tokens to replace to convert
64
64
  * it to real URLs.
65
65
  */
66
66
  mediaURLs : string[] | null;
67
67
  /** Number from which the first segments in this index starts with. */
68
- startNumber? : number;
68
+ startNumber? : number | undefined;
69
69
  /** Every segments defined in this index. */
70
70
  timeline : IIndexSegment[];
71
71
  /**
@@ -113,9 +113,9 @@ export interface IBaseIndexContextArgument {
113
113
  /** Base URL for the Representation concerned. */
114
114
  representationBaseURLs : IResolvedBaseUrl[];
115
115
  /** ID of the Representation concerned. */
116
- representationId? : string;
116
+ representationId? : string | undefined;
117
117
  /** Bitrate of the Representation concerned. */
118
- representationBitrate? : number;
118
+ representationBitrate? : number | undefined;
119
119
  /* Function that tells if an EMSG is whitelisted by the manifest */
120
120
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
121
121
  }
@@ -25,8 +25,10 @@ import { IEMSG } from "../../../../containers/isobmff";
25
25
  */
26
26
  export default function getInitSegment(
27
27
  index: { timescale: number;
28
- initialization?: { mediaURLs: string[] | null; range?: [number, number] };
29
- indexRange?: [number, number];
28
+ initialization?: { mediaURLs: string[] | null;
29
+ range?: [number, number] | undefined; } |
30
+ undefined;
31
+ indexRange?: [number, number] | undefined;
30
32
  indexTimeOffset : number; },
31
33
  isEMSGWhitelisted?: (inbandEvent: IEMSG) => boolean
32
34
  ) : ISegment {
@@ -52,9 +52,9 @@ function getWantedRepeatIndex(
52
52
  * @returns {Array.<Object>}
53
53
  */
54
54
  export default function getSegmentsFromTimeline(
55
- index : { availabilityTimeComplete? : boolean;
55
+ index : { availabilityTimeComplete? : boolean | undefined;
56
56
  mediaURLs : string[] | null;
57
- startNumber? : number;
57
+ startNumber? : number | undefined;
58
58
  timeline : IIndexSegment[];
59
59
  timescale : number;
60
60
  indexTimeOffset : number; },
@@ -16,7 +16,6 @@
16
16
 
17
17
  import config from "../../../../../config";
18
18
 
19
- const { DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR } = config;
20
19
 
21
20
  /**
22
21
  * In Javascript, numbers are encoded in a way that a floating number may be
@@ -36,7 +35,7 @@ export default function isPeriodFulfilled(
36
35
  periodEnd: number
37
36
  ): boolean {
38
37
  const scaledRoundingError =
39
- DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
38
+ config.getCurrent().DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
40
39
  return (lastSegmentEnd + scaledRoundingError) >= periodEnd;
41
40
  }
42
41
 
@@ -37,7 +37,7 @@ export interface IListIndex {
37
37
  */
38
38
  duration : number;
39
39
  /** Byte range for a possible index of segments in the server. */
40
- indexRange?: [number, number];
40
+ indexRange?: [number, number] | undefined;
41
41
  /**
42
42
  * Temporal offset, in the current timescale (see timescale), to add to the
43
43
  * presentation time (time a segment has at decoding time) to obtain the
@@ -56,14 +56,14 @@ export interface IListIndex {
56
56
  /** URLs to access the initialization segment. */
57
57
  mediaURLs: string[] | null;
58
58
  /** possible byte range to request it. */
59
- range?: [number, number];
60
- };
59
+ range?: [number, number] | undefined;
60
+ } | undefined;
61
61
  /** Information on the list of segments for this index. */
62
62
  list: Array<{
63
63
  /** URLs of the segment. */
64
64
  mediaURLs : string[] | null;
65
65
  /** Possible byte-range of the segment. */
66
- mediaRange? : [number, number];
66
+ mediaRange? : [number, number] | undefined;
67
67
  }>;
68
68
  /**
69
69
  * Timescale to convert a time given here into seconds.
@@ -78,12 +78,12 @@ export interface IListIndex {
78
78
  * Most of the properties here are already defined in IListIndex.
79
79
  */
80
80
  export interface IListIndexIndexArgument {
81
- duration? : number;
82
- indexRange?: [number, number];
83
- initialization?: { media? : string;
84
- range? : [number, number]; };
85
- list: Array<{ media? : string;
86
- mediaRange? : [number, number]; }>;
81
+ duration? : number | undefined;
82
+ indexRange?: [number, number] | undefined;
83
+ initialization?: { media? : string | undefined;
84
+ range? : [number, number] | undefined; };
85
+ list: Array<{ media? : string | undefined;
86
+ mediaRange? : [number, number] | undefined; }>;
87
87
  /**
88
88
  * Offset present in the index to convert from the mediaTime (time declared in
89
89
  * the media segments and in this index) to the presentationTime (time wanted
@@ -98,8 +98,8 @@ export interface IListIndexIndexArgument {
98
98
  * The time given here is in the current
99
99
  * timescale (see timescale)
100
100
  */
101
- presentationTimeOffset? : number;
102
- timescale? : number;
101
+ presentationTimeOffset? : number | undefined;
102
+ timescale? : number | undefined;
103
103
  }
104
104
 
105
105
  /** Aditional context needed by a SegmentList RepresentationIndex. */
@@ -109,9 +109,9 @@ export interface IListIndexContextArgument {
109
109
  /** Base URL for the Representation concerned. */
110
110
  representationBaseURLs : IResolvedBaseUrl[];
111
111
  /** ID of the Representation concerned. */
112
- representationId? : string;
112
+ representationId? : string | undefined;
113
113
  /** Bitrate of the Representation concerned. */
114
- representationBitrate? : number;
114
+ representationBitrate? : number | undefined;
115
115
  /* Function that tells if an EMSG is whitelisted by the manifest */
116
116
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
117
117
  }
@@ -29,7 +29,6 @@ import {
29
29
  createIndexURLs,
30
30
  } from "./tokens";
31
31
 
32
- const { MINIMUM_SEGMENT_SIZE } = config;
33
32
 
34
33
  /**
35
34
  * Index property defined for a SegmentTemplate RepresentationIndex
@@ -49,14 +48,14 @@ export interface ITemplateIndex {
49
48
  */
50
49
  timescale : number;
51
50
  /** Byte range for a possible index of segments in the server. */
52
- indexRange?: [number, number];
51
+ indexRange?: [number, number] | undefined;
53
52
  /** Information on the initialization segment. */
54
53
  initialization? : {
55
54
  /** URLs to access the initialization segment. */
56
55
  mediaURLs: string[] | null;
57
56
  /** possible byte range to request it. */
58
- range?: [number, number];
59
- };
57
+ range?: [number, number] | undefined;
58
+ } | undefined;
60
59
  /**
61
60
  * URL base to access any segment.
62
61
  * Can contain token to replace to convert it to real URLs.
@@ -91,7 +90,7 @@ export interface ITemplateIndex {
91
90
  */
92
91
  presentationTimeOffset : number;
93
92
  /** Number from which the first segments in this index starts with. */
94
- startNumber? : number;
93
+ startNumber? : number | undefined;
95
94
  }
96
95
 
97
96
  /**
@@ -99,14 +98,15 @@ export interface ITemplateIndex {
99
98
  * Most of the properties here are already defined in ITemplateIndex.
100
99
  */
101
100
  export interface ITemplateIndexIndexArgument {
102
- duration? : number;
103
- indexRange?: [number, number];
104
- initialization?: { media? : string;
105
- range? : [number, number]; };
106
- media? : string;
107
- presentationTimeOffset? : number;
108
- startNumber? : number;
109
- timescale? : number;
101
+ duration? : number | undefined;
102
+ indexRange?: [number, number] | undefined;
103
+ initialization?: { media? : string | undefined;
104
+ range? : [number, number] | undefined; } |
105
+ undefined;
106
+ media? : string | undefined;
107
+ presentationTimeOffset? : number | undefined;
108
+ startNumber? : number | undefined;
109
+ timescale? : number | undefined;
110
110
  }
111
111
 
112
112
  /** Aditional context needed by a SegmentTemplate RepresentationIndex. */
@@ -125,9 +125,9 @@ export interface ITemplateIndexContextArgument {
125
125
  /** Base URL for the Representation concerned. */
126
126
  representationBaseURLs : IResolvedBaseUrl[];
127
127
  /** ID of the Representation concerned. */
128
- representationId? : string;
128
+ representationId? : string | undefined;
129
129
  /** Bitrate of the Representation concerned. */
130
- representationBitrate? : number;
130
+ representationBitrate? : number | undefined;
131
131
  /* Function that tells if an EMSG is whitelisted by the manifest */
132
132
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
133
133
  }
@@ -150,9 +150,9 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
150
150
  /** Absolute start of the Period, in seconds. */
151
151
  private _periodStart : number;
152
152
  /** Difference between the end time of the Period and its start time, in timescale. */
153
- private _scaledPeriodEnd? : number;
153
+ private _scaledPeriodEnd : number | undefined;
154
154
  /** Minimum availabilityTimeOffset concerning the segments of this Representation. */
155
- private _availabilityTimeOffset? : number;
155
+ private _availabilityTimeOffset : number | undefined;
156
156
  /** Whether the corresponding Manifest can be updated and changed. */
157
157
  private _isDynamic : boolean;
158
158
  /* Function that tells if an EMSG is whitelisted by the manifest */
@@ -532,7 +532,7 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
532
532
  // segment that there actually is due to a very little difference between
533
533
  // the period's duration and a multiple of a segment's duration.
534
534
  // Check that we're within a good margin
535
- const minimumDuration = MINIMUM_SEGMENT_SIZE * timescale;
535
+ const minimumDuration = config.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
536
536
  if (maximumTime - regularLastSegmentStart > minimumDuration ||
537
537
  numberIndexedToZero === 0)
538
538
  {
@@ -52,7 +52,7 @@ export default function constructTimelineFromElements(
52
52
  previousItem,
53
53
  nextItem,
54
54
  scaledPeriodStart);
55
- if (timelineElement != null) {
55
+ if (timelineElement !== null) {
56
56
  timeline.push(timelineElement);
57
57
  }
58
58
  }