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
package/jest.config.js CHANGED
@@ -27,7 +27,7 @@ module.exports = {
27
27
  strictPropertyInitialization: true,
28
28
  noUnusedParameters: true,
29
29
  noUnusedLocals: true,
30
- types: ["node", "jest"],
30
+ types: ["jest"],
31
31
  module: "es2015",
32
32
  moduleResolution: "node",
33
33
  esModuleInterop: true,
@@ -40,27 +40,6 @@ module.exports = {
40
40
  ],
41
41
  },
42
42
  globals: {
43
- __FEATURES__: {
44
- IS_DISABLED: 0,
45
- IS_ENABLED: 1,
46
-
47
- BIF_PARSER: 1,
48
- DASH: 1,
49
- DIRECTFILE: 1,
50
- EME: 1,
51
- HTML_SAMI: 1,
52
- HTML_SRT: 1,
53
- HTML_TTML: 1,
54
- HTML_VTT: 1,
55
- LOCAL_MANIFEST: 1,
56
- METAPLAYLIST: 1,
57
- DEBUG_ELEMENT: 1,
58
- NATIVE_SAMI: 1,
59
- NATIVE_SRT: 1,
60
- NATIVE_TTML: 1,
61
- NATIVE_VTT: 1,
62
- SMOOTH: 1,
63
- },
64
43
  __ENVIRONMENT__: {
65
44
  PRODUCTION: 0,
66
45
  DEV: 1,
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "rx-player",
3
3
  "author": "Canal+",
4
- "version": "4.0.0-dev.2023092900",
4
+ "version": "4.0.0-dev.2023102700",
5
5
  "description": "Canal+ HTML5 Video Player",
6
- "main": "./dist/rx-player.js",
6
+ "main": "./dist/_esm5.processed/index.js",
7
7
  "keywords": [
8
8
  "dash",
9
9
  "eme",
@@ -17,23 +17,23 @@
17
17
  "typescript",
18
18
  "video"
19
19
  ],
20
- "browser": "./dist/rx-player.js",
20
+ "browser": "./dist/_esm5.processed/index.js",
21
21
  "homepage": "https://github.com/canalplus/rx-player",
22
22
  "bugs": "https://github.com/canalplus/rx-player/issues",
23
23
  "license": "Apache-2.0",
24
24
  "sideEffects": false,
25
25
  "scripts": {
26
- "build": "webpack --progress --config webpack.config.js --env production",
26
+ "build": "./scripts/build/generate_build.js",
27
27
  "build:all": "npm run build:rxp:all && npm run build:wasm:release",
28
- "build:min": "webpack --progress --config webpack.config.js --env minify --env production",
29
- "build:min:report": "webpack --progress --config webpack.config.js --env minify --env production --env reportSize",
30
- "build:modular": "./scripts/build/generate_build.js",
31
- "build:report": "webpack --progress --config webpack.config.js --env production --env reportSize",
32
- "build:rxp:all": "npm run build && npm run build:min && npm run build:modular",
33
- "build:watch": "webpack --progress --config webpack.config.js -w --env production",
34
- "build:min:watch": "webpack --progress --config webpack.config.js -w --env production --env minify",
28
+ "build:rxp:all": "npm run bundle && npm run bundle:min && npm run build",
35
29
  "build:wasm:debug": "cd ./src/parsers/manifest/dash/wasm-parser && cargo build --target wasm32-unknown-unknown && cp target/wasm32-unknown-unknown/debug/mpd_node_parser.wasm ../../../../../dist/mpd-parser.wasm",
36
30
  "build:wasm:release": "cd ./src/parsers/manifest/dash/wasm-parser && cargo build --target wasm32-unknown-unknown --release && wasm-opt -O3 -o ../../../../../dist/mpd-parser.wasm target/wasm32-unknown-unknown/release/mpd_node_parser.wasm && cd ../../../../../ && npm run wasm-strip",
31
+ "bundle": "webpack --progress --config webpack.config.js --env production",
32
+ "bundle:min": "webpack --progress --config webpack.config.js --env minify --env production",
33
+ "bundle:min:report": "webpack --progress --config webpack.config.js --env minify --env production --env reportSize",
34
+ "bundle:min:watch": "webpack --progress --config webpack.config.js -w --env production --env minify",
35
+ "bundle:report": "webpack --progress --config webpack.config.js --env production --env reportSize",
36
+ "bundle:watch": "webpack --progress --config webpack.config.js -w --env production",
37
37
  "certificate": "./scripts/generate_certificate",
38
38
  "check": "npm run check:types && npm run lint",
39
39
  "check:all": "npm run check:types && npm run lint && npm run lint:demo && npm run lint:tests && npm run test:unit && npm run test:integration && npm run test:memory && node -r esm ./scripts/check_nodejs_import_compatibility.js",
@@ -50,7 +50,7 @@
50
50
  "lint:demo": "eslint -c demo/full/.eslintrc.js demo/full/scripts",
51
51
  "lint:tests": "eslint tests/**/*.js --ignore-pattern '/tests/performance/bundle*'",
52
52
  "list": "node scripts/list-npm-scripts.js",
53
- "prepublishOnly": "npm run build:modular",
53
+ "prepublishOnly": "npm run build:all",
54
54
  "standalone": "node ./scripts/run_standalone_demo.js",
55
55
  "start": "node ./scripts/start_demo_web_server.js",
56
56
  "start:wasm": "node ./scripts/start_demo_web_server.js --include-wasm",
@@ -87,7 +87,6 @@
87
87
  "@types/chai": "4.3.6",
88
88
  "@types/jest": "29.5.5",
89
89
  "@types/mocha": "10.0.1",
90
- "@types/node": "20.7.0",
91
90
  "@types/react": "18.2.23",
92
91
  "@types/react-dom": "18.2.7",
93
92
  "@types/sinon": "10.0.17",
@@ -177,23 +176,23 @@
177
176
  }
178
177
  },
179
178
  "Build the player or one of its sub-parts": {
180
- "Modular builds (then imported through the rx-player/minimal path)": {
181
- "build:modular": "Build the modular build of the rx-player and create corresponding files and directories."
179
+ "Regular builds (used by JS bundlers)": {
180
+ "build": "Build the rx-player and create corresponding files and directories."
182
181
  },
183
- "Legacy builds (bundles)": {
184
- "build": "Build the player in dist/rx-player.js",
185
- "build:min": "Build the player and minify it in dist/rx-player.min.js",
186
- "build:min:report": "Build the player then minify it in dist/rx-player.min.js and display a report on its size",
187
- "build:min:watch": "Build the player in dist/rx-player.js each times the files update",
188
- "build:report": "Build the player in dist/rx-player.js and display a report on its size",
189
- "build:watch": "Build the player as a minified version in dist/rx-player.min.js each times the files update"
182
+ "Legacy bundle builds (single-file bundles exporting to window.RxPlayer)": {
183
+ "bundle": "Build the player in dist/rx-player.js",
184
+ "bundle:min": "Build the player and minify it in dist/rx-player.min.js",
185
+ "bundle:min:report": "Build the player then minify it in dist/rx-player.min.js and display a report on its size",
186
+ "bundle:min:watch": "Build the player in dist/rx-player.js each times the files update",
187
+ "bundle:report": "Build the player in dist/rx-player.js and display a report on its size",
188
+ "bundle:watch": "Build the player as a minified version in dist/rx-player.min.js each times the files update"
190
189
  },
191
190
  "WebAssembly MPD parser builds (needs Rust, Cargo and binaryen)": {
192
191
  "build:wasm:debug": "Build the DASH MPD parser written in rust as WebAssembly into debug mode, and output the result as dist/mpd-parser.wasm",
193
192
  "build:wasm:release": "Build the DASH MPD parser written in rust as WebAssembly into release mode, and output the result as dist/mpd-parser.wasm"
194
193
  },
195
194
  "Combinations of multiple builds": {
196
- "build:all": "Perform all possible builds of the player (regular RxPlayer builds and the WebAssembly DASH MPD parser release build).",
195
+ "build:all": "Perform all possible builds of the player (regular RxPlayer builds, legacy bundles and the WebAssembly DASH MPD parser release build).",
197
196
  "build:rxp:all": "Perform all possible builds of the RxPlayer main code (that is, excluding the WebAssembly DASH MPD parser build)."
198
197
  }
199
198
  },
@@ -16,7 +16,7 @@
16
16
 
17
17
  /* eslint-disable @typescript-eslint/naming-convention */
18
18
 
19
- // Define build-time constants corresponding to the modular build.
19
+ // Define build-time constants corresponding to the regular build.
20
20
 
21
21
  declare const enum __LOGGER_LEVEL__ {
22
22
  CURRENT_LEVEL = "NONE",
@@ -28,26 +28,4 @@ declare const enum __ENVIRONMENT__ {
28
28
  CURRENT_ENV = PRODUCTION,
29
29
  }
30
30
 
31
- declare const enum __FEATURES__ {
32
- IS_DISABLED = 0,
33
- IS_ENABLED = 1,
34
-
35
- BIF_PARSER = IS_DISABLED,
36
- DASH = IS_DISABLED,
37
- DIRECTFILE = IS_DISABLED,
38
- EME = IS_DISABLED,
39
- HTML_SAMI = IS_DISABLED,
40
- HTML_SRT = IS_DISABLED,
41
- HTML_TTML = IS_DISABLED,
42
- HTML_VTT = IS_DISABLED,
43
- LOCAL_MANIFEST = IS_DISABLED,
44
- METAPLAYLIST = IS_DISABLED,
45
- DEBUG_ELEMENT = IS_DISABLED,
46
- NATIVE_SAMI = IS_DISABLED,
47
- NATIVE_SRT = IS_DISABLED,
48
- NATIVE_TTML = IS_DISABLED,
49
- NATIVE_VTT = IS_DISABLED,
50
- SMOOTH = IS_DISABLED,
51
- }
52
-
53
31
  declare const __RX_PLAYER_DEBUG_MODE__ : boolean | undefined;
@@ -6,7 +6,7 @@
6
6
  * generate_build.js
7
7
  * =================
8
8
  *
9
- * This file allows to produce the main RxPlayer's [modular] build.
9
+ * This file allows to produce the main RxPlayer's builds.
10
10
  *
11
11
  * To run it, just call this file through your node.js binary:
12
12
  * ```sh
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * To be able to run this script:
14
14
  *
15
- * 1. You need first to produce the modular "minimal" build of the RxPlayer
15
+ * 1. You need first to produce build the RxPlayer through the usual scripts
16
16
  *
17
17
  * 2. You need to make sure that `import` statements can be used in the
18
18
  * node.js runtime you've ran. This possibility might depends on the
@@ -29,10 +29,7 @@ sed -i.bak -e "s/sonar\.projectVersion= *.*/sonar.projectVersion=${version}/g" s
29
29
  echo $version > VERSION
30
30
 
31
31
  npm install
32
- npm run build
33
- npm run build:min
34
- npm run build:wasm:release
35
- npm run build:modular
32
+ npm run build:all
36
33
 
37
34
  echo "creating types for legacy code bases..."
38
35
  rm -f dist/rx-player.d.ts rx-player.min.d.ts
@@ -1,7 +1,7 @@
1
1
  sonar.projectKey=rx-player
2
2
  sonar.organization=rx-player
3
3
  sonar.projectName=rx-player
4
- sonar.projectVersion=4.0.0-dev.2023092900
4
+ sonar.projectVersion=4.0.0-dev.2023102700
5
5
  sonar.sources=./src,./demo,./tests
6
6
  sonar.exclusions=demo/full/bundle.js,demo/standalone/lib.js,demo/bundle.js
7
7
  sonar.host.url=https://sonarcloud.io
@@ -188,26 +188,26 @@ function getDocumentVisibilityRef(
188
188
  let prefix : string|undefined;
189
189
 
190
190
  const doc = document as ICompatDocument;
191
- if (doc.hidden != null) {
191
+ if (!isNullOrUndefined(doc.hidden)) {
192
192
  prefix = "";
193
- } else if (doc.mozHidden != null) {
193
+ } else if (!isNullOrUndefined(doc.mozHidden)) {
194
194
  prefix = "moz";
195
- } else if (doc.msHidden != null) {
195
+ } else if (!isNullOrUndefined(doc.msHidden)) {
196
196
  prefix = "ms";
197
- } else if (doc.webkitHidden != null) {
197
+ } else if (!isNullOrUndefined(doc.webkitHidden)) {
198
198
  prefix = "webkit";
199
199
  }
200
200
 
201
- const hidden = isNonEmptyString(prefix) ? prefix + "Hidden" :
201
+ const hidden = isNonEmptyString(prefix) ? (prefix + "Hidden" as "hidden") :
202
202
  "hidden";
203
203
  const visibilityChangeEvent = isNonEmptyString(prefix) ? prefix + "visibilitychange" :
204
204
  "visibilitychange";
205
205
 
206
- const isHidden = document[hidden as "hidden"];
206
+ const isHidden = document[hidden];
207
207
  const ref = new SharedReference(!isHidden, stopListening);
208
208
 
209
209
  addEventListener(document, visibilityChangeEvent, () => {
210
- const isVisible = !(document[hidden as "hidden"]);
210
+ const isVisible = !(document[hidden]);
211
211
  ref.setValueIfChanged(isVisible);
212
212
  }, stopListening);
213
213
 
@@ -287,7 +287,7 @@ function getVideoVisibilityRef(
287
287
  stopListening : CancellationSignal
288
288
  ) : IReadOnlySharedReference<boolean> {
289
289
  const isDocVisibleRef = getDocumentVisibilityRef(stopListening);
290
- let currentTimeout : number | NodeJS.Timeout | undefined;
290
+ let currentTimeout : number | undefined;
291
291
  const ref = new SharedReference(true, stopListening);
292
292
  stopListening.register(() => {
293
293
  clearTimeout(currentTimeout);
@@ -1,6 +1,8 @@
1
1
  import isNode from "./is_node";
2
2
  import isWorker from "./is_worker";
3
3
 
4
+ declare const global: typeof self;
5
+
4
6
  /**
5
7
  * The current environment's global object, written in such a way to maximize
6
8
  * compatibility.
@@ -92,7 +92,7 @@ describe("BufferBasedChooser", () => {
92
92
  /* eslint-disable max-len */
93
93
  it("should log an error and return the first bitrate if the given bitrate does not exist", () => {
94
94
  /* eslint-enable max-len */
95
- const logger = { debug: jest.fn(), error: jest.fn() };
95
+ const logger = { debug: jest.fn(), info: jest.fn() };
96
96
  jest.mock("../../../log", () => ({ __esModule: true as const,
97
97
  default: logger }));
98
98
  const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default;
@@ -105,8 +105,8 @@ describe("BufferBasedChooser", () => {
105
105
  currentScore: undefined,
106
106
  });
107
107
  expect(bbc.getLastEstimate()).toEqual(10);
108
- expect(logger.error).toHaveBeenCalledTimes(1);
109
- expect(logger.error)
108
+ expect(logger.info).toHaveBeenCalledTimes(1);
109
+ expect(logger.info)
110
110
  .toHaveBeenCalledWith("ABR: Current Bitrate not found in the calculated levels");
111
111
  });
112
112
 
@@ -200,28 +200,46 @@ function getEstimateReference(
200
200
 
201
201
  return { estimates: estimateRef, callbacks };
202
202
 
203
+ /**
204
+ * Emit the ABR estimates on various events through the returned
205
+ * `SharedReference`.
206
+ * @param {Array.<Object>} unsortedRepresentations - All `Representation` that
207
+ * the ABR logic can choose from.
208
+ * @param {Object} innerCancellationSignal - When this `CancellationSignal`
209
+ * emits, all events registered to to emit new estimates will be unregistered.
210
+ * Note that the returned reference may still be used to produce new estimates
211
+ * in the future if you want to even after this signal emits.
212
+ * @returns {Object} - `SharedReference` through which ABR estimates will be
213
+ * produced.
214
+ */
203
215
  function createEstimateReference(
204
- representations : Representation[],
216
+ unsortedRepresentations : Representation[],
205
217
  innerCancellationSignal : CancellationSignal
206
218
  ) : SharedReference<IABREstimate> {
207
- if (representations.length <= 1) {
219
+ if (unsortedRepresentations.length <= 1) {
208
220
  // There's only a single Representation. Just choose it.
209
- return new SharedReference<IABREstimate>({ bitrate: undefined,
210
- representation: representations[0],
211
- urgent: true,
212
- knownStableBitrate: undefined });
221
+ return new SharedReference<IABREstimate>({
222
+ bitrate: undefined,
223
+ representation: unsortedRepresentations[0],
224
+ urgent: true,
225
+ knownStableBitrate: undefined,
226
+ });
213
227
  }
214
228
 
215
229
  /** If true, Representation estimates based on the buffer health might be used. */
216
230
  let allowBufferBasedEstimates = false;
217
231
 
232
+ /** Ensure `Representation` objects are sorted by bitrates and only rely on this. */
233
+ const sortedRepresentations = unsortedRepresentations
234
+ .sort((ra, rb) => ra.bitrate - rb.bitrate);
235
+
218
236
  /**
219
237
  * Module calculating the optimal Representation based on the current
220
238
  * buffer's health (i.e. whether enough data is buffered, history of
221
239
  * buffer size etc.).
222
240
  */
223
241
  const bufferBasedChooser = new BufferBasedChooser(
224
- representations.map(r => r.bitrate)
242
+ sortedRepresentations.map(r => r.bitrate)
225
243
  );
226
244
 
227
245
  /** Store the previous estimate made here. */
@@ -282,7 +300,7 @@ function getEstimateReference(
282
300
  const bitrateThrottle = filters.throttleBitrate.getValue();
283
301
  const currentRepresentationVal = currentRepresentation.getValue();
284
302
 
285
- const filteredReps = getFilteredRepresentations(representations,
303
+ const filteredReps = getFilteredRepresentations(sortedRepresentations,
286
304
  resolutionLimit,
287
305
  bitrateThrottle);
288
306
  const requests = requestsStore.getRequests();
@@ -372,7 +390,7 @@ function getEstimateReference(
372
390
  maximumPosition - position.last < 40)
373
391
  {
374
392
  chosenRepFromGuessMode = guessBasedChooser
375
- .getGuess(representations,
393
+ .getGuess(sortedRepresentations,
376
394
  lastPlaybackObservation,
377
395
  currentRepresentationVal,
378
396
  currentBestBitrate,
@@ -153,7 +153,7 @@ export default class BufferBasedChooser {
153
153
  }
154
154
 
155
155
  if (currentBitrateIndex < 0 || bitrates.length !== bufferLevels.length) {
156
- log.error("ABR: Current Bitrate not found in the calculated levels");
156
+ log.info("ABR: Current Bitrate not found in the calculated levels");
157
157
  this._currentEstimate = bitrates[0];
158
158
  return ;
159
159
  }
@@ -18,6 +18,7 @@ import config from "../../config";
18
18
  import log from "../../log";
19
19
  import { Representation } from "../../manifest";
20
20
  import arrayFind from "../../utils/array_find";
21
+ import isNullOrUndefined from "../../utils/is_null_or_undefined";
21
22
  import getMonotonicTimeStamp from "../../utils/monotonic_timestamp";
22
23
  import {
23
24
  IRepresentationEstimatorPlaybackObservation,
@@ -359,10 +360,10 @@ export default class NetworkAnalyzer {
359
360
  this._lowLatencyMode,
360
361
  lastEstimatedBitrate);
361
362
 
362
- if (bandwidthEstimate != null) {
363
+ if (bandwidthEstimate !== undefined) {
363
364
  log.info("ABR: starvation mode emergency estimate:", bandwidthEstimate);
364
365
  bandwidthEstimator.reset();
365
- newBitrateCeil = currentRepresentation == null ?
366
+ newBitrateCeil = isNullOrUndefined(currentRepresentation) ?
366
367
  bandwidthEstimate :
367
368
  Math.min(bandwidthEstimate, currentRepresentation.bitrate);
368
369
  }
@@ -372,11 +373,11 @@ export default class NetworkAnalyzer {
372
373
  if (newBitrateCeil == null) {
373
374
  bandwidthEstimate = bandwidthEstimator.getEstimate();
374
375
 
375
- if (bandwidthEstimate != null) {
376
+ if (bandwidthEstimate !== undefined) {
376
377
  newBitrateCeil = bandwidthEstimate *
377
378
  (this._inStarvationMode ? localConf.starvationBitrateFactor :
378
379
  localConf.regularBitrateFactor);
379
- } else if (lastEstimatedBitrate != null) {
380
+ } else if (lastEstimatedBitrate !== undefined) {
380
381
  newBitrateCeil = lastEstimatedBitrate *
381
382
  (this._inStarvationMode ? localConf.starvationBitrateFactor :
382
383
  localConf.regularBitrateFactor);
@@ -345,7 +345,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
345
345
  // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
346
346
  videoElement.preload = "auto";
347
347
 
348
- this.version = /* PLAYER_VERSION */"4.0.0-dev.2023092900";
348
+ this.version = /* PLAYER_VERSION */"4.0.0-dev.2023102700";
349
349
  this.log = log;
350
350
  this.state = "STOPPED";
351
351
  this.videoElement = videoElement;
@@ -2772,7 +2772,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
2772
2772
  }
2773
2773
  }
2774
2774
  }
2775
- Player.version = /* PLAYER_VERSION */"4.0.0-dev.2023092900";
2775
+ Player.version = /* PLAYER_VERSION */"4.0.0-dev.2023102700";
2776
2776
 
2777
2777
  /** Every events sent by the RxPlayer's public API. */
2778
2778
  interface IPublicAPIEvent {
@@ -209,7 +209,8 @@ export default class TrackDispatcher extends EventEmitter<ITrackDispatcherEvent>
209
209
 
210
210
  // Check if Locked Representations have changed
211
211
  const oldRef = reference.getValue();
212
- const sortedReps = playableRepresentations.slice().sort();
212
+ const sortedReps = playableRepresentations.slice()
213
+ .sort((ra, rb) => ra.bitrate - rb.bitrate);
213
214
  if (sortedReps.length !== oldRef.representations.length) {
214
215
  reference.setValue({ representations: sortedReps, switchingMode });
215
216
  return;
@@ -132,7 +132,7 @@ describe("core - decrypt - global tests - server certificate", () => {
132
132
  expect(mockSetServerCertificate).toHaveBeenCalledTimes(1);
133
133
  expect(mockCreateSession).toHaveBeenCalledTimes(1);
134
134
  done();
135
- }, 10);
135
+ }, 100);
136
136
  });
137
137
 
138
138
  /* eslint-disable max-len */
@@ -56,7 +56,7 @@ export default class CdnPrioritizer extends EventEmitter<ICdnPrioritizerEvents>
56
56
  * `metadata` array which is used considerably more than the `timeouts`
57
57
  * array.
58
58
  */
59
- timeouts : Array<number | NodeJS.Timeout>;
59
+ timeouts : number[];
60
60
  };
61
61
 
62
62
  /**
@@ -0,0 +1,19 @@
1
+ import { DASH_WASM as FEATURE_DASH_WASM } from "../dash_wasm";
2
+ import { DEBUG_ELEMENT as FEATURE_DEBUG_ELEMENT } from "../debug_element";
3
+ import {
4
+ DASH_WASM,
5
+ DEBUG_ELEMENT,
6
+ METAPLAYLIST,
7
+ LOCAL_MANIFEST,
8
+ } from "../index";
9
+ import { LOCAL_MANIFEST as FEATURE_LOCAL_MANIFEST } from "../local";
10
+ import { METAPLAYLIST as FEATURE_METAPLAYLIST } from "../metaplaylist";
11
+
12
+ describe("Experimental Features", () => {
13
+ it("should export all experimental features", () => {
14
+ expect(DASH_WASM).toBe(FEATURE_DASH_WASM);
15
+ expect(DEBUG_ELEMENT).toBe(FEATURE_DEBUG_ELEMENT);
16
+ expect(METAPLAYLIST).toBe(FEATURE_METAPLAYLIST);
17
+ expect(LOCAL_MANIFEST).toBe(FEATURE_LOCAL_MANIFEST);
18
+ });
19
+ });
@@ -17,3 +17,4 @@
17
17
  export { DASH_WASM } from "./dash_wasm";
18
18
  export { DEBUG_ELEMENT } from "./debug_element";
19
19
  export { METAPLAYLIST } from "./metaplaylist";
20
+ export { LOCAL_MANIFEST } from "./local";
@@ -0,0 +1,49 @@
1
+ import { DASH as DASH_FEATURE } from "../dash";
2
+ import { DIRECTFILE as DIRECTFILE_FEATURE } from "../directfile";
3
+ import { EME as EME_FEATURE } from "../eme";
4
+ import { HTML_SAMI_PARSER as HTML_SAMI_PARSER_FEATURE } from "../html_sami_parser";
5
+ import { HTML_SRT_PARSER as HTML_SRT_PARSER_FEATURE } from "../html_srt_parser";
6
+ import { HTML_TEXT_BUFFER as HTML_TEXT_BUFFER_FEATURE } from "../html_text_buffer";
7
+ import { HTML_TTML_PARSER as HTML_TTML_PARSER_FEATURE } from "../html_ttml_parser";
8
+ import { HTML_VTT_PARSER as HTML_VTT_PARSER_FEATURE } from "../html_vtt_parser";
9
+ import {
10
+ DASH,
11
+ DIRECTFILE,
12
+ EME,
13
+ HTML_SAMI_PARSER,
14
+ HTML_SRT_PARSER,
15
+ HTML_TEXT_BUFFER,
16
+ HTML_TTML_PARSER,
17
+ HTML_VTT_PARSER,
18
+ NATIVE_SAMI_PARSER,
19
+ NATIVE_SRT_PARSER,
20
+ NATIVE_TEXT_BUFFER,
21
+ NATIVE_TTML_PARSER,
22
+ NATIVE_VTT_PARSER,
23
+ SMOOTH,
24
+ } from "../index";
25
+ import { NATIVE_SAMI_PARSER as NATIVE_SAMI_PARSER_FEATURE } from "../native_sami_parser";
26
+ import { NATIVE_SRT_PARSER as NATIVE_SRT_PARSER_FEATURE } from "../native_srt_parser";
27
+ import { NATIVE_TEXT_BUFFER as NATIVE_TEXT_BUFFER_FEATURE } from "../native_text_buffer";
28
+ import { NATIVE_TTML_PARSER as NATIVE_TTML_PARSER_FEATURE } from "../native_ttml_parser";
29
+ import { NATIVE_VTT_PARSER as NATIVE_VTT_PARSER_FEATURE } from "../native_vtt_parser";
30
+ import { SMOOTH as SMOOTH_FEATURE } from "../smooth";
31
+
32
+ describe("Features list", () => {
33
+ it("should export all stable features", () => {
34
+ expect(DASH).toBe(DASH_FEATURE);
35
+ expect(DIRECTFILE).toBe(DIRECTFILE_FEATURE);
36
+ expect(EME).toBe(EME_FEATURE);
37
+ expect(HTML_SAMI_PARSER).toBe(HTML_SAMI_PARSER_FEATURE);
38
+ expect(HTML_SRT_PARSER).toBe(HTML_SRT_PARSER_FEATURE);
39
+ expect(HTML_TEXT_BUFFER).toBe(HTML_TEXT_BUFFER_FEATURE);
40
+ expect(HTML_TTML_PARSER).toBe(HTML_TTML_PARSER_FEATURE);
41
+ expect(HTML_VTT_PARSER).toBe(HTML_VTT_PARSER_FEATURE);
42
+ expect(NATIVE_SAMI_PARSER).toBe(NATIVE_SAMI_PARSER_FEATURE);
43
+ expect(NATIVE_SRT_PARSER).toBe(NATIVE_SRT_PARSER_FEATURE);
44
+ expect(NATIVE_TEXT_BUFFER).toBe(NATIVE_TEXT_BUFFER_FEATURE);
45
+ expect(NATIVE_TTML_PARSER).toBe(NATIVE_TTML_PARSER_FEATURE);
46
+ expect(NATIVE_VTT_PARSER).toBe(NATIVE_VTT_PARSER_FEATURE);
47
+ expect(SMOOTH).toBe(SMOOTH_FEATURE);
48
+ });
49
+ });
package/src/index.ts CHANGED
@@ -21,11 +21,36 @@
21
21
 
22
22
  import isDebugModeEnabled from "./compat/is_debug_mode_enabled";
23
23
  import Player from "./core/api";
24
- import initializeFeatures from "./features/initialize_features";
24
+ import {
25
+ DASH,
26
+ DIRECTFILE,
27
+ EME,
28
+ HTML_SAMI_PARSER,
29
+ HTML_SRT_PARSER,
30
+ HTML_TTML_PARSER,
31
+ HTML_VTT_PARSER,
32
+ NATIVE_SAMI_PARSER,
33
+ NATIVE_SRT_PARSER,
34
+ NATIVE_TTML_PARSER,
35
+ NATIVE_VTT_PARSER,
36
+ SMOOTH,
37
+ } from "./features/list";
25
38
  import logger from "./log";
26
39
 
27
- initializeFeatures();
28
-
40
+ Player.addFeatures([
41
+ SMOOTH,
42
+ DASH,
43
+ DIRECTFILE,
44
+ EME,
45
+ NATIVE_TTML_PARSER,
46
+ NATIVE_SAMI_PARSER,
47
+ NATIVE_VTT_PARSER,
48
+ NATIVE_SRT_PARSER,
49
+ HTML_TTML_PARSER,
50
+ HTML_SAMI_PARSER,
51
+ HTML_VTT_PARSER,
52
+ HTML_SRT_PARSER,
53
+ ]);
29
54
  if (isDebugModeEnabled()) {
30
55
  logger.setLevel("DEBUG");
31
56
  } else if (__ENVIRONMENT__.CURRENT_ENV as number === __ENVIRONMENT__.DEV as number) {
@@ -86,10 +86,10 @@ function regularSegmentLoader(
86
86
  */
87
87
  const generateSegmentLoader = ({
88
88
  checkMediaSegmentIntegrity,
89
- customSegmentLoader,
89
+ segmentLoader,
90
90
  } : {
91
91
  checkMediaSegmentIntegrity? : boolean | undefined;
92
- customSegmentLoader? : ICustomSegmentLoader | undefined;
92
+ segmentLoader? : ICustomSegmentLoader | undefined;
93
93
  }) => (
94
94
  url : string | null,
95
95
  context : ISegmentContext,
@@ -154,7 +154,7 @@ const generateSegmentLoader = ({
154
154
  return Promise.resolve({ resultType: "segment-created" as const,
155
155
  resultData: null });
156
156
  } else {
157
- if (typeof customSegmentLoader !== "function") {
157
+ if (typeof segmentLoader !== "function") {
158
158
  return regularSegmentLoader(url,
159
159
  context,
160
160
  callbacks,
@@ -266,7 +266,7 @@ const generateSegmentLoader = ({
266
266
  byteRanges,
267
267
  trackType: context.type,
268
268
  url };
269
- const abort = customSegmentLoader(args, customCallbacks);
269
+ const abort = segmentLoader(args, customCallbacks);
270
270
 
271
271
  cancelSignal.register(abortCustomLoader);
272
272
 
@@ -19,48 +19,6 @@
19
19
 
20
20
  /* eslint-disable @typescript-eslint/naming-convention */
21
21
 
22
- declare const __FEATURES__ : {
23
- IS_DISABLED : 0;
24
- IS_ENABLED : 1;
25
-
26
- DASH : 0 | 1;
27
- DIRECTFILE : 0 | 1;
28
- EME : 0 | 1;
29
- HTML_SAMI : 0 | 1;
30
- HTML_SRT : 0 | 1;
31
- HTML_TTML : 0 | 1;
32
- HTML_VTT : 0 | 1;
33
- LOCAL_MANIFEST : 0 | 1;
34
- METAPLAYLIST : 0 | 1;
35
- DEBUG_ELEMENT : 0 | 1;
36
- NATIVE_SAMI : 0 | 1;
37
- NATIVE_SRT : 0 | 1;
38
- NATIVE_TTML : 0 | 1;
39
- NATIVE_VTT : 0 | 1;
40
- SMOOTH : 0 | 1;
41
- } | typeof FEATURES_ENUM;
42
-
43
- declare const enum FEATURES_ENUM {
44
- IS_DISABLED,
45
- IS_ENABLED,
46
-
47
- DASH,
48
- DIRECTFILE,
49
- EME,
50
- HTML_SAMI,
51
- HTML_SRT,
52
- HTML_TTML,
53
- HTML_VTT,
54
- LOCAL_MANIFEST,
55
- METAPLAYLIST,
56
- DEBUG_ELEMENT,
57
- NATIVE_SAMI,
58
- NATIVE_SRT,
59
- NATIVE_TTML,
60
- NATIVE_VTT,
61
- SMOOTH,
62
- }
63
-
64
22
  declare const __ENVIRONMENT__ : {
65
23
  CURRENT_ENV : 0 | 1;
66
24
  DEV : 0;