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,11 +14,14 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import config from "../../config";
17
- import log from "../../log";
18
- import arrayFind from "../../utils/array_find";
19
- import getMonotonicTimeStamp from "../../utils/monotonic_timestamp";
20
- import EWMA from "./utils/ewma";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.estimateRequestBandwidth = void 0;
19
+ const config_1 = require("../../config");
20
+ const log_1 = require("../../log");
21
+ const array_find_1 = require("../../utils/array_find");
22
+ const is_null_or_undefined_1 = require("../../utils/is_null_or_undefined");
23
+ const monotonic_timestamp_1 = require("../../utils/monotonic_timestamp");
24
+ const ewma_1 = require("./utils/ewma");
21
25
  /**
22
26
  * Get pending segment request(s) starting with the asked segment position.
23
27
  * @param {Object} requests - Every requests pending, in a chronological
@@ -27,13 +31,13 @@ import EWMA from "./utils/ewma";
27
31
  */
28
32
  function getConcernedRequests(requests, neededPosition) {
29
33
  /** Index of the request for the next needed segment, in `requests`. */
30
- var nextSegmentIndex = -1;
31
- for (var i = 0; i < requests.length; i++) {
32
- var segment = requests[i].content.segment;
34
+ let nextSegmentIndex = -1;
35
+ for (let i = 0; i < requests.length; i++) {
36
+ const { segment } = requests[i].content;
33
37
  if (segment.duration <= 0) {
34
38
  continue;
35
39
  }
36
- var segmentEnd = segment.time + segment.duration;
40
+ const segmentEnd = segment.time + segment.duration;
37
41
  if (!segment.complete) {
38
42
  if (i === requests.length - 1 && neededPosition - segment.time > -1.2) {
39
43
  nextSegmentIndex = i;
@@ -48,11 +52,11 @@ function getConcernedRequests(requests, neededPosition) {
48
52
  if (nextSegmentIndex < 0) { // Not found
49
53
  return [];
50
54
  }
51
- var nextRequest = requests[nextSegmentIndex];
52
- var segmentTime = nextRequest.content.segment.time;
53
- var filteredRequests = [nextRequest];
55
+ const nextRequest = requests[nextSegmentIndex];
56
+ const segmentTime = nextRequest.content.segment.time;
57
+ const filteredRequests = [nextRequest];
54
58
  // Get the possibly multiple requests for that segment's position
55
- for (var i = nextSegmentIndex + 1; i < requests.length; i++) {
59
+ for (let i = nextSegmentIndex + 1; i < requests.length; i++) {
56
60
  if (requests[i].content.segment.time === segmentTime) {
57
61
  filteredRequests.push(requests[i]);
58
62
  }
@@ -69,23 +73,24 @@ function getConcernedRequests(requests, neededPosition) {
69
73
  * @param {Object} request
70
74
  * @returns {number|undefined}
71
75
  */
72
- export function estimateRequestBandwidth(request) {
76
+ function estimateRequestBandwidth(request) {
73
77
  if (request.progress.length < 5) { // threshold from which we can consider
74
78
  // progress events reliably
75
79
  return undefined;
76
80
  }
77
81
  // try to infer quickly the current bitrate based on the
78
82
  // progress events
79
- var ewma1 = new EWMA(2);
80
- var progress = request.progress;
81
- for (var i = 1; i < progress.length; i++) {
82
- var bytesDownloaded = progress[i].size - progress[i - 1].size;
83
- var timeElapsed = progress[i].timestamp - progress[i - 1].timestamp;
84
- var reqBitrate = (bytesDownloaded * 8) / (timeElapsed / 1000);
83
+ const ewma1 = new ewma_1.default(2);
84
+ const { progress } = request;
85
+ for (let i = 1; i < progress.length; i++) {
86
+ const bytesDownloaded = progress[i].size - progress[i - 1].size;
87
+ const timeElapsed = progress[i].timestamp - progress[i - 1].timestamp;
88
+ const reqBitrate = (bytesDownloaded * 8) / (timeElapsed / 1000);
85
89
  ewma1.addSample(timeElapsed / 1000, reqBitrate);
86
90
  }
87
91
  return ewma1.getEstimate();
88
92
  }
93
+ exports.estimateRequestBandwidth = estimateRequestBandwidth;
89
94
  /**
90
95
  * Estimate remaining time for a pending request from a progress event.
91
96
  * @param {Object} lastProgressEvent
@@ -93,7 +98,7 @@ export function estimateRequestBandwidth(request) {
93
98
  * @returns {number}
94
99
  */
95
100
  function estimateRemainingTime(lastProgressEvent, bandwidthEstimate) {
96
- var remainingData = (lastProgressEvent.totalSize - lastProgressEvent.size) * 8;
101
+ const remainingData = (lastProgressEvent.totalSize - lastProgressEvent.size) * 8;
97
102
  return Math.max(remainingData / bandwidthEstimate, 0);
98
103
  }
99
104
  /**
@@ -116,34 +121,34 @@ function estimateStarvationModeBitrate(pendingRequests, playbackInfo, currentRep
116
121
  // TODO Skip only for newer segments?
117
122
  return undefined;
118
123
  }
119
- var bufferGap = playbackInfo.bufferGap, speed = playbackInfo.speed, position = playbackInfo.position;
120
- var realBufferGap = isFinite(bufferGap) ? bufferGap :
124
+ const { bufferGap, speed, position } = playbackInfo;
125
+ const realBufferGap = isFinite(bufferGap) ? bufferGap :
121
126
  0;
122
- var nextNeededPosition = position.last + realBufferGap;
123
- var concernedRequests = getConcernedRequests(pendingRequests, nextNeededPosition);
127
+ const nextNeededPosition = position.last + realBufferGap;
128
+ const concernedRequests = getConcernedRequests(pendingRequests, nextNeededPosition);
124
129
  if (concernedRequests.length !== 1) { // 0 == no request
125
130
  // 2+ == too complicated to calculate
126
131
  return undefined;
127
132
  }
128
- var concernedRequest = concernedRequests[0];
129
- var now = getMonotonicTimeStamp();
130
- var minimumRequestTime = concernedRequest.content.segment.duration * 1.5;
133
+ const concernedRequest = concernedRequests[0];
134
+ const now = (0, monotonic_timestamp_1.default)();
135
+ let minimumRequestTime = concernedRequest.content.segment.duration * 1.5;
131
136
  minimumRequestTime = Math.min(minimumRequestTime, 3000);
132
137
  minimumRequestTime = Math.max(minimumRequestTime, 12000);
133
138
  if (now - concernedRequest.requestTimestamp < minimumRequestTime) {
134
139
  return undefined;
135
140
  }
136
- var lastProgressEvent = concernedRequest.progress.length > 0 ?
141
+ const lastProgressEvent = concernedRequest.progress.length > 0 ?
137
142
  concernedRequest.progress[concernedRequest.progress.length - 1] :
138
143
  undefined;
139
144
  // first, try to do a quick estimate from progress events
140
- var bandwidthEstimate = estimateRequestBandwidth(concernedRequest);
145
+ const bandwidthEstimate = estimateRequestBandwidth(concernedRequest);
141
146
  if (lastProgressEvent !== undefined && bandwidthEstimate !== undefined) {
142
- var remainingTime = estimateRemainingTime(lastProgressEvent, bandwidthEstimate);
147
+ const remainingTime = estimateRemainingTime(lastProgressEvent, bandwidthEstimate);
143
148
  // if the remaining time does seem reliable
144
149
  if ((now - lastProgressEvent.timestamp) / 1000 <= remainingTime) {
145
150
  // Calculate estimated time spent rebuffering if we continue doing that request.
146
- var expectedRebufferingTime = remainingTime -
151
+ const expectedRebufferingTime = remainingTime -
147
152
  (realBufferGap / speed);
148
153
  if (expectedRebufferingTime > 2500) {
149
154
  return bandwidthEstimate;
@@ -153,16 +158,16 @@ function estimateStarvationModeBitrate(pendingRequests, playbackInfo, currentRep
153
158
  if (!concernedRequest.content.segment.complete) {
154
159
  return undefined;
155
160
  }
156
- var chunkDuration = concernedRequest.content.segment.duration;
157
- var requestElapsedTime = (now - concernedRequest.requestTimestamp) / 1000;
158
- var reasonableElapsedTime = requestElapsedTime <=
161
+ const chunkDuration = concernedRequest.content.segment.duration;
162
+ const requestElapsedTime = (now - concernedRequest.requestTimestamp) / 1000;
163
+ const reasonableElapsedTime = requestElapsedTime <=
159
164
  ((chunkDuration * 1.5 + 2) / speed);
160
165
  if (currentRepresentation == null || reasonableElapsedTime) {
161
166
  return undefined;
162
167
  }
163
168
  // calculate a reduced bitrate from the current one
164
- var factor = chunkDuration / requestElapsedTime;
165
- var reducedBitrate = currentRepresentation.bitrate * Math.min(0.7, factor);
169
+ const factor = chunkDuration / requestElapsedTime;
170
+ const reducedBitrate = currentRepresentation.bitrate * Math.min(0.7, factor);
166
171
  if (lastEstimatedBitrate === undefined ||
167
172
  reducedBitrate < lastEstimatedBitrate) {
168
173
  return reducedBitrate;
@@ -185,31 +190,28 @@ function shouldDirectlySwitchToLowBitrate(playbackInfo, requests, lowLatencyMode
185
190
  // TODO only when playing close to the live edge?
186
191
  return true;
187
192
  }
188
- var realBufferGap = isFinite(playbackInfo.bufferGap) ? playbackInfo.bufferGap :
193
+ const realBufferGap = isFinite(playbackInfo.bufferGap) ? playbackInfo.bufferGap :
189
194
  0;
190
- var nextNeededPosition = playbackInfo.position.last + realBufferGap;
191
- var nextRequest = arrayFind(requests, function (_a) {
192
- var content = _a.content;
193
- return content.segment.duration > 0 &&
194
- (content.segment.time + content.segment.duration) > nextNeededPosition;
195
- });
195
+ const nextNeededPosition = playbackInfo.position.last + realBufferGap;
196
+ const nextRequest = (0, array_find_1.default)(requests, ({ content }) => content.segment.duration > 0 &&
197
+ (content.segment.time + content.segment.duration) > nextNeededPosition);
196
198
  if (nextRequest === undefined) {
197
199
  return true;
198
200
  }
199
- var now = getMonotonicTimeStamp();
200
- var lastProgressEvent = nextRequest.progress.length > 0 ?
201
+ const now = (0, monotonic_timestamp_1.default)();
202
+ const lastProgressEvent = nextRequest.progress.length > 0 ?
201
203
  nextRequest.progress[nextRequest.progress.length - 1] :
202
204
  undefined;
203
205
  // first, try to do a quick estimate from progress events
204
- var bandwidthEstimate = estimateRequestBandwidth(nextRequest);
206
+ const bandwidthEstimate = estimateRequestBandwidth(nextRequest);
205
207
  if (lastProgressEvent === undefined || bandwidthEstimate === undefined) {
206
208
  return true;
207
209
  }
208
- var remainingTime = estimateRemainingTime(lastProgressEvent, bandwidthEstimate);
210
+ const remainingTime = estimateRemainingTime(lastProgressEvent, bandwidthEstimate);
209
211
  if ((now - lastProgressEvent.timestamp) / 1000 > (remainingTime * 1.2)) {
210
212
  return true;
211
213
  }
212
- var expectedRebufferingTime = remainingTime -
214
+ const expectedRebufferingTime = remainingTime -
213
215
  (realBufferGap / playbackInfo.speed);
214
216
  return expectedRebufferingTime > -1.5;
215
217
  }
@@ -218,9 +220,9 @@ function shouldDirectlySwitchToLowBitrate(playbackInfo, requests, lowLatencyMode
218
220
  * as a maximum bitrate a Representation should be.
219
221
  * @class NetworkAnalyzer
220
222
  */
221
- var NetworkAnalyzer = /** @class */ (function () {
222
- function NetworkAnalyzer(initialBitrate, lowLatencyMode) {
223
- var _a = config.getCurrent(), ABR_STARVATION_GAP = _a.ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP = _a.OUT_OF_STARVATION_GAP, ABR_STARVATION_FACTOR = _a.ABR_STARVATION_FACTOR, ABR_REGULAR_FACTOR = _a.ABR_REGULAR_FACTOR;
223
+ class NetworkAnalyzer {
224
+ constructor(initialBitrate, lowLatencyMode) {
225
+ const { ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP, ABR_STARVATION_FACTOR, ABR_REGULAR_FACTOR } = config_1.default.getCurrent();
224
226
  this._initialBitrate = initialBitrate;
225
227
  this._inStarvationMode = false;
226
228
  this._lowLatencyMode = lowLatencyMode;
@@ -253,29 +255,29 @@ var NetworkAnalyzer = /** @class */ (function () {
253
255
  * last estimate.
254
256
  * @returns {Object}
255
257
  */
256
- NetworkAnalyzer.prototype.getBandwidthEstimate = function (playbackInfo, bandwidthEstimator, currentRepresentation, currentRequests, lastEstimatedBitrate) {
257
- var newBitrateCeil; // bitrate ceil for the chosen Representation
258
- var bandwidthEstimate;
259
- var localConf = this._config;
260
- var bufferGap = playbackInfo.bufferGap, position = playbackInfo.position, duration = playbackInfo.duration;
261
- var realBufferGap = isFinite(bufferGap) ? bufferGap :
258
+ getBandwidthEstimate(playbackInfo, bandwidthEstimator, currentRepresentation, currentRequests, lastEstimatedBitrate) {
259
+ let newBitrateCeil; // bitrate ceil for the chosen Representation
260
+ let bandwidthEstimate;
261
+ const localConf = this._config;
262
+ const { bufferGap, position, duration } = playbackInfo;
263
+ const realBufferGap = isFinite(bufferGap) ? bufferGap :
262
264
  0;
263
- var ABR_STARVATION_DURATION_DELTA = config.getCurrent().ABR_STARVATION_DURATION_DELTA;
265
+ const { ABR_STARVATION_DURATION_DELTA } = config_1.default.getCurrent();
264
266
  // check if should get in/out of starvation mode
265
267
  if (isNaN(duration) ||
266
268
  realBufferGap + position.last < duration - ABR_STARVATION_DURATION_DELTA) {
267
269
  if (!this._inStarvationMode && realBufferGap <= localConf.starvationGap) {
268
- log.info("ABR: enter starvation mode.");
270
+ log_1.default.info("ABR: enter starvation mode.");
269
271
  this._inStarvationMode = true;
270
272
  }
271
273
  else if (this._inStarvationMode &&
272
274
  realBufferGap >= localConf.outOfStarvationGap) {
273
- log.info("ABR: exit starvation mode.");
275
+ log_1.default.info("ABR: exit starvation mode.");
274
276
  this._inStarvationMode = false;
275
277
  }
276
278
  }
277
279
  else if (this._inStarvationMode) {
278
- log.info("ABR: exit starvation mode.");
280
+ log_1.default.info("ABR: exit starvation mode.");
279
281
  this._inStarvationMode = false;
280
282
  }
281
283
  // If in starvation mode, check if a quick new estimate can be done
@@ -283,10 +285,10 @@ var NetworkAnalyzer = /** @class */ (function () {
283
285
  // If so, cancel previous estimates and replace it by the new one
284
286
  if (this._inStarvationMode) {
285
287
  bandwidthEstimate = estimateStarvationModeBitrate(currentRequests, playbackInfo, currentRepresentation, this._lowLatencyMode, lastEstimatedBitrate);
286
- if (bandwidthEstimate != null) {
287
- log.info("ABR: starvation mode emergency estimate:", bandwidthEstimate);
288
+ if (bandwidthEstimate !== undefined) {
289
+ log_1.default.info("ABR: starvation mode emergency estimate:", bandwidthEstimate);
288
290
  bandwidthEstimator.reset();
289
- newBitrateCeil = currentRepresentation == null ?
291
+ newBitrateCeil = (0, is_null_or_undefined_1.default)(currentRepresentation) ?
290
292
  bandwidthEstimate :
291
293
  Math.min(bandwidthEstimate, currentRepresentation.bitrate);
292
294
  }
@@ -294,12 +296,12 @@ var NetworkAnalyzer = /** @class */ (function () {
294
296
  // if newBitrateCeil is not yet defined, do the normal estimation
295
297
  if (newBitrateCeil == null) {
296
298
  bandwidthEstimate = bandwidthEstimator.getEstimate();
297
- if (bandwidthEstimate != null) {
299
+ if (bandwidthEstimate !== undefined) {
298
300
  newBitrateCeil = bandwidthEstimate *
299
301
  (this._inStarvationMode ? localConf.starvationBitrateFactor :
300
302
  localConf.regularBitrateFactor);
301
303
  }
302
- else if (lastEstimatedBitrate != null) {
304
+ else if (lastEstimatedBitrate !== undefined) {
303
305
  newBitrateCeil = lastEstimatedBitrate *
304
306
  (this._inStarvationMode ? localConf.starvationBitrateFactor :
305
307
  localConf.regularBitrateFactor);
@@ -311,8 +313,8 @@ var NetworkAnalyzer = /** @class */ (function () {
311
313
  if (playbackInfo.speed > 1) {
312
314
  newBitrateCeil /= playbackInfo.speed;
313
315
  }
314
- return { bandwidthEstimate: bandwidthEstimate, bitrateChosen: newBitrateCeil };
315
- };
316
+ return { bandwidthEstimate, bitrateChosen: newBitrateCeil };
317
+ }
316
318
  /**
317
319
  * For a given wanted bitrate, tells if should switch urgently.
318
320
  * @param {number} bitrate - The new estimated bitrate.
@@ -323,7 +325,7 @@ var NetworkAnalyzer = /** @class */ (function () {
323
325
  * @param {Object} playbackInfo - Information on the current playback.
324
326
  * @returns {boolean}
325
327
  */
326
- NetworkAnalyzer.prototype.isUrgent = function (bitrate, currentRepresentation, currentRequests, playbackInfo) {
328
+ isUrgent(bitrate, currentRepresentation, currentRequests, playbackInfo) {
327
329
  if (currentRepresentation === null) {
328
330
  return true;
329
331
  }
@@ -331,7 +333,6 @@ var NetworkAnalyzer = /** @class */ (function () {
331
333
  return false;
332
334
  }
333
335
  return shouldDirectlySwitchToLowBitrate(playbackInfo, currentRequests, this._lowLatencyMode);
334
- };
335
- return NetworkAnalyzer;
336
- }());
337
- export default NetworkAnalyzer;
336
+ }
337
+ }
338
+ exports.default = NetworkAnalyzer;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,18 +14,19 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import config from "../../../config";
17
- import EWMA from "./ewma";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const config_1 = require("../../../config");
19
+ const ewma_1 = require("./ewma");
18
20
  /**
19
21
  * Calculate a mean bandwidth based on the bytes downloaded and the amount
20
22
  * of time needed to do so.
21
23
  * @class BandwidthEstimator
22
24
  */
23
- var BandwidthEstimator = /** @class */ (function () {
24
- function BandwidthEstimator() {
25
- var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
26
- this._fastEWMA = new EWMA(ABR_FAST_EMA);
27
- this._slowEWMA = new EWMA(ABR_SLOW_EMA);
25
+ class BandwidthEstimator {
26
+ constructor() {
27
+ const { ABR_FAST_EMA, ABR_SLOW_EMA } = config_1.default.getCurrent();
28
+ this._fastEWMA = new ewma_1.default(ABR_FAST_EMA);
29
+ this._slowEWMA = new ewma_1.default(ABR_SLOW_EMA);
28
30
  this._bytesSampled = 0;
29
31
  }
30
32
  /**
@@ -34,37 +36,36 @@ var BandwidthEstimator = /** @class */ (function () {
34
36
  * @param {number} numberOfBytes - The total number of bytes transferred in
35
37
  * that request.
36
38
  */
37
- BandwidthEstimator.prototype.addSample = function (durationInMs, numberOfBytes) {
38
- var ABR_MINIMUM_CHUNK_SIZE = config.getCurrent().ABR_MINIMUM_CHUNK_SIZE;
39
+ addSample(durationInMs, numberOfBytes) {
40
+ const { ABR_MINIMUM_CHUNK_SIZE } = config_1.default.getCurrent();
39
41
  if (numberOfBytes < ABR_MINIMUM_CHUNK_SIZE) {
40
42
  return;
41
43
  }
42
- var bandwidth = numberOfBytes * 8000 / durationInMs;
43
- var weight = durationInMs / 1000;
44
+ const bandwidth = numberOfBytes * 8000 / durationInMs;
45
+ const weight = durationInMs / 1000;
44
46
  this._bytesSampled += numberOfBytes;
45
47
  this._fastEWMA.addSample(weight, bandwidth);
46
48
  this._slowEWMA.addSample(weight, bandwidth);
47
- };
49
+ }
48
50
  /**
49
51
  * Get estimate of the bandwidth, in bits per seconds.
50
52
  * @returns {Number|undefined}
51
53
  */
52
- BandwidthEstimator.prototype.getEstimate = function () {
53
- var ABR_MINIMUM_TOTAL_BYTES = config.getCurrent().ABR_MINIMUM_TOTAL_BYTES;
54
+ getEstimate() {
55
+ const { ABR_MINIMUM_TOTAL_BYTES } = config_1.default.getCurrent();
54
56
  if (this._bytesSampled < ABR_MINIMUM_TOTAL_BYTES) {
55
57
  return undefined;
56
58
  }
57
59
  // Take the minimum of these two estimates.
58
60
  // This should have the effect of adapting down quickly, but up more slowly.
59
61
  return Math.min(this._fastEWMA.getEstimate(), this._slowEWMA.getEstimate());
60
- };
62
+ }
61
63
  /** Reset the bandwidth estimation. */
62
- BandwidthEstimator.prototype.reset = function () {
63
- var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
64
- this._fastEWMA = new EWMA(ABR_FAST_EMA);
65
- this._slowEWMA = new EWMA(ABR_SLOW_EMA);
64
+ reset() {
65
+ const { ABR_FAST_EMA, ABR_SLOW_EMA } = config_1.default.getCurrent();
66
+ this._fastEWMA = new ewma_1.default(ABR_FAST_EMA);
67
+ this._slowEWMA = new ewma_1.default(ABR_SLOW_EMA);
66
68
  this._bytesSampled = 0;
67
- };
68
- return BandwidthEstimator;
69
- }());
70
- export default BandwidthEstimator;
69
+ }
70
+ }
71
+ exports.default = BandwidthEstimator;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,15 +14,16 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
16
18
  /**
17
19
  * Tweaked implementation of an exponential weighted Moving Average.
18
20
  * @class EWMA
19
21
  */
20
- var EWMA = /** @class */ (function () {
22
+ class EWMA {
21
23
  /**
22
24
  * @param {number} halfLife
23
25
  */
24
- function EWMA(halfLife) {
26
+ constructor(halfLife) {
25
27
  // (half-life = log(1/2) / log(Decay Factor)
26
28
  this._alpha = Math.exp(Math.log(0.5) / halfLife);
27
29
  this._lastEstimate = 0;
@@ -31,22 +33,21 @@ var EWMA = /** @class */ (function () {
31
33
  * @param {number} weight
32
34
  * @param {number} value
33
35
  */
34
- EWMA.prototype.addSample = function (weight, value) {
35
- var adjAlpha = Math.pow(this._alpha, weight);
36
- var newEstimate = value * (1 - adjAlpha) +
36
+ addSample(weight, value) {
37
+ const adjAlpha = Math.pow(this._alpha, weight);
38
+ const newEstimate = value * (1 - adjAlpha) +
37
39
  adjAlpha * this._lastEstimate;
38
40
  if (!isNaN(newEstimate)) {
39
41
  this._lastEstimate = newEstimate;
40
42
  this._totalWeight += weight;
41
43
  }
42
- };
44
+ }
43
45
  /**
44
46
  * @returns {number} value
45
47
  */
46
- EWMA.prototype.getEstimate = function () {
47
- var zeroFactor = 1 - Math.pow(this._alpha, this._totalWeight);
48
+ getEstimate() {
49
+ const zeroFactor = 1 - Math.pow(this._alpha, this._totalWeight);
48
50
  return this._lastEstimate / zeroFactor;
49
- };
50
- return EWMA;
51
- }());
52
- export default EWMA;
51
+ }
52
+ }
53
+ exports.default = EWMA;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,7 +14,8 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import arrayFindIndex from "../../../utils/array_find_index";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const array_find_index_1 = require("../../../utils/array_find_index");
17
19
  /**
18
20
  * Get only representations lower or equal to a given bitrate.
19
21
  * If no representation is lower than the given bitrate, returns an array containing
@@ -22,16 +24,17 @@ import arrayFindIndex from "../../../utils/array_find_index";
22
24
  * @param {Number} bitrate
23
25
  * @returns {Array.<Object>}
24
26
  */
25
- export default function filterByBitrate(representations, bitrate) {
27
+ function filterByBitrate(representations, bitrate) {
26
28
  if (representations.length === 0) {
27
29
  return [];
28
30
  }
29
- representations.sort(function (ra, rb) { return ra.bitrate - rb.bitrate; });
30
- var minimumBitrate = representations[0].bitrate;
31
- var bitrateCeil = Math.max(bitrate, minimumBitrate);
32
- var firstSuperiorBitrateIndex = arrayFindIndex(representations, function (representation) { return representation.bitrate > bitrateCeil; });
31
+ representations.sort((ra, rb) => ra.bitrate - rb.bitrate);
32
+ const minimumBitrate = representations[0].bitrate;
33
+ const bitrateCeil = Math.max(bitrate, minimumBitrate);
34
+ const firstSuperiorBitrateIndex = (0, array_find_index_1.default)(representations, (representation) => representation.bitrate > bitrateCeil);
33
35
  if (firstSuperiorBitrateIndex === -1) {
34
36
  return representations; // All representations have lower bitrates.
35
37
  }
36
38
  return representations.slice(0, firstSuperiorBitrateIndex);
37
39
  }
40
+ exports.default = filterByBitrate;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,8 +14,9 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import arrayFind from "../../../utils/array_find";
17
- import takeFirstSet from "../../../utils/take_first_set";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const array_find_1 = require("../../../utils/array_find");
19
+ const take_first_set_1 = require("../../../utils/take_first_set");
18
20
  /**
19
21
  * Filter representations based on their resolution.
20
22
  * - the highest resolution considered will be the one linked to the first
@@ -24,29 +26,26 @@ import takeFirstSet from "../../../utils/take_first_set";
24
26
  * @param {Object} resolution
25
27
  * @returns {Array.<Object>}
26
28
  */
27
- export default function filterByResolution(representations, resolution) {
29
+ function filterByResolution(representations, resolution) {
28
30
  if (resolution.width === undefined || resolution.height === undefined) {
29
31
  return representations;
30
32
  }
31
- var width = resolution.width * resolution.pixelRatio;
32
- var height = resolution.height * resolution.pixelRatio;
33
- var sortedRepsByWidth = representations
33
+ const width = resolution.width * resolution.pixelRatio;
34
+ const height = resolution.height * resolution.pixelRatio;
35
+ const sortedRepsByWidth = representations
34
36
  .slice() // clone
35
- .sort(function (a, b) { return takeFirstSet(a.width, 0) -
36
- takeFirstSet(b.width, 0); });
37
- var repWithMaxWidth = arrayFind(sortedRepsByWidth, function (representation) {
38
- return typeof representation.width === "number" &&
39
- representation.width >= width &&
40
- typeof representation.height === "number" &&
41
- representation.height >= height;
42
- });
37
+ .sort((a, b) => (0, take_first_set_1.default)(a.width, 0) -
38
+ (0, take_first_set_1.default)(b.width, 0));
39
+ const repWithMaxWidth = (0, array_find_1.default)(sortedRepsByWidth, (representation) => typeof representation.width === "number" &&
40
+ representation.width >= width &&
41
+ typeof representation.height === "number" &&
42
+ representation.height >= height);
43
43
  if (repWithMaxWidth === undefined) {
44
44
  return representations;
45
45
  }
46
- var maxWidth = typeof repWithMaxWidth.width === "number" ? repWithMaxWidth.width :
46
+ const maxWidth = typeof repWithMaxWidth.width === "number" ? repWithMaxWidth.width :
47
47
  0;
48
- return representations.filter(function (representation) {
49
- return typeof representation.width === "number" ? representation.width <= maxWidth :
50
- true;
51
- });
48
+ return representations.filter(representation => typeof representation.width === "number" ? representation.width <= maxWidth :
49
+ true);
52
50
  }
51
+ exports.default = filterByResolution;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,6 +14,7 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
16
18
  /**
17
19
  * Return "Buffer Levels" which are steps of available buffers from which we
18
20
  * are normally able switch safely to the next available bitrate.
@@ -21,12 +23,12 @@
21
23
  * ascending order.
22
24
  * @returns {Array.<number>}
23
25
  */
24
- export default function getBufferLevels(bitrates) {
25
- var logs = bitrates.map(function (b) { return Math.log(b / bitrates[0]); });
26
- var utilities = logs.map(function (l) { return l - logs[0] + 1; }); // normalize
27
- var gp = (utilities[utilities.length - 1] - 1) / ((bitrates.length * 2) + 10);
28
- var Vp = 1 / gp;
29
- return bitrates.map(function (_, i) { return minBufferLevelForBitrate(i); });
26
+ function getBufferLevels(bitrates) {
27
+ const logs = bitrates.map((b) => Math.log(b / bitrates[0]));
28
+ const utilities = logs.map(l => l - logs[0] + 1); // normalize
29
+ const gp = (utilities[utilities.length - 1] - 1) / ((bitrates.length * 2) + 10);
30
+ const Vp = 1 / gp;
31
+ return bitrates.map((_, i) => minBufferLevelForBitrate(i));
30
32
  /**
31
33
  * Get minimum buffer we should keep ahead to pick this bitrate.
32
34
  * @param {number} index
@@ -36,7 +38,7 @@ export default function getBufferLevels(bitrates) {
36
38
  if (index === 0) {
37
39
  return 0;
38
40
  }
39
- var boundedIndex = Math.min(Math.max(1, index), bitrates.length - 1);
41
+ const boundedIndex = Math.min(Math.max(1, index), bitrates.length - 1);
40
42
  if (bitrates[boundedIndex] === bitrates[boundedIndex - 1]) {
41
43
  return minBufferLevelForBitrate(index - 1);
42
44
  }
@@ -45,3 +47,4 @@ export default function getBufferLevels(bitrates) {
45
47
  bitrates[boundedIndex - 1])) + 4;
46
48
  }
47
49
  }
50
+ exports.default = getBufferLevels;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,9 +14,10 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
16
18
  /** Stores the last estimate made by the `RepresentationEstimator`. */
17
- var LastEstimateStorage = /** @class */ (function () {
18
- function LastEstimateStorage() {
19
+ class LastEstimateStorage {
20
+ constructor() {
19
21
  this.bandwidth = undefined;
20
22
  this.representation = null;
21
23
  this.algorithmType = 3 /* ABRAlgorithmType.None */;
@@ -27,11 +29,10 @@ var LastEstimateStorage = /** @class */ (function () {
27
29
  * @param {number} algorithmType - The type of algorithm used to produce that
28
30
  * estimate.
29
31
  */
30
- LastEstimateStorage.prototype.update = function (representation, bandwidth, algorithmType) {
32
+ update(representation, bandwidth, algorithmType) {
31
33
  this.representation = representation;
32
34
  this.bandwidth = bandwidth;
33
35
  this.algorithmType = algorithmType;
34
- };
35
- return LastEstimateStorage;
36
- }());
37
- export default LastEstimateStorage;
36
+ }
37
+ }
38
+ exports.default = LastEstimateStorage;