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,84 +14,34 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- var __extends = (this && this.__extends) || (function () {
17
- var extendStatics = function (d, b) {
18
- extendStatics = Object.setPrototypeOf ||
19
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
21
- return extendStatics(d, b);
22
- };
23
- return function (d, b) {
24
- if (typeof b !== "function" && b !== null)
25
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
26
- extendStatics(d, b);
27
- function __() { this.constructor = d; }
28
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29
- };
30
- })();
31
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
32
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
- return new (P || (P = Promise))(function (resolve, reject) {
34
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
- step((generator = generator.apply(thisArg, _arguments || [])).next());
38
- });
39
- };
40
- var __generator = (this && this.__generator) || function (thisArg, body) {
41
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
42
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
43
- function verb(n) { return function (v) { return step([n, v]); }; }
44
- function step(op) {
45
- if (f) throw new TypeError("Generator is already executing.");
46
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
47
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
48
- if (y = 0, t) op = [op[0] & 2, t.value];
49
- switch (op[0]) {
50
- case 0: case 1: t = op; break;
51
- case 4: _.label++; return { value: op[1], done: false };
52
- case 5: _.label++; y = op[1]; op = [0]; continue;
53
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
54
- default:
55
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
56
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
57
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
58
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
59
- if (t[2]) _.ops.pop();
60
- _.trys.pop(); continue;
61
- }
62
- op = body.call(thisArg, _);
63
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
64
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
65
- }
66
- };
67
- import { shouldReloadMediaSourceOnDecipherabilityUpdate } from "../../compat";
68
- import config from "../../config";
69
- import { MediaError } from "../../errors";
70
- import log from "../../log";
71
- import assert from "../../utils/assert";
72
- import createCancellablePromise from "../../utils/create_cancellable_promise";
73
- import objectAssign from "../../utils/object_assign";
74
- import SharedReference from "../../utils/reference";
75
- import TaskCanceller from "../../utils/task_canceller";
76
- import AdaptiveRepresentationSelector from "../adaptive";
77
- import { getKeySystemConfiguration, } from "../decrypt";
78
- import { ManifestFetcher, SegmentFetcherCreator, } from "../fetchers";
79
- import SegmentBuffersStore from "../segment_buffers";
80
- import StreamOrchestrator from "../stream";
81
- import { ContentInitializer } from "./types";
82
- import ContentTimeBoundariesObserver from "./utils/content_time_boundaries_observer";
83
- import openMediaSource from "./utils/create_media_source";
84
- import createStreamPlaybackObserver from "./utils/create_stream_playback_observer";
85
- import { maintainEndOfStream } from "./utils/end_of_stream";
86
- import getInitialTime from "./utils/get_initial_time";
87
- import getLoadedReference from "./utils/get_loaded_reference";
88
- import performInitialSeekAndPlay from "./utils/initial_seek_and_play";
89
- import initializeContentDecryption from "./utils/initialize_content_decryption";
90
- import MediaSourceDurationUpdater from "./utils/media_source_duration_updater";
91
- import RebufferingController from "./utils/rebuffering_controller";
92
- import StreamEventsEmitter from "./utils/stream_events_emitter";
93
- import listenToMediaError from "./utils/throw_on_media_error";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const compat_1 = require("../../compat");
19
+ const config_1 = require("../../config");
20
+ const errors_1 = require("../../errors");
21
+ const log_1 = require("../../log");
22
+ const assert_1 = require("../../utils/assert");
23
+ const create_cancellable_promise_1 = require("../../utils/create_cancellable_promise");
24
+ const object_assign_1 = require("../../utils/object_assign");
25
+ const reference_1 = require("../../utils/reference");
26
+ const task_canceller_1 = require("../../utils/task_canceller");
27
+ const adaptive_1 = require("../adaptive");
28
+ const decrypt_1 = require("../decrypt");
29
+ const fetchers_1 = require("../fetchers");
30
+ const segment_buffers_1 = require("../segment_buffers");
31
+ const stream_1 = require("../stream");
32
+ const types_1 = require("./types");
33
+ const content_time_boundaries_observer_1 = require("./utils/content_time_boundaries_observer");
34
+ const create_media_source_1 = require("./utils/create_media_source");
35
+ const create_stream_playback_observer_1 = require("./utils/create_stream_playback_observer");
36
+ const end_of_stream_1 = require("./utils/end_of_stream");
37
+ const get_initial_time_1 = require("./utils/get_initial_time");
38
+ const get_loaded_reference_1 = require("./utils/get_loaded_reference");
39
+ const initial_seek_and_play_1 = require("./utils/initial_seek_and_play");
40
+ const initialize_content_decryption_1 = require("./utils/initialize_content_decryption");
41
+ const media_source_duration_updater_1 = require("./utils/media_source_duration_updater");
42
+ const rebuffering_controller_1 = require("./utils/rebuffering_controller");
43
+ const stream_events_emitter_1 = require("./utils/stream_events_emitter");
44
+ const throw_on_media_error_1 = require("./utils/throw_on_media_error");
94
45
  /**
95
46
  * Allows to load a new content thanks to the MediaSource Extensions (a.k.a. MSE)
96
47
  * Web APIs.
@@ -102,66 +53,60 @@ import listenToMediaError from "./utils/throw_on_media_error";
102
53
  *
103
54
  * @class MediaSourceContentInitializer
104
55
  */
105
- var MediaSourceContentInitializer = /** @class */ (function (_super) {
106
- __extends(MediaSourceContentInitializer, _super);
56
+ class MediaSourceContentInitializer extends types_1.ContentInitializer {
107
57
  /**
108
58
  * Create a new `MediaSourceContentInitializer`, associated to the given
109
59
  * settings.
110
60
  * @param {Object} settings
111
61
  */
112
- function MediaSourceContentInitializer(settings) {
113
- var _this = _super.call(this) || this;
114
- _this._settings = settings;
115
- _this._initCanceller = new TaskCanceller();
116
- _this._initialManifestProm = null;
117
- var urls = settings.url === undefined ? undefined :
62
+ constructor(settings) {
63
+ super();
64
+ this._settings = settings;
65
+ this._initCanceller = new task_canceller_1.default();
66
+ this._initialManifestProm = null;
67
+ const urls = settings.url === undefined ? undefined :
118
68
  [settings.url];
119
- _this._manifestFetcher = new ManifestFetcher(urls, settings.transport, settings.manifestRequestSettings);
120
- return _this;
69
+ this._manifestFetcher = new fetchers_1.ManifestFetcher(urls, settings.transport, settings.manifestRequestSettings);
121
70
  }
122
71
  /**
123
72
  * Perform non-destructive preparation steps, to prepare a future content.
124
73
  * For now, this mainly mean loading the Manifest document.
125
74
  */
126
- MediaSourceContentInitializer.prototype.prepare = function () {
127
- var _this = this;
75
+ prepare() {
128
76
  if (this._initialManifestProm !== null) {
129
77
  return;
130
78
  }
131
- this._initialManifestProm = createCancellablePromise(this._initCanceller.signal, function (res, rej) {
132
- _this._manifestFetcher.addEventListener("warning", function (err) {
133
- return _this.trigger("warning", err);
134
- });
135
- _this._manifestFetcher.addEventListener("error", function (err) {
136
- _this.trigger("error", err);
79
+ this._initialManifestProm = (0, create_cancellable_promise_1.default)(this._initCanceller.signal, (res, rej) => {
80
+ this._manifestFetcher.addEventListener("warning", (err) => this.trigger("warning", err));
81
+ this._manifestFetcher.addEventListener("error", (err) => {
82
+ this.trigger("error", err);
137
83
  rej(err);
138
84
  });
139
- _this._manifestFetcher.addEventListener("manifestReady", function (manifest) {
85
+ this._manifestFetcher.addEventListener("manifestReady", (manifest) => {
140
86
  res(manifest);
141
87
  });
142
88
  });
143
89
  this._manifestFetcher.start();
144
- this._initCanceller.signal.register(function () {
145
- _this._manifestFetcher.dispose();
90
+ this._initCanceller.signal.register(() => {
91
+ this._manifestFetcher.dispose();
146
92
  });
147
- };
93
+ }
148
94
  /**
149
95
  * @param {HTMLMediaElement} mediaElement
150
96
  * @param {Object} playbackObserver
151
97
  */
152
- MediaSourceContentInitializer.prototype.start = function (mediaElement, playbackObserver) {
153
- var _this = this;
98
+ start(mediaElement, playbackObserver) {
154
99
  this.prepare(); // Load Manifest if not already done
155
100
  /** Translate errors coming from the media element into RxPlayer errors. */
156
- listenToMediaError(mediaElement, function (error) { return _this._onFatalError(error); }, this._initCanceller.signal);
101
+ (0, throw_on_media_error_1.default)(mediaElement, (error) => this._onFatalError(error), this._initCanceller.signal);
157
102
  /** Send content protection initialization data to the decryption logic. */
158
- var protectionRef = new SharedReference(null, this._initCanceller.signal);
103
+ const protectionRef = new reference_1.default(null, this._initCanceller.signal);
159
104
  this._initializeMediaSourceAndDecryption(mediaElement, protectionRef)
160
- .then(function (initResult) { return _this._onInitialMediaSourceReady(mediaElement, initResult.mediaSource, playbackObserver, initResult.drmSystemId, protectionRef, initResult.unlinkMediaSource); })
161
- .catch(function (err) {
162
- _this._onFatalError(err);
105
+ .then(initResult => this._onInitialMediaSourceReady(mediaElement, initResult.mediaSource, playbackObserver, initResult.drmSystemId, protectionRef, initResult.unlinkMediaSource))
106
+ .catch((err) => {
107
+ this._onFatalError(err);
163
108
  });
164
- };
109
+ }
165
110
  /**
166
111
  * Update URL of the Manifest.
167
112
  * @param {Array.<string>|undefined} urls - URLs to reach that Manifest from
@@ -169,199 +114,200 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
169
114
  * @param {boolean} refreshNow - If `true` the resource in question (e.g.
170
115
  * DASH's MPD) will be refreshed immediately.
171
116
  */
172
- MediaSourceContentInitializer.prototype.updateContentUrls = function (urls, refreshNow) {
117
+ updateContentUrls(urls, refreshNow) {
173
118
  this._manifestFetcher.updateContentUrls(urls, refreshNow);
174
- };
175
- MediaSourceContentInitializer.prototype.dispose = function () {
119
+ }
120
+ dispose() {
176
121
  this._initCanceller.cancel();
177
- };
178
- MediaSourceContentInitializer.prototype._onFatalError = function (err) {
122
+ }
123
+ _onFatalError(err) {
179
124
  if (this._initCanceller.isUsed()) {
180
125
  return;
181
126
  }
182
127
  this._initCanceller.cancel();
183
128
  this.trigger("error", err);
184
- };
185
- MediaSourceContentInitializer.prototype._initializeMediaSourceAndDecryption = function (mediaElement, protectionRef) {
186
- var _this = this;
187
- var initCanceller = this._initCanceller;
188
- return createCancellablePromise(initCanceller.signal, function (resolve) {
189
- var keySystems = _this._settings.keySystems;
129
+ }
130
+ _initializeMediaSourceAndDecryption(mediaElement, protectionRef) {
131
+ const initCanceller = this._initCanceller;
132
+ return (0, create_cancellable_promise_1.default)(initCanceller.signal, (resolve) => {
133
+ const { keySystems } = this._settings;
190
134
  /** Initialize decryption capabilities. */
191
- var drmInitRef = initializeContentDecryption(mediaElement, keySystems, protectionRef, { onWarning: function (err) { return _this.trigger("warning", err); },
192
- onError: function (err) { return _this._onFatalError(err); } }, initCanceller.signal);
193
- drmInitRef.onUpdate(function (drmStatus, stopListeningToDrmUpdates) {
135
+ const drmInitRef = (0, initialize_content_decryption_1.default)(mediaElement, keySystems, protectionRef, { onWarning: (err) => this.trigger("warning", err),
136
+ onError: (err) => this._onFatalError(err) }, initCanceller.signal);
137
+ drmInitRef.onUpdate((drmStatus, stopListeningToDrmUpdates) => {
194
138
  if (drmStatus.initializationState.type === "uninitialized") {
195
139
  return;
196
140
  }
197
141
  stopListeningToDrmUpdates();
198
- var mediaSourceCanceller = new TaskCanceller();
142
+ const mediaSourceCanceller = new task_canceller_1.default();
199
143
  mediaSourceCanceller.linkToSignal(initCanceller.signal);
200
- openMediaSource(mediaElement, mediaSourceCanceller.signal)
201
- .then(function (mediaSource) {
202
- var lastDrmStatus = drmInitRef.getValue();
144
+ (0, create_media_source_1.default)(mediaElement, mediaSourceCanceller.signal)
145
+ .then((mediaSource) => {
146
+ const lastDrmStatus = drmInitRef.getValue();
203
147
  if (lastDrmStatus.initializationState.type === "awaiting-media-link") {
204
148
  lastDrmStatus.initializationState.value.isMediaLinked.setValue(true);
205
- drmInitRef.onUpdate(function (newDrmStatus, stopListeningToDrmUpdatesAgain) {
149
+ drmInitRef.onUpdate((newDrmStatus, stopListeningToDrmUpdatesAgain) => {
206
150
  if (newDrmStatus.initializationState.type === "initialized") {
207
151
  stopListeningToDrmUpdatesAgain();
208
- resolve({ mediaSource: mediaSource, drmSystemId: newDrmStatus.drmSystemId,
152
+ resolve({ mediaSource,
153
+ drmSystemId: newDrmStatus.drmSystemId,
209
154
  unlinkMediaSource: mediaSourceCanceller });
210
155
  return;
211
156
  }
212
157
  }, { emitCurrentValue: true, clearSignal: initCanceller.signal });
213
158
  }
214
159
  else if (drmStatus.initializationState.type === "initialized") {
215
- resolve({ mediaSource: mediaSource, drmSystemId: drmStatus.drmSystemId,
160
+ resolve({ mediaSource,
161
+ drmSystemId: drmStatus.drmSystemId,
216
162
  unlinkMediaSource: mediaSourceCanceller });
217
163
  return;
218
164
  }
219
165
  })
220
- .catch(function (err) {
166
+ .catch((err) => {
221
167
  if (mediaSourceCanceller.isUsed()) {
222
168
  return;
223
169
  }
224
- _this._onFatalError(err);
170
+ this._onFatalError(err);
225
171
  });
226
172
  }, { emitCurrentValue: true, clearSignal: initCanceller.signal });
227
173
  });
228
- };
229
- MediaSourceContentInitializer.prototype._onInitialMediaSourceReady = function (mediaElement, initialMediaSource, playbackObserver, drmSystemId, protectionRef, initialMediaSourceCanceller) {
230
- return __awaiter(this, void 0, void 0, function () {
231
- /**
232
- * Load the content defined by the Manifest in the mediaSource given at the
233
- * given position and playing status.
234
- * This function recursively re-call itself when a MediaSource reload is
235
- * wanted.
236
- * @param {MediaSource} mediaSource
237
- * @param {number} startingPos
238
- * @param {Object} currentCanceller
239
- * @param {boolean} shouldPlay
240
- */
241
- function recursivelyLoadOnMediaSource(mediaSource, startingPos, shouldPlay, currentCanceller) {
242
- var opts = { mediaElement: mediaElement, playbackObserver: playbackObserver, mediaSource: mediaSource, initialTime: startingPos,
243
- autoPlay: shouldPlay, manifest: manifest, representationEstimator: representationEstimator, segmentFetcherCreator: segmentFetcherCreator, speed: speed, protectionRef: protectionRef, bufferOptions: subBufferOptions };
244
- bufferOnMediaSource(opts, onReloadMediaSource, currentCanceller.signal);
245
- function onReloadMediaSource(reloadOrder) {
246
- currentCanceller.cancel();
247
- if (initCanceller.isUsed()) {
248
- return;
249
- }
250
- triggerEvent("reloadingMediaSource", reloadOrder);
251
- if (initCanceller.isUsed()) {
174
+ }
175
+ async _onInitialMediaSourceReady(mediaElement, initialMediaSource, playbackObserver, drmSystemId, protectionRef, initialMediaSourceCanceller) {
176
+ const { adaptiveOptions, autoPlay, bufferOptions, lowLatencyMode, segmentRequestOptions, speed, startAt, textTrackOptions, transport } = this._settings;
177
+ const initCanceller = this._initCanceller;
178
+ (0, assert_1.default)(this._initialManifestProm !== null);
179
+ const manifestProm = this._initialManifestProm;
180
+ let manifest;
181
+ try {
182
+ manifest = await manifestProm;
183
+ }
184
+ catch (_e) {
185
+ return; // The error should already have been processed through an event listener
186
+ }
187
+ manifest.addEventListener("manifestUpdate", () => {
188
+ this.trigger("manifestUpdate", null);
189
+ }, initCanceller.signal);
190
+ log_1.default.debug("Init: Calculating initial time");
191
+ const initialTime = (0, get_initial_time_1.default)(manifest, lowLatencyMode, startAt);
192
+ log_1.default.debug("Init: Initial time calculated:", initialTime);
193
+ /** Choose the right "Representation" for a given "Adaptation". */
194
+ const representationEstimator = (0, adaptive_1.default)(adaptiveOptions);
195
+ const subBufferOptions = (0, object_assign_1.default)({ textTrackOptions, drmSystemId }, bufferOptions);
196
+ const segmentFetcherCreator = new fetchers_1.SegmentFetcherCreator(transport, segmentRequestOptions, initCanceller.signal);
197
+ this.trigger("manifestReady", manifest);
198
+ if (initCanceller.isUsed()) {
199
+ return;
200
+ }
201
+ const bufferOnMediaSource = this._startBufferingOnMediaSource.bind(this);
202
+ const triggerEvent = this.trigger.bind(this);
203
+ const onFatalError = this._onFatalError.bind(this);
204
+ // handle initial load and reloads
205
+ recursivelyLoadOnMediaSource(initialMediaSource, initialTime, autoPlay, initialMediaSourceCanceller);
206
+ /**
207
+ * Load the content defined by the Manifest in the mediaSource given at the
208
+ * given position and playing status.
209
+ * This function recursively re-call itself when a MediaSource reload is
210
+ * wanted.
211
+ * @param {MediaSource} mediaSource
212
+ * @param {number} startingPos
213
+ * @param {Object} currentCanceller
214
+ * @param {boolean} shouldPlay
215
+ */
216
+ function recursivelyLoadOnMediaSource(mediaSource, startingPos, shouldPlay, currentCanceller) {
217
+ const opts = { mediaElement,
218
+ playbackObserver,
219
+ mediaSource,
220
+ initialTime: startingPos,
221
+ autoPlay: shouldPlay,
222
+ manifest,
223
+ representationEstimator,
224
+ segmentFetcherCreator,
225
+ speed,
226
+ protectionRef,
227
+ bufferOptions: subBufferOptions };
228
+ bufferOnMediaSource(opts, onReloadMediaSource, currentCanceller.signal);
229
+ function onReloadMediaSource(reloadOrder) {
230
+ currentCanceller.cancel();
231
+ if (initCanceller.isUsed()) {
232
+ return;
233
+ }
234
+ triggerEvent("reloadingMediaSource", reloadOrder);
235
+ if (initCanceller.isUsed()) {
236
+ return;
237
+ }
238
+ const newCanceller = new task_canceller_1.default();
239
+ newCanceller.linkToSignal(initCanceller.signal);
240
+ (0, create_media_source_1.default)(mediaElement, newCanceller.signal)
241
+ .then(newMediaSource => {
242
+ recursivelyLoadOnMediaSource(newMediaSource, reloadOrder.position, reloadOrder.autoPlay, newCanceller);
243
+ })
244
+ .catch((err) => {
245
+ if (newCanceller.isUsed()) {
252
246
  return;
253
247
  }
254
- var newCanceller = new TaskCanceller();
255
- newCanceller.linkToSignal(initCanceller.signal);
256
- openMediaSource(mediaElement, newCanceller.signal)
257
- .then(function (newMediaSource) {
258
- recursivelyLoadOnMediaSource(newMediaSource, reloadOrder.position, reloadOrder.autoPlay, newCanceller);
259
- })
260
- .catch(function (err) {
261
- if (newCanceller.isUsed()) {
262
- return;
263
- }
264
- onFatalError(err);
265
- });
266
- }
248
+ onFatalError(err);
249
+ });
267
250
  }
268
- var _a, adaptiveOptions, autoPlay, bufferOptions, lowLatencyMode, segmentRequestOptions, speed, startAt, textTrackOptions, transport, initCanceller, manifestProm, manifest, _e_1, initialTime, representationEstimator, subBufferOptions, segmentFetcherCreator, bufferOnMediaSource, triggerEvent, onFatalError;
269
- var _this = this;
270
- return __generator(this, function (_b) {
271
- switch (_b.label) {
272
- case 0:
273
- _a = this._settings, adaptiveOptions = _a.adaptiveOptions, autoPlay = _a.autoPlay, bufferOptions = _a.bufferOptions, lowLatencyMode = _a.lowLatencyMode, segmentRequestOptions = _a.segmentRequestOptions, speed = _a.speed, startAt = _a.startAt, textTrackOptions = _a.textTrackOptions, transport = _a.transport;
274
- initCanceller = this._initCanceller;
275
- assert(this._initialManifestProm !== null);
276
- manifestProm = this._initialManifestProm;
277
- _b.label = 1;
278
- case 1:
279
- _b.trys.push([1, 3, , 4]);
280
- return [4 /*yield*/, manifestProm];
281
- case 2:
282
- manifest = _b.sent();
283
- return [3 /*break*/, 4];
284
- case 3:
285
- _e_1 = _b.sent();
286
- return [2 /*return*/]; // The error should already have been processed through an event listener
287
- case 4:
288
- manifest.addEventListener("manifestUpdate", function () {
289
- _this.trigger("manifestUpdate", null);
290
- }, initCanceller.signal);
291
- log.debug("Init: Calculating initial time");
292
- initialTime = getInitialTime(manifest, lowLatencyMode, startAt);
293
- log.debug("Init: Initial time calculated:", initialTime);
294
- representationEstimator = AdaptiveRepresentationSelector(adaptiveOptions);
295
- subBufferOptions = objectAssign({ textTrackOptions: textTrackOptions, drmSystemId: drmSystemId }, bufferOptions);
296
- segmentFetcherCreator = new SegmentFetcherCreator(transport, segmentRequestOptions, initCanceller.signal);
297
- this.trigger("manifestReady", manifest);
298
- if (initCanceller.isUsed()) {
299
- return [2 /*return*/];
300
- }
301
- bufferOnMediaSource = this._startBufferingOnMediaSource.bind(this);
302
- triggerEvent = this.trigger.bind(this);
303
- onFatalError = this._onFatalError.bind(this);
304
- // handle initial load and reloads
305
- recursivelyLoadOnMediaSource(initialMediaSource, initialTime, autoPlay, initialMediaSourceCanceller);
306
- return [2 /*return*/];
307
- }
308
- });
309
- });
310
- };
251
+ }
252
+ }
311
253
  /**
312
254
  * Buffer the content on the given MediaSource.
313
255
  * @param {Object} args
314
256
  * @param {function} onReloadOrder
315
257
  * @param {Object} cancelSignal
316
258
  */
317
- MediaSourceContentInitializer.prototype._startBufferingOnMediaSource = function (args, onReloadOrder, cancelSignal) {
318
- var _this = this;
259
+ _startBufferingOnMediaSource(args, onReloadOrder, cancelSignal) {
319
260
  var _a;
320
- var autoPlay = args.autoPlay, bufferOptions = args.bufferOptions, initialTime = args.initialTime, manifest = args.manifest, mediaElement = args.mediaElement, mediaSource = args.mediaSource, playbackObserver = args.playbackObserver, protectionRef = args.protectionRef, representationEstimator = args.representationEstimator, segmentFetcherCreator = args.segmentFetcherCreator, speed = args.speed;
321
- var initialPeriod = (_a = manifest.getPeriodForTime(initialTime)) !== null && _a !== void 0 ? _a : manifest.getNextPeriod(initialTime);
261
+ const { autoPlay, bufferOptions, initialTime, manifest, mediaElement, mediaSource, playbackObserver, protectionRef, representationEstimator, segmentFetcherCreator, speed } = args;
262
+ const initialPeriod = (_a = manifest.getPeriodForTime(initialTime)) !== null && _a !== void 0 ? _a : manifest.getNextPeriod(initialTime);
322
263
  if (initialPeriod === undefined) {
323
- var error = new MediaError("MEDIA_STARTING_TIME_NOT_FOUND", "Wanted starting time not found in the Manifest.");
264
+ const error = new errors_1.MediaError("MEDIA_STARTING_TIME_NOT_FOUND", "Wanted starting time not found in the Manifest.");
324
265
  return this._onFatalError(error);
325
266
  }
326
267
  /** Interface to create media buffers. */
327
- var segmentBuffersStore = new SegmentBuffersStore(mediaElement, mediaSource);
328
- cancelSignal.register(function () {
268
+ const segmentBuffersStore = new segment_buffers_1.default(mediaElement, mediaSource);
269
+ cancelSignal.register(() => {
329
270
  segmentBuffersStore.disposeAll();
330
271
  });
331
- var _b = performInitialSeekAndPlay(mediaElement, playbackObserver, initialTime, autoPlay, function (err) { return _this.trigger("warning", err); }, cancelSignal), autoPlayResult = _b.autoPlayResult, initialPlayPerformed = _b.initialPlayPerformed, initialSeekPerformed = _b.initialSeekPerformed;
272
+ const { autoPlayResult, initialPlayPerformed, initialSeekPerformed } = (0, initial_seek_and_play_1.default)(mediaElement, playbackObserver, initialTime, autoPlay, (err) => this.trigger("warning", err), cancelSignal);
332
273
  if (cancelSignal.isCancelled()) {
333
274
  return;
334
275
  }
335
- initialPlayPerformed.onUpdate(function (isPerformed, stopListening) {
276
+ initialPlayPerformed.onUpdate((isPerformed, stopListening) => {
336
277
  if (isPerformed) {
337
278
  stopListening();
338
- var streamEventsEmitter_1 = new StreamEventsEmitter(manifest, mediaElement, playbackObserver);
339
- streamEventsEmitter_1.addEventListener("event", function (payload) {
340
- _this.trigger("streamEvent", payload);
279
+ const streamEventsEmitter = new stream_events_emitter_1.default(manifest, mediaElement, playbackObserver);
280
+ streamEventsEmitter.addEventListener("event", (payload) => {
281
+ this.trigger("streamEvent", payload);
341
282
  }, cancelSignal);
342
- streamEventsEmitter_1.addEventListener("eventSkip", function (payload) {
343
- _this.trigger("streamEventSkip", payload);
283
+ streamEventsEmitter.addEventListener("eventSkip", (payload) => {
284
+ this.trigger("streamEventSkip", payload);
344
285
  }, cancelSignal);
345
- streamEventsEmitter_1.start();
346
- cancelSignal.register(function () {
347
- streamEventsEmitter_1.stop();
286
+ streamEventsEmitter.start();
287
+ cancelSignal.register(() => {
288
+ streamEventsEmitter.stop();
348
289
  });
349
290
  }
350
291
  }, { clearSignal: cancelSignal, emitCurrentValue: true });
351
- var streamObserver = createStreamPlaybackObserver(playbackObserver, { autoPlay: autoPlay, manifest: manifest, initialPlayPerformed: initialPlayPerformed, initialSeekPerformed: initialSeekPerformed, speed: speed, startTime: initialTime }, cancelSignal);
352
- var rebufferingController = this._createRebufferingController(playbackObserver, manifest, segmentBuffersStore, speed, cancelSignal);
353
- rebufferingController.addEventListener("needsReload", function () {
292
+ const streamObserver = (0, create_stream_playback_observer_1.default)(playbackObserver, { autoPlay,
293
+ manifest,
294
+ initialPlayPerformed,
295
+ initialSeekPerformed,
296
+ speed,
297
+ startTime: initialTime }, cancelSignal);
298
+ const rebufferingController = this._createRebufferingController(playbackObserver, manifest, segmentBuffersStore, speed, cancelSignal);
299
+ rebufferingController.addEventListener("needsReload", () => {
354
300
  // NOTE couldn't both be always calculated at event destination?
355
301
  // Maybe there are exceptions?
356
- var position = initialSeekPerformed.getValue() ?
302
+ const position = initialSeekPerformed.getValue() ?
357
303
  playbackObserver.getCurrentTime() :
358
304
  initialTime;
359
- var autoplay = initialPlayPerformed.getValue() ?
305
+ const autoplay = initialPlayPerformed.getValue() ?
360
306
  !playbackObserver.getIsPaused() :
361
307
  autoPlay;
362
- onReloadOrder({ position: position, autoPlay: autoplay });
308
+ onReloadOrder({ position, autoPlay: autoplay });
363
309
  }, cancelSignal);
364
- var contentTimeBoundariesObserver = this
310
+ const contentTimeBoundariesObserver = this
365
311
  ._createContentTimeBoundariesObserver(manifest, mediaSource, streamObserver, segmentBuffersStore, cancelSignal);
366
312
  /**
367
313
  * Emit a "loaded" events once the initial play has been performed and the
@@ -369,24 +315,24 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
369
315
  * Also emits warning events if issues arise when doing so.
370
316
  */
371
317
  autoPlayResult
372
- .then(function () {
373
- getLoadedReference(playbackObserver, mediaElement, false, cancelSignal)
374
- .onUpdate(function (isLoaded, stopListening) {
318
+ .then(() => {
319
+ (0, get_loaded_reference_1.default)(playbackObserver, mediaElement, false, cancelSignal)
320
+ .onUpdate((isLoaded, stopListening) => {
375
321
  if (isLoaded) {
376
322
  stopListening();
377
- _this.trigger("loaded", { segmentBuffersStore: segmentBuffersStore });
323
+ this.trigger("loaded", { segmentBuffersStore });
378
324
  }
379
325
  }, { emitCurrentValue: true, clearSignal: cancelSignal });
380
326
  })
381
- .catch(function (err) {
327
+ .catch((err) => {
382
328
  if (cancelSignal.isCancelled()) {
383
329
  return; // Current loading cancelled, no need to trigger the error
384
330
  }
385
- _this._onFatalError(err);
331
+ this._onFatalError(err);
386
332
  });
387
333
  /* eslint-disable-next-line @typescript-eslint/no-this-alias */
388
- var self = this;
389
- StreamOrchestrator({ manifest: manifest, initialPeriod: initialPeriod }, streamObserver, representationEstimator, segmentBuffersStore, segmentFetcherCreator, bufferOptions, handleStreamOrchestratorCallbacks(), cancelSignal);
334
+ const self = this;
335
+ (0, stream_1.default)({ manifest, initialPeriod }, streamObserver, representationEstimator, segmentBuffersStore, segmentFetcherCreator, bufferOptions, handleStreamOrchestratorCallbacks(), cancelSignal);
390
336
  /**
391
337
  * Returns Object handling the callbacks from a `StreamOrchestrator`, which
392
338
  * are basically how it communicates about events.
@@ -394,8 +340,8 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
394
340
  */
395
341
  function handleStreamOrchestratorCallbacks() {
396
342
  return {
397
- needsBufferFlush: function () {
398
- var seekedTime = mediaElement.currentTime + 0.001;
343
+ needsBufferFlush: () => {
344
+ const seekedTime = mediaElement.currentTime + 0.001;
399
345
  playbackObserver.setCurrentTime(seekedTime);
400
346
  // Seek again once data begins to be buffered.
401
347
  // This is sadly necessary on some browsers to avoid decoding
@@ -411,7 +357,7 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
411
357
  // `needsBufferFlush` once MSE media removal operations have been
412
358
  // explicitely validated by the browser, but that's a complex and easy
413
359
  // to break system.
414
- playbackObserver.listen(function (obs, stopListening) {
360
+ playbackObserver.listen((obs, stopListening) => {
415
361
  if (
416
362
  // Data is buffered around the current position
417
363
  obs.currentRange !== null ||
@@ -422,14 +368,14 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
422
368
  }
423
369
  }, { includeLastObservation: false, clearSignal: cancelSignal });
424
370
  },
425
- streamStatusUpdate: function (value) {
371
+ streamStatusUpdate(value) {
426
372
  // Announce discontinuities if found
427
- var period = value.period, bufferType = value.bufferType, imminentDiscontinuity = value.imminentDiscontinuity, position = value.position;
373
+ const { period, bufferType, imminentDiscontinuity, position } = value;
428
374
  rebufferingController.updateDiscontinuityInfo({
429
- period: period,
430
- bufferType: bufferType,
375
+ period,
376
+ bufferType,
431
377
  discontinuity: imminentDiscontinuity,
432
- position: position,
378
+ position,
433
379
  });
434
380
  if (cancelSignal.isCancelled()) {
435
381
  return; // Previous call has stopped streams due to a side-effect
@@ -439,7 +385,7 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
439
385
  // ContentTimeBoundariesObserver.
440
386
  if (manifest.isLastPeriodKnown &&
441
387
  value.period.id === manifest.periods[manifest.periods.length - 1].id) {
442
- var hasFinishedLoadingLastPeriod = value.hasFinishedLoading ||
388
+ const hasFinishedLoadingLastPeriod = value.hasFinishedLoading ||
443
389
  value.isEmptyStream;
444
390
  if (hasFinishedLoadingLastPeriod) {
445
391
  contentTimeBoundariesObserver
@@ -451,74 +397,70 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
451
397
  }
452
398
  }
453
399
  },
454
- needsManifestRefresh: function () { return self._manifestFetcher.scheduleManualRefresh({
400
+ needsManifestRefresh: () => self._manifestFetcher.scheduleManualRefresh({
455
401
  enablePartialRefresh: true,
456
402
  canUseUnsafeMode: true,
457
- }); },
458
- manifestMightBeOufOfSync: function () {
459
- var OUT_OF_SYNC_MANIFEST_REFRESH_DELAY = config.getCurrent().OUT_OF_SYNC_MANIFEST_REFRESH_DELAY;
403
+ }),
404
+ manifestMightBeOufOfSync: () => {
405
+ const { OUT_OF_SYNC_MANIFEST_REFRESH_DELAY } = config_1.default.getCurrent();
460
406
  self._manifestFetcher.scheduleManualRefresh({
461
407
  enablePartialRefresh: false,
462
408
  canUseUnsafeMode: false,
463
409
  delay: OUT_OF_SYNC_MANIFEST_REFRESH_DELAY,
464
410
  });
465
411
  },
466
- lockedStream: function (value) {
467
- return rebufferingController.onLockedStream(value.bufferType, value.period);
468
- },
469
- adaptationChange: function (value) {
412
+ lockedStream: (value) => rebufferingController.onLockedStream(value.bufferType, value.period),
413
+ adaptationChange: (value) => {
470
414
  self.trigger("adaptationChange", value);
471
415
  if (cancelSignal.isCancelled()) {
472
416
  return; // Previous call has stopped streams due to a side-effect
473
417
  }
474
418
  contentTimeBoundariesObserver.onAdaptationChange(value.type, value.period, value.adaptation);
475
419
  },
476
- representationChange: function (value) {
420
+ representationChange: (value) => {
477
421
  self.trigger("representationChange", value);
478
422
  if (cancelSignal.isCancelled()) {
479
423
  return; // Previous call has stopped streams due to a side-effect
480
424
  }
481
425
  contentTimeBoundariesObserver.onRepresentationChange(value.type, value.period);
482
426
  },
483
- inbandEvent: function (value) { return self.trigger("inbandEvents", value); },
484
- warning: function (value) { return self.trigger("warning", value); },
485
- periodStreamReady: function (value) { return self.trigger("periodStreamReady", value); },
486
- periodStreamCleared: function (value) {
427
+ inbandEvent: (value) => self.trigger("inbandEvents", value),
428
+ warning: (value) => self.trigger("warning", value),
429
+ periodStreamReady: (value) => self.trigger("periodStreamReady", value),
430
+ periodStreamCleared: (value) => {
487
431
  contentTimeBoundariesObserver.onPeriodCleared(value.type, value.period);
488
432
  if (cancelSignal.isCancelled()) {
489
433
  return; // Previous call has stopped streams due to a side-effect
490
434
  }
491
435
  self.trigger("periodStreamCleared", value);
492
436
  },
493
- bitrateEstimateChange: function (value) {
494
- return self.trigger("bitrateEstimateChange", value);
495
- },
496
- needsMediaSourceReload: function (payload) {
437
+ bitrateEstimateChange: (value) => self.trigger("bitrateEstimateChange", value),
438
+ needsMediaSourceReload: (payload) => {
497
439
  var _a, _b;
498
- var lastObservation = streamObserver.getReference().getValue();
499
- var currentPosition = (_a = lastObservation.position.pending) !== null && _a !== void 0 ? _a : streamObserver.getCurrentTime();
500
- var isPaused = (_b = lastObservation.paused.pending) !== null && _b !== void 0 ? _b : streamObserver.getIsPaused();
501
- var position = currentPosition + payload.timeOffset;
440
+ const lastObservation = streamObserver.getReference().getValue();
441
+ const currentPosition = (_a = lastObservation.position.pending) !== null && _a !== void 0 ? _a : streamObserver.getCurrentTime();
442
+ const isPaused = (_b = lastObservation.paused.pending) !== null && _b !== void 0 ? _b : streamObserver.getIsPaused();
443
+ let position = currentPosition + payload.timeOffset;
502
444
  if (payload.minimumPosition !== undefined) {
503
445
  position = Math.max(payload.minimumPosition, position);
504
446
  }
505
447
  if (payload.maximumPosition !== undefined) {
506
448
  position = Math.min(payload.maximumPosition, position);
507
449
  }
508
- onReloadOrder({ position: position, autoPlay: !isPaused });
450
+ onReloadOrder({ position, autoPlay: !isPaused });
509
451
  },
510
- needsDecipherabilityFlush: function () {
452
+ needsDecipherabilityFlush() {
511
453
  var _a, _b, _c;
512
- var keySystem = getKeySystemConfiguration(mediaElement);
513
- if (shouldReloadMediaSourceOnDecipherabilityUpdate(keySystem === null || keySystem === void 0 ? void 0 : keySystem[0])) {
514
- var lastObservation = streamObserver.getReference().getValue();
515
- var position = (_a = lastObservation.position.pending) !== null && _a !== void 0 ? _a : streamObserver.getCurrentTime();
516
- var isPaused = (_b = lastObservation.paused.pending) !== null && _b !== void 0 ? _b : streamObserver.getIsPaused();
517
- onReloadOrder({ position: position, autoPlay: !isPaused });
454
+ const keySystem = (0, decrypt_1.getKeySystemConfiguration)(mediaElement);
455
+ if ((0, compat_1.shouldReloadMediaSourceOnDecipherabilityUpdate)(keySystem === null || keySystem === void 0 ? void 0 : keySystem[0])) {
456
+ const lastObservation = streamObserver.getReference().getValue();
457
+ const position = (_a = lastObservation.position.pending) !== null && _a !== void 0 ? _a : streamObserver.getCurrentTime();
458
+ const isPaused = (_b = lastObservation.paused.pending) !== null && _b !== void 0 ? _b : streamObserver.getIsPaused();
459
+ onReloadOrder({ position, autoPlay: !isPaused });
518
460
  }
519
461
  else {
520
- var lastObservation = streamObserver.getReference().getValue();
521
- var position = (_c = lastObservation.position.pending) !== null && _c !== void 0 ? _c : streamObserver.getCurrentTime();
462
+ const lastObservation = streamObserver.getReference().getValue();
463
+ const position = (_c = lastObservation.position.pending) !== null && _c !== void 0 ? _c : streamObserver.getCurrentTime();
522
464
  // simple seek close to the current position
523
465
  // to flush the buffers
524
466
  if (position + 0.001 < lastObservation.duration) {
@@ -529,19 +471,18 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
529
471
  }
530
472
  }
531
473
  },
532
- encryptionDataEncountered: function (value) {
533
- for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
534
- var protectionData = value_1[_i];
474
+ encryptionDataEncountered: (value) => {
475
+ for (const protectionData of value) {
535
476
  protectionRef.setValue(protectionData);
536
477
  if (cancelSignal.isCancelled()) {
537
478
  return; // Previous call has stopped streams due to a side-effect
538
479
  }
539
480
  }
540
481
  },
541
- error: function (err) { return self._onFatalError(err); },
482
+ error: (err) => self._onFatalError(err),
542
483
  };
543
484
  }
544
- };
485
+ }
545
486
  /**
546
487
  * Creates a `ContentTimeBoundariesObserver`, a class indicating various
547
488
  * events related to media time (such as duration updates, period changes,
@@ -557,47 +498,44 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
557
498
  * @param {Object} cancelSignal
558
499
  * @returns {Object}
559
500
  */
560
- MediaSourceContentInitializer.prototype._createContentTimeBoundariesObserver = function (manifest, mediaSource, streamObserver, segmentBuffersStore, cancelSignal) {
561
- var _this = this;
501
+ _createContentTimeBoundariesObserver(manifest, mediaSource, streamObserver, segmentBuffersStore, cancelSignal) {
562
502
  /** Maintains the MediaSource's duration up-to-date with the Manifest */
563
- var mediaSourceDurationUpdater = new MediaSourceDurationUpdater(mediaSource);
564
- cancelSignal.register(function () {
503
+ const mediaSourceDurationUpdater = new media_source_duration_updater_1.default(mediaSource);
504
+ cancelSignal.register(() => {
565
505
  mediaSourceDurationUpdater.stopUpdating();
566
506
  });
567
507
  /** Allows to cancel a pending `end-of-stream` operation. */
568
- var endOfStreamCanceller = null;
569
- var contentTimeBoundariesObserver = new ContentTimeBoundariesObserver(manifest, streamObserver, segmentBuffersStore.getBufferTypes());
570
- cancelSignal.register(function () {
508
+ let endOfStreamCanceller = null;
509
+ const contentTimeBoundariesObserver = new content_time_boundaries_observer_1.default(manifest, streamObserver, segmentBuffersStore.getBufferTypes());
510
+ cancelSignal.register(() => {
571
511
  contentTimeBoundariesObserver.dispose();
572
512
  });
573
- contentTimeBoundariesObserver.addEventListener("warning", function (err) {
574
- return _this.trigger("warning", err);
575
- });
576
- contentTimeBoundariesObserver.addEventListener("periodChange", function (period) {
577
- _this.trigger("activePeriodChanged", { period: period });
513
+ contentTimeBoundariesObserver.addEventListener("warning", (err) => this.trigger("warning", err));
514
+ contentTimeBoundariesObserver.addEventListener("periodChange", (period) => {
515
+ this.trigger("activePeriodChanged", { period });
578
516
  });
579
- contentTimeBoundariesObserver.addEventListener("durationUpdate", function (newDuration) {
517
+ contentTimeBoundariesObserver.addEventListener("durationUpdate", (newDuration) => {
580
518
  mediaSourceDurationUpdater.updateDuration(newDuration.duration, newDuration.isEnd);
581
519
  });
582
- contentTimeBoundariesObserver.addEventListener("endOfStream", function () {
520
+ contentTimeBoundariesObserver.addEventListener("endOfStream", () => {
583
521
  if (endOfStreamCanceller === null) {
584
- endOfStreamCanceller = new TaskCanceller();
522
+ endOfStreamCanceller = new task_canceller_1.default();
585
523
  endOfStreamCanceller.linkToSignal(cancelSignal);
586
- log.debug("Init: end-of-stream order received.");
587
- maintainEndOfStream(mediaSource, endOfStreamCanceller.signal);
524
+ log_1.default.debug("Init: end-of-stream order received.");
525
+ (0, end_of_stream_1.maintainEndOfStream)(mediaSource, endOfStreamCanceller.signal);
588
526
  }
589
527
  });
590
- contentTimeBoundariesObserver.addEventListener("resumeStream", function () {
528
+ contentTimeBoundariesObserver.addEventListener("resumeStream", () => {
591
529
  if (endOfStreamCanceller !== null) {
592
- log.debug("Init: resume-stream order received.");
530
+ log_1.default.debug("Init: resume-stream order received.");
593
531
  endOfStreamCanceller.cancel();
594
532
  endOfStreamCanceller = null;
595
533
  }
596
534
  });
597
- var currentDuration = contentTimeBoundariesObserver.getCurrentDuration();
535
+ const currentDuration = contentTimeBoundariesObserver.getCurrentDuration();
598
536
  mediaSourceDurationUpdater.updateDuration(currentDuration.duration, currentDuration.isEnd);
599
537
  return contentTimeBoundariesObserver;
600
- };
538
+ }
601
539
  /**
602
540
  * Creates a `RebufferingController`, a class trying to avoid various stalling
603
541
  * situations (such as rebuffering periods), and returns it.
@@ -616,17 +554,15 @@ var MediaSourceContentInitializer = /** @class */ (function (_super) {
616
554
  * @param {Object} cancelSignal
617
555
  * @returns {Object}
618
556
  */
619
- MediaSourceContentInitializer.prototype._createRebufferingController = function (playbackObserver, manifest, segmentBuffersStore, speed, cancelSignal) {
620
- var _this = this;
621
- var rebufferingController = new RebufferingController(playbackObserver, manifest, segmentBuffersStore, speed);
557
+ _createRebufferingController(playbackObserver, manifest, segmentBuffersStore, speed, cancelSignal) {
558
+ const rebufferingController = new rebuffering_controller_1.default(playbackObserver, manifest, segmentBuffersStore, speed);
622
559
  // Bubble-up events
623
- rebufferingController.addEventListener("stalled", function (evt) { return _this.trigger("stalled", evt); });
624
- rebufferingController.addEventListener("unstalled", function () { return _this.trigger("unstalled", null); });
625
- rebufferingController.addEventListener("warning", function (err) { return _this.trigger("warning", err); });
626
- cancelSignal.register(function () { return rebufferingController.destroy(); });
560
+ rebufferingController.addEventListener("stalled", (evt) => this.trigger("stalled", evt));
561
+ rebufferingController.addEventListener("unstalled", () => this.trigger("unstalled", null));
562
+ rebufferingController.addEventListener("warning", (err) => this.trigger("warning", err));
563
+ cancelSignal.register(() => rebufferingController.destroy());
627
564
  rebufferingController.start();
628
565
  return rebufferingController;
629
- };
630
- return MediaSourceContentInitializer;
631
- }(ContentInitializer));
632
- export default MediaSourceContentInitializer;
566
+ }
567
+ }
568
+ exports.default = MediaSourceContentInitializer;