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
@@ -29,13 +29,13 @@ import resolveBaseURLs from "./resolve_base_urls";
29
29
  * Parse the specific segment indexing information found in a representation
30
30
  * into a IRepresentationIndex implementation.
31
31
  * @param {Array.<Object>} representation
32
- * @param {Object} representationInfos
32
+ * @param {Object} context
33
33
  * @returns {Array.<Object>}
34
34
  */
35
- export default function parseRepresentationIndex(representation, representationInfos) {
35
+ export default function parseRepresentationIndex(representation, context) {
36
36
  var _a, _b;
37
- var representationBaseURLs = resolveBaseURLs(representationInfos.baseURLs, representation.children.baseURLs);
38
- var aggressiveMode = representationInfos.aggressiveMode, availabilityTimeOffset = representationInfos.availabilityTimeOffset, manifestBoundsCalculator = representationInfos.manifestBoundsCalculator, isDynamic = representationInfos.isDynamic, periodEnd = representationInfos.end, periodStart = representationInfos.start, receivedTime = representationInfos.receivedTime, timeShiftBufferDepth = representationInfos.timeShiftBufferDepth, unsafelyBaseOnPreviousRepresentation = representationInfos.unsafelyBaseOnPreviousRepresentation, inbandEventStreams = representationInfos.inbandEventStreams;
37
+ var representationBaseURLs = resolveBaseURLs(context.baseURLs, representation.children.baseURLs);
38
+ var aggressiveMode = context.aggressiveMode, availabilityTimeOffset = context.availabilityTimeOffset, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, periodEnd = context.end, periodStart = context.start, receivedTime = context.receivedTime, timeShiftBufferDepth = context.timeShiftBufferDepth, unsafelyBaseOnPreviousRepresentation = context.unsafelyBaseOnPreviousRepresentation, inbandEventStreams = context.inbandEventStreams, isLastPeriod = context.isLastPeriod;
39
39
  var isEMSGWhitelisted = function (inbandEvent) {
40
40
  if (inbandEventStreams === undefined) {
41
41
  return false;
@@ -46,44 +46,44 @@ export default function parseRepresentationIndex(representation, representationI
46
46
  return schemeIdUri === inbandEvent.schemeIdUri;
47
47
  });
48
48
  };
49
- var context = { aggressiveMode: aggressiveMode, availabilityTimeComplete: true, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
49
+ var reprIndexCtxt = { aggressiveMode: aggressiveMode, availabilityTimeComplete: true, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, isLastPeriod: isLastPeriod, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
50
50
  representationId: representation.attributes.id, timeShiftBufferDepth: timeShiftBufferDepth };
51
51
  var representationIndex;
52
52
  if (representation.children.segmentBase !== undefined) {
53
53
  var segmentBase = representation.children.segmentBase;
54
- representationIndex = new BaseRepresentationIndex(segmentBase, context);
54
+ representationIndex = new BaseRepresentationIndex(segmentBase, reprIndexCtxt);
55
55
  }
56
56
  else if (representation.children.segmentList !== undefined) {
57
57
  var segmentList = representation.children.segmentList;
58
- representationIndex = new ListRepresentationIndex(segmentList, context);
58
+ representationIndex = new ListRepresentationIndex(segmentList, reprIndexCtxt);
59
59
  }
60
60
  else if (representation.children.segmentTemplate !== undefined ||
61
- representationInfos.parentSegmentTemplates.length > 0) {
62
- var segmentTemplates = representationInfos.parentSegmentTemplates.slice();
61
+ context.parentSegmentTemplates.length > 0) {
62
+ var segmentTemplates = context.parentSegmentTemplates.slice();
63
63
  var childSegmentTemplate = representation.children.segmentTemplate;
64
64
  if (childSegmentTemplate !== undefined) {
65
65
  segmentTemplates.push(childSegmentTemplate);
66
66
  }
67
67
  var segmentTemplate = objectAssign.apply(void 0, __spreadArray([{}], segmentTemplates /* Ugly TS Hack */, false));
68
- context.availabilityTimeComplete =
69
- (_a = segmentTemplate.availabilityTimeComplete) !== null && _a !== void 0 ? _a : representationInfos.availabilityTimeComplete;
70
- context.availabilityTimeOffset =
68
+ reprIndexCtxt.availabilityTimeComplete =
69
+ (_a = segmentTemplate.availabilityTimeComplete) !== null && _a !== void 0 ? _a : context.availabilityTimeComplete;
70
+ reprIndexCtxt.availabilityTimeOffset =
71
71
  ((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0) +
72
- representationInfos.availabilityTimeOffset;
72
+ context.availabilityTimeOffset;
73
73
  representationIndex = TimelineRepresentationIndex
74
74
  .isTimelineIndexArgument(segmentTemplate) ?
75
- new TimelineRepresentationIndex(segmentTemplate, context) :
76
- new TemplateRepresentationIndex(segmentTemplate, context);
75
+ new TimelineRepresentationIndex(segmentTemplate, reprIndexCtxt) :
76
+ new TemplateRepresentationIndex(segmentTemplate, reprIndexCtxt);
77
77
  }
78
78
  else {
79
- var adaptationChildren = representationInfos.adaptation.children;
79
+ var adaptationChildren = context.adaptation.children;
80
80
  if (adaptationChildren.segmentBase !== undefined) {
81
81
  var segmentBase = adaptationChildren.segmentBase;
82
- representationIndex = new BaseRepresentationIndex(segmentBase, context);
82
+ representationIndex = new BaseRepresentationIndex(segmentBase, reprIndexCtxt);
83
83
  }
84
84
  else if (adaptationChildren.segmentList !== undefined) {
85
85
  var segmentList = adaptationChildren.segmentList;
86
- representationIndex = new ListRepresentationIndex(segmentList, context);
86
+ representationIndex = new ListRepresentationIndex(segmentList, reprIndexCtxt);
87
87
  }
88
88
  else {
89
89
  representationIndex = new TemplateRepresentationIndex({
@@ -91,7 +91,7 @@ export default function parseRepresentationIndex(representation, representationI
91
91
  timescale: 1,
92
92
  startNumber: 0,
93
93
  media: "",
94
- }, context);
94
+ }, reprIndexCtxt);
95
95
  }
96
96
  }
97
97
  return representationIndex;
@@ -15,41 +15,19 @@
15
15
  */
16
16
  import { Adaptation } from "../../../../manifest";
17
17
  import { IParsedRepresentation } from "../../types";
18
- import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
19
- import ManifestBoundsCalculator from "./manifest_bounds_calculator";
20
- import { IResolvedBaseUrl } from "./resolve_base_urls";
18
+ import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation } from "../node_parser_types";
19
+ import { IRepresentationIndexContext } from "./parse_representation_index";
20
+ /**
21
+ * Process intermediate representations to create final parsed representations.
22
+ * @param {Array.<Object>} representationsIR
23
+ * @param {Object} context
24
+ * @returns {Array.<Object>}
25
+ */
26
+ export default function parseRepresentations(representationsIR: IRepresentationIntermediateRepresentation[], adaptation: IAdaptationSetIntermediateRepresentation, context: IRepresentationContext): IParsedRepresentation[];
21
27
  /** Supplementary context needed to parse a Representation. */
22
- export interface IAdaptationInfos {
23
- /** Whether we should request new segments even if they are not yet finished. */
24
- aggressiveMode: boolean;
25
- availabilityTimeComplete: boolean;
26
- /** availability time offset of the concerned Adaptation. */
27
- availabilityTimeOffset: number;
28
- /** Eventual URLs from which every relative URL will be based on. */
29
- baseURLs: IResolvedBaseUrl[];
30
- /** Allows to obtain the first/last available position of a dynamic content. */
31
- manifestBoundsCalculator: ManifestBoundsCalculator;
32
- /** End time of the current period, in seconds. */
33
- end?: number;
34
- /** Whether the Manifest can evolve with time. */
35
- isDynamic: boolean;
28
+ export interface IRepresentationContext extends IInheritedRepresentationIndexContext {
36
29
  /** Manifest DASH profiles used for signalling some features */
37
- manifestProfiles?: string;
38
- /**
39
- * Parent parsed SegmentTemplate elements.
40
- * Sorted by provenance from higher level (e.g. Period) to lower-lever (e.g.
41
- * AdaptationSet).
42
- */
43
- parentSegmentTemplates: ISegmentTemplateIntermediateRepresentation[];
44
- /**
45
- * Time (in terms of `performance.now`) at which the XML file containing this
46
- * Representation was received.
47
- */
48
- receivedTime?: number;
49
- /** Start time of the current period, in seconds. */
50
- start: number;
51
- /** Depth of the buffer for the whole content, in seconds. */
52
- timeShiftBufferDepth?: number;
30
+ manifestProfiles?: string | undefined;
53
31
  /**
54
32
  * The parser should take this Adaptation - which is from a previously parsed
55
33
  * Manifest for the same dynamic content - as a base to speed-up the parsing
@@ -61,9 +39,8 @@ export interface IAdaptationInfos {
61
39
  unsafelyBaseOnPreviousAdaptation: Adaptation | null;
62
40
  }
63
41
  /**
64
- * Process intermediate representations to create final parsed representations.
65
- * @param {Array.<Object>} representationsIR
66
- * @param {Object} adaptationInfos
67
- * @returns {Array.<Object>}
42
+ * Supplementary context needed to parse a Representation common with
43
+ * `IRepresentationIndexContext`.
68
44
  */
69
- export default function parseRepresentations(representationsIR: IRepresentationIntermediateRepresentation[], adaptation: IAdaptationSetIntermediateRepresentation, adaptationInfos: IAdaptationInfos): IParsedRepresentation[];
45
+ declare type IInheritedRepresentationIndexContext = Omit<IRepresentationIndexContext, "adaptation" | "unsafelyBaseOnPreviousRepresentation" | "inbandEventStreams">;
46
+ export {};
@@ -64,10 +64,10 @@ function getHDRInformation(_a) {
64
64
  /**
65
65
  * Process intermediate representations to create final parsed representations.
66
66
  * @param {Array.<Object>} representationsIR
67
- * @param {Object} adaptationInfos
67
+ * @param {Object} context
68
68
  * @returns {Array.<Object>}
69
69
  */
70
- export default function parseRepresentations(representationsIR, adaptation, adaptationInfos) {
70
+ export default function parseRepresentations(representationsIR, adaptation, context) {
71
71
  var _a, _b, _c, _d;
72
72
  var parsedRepresentations = [];
73
73
  var _loop_1 = function (representation) {
@@ -92,14 +92,14 @@ export default function parseRepresentations(representationsIR, adaptation, adap
92
92
  representationID += "-dup";
93
93
  }
94
94
  // Retrieve previous version of the Representation, if one.
95
- var unsafelyBaseOnPreviousRepresentation = (_b = (_a = adaptationInfos
95
+ var unsafelyBaseOnPreviousRepresentation = (_b = (_a = context
96
96
  .unsafelyBaseOnPreviousAdaptation) === null || _a === void 0 ? void 0 : _a.getRepresentation(representationID)) !== null && _b !== void 0 ? _b : null;
97
97
  var inbandEventStreams = combineInbandEventStreams(representation, adaptation);
98
- var availabilityTimeComplete = (_c = representation.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : adaptationInfos.availabilityTimeComplete;
98
+ var availabilityTimeComplete = (_c = representation.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : context.availabilityTimeComplete;
99
99
  var availabilityTimeOffset = ((_d = representation.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0) +
100
- adaptationInfos.availabilityTimeOffset;
101
- var representationInfos = objectAssign({}, adaptationInfos, { availabilityTimeOffset: availabilityTimeOffset, availabilityTimeComplete: availabilityTimeComplete, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, adaptation: adaptation, inbandEventStreams: inbandEventStreams });
102
- var representationIndex = parseRepresentationIndex(representation, representationInfos);
100
+ context.availabilityTimeOffset;
101
+ var reprIndexCtxt = objectAssign({}, context, { availabilityTimeOffset: availabilityTimeOffset, availabilityTimeComplete: availabilityTimeComplete, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, adaptation: adaptation, inbandEventStreams: inbandEventStreams });
102
+ var representationIndex = parseRepresentationIndex(representation, reprIndexCtxt);
103
103
  // Find bitrate
104
104
  var representationBitrate = void 0;
105
105
  if (representation.attributes.bitrate == null) {
@@ -203,7 +203,7 @@ export default function parseRepresentations(representationsIR, adaptation, adap
203
203
  }
204
204
  parsedRepresentation.hdrInfo =
205
205
  getHDRInformation({ adaptationProfiles: adaptation.attributes.profiles,
206
- manifestProfiles: adaptationInfos.manifestProfiles, codecs: codecs });
206
+ manifestProfiles: context.manifestProfiles, codecs: codecs });
207
207
  parsedRepresentations.push(parsedRepresentation);
208
208
  };
209
209
  for (var _i = 0, representationsIR_1 = representationsIR; _i < representationsIR_1.length; _i++) {
@@ -125,7 +125,7 @@ export interface IPeriodChildren {
125
125
  /**
126
126
  * Provide a template with which we will be able to request segments.
127
127
  */
128
- segmentTemplate?: ISegmentTemplateIntermediateRepresentation;
128
+ segmentTemplate?: ISegmentTemplateIntermediateRepresentation | undefined;
129
129
  /**
130
130
  * Allows to signal events linked to this Period.
131
131
  *
@@ -177,16 +177,16 @@ export interface IAdaptationSetIntermediateRepresentation {
177
177
  export interface IAdaptationSetChildren {
178
178
  baseURLs: IBaseUrlIntermediateRepresentation[];
179
179
  representations: IRepresentationIntermediateRepresentation[];
180
- accessibilities?: IScheme[];
181
- contentComponent?: IContentComponentAttributes;
182
- contentProtections?: IContentProtectionIntermediateRepresentation[];
183
- essentialProperties?: IScheme[];
184
- inbandEventStreams?: IScheme[];
180
+ accessibilities?: IScheme[] | undefined;
181
+ contentComponent?: IContentComponentAttributes | undefined;
182
+ contentProtections?: IContentProtectionIntermediateRepresentation[] | undefined;
183
+ essentialProperties?: IScheme[] | undefined;
184
+ inbandEventStreams?: IScheme[] | undefined;
185
185
  roles?: IScheme[];
186
- supplementalProperties?: IScheme[];
187
- segmentBase?: ISegmentBaseIntermediateRepresentation;
188
- segmentList?: ISegmentListIntermediateRepresentation;
189
- segmentTemplate?: ISegmentTemplateIntermediateRepresentation;
186
+ supplementalProperties?: IScheme[] | undefined;
187
+ segmentBase?: ISegmentBaseIntermediateRepresentation | undefined;
188
+ segmentList?: ISegmentListIntermediateRepresentation | undefined;
189
+ segmentTemplate?: ISegmentTemplateIntermediateRepresentation | undefined;
190
190
  }
191
191
  export interface IAdaptationSetAttributes {
192
192
  audioSamplingRate?: string;
@@ -305,22 +305,22 @@ export interface IContentProtectionAttributes {
305
305
  keyId?: Uint8Array;
306
306
  }
307
307
  export interface ISegmentTemplateIntermediateRepresentation {
308
- availabilityTimeComplete?: boolean;
309
- availabilityTimeOffset?: number;
310
- bitstreamSwitching?: boolean;
311
- duration?: number;
312
- index?: string;
313
- indexRange?: [number, number];
314
- indexRangeExact?: boolean;
315
- media?: string;
316
- presentationTimeOffset?: number;
317
- startNumber?: number;
318
- timescale?: number;
308
+ availabilityTimeComplete?: boolean | undefined;
309
+ availabilityTimeOffset?: number | undefined;
310
+ bitstreamSwitching?: boolean | undefined;
311
+ duration?: number | undefined;
312
+ index?: string | undefined;
313
+ indexRange?: [number, number] | undefined;
314
+ indexRangeExact?: boolean | undefined;
315
+ media?: string | undefined;
316
+ presentationTimeOffset?: number | undefined;
317
+ startNumber?: number | undefined;
318
+ timescale?: number | undefined;
319
319
  initialization?: {
320
320
  media?: string;
321
- };
322
- timeline?: ISegmentTimelineElement[];
323
- timelineParser?: ITimelineParser;
321
+ } | undefined;
322
+ timeline?: ISegmentTimelineElement[] | undefined;
323
+ timelineParser?: ITimelineParser | undefined;
324
324
  }
325
325
  export interface ISegmentTimelineElement {
326
326
  start: number;
@@ -349,9 +349,9 @@ export interface IScheme {
349
349
  *
350
350
  * `undefined` if no `schemeIdUri` attribute has been found.
351
351
  */
352
- schemeIdUri?: string;
352
+ schemeIdUri?: string | undefined;
353
353
  /** Inner content of that scheme. */
354
- value?: string;
354
+ value?: string | undefined;
355
355
  }
356
356
  export interface IEventStreamIntermediateRepresentation {
357
357
  /** Contains data about the element's children. */
@@ -360,9 +360,9 @@ export interface IEventStreamIntermediateRepresentation {
360
360
  attributes: IEventStreamAttributes;
361
361
  }
362
362
  export interface IEventStreamAttributes {
363
- schemeIdUri?: string;
364
- timescale?: number;
365
- value?: string;
363
+ schemeIdUri?: string | undefined;
364
+ timescale?: number | undefined;
365
+ value?: string | undefined;
366
366
  /**
367
367
  * XML namespaces linked to the `<EventStream>` element.
368
368
  *
@@ -373,7 +373,7 @@ export interface IEventStreamAttributes {
373
373
  namespaces?: Array<{
374
374
  key: string;
375
375
  value: string;
376
- }>;
376
+ }> | undefined;
377
377
  }
378
378
  export interface IEventStreamChildren {
379
379
  events: IEventStreamEventIntermediateRepresentation[];
@@ -63,19 +63,19 @@ export interface ILoadedResource<T extends string | ArrayBuffer> {
63
63
  * The URL of the loaded resource (post-redirection if one).
64
64
  * `undefined` if unknown or inexistant.
65
65
  */
66
- url?: string;
66
+ url?: string | undefined;
67
67
  /**
68
68
  * The time, in terms of `performance.now()`, at which the resource was
69
69
  * starting to be fetched.
70
70
  * `undefined` if unknown or not applicable.
71
71
  */
72
- sendingTime?: number;
72
+ sendingTime?: number | undefined;
73
73
  /**
74
74
  * The time, in terms of `performance.now()`, at which the resource was
75
75
  * fully-fetched.
76
76
  * `undefined` if unknown or not applicable.
77
77
  */
78
- receivedTime?: number;
78
+ receivedTime?: number | undefined;
79
79
  /** The loaded resource itself, under the right format.
80
80
  * Or an error, when fetching ressources.
81
81
  */
@@ -49,10 +49,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
49
49
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
50
  }
51
51
  };
52
- import PPromise from "pinkie";
53
52
  import log from "../../../../../log";
54
53
  import assertUnreachable from "../../../../../utils/assert_unreachable";
55
54
  import noop from "../../../../../utils/noop";
55
+ import PPromise from "../../../../../utils/promise";
56
56
  import parseMpdIr from "../../common";
57
57
  import { generateRootChildrenParser } from "./generators";
58
58
  import { generateXLinkChildrenParser } from "./generators/XLink";
@@ -56,9 +56,9 @@ export interface IMetaPlaylist {
56
56
  * @returns {Object}
57
57
  */
58
58
  export default function parseMetaPlaylist(data: unknown, parserOptions: {
59
- url?: string;
59
+ url?: string | undefined;
60
60
  serverSyncInfos?: {
61
61
  serverTimestamp: number;
62
62
  clientTime: number;
63
- };
63
+ } | undefined;
64
64
  }): IParserResponse<IParsedManifest>;
@@ -16,19 +16,19 @@
16
16
  import { IParsedManifest } from "../types";
17
17
  import { IKeySystem } from "./parse_protection_node";
18
18
  export interface IHSSParserConfiguration {
19
- aggressiveMode?: boolean;
20
- suggestedPresentationDelay?: number;
21
- referenceDateTime?: number;
22
- minRepresentationBitrate?: number;
23
- keySystems?: (hex?: Uint8Array) => IKeySystem[];
19
+ aggressiveMode?: boolean | undefined;
20
+ suggestedPresentationDelay?: number | undefined;
21
+ referenceDateTime?: number | undefined;
22
+ minRepresentationBitrate?: number | undefined;
23
+ keySystems?: ((hex: Uint8Array | undefined) => IKeySystem[]) | undefined;
24
24
  serverSyncInfos?: {
25
25
  serverTimestamp: number;
26
26
  clientTime: number;
27
- };
27
+ } | undefined;
28
28
  }
29
29
  /**
30
30
  * @param {Object|undefined} parserOptions
31
31
  * @returns {Function}
32
32
  */
33
- declare function createSmoothStreamingParser(parserOptions?: IHSSParserConfiguration): (manifest: Document, url?: string, manifestReceivedTime?: number) => IParsedManifest;
33
+ declare function createSmoothStreamingParser(parserOptions?: IHSSParserConfiguration): (manifest: Document, url?: string | undefined, manifestReceivedTime?: number | undefined) => IParsedManifest;
34
34
  export default createSmoothStreamingParser;
@@ -48,6 +48,7 @@ var MIME_TYPES = {
48
48
  AVC1: "video/mp4",
49
49
  H264: "video/mp4",
50
50
  TTML: "application/ttml+xml+mp4",
51
+ DFXP: "application/ttml+xml+mp4",
51
52
  };
52
53
  /**
53
54
  * @param {Object|undefined} parserOptions
@@ -91,14 +91,14 @@ export interface ISmoothRepresentationIndexContextInformation {
91
91
  }
92
92
  /** Information allowing to generate a Smooth initialization segment. */
93
93
  interface ISmoothInitSegmentPrivateInfos {
94
- bitsPerSample?: number;
95
- channels?: number;
96
- codecPrivateData?: string;
97
- packetSize?: number;
98
- samplingRate?: number;
94
+ bitsPerSample?: number | undefined;
95
+ channels?: number | undefined;
96
+ codecPrivateData?: string | undefined;
97
+ packetSize?: number | undefined;
98
+ samplingRate?: number | undefined;
99
99
  protection?: {
100
100
  keyId: Uint8Array;
101
- };
101
+ } | undefined;
102
102
  }
103
103
  /**
104
104
  * RepresentationIndex implementation for Smooth Manifests.
@@ -131,12 +131,12 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
131
131
  * Useful to know if a segment present in the timeline has actually been
132
132
  * generated on the server-side
133
133
  */
134
- private _scaledLiveGap?;
134
+ private _scaledLiveGap;
135
135
  /**
136
136
  * Defines the end of the latest available segment when this index was known to
137
137
  * be valid, in the index's timescale.
138
138
  */
139
- private _initialScaledLastPosition?;
139
+ private _initialScaledLastPosition;
140
140
  /**
141
141
  * Defines the earliest time when this index was known to be valid (that is, when
142
142
  * all segments declared in it are available). This means either:
@@ -17,8 +17,8 @@ import { IRepresentationIndex } from "../../manifest";
17
17
  import { IHDRInformation } from "../../manifest/types";
18
18
  export interface IManifestStreamEvent {
19
19
  start: number;
20
- end?: number;
21
- id?: string;
20
+ end?: number | undefined;
21
+ id?: string | undefined;
22
22
  data: IParsedStreamEventData;
23
23
  }
24
24
  export interface IParsedStreamEventData {
@@ -32,7 +32,7 @@ export interface IParsedStreamEventData {
32
32
  /** Describes information about an encryption Key ID of a given media. */
33
33
  export interface IContentProtectionKID {
34
34
  keyId: Uint8Array;
35
- systemId?: string;
35
+ systemId?: string | undefined;
36
36
  }
37
37
  /**
38
38
  * Encryption initialization data.
@@ -88,37 +88,37 @@ export interface IParsedRepresentation {
88
88
  */
89
89
  id: string;
90
90
  /** Codec(s) associated with this Representation. */
91
- codecs?: string;
91
+ codecs?: string | undefined;
92
92
  /**
93
93
  * Information about the encryption associated with this Representation.
94
94
  * Not set if unknown or if the content is not encrypted.
95
95
  */
96
- contentProtections?: IContentProtections;
96
+ contentProtections?: IContentProtections | undefined;
97
97
  /**
98
98
  * Frame rate (images per seconds) associated with this Representation.
99
99
  * Not set if unknown or if it makes no sense (e.g. for subtitles).
100
100
  */
101
- frameRate?: string;
101
+ frameRate?: string | undefined;
102
102
  /**
103
103
  * Height (top to bottom) in pixels this Representation has.
104
104
  * Not set if unknown or if it makes no sense (e.g. for audio).
105
105
  */
106
- height?: number;
106
+ height?: number | undefined;
107
107
  /**
108
108
  * Defines the mime-type of the content.
109
109
  * This allows to deduce the media container but most of the time, the
110
110
  * `codecs` will also be needed to know how to decode that media.
111
111
  */
112
- mimeType?: string;
112
+ mimeType?: string | undefined;
113
113
  /**
114
114
  * Width (left to right) in pixels this Representation has.
115
115
  * Not set if unknown or if it makes no sense (e.g. for audio).
116
116
  */
117
- width?: number;
117
+ width?: number | undefined;
118
118
  /**
119
119
  * Information about the HDR characteristic of a content.
120
120
  */
121
- hdrInfo?: IHDRInformation;
121
+ hdrInfo?: IHDRInformation | undefined;
122
122
  }
123
123
  /** Every possible types an Adaptation can have. */
124
124
  export declare type IParsedAdaptationType = "audio" | "video" | "text" | "image";
@@ -144,34 +144,34 @@ export interface IParsedAdaptation {
144
144
  * Not set if unknown or if it makes no sense for the current track (e.g. for
145
145
  * a video track).
146
146
  */
147
- audioDescription?: boolean;
147
+ audioDescription?: boolean | undefined;
148
148
  /**
149
149
  * Whether this Adaptation are closed captions for the hard of hearing.
150
150
  * Not set if unknown or if it makes no sense for the current track (e.g. for
151
151
  * a video track).
152
152
  */
153
- closedCaption?: boolean;
153
+ closedCaption?: boolean | undefined;
154
154
  /**
155
155
  * If true this Adaptation is in a dub: it was recorded in another language
156
156
  * than the original(s) one(s).
157
157
  */
158
- isDub?: boolean;
158
+ isDub?: boolean | undefined;
159
159
  /**
160
160
  * If true this Adaptation is in a sign interpreted: which is a variant of the
161
161
  * video with sign language.
162
162
  */
163
- isSignInterpreted?: boolean;
163
+ isSignInterpreted?: boolean | undefined;
164
164
  /** Tells if the track is a trick mode track. */
165
- isTrickModeTrack?: boolean;
165
+ isTrickModeTrack?: boolean | undefined;
166
166
  /**
167
167
  * Language the `Adaptation` is in.
168
168
  * Not set if unknown or if it makes no sense for the current track.
169
169
  */
170
- language?: string;
170
+ language?: string | undefined;
171
171
  /**
172
172
  * TrickMode tracks attached to the adaptation.
173
173
  */
174
- trickModeTracks?: IParsedAdaptation[];
174
+ trickModeTracks?: IParsedAdaptation[] | undefined;
175
175
  }
176
176
  /** Information on a given period of time in the Manifest */
177
177
  export interface IParsedPeriod {
@@ -193,18 +193,18 @@ export interface IParsedPeriod {
193
193
  * Duration of the Period (from the start to the end), in seconds.
194
194
  * `undefined` if the Period is the last one and is still being updated.
195
195
  */
196
- duration?: number;
196
+ duration?: number | undefined;
197
197
  /**
198
198
  * Time at which the Period ends, in seconds.
199
199
  * `undefined` if the Period is the last one and is still
200
200
  * being updated.
201
201
  */
202
- end?: number;
202
+ end?: number | undefined;
203
203
  /**
204
204
  * Array containing every stream event from period in manifest.
205
205
  * `undefined` if no parsed stream event in manifest.
206
206
  */
207
- streamEvents?: IManifestStreamEvent[];
207
+ streamEvents?: IManifestStreamEvent[] | undefined;
208
208
  }
209
209
  /** Information on the whole content */
210
210
  export interface IParsedManifest {
@@ -227,23 +227,23 @@ export interface IParsedManifest {
227
227
  * The wall-clock time when the manifest was generated and published at the
228
228
  * origin server
229
229
  */
230
- publishTime?: number;
230
+ publishTime?: number | undefined;
231
231
  /** Underlying transport protocol: "smooth", "dash", "metaplaylist" etc. */
232
232
  transportType: string;
233
233
  /** Base time from which the segments are generated. */
234
- availabilityStartTime?: number;
234
+ availabilityStartTime?: number | undefined;
235
235
  /**
236
236
  * Offset, in milliseconds, the client's clock (in terms of `performance.now`)
237
237
  * has relatively to the server's
238
238
  */
239
- clockOffset?: number;
239
+ clockOffset?: number | undefined;
240
240
  /** If set, the Manifest needs to be updated when that Promise resolves. */
241
- expired?: Promise<void>;
241
+ expired?: Promise<void> | undefined;
242
242
  /**
243
243
  * Duration of the validity of this Manifest from its download time.
244
244
  * After that time has elapsed, the Manifest should be refreshed.
245
245
  */
246
- lifetime?: number;
246
+ lifetime?: number | undefined;
247
247
  /**
248
248
  * Data allowing to calculate the minimum and maximum seekable positions at
249
249
  * any given time.
@@ -253,7 +253,7 @@ export interface IParsedManifest {
253
253
  * The minimum time, in seconds, available in this Manifest.
254
254
  * `undefined` if that value is unknown.
255
255
  */
256
- absoluteMinimumTime?: number;
256
+ absoluteMinimumTime?: number | undefined;
257
257
  /**
258
258
  * Some dynamic contents have the concept of a "window depth" (or "buffer
259
259
  * depth") which allows to set a minimum position for all reachable
@@ -298,7 +298,7 @@ export interface IParsedManifest {
298
298
  * Suggested delay from the last position the player should start from by
299
299
  * default.
300
300
  */
301
- suggestedPresentationDelay?: number;
301
+ suggestedPresentationDelay?: number | undefined;
302
302
  /** URIs where the manifest can be refreshed by order of importance. */
303
- uris?: string[];
303
+ uris?: string[] | undefined;
304
304
  }
@@ -18,6 +18,7 @@ import { IIndexSegment } from "./index_helpers";
18
18
  * Remove segments which starts before the given `firstAvailablePosition` from
19
19
  * the timeline. `firstAvailablePosition` has to be time scaled.
20
20
  * @param {Array.<Object>}
21
- * @returns {number}
21
+ * @returns {number} - Returns the number of removed segments. This includes
22
+ * potential implicit segment from decremented `repeatCount` attributes.
22
23
  */
23
- export default function clearTimelineFromPosition(timeline: IIndexSegment[], firstAvailablePosition: number): void;
24
+ export default function clearTimelineFromPosition(timeline: IIndexSegment[], firstAvailablePosition: number): number;