rx-player 3.25.2 → 3.26.3-dev.2022021400
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.
- package/.eslintrc.js +1 -1
- package/.github/workflows/checks.yml +99 -0
- package/.github/workflows/perfs.yml +22 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +142 -70
- package/CONTRIBUTING.md +68 -3
- package/MAINTAINERS.md +1 -1
- package/README.md +121 -73
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +14 -9
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +7 -19
- package/dist/_esm5.processed/compat/browser_detection.js +4 -12
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +2 -4
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +4 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +7 -20
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +18 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +7 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts +21 -0
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +9 -10
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -12
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +22 -25
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +2 -1
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +5 -4
- package/dist/_esm5.processed/compat/event_listeners.js +21 -35
- package/dist/_esm5.processed/compat/fullscreen.js +1 -5
- package/dist/_esm5.processed/compat/index.d.ts +3 -4
- package/dist/_esm5.processed/compat/index.js +3 -4
- package/dist/_esm5.processed/compat/is_vtt_cue.js +1 -2
- package/dist/_esm5.processed/compat/make_vtt_cue.js +11 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +3 -0
- package/dist/_esm5.processed/compat/play.d.ts +1 -1
- package/dist/_esm5.processed/compat/play.js +1 -1
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +72 -13
- package/dist/_esm5.processed/config.js +73 -14
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -17
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +26 -8
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +5 -8
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +35 -52
- package/dist/_esm5.processed/core/abr/representation_estimator.js +114 -65
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/get_player_state.d.ts +3 -4
- package/dist/_esm5.processed/core/api/get_player_state.js +2 -2
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +25 -15
- package/dist/_esm5.processed/core/api/option_utils.d.ts +5 -5
- package/dist/_esm5.processed/core/api/option_utils.js +6 -40
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +11 -10
- package/dist/_esm5.processed/core/api/public_api.js +118 -140
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +7 -8
- package/dist/_esm5.processed/core/api/track_choice_manager.js +54 -57
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +4 -6
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +25 -32
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +2 -6
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -9
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +5 -7
- package/dist/_esm5.processed/core/eme/find_key_system.js +20 -21
- package/dist/_esm5.processed/core/eme/get_media_keys.js +4 -11
- package/dist/_esm5.processed/core/eme/get_session.js +3 -6
- package/dist/_esm5.processed/core/eme/init_media_keys.js +6 -14
- package/dist/_esm5.processed/core/eme/session_events_listener.js +12 -10
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +14 -6
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +3 -9
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +5 -8
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +28 -13
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +258 -65
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +13 -31
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +1 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +101 -19
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +239 -99
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +38 -21
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +13 -10
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +37 -22
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +129 -59
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +17 -8
- package/dist/_esm5.processed/{transports/utils/return_parsed_manifest.d.ts → core/init/emit_loaded_event.d.ts} +9 -8
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +47 -0
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/events_generators.d.ts +3 -5
- package/dist/_esm5.processed/core/init/events_generators.js +5 -16
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +56 -22
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +65 -56
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +8 -7
- package/dist/_esm5.processed/core/init/initialize_directfile.js +31 -33
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +12 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.js +20 -18
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +9 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.js +30 -43
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +11 -18
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +12 -7
- package/dist/_esm5.processed/core/init/stall_avoider.js +102 -39
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/refresh_scheduled_events_list.js +2 -12
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +11 -28
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +7 -6
- package/dist/_esm5.processed/core/init/update_playback_rate.js +11 -12
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +5 -5
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +32 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +15 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +52 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +33 -32
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +47 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +18 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +17 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +81 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +91 -0
- package/dist/_esm5.processed/core/{fetchers/utils/create_request_scheduler.d.ts → segment_buffers/inventory/index.d.ts} +5 -4
- package/dist/_esm5.processed/core/{fetchers/manifest/get_manifest_backoff_options.d.ts → segment_buffers/inventory/index.js} +2 -11
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.d.ts → inventory/segment_inventory.d.ts} +38 -39
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.js → inventory/segment_inventory.js} +65 -28
- package/dist/_esm5.processed/core/{abr/cached_segment_detector.d.ts → segment_buffers/inventory/types.d.ts} +10 -9
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +16 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +18 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +38 -34
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -22
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +13 -6
- package/dist/_esm5.processed/core/stream/events_generators.js +20 -12
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_blacklisted_ranges.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -41
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +12 -15
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +25 -11
- package/dist/_esm5.processed/core/stream/period/period_stream.js +39 -30
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +45 -0
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +48 -0
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +222 -0
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +254 -0
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +9 -12
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +10 -18
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +3 -1
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +108 -6
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +4 -8
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +7 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +5 -9
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +12 -18
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +150 -209
- package/dist/_esm5.processed/core/stream/types.d.ts +65 -17
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +7 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +26 -13
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +32 -36
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +4 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +6 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +9 -23
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +28 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +12 -10
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +5 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +10 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +12 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +6 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/initialize_features.js +49 -47
- package/dist/_esm5.processed/features/list/directfile.js +1 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -10
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/adaptation.d.ts +10 -16
- package/dist/_esm5.processed/manifest/adaptation.js +3 -25
- package/dist/_esm5.processed/manifest/index.d.ts +5 -4
- package/dist/_esm5.processed/manifest/index.js +3 -2
- package/dist/_esm5.processed/manifest/manifest.d.ts +11 -11
- package/dist/_esm5.processed/manifest/manifest.js +14 -11
- package/dist/_esm5.processed/manifest/period.d.ts +4 -4
- package/dist/_esm5.processed/manifest/period.js +7 -16
- package/dist/_esm5.processed/manifest/representation.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.js +3 -7
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +95 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/update_periods.js +11 -7
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/utils.js +44 -0
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +54 -58
- package/dist/_esm5.processed/parsers/images/bif.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +9 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +8 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +5 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +8 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +16 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +12 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +11 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +3 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +34 -21
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +26 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -33
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +50 -57
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +29 -30
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +26 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +70 -65
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +24 -16
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +30 -42
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -36
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +28 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +13 -11
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +70 -29
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +14 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +9 -21
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +22 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +31 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +6 -11
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +13 -7
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -13
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +9 -30
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +5 -6
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +16 -6
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +12 -4
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +45 -29
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +11 -7
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +1 -5
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +10 -6
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +11 -15
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +1 -3
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -7
- package/dist/_esm5.processed/public_types.d.ts +4 -0
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -3
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +70 -9
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +12 -6
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +34 -36
- package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +8 -4
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +32 -36
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +38 -40
- package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +3 -7
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +115 -52
- package/dist/_esm5.processed/transports/dash/pipelines.js +10 -10
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/segment_loader.js +70 -57
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/segment_parser.js +15 -32
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/text_loader.js +28 -18
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +5 -4
- package/dist/_esm5.processed/transports/dash/text_parser.js +58 -51
- package/dist/_esm5.processed/transports/local/pipelines.js +16 -14
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +8 -5
- package/dist/_esm5.processed/transports/local/segment_loader.js +69 -28
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +5 -3
- package/dist/_esm5.processed/transports/local/segment_parser.js +15 -27
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +9 -5
- package/dist/_esm5.processed/transports/local/text_parser.js +54 -53
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +5 -5
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +7 -9
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +82 -138
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +3 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.d.ts +1 -4
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +1 -4
- package/dist/_esm5.processed/transports/smooth/pipelines.js +149 -155
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +6 -3
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +150 -107
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +9 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +11 -1
- package/dist/_esm5.processed/transports/types.d.ts +533 -376
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +45 -32
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +4 -4
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +16 -5
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +8 -12
- package/dist/_esm5.processed/utils/array_find.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find.js +0 -5
- package/dist/_esm5.processed/utils/array_find_index.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find_index.js +0 -5
- package/dist/_esm5.processed/utils/assert.d.ts +1 -1
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +30 -0
- package/dist/_esm5.processed/utils/cancellable_sleep.js +42 -0
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +11 -6
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/flat_map.js +0 -6
- package/dist/_esm5.processed/utils/id_generator.d.ts +2 -1
- package/dist/_esm5.processed/utils/id_generator.js +2 -1
- package/dist/_esm5.processed/utils/languages/normalize.js +1 -3
- package/dist/_esm5.processed/utils/ranges.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +64 -27
- package/dist/_esm5.processed/utils/request/fetch.js +95 -113
- package/dist/_esm5.processed/utils/request/index.d.ts +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +64 -47
- package/dist/_esm5.processed/utils/request/xhr.js +49 -43
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +39 -0
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +58 -0
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +240 -0
- package/dist/_esm5.processed/utils/task_canceller.js +289 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +8775 -6211
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -4
- package/package.json +122 -106
- package/scripts/README.md +11 -0
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +197 -0
- package/scripts/build/templates/experimental/features/index.d.ts +16 -0
- package/scripts/build/templates/experimental/features/index.js +16 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +18 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +18 -0
- package/scripts/build/templates/experimental/tools/index.d.ts +16 -0
- package/scripts/build/templates/experimental/tools/index.js +16 -0
- package/scripts/build/templates/features/index.d.ts +16 -0
- package/scripts/build/templates/features/index.js +16 -0
- package/scripts/build/templates/logger/index.d.ts +17 -0
- package/scripts/build/templates/logger/index.js +17 -0
- package/scripts/build/templates/minimal/index.d.ts +17 -0
- package/scripts/build/templates/minimal/index.js +17 -0
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +18 -0
- package/scripts/build/templates/tools/TextTrackRenderer.js +18 -0
- package/scripts/build/templates/tools/index.d.ts +16 -0
- package/scripts/build/templates/tools/index.js +16 -0
- package/scripts/build/templates/tools/string-utils.d.ts +18 -0
- package/{dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.d.ts → scripts/build/templates/tools/string-utils.js} +3 -11
- package/scripts/build/templates/types/index.d.ts +16 -0
- package/scripts/build/templates/types/index.js +15 -0
- package/scripts/check_nodejs_import_compatibility.js +35 -1
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +147 -0
- package/scripts/doc-generator/generate_page_html.js +115 -0
- package/scripts/doc-generator/generate_page_list_html.js +92 -0
- package/scripts/doc-generator/generate_sidebar_html.js +85 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +74 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +9 -5
- package/scripts/generate_full_demo.js +108 -10
- package/scripts/generate_standalone_demo.js +15 -8
- package/scripts/launch_static_server.js +139 -56
- package/scripts/list-npm-scripts.js +99 -0
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/{run_full_demo.js → start_demo_web_server.js} +16 -3
- package/scripts/update-version +8 -1
- package/scripts/{display_webpack_errors.js → utils/display_webpack_errors.js} +0 -4
- package/scripts/{get_human_readable_hours.js → utils/get_human_readable_hours.js} +0 -4
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +12 -11
- package/src/compat/__tests__/browser_compatibility_types.test.ts +69 -60
- package/src/compat/__tests__/browser_version.test.ts +3 -1
- package/src/compat/__tests__/change_source_buffer_type.test.ts +3 -3
- package/src/compat/__tests__/clear_element_src.test.ts +62 -36
- package/src/compat/__tests__/fullscreen.test.ts +154 -139
- package/src/compat/__tests__/is_offline.test.ts +20 -12
- package/src/compat/__tests__/is_vtt_cue.test.ts +14 -10
- package/src/compat/__tests__/make_vtt_cue.test.ts +16 -15
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +30 -48
- package/src/compat/__tests__/play.test.ts +2 -2
- package/src/compat/__tests__/remove_cue.test.ts +5 -5
- package/src/compat/__tests__/set_element_src.test.ts +3 -3
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +14 -6
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/browser_compatibility_types.ts +38 -36
- package/src/compat/browser_detection.ts +17 -12
- package/src/compat/can_rely_on_video_visibility_and_size.ts +3 -3
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +7 -6
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +22 -26
- package/src/compat/eme/custom_media_keys/index.ts +32 -38
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +16 -19
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +39 -9
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +10 -12
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +27 -30
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +6 -2
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +30 -46
- package/src/compat/fullscreen.ts +2 -4
- package/src/compat/index.ts +2 -6
- package/src/compat/is_vtt_cue.ts +1 -2
- package/src/compat/make_vtt_cue.ts +10 -8
- package/src/compat/on_height_width_change.ts +4 -6
- package/src/compat/patch_webkit_source_buffer.ts +11 -5
- package/src/compat/play.ts +1 -1
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +79 -14
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +85 -18
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +75 -32
- package/src/core/abr/pending_requests_store.ts +72 -40
- package/src/core/abr/representation_estimator.ts +205 -135
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/get_player_state.test.ts +58 -110
- package/src/core/api/__tests__/media_element_track_choice_manager.test.ts +35 -31
- package/src/core/api/__tests__/option_utils.test.ts +104 -17
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/get_player_state.ts +5 -7
- package/src/core/api/index.ts +8 -3
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +7 -7
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +128 -130
- package/src/core/api/track_choice_manager.ts +82 -78
- package/src/core/eme/__tests__/__global__/get_license.test.ts +14 -9
- package/src/core/eme/__tests__/__global__/init_data.test.ts +12 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +3 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +6 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +18 -12
- package/src/core/eme/__tests__/__global__/utils.ts +21 -17
- package/src/core/eme/__tests__/clean_old_loaded_sessions.test.ts +4 -4
- package/src/core/eme/__tests__/clean_old_stored_persistent_info.test.ts +3 -2
- package/src/core/eme/__tests__/init_media_keys.test.ts +10 -66
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +24 -13
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +17 -17
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +21 -18
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +17 -6
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +256 -109
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +4 -5
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +48 -51
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +396 -177
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +56 -39
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +123 -91
- package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -1
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +21 -18
- package/src/core/init/emit_loaded_event.ts +71 -0
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/events_generators.ts +4 -5
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +128 -96
- package/src/core/init/initialize_directfile.ts +49 -57
- package/src/core/init/initialize_media_source.ts +31 -31
- package/src/core/init/load_on_media_source.ts +70 -74
- package/src/core/init/manifest_update_scheduler.ts +18 -19
- package/src/core/init/stall_avoider.ts +142 -51
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +15 -28
- package/src/core/init/update_playback_rate.ts +17 -18
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +17 -13
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +46 -11
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +21 -18
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +92 -18
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +33 -32
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +82 -6
- package/src/core/segment_buffers/implementations/types.ts +23 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/index.ts +6 -1
- package/src/core/segment_buffers/inventory/buffered_history.ts +127 -0
- package/src/core/segment_buffers/inventory/index.ts +28 -0
- package/src/core/segment_buffers/{segment_inventory.ts → inventory/segment_inventory.ts} +85 -52
- package/{dist/_esm5.processed/manifest/are_same_content.js → src/core/segment_buffers/inventory/types.ts} +19 -11
- package/src/core/segment_buffers/segment_buffers_store.ts +4 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +90 -65
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/events_generators.ts +31 -7
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +9 -11
- package/src/core/stream/orchestrator/are_streams_complete.ts +4 -6
- package/src/core/stream/orchestrator/get_blacklisted_ranges.ts +1 -1
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +70 -62
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +126 -85
- package/src/core/stream/reload_after_switch.ts +70 -0
- package/src/core/stream/representation/append_segment_to_buffer.ts +21 -17
- package/src/core/stream/representation/downloading_queue.ts +502 -0
- package/src/core/stream/representation/force_garbage_collection.ts +20 -29
- package/src/core/stream/representation/get_buffer_status.ts +15 -13
- package/src/core/stream/representation/get_needed_segments.ts +135 -6
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +238 -307
- package/src/core/stream/types.ts +91 -39
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +2 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +47 -30
- package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +1 -2
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +41 -72
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +20 -13
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -7
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +13 -27
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +38 -37
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +56 -47
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +6 -4
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +7 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +1 -0
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +12 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +12 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +6 -1
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +207 -110
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +2 -0
- package/src/features/list/__tests__/dash.test.ts +2 -0
- package/src/features/list/__tests__/directfile.test.ts +2 -0
- package/src/features/list/__tests__/eme.test.ts +2 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/image_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/smooth.test.ts +2 -0
- package/src/features/types.ts +3 -11
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/adaptation.test.ts +0 -79
- package/src/manifest/__tests__/manifest.test.ts +68 -67
- package/src/manifest/__tests__/period.test.ts +142 -118
- package/src/manifest/__tests__/update_period_in_place.test.ts +85 -62
- package/src/manifest/__tests__/update_periods.test.ts +33 -12
- package/src/manifest/adaptation.ts +17 -51
- package/src/manifest/index.ts +15 -2
- package/src/manifest/manifest.ts +31 -18
- package/src/manifest/period.ts +13 -20
- package/src/manifest/representation.ts +3 -3
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +43 -21
- package/src/manifest/types.ts +97 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +7 -4
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +29 -6
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +5 -8
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +11 -9
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +5 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +10 -10
- package/src/parsers/manifest/dash/common/indexes/list.ts +20 -17
- package/src/parsers/manifest/dash/common/indexes/template.ts +30 -22
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +63 -27
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +64 -73
- package/src/parsers/manifest/dash/common/parse_mpd.ts +33 -24
- package/src/parsers/manifest/dash/common/parse_periods.ts +115 -87
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +88 -80
- package/src/parsers/manifest/dash/common/parse_representations.ts +61 -64
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +1 -1
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +66 -29
- package/src/parsers/manifest/dash/parsers_types.ts +11 -5
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +4 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +43 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +41 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +22 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +40 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +10 -19
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +25 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +34 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +31 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -5
- package/src/parsers/manifest/smooth/create_parser.ts +24 -22
- package/src/parsers/manifest/smooth/representation_index.ts +17 -15
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +39 -36
- package/src/parsers/manifest/utils/check_manifest_ids.ts +2 -2
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +16 -7
- package/src/parsers/manifest/utils/index_helpers.ts +22 -12
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/srt/html.ts +16 -10
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/parsers/texttracks/ttml/nodes.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -6
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +18 -0
- package/src/transports/README.md +8 -4
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +68 -27
- package/src/transports/dash/image_pipelines.ts +58 -45
- package/src/transports/dash/init_segment_loader.ts +68 -45
- package/src/transports/dash/low_latency_segment_loader.ts +52 -68
- package/src/transports/dash/manifest_parser.ts +148 -78
- package/src/transports/dash/pipelines.ts +10 -10
- package/src/transports/dash/segment_loader.ts +117 -90
- package/src/transports/dash/segment_parser.ts +46 -45
- package/src/transports/dash/text_loader.ts +55 -34
- package/src/transports/dash/text_parser.ts +91 -78
- package/src/transports/local/pipelines.ts +19 -21
- package/src/transports/local/segment_loader.ts +86 -40
- package/src/transports/local/segment_parser.ts +31 -38
- package/src/transports/local/text_parser.ts +82 -74
- package/src/transports/metaplaylist/manifest_loader.ts +17 -15
- package/src/transports/metaplaylist/pipelines.ts +158 -181
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/isobmff/create_boxes.ts +5 -5
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +1 -4
- package/src/transports/smooth/pipelines.ts +206 -187
- package/src/transports/smooth/segment_loader.ts +138 -87
- package/src/transports/smooth/utils.ts +13 -0
- package/src/transports/types.ts +639 -439
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +24 -24
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +31 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +83 -60
- package/src/transports/utils/generate_manifest_loader.ts +34 -12
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/array_find.test.ts +5 -5
- package/src/utils/__tests__/array_find_index.test.ts +6 -5
- package/src/utils/__tests__/array_includes.test.ts +1 -0
- package/src/utils/__tests__/assert.test.ts +38 -21
- package/src/utils/__tests__/assert_unreachable.test.ts +8 -7
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/flat_map.test.ts +18 -6
- package/src/utils/__tests__/id_generator.test.ts +3 -3
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/__tests__/promise.test.ts +1 -1
- package/src/utils/__tests__/starts_with.test.ts +2 -0
- package/src/utils/array_find.ts +11 -3
- package/src/utils/array_find_index.ts +11 -3
- package/src/utils/assert.ts +5 -2
- package/src/utils/cancellable_sleep.ts +51 -0
- package/src/utils/cast_to_observable.ts +12 -13
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/flat_map.ts +10 -8
- package/src/utils/id_generator.ts +2 -1
- package/src/utils/object_assign.ts +1 -1
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +175 -147
- package/src/utils/request/index.ts +6 -6
- package/src/utils/request/xhr.ts +144 -128
- package/src/utils/rx-from_cancellable_promise.ts +66 -0
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/src/utils/task_canceller.ts +326 -0
- package/src/utils/uniq.ts +1 -1
- package/tsconfig.json +5 -1
- package/tsconfig.modules.json +9 -3
- package/dist/_esm5.processed/compat/is_playback_stuck.d.ts +0 -28
- package/dist/_esm5.processed/compat/is_playback_stuck.js +0 -33
- package/dist/_esm5.processed/core/abr/cached_segment_detector.js +0 -60
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -52
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -129
- package/dist/_esm5.processed/core/api/clock.js +0 -335
- package/dist/_esm5.processed/core/fetchers/manifest/get_manifest_backoff_options.js +0 -38
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.d.ts +0 -98
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.js +0 -124
- package/dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.js +0 -32
- package/dist/_esm5.processed/core/fetchers/utils/create_request_scheduler.js +0 -38
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -56
- package/dist/_esm5.processed/core/stream/utils.d.ts +0 -60
- package/dist/_esm5.processed/core/stream/utils.js +0 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/dist/_esm5.processed/transports/utils/return_parsed_manifest.js +0 -32
- package/scripts/clean-up_builds +0 -18
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/scripts/generate_builds +0 -224
- package/scripts/list-npm-scripts-info.js +0 -39
- package/src/compat/is_playback_stuck.ts +0 -42
- package/src/core/abr/cached_segment_detector.ts +0 -86
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/api/clock.ts +0 -497
- package/src/core/fetchers/manifest/get_manifest_backoff_options.ts +0 -50
- package/src/core/fetchers/segment/create_segment_loader.ts +0 -251
- package/src/core/fetchers/segment/get_segment_backoff_options.ts +0 -45
- package/src/core/fetchers/utils/create_request_scheduler.ts +0 -56
- package/src/core/init/create_stream_clock.ts +0 -94
- package/src/core/stream/utils.ts +0 -97
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
- package/src/transports/utils/return_parsed_manifest.ts +0 -47
|
@@ -17,12 +17,10 @@
|
|
|
17
17
|
* This file provides browser-agnostic event listeners under the form of
|
|
18
18
|
* RxJS Observables
|
|
19
19
|
*/
|
|
20
|
-
import { combineLatest as observableCombineLatest, defer as observableDefer, fromEvent as observableFromEvent, interval as observableInterval, merge as observableMerge,
|
|
21
|
-
import { delay, distinctUntilChanged, map, mapTo, startWith, switchMap, throttleTime, } from "rxjs/operators";
|
|
20
|
+
import { NEVER, combineLatest as observableCombineLatest, defer as observableDefer, delay, distinctUntilChanged, fromEvent as observableFromEvent, interval as observableInterval, map, merge as observableMerge, of as observableOf, startWith, switchMap, throttleTime, } from "rxjs";
|
|
22
21
|
import config from "../config";
|
|
23
22
|
import log from "../log";
|
|
24
23
|
import isNonEmptyString from "../utils/is_non_empty_string";
|
|
25
|
-
import { HTMLElement_, } from "./browser_compatibility_types";
|
|
26
24
|
import isNode from "./is_node";
|
|
27
25
|
import shouldFavourCustomSafariEME from "./should_favour_custom_safari_EME";
|
|
28
26
|
var BROWSER_PREFIXES = ["", "webkit", "moz", "ms"];
|
|
@@ -45,7 +43,6 @@ function isEventSupported(element, eventNameSuffix) {
|
|
|
45
43
|
}
|
|
46
44
|
else {
|
|
47
45
|
clone.setAttribute(eventName, "return;");
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
49
46
|
return typeof clone[eventName] === "function";
|
|
50
47
|
}
|
|
51
48
|
}
|
|
@@ -82,7 +79,7 @@ function compatibleListener(eventNames, prefixes) {
|
|
|
82
79
|
return function (element) {
|
|
83
80
|
// if the element is a HTMLElement we can detect
|
|
84
81
|
// the supported event, and memoize it in `mem`
|
|
85
|
-
if (element instanceof
|
|
82
|
+
if (element instanceof HTMLElement) {
|
|
86
83
|
if (typeof mem === "undefined") {
|
|
87
84
|
mem = findSupportedEvent(element, prefixedEvents);
|
|
88
85
|
}
|
|
@@ -90,8 +87,8 @@ function compatibleListener(eventNames, prefixes) {
|
|
|
90
87
|
return observableFromEvent(element, mem);
|
|
91
88
|
}
|
|
92
89
|
else {
|
|
93
|
-
if (
|
|
94
|
-
log.warn("compat: element "
|
|
90
|
+
if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
|
|
91
|
+
log.warn("compat: element ".concat(element.tagName) +
|
|
95
92
|
" does not support any of these events: " +
|
|
96
93
|
prefixedEvents.join(", "));
|
|
97
94
|
}
|
|
@@ -136,19 +133,13 @@ function visibilityChange() {
|
|
|
136
133
|
.pipe(map(function () { return !(document[hidden]); }), startWith(!isHidden), distinctUntilChanged());
|
|
137
134
|
});
|
|
138
135
|
}
|
|
139
|
-
/**
|
|
140
|
-
* @returns {Observable}
|
|
141
|
-
*/
|
|
142
|
-
function videoSizeChange() {
|
|
143
|
-
return observableFromEvent(window, "resize");
|
|
144
|
-
}
|
|
145
136
|
/**
|
|
146
137
|
* Emit `true` if the page is considered active.
|
|
147
138
|
* `false` when considered inactive.
|
|
148
139
|
* Emit the original value on subscription.
|
|
149
140
|
* @returns {Observable}
|
|
150
141
|
*/
|
|
151
|
-
function
|
|
142
|
+
function isPageActive() {
|
|
152
143
|
return visibilityChange().pipe(switchMap(function (x) {
|
|
153
144
|
if (!x) {
|
|
154
145
|
return observableOf(x).pipe(delay(INACTIVITY_DELAY));
|
|
@@ -173,33 +164,28 @@ function getVideoWidthFromPIPWindow(mediaElement, pipWindow) {
|
|
|
173
164
|
* @param {HTMLMediaElement} mediaElement
|
|
174
165
|
* @returns {Observable}
|
|
175
166
|
*/
|
|
176
|
-
function onPictureInPictureEvent$(
|
|
167
|
+
function onPictureInPictureEvent$(elt) {
|
|
177
168
|
return observableDefer(function () {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if (mediaElement.webkitSupportsPresentationMode &&
|
|
169
|
+
var mediaElement = elt;
|
|
170
|
+
if (mediaElement.webkitSupportsPresentationMode === true &&
|
|
181
171
|
typeof mediaElement.webkitSetPresentationMode === "function") {
|
|
182
172
|
var isWebKitPIPEnabled = mediaElement.webkitPresentationMode === "picture-in-picture";
|
|
183
173
|
return observableFromEvent(mediaElement, "webkitpresentationmodechanged").pipe(map(function () { return ({
|
|
184
|
-
isEnabled: mediaElement
|
|
185
|
-
.webkitPresentationMode === "picture-in-picture",
|
|
174
|
+
isEnabled: mediaElement.webkitPresentationMode === "picture-in-picture",
|
|
186
175
|
pipWindow: null,
|
|
187
176
|
}); }), startWith({ isEnabled: isWebKitPIPEnabled, pipWindow: null }));
|
|
188
177
|
}
|
|
189
|
-
|
|
190
|
-
var isPIPEnabled = (document.pictureInPictureElement &&
|
|
191
|
-
document.pictureInPictureElement === mediaElement);
|
|
178
|
+
var isPIPEnabled = (document.pictureInPictureElement === mediaElement);
|
|
192
179
|
var initialState = { isEnabled: isPIPEnabled, pipWindow: null };
|
|
193
|
-
/* eslint-enable @typescript-eslint/no-unsafe-assignment */
|
|
194
180
|
return observableMerge(observableFromEvent(mediaElement, "enterpictureinpicture")
|
|
195
|
-
.pipe(map(function (evt) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
181
|
+
.pipe(map(function (evt) {
|
|
182
|
+
var _a;
|
|
183
|
+
return ({
|
|
184
|
+
isEnabled: true,
|
|
185
|
+
pipWindow: (_a = evt.pictureInPictureWindow) !== null && _a !== void 0 ? _a : null,
|
|
186
|
+
});
|
|
187
|
+
})), observableFromEvent(mediaElement, "leavepictureinpicture")
|
|
188
|
+
.pipe(map(function () { return ({ isEnabled: false, pipWindow: null }); }))).pipe(startWith(initialState));
|
|
203
189
|
});
|
|
204
190
|
}
|
|
205
191
|
/**
|
|
@@ -222,13 +208,14 @@ function isVideoVisible(pip$) {
|
|
|
222
208
|
* Get video width from HTML video element, or video estimated dimensions
|
|
223
209
|
* when Picture-in-Picture is activated.
|
|
224
210
|
* @param {HTMLMediaElement} mediaElement
|
|
211
|
+
* @param {Observable} pip$
|
|
225
212
|
* @returns {Observable}
|
|
226
213
|
*/
|
|
227
214
|
function videoWidth$(mediaElement, pip$) {
|
|
228
215
|
return observableCombineLatest([
|
|
229
216
|
pip$,
|
|
230
217
|
observableInterval(20000).pipe(startWith(null)),
|
|
231
|
-
|
|
218
|
+
observableFromEvent(window, "resize").pipe(throttleTime(500), startWith(null)),
|
|
232
219
|
]).pipe(switchMap(function (_a) {
|
|
233
220
|
var pip = _a[0];
|
|
234
221
|
if (!pip.isEnabled) {
|
|
@@ -237,7 +224,6 @@ function videoWidth$(mediaElement, pip$) {
|
|
|
237
224
|
else if (pip.pipWindow != null) {
|
|
238
225
|
var pipWindow_1 = pip.pipWindow;
|
|
239
226
|
var firstWidth = getVideoWidthFromPIPWindow(mediaElement, pipWindow_1);
|
|
240
|
-
// RxJS typing issue (for the "as any")
|
|
241
227
|
return observableFromEvent(pipWindow_1, "resize").pipe(startWith(firstWidth * pixelRatio), map(function () { return getVideoWidthFromPIPWindow(mediaElement, pipWindow_1) * pixelRatio; }));
|
|
242
228
|
}
|
|
243
229
|
else {
|
|
@@ -342,4 +328,4 @@ var onKeyError$ = compatibleListener(["keyerror", "error"]);
|
|
|
342
328
|
* @returns {Observable}
|
|
343
329
|
*/
|
|
344
330
|
var onKeyStatusesChange$ = compatibleListener(["keystatuseschange"]);
|
|
345
|
-
export {
|
|
331
|
+
export { isPageActive, isVideoVisible, videoWidth$, onPlayPause$, onTextTrackChanges$, onLoadedMetadata$, onSeeking$, onSeeked$, onEnded$, onTimeUpdate$, onFullscreenChange$, onSourceOpen$, onSourceClose$, onSourceEnded$, onUpdate$, onRemoveSourceBuffers$, onEncrypted$, onKeyMessage$, onKeyAdded$, onKeyError$, onKeyStatusesChange$, onPictureInPictureEvent$, };
|
|
@@ -34,11 +34,7 @@ function requestFullscreen(element) {
|
|
|
34
34
|
elt.mozRequestFullScreen();
|
|
35
35
|
}
|
|
36
36
|
else if (typeof elt.webkitRequestFullscreen === "function") {
|
|
37
|
-
(
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
39
|
-
elt.webkitRequestFullscreen
|
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
41
|
-
)(Element.ALLOW_KEYBOARD_INPUT);
|
|
37
|
+
elt.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
|
|
42
38
|
}
|
|
43
39
|
}
|
|
44
40
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import addClassName from "./add_class_name";
|
|
17
17
|
import addTextTrack from "./add_text_track";
|
|
18
|
-
import { ICompatTextTrack, ICompatVTTCue, MediaSource_
|
|
18
|
+
import { ICompatTextTrack, ICompatVTTCue, MediaSource_ } from "./browser_compatibility_types";
|
|
19
19
|
import canPatchISOBMFFSegment from "./can_patch_isobmff";
|
|
20
20
|
import tryToChangeSourceBufferType, { ICompatSourceBuffer } from "./change_source_buffer_type";
|
|
21
21
|
import clearElementSrc from "./clear_element_src";
|
|
@@ -26,11 +26,10 @@ import hasEMEAPIs from "./has_eme_apis";
|
|
|
26
26
|
import isCodecSupported from "./is_codec_supported";
|
|
27
27
|
import isNode from "./is_node";
|
|
28
28
|
import isOffline from "./is_offline";
|
|
29
|
-
import isPlaybackStuck from "./is_playback_stuck";
|
|
30
29
|
import isVTTCue from "./is_vtt_cue";
|
|
31
30
|
import makeVTTCue from "./make_vtt_cue";
|
|
32
31
|
import onHeightWidthChange from "./on_height_width_change";
|
|
33
|
-
import play
|
|
32
|
+
import play from "./play";
|
|
34
33
|
import setElementSrc$ from "./set_element_src";
|
|
35
34
|
import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
|
|
36
35
|
import shouldRenewMediaKeys from "./should_renew_media_keys";
|
|
@@ -39,4 +38,4 @@ import shouldValidateMetadata from "./should_validate_metadata";
|
|
|
39
38
|
import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
|
|
40
39
|
import whenLoadedMetadata$ from "./when_loaded_metadata";
|
|
41
40
|
import whenMediaSourceOpen$ from "./when_media_source_open";
|
|
42
|
-
export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline,
|
|
41
|
+
export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, whenMediaSourceOpen$, };
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import addClassName from "./add_class_name";
|
|
17
17
|
import addTextTrack from "./add_text_track";
|
|
18
|
-
import { MediaSource_,
|
|
18
|
+
import { MediaSource_, } from "./browser_compatibility_types";
|
|
19
19
|
import canPatchISOBMFFSegment from "./can_patch_isobmff";
|
|
20
20
|
import tryToChangeSourceBufferType from "./change_source_buffer_type";
|
|
21
21
|
import clearElementSrc from "./clear_element_src";
|
|
@@ -26,12 +26,11 @@ import hasEMEAPIs from "./has_eme_apis";
|
|
|
26
26
|
import isCodecSupported from "./is_codec_supported";
|
|
27
27
|
import isNode from "./is_node";
|
|
28
28
|
import isOffline from "./is_offline";
|
|
29
|
-
import isPlaybackStuck from "./is_playback_stuck";
|
|
30
29
|
import isVTTCue from "./is_vtt_cue";
|
|
31
30
|
import makeVTTCue from "./make_vtt_cue";
|
|
32
31
|
import onHeightWidthChange from "./on_height_width_change";
|
|
33
32
|
import patchWebkitSourceBuffer from "./patch_webkit_source_buffer";
|
|
34
|
-
import play
|
|
33
|
+
import play from "./play";
|
|
35
34
|
import setElementSrc$ from "./set_element_src";
|
|
36
35
|
// eslint-disable-next-line max-len
|
|
37
36
|
import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
|
|
@@ -45,4 +44,4 @@ import whenMediaSourceOpen$ from "./when_media_source_open";
|
|
|
45
44
|
// we would prefer to disallow (both for the understandability of the code and
|
|
46
45
|
// to better exploit tree shaking.
|
|
47
46
|
patchWebkitSourceBuffer();
|
|
48
|
-
export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline,
|
|
47
|
+
export { addClassName, addTextTrack, canPatchISOBMFFSegment, clearElementSrc, closeSession, CustomMediaKeySystemAccess, events, exitFullscreen, generateKeyRequest, getInitData, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeys, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, whenMediaSourceOpen$, };
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export default function isVTTCue(cue) {
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
23
|
-
return typeof window.VTTCue === "function" &&
|
|
24
|
-
cue instanceof window.VTTCue;
|
|
23
|
+
return typeof window.VTTCue === "function" && cue instanceof window.VTTCue;
|
|
25
24
|
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
26
25
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import log from "../log";
|
|
17
|
-
import
|
|
17
|
+
import isNullOrUndefined from "../utils/is_null_or_undefined";
|
|
18
18
|
/**
|
|
19
19
|
* Creates a cue using the best platform-specific interface available.
|
|
20
20
|
*
|
|
@@ -25,14 +25,19 @@ import { VTTCue_, } from "./browser_compatibility_types";
|
|
|
25
25
|
* were invalid.
|
|
26
26
|
*/
|
|
27
27
|
export default function makeCue(startTime, endTime, payload) {
|
|
28
|
-
if (VTTCue_ == null) {
|
|
29
|
-
throw new Error("VTT cues not supported in your target");
|
|
30
|
-
}
|
|
31
28
|
if (startTime >= endTime) {
|
|
32
29
|
// IE/Edge will throw in this case.
|
|
33
30
|
// See issue #501
|
|
34
|
-
log.warn("Compat: Invalid cue times: "
|
|
31
|
+
log.warn("Compat: Invalid cue times: ".concat(startTime, " - ").concat(endTime));
|
|
35
32
|
return null;
|
|
36
33
|
}
|
|
37
|
-
|
|
34
|
+
if (isNullOrUndefined(window.VTTCue)) {
|
|
35
|
+
if (isNullOrUndefined(window.TextTrackCue)) {
|
|
36
|
+
throw new Error("VTT cues not supported in your target");
|
|
37
|
+
}
|
|
38
|
+
return new TextTrackCue(startTime, endTime, payload);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return new VTTCue(startTime, endTime, payload);
|
|
42
|
+
}
|
|
38
43
|
}
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, interval as observableInterval, Observable, } from "rxjs";
|
|
17
|
-
import { distinctUntilChanged, map, startWith, } from "rxjs/operators";
|
|
16
|
+
import { defer as observableDefer, distinctUntilChanged, interval as observableInterval, map, Observable, startWith, } from "rxjs";
|
|
18
17
|
import log from "../log";
|
|
19
18
|
import isNode from "./is_node";
|
|
20
19
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
@@ -21,15 +21,18 @@ import isNode from "./is_node";
|
|
|
21
21
|
export default function patchWebkitSourceBuffer() {
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
23
23
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
24
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
24
25
|
// old WebKit SourceBuffer implementation,
|
|
25
26
|
// where a synchronous append is used instead of appendBuffer
|
|
26
27
|
if (!isNode && window.WebKitSourceBuffer != null &&
|
|
27
28
|
window.WebKitSourceBuffer.prototype.addEventListener === undefined) {
|
|
29
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
28
30
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
29
31
|
var sourceBufferWebkitRef = window.WebKitSourceBuffer;
|
|
30
32
|
var sourceBufferWebkitProto = sourceBufferWebkitRef.prototype;
|
|
31
33
|
for (var fnName in EventEmitter.prototype) {
|
|
32
34
|
if (EventEmitter.prototype.hasOwnProperty(fnName)) {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
36
|
sourceBufferWebkitProto[fnName] = EventEmitter.prototype[fnName];
|
|
34
37
|
}
|
|
35
38
|
}
|
|
@@ -20,4 +20,4 @@ import { Observable } from "rxjs";
|
|
|
20
20
|
* @param {HTMLMediaElement} mediaElement
|
|
21
21
|
* @returns {Observable}
|
|
22
22
|
*/
|
|
23
|
-
export default function play
|
|
23
|
+
export default function play(mediaElement: HTMLMediaElement): Observable<unknown>;
|
|
@@ -22,7 +22,7 @@ import tryCatch from "../utils/rx-try_catch";
|
|
|
22
22
|
* @param {HTMLMediaElement} mediaElement
|
|
23
23
|
* @returns {Observable}
|
|
24
24
|
*/
|
|
25
|
-
export default function play
|
|
25
|
+
export default function play(mediaElement) {
|
|
26
26
|
return observableDefer(function () {
|
|
27
27
|
// mediaElement.play is not always a Promise. In the improbable case it
|
|
28
28
|
// throws, I prefer still to catch to return the error wrapped in an
|
|
@@ -27,7 +27,7 @@ import clearElementSrc from "./clear_element_src";
|
|
|
27
27
|
*/
|
|
28
28
|
export default function setElementSrc$(mediaElement, url) {
|
|
29
29
|
return new Observable(function (observer) {
|
|
30
|
-
log.info("Setting URL to
|
|
30
|
+
log.info("Setting URL to HTMLMediaElement", url);
|
|
31
31
|
mediaElement.src = url;
|
|
32
32
|
observer.next(undefined);
|
|
33
33
|
return function () {
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { of as observableOf, } from "rxjs";
|
|
17
|
-
import { take } from "rxjs/operators";
|
|
16
|
+
import { of as observableOf, take, } from "rxjs";
|
|
18
17
|
import { READY_STATES } from "./browser_compatibility_types";
|
|
19
18
|
import { onLoadedMetadata$ } from "./event_listeners";
|
|
20
19
|
/**
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { of as observableOf, } from "rxjs";
|
|
17
|
-
import { take } from "rxjs/operators";
|
|
16
|
+
import { of as observableOf, take, } from "rxjs";
|
|
18
17
|
import { onSourceOpen$ } from "./event_listeners";
|
|
19
18
|
/**
|
|
20
19
|
* Wait for the MediaSource's sourceopen event and emit. Emit immediatelly if
|
|
@@ -385,17 +385,12 @@ declare const _default: {
|
|
|
385
385
|
LOW_LATENCY: number;
|
|
386
386
|
};
|
|
387
387
|
/**
|
|
388
|
-
* Minimum interval at which
|
|
388
|
+
* Minimum interval at which playback information samples will be taken. This
|
|
389
389
|
* variable is for the "regular" mediasource strategy (that is, not for the
|
|
390
390
|
* directfile API.
|
|
391
391
|
*
|
|
392
|
-
*
|
|
393
|
-
*
|
|
394
|
-
* - set the clock for the ABR strategy.
|
|
395
|
-
* - used to trigger positionUpdate events.
|
|
396
|
-
*
|
|
397
|
-
* This common logic is for performance reasons, as we call multiple browser's
|
|
398
|
-
* APIs which are useful for most of these.
|
|
392
|
+
* At each of these interval, various different modules in the RxPlayer will
|
|
393
|
+
* run based on the information communicated.
|
|
399
394
|
*
|
|
400
395
|
* Keep in mind this is the minimum interval. This logic will also be
|
|
401
396
|
* triggered when various events of the media element are received.
|
|
@@ -516,7 +511,7 @@ declare const _default: {
|
|
|
516
511
|
};
|
|
517
512
|
/**
|
|
518
513
|
* Number of seconds ahead in the buffer after which playback will resume when
|
|
519
|
-
* the player was
|
|
514
|
+
* the player was rebuffering due to a low readyState.
|
|
520
515
|
* @type {Number}
|
|
521
516
|
*/
|
|
522
517
|
RESUME_GAP_AFTER_NOT_ENOUGH_DATA: {
|
|
@@ -533,17 +528,61 @@ declare const _default: {
|
|
|
533
528
|
LOW_LATENCY: number;
|
|
534
529
|
};
|
|
535
530
|
/**
|
|
536
|
-
* Maximum number of seconds in the buffer based on which a "
|
|
531
|
+
* Maximum number of seconds in the buffer based on which a "rebuffering"
|
|
537
532
|
* strategy will be considered:
|
|
538
533
|
* The player will pause playback to get enough time building a sufficient
|
|
539
|
-
* buffer. This mostly happen when seeking in an unbuffered part or when
|
|
540
|
-
*
|
|
534
|
+
* buffer. This mostly happen when seeking in an unbuffered part or when not
|
|
535
|
+
* enough buffer is ahead of the current position.
|
|
541
536
|
* @type {Number}
|
|
542
537
|
*/
|
|
543
|
-
|
|
538
|
+
REBUFFERING_GAP: {
|
|
544
539
|
DEFAULT: number;
|
|
545
540
|
LOW_LATENCY: number;
|
|
546
541
|
};
|
|
542
|
+
/**
|
|
543
|
+
* Amount of time (in seconds) with data ahead of the current position, at
|
|
544
|
+
* which we always consider the browser to be able to play.
|
|
545
|
+
*
|
|
546
|
+
* If the media element has this amount of data in advance or more but
|
|
547
|
+
* playback cannot begin, the player will consider it "freezing".
|
|
548
|
+
*/
|
|
549
|
+
MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING: number;
|
|
550
|
+
/**
|
|
551
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
552
|
+
* called as "freezing" in the RxPlayer.
|
|
553
|
+
*
|
|
554
|
+
* If the media is still "freezing" after waiting for `UNFREEZING_SEEK_DELAY`
|
|
555
|
+
* milliseconds, the RxPlayer will try to un-freeze the situation by interacting
|
|
556
|
+
* with the media element.
|
|
557
|
+
*
|
|
558
|
+
* Those interactions can be costly in time before playback continue, so it
|
|
559
|
+
* should be set at a sufficiently high value to avoid false positives.
|
|
560
|
+
*/
|
|
561
|
+
UNFREEZING_SEEK_DELAY: number;
|
|
562
|
+
/**
|
|
563
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
564
|
+
* called as "freezing" in the RxPlayer.
|
|
565
|
+
*
|
|
566
|
+
* A small freezing interval may be normal as the browser may take time before
|
|
567
|
+
* playing, e.g. after a seek.
|
|
568
|
+
*
|
|
569
|
+
* If the media is still "freezing" after waiting for `FREEZING_STALLED_DELAY`
|
|
570
|
+
* milliseconds, the RxPlayer will emit a BUFFERING state through its API to
|
|
571
|
+
* notify that the player cannot currently advance.
|
|
572
|
+
*/
|
|
573
|
+
FREEZING_STALLED_DELAY: number;
|
|
574
|
+
/**
|
|
575
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
576
|
+
* called as "freezing" in the RxPlayer.
|
|
577
|
+
*
|
|
578
|
+
* If the media is frozen for a sufficiently large time
|
|
579
|
+
* (@see UNFREEZING_SEEK_DELAY), the RxPlayer will perform a seek corresponding
|
|
580
|
+
* to its current position plus `UNFREEZING_DELTA_POSITION` seconds.
|
|
581
|
+
*
|
|
582
|
+
* This should be kept short enough as the goal is just to un-freeze lower-level
|
|
583
|
+
* buffers.
|
|
584
|
+
*/
|
|
585
|
+
UNFREEZING_DELTA_POSITION: number;
|
|
547
586
|
/**
|
|
548
587
|
* Maximum authorized difference between what we calculated to be the
|
|
549
588
|
* beginning or end of the segment in a media buffer and what we
|
|
@@ -1031,6 +1070,26 @@ declare const _default: {
|
|
|
1031
1070
|
* and not significant from the media loss perspective.
|
|
1032
1071
|
*/
|
|
1033
1072
|
DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR: number;
|
|
1073
|
+
/**
|
|
1074
|
+
* RxPlayer's media buffers have a linked history registering recent events
|
|
1075
|
+
* that happened on those.
|
|
1076
|
+
* The reason is to implement various heuristics in case of weird browser
|
|
1077
|
+
* behavior.
|
|
1078
|
+
*
|
|
1079
|
+
* The `BUFFERED_HISTORY_RETENTION_TIME` is the minimum age an entry of
|
|
1080
|
+
* that history can have before being removed from the history.
|
|
1081
|
+
*/
|
|
1082
|
+
BUFFERED_HISTORY_RETENTION_TIME: number;
|
|
1083
|
+
/**
|
|
1084
|
+
* RxPlayer's media buffers have a linked history registering recent events
|
|
1085
|
+
* that happened on those.
|
|
1086
|
+
* The reason is to implement various heuristics in case of weird browser
|
|
1087
|
+
* behavior.
|
|
1088
|
+
*
|
|
1089
|
+
* The `BUFFERED_HISTORY_RETENTION_TIME` is the maximum number of entries
|
|
1090
|
+
* there can be in that history.
|
|
1091
|
+
*/
|
|
1092
|
+
BUFFERED_HISTORY_MAXIMUM_ENTRIES: number;
|
|
1034
1093
|
};
|
|
1035
1094
|
/**
|
|
1036
1095
|
* Configuration file for the whole player.
|
|
@@ -295,7 +295,7 @@ export default {
|
|
|
295
295
|
*/
|
|
296
296
|
DEFAULT_LIVE_GAP: {
|
|
297
297
|
DEFAULT: 10,
|
|
298
|
-
LOW_LATENCY: 3,
|
|
298
|
+
LOW_LATENCY: 3.5,
|
|
299
299
|
},
|
|
300
300
|
/**
|
|
301
301
|
* Maximum time, in seconds, the player should automatically skip when stalled
|
|
@@ -418,17 +418,12 @@ export default {
|
|
|
418
418
|
LOW_LATENCY: 1000,
|
|
419
419
|
},
|
|
420
420
|
/**
|
|
421
|
-
* Minimum interval at which
|
|
421
|
+
* Minimum interval at which playback information samples will be taken. This
|
|
422
422
|
* variable is for the "regular" mediasource strategy (that is, not for the
|
|
423
423
|
* directfile API.
|
|
424
424
|
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
427
|
-
* - set the clock for the ABR strategy.
|
|
428
|
-
* - used to trigger positionUpdate events.
|
|
429
|
-
*
|
|
430
|
-
* This common logic is for performance reasons, as we call multiple browser's
|
|
431
|
-
* APIs which are useful for most of these.
|
|
425
|
+
* At each of these interval, various different modules in the RxPlayer will
|
|
426
|
+
* run based on the information communicated.
|
|
432
427
|
*
|
|
433
428
|
* Keep in mind this is the minimum interval. This logic will also be
|
|
434
429
|
* triggered when various events of the media element are received.
|
|
@@ -549,7 +544,7 @@ export default {
|
|
|
549
544
|
},
|
|
550
545
|
/**
|
|
551
546
|
* Number of seconds ahead in the buffer after which playback will resume when
|
|
552
|
-
* the player was
|
|
547
|
+
* the player was rebuffering due to a low readyState.
|
|
553
548
|
* @type {Number}
|
|
554
549
|
*/
|
|
555
550
|
RESUME_GAP_AFTER_NOT_ENOUGH_DATA: {
|
|
@@ -566,17 +561,61 @@ export default {
|
|
|
566
561
|
LOW_LATENCY: 0.5,
|
|
567
562
|
},
|
|
568
563
|
/**
|
|
569
|
-
* Maximum number of seconds in the buffer based on which a "
|
|
564
|
+
* Maximum number of seconds in the buffer based on which a "rebuffering"
|
|
570
565
|
* strategy will be considered:
|
|
571
566
|
* The player will pause playback to get enough time building a sufficient
|
|
572
|
-
* buffer. This mostly happen when seeking in an unbuffered part or when
|
|
573
|
-
*
|
|
567
|
+
* buffer. This mostly happen when seeking in an unbuffered part or when not
|
|
568
|
+
* enough buffer is ahead of the current position.
|
|
574
569
|
* @type {Number}
|
|
575
570
|
*/
|
|
576
|
-
|
|
571
|
+
REBUFFERING_GAP: {
|
|
577
572
|
DEFAULT: 0.5,
|
|
578
573
|
LOW_LATENCY: 0.2,
|
|
579
574
|
},
|
|
575
|
+
/**
|
|
576
|
+
* Amount of time (in seconds) with data ahead of the current position, at
|
|
577
|
+
* which we always consider the browser to be able to play.
|
|
578
|
+
*
|
|
579
|
+
* If the media element has this amount of data in advance or more but
|
|
580
|
+
* playback cannot begin, the player will consider it "freezing".
|
|
581
|
+
*/
|
|
582
|
+
MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING: 2,
|
|
583
|
+
/**
|
|
584
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
585
|
+
* called as "freezing" in the RxPlayer.
|
|
586
|
+
*
|
|
587
|
+
* If the media is still "freezing" after waiting for `UNFREEZING_SEEK_DELAY`
|
|
588
|
+
* milliseconds, the RxPlayer will try to un-freeze the situation by interacting
|
|
589
|
+
* with the media element.
|
|
590
|
+
*
|
|
591
|
+
* Those interactions can be costly in time before playback continue, so it
|
|
592
|
+
* should be set at a sufficiently high value to avoid false positives.
|
|
593
|
+
*/
|
|
594
|
+
UNFREEZING_SEEK_DELAY: 6000,
|
|
595
|
+
/**
|
|
596
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
597
|
+
* called as "freezing" in the RxPlayer.
|
|
598
|
+
*
|
|
599
|
+
* A small freezing interval may be normal as the browser may take time before
|
|
600
|
+
* playing, e.g. after a seek.
|
|
601
|
+
*
|
|
602
|
+
* If the media is still "freezing" after waiting for `FREEZING_STALLED_DELAY`
|
|
603
|
+
* milliseconds, the RxPlayer will emit a BUFFERING state through its API to
|
|
604
|
+
* notify that the player cannot currently advance.
|
|
605
|
+
*/
|
|
606
|
+
FREEZING_STALLED_DELAY: 600,
|
|
607
|
+
/**
|
|
608
|
+
* A media whose position inexplicably does not increment despite playing is
|
|
609
|
+
* called as "freezing" in the RxPlayer.
|
|
610
|
+
*
|
|
611
|
+
* If the media is frozen for a sufficiently large time
|
|
612
|
+
* (@see UNFREEZING_SEEK_DELAY), the RxPlayer will perform a seek corresponding
|
|
613
|
+
* to its current position plus `UNFREEZING_DELTA_POSITION` seconds.
|
|
614
|
+
*
|
|
615
|
+
* This should be kept short enough as the goal is just to un-freeze lower-level
|
|
616
|
+
* buffers.
|
|
617
|
+
*/
|
|
618
|
+
UNFREEZING_DELTA_POSITION: 0.001,
|
|
580
619
|
/**
|
|
581
620
|
* Maximum authorized difference between what we calculated to be the
|
|
582
621
|
* beginning or end of the segment in a media buffer and what we
|
|
@@ -1072,4 +1111,24 @@ export default {
|
|
|
1072
1111
|
* and not significant from the media loss perspective.
|
|
1073
1112
|
*/
|
|
1074
1113
|
DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR: 1 / 1000,
|
|
1114
|
+
/**
|
|
1115
|
+
* RxPlayer's media buffers have a linked history registering recent events
|
|
1116
|
+
* that happened on those.
|
|
1117
|
+
* The reason is to implement various heuristics in case of weird browser
|
|
1118
|
+
* behavior.
|
|
1119
|
+
*
|
|
1120
|
+
* The `BUFFERED_HISTORY_RETENTION_TIME` is the minimum age an entry of
|
|
1121
|
+
* that history can have before being removed from the history.
|
|
1122
|
+
*/
|
|
1123
|
+
BUFFERED_HISTORY_RETENTION_TIME: 60000,
|
|
1124
|
+
/**
|
|
1125
|
+
* RxPlayer's media buffers have a linked history registering recent events
|
|
1126
|
+
* that happened on those.
|
|
1127
|
+
* The reason is to implement various heuristics in case of weird browser
|
|
1128
|
+
* behavior.
|
|
1129
|
+
*
|
|
1130
|
+
* The `BUFFERED_HISTORY_RETENTION_TIME` is the maximum number of entries
|
|
1131
|
+
* there can be in that history.
|
|
1132
|
+
*/
|
|
1133
|
+
BUFFERED_HISTORY_MAXIMUM_ENTRIES: 200,
|
|
1075
1134
|
};
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
17
|
import { Representation } from "../../manifest";
|
|
18
|
+
import { ISharedReference } from "../../utils/reference";
|
|
18
19
|
import { IBufferType } from "../segment_buffers";
|
|
19
|
-
import { IABREstimate, IABRStreamEvents,
|
|
20
|
-
export declare type
|
|
20
|
+
import { IABREstimate, IABRStreamEvents, IRepresentationEstimatorPlaybackObservation } from "./representation_estimator";
|
|
21
|
+
export declare type IABRManagerPlaybackObservation = IRepresentationEstimatorPlaybackObservation;
|
|
21
22
|
interface IRepresentationEstimatorsThrottlers {
|
|
22
23
|
limitWidth: Partial<Record<IBufferType, Observable<number>>>;
|
|
23
24
|
throttle: Partial<Record<IBufferType, Observable<number>>>;
|
|
@@ -27,12 +28,12 @@ export interface IABRManagerArguments {
|
|
|
27
28
|
initialBitrates: Partial<Record<IBufferType, // Initial bitrate chosen, per
|
|
28
29
|
number>>;
|
|
29
30
|
lowLatencyMode: boolean;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
/** Minimum bitrate chosen when in auto mode, per type (0 by default) */
|
|
32
|
+
minAutoBitrates: Partial<Record<IBufferType, ISharedReference<number>>>;
|
|
33
|
+
/** Maximum bitrate chosen when in auto mode, per type (0 by default) */
|
|
34
|
+
maxAutoBitrates: Partial<Record<IBufferType, ISharedReference<number>>>;
|
|
35
|
+
/** Manually forced bitrate set for a given type (`-1` for auto mode */
|
|
36
|
+
manualBitrates: Partial<Record<IBufferType, ISharedReference<number>>>;
|
|
36
37
|
throttlers: IRepresentationEstimatorsThrottlers;
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
@@ -60,11 +61,11 @@ export default class ABRManager {
|
|
|
60
61
|
* state).
|
|
61
62
|
* @param {string} type
|
|
62
63
|
* @param {Array.<Representation>} representations
|
|
63
|
-
* @param {Observable<Object>}
|
|
64
|
+
* @param {Observable<Object>} observation$
|
|
64
65
|
* @param {Observable<Object>} streamEvents$
|
|
65
66
|
* @returns {Observable}
|
|
66
67
|
*/
|
|
67
|
-
get$(type: IBufferType, representations: Representation[],
|
|
68
|
+
get$(type: IBufferType, representations: Representation[], observation$: Observable<IABRManagerPlaybackObservation>, streamEvents$: Observable<IABRStreamEvents>): Observable<IABREstimate>;
|
|
68
69
|
/**
|
|
69
70
|
* @param {string} bufferType
|
|
70
71
|
* @returns {Object}
|