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

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 (574) hide show
  1. package/CHANGELOG.md +220 -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.js +149 -153
  486. package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
  487. package/dist/_esm5.processed/transports/types.js +2 -1
  488. package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
  489. package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -18
  490. package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
  491. package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
  492. package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
  493. package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -10
  494. package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
  495. package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
  496. package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +5 -2
  497. package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
  498. package/dist/_esm5.processed/utils/array_find.js +7 -4
  499. package/dist/_esm5.processed/utils/array_find_index.js +6 -3
  500. package/dist/_esm5.processed/utils/array_includes.js +12 -11
  501. package/dist/_esm5.processed/utils/assert.js +13 -9
  502. package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
  503. package/dist/_esm5.processed/utils/base64.js +23 -18
  504. package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
  505. package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
  506. package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
  507. package/dist/_esm5.processed/utils/deep_merge.js +10 -21
  508. package/dist/_esm5.processed/utils/event_emitter.js +24 -24
  509. package/dist/_esm5.processed/utils/flat_map.js +7 -4
  510. package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
  511. package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
  512. package/dist/_esm5.processed/utils/id_generator.js +6 -3
  513. package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
  514. package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
  515. package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
  516. package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
  517. package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
  518. package/dist/_esm5.processed/utils/languages/index.js +7 -3
  519. package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
  520. package/dist/_esm5.processed/utils/logger.js +24 -23
  521. package/dist/_esm5.processed/utils/monotonic_timestamp.js +4 -1
  522. package/dist/_esm5.processed/utils/noop.js +4 -1
  523. package/dist/_esm5.processed/utils/object_assign.js +8 -10
  524. package/dist/_esm5.processed/utils/object_values.js +6 -3
  525. package/dist/_esm5.processed/utils/ranges.js +94 -71
  526. package/dist/_esm5.processed/utils/reference.js +48 -52
  527. package/dist/_esm5.processed/utils/request/fetch.js +79 -109
  528. package/dist/_esm5.processed/utils/request/index.js +9 -4
  529. package/dist/_esm5.processed/utils/request/xhr.js +49 -37
  530. package/dist/_esm5.processed/utils/resolve_url.js +18 -18
  531. package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
  532. package/dist/_esm5.processed/utils/sleep.js +5 -2
  533. package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
  534. package/dist/_esm5.processed/utils/sorted_list.js +37 -40
  535. package/dist/_esm5.processed/utils/starts_with.js +5 -2
  536. package/dist/_esm5.processed/utils/string_parsing.js +84 -73
  537. package/dist/_esm5.processed/utils/take_first_set.js +9 -10
  538. package/dist/_esm5.processed/utils/task_canceller.js +51 -71
  539. package/dist/_esm5.processed/utils/warn_once.js +7 -4
  540. package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
  541. package/dist/_esm5.processed/utils/wrapInPromise.js +5 -2
  542. package/dist/mpd-parser.wasm +0 -0
  543. package/dist/rx-player.js +43838 -45573
  544. package/dist/rx-player.min.js +1 -1
  545. package/jest.config.js +1 -22
  546. package/package.json +22 -23
  547. package/scripts/build/constants.d.ts +1 -23
  548. package/scripts/build/generate_build.js +1 -1
  549. package/scripts/check_nodejs_import_compatibility.js +1 -1
  550. package/scripts/update-version +1 -4
  551. package/sonar-project.properties +1 -1
  552. package/src/compat/event_listeners.ts +8 -8
  553. package/src/compat/global_scope.ts +2 -0
  554. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
  555. package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
  556. package/src/core/adaptive/buffer_based_chooser.ts +1 -1
  557. package/src/core/adaptive/network_analyzer.ts +5 -4
  558. package/src/core/api/public_api.ts +2 -2
  559. package/src/core/api/track_management/track_dispatcher.ts +2 -1
  560. package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
  561. package/src/core/fetchers/cdn_prioritizer.ts +1 -1
  562. package/src/experimental/features/__tests__/index.test.ts +19 -0
  563. package/src/experimental/features/index.ts +1 -0
  564. package/src/features/list/__tests__/index.test.ts +49 -0
  565. package/src/index.ts +28 -3
  566. package/src/typings/globals.d.ts +0 -42
  567. package/src/utils/request/fetch.ts +1 -1
  568. package/src/utils/request/xhr.ts +1 -1
  569. package/tsconfig.json +1 -1
  570. package/tsconfig.modules.json +3 -3
  571. package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
  572. package/dist/_esm5.processed/features/initialize_features.js +0 -108
  573. package/src/features/__tests__/initialize_features.test.ts +0 -657
  574. package/src/features/initialize_features.ts +0 -129
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## v4.0.0-dev.2023092900 (2023-09-29)
3
+ ## v4.0.0-dev.2023102600 (2023-10-26)
4
+
5
+ ### Bug Fixes
6
+
7
+ - Fix export of the `LOCAL_MANIFEST` experimental feature [#1305]
8
+
9
+
10
+ ## v4.0.0-beta.3 (2023-10-19)
4
11
 
5
12
  ### Changes
6
13
 
@@ -8,6 +15,168 @@
8
15
  - The `manifestUpdateUrl` `loadVideo` option has been removed as it was unused [#1276]
9
16
  - The `/dist` directory in the project has been removed [#1270]
10
17
 
18
+ ### Bug fixes
19
+
20
+ - Fix adaptive logic on some legacy Edge browsers [#1302]
21
+
22
+ ### Other improvements
23
+
24
+ - `newAvailablePeriods` is now sent lazily at the time new Periods are considered to improve performance [#1265]
25
+ - Implement better error messages by not repeating the Error Type in it [#1290]
26
+ - All import path to the RxPlayer now depend on the same RxPlayer modular build (and not just the minimal, as before) [#1301]
27
+
28
+
29
+ ## v4.0.0-beta.2 (2023-06-27)
30
+
31
+ ### Changes
32
+
33
+ - If all Representations from the current track become undecipherable, automatically switch to another track (also send a `trackUpdate` event) instead of stopping on error [#1234]
34
+ - Only send `MediaError` errors with the `NO_PLAYABLE_REPRESENTATION` error code when no Representation from all tracks of a given type can be played [#1234]
35
+
36
+ ### Features
37
+
38
+ - Add `representationListUpdate` event for when the list of available Representation for a current track changes [#1240]
39
+ - Add `"no-playable-representation"` as a `reason` for `trackUpdate` events when the track switch is due to encrypted Representations [#1234]
40
+
41
+ ### Other improvements
42
+
43
+ - DRM: Reload when playback is unexpectedly frozen with encrypted but only decipherable data in the buffer to work-around rare encryption-related issues [#1236]
44
+
45
+
46
+ ## v4.0.0-beta.1 (2023-03-08)
47
+
48
+ ### Bug fixes
49
+
50
+ - (v4.0.0-beta.0-only issue) Fix memory leak
51
+ - (v4.0.0-beta.0-only issue) Fix MediaSource duration when the maximum buffered end is inferior to current duration but superior to calculated duration
52
+ - (v4.0.0-beta.0-only issue) Fix `stopAtEnd` option by also switching to STOPPED state on ended
53
+ - (v4.0.0-beta.0-only issue) Fix some target's support by not relying on `Promise.prototype.finally` anymore [#1224]
54
+ - (v4.0.0-beta.0-only issue) For dynamic contents, always set a very high duration [#1220]
55
+ - (v4.0.0-beta.0-only issue) DRM: Fix fallbacking for an already-played content by checking key statuses initially linked to a MediaKeySession
56
+
57
+ ### Other improvements
58
+
59
+ - Based on the v3.30.0 of which it inherits all the features, bug fixes and other improvements
60
+
61
+
62
+ ## v4.0.0-beta.0 (2023-01-27)
63
+
64
+ ### Changes
65
+
66
+ - Create `"FREEZING"` player state for cases where the playback position is currently not advancing due to an unknown reason, to separate it from regular `"BUFFERING"`. [#1146]
67
+ - The `RELOADING` player state (gettable through the `getPlayerState` and `playerStateChange` API) can now happen at any time to unlock playback.
68
+ - Remove bitrate API: `getAvailableVideoBitrates`, `getAvailableAudioBitrates`, `setAudioBitrate`, `setVideoBitrate`, `getAudioBitrate`, `getVideoBitrate` in profit of the Representations lock APIs [#1144]
69
+ - Remove max bitrate API: `setMaxVideoBitrate`, `setMaxAudioBitrate`, `getMaxVideoBitrate` and `getMaxAudioBitrate` methods as well as the `maxVideoBitrate` and `maxAudioBitrate` options in profit of the Representations lock APIs
70
+ - Remove min bitrate API: `setMinVideoBitrate`, `setMinAudioBitrate`, `getMinVideoBitrate` and `getMinAudioBitrate` methods as well as the `minVideoBitrate` and `minAudioBitrate` options in profit of the Representations lock APIs
71
+ - Remove track preferences API (methods: `getPreferredAudioTracks`, `getPreferredVideoTracks`, `setPreferredAudioTracks` and `setPreferredVideoTracks`, types: `IAudioTrackPreference`, `ITextTrackPreference` and `IVideoTrackPreference`) in profit of the new tracks API
72
+ - Remove `getManualVideoBitrate` and `getManualAudioBitrate` in profit of the new Representations lock APIs
73
+ - Replace `initialAudioBitrate` and `initialVideoBitrate` constructor options with a single `baseBandwidth` option, which better translates what this option is actually doing and allows for future optimizations on our side. [#1155]
74
+ - Rename `audioTrackSwitchingMode` loadVideo option into `defaultAudioTrackSwitchingMode` [#1030]
75
+ - Remove `manualBitrateSwitchingMode` loadVideo option to instead rely on the `switchingMode` property of each `lockVideoRepresentations` and `lockAudioRepresentations` calls. [#1030]
76
+ - Remove `audioBitrateChange` and `videoBitrateChange` events in profit of the new `audioRepresentationChange` and `videoRepresentationChange` events
77
+ - Remove `availableAudioBitratesChange` and `availableVideoBitratesChange` events. Those are less needed with the new Representations lock API and can be mostly replicated through the `audioTrackChange` and `videoTrackChange` events
78
+ - "Flatten" the `transportOptions` loadVideo options by putting all its inner properties directly at the top level of loadVideo options, to simplify its documentation and discoverability [#1149]
79
+ - Remove `limitVideoWidth` constructor option in profit of the more configurable `videoResolutionLimit` constructor option
80
+ - Rename `networkConfig` into `requestConfig` and re-organize its inner properties to pave the way for future request-related APIs.
81
+ - Remove `stopAtEnd` `loadVideo` option and don't automatically stop when reaching the end by default. This behavior can be counter-intuitive and can be very easily implemented by the application.
82
+ - Remove `decipherabilityUpdate` event as it appeared to be not easily exploitable and exposed internal logic too much [#1168]
83
+ - Remove `getUrl` method in profit of the more powerful `getContentUrls`
84
+ - Impossibility to play the content due to unsupported audio and/or video tracks now triggers an error with the `MANIFEST_INCOMPATIBLE_CODECS_ERROR` instead of `MANIFEST_PARSE_ERROR`
85
+ - Remove methods: `getManifest`, `getCurrentAdaptations` and `getCurrentRepresentations`, as they reveal the RxPlayer's internals too much
86
+ - The `"smooth"` transport now needs to be communicated the URL of the Manifest directly (previously, it was possible to redirect it to a XML or JSON file first due to Canal+ legacy reasons).
87
+ - Remove the `supplementaryTextTracks` loadVideo option. You can use the `TextTrackRenderer` tool if you wish to diplay external subtitles on top of your content.
88
+ - Rename `maximumBufferTime` in `positionUpdate` events to `maximumPosition`
89
+ - Remove `getVideoPlayedTime` and `getVideoLoadedTime` methods. Their names was very confusing and can be re-implemented relatively easily using the media element's buffered property.
90
+ - Rename `getVideoDuration` to `getMediaDuration`, to avoid confusion with the video track's duration.
91
+ - Rename `getVideoBufferGap` to `getCurrentBufferGap, to avoid confusion with the "buffer gap" specific to the video track.
92
+ - Remove image-related API: `supplementaryImageTracks` `loadVideo` option, `imageTrackUpdate` event, `getImageTrackData` method. Those are better handled by an application. The `parseBifThumbnails` tool is still available.
93
+ - Replace `keySystems[].licenseStorage` `keySystems` option (for a `loadVideo` call) by the better-named `persistentLicenseConfig`. The `persistentLicense` boolean (also a `keySystems` option) has also been removed because it was redundant with it) [#1147]
94
+ - Remove `persistentStateRequired` API, in profit of the more powerful `persistentState` API [#1148]
95
+ - Remove `distinctiveIdentifierRequired` API, in profit of the more powerful `distinctiveIdentifier` API [#1148]
96
+ - Remove `keySystems[].fallbackOn` `loadVideo` property as it's now replaced by the more powerful `keySystems[].onKeyOutputRestricted` and `keySystems[].onKeyInternalError` properties.
97
+ - Remove `keySystems[].onKeyStatusesChange` API as it seems to never be used [#1148]
98
+ - Remove `keySystems[].throwOnLicenseExpiration` API as it can now be fully replaced by the `keySystems[].onKeyExpiration` option
99
+ - Remove `aggressiveMode` from the `transportOptions` `loadVideo` option
100
+ - Remove deprecated `throttleWhenHidden` player option in profit of `throttleVideoBitrateWhenHidden`
101
+ - Change payload of `periodChange` events, so they emit only core properties related to a `Period`.
102
+ - Change arguments given to a `transportOptions.segmentLoader` function (the `loadVideo` option): it now doesn't give the full `Manifest`, `Period`, `Adaptation`, `Representation` and `ISegment` structures in arguments but only core properties from it [#995]
103
+ - Custom `manifestLoader` function added to what was previously the `loadVideo`'s `transportOptions` option now set an object as argument (with an `url`property), to let us bring improvements on it in the future [#995]
104
+ - A Representation's `frameRate` is now always a number - in terms of frame per seconds - instead of a string.
105
+ - Update the arguments of the `representationFilter` API
106
+ - `Representations` (in methods: `getAvailableVideoTracks`, `getVideoTrack`, `representationFilter`, `getAvailableAudioTracks`, `getAudioTrack` and events: `audioTrackChange` and `videoTrackChange`) can have an `undefined` bitrate
107
+ - Remove deprecated fullscreen related APIs (methods: `isFullscreen`, `setFullscreen`, `exitFullscreen`, event: `fullscreenChange`) as a a UI is much more adapted to that task and can also bring with it things like a progress bar or HTML text tracks
108
+ - Remove deprecated `getNativeTextTrack` method. If advanced features are wanted, it's better to just use the HTML text track API
109
+ - Remove deprecated `nativeTextTracksChange` event. Same reason than for `getNativeTextTrack`
110
+ - Remove deprecated `hideNativeSubtitles` from `loadVideo` options. Same reason than for `getNativeTextTrack`
111
+ - Remove `xhr` property from a `NetworkError`. Doing so stop us from using the fetch API
112
+ - Remove deprecated `defaultAudioTrack` and `defaultTextTrack`in profit of new track APIs
113
+ - Remove `bitrateEstimationChange` event as it is poorly understood (it's not always close to the expected bandwidth) and has a very complex relationship with the chosen quality.
114
+ - Remove the notion of environment variables linked to personalized builds (e.g. RXP_DASH) in profit of the minimal RxPlayer.
115
+ - Rename `IPersistentSessionStorage` type to `IPersistentLicenseConfig` [#1147]
116
+ - Remove undocumented `audioRobustnesses` and `videoRobustnesses` properties of the `keySystems` option of `loadVideo` calls, as more powerful solutions now exist: respectively `audioCapabilitiesConfig` and `videoCapabilitiesConfig` [#1148]
117
+ - Remove public types `ISupplementaryTextTrackOption` and `ISupplementaryImageTrackOption`. Those are the types respectively for `supplementaryTextTracks` and `supplementaryImageTracks` which have been removed
118
+ - Remove public types `IBitrateEstimate` as no API depend on it anymore.
119
+ - Remove public types `IManifest`, `IPeriod`, `IAdaptation`, `IRepresentation`, `IRepresentationInfos`, `IBifThumbnail`, `IBifObject` and `IExposedSegment` as no API depend on them anymore.
120
+ - Remove public types `IDefaultAudioTrackOption` and `IDefaultTextTrackOption`. Those are the types respectively for `defaultAudioTrack` and `defaultTextTrack` `loadVideo` options which have been removed
121
+ - Remove public types `IAudioTrackPreference`, `ITextTrackPreference` and `IVideoTrackPreference` as the corresponding API do not exist anymore.
122
+ - Stop officially supporting the Internet Explorer 11 browser
123
+
124
+ ### Features
125
+
126
+ - `setAudioTrack`, `setVideoTrack` and `setTextTrack` now may take an object in argument, with the track's id set as a `trackId` property, to allow new features
127
+ - Add `switchingMode` optional property to `setVideoTrack` and `setAudioTrack`, to configure the way in which the RxPlayer switches between the previous and new track
128
+ - Add optional `periodId` property to `setAudioTrack`, `setVideoTrack` and `setTextTrack`, to allow setting the track of another, future or past, Period.
129
+ - `getAvailableAudioTracks`, `getAvailableTextTracks`, `getAvailableVideoTracks`, `getAudioTrack`, `getTextTrack` and `getVideoTrack` can now optionally take a `periodId` argument to retrieve track information on a specific Period, different than the current one.
130
+ - `disableTextTrack`, and`disableVideoTrack` can now optionally take a `periodId` argument to disable a track for a specific Period
131
+ - Add optional `lockedRepresentations` property to `setAudioTrack` and `setVideoTrack`, to only filter some allowed Representations (i.e. qualities) after switching to the wanted track.
132
+ - Add `getCurrentPeriod` method to retrieve information on the Period currently played
133
+ - Add `getAvailablePeriods` method to retrieve information on all Periods on which a track or Representation choice can be made
134
+ - Add `lockVideoRepresentations`, `lockAudioRepresentations`, `getLockedVideoRepresentations`, `getLockedAudioRepresentations`, `unlockVideoRepresentations` and `unlockAudioRepresentations` methods to allow a complex selection of Representations that are currently allowed to play.
135
+ - Add `getVideoRepresentation` and `getAudioRepresentation` method to retrieve information on the currently loaded representations [#1144]
136
+ - Add `audioRepresentationChange` and `videoRepresentationChange` events to be notified when the currently-loaded Representation for the current Period changes.
137
+ - Add `updateContentUrls` API, allowing to update the Manifest's URL during playback [#1182]
138
+ - DASH: implement forced-subtitles, adding the `forced` property to the audio tracks API and selecting by default a forced text track linked to the audio track's language if present [#1187]
139
+ - Add `getContentUrls` allowing to retrieve the one or several known URLs through which the current Manifest or content is reachable.
140
+ - Add `videoResolutionLimit` constructor option allowing to automatically limit a video Representation's resolution.
141
+ - Add `newAvailablePeriods` event to signal new Period on which a track and/or Representation choice can be made
142
+ - Add `brokenRepresentationsLock` event for when a Representations lock could not be respected anymore
143
+ - Add `trackUpdate` event for when a track has been updated for any type and Period
144
+ - Add `distinctiveIdentifier` property in the `keySystems` option (given to the `loadVideo` method) to have full control over the MediaKeySystemConfiguration of the same name in the chosen key system [#1148]
145
+ - Add `persistentState` property in the `keySystems` option (given to the `loadVideo` method) to have full control over the MediaKeySystemConfiguration of the same name in the chosen key system [#1148]
146
+ - Add `keySystems[].onKeyOutputRestricted` and `keySystems[].onKeyInternalError` properties to configure the RxPlayer's behavior when a key switches to the status respectively `"output-restricted"` and `"internal-error"`
147
+ - Add `audioCapabilitiesConfig` and `videoCapabilitiesConfig` properties in the `keySystems` option (given to the `loadVideo` method) to allow advanced configuration of respectively the "audioCapabilities" and "videoCapabilities" in the asked MediaKeySystemConfiguration [#1148]
148
+ - Add `ISegmentLoaderContext` public type for the first argument of the `segmentLoader` API
149
+ - Add `IRepresentationFilterRepresentation` public type for the first argument of the `representationFilter` API
150
+ - Add `IRepresentationContext` public type for the second argument of the `representationFilter` API
151
+ - Add `IManifestLoaderInfo` public type for the first argument of the `manifestLoader` API
152
+ - Add `IPeriodChangeEvent` public type to define the properties send through a `periodChange` event
153
+ - Add `IPeriod` public type to define a Period object returned by methods like `getAvailablePeriods` or `getCurrentPeriod`
154
+ - Add `IVideoTrackSwitchingMode` public type to define the type of the `switchingMode` property optionally given to `setAudioTrack`
155
+ - Add `IAudioRepresentationsSwitchingMode` public type to define the type of the `switchingMode` property optionally given to `lockAudioRepresentations`
156
+ - Add `IVideoRepresentationsSwitchingMode` public type to define the type of the `switchingMode` property optionally given to `lockAudioRepresentations`
157
+ - Add `IBrokenRepresentationsLockContext` public type to define the type sent as a payload of the `brokenRepresentationsLock` event
158
+ - Add `ITrackUpdateEventPayload` public type to define the type sent as a payload of the `trackUpdate` event
159
+ - Add `ILockedVideoRepresentationsSettings` public type to define the object that should be given to the new `lockVideoRepresentation` method
160
+ - Add `ILockedAudioRepresentationsSettings` public type to define the object that should be given to the new `lockAudioRepresentation` method
161
+ - Add `IAudioTrackSetting` public type to define the object that may be given to the `setAudioTrack` method
162
+ - Add `IVideoTrackSetting` public type to define the object that may be given to the `setVideoTrack` method
163
+ - Add `ITextTrackSetting` public type to define the object that may be given to the `setTextTrack` method
164
+
165
+ ### Bug fixes
166
+
167
+ - Fix segment requesting error when playing a DASH content without an url and without BaseURL elements [#1192]
168
+ - API: Stop sending events if the content is stopped due to a side-effect of one of the event handler [#1197]
169
+ - text-tracks/ttml: fix inconsistent line spacing when resizing the `textTrackElement` [#1191]
170
+ - DRM: Fix race condition leading to a JS error instead of a `NO_PLAYABLE_REPRESENTATION` [#1201]
171
+ - DRM/Compat: Renew MediaKeys at each `loadVideo` on all WebOS (LG TV) platforms to work around issues [#1188]
172
+
173
+ ### Other improvements
174
+
175
+ - Remove dependency to RxJS, improving the debugging experience and preventing some uncaught Error from being thrown
176
+
177
+
178
+ ## v3.32.1 (2023-10-19)
179
+
11
180
  ### Features
12
181
 
13
182
  - DASH: add optional `isSpatialAudio` boolean property to Representation returned by `getAvailableAudioTracks`, `getAudioTrack`, corresponding events, and `trackInfo` optional property of `MediaError` objects to signal Dolby Atmos techology [#1275]
@@ -24,39 +193,78 @@
24
193
 
25
194
  ### Other improvements
26
195
 
27
- - `newAvailablePeriods` is now sent lazily at the time new Periods are considered to improve performance [#1265]
28
196
  - Do not load the last text segment if the current position goes after it as it is unnecessary [#1256]
29
- - Implement better error messages by not repeating the Error Type in it [#1273]
30
197
  - Implement better `NetworkError` messages [#1274]
31
198
  - Set a better error message for when no `keySystems` option is set when playing an encrypted content
32
199
  - Fix very small memory leak when reloading a content [#1286]
33
- - TTML: put saner values for extent and origins when weird ones are found
34
200
  - Re-check for segments to load immediately after the manifest has been refreshed [#1282]
35
201
  - When "fallbacking" an undecipherable Representation, now empty the whole buffer if we can't make out where content was in the buffer [#1283]
36
- - DRM: Reload when playback is unexpectedly frozen with encrypted but only decipherable data in the buffer [#1236]
37
202
  - Improve segment start detection in buffer when there's unknown data buffered before it [#1284]
38
203
  - DRM: Selection of alternative EME API like those used on IE11 or Safari has been refactored to facilitate future developments [#1261]
39
204
 
40
205
  ### Deprecated
41
206
 
207
+ - Deprecate the `manifestUpdateUrl` `loadVideo` option as it doesn't seem used anymore [#1288]
42
208
  - Deprecate the `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features as they are now unneeded [#1287, #1293]
43
209
 
44
210
 
45
- ## v4.0.0-beta.2 (2023-06-27)
211
+ ## v3.31.0 (2023-06-14)
46
212
 
47
- ### Changes
213
+ ### Features
48
214
 
49
- - If all Representations from the current track become undecipherable, automatically switch to another track (also send a `trackUpdate` event) instead of stopping on error [#1234]
50
- - Only send `MediaError` errors with the `NO_PLAYABLE_REPRESENTATION` error code when no Representation from all tracks of a given type can be played [#1234]
215
+ - Add `isContentLoaded`, `isBuffering`, `isPaused`, and `getLastStoredContentPosition` methods [#1248]
216
+ - Add `play` and `paused` events [#1253]
217
+ - Add `trackInfo` property to some `MediaError` to expose information on the track that caused the error [#1241]
218
+
219
+ ### Bug fixes
220
+
221
+ - DASH: Fix issue which could lead to infinite rebuffering when switching between multiple Periods [#1232]
222
+ - Return actual ending duration through the `getVideoDuration` method when playing dynamic contents whose future end is already known [#1235]
223
+ - DASH/WASM: actually reject the `DASH_WASM.initialize`'s Promise if it fails [#1238]
224
+ - On the PlayStation 5, set `Infinity` MediaSource duration for live contents to prevent playback issues [#1250]
225
+
226
+ ### Other improvements
227
+
228
+ - adaptive: Perform various adaptive tweaks to avoid switching too much between qualities in some conditions [#1237]
229
+ - Directfile: Detect "forced" subtitles on Safari when playing directfile contents (such as HLS) [#1239]
230
+ - Improve `"direct"` `audioTrackSwitchingMode` compatibility by re-seeking [#1246]
231
+ - The `DEBUG_ELEMENT` feature now uses the `monospace` fallback font as a default for a better rendering on apple devices
232
+ - doc: externalize documentation-generator code
233
+
234
+
235
+ ## v3.32.0
51
236
 
52
237
  ### Features
53
238
 
54
- - Add `representationListUpdate` event for when the list of available Representation for a current track changes [#1240]
55
- - Add `"no-playable-representation"` as a `reason` for `trackUpdate` events when the track switch is due to encrypted Representations [#1234]
239
+ - DASH: add optional `isSpatialAudio` boolean property to Representation returned by `getAvailableAudioTracks`, `getAudioTrack`, corresponding events, and `trackInfo` optional property of `MediaError` objects to signal Dolby Atmos techology [#1275]
240
+ - `LOCAL`: add `isSpatialAudio` property to Representation of the experiment `"local"` transport (used for offline playback) [#1275]
241
+ - `addFeatures` static method is now available on all RxPlayer builds. It was previously only in the minimal (`rx-player/minimal` import path) [#1287]
242
+ - The `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features are now totally optional [#1287, #1293]
243
+
244
+ ### Bug fixes
245
+
246
+ - Fix `setVideoBitrate` and `setAudioBitrate` API which may have led to a higher quality than wanted in the default `"seamless"` `manualBitrateSwitchingMode` if our buffer-based adaptive logic decided to [#1267, #1271]
247
+ - On the PlayStation 5, only switch to the `"LOADED"` state once the HTMLMediaElement's `readyState` of `4` has been reached, as it seems to switch to `3` too soon there [#1257]
248
+ - DASH: Fix potential track duplication if more than two `AdaptationSet` have an `adaptation-set-switching` `<SupplementalProperty>` between one another [#1279]
249
+ - DASH-WASM: availabilityTimeOffset is actually a floating number [#1278]
56
250
 
57
251
  ### Other improvements
58
252
 
59
- - DRM: Reload when playback is unexpectedly frozen with encrypted but only decipherable data in the buffer to work-around rare encryption-related issues [#1236]
253
+ - Do not load the last text segment if the current position goes after it as it is unnecessary [#1256]
254
+ - Implement better `NetworkError` messages [#1274]
255
+ - Set a better error message for when no `keySystems` option is set when playing an encrypted content
256
+ - Fix very small memory leak when reloading a content [#1286]
257
+ - Re-check for segments to load immediately after the manifest has been refreshed [#1282]
258
+ - When "fallbacking" an undecipherable Representation, now empty the whole buffer if we can't make out where content was in the buffer [#1283]
259
+ - Improve segment start detection in buffer when there's unknown data buffered before it [#1284]
260
+ - DRM: Selection of alternative EME API like those used on IE11 or Safari has been refactored to facilitate future developments [#1261]
261
+
262
+ ### Deprecated
263
+
264
+ - Deprecate the `manifestUpdateUrl` `loadVideo` option as it doesn't seem used anymore [#1288]
265
+ - Deprecate the `NATIVE_TEXT_BUFFER`, `HTML_TEXT_BUFFER` and `IMAGE_BUFFER` features as they are now unneeded [#1287, #1293]
266
+
267
+
60
268
  ## v3.31.0 (2023-06-14)
61
269
 
62
270
  ### Features
package/FILES.md CHANGED
@@ -22,10 +22,6 @@ At the time of writing, there are two distinct demos:
22
22
 
23
23
  The `demo/` directory stores the player builds of the last version released.
24
24
 
25
- Contains the minified (``rx-player.min.js``) and the non-minified files
26
- (``rx-player.js``). Both are automatically generated with scripts at every new
27
- release.
28
-
29
25
  Two directories, namely ``_esm5.raw`` and ``_esm5.processed`` can also be
30
26
  generated in here if the right scripts are called.
31
27
  These allow to publish more modular codebases to npm.
package/MAINTAINERS.md CHANGED
@@ -16,6 +16,7 @@ RxPlayer-related question or to propose new features.
16
16
  Here is the list of current maintainers:
17
17
 
18
18
  - Paul Berberian <paul.berberian@canal-plus.com>
19
+ - Florent Bouisset <florent.bouisset@canal-plus.com>
19
20
 
20
21
 
21
22
  ## Previous maintainers ########################################################
package/README.md CHANGED
@@ -205,27 +205,6 @@ npm install
205
205
  ```
206
206
 
207
207
 
208
- ### Build ######################################################################
209
-
210
- We use npm scripts to bundle, lint and test the player. Here are some examples:
211
- ```sh
212
- # build the player in dist/rx-player.js
213
- npm run build
214
-
215
- # lint the code in src/ with eslint
216
- npm run lint
217
-
218
- # launch the demo on a local server (http://127.0.0.1:8000)
219
- npm run start
220
-
221
- # launch our test suite on various browsers
222
- npm run test
223
-
224
- # list all available npm scripts
225
- npm run list
226
- ```
227
-
228
-
229
208
  ## Why a new player? ###########################################################
230
209
 
231
210
  ### A need for an advanced media player ########################################
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.0.0-dev.2023092900
1
+ 4.0.0-dev.2023102600
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,14 +14,15 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- var hasClassList;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ let hasClassList;
17
19
  /**
18
20
  * Add className to an HTMLElement. Do nothing if the className was already
19
21
  * added.
20
22
  * @param {HTMLElement} elt
21
23
  * @param {string} className
22
24
  */
23
- export default function addClassName(elt, className) {
25
+ function addClassName(elt, className) {
24
26
  if (hasClassList === undefined) {
25
27
  hasClassList = elt.classList !== undefined &&
26
28
  /* eslint-disable @typescript-eslint/unbound-method */
@@ -31,9 +33,10 @@ export default function addClassName(elt, className) {
31
33
  elt.classList.add(className);
32
34
  }
33
35
  else {
34
- var classNamesWithSpaces = " " + elt.className + " ";
36
+ const classNamesWithSpaces = " " + elt.className + " ";
35
37
  if (classNamesWithSpaces.indexOf(" " + className + " ") < 0) {
36
38
  elt.className += " " + className;
37
39
  }
38
40
  }
39
41
  }
42
+ exports.default = addClassName;
@@ -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 { isIEOrEdge } from "./browser_detection";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const browser_detection_1 = require("./browser_detection");
17
19
  /**
18
20
  * Add text track to the given media element.
19
21
  *
@@ -25,13 +27,13 @@ import { isIEOrEdge } from "./browser_detection";
25
27
  * @param {HTMLMediaElement} mediaElement
26
28
  * @returns {Object}
27
29
  */
28
- export default function addTextTrack(mediaElement) {
30
+ function addTextTrack(mediaElement) {
29
31
  var _a;
30
- var track;
31
- var trackElement;
32
- var kind = "subtitles";
33
- if (isIEOrEdge) {
34
- var tracksLength = mediaElement.textTracks.length;
32
+ let track;
33
+ let trackElement;
34
+ const kind = "subtitles";
35
+ if (browser_detection_1.isIEOrEdge) {
36
+ const tracksLength = mediaElement.textTracks.length;
35
37
  track = (tracksLength > 0 ? mediaElement.textTracks[tracksLength - 1] :
36
38
  mediaElement.addTextTrack(kind));
37
39
  track.mode = (_a = track.SHOWING) !== null && _a !== void 0 ? _a : "showing";
@@ -43,5 +45,6 @@ export default function addTextTrack(mediaElement) {
43
45
  trackElement.kind = kind;
44
46
  track.mode = "showing";
45
47
  }
46
- return { track: track, trackElement: trackElement };
48
+ return { track, trackElement };
47
49
  }
50
+ exports.default = addTextTrack;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,21 +14,24 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import isNullOrUndefined from "../utils/is_null_or_undefined";
17
- import globalScope from "./global_scope";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.READY_STATES = exports.MediaSource_ = void 0;
19
+ const is_null_or_undefined_1 = require("../utils/is_null_or_undefined");
20
+ const global_scope_1 = require("./global_scope");
18
21
  /* eslint-disable */
19
22
  /** MediaSource implementation, including vendored implementations. */
20
- var gs = globalScope;
21
- var MediaSource_ = gs === undefined ? undefined :
22
- !isNullOrUndefined(gs.MediaSource) ? gs.MediaSource :
23
- !isNullOrUndefined(gs.MozMediaSource) ? gs.MozMediaSource :
24
- !isNullOrUndefined(gs.WebKitMediaSource) ? gs.WebKitMediaSource :
23
+ const gs = global_scope_1.default;
24
+ const MediaSource_ = gs === undefined ? undefined :
25
+ !(0, is_null_or_undefined_1.default)(gs.MediaSource) ? gs.MediaSource :
26
+ !(0, is_null_or_undefined_1.default)(gs.MozMediaSource) ? gs.MozMediaSource :
27
+ !(0, is_null_or_undefined_1.default)(gs.WebKitMediaSource) ? gs.WebKitMediaSource :
25
28
  gs.MSMediaSource;
29
+ exports.MediaSource_ = MediaSource_;
26
30
  /* eslint-enable */
27
31
  /** List an HTMLMediaElement's possible values for its readyState property. */
28
- var READY_STATES = { HAVE_NOTHING: 0,
32
+ const READY_STATES = { HAVE_NOTHING: 0,
29
33
  HAVE_METADATA: 1,
30
34
  HAVE_CURRENT_DATA: 2,
31
35
  HAVE_FUTURE_DATA: 3,
32
36
  HAVE_ENOUGH_DATA: 4 };
33
- export { MediaSource_, READY_STATES, };
37
+ exports.READY_STATES = READY_STATES;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,92 +14,106 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import globalScope from "./global_scope";
17
- import isNode from "./is_node";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.isWebOs2022 = exports.isWebOs2021 = exports.isWebOs = exports.isTizen = exports.isSamsungBrowser = exports.isSafariMobile = exports.isSafariDesktop = exports.isPlayStation5 = exports.isPanasonic = exports.isFirefox = exports.isIEOrEdge = exports.isIE11 = exports.isEdgeChromium = void 0;
19
+ const global_scope_1 = require("./global_scope");
20
+ const is_node_1 = require("./is_node");
18
21
  /** Edge Chromium, regardless of the device */
19
- var isEdgeChromium = false;
22
+ let isEdgeChromium = false;
23
+ exports.isEdgeChromium = isEdgeChromium;
20
24
  /** IE11, regardless of the device */
21
- var isIE11 = false;
25
+ let isIE11 = false;
26
+ exports.isIE11 = isIE11;
22
27
  /** IE11 or Edge __Legacy__ (not Edge Chromium), regardless of the device */
23
- var isIEOrEdge = false;
28
+ let isIEOrEdge = false;
29
+ exports.isIEOrEdge = isIEOrEdge;
24
30
  /** Firefox, regardless of the device */
25
- var isFirefox = false;
31
+ let isFirefox = false;
32
+ exports.isFirefox = isFirefox;
26
33
  /** `true` on Safari on a PC platform (i.e. not iPhone / iPad etc.) */
27
- var isSafariDesktop = false;
34
+ let isSafariDesktop = false;
35
+ exports.isSafariDesktop = isSafariDesktop;
28
36
  /** `true` on Safari on an iPhone, iPad & iPod platform */
29
- var isSafariMobile = false;
37
+ let isSafariMobile = false;
38
+ exports.isSafariMobile = isSafariMobile;
30
39
  /** Samsung's own browser application */
31
- var isSamsungBrowser = false;
40
+ let isSamsungBrowser = false;
41
+ exports.isSamsungBrowser = isSamsungBrowser;
32
42
  /** `true` on devices where Tizen is the OS (e.g. Samsung TVs). */
33
- var isTizen = false;
43
+ let isTizen = false;
44
+ exports.isTizen = isTizen;
34
45
  /** `true` on devices where WebOS is the OS (e.g. LG TVs). */
35
- var isWebOs = false;
46
+ let isWebOs = false;
47
+ exports.isWebOs = isWebOs;
36
48
  /** `true` specifically for WebOS 2021 version. */
37
- var isWebOs2021 = false;
49
+ let isWebOs2021 = false;
50
+ exports.isWebOs2021 = isWebOs2021;
38
51
  /** `true` specifically for WebOS 2022 version. */
39
- var isWebOs2022 = false;
52
+ let isWebOs2022 = false;
53
+ exports.isWebOs2022 = isWebOs2022;
40
54
  /** `true` for Panasonic devices. */
41
- var isPanasonic = false;
55
+ let isPanasonic = false;
56
+ exports.isPanasonic = isPanasonic;
42
57
  /** `true` for the PlayStation 5 game console. */
43
- var isPlayStation5 = false;
58
+ let isPlayStation5 = false;
59
+ exports.isPlayStation5 = isPlayStation5;
44
60
  ((function findCurrentBrowser() {
45
61
  var _a, _b;
46
- if (isNode) {
62
+ if (is_node_1.default) {
47
63
  return;
48
64
  }
49
65
  // 1 - Find out browser between IE/Edge Legacy/Edge Chromium/Firefox/Safari
50
- if (typeof globalScope.MSInputMethodContext !== "undefined" &&
66
+ if (typeof global_scope_1.default.MSInputMethodContext !== "undefined" &&
51
67
  typeof document.documentMode !== "undefined") {
52
- isIE11 = true;
53
- isIEOrEdge = true;
68
+ exports.isIE11 = isIE11 = true;
69
+ exports.isIEOrEdge = isIEOrEdge = true;
54
70
  }
55
71
  else if (navigator.appName === "Microsoft Internet Explorer" ||
56
72
  navigator.appName === "Netscape" &&
57
73
  /(Trident|Edge)\//.test(navigator.userAgent)) {
58
- isIEOrEdge = true;
74
+ exports.isIEOrEdge = isIEOrEdge = true;
59
75
  }
60
76
  else if (navigator.userAgent.toLowerCase().indexOf("edg/") !== -1) {
61
- isEdgeChromium = true;
77
+ exports.isEdgeChromium = isEdgeChromium = true;
62
78
  }
63
79
  else if (navigator.userAgent.toLowerCase().indexOf("firefox") !== -1) {
64
- isFirefox = true;
80
+ exports.isFirefox = isFirefox = true;
65
81
  }
66
82
  else if (typeof navigator.platform === "string" &&
67
83
  /iPad|iPhone|iPod/.test(navigator.platform)) {
68
- isSafariMobile = true;
84
+ exports.isSafariMobile = isSafariMobile = true;
69
85
  }
70
- else if (Object.prototype.toString.call(globalScope.HTMLElement).indexOf("Constructor") >= 0 ||
71
- ((_b = (_a = globalScope.safari) === null || _a === void 0 ? void 0 : _a.pushNotification) === null || _b === void 0 ? void 0 : _b.toString()) ===
86
+ else if (Object.prototype.toString.call(global_scope_1.default.HTMLElement).indexOf("Constructor") >= 0 ||
87
+ ((_b = (_a = global_scope_1.default.safari) === null || _a === void 0 ? void 0 : _a.pushNotification) === null || _b === void 0 ? void 0 : _b.toString()) ===
72
88
  "[object SafariRemoteNotification]") {
73
- isSafariDesktop = true;
89
+ exports.isSafariDesktop = isSafariDesktop = true;
74
90
  }
75
91
  // 2 - Find out specific device/platform information
76
92
  // Samsung browser e.g. on Android
77
93
  if (/SamsungBrowser/.test(navigator.userAgent)) {
78
- isSamsungBrowser = true;
94
+ exports.isSamsungBrowser = isSamsungBrowser = true;
79
95
  }
80
96
  if (navigator.userAgent.indexOf("PlayStation 5") !== -1) {
81
- isPlayStation5 = true;
97
+ exports.isPlayStation5 = isPlayStation5 = true;
82
98
  }
83
99
  else if (/Tizen/.test(navigator.userAgent)) {
84
- isTizen = true;
100
+ exports.isTizen = isTizen = true;
85
101
  // Inspired form: http://webostv.developer.lge.com/discover/specifications/web-engine/
86
102
  // Note: even that page doesn't correspond to what we've actually seen in the
87
103
  // wild
88
104
  }
89
105
  else if (/[Ww]eb[O0]S/.test(navigator.userAgent)) {
90
- isWebOs = true;
106
+ exports.isWebOs = isWebOs = true;
91
107
  if (/[Ww]eb[O0]S.TV-2022/.test(navigator.userAgent) ||
92
108
  /[Cc]hr[o0]me\/87/.test(navigator.userAgent)) {
93
- isWebOs2022 = true;
109
+ exports.isWebOs2022 = isWebOs2022 = true;
94
110
  }
95
111
  else if (/[Ww]eb[O0]S.TV-2021/.test(navigator.userAgent) ||
96
112
  /[Cc]hr[o0]me\/79/.test(navigator.userAgent)) {
97
- isWebOs2021 = true;
113
+ exports.isWebOs2021 = isWebOs2021 = true;
98
114
  }
99
115
  }
100
116
  else if (/[Pp]anasonic/.test(navigator.userAgent)) {
101
- isPanasonic = true;
117
+ exports.isPanasonic = isPanasonic = true;
102
118
  }
103
119
  })());
104
- export { isEdgeChromium, isIE11, isIEOrEdge, isFirefox, isPanasonic, isPlayStation5, isSafariDesktop, isSafariMobile, isSamsungBrowser, isTizen, isWebOs, isWebOs2021, isWebOs2022, };
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /**
2
3
  * Copyright 2015 CANAL+ Group
3
4
  *
@@ -13,8 +14,10 @@
13
14
  * See the License for the specific language governing permissions and
14
15
  * limitations under the License.
15
16
  */
16
- import log from "../log";
17
- import { isFirefox } from "./browser_detection";
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.getFirefoxVersion = void 0;
19
+ const log_1 = require("../log");
20
+ const browser_detection_1 = require("./browser_detection");
18
21
  /**
19
22
  * Returns either :
20
23
  * - 'null' when the current browser is not Firefox.
@@ -23,19 +26,19 @@ import { isFirefox } from "./browser_detection";
23
26
  * @returns {number|null}
24
27
  */
25
28
  function getFirefoxVersion() {
26
- if (!isFirefox) {
27
- log.warn("Compat: Can't access Firefox version on no firefox browser.");
29
+ if (!browser_detection_1.isFirefox) {
30
+ log_1.default.warn("Compat: Can't access Firefox version on no firefox browser.");
28
31
  return null;
29
32
  }
30
- var userAgent = navigator.userAgent;
31
- var match = /Firefox\/([0-9]+)\./.exec(userAgent);
33
+ const userAgent = navigator.userAgent;
34
+ const match = /Firefox\/([0-9]+)\./.exec(userAgent);
32
35
  if (match === null) {
33
36
  return -1;
34
37
  }
35
- var result = parseInt(match[1], 10);
38
+ const result = parseInt(match[1], 10);
36
39
  if (isNaN(result)) {
37
40
  return -1;
38
41
  }
39
42
  return result;
40
43
  }
41
- export { getFirefoxVersion };
44
+ exports.getFirefoxVersion = getFirefoxVersion;