rx-player 4.0.0-dev.2023092900 → 4.0.0-dev.2023102700

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 (576) hide show
  1. package/CHANGELOG.md +221 -12
  2. package/FILES.md +0 -4
  3. package/MAINTAINERS.md +1 -0
  4. package/README.md +0 -21
  5. package/VERSION +1 -1
  6. package/dist/_esm5.processed/compat/add_class_name.js +6 -3
  7. package/dist/_esm5.processed/compat/add_text_track.js +11 -8
  8. package/dist/_esm5.processed/compat/browser_compatibility_types.js +13 -9
  9. package/dist/_esm5.processed/compat/browser_detection.js +49 -34
  10. package/dist/_esm5.processed/compat/browser_version.js +11 -8
  11. package/dist/_esm5.processed/compat/can_patch_isobmff.js +6 -3
  12. package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +9 -6
  13. package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -3
  14. package/dist/_esm5.processed/compat/change_source_buffer_type.js +6 -3
  15. package/dist/_esm5.processed/compat/clear_element_src.js +12 -9
  16. package/dist/_esm5.processed/compat/eme/close_session.js +45 -106
  17. package/dist/_esm5.processed/compat/eme/constants.js +6 -3
  18. package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +18 -22
  19. package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +78 -102
  20. package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -6
  21. package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +18 -15
  22. package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +7 -5
  23. package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +70 -88
  24. package/dist/_esm5.processed/compat/eme/custom_media_keys/types.js +2 -1
  25. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +91 -117
  26. package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +7 -7
  27. package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +82 -83
  28. package/dist/_esm5.processed/compat/eme/generate_key_request.js +36 -31
  29. package/dist/_esm5.processed/compat/eme/get_init_data.js +28 -25
  30. package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +8 -5
  31. package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +17 -14
  32. package/dist/_esm5.processed/compat/eme/index.js +13 -7
  33. package/dist/_esm5.processed/compat/eme/load_session.js +26 -69
  34. package/dist/_esm5.processed/compat/enable_audio_track.js +7 -4
  35. package/dist/_esm5.processed/compat/event_listeners.js +130 -102
  36. package/dist/_esm5.processed/compat/get_start_date.js +7 -4
  37. package/dist/_esm5.processed/compat/global_scope.js +7 -5
  38. package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
  39. package/dist/_esm5.processed/compat/index.js +47 -24
  40. package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
  41. package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +4 -1
  42. package/dist/_esm5.processed/compat/is_node.js +5 -3
  43. package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
  44. package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -3
  45. package/dist/_esm5.processed/compat/is_worker.js +3 -1
  46. package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -7
  47. package/dist/_esm5.processed/compat/on_height_width_change.js +25 -22
  48. package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -17
  49. package/dist/_esm5.processed/compat/remove_cue.js +12 -9
  50. package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +7 -4
  51. package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +4 -1
  52. package/dist/_esm5.processed/compat/should_renew_media_key_system_access.js +6 -3
  53. package/dist/_esm5.processed/compat/should_unset_media_keys.js +6 -3
  54. package/dist/_esm5.processed/compat/should_validate_metadata.js +6 -3
  55. package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +6 -3
  56. package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +6 -3
  57. package/dist/_esm5.processed/config.js +15 -14
  58. package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +123 -94
  59. package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +43 -42
  60. package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -44
  61. package/dist/_esm5.processed/core/adaptive/index.js +4 -2
  62. package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -74
  63. package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +24 -23
  64. package/dist/_esm5.processed/core/adaptive/utils/ewma.js +13 -12
  65. package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.js +9 -6
  66. package/dist/_esm5.processed/core/adaptive/utils/filter_by_resolution.js +18 -19
  67. package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +10 -7
  68. package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.js +8 -7
  69. package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.js +26 -23
  70. package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +25 -23
  71. package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +6 -3
  72. package/dist/_esm5.processed/core/api/debug/buffer_graph.js +41 -40
  73. package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +31 -30
  74. package/dist/_esm5.processed/core/api/debug/constants.js +4 -1
  75. package/dist/_esm5.processed/core/api/debug/index.js +4 -2
  76. package/dist/_esm5.processed/core/api/debug/modules/general_info.js +64 -72
  77. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +49 -46
  78. package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +15 -12
  79. package/dist/_esm5.processed/core/api/debug/render.js +16 -13
  80. package/dist/_esm5.processed/core/api/debug/utils.js +18 -13
  81. package/dist/_esm5.processed/core/api/index.js +7 -4
  82. package/dist/_esm5.processed/core/api/option_utils.js +85 -58
  83. package/dist/_esm5.processed/core/api/playback_observer.js +135 -124
  84. package/dist/_esm5.processed/core/api/public_api.js +610 -684
  85. package/dist/_esm5.processed/core/api/track_management/index.js +19 -3
  86. package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +233 -247
  87. package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +45 -58
  88. package/dist/_esm5.processed/core/api/track_management/tracks_store.js +300 -324
  89. package/dist/_esm5.processed/core/api/utils.js +32 -24
  90. package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +155 -185
  91. package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +42 -81
  92. package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
  93. package/dist/_esm5.processed/core/decrypt/content_decryptor.js +392 -510
  94. package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
  95. package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
  96. package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -67
  97. package/dist/_esm5.processed/core/decrypt/find_key_system.js +94 -155
  98. package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
  99. package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
  100. package/dist/_esm5.processed/core/decrypt/index.js +26 -7
  101. package/dist/_esm5.processed/core/decrypt/init_media_keys.js +17 -59
  102. package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
  103. package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
  104. package/dist/_esm5.processed/core/decrypt/types.js +5 -2
  105. package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
  106. package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +40 -61
  107. package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +17 -61
  108. package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.js +8 -5
  109. package/dist/_esm5.processed/core/decrypt/utils/get_drm_system_id.js +8 -5
  110. package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +23 -23
  111. package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
  112. package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -21
  113. package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -27
  114. package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
  115. package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
  116. package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -102
  117. package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
  118. package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +18 -16
  119. package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +37 -56
  120. package/dist/_esm5.processed/core/fetchers/index.js +7 -3
  121. package/dist/_esm5.processed/core/fetchers/manifest/index.js +4 -2
  122. package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +233 -313
  123. package/dist/_esm5.processed/core/fetchers/segment/index.js +4 -2
  124. package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +12 -9
  125. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +218 -234
  126. package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +20 -19
  127. package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +73 -74
  128. package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +8 -5
  129. package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +210 -261
  130. package/dist/_esm5.processed/core/init/directfile_content_initializer.js +73 -99
  131. package/dist/_esm5.processed/core/init/index.js +5 -1
  132. package/dist/_esm5.processed/core/init/media_source_content_initializer.js +256 -320
  133. package/dist/_esm5.processed/core/init/types.js +7 -24
  134. package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +109 -135
  135. package/dist/_esm5.processed/core/init/utils/create_media_source.js +35 -30
  136. package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +12 -10
  137. package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -26
  138. package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -38
  139. package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +13 -10
  140. package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +29 -26
  141. package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +30 -27
  142. package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +58 -60
  143. package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +140 -161
  144. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +3 -1
  145. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.js +4 -2
  146. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +28 -30
  147. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +71 -90
  148. package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.js +2 -1
  149. package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +16 -13
  150. package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +75 -126
  151. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +130 -147
  152. package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/index.js +4 -2
  153. package/dist/_esm5.processed/core/segment_buffers/implementations/index.js +20 -3
  154. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +106 -125
  155. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/index.js +4 -2
  156. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +11 -8
  157. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +48 -47
  158. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/types.js +2 -1
  159. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +18 -15
  160. package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +22 -15
  161. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/index.js +4 -2
  162. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +65 -82
  163. package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +11 -8
  164. package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +19 -17
  165. package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +23 -22
  166. package/dist/_esm5.processed/core/segment_buffers/index.js +13 -6
  167. package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +24 -22
  168. package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
  169. package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +151 -150
  170. package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +2 -1
  171. package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +9 -4
  172. package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +82 -89
  173. package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +118 -166
  174. package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +31 -28
  175. package/dist/_esm5.processed/core/stream/adaptation/index.js +19 -3
  176. package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
  177. package/dist/_esm5.processed/core/stream/index.js +4 -2
  178. package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -16
  179. package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
  180. package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +175 -222
  181. package/dist/_esm5.processed/core/stream/period/index.js +19 -3
  182. package/dist/_esm5.processed/core/stream/period/period_stream.js +172 -216
  183. package/dist/_esm5.processed/core/stream/period/types.js +2 -1
  184. package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +34 -33
  185. package/dist/_esm5.processed/core/stream/representation/index.js +19 -3
  186. package/dist/_esm5.processed/core/stream/representation/representation_stream.js +80 -68
  187. package/dist/_esm5.processed/core/stream/representation/types.js +2 -1
  188. package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +33 -84
  189. package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +32 -29
  190. package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +126 -145
  191. package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +32 -88
  192. package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +61 -48
  193. package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +71 -69
  194. package/dist/_esm5.processed/core/stream/representation/utils/get_segment_priority.js +8 -5
  195. package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +22 -63
  196. package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +49 -86
  197. package/dist/_esm5.processed/default_config.js +4 -2
  198. package/dist/_esm5.processed/errors/assertion_error.js +10 -26
  199. package/dist/_esm5.processed/errors/custom_loader_error.js +12 -28
  200. package/dist/_esm5.processed/errors/encrypted_media_error.js +16 -32
  201. package/dist/_esm5.processed/errors/error_codes.js +9 -4
  202. package/dist/_esm5.processed/errors/error_message.js +5 -2
  203. package/dist/_esm5.processed/errors/format_error.js +9 -7
  204. package/dist/_esm5.processed/errors/index.js +25 -11
  205. package/dist/_esm5.processed/errors/is_known_error.js +14 -11
  206. package/dist/_esm5.processed/errors/media_error.js +17 -33
  207. package/dist/_esm5.processed/errors/network_error.js +21 -37
  208. package/dist/_esm5.processed/errors/other_error.js +15 -31
  209. package/dist/_esm5.processed/errors/request_error.js +17 -33
  210. package/dist/_esm5.processed/experimental/features/dash_wasm.js +14 -11
  211. package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
  212. package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
  213. package/dist/_esm5.processed/experimental/features/index.js +11 -3
  214. package/dist/_esm5.processed/experimental/features/local.js +9 -6
  215. package/dist/_esm5.processed/experimental/features/metaplaylist.js +9 -6
  216. package/dist/_esm5.processed/experimental/index.js +5 -2
  217. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.js +6 -3
  218. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.js +6 -3
  219. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +7 -3
  220. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +22 -16
  221. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +22 -19
  222. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +6 -3
  223. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.js +2 -1
  224. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +125 -186
  225. package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +11 -27
  226. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +76 -119
  227. package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +24 -15
  228. package/dist/_esm5.processed/experimental/tools/index.js +11 -5
  229. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +38 -43
  230. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +31 -34
  231. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +21 -18
  232. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +4 -2
  233. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/log.js +5 -3
  234. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +20 -17
  235. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -18
  236. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +13 -10
  237. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +16 -13
  238. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.js +16 -14
  239. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +14 -11
  240. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +14 -11
  241. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +19 -16
  242. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -8
  243. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.js +5 -2
  244. package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +25 -22
  245. package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +7 -4
  246. package/dist/_esm5.processed/features/add_features.js +11 -8
  247. package/dist/_esm5.processed/features/features_object.js +4 -2
  248. package/dist/_esm5.processed/features/index.js +7 -4
  249. package/dist/_esm5.processed/features/list/dash.js +11 -8
  250. package/dist/_esm5.processed/features/list/directfile.js +9 -5
  251. package/dist/_esm5.processed/features/list/eme.js +7 -4
  252. package/dist/_esm5.processed/features/list/html_sami_parser.js +9 -6
  253. package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -6
  254. package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
  255. package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -6
  256. package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -6
  257. package/dist/_esm5.processed/features/list/index.js +31 -14
  258. package/dist/_esm5.processed/features/list/native_sami_parser.js +9 -6
  259. package/dist/_esm5.processed/features/list/native_srt_parser.js +9 -6
  260. package/dist/_esm5.processed/features/list/native_text_buffer.js +7 -4
  261. package/dist/_esm5.processed/features/list/native_ttml_parser.js +9 -6
  262. package/dist/_esm5.processed/features/list/native_vtt_parser.js +9 -6
  263. package/dist/_esm5.processed/features/list/smooth.js +9 -6
  264. package/dist/_esm5.processed/features/types.js +2 -1
  265. package/dist/_esm5.processed/index.js +24 -9
  266. package/dist/_esm5.processed/log.js +5 -3
  267. package/dist/_esm5.processed/manifest/adaptation.js +52 -55
  268. package/dist/_esm5.processed/manifest/index.js +32 -13
  269. package/dist/_esm5.processed/manifest/manifest.js +112 -134
  270. package/dist/_esm5.processed/manifest/period.js +38 -42
  271. package/dist/_esm5.processed/manifest/representation.js +78 -61
  272. package/dist/_esm5.processed/manifest/representation_index/index.js +5 -2
  273. package/dist/_esm5.processed/manifest/representation_index/static.js +43 -42
  274. package/dist/_esm5.processed/manifest/representation_index/types.js +2 -1
  275. package/dist/_esm5.processed/manifest/types.js +5 -2
  276. package/dist/_esm5.processed/manifest/update_period_in_place.js +38 -48
  277. package/dist/_esm5.processed/manifest/update_periods.js +59 -69
  278. package/dist/_esm5.processed/manifest/utils.js +14 -9
  279. package/dist/_esm5.processed/minimal.js +9 -7
  280. package/dist/_esm5.processed/parsers/containers/isobmff/constants.js +4 -1
  281. package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +14 -10
  282. package/dist/_esm5.processed/parsers/containers/isobmff/drm/index.js +5 -1
  283. package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +15 -11
  284. package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +48 -40
  285. package/dist/_esm5.processed/parsers/containers/isobmff/index.js +27 -6
  286. package/dist/_esm5.processed/parsers/containers/isobmff/read.js +20 -14
  287. package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +25 -20
  288. package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +130 -112
  289. package/dist/_esm5.processed/parsers/containers/matroska/index.js +6 -1
  290. package/dist/_esm5.processed/parsers/containers/matroska/utils.js +67 -63
  291. package/dist/_esm5.processed/parsers/images/bif.js +40 -29
  292. package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +10 -12
  293. package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +10 -7
  294. package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +8 -5
  295. package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +10 -6
  296. package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +7 -6
  297. package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +10 -6
  298. package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +14 -9
  299. package/dist/_esm5.processed/parsers/manifest/dash/common/index.js +10 -4
  300. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +73 -67
  301. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +9 -4
  302. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +32 -25
  303. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.js +11 -5
  304. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +81 -70
  305. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +130 -123
  306. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +15 -12
  307. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +35 -32
  308. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +14 -9
  309. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +30 -22
  310. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.js +4 -2
  311. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +14 -11
  312. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -129
  313. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +16 -10
  314. package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/utils.js +7 -3
  315. package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +19 -18
  316. package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +18 -17
  317. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -111
  318. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.js +4 -1
  319. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -85
  320. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +97 -82
  321. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +39 -37
  322. package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +61 -69
  323. package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +12 -9
  324. package/dist/_esm5.processed/parsers/manifest/dash/index.js +8 -1
  325. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/index.js +4 -2
  326. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +66 -62
  327. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +7 -4
  328. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.js +7 -4
  329. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.js +22 -19
  330. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +22 -19
  331. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +11 -8
  332. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +38 -34
  333. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +34 -30
  334. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +44 -40
  335. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +24 -21
  336. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.js +15 -12
  337. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +21 -18
  338. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.js +6 -3
  339. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +12 -9
  340. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +60 -64
  341. package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +33 -27
  342. package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
  343. package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.js +2 -1
  344. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.js +4 -2
  345. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +192 -238
  346. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +67 -62
  347. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +8 -4
  348. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +11 -7
  349. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +17 -13
  350. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +29 -24
  351. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +38 -33
  352. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +37 -32
  353. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +43 -38
  354. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +9 -5
  355. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +16 -12
  356. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +11 -7
  357. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +20 -16
  358. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +11 -7
  359. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +11 -7
  360. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/index.js +5 -1
  361. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +10 -6
  362. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +22 -20
  363. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.js +2 -1
  364. package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +6 -2
  365. package/dist/_esm5.processed/parsers/manifest/index.js +17 -1
  366. package/dist/_esm5.processed/parsers/manifest/local/index.js +4 -2
  367. package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +30 -27
  368. package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
  369. package/dist/_esm5.processed/parsers/manifest/local/types.js +2 -1
  370. package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.js +4 -2
  371. package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +75 -72
  372. package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
  373. package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -176
  374. package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +13 -8
  375. package/dist/_esm5.processed/parsers/manifest/smooth/index.js +7 -4
  376. package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +17 -14
  377. package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +17 -15
  378. package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -98
  379. package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -48
  380. package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
  381. package/dist/_esm5.processed/parsers/manifest/smooth/utils/parseBoolean.js +4 -1
  382. package/dist/_esm5.processed/parsers/manifest/smooth/utils/reduceChildren.js +6 -3
  383. package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +5 -1
  384. package/dist/_esm5.processed/parsers/manifest/types.js +2 -1
  385. package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +27 -24
  386. package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +10 -7
  387. package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +8 -5
  388. package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +8 -5
  389. package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +15 -12
  390. package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +15 -12
  391. package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +31 -22
  392. package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +9 -6
  393. package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +38 -45
  394. package/dist/_esm5.processed/parsers/texttracks/index.js +2 -1
  395. package/dist/_esm5.processed/parsers/texttracks/sami/html.js +45 -43
  396. package/dist/_esm5.processed/parsers/texttracks/sami/native.js +41 -39
  397. package/dist/_esm5.processed/parsers/texttracks/srt/find_end_of_cue_block.js +7 -4
  398. package/dist/_esm5.processed/parsers/texttracks/srt/get_cue_blocks.js +11 -8
  399. package/dist/_esm5.processed/parsers/texttracks/srt/html.js +32 -29
  400. package/dist/_esm5.processed/parsers/texttracks/srt/native.js +16 -13
  401. package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +21 -18
  402. package/dist/_esm5.processed/parsers/texttracks/srt/parse_timestamp.js +10 -7
  403. package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +37 -30
  404. package/dist/_esm5.processed/parsers/texttracks/ttml/get_styling.js +48 -48
  405. package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +14 -11
  406. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +7 -2
  407. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +15 -12
  408. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +15 -12
  409. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +11 -8
  410. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +15 -12
  411. package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +25 -22
  412. package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +117 -124
  413. package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +11 -8
  414. package/dist/_esm5.processed/parsers/texttracks/ttml/html/index.js +4 -2
  415. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +12 -8
  416. package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.js +14 -11
  417. package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +10 -7
  418. package/dist/_esm5.processed/parsers/texttracks/ttml/native/index.js +4 -2
  419. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +38 -35
  420. package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +11 -8
  421. package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +58 -58
  422. package/dist/_esm5.processed/parsers/texttracks/ttml/regexps.js +27 -13
  423. package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.js +18 -18
  424. package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +28 -26
  425. package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +37 -25
  426. package/dist/_esm5.processed/parsers/texttracks/types.js +2 -1
  427. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +12 -9
  428. package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +14 -11
  429. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.js +11 -8
  430. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +8 -5
  431. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +60 -60
  432. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +30 -27
  433. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.js +4 -2
  434. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +23 -26
  435. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.js +20 -17
  436. package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +23 -18
  437. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/index.js +4 -2
  438. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +19 -16
  439. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.js +20 -17
  440. package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +8 -5
  441. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +26 -18
  442. package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +10 -7
  443. package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +15 -7
  444. package/dist/_esm5.processed/public_types.js +2 -1
  445. package/dist/_esm5.processed/tools/TextTrackRenderer/index.js +13 -6
  446. package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +26 -24
  447. package/dist/_esm5.processed/tools/index.js +6 -4
  448. package/dist/_esm5.processed/tools/string_utils.js +10 -1
  449. package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +16 -24
  450. package/dist/_esm5.processed/transports/dash/construct_segment_url.js +6 -3
  451. package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +17 -14
  452. package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +19 -16
  453. package/dist/_esm5.processed/transports/dash/index.js +4 -2
  454. package/dist/_esm5.processed/transports/dash/init_segment_loader.js +47 -27
  455. package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +23 -16
  456. package/dist/_esm5.processed/transports/dash/manifest_parser.js +68 -60
  457. package/dist/_esm5.processed/transports/dash/pipelines.js +20 -17
  458. package/dist/_esm5.processed/transports/dash/segment_loader.js +49 -39
  459. package/dist/_esm5.processed/transports/dash/segment_parser.js +58 -39
  460. package/dist/_esm5.processed/transports/dash/text_loader.js +36 -30
  461. package/dist/_esm5.processed/transports/dash/text_parser.js +39 -29
  462. package/dist/_esm5.processed/transports/index.js +17 -1
  463. package/dist/_esm5.processed/transports/local/index.js +4 -2
  464. package/dist/_esm5.processed/transports/local/pipelines.js +26 -23
  465. package/dist/_esm5.processed/transports/local/segment_loader.js +26 -23
  466. package/dist/_esm5.processed/transports/local/segment_parser.js +36 -25
  467. package/dist/_esm5.processed/transports/local/text_parser.js +42 -27
  468. package/dist/_esm5.processed/transports/metaplaylist/index.js +4 -2
  469. package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +11 -7
  470. package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +91 -96
  471. package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +26 -20
  472. package/dist/_esm5.processed/transports/smooth/index.js +4 -2
  473. package/dist/_esm5.processed/transports/smooth/is_mp4_embedded_track.js +4 -1
  474. package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +22 -19
  475. package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +92 -67
  476. package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +29 -26
  477. package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +9 -6
  478. package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +23 -20
  479. package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +10 -7
  480. package/dist/_esm5.processed/transports/smooth/isobmff/index.js +13 -6
  481. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +19 -16
  482. package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +9 -6
  483. package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +41 -38
  484. package/dist/_esm5.processed/transports/smooth/pipelines.js +106 -96
  485. package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -2
  486. package/dist/_esm5.processed/transports/smooth/segment_loader.js +149 -153
  487. package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
  488. package/dist/_esm5.processed/transports/types.js +2 -1
  489. package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
  490. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -18
  491. package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
  492. package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
  493. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
  494. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -10
  495. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
  496. package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
  497. package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +5 -2
  498. package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
  499. package/dist/_esm5.processed/utils/array_find.js +7 -4
  500. package/dist/_esm5.processed/utils/array_find_index.js +6 -3
  501. package/dist/_esm5.processed/utils/array_includes.js +12 -11
  502. package/dist/_esm5.processed/utils/assert.js +13 -9
  503. package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
  504. package/dist/_esm5.processed/utils/base64.js +23 -18
  505. package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
  506. package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
  507. package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
  508. package/dist/_esm5.processed/utils/deep_merge.js +10 -21
  509. package/dist/_esm5.processed/utils/event_emitter.js +24 -24
  510. package/dist/_esm5.processed/utils/flat_map.js +7 -4
  511. package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
  512. package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
  513. package/dist/_esm5.processed/utils/id_generator.js +6 -3
  514. package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
  515. package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
  516. package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
  517. package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
  518. package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
  519. package/dist/_esm5.processed/utils/languages/index.js +7 -3
  520. package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
  521. package/dist/_esm5.processed/utils/logger.js +24 -23
  522. package/dist/_esm5.processed/utils/monotonic_timestamp.js +4 -1
  523. package/dist/_esm5.processed/utils/noop.js +4 -1
  524. package/dist/_esm5.processed/utils/object_assign.js +8 -10
  525. package/dist/_esm5.processed/utils/object_values.js +6 -3
  526. package/dist/_esm5.processed/utils/ranges.js +94 -71
  527. package/dist/_esm5.processed/utils/reference.js +48 -52
  528. package/dist/_esm5.processed/utils/request/fetch.js +79 -109
  529. package/dist/_esm5.processed/utils/request/index.js +9 -4
  530. package/dist/_esm5.processed/utils/request/xhr.js +49 -37
  531. package/dist/_esm5.processed/utils/resolve_url.js +18 -18
  532. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
  533. package/dist/_esm5.processed/utils/sleep.js +5 -2
  534. package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
  535. package/dist/_esm5.processed/utils/sorted_list.js +37 -40
  536. package/dist/_esm5.processed/utils/starts_with.js +5 -2
  537. package/dist/_esm5.processed/utils/string_parsing.js +84 -73
  538. package/dist/_esm5.processed/utils/take_first_set.js +9 -10
  539. package/dist/_esm5.processed/utils/task_canceller.js +51 -71
  540. package/dist/_esm5.processed/utils/warn_once.js +7 -4
  541. package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
  542. package/dist/_esm5.processed/utils/wrapInPromise.js +5 -2
  543. package/dist/mpd-parser.wasm +0 -0
  544. package/dist/rx-player.js +43758 -45493
  545. package/dist/rx-player.min.js +1 -1
  546. package/jest.config.js +1 -22
  547. package/package.json +22 -23
  548. package/scripts/build/constants.d.ts +1 -23
  549. package/scripts/build/generate_build.js +1 -1
  550. package/scripts/check_nodejs_import_compatibility.js +1 -1
  551. package/scripts/update-version +1 -4
  552. package/sonar-project.properties +1 -1
  553. package/src/compat/event_listeners.ts +8 -8
  554. package/src/compat/global_scope.ts +2 -0
  555. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
  556. package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
  557. package/src/core/adaptive/buffer_based_chooser.ts +1 -1
  558. package/src/core/adaptive/network_analyzer.ts +5 -4
  559. package/src/core/api/public_api.ts +2 -2
  560. package/src/core/api/track_management/track_dispatcher.ts +2 -1
  561. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
  562. package/src/core/fetchers/cdn_prioritizer.ts +1 -1
  563. package/src/experimental/features/__tests__/index.test.ts +19 -0
  564. package/src/experimental/features/index.ts +1 -0
  565. package/src/features/list/__tests__/index.test.ts +49 -0
  566. package/src/index.ts +28 -3
  567. package/src/transports/smooth/segment_loader.ts +4 -4
  568. package/src/typings/globals.d.ts +0 -42
  569. package/src/utils/request/fetch.ts +1 -1
  570. package/src/utils/request/xhr.ts +1 -1
  571. package/tsconfig.json +1 -1
  572. package/tsconfig.modules.json +3 -3
  573. package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
  574. package/dist/_esm5.processed/features/initialize_features.js +0 -108
  575. package/src/features/__tests__/initialize_features.test.ts +0 -657
  576. package/src/features/initialize_features.ts +0 -129
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,27 +14,19 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
17
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
18
- if (ar || !(i in from)) {
19
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
20
- ar[i] = from[i];
21
- }
22
- }
23
- return to.concat(ar || Array.prototype.slice.call(from));
24
- };
25
- import config from "../../../../config";
26
- import log from "../../../../log";
27
- import arrayFind from "../../../../utils/array_find";
28
- import getMonotonicTimeStamp from "../../../../utils/monotonic_timestamp";
29
- import { getFilenameIndexInUrl } from "../../../../utils/resolve_url";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const config_1 = require("../../../../config");
19
+ const log_1 = require("../../../../log");
20
+ const array_find_1 = require("../../../../utils/array_find");
21
+ const monotonic_timestamp_1 = require("../../../../utils/monotonic_timestamp");
22
+ const resolve_url_1 = require("../../../../utils/resolve_url");
30
23
  // eslint-disable-next-line max-len
31
- import getClockOffset from "./get_clock_offset";
32
- import getHTTPUTCTimingURL from "./get_http_utc-timing_url";
33
- import getMinimumAndMaximumPositions from "./get_minimum_and_maximum_positions";
34
- import parseAvailabilityStartTime from "./parse_availability_start_time";
35
- import parsePeriods from "./parse_periods";
36
- import resolveBaseURLs from "./resolve_base_urls";
24
+ const get_clock_offset_1 = require("./get_clock_offset");
25
+ const get_http_utc_timing_url_1 = require("./get_http_utc-timing_url");
26
+ const get_minimum_and_maximum_positions_1 = require("./get_minimum_and_maximum_positions");
27
+ const parse_availability_start_time_1 = require("./parse_availability_start_time");
28
+ const parse_periods_1 = require("./parse_periods");
29
+ const resolve_base_urls_1 = require("./resolve_base_urls");
37
30
  /**
38
31
  * Checks if xlinks needs to be loaded before actually parsing the manifest.
39
32
  * @param {Object} mpdIR
@@ -42,19 +35,18 @@ import resolveBaseURLs from "./resolve_base_urls";
42
35
  * @param {Array.<Object>} warnings
43
36
  * @returns {Object}
44
37
  */
45
- export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkInfos) {
46
- if (xlinkInfos === void 0) { xlinkInfos = new WeakMap(); }
47
- var rootChildren = mpdIR.children, rootAttributes = mpdIR.attributes;
38
+ function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkInfos = new WeakMap()) {
39
+ const { children: rootChildren, attributes: rootAttributes } = mpdIR;
48
40
  if (args.externalClockOffset == null) {
49
- var isDynamic = rootAttributes.type === "dynamic";
50
- var directTiming = arrayFind(rootChildren.utcTimings, function (utcTiming) {
41
+ const isDynamic = rootAttributes.type === "dynamic";
42
+ const directTiming = (0, array_find_1.default)(rootChildren.utcTimings, (utcTiming) => {
51
43
  return utcTiming.schemeIdUri === "urn:mpeg:dash:utc:direct:2014" &&
52
44
  utcTiming.value != null;
53
45
  });
54
- var clockOffsetFromDirectUTCTiming = directTiming != null &&
55
- directTiming.value != null ? getClockOffset(directTiming.value) :
46
+ const clockOffsetFromDirectUTCTiming = directTiming != null &&
47
+ directTiming.value != null ? (0, get_clock_offset_1.default)(directTiming.value) :
56
48
  undefined;
57
- var clockOffset = clockOffsetFromDirectUTCTiming != null &&
49
+ const clockOffset = clockOffsetFromDirectUTCTiming != null &&
58
50
  !isNaN(clockOffsetFromDirectUTCTiming) ?
59
51
  clockOffsetFromDirectUTCTiming :
60
52
  undefined;
@@ -62,7 +54,7 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
62
54
  args.externalClockOffset = clockOffset;
63
55
  }
64
56
  else if (isDynamic && hasLoadedClock !== true) {
65
- var UTCTimingHTTPURL = getHTTPUTCTimingURL(mpdIR);
57
+ const UTCTimingHTTPURL = (0, get_http_utc_timing_url_1.default)(mpdIR);
66
58
  if (UTCTimingHTTPURL != null && UTCTimingHTTPURL.length > 0) {
67
59
  // TODO fetch UTCTiming and XLinks at the same time
68
60
  return {
@@ -72,10 +64,10 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
72
64
  continue: function continueParsingMPD(responseDataClock) {
73
65
  if (!responseDataClock.success) {
74
66
  warnings.push(responseDataClock.error);
75
- log.warn("DASH Parser: Error on fetching the clock ressource", responseDataClock.error);
67
+ log_1.default.warn("DASH Parser: Error on fetching the clock ressource", responseDataClock.error);
76
68
  return parseMpdIr(mpdIR, args, warnings, true);
77
69
  }
78
- args.externalClockOffset = getClockOffset(responseDataClock.data);
70
+ args.externalClockOffset = (0, get_clock_offset_1.default)(responseDataClock.data);
79
71
  return parseMpdIr(mpdIR, args, warnings, true);
80
72
  },
81
73
  },
@@ -83,9 +75,9 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
83
75
  }
84
76
  }
85
77
  }
86
- var xlinksToLoad = [];
87
- for (var i = 0; i < rootChildren.periods.length; i++) {
88
- var _a = rootChildren.periods[i].attributes, xlinkHref = _a.xlinkHref, xlinkActuate = _a.xlinkActuate;
78
+ const xlinksToLoad = [];
79
+ for (let i = 0; i < rootChildren.periods.length; i++) {
80
+ const { xlinkHref, xlinkActuate } = rootChildren.periods[i].attributes;
89
81
  if (xlinkHref != null && xlinkActuate === "onLoad") {
90
82
  xlinksToLoad.push({ index: i, ressource: xlinkHref });
91
83
  }
@@ -96,35 +88,31 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
96
88
  return {
97
89
  type: "needs-xlinks",
98
90
  value: {
99
- xlinksUrls: xlinksToLoad.map(function (_a) {
100
- var ressource = _a.ressource;
101
- return ressource;
102
- }),
91
+ xlinksUrls: xlinksToLoad.map(({ ressource }) => ressource),
103
92
  continue: function continueParsingMPD(loadedRessources) {
104
- var _a;
105
93
  if (loadedRessources.length !== xlinksToLoad.length) {
106
94
  throw new Error("DASH parser: wrong number of loaded ressources.");
107
95
  }
108
96
  // Note: It is important to go from the last index to the first index in
109
97
  // the resulting array, as we will potentially add elements to the array
110
- for (var i = loadedRessources.length - 1; i >= 0; i--) {
111
- var index = xlinksToLoad[i].index;
112
- var _b = loadedRessources[i], periodsIR = _b.parsed, parsingWarnings = _b.warnings, receivedTime = _b.receivedTime, sendingTime = _b.sendingTime, url = _b.url;
98
+ for (let i = loadedRessources.length - 1; i >= 0; i--) {
99
+ const index = xlinksToLoad[i].index;
100
+ const { parsed: periodsIR, warnings: parsingWarnings, receivedTime, sendingTime, url } = loadedRessources[i];
113
101
  if (parsingWarnings.length > 0) {
114
- warnings.push.apply(warnings, parsingWarnings);
102
+ warnings.push(...parsingWarnings);
115
103
  }
116
- for (var _i = 0, periodsIR_1 = periodsIR; _i < periodsIR_1.length; _i++) {
117
- var periodIR = periodsIR_1[_i];
118
- xlinkInfos.set(periodIR, { receivedTime: receivedTime, sendingTime: sendingTime, url: url });
104
+ for (const periodIR of periodsIR) {
105
+ xlinkInfos.set(periodIR, { receivedTime, sendingTime, url });
119
106
  }
120
107
  // replace original "xlinked" periods by the real deal
121
- (_a = rootChildren.periods).splice.apply(_a, __spreadArray([index, 1], periodsIR, false));
108
+ rootChildren.periods.splice(index, 1, ...periodsIR);
122
109
  }
123
110
  return parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkInfos);
124
111
  },
125
112
  },
126
113
  };
127
114
  }
115
+ exports.default = parseMpdIr;
128
116
  /**
129
117
  * Parse the MPD intermediate representation into a regular Manifest.
130
118
  * @param {Object} mpdIR
@@ -135,39 +123,48 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
135
123
  */
136
124
  function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInfos) {
137
125
  var _a, _b, _c;
138
- var rootChildren = mpdIR.children, rootAttributes = mpdIR.attributes;
139
- var isDynamic = rootAttributes.type === "dynamic";
140
- var initialBaseUrl = args.url !== undefined ?
141
- [{ url: args.url.substring(0, getFilenameIndexInUrl(args.url)) }] :
126
+ const { children: rootChildren, attributes: rootAttributes } = mpdIR;
127
+ const isDynamic = rootAttributes.type === "dynamic";
128
+ const initialBaseUrl = args.url !== undefined ?
129
+ [{ url: args.url.substring(0, (0, resolve_url_1.getFilenameIndexInUrl)(args.url)) }] :
142
130
  [];
143
- var mpdBaseUrls = resolveBaseURLs(initialBaseUrl, rootChildren.baseURLs);
144
- var availabilityStartTime = parseAvailabilityStartTime(rootAttributes, args.referenceDateTime);
145
- var timeShiftBufferDepth = rootAttributes.timeShiftBufferDepth;
146
- var clockOffset = args.externalClockOffset, unsafelyBaseOnPreviousManifest = args.unsafelyBaseOnPreviousManifest;
147
- var manifestInfos = { availabilityStartTime: availabilityStartTime, baseURLs: mpdBaseUrls, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
148
- receivedTime: args.manifestReceivedTime, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousManifest: unsafelyBaseOnPreviousManifest, xlinkInfos: xlinkInfos, xmlNamespaces: mpdIR.attributes.namespaces };
149
- var parsedPeriods = parsePeriods(rootChildren.periods, manifestInfos);
150
- var mediaPresentationDuration = rootAttributes.duration;
151
- var lifetime;
152
- var minimumTime;
153
- var timeshiftDepth = null;
154
- var maximumTimeData;
131
+ const mpdBaseUrls = (0, resolve_base_urls_1.default)(initialBaseUrl, rootChildren.baseURLs);
132
+ const availabilityStartTime = (0, parse_availability_start_time_1.default)(rootAttributes, args.referenceDateTime);
133
+ const timeShiftBufferDepth = rootAttributes.timeShiftBufferDepth;
134
+ const { externalClockOffset: clockOffset, unsafelyBaseOnPreviousManifest } = args;
135
+ const manifestInfos = { availabilityStartTime,
136
+ baseURLs: mpdBaseUrls,
137
+ clockOffset,
138
+ duration: rootAttributes.duration,
139
+ isDynamic,
140
+ manifestProfiles: mpdIR.attributes.profiles,
141
+ receivedTime: args.manifestReceivedTime,
142
+ timeShiftBufferDepth,
143
+ unsafelyBaseOnPreviousManifest,
144
+ xlinkInfos,
145
+ xmlNamespaces: mpdIR.attributes.namespaces };
146
+ const parsedPeriods = (0, parse_periods_1.default)(rootChildren.periods, manifestInfos);
147
+ const mediaPresentationDuration = rootAttributes.duration;
148
+ let lifetime;
149
+ let minimumTime;
150
+ let timeshiftDepth = null;
151
+ let maximumTimeData;
155
152
  if (rootAttributes.minimumUpdatePeriod !== undefined &&
156
153
  rootAttributes.minimumUpdatePeriod >= 0) {
157
154
  lifetime = rootAttributes.minimumUpdatePeriod === 0 ?
158
- config.getCurrent().DASH_FALLBACK_LIFETIME_WHEN_MINIMUM_UPDATE_PERIOD_EQUAL_0 :
155
+ config_1.default.getCurrent().DASH_FALLBACK_LIFETIME_WHEN_MINIMUM_UPDATE_PERIOD_EQUAL_0 :
159
156
  rootAttributes.minimumUpdatePeriod;
160
157
  }
161
- var _d = getMinimumAndMaximumPositions(parsedPeriods), minimumSafePosition = _d.minimumSafePosition, maximumSafePosition = _d.maximumSafePosition, maximumUnsafePosition = _d.maximumUnsafePosition;
162
- var now = getMonotonicTimeStamp();
158
+ const { minimumSafePosition, maximumSafePosition, maximumUnsafePosition } = (0, get_minimum_and_maximum_positions_1.default)(parsedPeriods);
159
+ const now = (0, monotonic_timestamp_1.default)();
163
160
  if (!isDynamic) {
164
161
  minimumTime = minimumSafePosition !== undefined ? minimumSafePosition :
165
162
  ((_a = parsedPeriods[0]) === null || _a === void 0 ? void 0 : _a.start) !== undefined ? parsedPeriods[0].start :
166
163
  0;
167
- var finalMaximumSafePosition = mediaPresentationDuration !== null && mediaPresentationDuration !== void 0 ? mediaPresentationDuration : Infinity;
164
+ let finalMaximumSafePosition = mediaPresentationDuration !== null && mediaPresentationDuration !== void 0 ? mediaPresentationDuration : Infinity;
168
165
  if (parsedPeriods[parsedPeriods.length - 1] !== undefined) {
169
- var lastPeriod = parsedPeriods[parsedPeriods.length - 1];
170
- var lastPeriodEnd = (_b = lastPeriod.end) !== null && _b !== void 0 ? _b : (lastPeriod.duration !== undefined ?
166
+ const lastPeriod = parsedPeriods[parsedPeriods.length - 1];
167
+ const lastPeriodEnd = (_b = lastPeriod.end) !== null && _b !== void 0 ? _b : (lastPeriod.duration !== undefined ?
171
168
  lastPeriod.start + lastPeriod.duration :
172
169
  undefined);
173
170
  if (lastPeriodEnd !== undefined && lastPeriodEnd < finalMaximumSafePosition) {
@@ -186,8 +183,8 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
186
183
  else {
187
184
  minimumTime = minimumSafePosition;
188
185
  timeshiftDepth = timeShiftBufferDepth !== null && timeShiftBufferDepth !== void 0 ? timeShiftBufferDepth : null;
189
- var finalMaximumSafePosition = void 0;
190
- var livePosition = void 0;
186
+ let finalMaximumSafePosition;
187
+ let livePosition;
191
188
  if (maximumUnsafePosition !== undefined) {
192
189
  livePosition = maximumUnsafePosition;
193
190
  }
@@ -195,14 +192,14 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
195
192
  finalMaximumSafePosition = maximumSafePosition;
196
193
  }
197
194
  else {
198
- var ast = availabilityStartTime !== null && availabilityStartTime !== void 0 ? availabilityStartTime : 0;
199
- var externalClockOffset = args.externalClockOffset;
195
+ const ast = availabilityStartTime !== null && availabilityStartTime !== void 0 ? availabilityStartTime : 0;
196
+ const { externalClockOffset } = args;
200
197
  if (externalClockOffset === undefined) {
201
- log.warn("DASH Parser: use system clock to define maximum position");
198
+ log_1.default.warn("DASH Parser: use system clock to define maximum position");
202
199
  finalMaximumSafePosition = (Date.now() / 1000) - ast;
203
200
  }
204
201
  else {
205
- var serverTime = getMonotonicTimeStamp() + externalClockOffset;
202
+ const serverTime = (0, monotonic_timestamp_1.default)() + externalClockOffset;
206
203
  finalMaximumSafePosition = (serverTime / 1000) - ast;
207
204
  }
208
205
  }
@@ -210,7 +207,9 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
210
207
  livePosition = finalMaximumSafePosition;
211
208
  }
212
209
  maximumTimeData = { isLinear: true,
213
- maximumSafePosition: finalMaximumSafePosition, livePosition: livePosition, time: now };
210
+ maximumSafePosition: finalMaximumSafePosition,
211
+ livePosition,
212
+ time: now };
214
213
  // if the minimum calculated time is even below the buffer depth, perhaps we
215
214
  // can go even lower in terms of depth
216
215
  if (timeshiftDepth !== null && minimumTime !== undefined &&
@@ -225,24 +224,26 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
225
224
  // the `minimumUpdatePeriod` is not set. This corresponds to the case
226
225
  // explained in "4.6.4. Transition Phase between Live and On-Demand" of
227
226
  // the DASH-IF IOP v4.3 for live contents transitionning to on-demand.
228
- var isLastPeriodKnown = !isDynamic ||
227
+ const isLastPeriodKnown = !isDynamic ||
229
228
  (mpdIR.attributes.minimumUpdatePeriod === undefined &&
230
229
  (((_c = parsedPeriods[parsedPeriods.length - 1]) === null || _c === void 0 ? void 0 : _c.end) !== undefined ||
231
230
  mpdIR.attributes.duration !== undefined));
232
- var parsedMPD = {
233
- availabilityStartTime: availabilityStartTime,
231
+ const parsedMPD = {
232
+ availabilityStartTime,
234
233
  clockOffset: args.externalClockOffset,
235
- isDynamic: isDynamic,
234
+ isDynamic,
236
235
  isLive: isDynamic,
237
- isLastPeriodKnown: isLastPeriodKnown,
236
+ isLastPeriodKnown,
238
237
  periods: parsedPeriods,
239
238
  publishTime: rootAttributes.publishTime,
240
239
  suggestedPresentationDelay: rootAttributes.suggestedPresentationDelay,
241
240
  transportType: "dash",
242
- timeBounds: { minimumSafePosition: minimumTime, timeshiftDepth: timeshiftDepth, maximumTimeData: maximumTimeData },
243
- lifetime: lifetime,
241
+ timeBounds: { minimumSafePosition: minimumTime,
242
+ timeshiftDepth,
243
+ maximumTimeData },
244
+ lifetime,
244
245
  uris: args.url == null ?
245
- rootChildren.locations : __spreadArray([args.url], rootChildren.locations, true),
246
+ rootChildren.locations : [args.url, ...rootChildren.locations],
246
247
  };
247
- return { type: "done", value: { parsed: parsedMPD, warnings: warnings } };
248
+ return { type: "done", value: { parsed: parsedMPD, warnings } };
248
249
  }
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,75 +14,93 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import log from "../../../../log";
17
- import flatMap from "../../../../utils/flat_map";
18
- import idGenerator from "../../../../utils/id_generator";
19
- import getMonotonicTimeStamp from "../../../../utils/monotonic_timestamp";
20
- import objectValues from "../../../../utils/object_values";
21
- import { utf8ToStr } from "../../../../utils/string_parsing";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const log_1 = require("../../../../log");
19
+ const flat_map_1 = require("../../../../utils/flat_map");
20
+ const id_generator_1 = require("../../../../utils/id_generator");
21
+ const monotonic_timestamp_1 = require("../../../../utils/monotonic_timestamp");
22
+ const object_values_1 = require("../../../../utils/object_values");
23
+ const string_parsing_1 = require("../../../../utils/string_parsing");
22
24
  // eslint-disable-next-line max-len
23
- import flattenOverlappingPeriods from "./flatten_overlapping_periods";
24
- import getPeriodsTimeInformation from "./get_periods_time_infos";
25
- import ManifestBoundsCalculator from "./manifest_bounds_calculator";
26
- import parseAdaptationSets from "./parse_adaptation_sets";
27
- import resolveBaseURLs from "./resolve_base_urls";
28
- var generatePeriodID = idGenerator();
25
+ const flatten_overlapping_periods_1 = require("./flatten_overlapping_periods");
26
+ const get_periods_time_infos_1 = require("./get_periods_time_infos");
27
+ const manifest_bounds_calculator_1 = require("./manifest_bounds_calculator");
28
+ const parse_adaptation_sets_1 = require("./parse_adaptation_sets");
29
+ const resolve_base_urls_1 = require("./resolve_base_urls");
30
+ const generatePeriodID = (0, id_generator_1.default)();
29
31
  /**
30
32
  * Process intermediate periods to create final parsed periods.
31
33
  * @param {Array.<Object>} periodsIR
32
34
  * @param {Object} context
33
35
  * @returns {Array.<Object>}
34
36
  */
35
- export default function parsePeriods(periodsIR, context) {
37
+ function parsePeriods(periodsIR, context) {
36
38
  var _a, _b, _c, _d, _e, _f;
37
- var parsedPeriods = [];
38
- var periodsTimeInformation = getPeriodsTimeInformation(periodsIR, context);
39
+ const parsedPeriods = [];
40
+ const periodsTimeInformation = (0, get_periods_time_infos_1.default)(periodsIR, context);
39
41
  if (periodsTimeInformation.length !== periodsIR.length) {
40
42
  throw new Error("MPD parsing error: the time information are incoherent.");
41
43
  }
42
- var isDynamic = context.isDynamic, timeShiftBufferDepth = context.timeShiftBufferDepth;
43
- var manifestBoundsCalculator = new ManifestBoundsCalculator({ isDynamic: isDynamic, timeShiftBufferDepth: timeShiftBufferDepth });
44
+ const { isDynamic, timeShiftBufferDepth } = context;
45
+ const manifestBoundsCalculator = new manifest_bounds_calculator_1.default({ isDynamic,
46
+ timeShiftBufferDepth });
44
47
  if (!isDynamic && context.duration != null) {
45
48
  manifestBoundsCalculator.setLastPosition(context.duration);
46
49
  }
47
- var _loop_1 = function (i) {
48
- var isLastPeriod = i === periodsIR.length - 1;
49
- var periodIR = periodsIR[i];
50
- var xlinkInfos = context.xlinkInfos.get(periodIR);
51
- var periodBaseURLs = resolveBaseURLs(context.baseURLs, periodIR.children.baseURLs);
52
- var _g = periodsTimeInformation[i], periodStart = _g.periodStart, periodDuration = _g.periodDuration, periodEnd = _g.periodEnd;
53
- var periodID;
50
+ // We parse it in reverse because we might need to deduce the buffer depth from
51
+ // the last Periods' indexes
52
+ for (let i = periodsIR.length - 1; i >= 0; i--) {
53
+ const isLastPeriod = i === periodsIR.length - 1;
54
+ const periodIR = periodsIR[i];
55
+ const xlinkInfos = context.xlinkInfos.get(periodIR);
56
+ const periodBaseURLs = (0, resolve_base_urls_1.default)(context.baseURLs, periodIR.children.baseURLs);
57
+ const { periodStart, periodDuration, periodEnd } = periodsTimeInformation[i];
58
+ let periodID;
54
59
  if (periodIR.attributes.id == null) {
55
- log.warn("DASH: No usable id found in the Period. Generating one.");
60
+ log_1.default.warn("DASH: No usable id found in the Period. Generating one.");
56
61
  periodID = "gen-dash-period-" + generatePeriodID();
57
62
  }
58
63
  else {
59
64
  periodID = periodIR.attributes.id;
60
65
  }
61
66
  // Avoid duplicate IDs
62
- while (parsedPeriods.some(function (p) { return p.id === periodID; })) {
67
+ while (parsedPeriods.some(p => p.id === periodID)) {
63
68
  periodID += "-dup";
64
69
  }
65
- var receivedTime = xlinkInfos !== undefined ? xlinkInfos.receivedTime :
70
+ const receivedTime = xlinkInfos !== undefined ? xlinkInfos.receivedTime :
66
71
  context.receivedTime;
67
- var unsafelyBaseOnPreviousPeriod = (_b = (_a = context
72
+ const unsafelyBaseOnPreviousPeriod = (_b = (_a = context
68
73
  .unsafelyBaseOnPreviousManifest) === null || _a === void 0 ? void 0 : _a.getPeriod(periodID)) !== null && _b !== void 0 ? _b : null;
69
- var availabilityTimeComplete = (_c = periodIR.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : true;
70
- var availabilityTimeOffset = (_d = periodIR.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0;
71
- var manifestProfiles = context.manifestProfiles;
72
- var segmentTemplate = periodIR.children.segmentTemplate;
73
- var adapCtxt = { availabilityTimeComplete: availabilityTimeComplete, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, isLastPeriod: isLastPeriod, manifestProfiles: manifestProfiles, receivedTime: receivedTime, segmentTemplate: segmentTemplate, start: periodStart, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousPeriod: unsafelyBaseOnPreviousPeriod };
74
- var adaptations = parseAdaptationSets(periodIR.children.adaptations, adapCtxt);
75
- var namespaces = ((_e = context.xmlNamespaces) !== null && _e !== void 0 ? _e : [])
74
+ const availabilityTimeComplete = (_c = periodIR.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : true;
75
+ const availabilityTimeOffset = (_d = periodIR.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0;
76
+ const { manifestProfiles } = context;
77
+ const { segmentTemplate } = periodIR.children;
78
+ const adapCtxt = { availabilityTimeComplete,
79
+ availabilityTimeOffset,
80
+ baseURLs: periodBaseURLs,
81
+ manifestBoundsCalculator,
82
+ end: periodEnd,
83
+ isDynamic,
84
+ isLastPeriod,
85
+ manifestProfiles,
86
+ receivedTime,
87
+ segmentTemplate,
88
+ start: periodStart,
89
+ timeShiftBufferDepth,
90
+ unsafelyBaseOnPreviousPeriod };
91
+ const adaptations = (0, parse_adaptation_sets_1.default)(periodIR.children.adaptations, adapCtxt);
92
+ const namespaces = ((_e = context.xmlNamespaces) !== null && _e !== void 0 ? _e : [])
76
93
  .concat((_f = periodIR.attributes.namespaces) !== null && _f !== void 0 ? _f : []);
77
- var streamEvents = generateStreamEvents(periodIR.children.eventStreams, periodStart, namespaces);
78
- var parsedPeriod = { id: periodID,
94
+ const streamEvents = generateStreamEvents(periodIR.children.eventStreams, periodStart, namespaces);
95
+ const parsedPeriod = { id: periodID,
79
96
  start: periodStart,
80
97
  end: periodEnd,
81
- duration: periodDuration, adaptations: adaptations, streamEvents: streamEvents };
98
+ duration: periodDuration,
99
+ adaptations,
100
+ streamEvents };
82
101
  parsedPeriods.unshift(parsedPeriod);
83
102
  if (!manifestBoundsCalculator.lastPositionIsKnown()) {
84
- var lastPosition = getMaximumLastPosition(adaptations);
103
+ const lastPosition = getMaximumLastPosition(adaptations);
85
104
  if (!isDynamic) {
86
105
  if (typeof lastPosition === "number") {
87
106
  manifestBoundsCalculator.setLastPosition(lastPosition);
@@ -89,34 +108,30 @@ export default function parsePeriods(periodsIR, context) {
89
108
  }
90
109
  else {
91
110
  if (typeof lastPosition === "number") {
92
- var positionTime = getMonotonicTimeStamp() / 1000;
111
+ const positionTime = (0, monotonic_timestamp_1.default)() / 1000;
93
112
  manifestBoundsCalculator.setLastPosition(lastPosition, positionTime);
94
113
  }
95
114
  else {
96
- var guessedLastPositionFromClock = guessLastPositionFromClock(context, periodStart);
115
+ const guessedLastPositionFromClock = guessLastPositionFromClock(context, periodStart);
97
116
  if (guessedLastPositionFromClock !== undefined) {
98
- var guessedLastPosition = guessedLastPositionFromClock[0], guessedPositionTime = guessedLastPositionFromClock[1];
117
+ const [guessedLastPosition, guessedPositionTime] = guessedLastPositionFromClock;
99
118
  manifestBoundsCalculator.setLastPosition(guessedLastPosition, guessedPositionTime);
100
119
  }
101
120
  }
102
121
  }
103
122
  }
104
- };
105
- // We parse it in reverse because we might need to deduce the buffer depth from
106
- // the last Periods' indexes
107
- for (var i = periodsIR.length - 1; i >= 0; i--) {
108
- _loop_1(i);
109
123
  }
110
124
  if (context.isDynamic && !manifestBoundsCalculator.lastPositionIsKnown()) {
111
125
  // Guess a last time the last position
112
- var guessedLastPositionFromClock = guessLastPositionFromClock(context, 0);
126
+ const guessedLastPositionFromClock = guessLastPositionFromClock(context, 0);
113
127
  if (guessedLastPositionFromClock !== undefined) {
114
- var lastPosition = guessedLastPositionFromClock[0], positionTime = guessedLastPositionFromClock[1];
128
+ const [lastPosition, positionTime] = guessedLastPositionFromClock;
115
129
  manifestBoundsCalculator.setLastPosition(lastPosition, positionTime);
116
130
  }
117
131
  }
118
- return flattenOverlappingPeriods(parsedPeriods);
132
+ return (0, flatten_overlapping_periods_1.default)(parsedPeriods);
119
133
  }
134
+ exports.default = parsePeriods;
120
135
  /**
121
136
  * Try to guess the "last position", which is the last position
122
137
  * available in the manifest in seconds, and the "position time", the
@@ -147,21 +162,21 @@ export default function parsePeriods(periodsIR, context) {
147
162
  */
148
163
  function guessLastPositionFromClock(context, minimumTime) {
149
164
  if (context.clockOffset != null) {
150
- var lastPosition = context.clockOffset / 1000 -
165
+ const lastPosition = context.clockOffset / 1000 -
151
166
  context.availabilityStartTime;
152
- var positionTime = getMonotonicTimeStamp() / 1000;
153
- var timeInSec = positionTime + lastPosition;
167
+ const positionTime = (0, monotonic_timestamp_1.default)() / 1000;
168
+ const timeInSec = positionTime + lastPosition;
154
169
  if (timeInSec >= minimumTime) {
155
170
  return [timeInSec, positionTime];
156
171
  }
157
172
  }
158
173
  else {
159
- var now = Date.now() / 1000;
174
+ const now = Date.now() / 1000;
160
175
  if (now >= minimumTime) {
161
- log.warn("DASH Parser: no clock synchronization mechanism found." +
176
+ log_1.default.warn("DASH Parser: no clock synchronization mechanism found." +
162
177
  " Using the system clock instead.");
163
- var lastPosition = now - context.availabilityStartTime;
164
- var positionTime = getMonotonicTimeStamp() / 1000;
178
+ const lastPosition = now - context.availabilityStartTime;
179
+ const positionTime = (0, monotonic_timestamp_1.default)() / 1000;
165
180
  return [lastPosition, positionTime];
166
181
  }
167
182
  }
@@ -178,17 +193,15 @@ function guessLastPositionFromClock(context, minimumTime) {
178
193
  * @returns {number|null|undefined}
179
194
  */
180
195
  function getMaximumLastPosition(adaptationsPerType) {
181
- var maxEncounteredPosition = null;
182
- var allIndexAreEmpty = true;
183
- var adaptationsVal = objectValues(adaptationsPerType)
184
- .filter(function (ada) { return ada != null; });
185
- var allAdaptations = flatMap(adaptationsVal, function (adaptationsForType) { return adaptationsForType; });
186
- for (var _i = 0, allAdaptations_1 = allAdaptations; _i < allAdaptations_1.length; _i++) {
187
- var adaptation = allAdaptations_1[_i];
188
- var representations = adaptation.representations;
189
- for (var _a = 0, representations_1 = representations; _a < representations_1.length; _a++) {
190
- var representation = representations_1[_a];
191
- var position = representation.index.getLastAvailablePosition();
196
+ let maxEncounteredPosition = null;
197
+ let allIndexAreEmpty = true;
198
+ const adaptationsVal = (0, object_values_1.default)(adaptationsPerType)
199
+ .filter((ada) => ada != null);
200
+ const allAdaptations = (0, flat_map_1.default)(adaptationsVal, (adaptationsForType) => adaptationsForType);
201
+ for (const adaptation of allAdaptations) {
202
+ const representations = adaptation.representations;
203
+ for (const representation of representations) {
204
+ const position = representation.index.getLastAvailablePosition();
192
205
  if (position !== null) {
193
206
  allIndexAreEmpty = false;
194
207
  if (typeof position === "number") {
@@ -218,20 +231,18 @@ function getMaximumLastPosition(adaptationsPerType) {
218
231
  */
219
232
  function generateStreamEvents(baseIr, periodStart, xmlNamespaces) {
220
233
  var _a, _b;
221
- var res = [];
222
- for (var _i = 0, baseIr_1 = baseIr; _i < baseIr_1.length; _i++) {
223
- var eventStreamIr = baseIr_1[_i];
224
- var _c = eventStreamIr.attributes, _d = _c.schemeIdUri, schemeIdUri = _d === void 0 ? "" : _d, _e = _c.timescale, timescale = _e === void 0 ? 1 : _e;
225
- var allNamespaces = xmlNamespaces
234
+ const res = [];
235
+ for (const eventStreamIr of baseIr) {
236
+ const { schemeIdUri = "", timescale = 1 } = eventStreamIr.attributes;
237
+ const allNamespaces = xmlNamespaces
226
238
  .concat((_a = eventStreamIr.attributes.namespaces) !== null && _a !== void 0 ? _a : []);
227
- for (var _f = 0, _g = eventStreamIr.children.events; _f < _g.length; _f++) {
228
- var eventIr = _g[_f];
239
+ for (const eventIr of eventStreamIr.children.events) {
229
240
  if (eventIr.eventStreamData !== undefined) {
230
- var start = (((_b = eventIr.presentationTime) !== null && _b !== void 0 ? _b : 0) / timescale) + periodStart;
231
- var end = eventIr.duration === undefined ?
241
+ const start = (((_b = eventIr.presentationTime) !== null && _b !== void 0 ? _b : 0) / timescale) + periodStart;
242
+ const end = eventIr.duration === undefined ?
232
243
  undefined :
233
244
  start + (eventIr.duration / timescale);
234
- var element = void 0;
245
+ let element;
235
246
  if (eventIr.eventStreamData instanceof Element) {
236
247
  element = eventIr.eventStreamData;
237
248
  }
@@ -241,19 +252,23 @@ function generateStreamEvents(baseIr, periodStart, xmlNamespaces) {
241
252
  // This is needed because the DOMParser API might throw when
242
253
  // encountering unknown namespaced attributes or elements in the given
243
254
  // `<Event>` xml subset.
244
- var parentNode = allNamespaces.reduce(function (acc, ns) {
255
+ let parentNode = allNamespaces.reduce((acc, ns) => {
245
256
  return acc + "xmlns:" + ns.key + "=\"" + ns.value + "\" ";
246
257
  }, "<toremove ");
247
258
  parentNode += ">";
248
- var elementToString = utf8ToStr(new Uint8Array(eventIr.eventStreamData));
259
+ const elementToString = (0, string_parsing_1.utf8ToStr)(new Uint8Array(eventIr.eventStreamData));
249
260
  element = new DOMParser()
250
261
  .parseFromString(parentNode + elementToString + "</toremove>", "application/xml")
251
262
  .documentElement
252
263
  .childNodes[0]; // unwrap from the `<toremove>` element
253
264
  }
254
- res.push({ start: start, end: end, id: eventIr.id,
265
+ res.push({ start,
266
+ end,
267
+ id: eventIr.id,
255
268
  data: { type: "dash-event-stream",
256
- value: { schemeIdUri: schemeIdUri, timescale: timescale, element: element } } });
269
+ value: { schemeIdUri,
270
+ timescale,
271
+ element } } });
257
272
  }
258
273
  }
259
274
  }