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
|
@@ -13,14 +13,15 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Adaptation, ISegment, Representation } from "
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* @returns {function}
|
|
21
|
-
*/
|
|
22
|
-
export default function generateCachedSegmentDetector(): (content: {
|
|
23
|
-
representation: Representation;
|
|
16
|
+
import { Adaptation, ISegment, Period, Representation } from "../../../manifest";
|
|
17
|
+
/** Content information for a single buffered chunk */
|
|
18
|
+
export interface IChunkContext {
|
|
19
|
+
/** Adaptation this chunk is related to. */
|
|
24
20
|
adaptation: Adaptation;
|
|
21
|
+
/** Period this chunk is related to. */
|
|
22
|
+
period: Period;
|
|
23
|
+
/** Representation this chunk is related to. */
|
|
24
|
+
representation: Representation;
|
|
25
|
+
/** Segment this chunk is related to. */
|
|
25
26
|
segment: ISegment;
|
|
26
|
-
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2015 CANAL+ Group
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
@@ -118,7 +118,7 @@ export default class SegmentBuffersStore {
|
|
|
118
118
|
*/
|
|
119
119
|
getStatus(bufferType: IBufferType): {
|
|
120
120
|
type: "initialized";
|
|
121
|
-
value: SegmentBuffer
|
|
121
|
+
value: SegmentBuffer;
|
|
122
122
|
} | {
|
|
123
123
|
type: "uninitialized";
|
|
124
124
|
} | {
|
|
@@ -161,7 +161,7 @@ export default class SegmentBuffersStore {
|
|
|
161
161
|
* @param {Object|undefined} options
|
|
162
162
|
* @returns {Object}
|
|
163
163
|
*/
|
|
164
|
-
createSegmentBuffer(bufferType: IBufferType, codec: string, options?: ISegmentBufferOptions): SegmentBuffer
|
|
164
|
+
createSegmentBuffer(bufferType: IBufferType, codec: string, options?: ISegmentBufferOptions): SegmentBuffer;
|
|
165
165
|
/**
|
|
166
166
|
* Dispose of the active SegmentBuffer for the given type.
|
|
167
167
|
* @param {string} bufferType
|
|
@@ -160,7 +160,7 @@ var SegmentBuffersStore = /** @class */ (function () {
|
|
|
160
160
|
SegmentBuffersStore.prototype.disableSegmentBuffer = function (bufferType) {
|
|
161
161
|
var currentValue = this._initializedSegmentBuffers[bufferType];
|
|
162
162
|
if (currentValue === null) {
|
|
163
|
-
log.warn("SBS: The "
|
|
163
|
+
log.warn("SBS: The ".concat(bufferType, " SegmentBuffer was already disabled."));
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
if (currentValue !== undefined) {
|
|
@@ -22,15 +22,17 @@
|
|
|
22
22
|
* ABRManager, and orchestrates a RepresentationStream, which will download and
|
|
23
23
|
* push segments corresponding to a chosen Representation.
|
|
24
24
|
*/
|
|
25
|
-
import {
|
|
25
|
+
import { Observable } from "rxjs";
|
|
26
26
|
import Manifest, { Adaptation, Period } from "../../../manifest";
|
|
27
|
+
import { IReadOnlySharedReference } from "../../../utils/reference";
|
|
27
28
|
import ABRManager from "../../abr";
|
|
29
|
+
import { IReadOnlyPlaybackObserver } from "../../api";
|
|
28
30
|
import { SegmentFetcherCreator } from "../../fetchers";
|
|
29
31
|
import { SegmentBuffer } from "../../segment_buffers";
|
|
30
|
-
import {
|
|
32
|
+
import { IRepresentationStreamPlaybackObservation } from "../representation";
|
|
31
33
|
import { IAdaptationStreamEvent } from "../types";
|
|
32
|
-
/**
|
|
33
|
-
export interface
|
|
34
|
+
/** Regular playback information needed by the AdaptationStream. */
|
|
35
|
+
export interface IAdaptationStreamPlaybackObservation extends IRepresentationStreamPlaybackObservation {
|
|
34
36
|
/**
|
|
35
37
|
* For the current SegmentBuffer, difference in seconds between the next position
|
|
36
38
|
* where no segment data is available and the current position.
|
|
@@ -38,25 +40,25 @@ export interface IAdaptationStreamClockTick extends IRepresentationStreamClockTi
|
|
|
38
40
|
bufferGap: number;
|
|
39
41
|
/** `duration` property of the HTMLMediaElement on which the content plays. */
|
|
40
42
|
duration: number;
|
|
41
|
-
/** Allows to fetch the current position at any time. */
|
|
42
|
-
getCurrentTime: () => number;
|
|
43
43
|
/** If true, the player has been put on pause. */
|
|
44
44
|
isPaused: boolean;
|
|
45
45
|
/** Last "playback rate" asked by the user. */
|
|
46
46
|
speed: number;
|
|
47
|
+
/**
|
|
48
|
+
* Only set for live contents.
|
|
49
|
+
* Difference between the live edge and the current position, in seconds.
|
|
50
|
+
*/
|
|
51
|
+
liveGap: number | undefined;
|
|
47
52
|
}
|
|
48
53
|
/** Arguments given when creating a new `AdaptationStream`. */
|
|
49
|
-
export interface IAdaptationStreamArguments
|
|
54
|
+
export interface IAdaptationStreamArguments {
|
|
50
55
|
/**
|
|
51
56
|
* Module allowing to find the best Representation depending on the current
|
|
52
57
|
* conditions like the current network bandwidth.
|
|
53
58
|
*/
|
|
54
59
|
abrManager: ABRManager;
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
* The main AdaptationStream logic will be triggered on each `tick`.
|
|
58
|
-
*/
|
|
59
|
-
clock$: Observable<IAdaptationStreamClockTick>;
|
|
60
|
+
/** Regularly emit playback conditions. */
|
|
61
|
+
playbackObserver: IReadOnlyPlaybackObserver<IAdaptationStreamPlaybackObservation>;
|
|
60
62
|
/** Content you want to create this Stream for. */
|
|
61
63
|
content: {
|
|
62
64
|
manifest: Manifest;
|
|
@@ -65,15 +67,15 @@ export interface IAdaptationStreamArguments<T> {
|
|
|
65
67
|
};
|
|
66
68
|
options: IAdaptationStreamOptions;
|
|
67
69
|
/** SourceBuffer wrapper - needed to push media segments. */
|
|
68
|
-
segmentBuffer: SegmentBuffer
|
|
70
|
+
segmentBuffer: SegmentBuffer;
|
|
69
71
|
/** Module used to fetch the wanted media segments. */
|
|
70
|
-
segmentFetcherCreator: SegmentFetcherCreator
|
|
72
|
+
segmentFetcherCreator: SegmentFetcherCreator;
|
|
71
73
|
/**
|
|
72
74
|
* "Buffer goal" wanted, or the ideal amount of time ahead of the current
|
|
73
75
|
* position in the current SegmentBuffer. When this amount has been reached
|
|
74
76
|
* this AdaptationStream won't try to download new segments.
|
|
75
77
|
*/
|
|
76
|
-
wantedBufferAhead
|
|
78
|
+
wantedBufferAhead: IReadOnlySharedReference<number>;
|
|
77
79
|
}
|
|
78
80
|
/**
|
|
79
81
|
* Various specific stream "options" which tweak the behavior of the
|
|
@@ -130,4 +132,4 @@ export interface IAdaptationStreamOptions {
|
|
|
130
132
|
* @param {Object} args
|
|
131
133
|
* @returns {Observable}
|
|
132
134
|
*/
|
|
133
|
-
export default function AdaptationStream
|
|
135
|
+
export default function AdaptationStream({ abrManager, playbackObserver, content, options, segmentBuffer, segmentFetcherCreator, wantedBufferAhead, }: IAdaptationStreamArguments): Observable<IAdaptationStreamEvent>;
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
* ABRManager, and orchestrates a RepresentationStream, which will download and
|
|
23
23
|
* push segments corresponding to a chosen Representation.
|
|
24
24
|
*/
|
|
25
|
-
import {
|
|
26
|
-
import { catchError, distinctUntilChanged, exhaustMap, filter, map, mergeMap, share, take, tap, } from "rxjs/operators";
|
|
25
|
+
import { catchError, concat as observableConcat, defer as observableDefer, distinctUntilChanged, EMPTY, exhaustMap, filter, map, merge as observableMerge, mergeMap, of as observableOf, share, take, tap, } from "rxjs";
|
|
27
26
|
import config from "../../../config";
|
|
28
27
|
import { formatError } from "../../../errors";
|
|
29
28
|
import log from "../../../log";
|
|
30
29
|
import deferSubscriptions from "../../../utils/defer_subscriptions";
|
|
30
|
+
import { createSharedReference, } from "../../../utils/reference";
|
|
31
31
|
import EVENTS from "../events_generators";
|
|
32
|
+
import reloadAfterSwitch from "../reload_after_switch";
|
|
32
33
|
import RepresentationStream from "../representation";
|
|
33
|
-
import reloadAfterSwitch from "../utils";
|
|
34
34
|
import createRepresentationEstimator from "./create_representation_estimator";
|
|
35
35
|
var DELTA_POSITION_AFTER_RELOAD = config.DELTA_POSITION_AFTER_RELOAD;
|
|
36
36
|
/**
|
|
@@ -48,7 +48,7 @@ var DELTA_POSITION_AFTER_RELOAD = config.DELTA_POSITION_AFTER_RELOAD;
|
|
|
48
48
|
* @returns {Observable}
|
|
49
49
|
*/
|
|
50
50
|
export default function AdaptationStream(_a) {
|
|
51
|
-
var abrManager = _a.abrManager,
|
|
51
|
+
var abrManager = _a.abrManager, playbackObserver = _a.playbackObserver, content = _a.content, options = _a.options, segmentBuffer = _a.segmentBuffer, segmentFetcherCreator = _a.segmentFetcherCreator, wantedBufferAhead = _a.wantedBufferAhead;
|
|
52
52
|
var directManualBitrateSwitching = options.manualBitrateSwitchingMode === "direct";
|
|
53
53
|
var manifest = content.manifest, period = content.period, adaptation = content.adaptation;
|
|
54
54
|
/**
|
|
@@ -60,25 +60,39 @@ export default function AdaptationStream(_a) {
|
|
|
60
60
|
* https://developers.google.com/web/updates/2017/10/quotaexceedederror
|
|
61
61
|
*/
|
|
62
62
|
var bufferGoalRatioMap = {};
|
|
63
|
-
var _b = createRepresentationEstimator(content, abrManager,
|
|
63
|
+
var _b = createRepresentationEstimator(content, abrManager, playbackObserver.observe(true)), estimator$ = _b.estimator$, abrFeedbacks$ = _b.abrFeedbacks$;
|
|
64
64
|
/** Allows the `RepresentationStream` to easily fetch media segments. */
|
|
65
|
-
var segmentFetcher = segmentFetcherCreator
|
|
65
|
+
var segmentFetcher = segmentFetcherCreator
|
|
66
|
+
.createSegmentFetcher(adaptation.type, {
|
|
67
|
+
onRequestBegin: function (value) {
|
|
68
|
+
abrFeedbacks$.next({ type: "requestBegin", value: value });
|
|
69
|
+
},
|
|
70
|
+
onRequestEnd: function (value) {
|
|
71
|
+
abrFeedbacks$.next({ type: "requestEnd", value: value });
|
|
72
|
+
},
|
|
73
|
+
onProgress: function (value) {
|
|
74
|
+
abrFeedbacks$.next({ type: "progress", value: value });
|
|
75
|
+
},
|
|
76
|
+
onMetrics: function (value) {
|
|
77
|
+
abrFeedbacks$.next({ type: "metrics", value: value });
|
|
78
|
+
},
|
|
79
|
+
});
|
|
66
80
|
/**
|
|
67
|
-
*
|
|
68
|
-
* starting with
|
|
81
|
+
* Stores the last estimate emitted through the `abrEstimate$` Observable,
|
|
82
|
+
* starting with `null`.
|
|
69
83
|
* This allows to easily rely on that value in inner Observables which might also
|
|
70
84
|
* need the last already-considered value.
|
|
71
85
|
*/
|
|
72
|
-
var lastEstimate
|
|
86
|
+
var lastEstimate = createSharedReference(null);
|
|
73
87
|
/** Emits abr estimates on Subscription. */
|
|
74
|
-
var abrEstimate$ = estimator$.pipe(tap(function (estimate) { lastEstimate
|
|
88
|
+
var abrEstimate$ = estimator$.pipe(tap(function (estimate) { lastEstimate.setValue(estimate); }), deferSubscriptions(), share());
|
|
75
89
|
/** Emit at each bitrate estimate done by the ABRManager. */
|
|
76
90
|
var bitrateEstimate$ = abrEstimate$.pipe(filter(function (_a) {
|
|
77
91
|
var bitrate = _a.bitrate;
|
|
78
92
|
return bitrate != null;
|
|
79
93
|
}), distinctUntilChanged(function (old, current) { return old.bitrate === current.bitrate; }), map(function (_a) {
|
|
80
94
|
var bitrate = _a.bitrate;
|
|
81
|
-
log.debug("Stream: new "
|
|
95
|
+
log.debug("Stream: new ".concat(adaptation.type, " bitrate estimate"), bitrate);
|
|
82
96
|
return EVENTS.bitrateEstimationChange(adaptation.type, bitrate);
|
|
83
97
|
}));
|
|
84
98
|
/** Recursively create `RepresentationStream`s according to the last estimate. */
|
|
@@ -106,13 +120,13 @@ export default function AdaptationStream(_a) {
|
|
|
106
120
|
if (directManualBitrateSwitching &&
|
|
107
121
|
fromEstimate.manual &&
|
|
108
122
|
!isFirstEstimate) {
|
|
109
|
-
return reloadAfterSwitch(period,
|
|
123
|
+
return reloadAfterSwitch(period, adaptation.type, playbackObserver, DELTA_POSITION_AFTER_RELOAD.bitrateSwitch);
|
|
110
124
|
}
|
|
111
125
|
/**
|
|
112
126
|
* Emit when the current RepresentationStream should be terminated to make
|
|
113
127
|
* place for a new one (e.g. when switching quality).
|
|
114
128
|
*/
|
|
115
|
-
var terminateCurrentStream$ = lastEstimate
|
|
129
|
+
var terminateCurrentStream$ = lastEstimate.asObservable().pipe(filter(function (newEstimate) { return newEstimate === null ||
|
|
116
130
|
newEstimate.representation.id !== representation.id ||
|
|
117
131
|
(newEstimate.manual && !fromEstimate.manual); }), take(1), map(function (newEstimate) {
|
|
118
132
|
if (newEstimate === null) {
|
|
@@ -141,21 +155,21 @@ export default function AdaptationStream(_a) {
|
|
|
141
155
|
*/
|
|
142
156
|
var fastSwitchThreshold$ = !options.enableFastSwitching ?
|
|
143
157
|
observableOf(0) : // Do not fast-switch anything
|
|
144
|
-
lastEstimate
|
|
158
|
+
lastEstimate.asObservable().pipe(map(function (estimate) { return estimate === null ? undefined :
|
|
145
159
|
estimate.knownStableBitrate; }), distinctUntilChanged());
|
|
146
160
|
var representationChange$ = observableOf(EVENTS.representationChange(adaptation.type, period, representation));
|
|
147
161
|
return observableConcat(representationChange$, createRepresentationStream(representation, terminateCurrentStream$, fastSwitchThreshold$)).pipe(tap(function (evt) {
|
|
148
162
|
if (evt.type === "representationChange" ||
|
|
149
163
|
evt.type === "added-segment") {
|
|
150
|
-
return
|
|
164
|
+
return abrFeedbacks$.next(evt);
|
|
151
165
|
}
|
|
152
166
|
}), mergeMap(function (evt) {
|
|
153
167
|
if (evt.type === "stream-terminating") {
|
|
154
|
-
var
|
|
155
|
-
if (
|
|
168
|
+
var estimate = lastEstimate.getValue();
|
|
169
|
+
if (estimate === null) {
|
|
156
170
|
return EMPTY;
|
|
157
171
|
}
|
|
158
|
-
return recursivelyCreateRepresentationStreams(
|
|
172
|
+
return recursivelyCreateRepresentationStreams(estimate, false);
|
|
159
173
|
}
|
|
160
174
|
return observableOf(evt);
|
|
161
175
|
}));
|
|
@@ -172,29 +186,19 @@ export default function AdaptationStream(_a) {
|
|
|
172
186
|
var bufferGoalRatio = oldBufferGoalRatio != null ? oldBufferGoalRatio :
|
|
173
187
|
1;
|
|
174
188
|
bufferGoalRatioMap[representation.id] = bufferGoalRatio;
|
|
175
|
-
var bufferGoal$ = wantedBufferAhead
|
|
176
|
-
log.info("Stream: changing representation", adaptation.type, representation);
|
|
177
|
-
return RepresentationStream({
|
|
178
|
-
|
|
179
|
-
adaptation: adaptation,
|
|
180
|
-
period: period,
|
|
181
|
-
manifest: manifest },
|
|
182
|
-
segmentBuffer: segmentBuffer,
|
|
183
|
-
segmentFetcher: segmentFetcher,
|
|
184
|
-
terminate$: terminateCurrentStream$,
|
|
185
|
-
options: { bufferGoal$: bufferGoal$,
|
|
186
|
-
drmSystemId: options.drmSystemId,
|
|
187
|
-
fastSwitchThreshold$: fastSwitchThreshold$ } })
|
|
189
|
+
var bufferGoal$ = wantedBufferAhead.asObservable().pipe(map(function (wba) { return wba * bufferGoalRatio; }));
|
|
190
|
+
log.info("Stream: changing representation", adaptation.type, representation.id, representation.bitrate);
|
|
191
|
+
return RepresentationStream({ playbackObserver: playbackObserver, content: { representation: representation, adaptation: adaptation, period: period, manifest: manifest }, segmentBuffer: segmentBuffer, segmentFetcher: segmentFetcher, terminate$: terminateCurrentStream$,
|
|
192
|
+
options: { bufferGoal$: bufferGoal$, drmSystemId: options.drmSystemId, fastSwitchThreshold$: fastSwitchThreshold$ } })
|
|
188
193
|
.pipe(catchError(function (err) {
|
|
189
194
|
var formattedError = formatError(err, {
|
|
190
195
|
defaultCode: "NONE",
|
|
191
196
|
defaultReason: "Unknown `RepresentationStream` error",
|
|
192
197
|
});
|
|
193
198
|
if (formattedError.code === "BUFFER_FULL_ERROR") {
|
|
194
|
-
var
|
|
199
|
+
var wba = wantedBufferAhead.getValue();
|
|
195
200
|
var lastBufferGoalRatio = bufferGoalRatio;
|
|
196
|
-
if (lastBufferGoalRatio <= 0.25 ||
|
|
197
|
-
wantedBufferAhead * lastBufferGoalRatio <= 2) {
|
|
201
|
+
if (lastBufferGoalRatio <= 0.25 || wba * lastBufferGoalRatio <= 2) {
|
|
198
202
|
throw formattedError;
|
|
199
203
|
}
|
|
200
204
|
bufferGoalRatioMap[representation.id] = lastBufferGoalRatio - 0.25;
|
|
@@ -15,36 +15,28 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Observable, Subject } from "rxjs";
|
|
17
17
|
import Manifest, { Adaptation } from "../../../manifest";
|
|
18
|
-
import ABRManager, { IABREstimate,
|
|
19
|
-
import { IRepresentationChangeEvent, IStreamEventAddedSegment } from "../types";
|
|
18
|
+
import ABRManager, { IABREstimate, IABRManagerPlaybackObservation, IABRStreamEvents } from "../../abr";
|
|
20
19
|
/**
|
|
21
20
|
* Create an "estimator$" Observable which will emit which Representation (from
|
|
22
21
|
* the given `Adaptation`) is the best fit (see `IABREstimate` type definition)
|
|
23
22
|
* corresponding to the current network and playback conditions.
|
|
24
23
|
*
|
|
25
|
-
* This function also returns
|
|
26
|
-
* helping the estimator to make its choices
|
|
24
|
+
* This function also returns a subject that should be used to add feedback
|
|
25
|
+
* helping the estimator to make its choices.
|
|
27
26
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* - `streamFeedback$`: Subject through which stream-related events should be
|
|
32
|
-
* emitted.
|
|
33
|
-
*
|
|
34
|
-
* You can look at the types defined for both of those Subjects to have more
|
|
35
|
-
* information on what data is expected. The idea is to provide as much data as
|
|
36
|
-
* possible so the estimation is as adapted as possible.
|
|
27
|
+
* You can look at the types defined for this Subject to have more information
|
|
28
|
+
* on what data is expected. The idea is to provide as much data as possible so
|
|
29
|
+
* the estimation is as adapted as possible.
|
|
37
30
|
*
|
|
38
31
|
* @param {Object} content
|
|
39
32
|
* @param {Object} abrManager
|
|
40
|
-
* @param {Observable}
|
|
33
|
+
* @param {Observable} observation$
|
|
41
34
|
* @returns {Object}
|
|
42
35
|
*/
|
|
43
36
|
export default function createRepresentationEstimator({ manifest, adaptation }: {
|
|
44
37
|
manifest: Manifest;
|
|
45
38
|
adaptation: Adaptation;
|
|
46
|
-
}, abrManager: ABRManager,
|
|
39
|
+
}, abrManager: ABRManager, observation$: Observable<IABRManagerPlaybackObservation>): {
|
|
47
40
|
estimator$: Observable<IABREstimate>;
|
|
48
|
-
|
|
49
|
-
requestFeedback$: Subject<IABRMetricsEvent | IABRRequestBeginEvent | IABRRequestProgressEvent | IABRRequestEndEvent>;
|
|
41
|
+
abrFeedbacks$: Subject<IABRStreamEvents>;
|
|
50
42
|
};
|
|
@@ -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 { merge as observableMerge, of as observableOf,
|
|
17
|
-
import { distinctUntilChanged, map, switchMap, } from "rxjs/operators";
|
|
16
|
+
import { Subject, distinctUntilChanged, map, merge as observableMerge, of as observableOf, switchMap, } from "rxjs";
|
|
18
17
|
import { MediaError } from "../../../errors";
|
|
19
18
|
import { fromEvent } from "../../../utils/event_emitter";
|
|
20
19
|
/**
|
|
@@ -22,29 +21,21 @@ import { fromEvent } from "../../../utils/event_emitter";
|
|
|
22
21
|
* the given `Adaptation`) is the best fit (see `IABREstimate` type definition)
|
|
23
22
|
* corresponding to the current network and playback conditions.
|
|
24
23
|
*
|
|
25
|
-
* This function also returns
|
|
26
|
-
* helping the estimator to make its choices
|
|
24
|
+
* This function also returns a subject that should be used to add feedback
|
|
25
|
+
* helping the estimator to make its choices.
|
|
27
26
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* - `streamFeedback$`: Subject through which stream-related events should be
|
|
32
|
-
* emitted.
|
|
33
|
-
*
|
|
34
|
-
* You can look at the types defined for both of those Subjects to have more
|
|
35
|
-
* information on what data is expected. The idea is to provide as much data as
|
|
36
|
-
* possible so the estimation is as adapted as possible.
|
|
27
|
+
* You can look at the types defined for this Subject to have more information
|
|
28
|
+
* on what data is expected. The idea is to provide as much data as possible so
|
|
29
|
+
* the estimation is as adapted as possible.
|
|
37
30
|
*
|
|
38
31
|
* @param {Object} content
|
|
39
32
|
* @param {Object} abrManager
|
|
40
|
-
* @param {Observable}
|
|
33
|
+
* @param {Observable} observation$
|
|
41
34
|
* @returns {Object}
|
|
42
35
|
*/
|
|
43
|
-
export default function createRepresentationEstimator(_a, abrManager,
|
|
36
|
+
export default function createRepresentationEstimator(_a, abrManager, observation$) {
|
|
44
37
|
var manifest = _a.manifest, adaptation = _a.adaptation;
|
|
45
|
-
var
|
|
46
|
-
var requestFeedback$ = new Subject();
|
|
47
|
-
var abrEvents$ = observableMerge(streamFeedback$, requestFeedback$);
|
|
38
|
+
var abrFeedbacks$ = new Subject();
|
|
48
39
|
var estimator$ = observableMerge(
|
|
49
40
|
// subscribe "first" (hack as it is a merge here) to event
|
|
50
41
|
fromEvent(manifest, "decipherabilityUpdate"),
|
|
@@ -69,9 +60,7 @@ export default function createRepresentationEstimator(_a, abrManager, clock$) {
|
|
|
69
60
|
}
|
|
70
61
|
return true;
|
|
71
62
|
}), switchMap(function (playableRepresentations) {
|
|
72
|
-
return abrManager.get$(adaptation.type, playableRepresentations,
|
|
63
|
+
return abrManager.get$(adaptation.type, playableRepresentations, observation$, abrFeedbacks$);
|
|
73
64
|
}));
|
|
74
|
-
return { estimator$: estimator$,
|
|
75
|
-
streamFeedback$: streamFeedback$,
|
|
76
|
-
requestFeedback$: requestFeedback$ };
|
|
65
|
+
return { estimator$: estimator$, abrFeedbacks$: abrFeedbacks$ };
|
|
77
66
|
}
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import AdaptationStream, { IAdaptationStreamArguments,
|
|
16
|
+
import AdaptationStream, { IAdaptationStreamArguments, IAdaptationStreamPlaybackObservation, IAdaptationStreamOptions } from "./adaptation_stream";
|
|
17
17
|
export default AdaptationStream;
|
|
18
|
-
export { IAdaptationStreamArguments,
|
|
18
|
+
export { IAdaptationStreamArguments, IAdaptationStreamPlaybackObservation, IAdaptationStreamOptions, };
|
|
@@ -17,9 +17,8 @@ import { Subject } from "rxjs";
|
|
|
17
17
|
import { ICustomError } from "../../errors";
|
|
18
18
|
import { Adaptation, ISegment, Period, Representation } from "../../manifest";
|
|
19
19
|
import { IContentProtection } from "../eme";
|
|
20
|
-
import { INeedsBufferFlush } from "../init";
|
|
21
20
|
import { IBufferType } from "../segment_buffers";
|
|
22
|
-
import { IActivePeriodChangedEvent, IAdaptationChangeEvent, IBitrateEstimationChangeEvent, ICompletedStreamEvent, IEncryptionDataEncounteredEvent, IEndOfStreamEvent, INeedsDecipherabilityFlush, INeedsMediaSourceReload, IPeriodStreamClearedEvent, IPeriodStreamReadyEvent, IRepresentationChangeEvent, IResumeStreamEvent, IStreamEventAddedSegment, IStreamManifestMightBeOutOfSync, IStreamNeedsManifestRefresh, IStreamTerminatingEvent, IStreamWarningEvent } from "./types";
|
|
21
|
+
import { IActivePeriodChangedEvent, IAdaptationChangeEvent, IBitrateEstimationChangeEvent, ICompletedStreamEvent, IEncryptionDataEncounteredEvent, IEndOfStreamEvent, ILockedStreamEvent, INeedsBufferFlushEvent, INeedsDecipherabilityFlush, INeedsMediaSourceReload, IPeriodStreamClearedEvent, IPeriodStreamReadyEvent, IRepresentationChangeEvent, IResumeStreamEvent, IStreamEventAddedSegment, IStreamManifestMightBeOutOfSync, IStreamNeedsManifestRefresh, IStreamTerminatingEvent, IStreamWarningEvent, IWaitingMediaSourceReloadInternalEvent } from "./types";
|
|
23
22
|
declare const EVENTS: {
|
|
24
23
|
activePeriodChanged(period: Period): IActivePeriodChangedEvent;
|
|
25
24
|
adaptationChange(bufferType: IBufferType, adaptation: Adaptation | null, period: Period): IAdaptationChangeEvent;
|
|
@@ -34,15 +33,22 @@ declare const EVENTS: {
|
|
|
34
33
|
needsManifestRefresh(): IStreamNeedsManifestRefresh;
|
|
35
34
|
manifestMightBeOufOfSync(): IStreamManifestMightBeOutOfSync;
|
|
36
35
|
/**
|
|
37
|
-
* @param {Object} period - The Period to which the stream logic asking for a
|
|
38
|
-
* media source reload is linked.
|
|
39
36
|
* @param {number} reloadAt - Position at which we should reload
|
|
40
37
|
* @param {boolean} reloadOnPause - If `false`, stay on pause after reloading.
|
|
41
38
|
* if `true`, automatically play once reloaded.
|
|
42
39
|
* @returns {Object}
|
|
43
40
|
*/
|
|
44
|
-
needsMediaSourceReload(
|
|
45
|
-
|
|
41
|
+
needsMediaSourceReload(reloadAt: number, reloadOnPause: boolean): INeedsMediaSourceReload;
|
|
42
|
+
/**
|
|
43
|
+
* @param {string} bufferType - The buffer type for which the stream cannot
|
|
44
|
+
* currently load segments.
|
|
45
|
+
* @param {Object} period - The Period for which the stream cannot
|
|
46
|
+
* currently load segments.
|
|
47
|
+
* media source reload is linked.
|
|
48
|
+
* @returns {Object}
|
|
49
|
+
*/
|
|
50
|
+
lockedStream(bufferType: IBufferType, period: Period): ILockedStreamEvent;
|
|
51
|
+
needsBufferFlush(): INeedsBufferFlushEvent;
|
|
46
52
|
needsDecipherabilityFlush(position: number, autoPlay: boolean, duration: number): INeedsDecipherabilityFlush;
|
|
47
53
|
periodStreamReady(type: IBufferType, period: Period, adaptation$: Subject<Adaptation | null>): IPeriodStreamReadyEvent;
|
|
48
54
|
periodStreamCleared(type: IBufferType, period: Period): IPeriodStreamClearedEvent;
|
|
@@ -51,5 +57,6 @@ declare const EVENTS: {
|
|
|
51
57
|
streamTerminating(): IStreamTerminatingEvent;
|
|
52
58
|
resumeStream(): IResumeStreamEvent;
|
|
53
59
|
warning(value: ICustomError): IStreamWarningEvent;
|
|
60
|
+
waitingMediaSourceReload(bufferType: IBufferType, period: Period, position: number, autoPlay: boolean): IWaitingMediaSourceReloadInternalEvent;
|
|
54
61
|
};
|
|
55
62
|
export default EVENTS;
|
|
@@ -20,16 +20,11 @@ var EVENTS = {
|
|
|
20
20
|
},
|
|
21
21
|
adaptationChange: function (bufferType, adaptation, period) {
|
|
22
22
|
return { type: "adaptationChange",
|
|
23
|
-
value: { type: bufferType,
|
|
24
|
-
adaptation: adaptation,
|
|
25
|
-
period: period } };
|
|
23
|
+
value: { type: bufferType, adaptation: adaptation, period: period } };
|
|
26
24
|
},
|
|
27
25
|
addedSegment: function (content, segment, buffered, segmentData) {
|
|
28
26
|
return { type: "added-segment",
|
|
29
|
-
value: { content: content,
|
|
30
|
-
segment: segment,
|
|
31
|
-
segmentData: segmentData,
|
|
32
|
-
buffered: buffered } };
|
|
27
|
+
value: { content: content, segment: segment, segmentData: segmentData, buffered: buffered } };
|
|
33
28
|
},
|
|
34
29
|
bitrateEstimationChange: function (type, bitrate) {
|
|
35
30
|
return { type: "bitrateEstimationChange",
|
|
@@ -52,18 +47,27 @@ var EVENTS = {
|
|
|
52
47
|
value: undefined };
|
|
53
48
|
},
|
|
54
49
|
/**
|
|
55
|
-
* @param {Object} period - The Period to which the stream logic asking for a
|
|
56
|
-
* media source reload is linked.
|
|
57
50
|
* @param {number} reloadAt - Position at which we should reload
|
|
58
51
|
* @param {boolean} reloadOnPause - If `false`, stay on pause after reloading.
|
|
59
52
|
* if `true`, automatically play once reloaded.
|
|
60
53
|
* @returns {Object}
|
|
61
54
|
*/
|
|
62
|
-
needsMediaSourceReload: function (
|
|
55
|
+
needsMediaSourceReload: function (reloadAt, reloadOnPause) {
|
|
63
56
|
return { type: "needs-media-source-reload",
|
|
64
57
|
value: { position: reloadAt,
|
|
65
|
-
autoPlay: reloadOnPause
|
|
66
|
-
|
|
58
|
+
autoPlay: reloadOnPause } };
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* @param {string} bufferType - The buffer type for which the stream cannot
|
|
62
|
+
* currently load segments.
|
|
63
|
+
* @param {Object} period - The Period for which the stream cannot
|
|
64
|
+
* currently load segments.
|
|
65
|
+
* media source reload is linked.
|
|
66
|
+
* @returns {Object}
|
|
67
|
+
*/
|
|
68
|
+
lockedStream: function (bufferType, period) {
|
|
69
|
+
return { type: "locked-stream",
|
|
70
|
+
value: { bufferType: bufferType, period: period } };
|
|
67
71
|
},
|
|
68
72
|
needsBufferFlush: function () {
|
|
69
73
|
return { type: "needs-buffer-flush", value: undefined };
|
|
@@ -99,5 +103,9 @@ var EVENTS = {
|
|
|
99
103
|
warning: function (value) {
|
|
100
104
|
return { type: "warning", value: value };
|
|
101
105
|
},
|
|
106
|
+
waitingMediaSourceReload: function (bufferType, period, position, autoPlay) {
|
|
107
|
+
return { type: "waiting-media-source-reload",
|
|
108
|
+
value: { bufferType: bufferType, period: period, position: position, autoPlay: autoPlay } };
|
|
109
|
+
},
|
|
102
110
|
};
|
|
103
111
|
export default EVENTS;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import StreamOrchestrator, {
|
|
16
|
+
import StreamOrchestrator, { IStreamOrchestratorOptions, IStreamOrchestratorPlaybackObservation } from "./orchestrator";
|
|
17
17
|
export * from "./types";
|
|
18
18
|
export default StreamOrchestrator;
|
|
19
|
-
export {
|
|
19
|
+
export { IStreamOrchestratorPlaybackObservation, IStreamOrchestratorOptions, };
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
17
|
import { Period } from "../../../manifest";
|
|
18
|
-
import {
|
|
18
|
+
import { IStreamOrchestratorEvent } from "../types";
|
|
19
19
|
/**
|
|
20
20
|
* Emit the active Period each times it changes.
|
|
21
21
|
*
|
|
@@ -54,4 +54,4 @@ import { IMultiplePeriodStreamsEvent } from "../types";
|
|
|
54
54
|
* one is removed.
|
|
55
55
|
* @returns {Observable}
|
|
56
56
|
*/
|
|
57
|
-
export default function ActivePeriodEmitter(buffers$: Array<Observable<
|
|
57
|
+
export default function ActivePeriodEmitter(buffers$: Array<Observable<IStreamOrchestratorEvent>>): Observable<Period | null>;
|
|
@@ -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 { merge as observableMerge, } from "rxjs";
|
|
17
|
-
import { distinctUntilChanged, filter, map, scan, } from "rxjs/operators";
|
|
16
|
+
import { distinctUntilChanged, filter, map, merge as observableMerge, scan, } from "rxjs";
|
|
18
17
|
/**
|
|
19
18
|
* Emit the active Period each times it changes.
|
|
20
19
|
*
|
|
@@ -94,14 +93,14 @@ export default function ActivePeriodEmitter(buffers$) {
|
|
|
94
93
|
{
|
|
95
94
|
var _b = evt.value, period = _b.period, type = _b.type;
|
|
96
95
|
var currentInfos = acc[period.id];
|
|
97
|
-
if (currentInfos
|
|
98
|
-
currentInfos.buffers.add(type);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
96
|
+
if (currentInfos === undefined) {
|
|
101
97
|
var bufferSet = new Set();
|
|
102
98
|
bufferSet.add(type);
|
|
103
99
|
acc[period.id] = { period: period, buffers: bufferSet };
|
|
104
100
|
}
|
|
101
|
+
else if (!currentInfos.buffers.has(type)) {
|
|
102
|
+
currentInfos.buffers.add(type);
|
|
103
|
+
}
|
|
105
104
|
}
|
|
106
105
|
break;
|
|
107
106
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
|
-
import {
|
|
17
|
+
import { IStreamOrchestratorEvent } from "../types";
|
|
18
18
|
/**
|
|
19
19
|
* Returns an Observable which emits ``true`` when all PeriodStreams given are
|
|
20
20
|
* _complete_.
|
|
@@ -32,4 +32,4 @@ import { IMultiplePeriodStreamsEvent } from "../types";
|
|
|
32
32
|
* @param {...Observable} streams
|
|
33
33
|
* @returns {Observable}
|
|
34
34
|
*/
|
|
35
|
-
export default function areStreamsComplete(...streams: Array<Observable<
|
|
35
|
+
export default function areStreamsComplete(...streams: Array<Observable<IStreamOrchestratorEvent>>): Observable<boolean>;
|
|
@@ -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 { combineLatest as observableCombineLatest, } from "rxjs";
|
|
17
|
-
import { distinctUntilChanged, filter, map, startWith, } from "rxjs/operators";
|
|
16
|
+
import { combineLatest as observableCombineLatest, distinctUntilChanged, filter, map, startWith, } from "rxjs";
|
|
18
17
|
/**
|
|
19
18
|
* Returns an Observable which emits ``true`` when all PeriodStreams given are
|
|
20
19
|
* _complete_.
|
|
@@ -23,7 +23,7 @@ import { SegmentBuffer } from "../../segment_buffers";
|
|
|
23
23
|
* @param {Array.<Object>} contents
|
|
24
24
|
* @returns {Array.<Object>}
|
|
25
25
|
*/
|
|
26
|
-
export default function getBlacklistedRanges(segmentBuffer: SegmentBuffer
|
|
26
|
+
export default function getBlacklistedRanges(segmentBuffer: SegmentBuffer, contents: Array<{
|
|
27
27
|
adaptation: Adaptation;
|
|
28
28
|
period: Period;
|
|
29
29
|
representation: Representation;
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import StreamOrchestrator, {
|
|
16
|
+
import StreamOrchestrator, { IStreamOrchestratorOptions, IStreamOrchestratorPlaybackObservation } from "./stream_orchestrator";
|
|
17
17
|
export default StreamOrchestrator;
|
|
18
|
-
export {
|
|
18
|
+
export { IStreamOrchestratorOptions, IStreamOrchestratorPlaybackObservation, };
|