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
@@ -36,7 +36,7 @@ export interface IHDRInformation {
36
36
  * It is used to ask to the user agent if the color depth is supported by the
37
37
  * output device.
38
38
  */
39
- colorDepth?: number;
39
+ colorDepth?: number | undefined;
40
40
  /**
41
41
  * It is the HDR eotf. It is the transfer function having the video signal as
42
42
  * input and converting it into the linear light output of the display. The
@@ -44,14 +44,14 @@ export interface IHDRInformation {
44
44
  *
45
45
  * It may be used here to ask the MediaSource if it supported.
46
46
  */
47
- eotf?: string;
47
+ eotf?: string | undefined;
48
48
  /**
49
49
  * It is the video color space used for encoding. An HDR content may not have
50
50
  * a wide color gamut.
51
51
  *
52
52
  * It may be used to ask about output device color space support.
53
53
  */
54
- colorSpace?: string;
54
+ colorSpace?: string | undefined;
55
55
  }
56
56
  /** Manifest, as documented in the API documentation. */
57
57
  export interface IExposedManifest {
@@ -38,7 +38,7 @@ export interface IParsedWEBMHDRInformation {
38
38
  *
39
39
  * It may be used to ask about output device color space support.
40
40
  */
41
- colorSpace?: "rec2020";
41
+ colorSpace: "rec2020" | undefined;
42
42
  }
43
43
  /**
44
44
  * Extract the webm HDR information out of the codec string.
@@ -19,16 +19,16 @@ interface IPeriodTimeInformation {
19
19
  /** Time in seconds at which the Period starts. */
20
20
  periodStart: number;
21
21
  /** Difference in seconds between the Period's end and its start. */
22
- periodDuration?: number;
22
+ periodDuration?: number | undefined;
23
23
  /** Time in seconds at which the Period ends. */
24
- periodEnd?: number;
24
+ periodEnd?: number | undefined;
25
25
  }
26
26
  /** Additionnal context needed to retrieve the period time information. */
27
27
  export interface IParsedPeriodsContext {
28
28
  /** Value of MPD@availabilityStartTime. */
29
29
  availabilityStartTime: number;
30
30
  /** Value of MPD@mediaPresentationDuration. */
31
- duration?: number;
31
+ duration?: number | undefined;
32
32
  /** `true` if MPD@type is equal to "dynamic". */
33
33
  isDynamic: boolean;
34
34
  }
@@ -24,7 +24,7 @@ import { IResolvedBaseUrl } from "../resolve_base_urls";
24
24
  */
25
25
  export interface IBaseIndex {
26
26
  /** Byte range for a possible index of segments in the server. */
27
- indexRange?: [number, number];
27
+ indexRange?: [number, number] | undefined;
28
28
  /**
29
29
  * Temporal offset, in the current timescale (see timescale), to add to the
30
30
  * presentation time (time a segment has at decoding time) to obtain the
@@ -43,15 +43,15 @@ export interface IBaseIndex {
43
43
  /** URLs to access the initialization segment. */
44
44
  mediaURLs: string[] | null;
45
45
  /** possible byte range to request it. */
46
- range?: [number, number];
47
- };
46
+ range?: [number, number] | undefined;
47
+ } | undefined;
48
48
  /**
49
49
  * Base URL(s) to access any segment. Can contain tokens to replace to convert
50
50
  * it to real URLs.
51
51
  */
52
52
  mediaURLs: string[] | null;
53
53
  /** Number from which the first segments in this index starts with. */
54
- startNumber?: number;
54
+ startNumber?: number | undefined;
55
55
  /** Every segments defined in this index. */
56
56
  timeline: IIndexSegment[];
57
57
  /**
@@ -100,9 +100,9 @@ export interface IBaseIndexContextArgument {
100
100
  /** Base URL for the Representation concerned. */
101
101
  representationBaseURLs: IResolvedBaseUrl[];
102
102
  /** ID of the Representation concerned. */
103
- representationId?: string;
103
+ representationId?: string | undefined;
104
104
  /** Bitrate of the Representation concerned. */
105
- representationBitrate?: number;
105
+ representationBitrate?: number | undefined;
106
106
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
107
107
  }
108
108
  export default class BaseRepresentationIndex implements IRepresentationIndex {
@@ -25,8 +25,8 @@ export default function getInitSegment(index: {
25
25
  timescale: number;
26
26
  initialization?: {
27
27
  mediaURLs: string[] | null;
28
- range?: [number, number];
29
- };
30
- indexRange?: [number, number];
28
+ range?: [number, number] | undefined;
29
+ } | undefined;
30
+ indexRange?: [number, number] | undefined;
31
31
  indexTimeOffset: number;
32
32
  }, isEMSGWhitelisted?: (inbandEvent: IEMSG) => boolean): ISegment;
@@ -26,9 +26,9 @@ import { IIndexSegment } from "../../../utils/index_helpers";
26
26
  * @returns {Array.<Object>}
27
27
  */
28
28
  export default function getSegmentsFromTimeline(index: {
29
- availabilityTimeComplete?: boolean;
29
+ availabilityTimeComplete?: boolean | undefined;
30
30
  mediaURLs: string[] | null;
31
- startNumber?: number;
31
+ startNumber?: number | undefined;
32
32
  timeline: IIndexSegment[];
33
33
  timescale: number;
34
34
  indexTimeOffset: number;
@@ -14,7 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import config from "../../../../../config";
17
- var DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR = config.DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR;
18
17
  /**
19
18
  * In Javascript, numbers are encoded in a way that a floating number may be
20
19
  * represented internally with a rounding error.
@@ -28,6 +27,6 @@ var DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR = config.DEFAULT_MAXIMUM_TIME_ROUNDING_E
28
27
  * @returns {boolean}
29
28
  */
30
29
  export default function isPeriodFulfilled(timescale, lastSegmentEnd, periodEnd) {
31
- var scaledRoundingError = DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
30
+ var scaledRoundingError = config.getCurrent().DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
32
31
  return (lastSegmentEnd + scaledRoundingError) >= periodEnd;
33
32
  }
@@ -13,7 +13,7 @@ export interface IListIndex {
13
13
  */
14
14
  duration: number;
15
15
  /** Byte range for a possible index of segments in the server. */
16
- indexRange?: [number, number];
16
+ indexRange?: [number, number] | undefined;
17
17
  /**
18
18
  * Temporal offset, in the current timescale (see timescale), to add to the
19
19
  * presentation time (time a segment has at decoding time) to obtain the
@@ -32,14 +32,14 @@ export interface IListIndex {
32
32
  /** URLs to access the initialization segment. */
33
33
  mediaURLs: string[] | null;
34
34
  /** possible byte range to request it. */
35
- range?: [number, number];
36
- };
35
+ range?: [number, number] | undefined;
36
+ } | undefined;
37
37
  /** Information on the list of segments for this index. */
38
38
  list: Array<{
39
39
  /** URLs of the segment. */
40
40
  mediaURLs: string[] | null;
41
41
  /** Possible byte-range of the segment. */
42
- mediaRange?: [number, number];
42
+ mediaRange?: [number, number] | undefined;
43
43
  }>;
44
44
  /**
45
45
  * Timescale to convert a time given here into seconds.
@@ -53,15 +53,15 @@ export interface IListIndex {
53
53
  * Most of the properties here are already defined in IListIndex.
54
54
  */
55
55
  export interface IListIndexIndexArgument {
56
- duration?: number;
57
- indexRange?: [number, number];
56
+ duration?: number | undefined;
57
+ indexRange?: [number, number] | undefined;
58
58
  initialization?: {
59
- media?: string;
60
- range?: [number, number];
59
+ media?: string | undefined;
60
+ range?: [number, number] | undefined;
61
61
  };
62
62
  list: Array<{
63
- media?: string;
64
- mediaRange?: [number, number];
63
+ media?: string | undefined;
64
+ mediaRange?: [number, number] | undefined;
65
65
  }>;
66
66
  /**
67
67
  * Offset present in the index to convert from the mediaTime (time declared in
@@ -77,8 +77,8 @@ export interface IListIndexIndexArgument {
77
77
  * The time given here is in the current
78
78
  * timescale (see timescale)
79
79
  */
80
- presentationTimeOffset?: number;
81
- timescale?: number;
80
+ presentationTimeOffset?: number | undefined;
81
+ timescale?: number | undefined;
82
82
  }
83
83
  /** Aditional context needed by a SegmentList RepresentationIndex. */
84
84
  export interface IListIndexContextArgument {
@@ -87,9 +87,9 @@ export interface IListIndexContextArgument {
87
87
  /** Base URL for the Representation concerned. */
88
88
  representationBaseURLs: IResolvedBaseUrl[];
89
89
  /** ID of the Representation concerned. */
90
- representationId?: string;
90
+ representationId?: string | undefined;
91
91
  /** Bitrate of the Representation concerned. */
92
- representationBitrate?: number;
92
+ representationBitrate?: number | undefined;
93
93
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
94
94
  }
95
95
  export default class ListRepresentationIndex implements IRepresentationIndex {
@@ -35,14 +35,14 @@ export interface ITemplateIndex {
35
35
  */
36
36
  timescale: number;
37
37
  /** Byte range for a possible index of segments in the server. */
38
- indexRange?: [number, number];
38
+ indexRange?: [number, number] | undefined;
39
39
  /** Information on the initialization segment. */
40
40
  initialization?: {
41
41
  /** URLs to access the initialization segment. */
42
42
  mediaURLs: string[] | null;
43
43
  /** possible byte range to request it. */
44
- range?: [number, number];
45
- };
44
+ range?: [number, number] | undefined;
45
+ } | undefined;
46
46
  /**
47
47
  * URL base to access any segment.
48
48
  * Can contain token to replace to convert it to real URLs.
@@ -77,23 +77,23 @@ export interface ITemplateIndex {
77
77
  */
78
78
  presentationTimeOffset: number;
79
79
  /** Number from which the first segments in this index starts with. */
80
- startNumber?: number;
80
+ startNumber?: number | undefined;
81
81
  }
82
82
  /**
83
83
  * `index` Argument for a SegmentTemplate RepresentationIndex.
84
84
  * Most of the properties here are already defined in ITemplateIndex.
85
85
  */
86
86
  export interface ITemplateIndexIndexArgument {
87
- duration?: number;
88
- indexRange?: [number, number];
87
+ duration?: number | undefined;
88
+ indexRange?: [number, number] | undefined;
89
89
  initialization?: {
90
- media?: string;
91
- range?: [number, number];
92
- };
93
- media?: string;
94
- presentationTimeOffset?: number;
95
- startNumber?: number;
96
- timescale?: number;
90
+ media?: string | undefined;
91
+ range?: [number, number] | undefined;
92
+ } | undefined;
93
+ media?: string | undefined;
94
+ presentationTimeOffset?: number | undefined;
95
+ startNumber?: number | undefined;
96
+ timescale?: number | undefined;
97
97
  }
98
98
  /** Aditional context needed by a SegmentTemplate RepresentationIndex. */
99
99
  export interface ITemplateIndexContextArgument {
@@ -111,9 +111,9 @@ export interface ITemplateIndexContextArgument {
111
111
  /** Base URL for the Representation concerned. */
112
112
  representationBaseURLs: IResolvedBaseUrl[];
113
113
  /** ID of the Representation concerned. */
114
- representationId?: string;
114
+ representationId?: string | undefined;
115
115
  /** Bitrate of the Representation concerned. */
116
- representationBitrate?: number;
116
+ representationBitrate?: number | undefined;
117
117
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
118
118
  }
119
119
  /**
@@ -134,9 +134,9 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
134
134
  /** Absolute start of the Period, in seconds. */
135
135
  private _periodStart;
136
136
  /** Difference between the end time of the Period and its start time, in timescale. */
137
- private _scaledPeriodEnd?;
137
+ private _scaledPeriodEnd;
138
138
  /** Minimum availabilityTimeOffset concerning the segments of this Representation. */
139
- private _availabilityTimeOffset?;
139
+ private _availabilityTimeOffset;
140
140
  /** Whether the corresponding Manifest can be updated and changed. */
141
141
  private _isDynamic;
142
142
  private _isEMSGWhitelisted;
@@ -17,7 +17,6 @@ import config from "../../../../../config";
17
17
  import getInitSegment from "./get_init_segment";
18
18
  import isPeriodFulfilled from "./is_period_fulfilled";
19
19
  import { createDashUrlDetokenizer, createIndexURLs, } from "./tokens";
20
- var MINIMUM_SEGMENT_SIZE = config.MINIMUM_SEGMENT_SIZE;
21
20
  /**
22
21
  * IRepresentationIndex implementation for DASH' SegmentTemplate without a
23
22
  * SegmentTimeline.
@@ -327,7 +326,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
327
326
  // segment that there actually is due to a very little difference between
328
327
  // the period's duration and a multiple of a segment's duration.
329
328
  // Check that we're within a good margin
330
- var minimumDuration = MINIMUM_SEGMENT_SIZE * timescale;
329
+ var minimumDuration = config.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
331
330
  if (maximumTime - regularLastSegmentStart > minimumDuration ||
332
331
  numberIndexedToZero === 0) {
333
332
  return regularLastSegmentStart;
@@ -41,7 +41,7 @@ export default function constructTimelineFromElements(elements, scaledPeriodStar
41
41
  null :
42
42
  initialTimeline[i + 1];
43
43
  var timelineElement = convertElementsToIndexSegment(item, previousItem, nextItem, scaledPeriodStart);
44
- if (timelineElement != null) {
44
+ if (timelineElement !== null) {
45
45
  timeline.push(timelineElement);
46
46
  }
47
47
  }
@@ -29,7 +29,7 @@ export interface ITimelineIndex {
29
29
  /** If `false`, the last segment anounced might be still incomplete. */
30
30
  availabilityTimeComplete: boolean;
31
31
  /** Byte range for a possible index of segments in the server. */
32
- indexRange?: [number, number];
32
+ indexRange?: [number, number] | undefined;
33
33
  /**
34
34
  * Temporal offset, in the current timescale (see timescale), to add to the
35
35
  * presentation time (time a segment has at decoding time) to obtain the
@@ -48,15 +48,15 @@ export interface ITimelineIndex {
48
48
  /** URLs to access the initialization segment. */
49
49
  mediaURLs: string[] | null;
50
50
  /** possible byte range to request it. */
51
- range?: [number, number];
52
- };
51
+ range?: [number, number] | undefined;
52
+ } | undefined;
53
53
  /**
54
54
  * Base URL(s) to access any segment. Can contain tokens to replace to convert
55
55
  * it to real URLs.
56
56
  */
57
57
  mediaURLs: string[] | null;
58
58
  /** Number from which the first segments in this index starts with. */
59
- startNumber?: number;
59
+ startNumber?: number | undefined;
60
60
  /**
61
61
  * Every segments defined in this index.
62
62
  * `null` at the beginning as this property is parsed lazily (only when first
@@ -87,14 +87,14 @@ export interface ITimelineIndex {
87
87
  * Most of the properties here are already defined in ITimelineIndex.
88
88
  */
89
89
  export interface ITimelineIndexIndexArgument {
90
- indexRange?: [number, number];
90
+ indexRange?: [number, number] | undefined;
91
91
  initialization?: {
92
- media?: string;
93
- range?: [number, number];
94
- };
95
- media?: string;
96
- startNumber?: number;
97
- timescale?: number;
92
+ media?: string | undefined;
93
+ range?: [number, number] | undefined;
94
+ } | undefined;
95
+ media?: string | undefined;
96
+ startNumber?: number | undefined;
97
+ timescale?: number | undefined;
98
98
  /**
99
99
  * Offset present in the index to convert from the mediaTime (time declared in
100
100
  * the media segments and in this index) to the presentationTime (time wanted
@@ -109,9 +109,9 @@ export interface ITimelineIndexIndexArgument {
109
109
  * The time given here is in the current
110
110
  * timescale (see timescale)
111
111
  */
112
- presentationTimeOffset?: number;
113
- timelineParser?: () => HTMLCollection;
114
- timeline?: ISegmentTimelineElement[];
112
+ presentationTimeOffset?: number | undefined;
113
+ timelineParser?: (() => HTMLCollection) | undefined;
114
+ timeline?: ISegmentTimelineElement[] | undefined;
115
115
  }
116
116
  /** Aditional context needed by a SegmentTimeline RepresentationIndex. */
117
117
  export interface ITimelineIndexContextArgument {
@@ -119,9 +119,9 @@ export interface ITimelineIndexContextArgument {
119
119
  availabilityTimeComplete: boolean;
120
120
  /** Allows to obtain the minimum and maximum positions of a content. */
121
121
  manifestBoundsCalculator: ManifestBoundsCalculator;
122
- /** Start of the period concerned by this RepresentationIndex, in seconds. */
122
+ /** Start of the period linked to this RepresentationIndex, in seconds. */
123
123
  periodStart: number;
124
- /** End of the period concerned by this RepresentationIndex, in seconds. */
124
+ /** End of the period linked to this RepresentationIndex, in seconds. */
125
125
  periodEnd: number | undefined;
126
126
  /** Whether the corresponding Manifest can be updated and changed. */
127
127
  isDynamic: boolean;
@@ -129,13 +129,13 @@ export interface ITimelineIndexContextArgument {
129
129
  * Time (in terms of `performance.now`) at which the XML file containing this
130
130
  * index was received
131
131
  */
132
- receivedTime?: number;
132
+ receivedTime?: number | undefined;
133
133
  /** Base URL for the Representation concerned. */
134
134
  representationBaseURLs: IResolvedBaseUrl[];
135
135
  /** ID of the Representation concerned. */
136
- representationId?: string;
136
+ representationId?: string | undefined;
137
137
  /** Bitrate of the Representation concerned. */
138
- representationBitrate?: number;
138
+ representationBitrate?: number | undefined;
139
139
  /**
140
140
  * The parser should take this previous version of the
141
141
  * `TimelineRepresentationIndex` - which was from the same Representation
@@ -145,11 +145,17 @@ export interface ITimelineIndexContextArgument {
145
145
  * Use with moderation.
146
146
  */
147
147
  unsafelyBaseOnPreviousRepresentation: Representation | null;
148
+ /** Function that tells if an EMSG is whitelisted by the manifest */
148
149
  isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
150
+ /**
151
+ * Set to `true` if the linked Period is the chronologically last one in the
152
+ * Manifest.
153
+ */
154
+ isLastPeriod: boolean;
149
155
  }
150
156
  export interface ILastSegmentInformation {
151
157
  /** End of the timeline on `time`, timescaled. */
152
- lastPosition?: number;
158
+ lastPosition?: number | undefined;
153
159
  /** Defines the time at which `lastPosition` was last calculated. */
154
160
  time: number;
155
161
  }
@@ -181,6 +187,8 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
181
187
  */
182
188
  private _unsafelyBaseOnPreviousIndex;
183
189
  private _isEMSGWhitelisted;
190
+ /** `true` if the linked Period is the chronologically last one in the Manifest. */
191
+ private _isLastPeriod;
184
192
  /**
185
193
  * @param {Object} index
186
194
  * @param {Object} context
@@ -27,7 +27,6 @@ import { createIndexURLs } from "../tokens";
27
27
  import constructTimelineFromElements from "./construct_timeline_from_elements";
28
28
  // eslint-disable-next-line max-len
29
29
  import constructTimelineFromPreviousTimeline from "./construct_timeline_from_previous_timeline";
30
- var MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY = config.MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY;
31
30
  var TimelineRepresentationIndex = /** @class */ (function () {
32
31
  /**
33
32
  * @param {Object} index
@@ -39,7 +38,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
39
38
  throw new Error("The given index is not compatible with a " +
40
39
  "TimelineRepresentationIndex.");
41
40
  }
42
- var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
41
+ var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, isLastPeriod = context.isLastPeriod, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
43
42
  var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
44
43
  var presentationTimeOffset = index.presentationTimeOffset != null ?
45
44
  index.presentationTimeOffset :
@@ -48,6 +47,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
48
47
  var indexTimeOffset = presentationTimeOffset - scaledStart;
49
48
  this._manifestBoundsCalculator = manifestBoundsCalculator;
50
49
  this._isEMSGWhitelisted = isEMSGWhitelisted;
50
+ this._isLastPeriod = isLastPeriod;
51
51
  this._lastUpdate = context.receivedTime == null ?
52
52
  performance.now() :
53
53
  context.receivedTime;
@@ -204,6 +204,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
204
204
  this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
205
205
  this._lastUpdate = newIndex._lastUpdate;
206
206
  this._manifestBoundsCalculator = newIndex._manifestBoundsCalculator;
207
+ this._isLastPeriod = newIndex._isLastPeriod;
207
208
  };
208
209
  /**
209
210
  * Update this RepresentationIndex with a shorter version of it coming from a
@@ -217,11 +218,15 @@ var TimelineRepresentationIndex = /** @class */ (function () {
217
218
  if (newIndex._index.timeline === null) {
218
219
  newIndex._index.timeline = newIndex._getTimeline();
219
220
  }
220
- updateSegmentTimeline(this._index.timeline, newIndex._index.timeline);
221
+ var hasReplaced = updateSegmentTimeline(this._index.timeline, newIndex._index.timeline);
222
+ if (hasReplaced) {
223
+ this._index.startNumber = newIndex._index.startNumber;
224
+ }
221
225
  this._isDynamic = newIndex._isDynamic;
222
226
  this._scaledPeriodStart = newIndex._scaledPeriodStart;
223
227
  this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
224
228
  this._lastUpdate = newIndex._lastUpdate;
229
+ this._isLastPeriod = newIndex._isLastPeriod;
225
230
  };
226
231
  /**
227
232
  * Returns `true` if this RepresentationIndex currently contains its last
@@ -230,7 +235,13 @@ var TimelineRepresentationIndex = /** @class */ (function () {
230
235
  * @returns {Boolean}
231
236
  */
232
237
  TimelineRepresentationIndex.prototype.isFinished = function () {
233
- if (!this._isDynamic) {
238
+ if (!this._isDynamic || !this._isLastPeriod) {
239
+ // Either the content is not dynamic, in which case no new segment will
240
+ // be generated, either it is but this index is not linked to the current
241
+ // last Period in the MPD, in which case it is inferred that it has been
242
+ // completely generated. Note that this second condition might break very
243
+ // very rare use cases where old Periods are still being generated, yet it
244
+ // should fix more cases than it breaks.
234
245
  return true;
235
246
  }
236
247
  if (this._index.timeline === null) {
@@ -273,7 +284,10 @@ var TimelineRepresentationIndex = /** @class */ (function () {
273
284
  return; // we don't know yet
274
285
  }
275
286
  var scaledFirstPosition = toIndexTime(firstPosition, this._index);
276
- clearTimelineFromPosition(this._index.timeline, scaledFirstPosition);
287
+ var nbEltsRemoved = clearTimelineFromPosition(this._index.timeline, scaledFirstPosition);
288
+ if (this._index.startNumber !== undefined) {
289
+ this._index.startNumber += nbEltsRemoved;
290
+ }
277
291
  };
278
292
  TimelineRepresentationIndex.getIndexEnd = function (timeline, scaledPeriodEnd) {
279
293
  if (timeline.length <= 0) {
@@ -313,6 +327,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
313
327
  }
314
328
  var newElements = this._parseTimeline();
315
329
  this._parseTimeline = null; // Free memory
330
+ var MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY = config.getCurrent().MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY;
316
331
  if (this._unsafelyBaseOnPreviousIndex === null ||
317
332
  newElements.length < MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY) {
318
333
  // Just completely parse the current timeline
@@ -18,8 +18,8 @@ import { IRepresentationIntermediateRepresentation } from "../node_parser_types"
18
18
  declare type IAdaptationType = "audio" | "video" | "text" | "image";
19
19
  /** Structure of a parsed "scheme-like" element in the MPD. */
20
20
  interface IScheme {
21
- schemeIdUri?: string;
22
- value?: string;
21
+ schemeIdUri?: string | undefined;
22
+ value?: string | undefined;
23
23
  }
24
24
  /**
25
25
  * Infers the type of adaptation from codec and mimetypes found in it.
@@ -46,7 +46,7 @@ export default class ManifestBoundsCalculator {
46
46
  * @param {Object} args
47
47
  */
48
48
  constructor(args: {
49
- timeShiftBufferDepth?: number;
49
+ timeShiftBufferDepth: number | undefined;
50
50
  isDynamic: boolean;
51
51
  });
52
52
  /**
@@ -16,35 +16,21 @@
16
16
  import { Period } from "../../../../manifest";
17
17
  import { IParsedAdaptations } from "../../types";
18
18
  import { IAdaptationSetIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
19
- import ManifestBoundsCalculator from "./manifest_bounds_calculator";
20
- import { IResolvedBaseUrl } from "./resolve_base_urls";
19
+ import { IRepresentationContext } from "./parse_representations";
20
+ /**
21
+ * Process AdaptationSets intermediate representations to return under its final
22
+ * form.
23
+ * Note that the AdaptationSets returned are sorted by priority (from the most
24
+ * priority to the least one).
25
+ * @param {Array.<Object>} adaptationsIR
26
+ * @param {Object} context
27
+ * @returns {Array.<Object>}
28
+ */
29
+ export default function parseAdaptationSets(adaptationsIR: IAdaptationSetIntermediateRepresentation[], context: IAdaptationSetContext): IParsedAdaptations;
21
30
  /** Context needed when calling `parseAdaptationSets`. */
22
- export interface IAdaptationSetsContextInfos {
23
- /** Whether we should request new segments even if they are not yet finished. */
24
- aggressiveMode: boolean;
25
- availabilityTimeComplete: boolean;
26
- /** availabilityTimeOffset of the concerned period. */
27
- availabilityTimeOffset: number;
28
- /** Eventual URLs from which every relative URL will be based on. */
29
- baseURLs: IResolvedBaseUrl[];
30
- /** Allows to obtain the first available position of a content. */
31
- manifestBoundsCalculator: ManifestBoundsCalculator;
32
- end?: number;
33
- /** Whether the Manifest can evolve with time. */
34
- isDynamic: boolean;
35
- /** Manifest DASH profiles used for signaling some features */
36
- manifestProfiles?: string;
37
- /**
38
- * Time (in terms of `performance.now`) at which the XML file containing
39
- * this AdaptationSet was received.
40
- */
41
- receivedTime?: number;
31
+ export interface IAdaptationSetContext extends IInheritedRepresentationContext {
42
32
  /** SegmentTemplate parsed in the Period, if found. */
43
- segmentTemplate?: ISegmentTemplateIntermediateRepresentation;
44
- /** Start time of the current period, in seconds. */
45
- start: number;
46
- /** Depth of the buffer for the whole content, in seconds. */
47
- timeShiftBufferDepth?: number;
33
+ segmentTemplate?: ISegmentTemplateIntermediateRepresentation | undefined;
48
34
  /**
49
35
  * The parser should take this Period - which is from a previously parsed
50
36
  * Manifest for the same dynamic content - as a base to speed-up the parsing
@@ -56,12 +42,8 @@ export interface IAdaptationSetsContextInfos {
56
42
  unsafelyBaseOnPreviousPeriod: Period | null;
57
43
  }
58
44
  /**
59
- * Process AdaptationSets intermediate representations to return under its final
60
- * form.
61
- * Note that the AdaptationSets returned are sorted by priority (from the most
62
- * priority to the least one).
63
- * @param {Array.<Object>} adaptationsIR
64
- * @param {Object} periodInfos
65
- * @returns {Array.<Object>}
45
+ * Supplementary context needed to parse a Representation common with
46
+ * `IRepresentationContext`.
66
47
  */
67
- export default function parseAdaptationSets(adaptationsIR: IAdaptationSetIntermediateRepresentation[], periodInfos: IAdaptationSetsContextInfos): IParsedAdaptations;
48
+ declare type IInheritedRepresentationContext = Omit<IRepresentationContext, "unsafelyBaseOnPreviousAdaptation" | "parentSegmentTemplates">;
49
+ export {};