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
package/src/transports/types.ts
CHANGED
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
18
|
-
Observable,
|
|
19
|
-
} from "rxjs";
|
|
20
17
|
import { IInbandEvent } from "../core/stream";
|
|
21
18
|
import Manifest, {
|
|
22
19
|
Adaptation,
|
|
20
|
+
IExposedAdaptation,
|
|
21
|
+
IExposedManifest,
|
|
22
|
+
IExposedPeriod,
|
|
23
|
+
IExposedRepresentation,
|
|
24
|
+
IExposedSegment,
|
|
23
25
|
IRepresentationFilter,
|
|
24
26
|
ISegment,
|
|
25
27
|
ISupplementaryImageTrack,
|
|
@@ -30,6 +32,9 @@ import Manifest, {
|
|
|
30
32
|
import { IBifThumbnail } from "../parsers/images/bif";
|
|
31
33
|
import { ILocalManifest } from "../parsers/manifest/local";
|
|
32
34
|
import { IMetaPlaylist } from "../parsers/manifest/metaplaylist";
|
|
35
|
+
import TaskCanceller, {
|
|
36
|
+
CancellationSignal,
|
|
37
|
+
} from "../utils/task_canceller";
|
|
33
38
|
|
|
34
39
|
/**
|
|
35
40
|
* Interface returned by any transport implementation.
|
|
@@ -49,395 +54,662 @@ export interface ITransportPipelines {
|
|
|
49
54
|
/** Functions allowing to load an parse the Manifest for this transport. */
|
|
50
55
|
manifest : ITransportManifestPipeline;
|
|
51
56
|
/** Functions allowing to load an parse audio segments. */
|
|
52
|
-
audio : ISegmentPipeline<
|
|
53
|
-
Uint8Array | ArrayBuffer | null,
|
|
57
|
+
audio : ISegmentPipeline<ILoadedAudioVideoSegmentFormat,
|
|
54
58
|
Uint8Array | ArrayBuffer | null>;
|
|
55
59
|
/** Functions allowing to load an parse video segments. */
|
|
56
|
-
video : ISegmentPipeline<
|
|
57
|
-
Uint8Array | ArrayBuffer | null,
|
|
60
|
+
video : ISegmentPipeline<ILoadedAudioVideoSegmentFormat,
|
|
58
61
|
Uint8Array | ArrayBuffer | null>;
|
|
59
62
|
/** Functions allowing to load an parse text (e.g. subtitles) segments. */
|
|
60
|
-
text : ISegmentPipeline<
|
|
61
|
-
null
|
|
62
|
-
ITextTrackSegmentData>;
|
|
63
|
+
text : ISegmentPipeline<ILoadedTextSegmentFormat,
|
|
64
|
+
ITextTrackSegmentData | null>;
|
|
63
65
|
/** Functions allowing to load an parse image (e.g. thumbnails) segments. */
|
|
64
|
-
image : ISegmentPipeline<
|
|
65
|
-
null
|
|
66
|
-
IImageTrackSegmentData>;
|
|
66
|
+
image : ISegmentPipeline<ILoadedImageSegmentFormat,
|
|
67
|
+
IImageTrackSegmentData | null>;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
/** Functions allowing to load and parse the Manifest. */
|
|
70
|
-
export interface ITransportManifestPipeline {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
export interface ITransportManifestPipeline {
|
|
72
|
+
/**
|
|
73
|
+
* "Loader" of the Manifest pipeline, allowing to request a Manifest so it can
|
|
74
|
+
* later be parsed by the `parseManifest` function.
|
|
75
|
+
*
|
|
76
|
+
* @param {string|undefined} url - URL of the Manifest we want to load.
|
|
77
|
+
* `undefined` if the Manifest doesn't have an URL linked to it, in which case
|
|
78
|
+
* the Manifest should be loaded through another mean.
|
|
79
|
+
* @param {CancellationSignal} cancellationSignal - Signal which will allow to
|
|
80
|
+
* cancel the loading operation if the Manifest is not needed anymore (for
|
|
81
|
+
* example, if the content has just been stopped).
|
|
82
|
+
* When cancelled, the promise returned by this function will reject with a
|
|
83
|
+
* `CancellationError`.
|
|
84
|
+
* @returns {Promise.<Object>} - Promise emitting the loaded Manifest, that
|
|
85
|
+
* then can be parsed through the `parseManifest` function.
|
|
86
|
+
*
|
|
87
|
+
* Rejects in two cases:
|
|
88
|
+
* - The loading operation has been cancelled through the `cancelSignal`
|
|
89
|
+
* given in argument.
|
|
90
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
91
|
+
* - The loading operation failed, most likely due to a request error.
|
|
92
|
+
* In that case, this Promise will reject with the corresponding Error.
|
|
93
|
+
*/
|
|
94
|
+
loadManifest : (
|
|
95
|
+
url : string | undefined,
|
|
96
|
+
cancelSignal : CancellationSignal,
|
|
97
|
+
) => Promise<IRequestedData<ILoadedManifestFormat>>;
|
|
89
98
|
|
|
90
|
-
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
/**
|
|
100
|
+
* "Parser" of the Manifest pipeline, allowing to parse a loaded Manifest so
|
|
101
|
+
* it can be exploited by the rest of the RxPlayer's logic.
|
|
102
|
+
*
|
|
103
|
+
* @param {Object} manifestData - Response obtained from the `loadManifest`
|
|
104
|
+
* function.
|
|
105
|
+
* @param {Object} parserOptions - Various options relative to the parsing
|
|
106
|
+
* operation.
|
|
107
|
+
* @param {Function} onWarnings - Callbacks called:
|
|
108
|
+
* - when minor Manifest parsing errors are found
|
|
109
|
+
* - when `scheduleRequest` rejects on requests this function can do
|
|
110
|
+
* without.
|
|
111
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
112
|
+
* allow to abort the parsing operation if you do not want the Manifest
|
|
113
|
+
* anymore.
|
|
114
|
+
*
|
|
115
|
+
* That cancellationSignal can be triggered at any time, such as:
|
|
116
|
+
* - after a warning is received
|
|
117
|
+
* - while a request scheduled through the `scheduleRequest` argument is
|
|
118
|
+
* pending.
|
|
119
|
+
*
|
|
120
|
+
* `parseManifest` will interrupt all operations if the signal has been
|
|
121
|
+
* triggered in one of those scenarios, and will automatically reject with
|
|
122
|
+
* the corresponding `CancellationError` instance.
|
|
123
|
+
* @param {Function} scheduleRequest - Allows `parseManifest` to schedule
|
|
124
|
+
* network requests, for example to fetch sub-parts of the Manifest or
|
|
125
|
+
* supplementary resources we can only know of at Manifest parsing time.
|
|
126
|
+
*
|
|
127
|
+
* All requests scheduled through `scheduleRequest` should abort (and the
|
|
128
|
+
* corresponding Promise reject a `CancellationError`) when/if `cancelSignal`
|
|
129
|
+
* is triggered.
|
|
130
|
+
*
|
|
131
|
+
* If a request scheduled through `scheduleRequest` rejects with an error:
|
|
132
|
+
* - either the error was due to a cancellation, in which case
|
|
133
|
+
* `parseManifest` should reject the same error immediately.
|
|
134
|
+
* - either the requested resource was mandatory to parse the Manifest
|
|
135
|
+
* in which case `parseManifest` will reject with the same error.
|
|
136
|
+
* - either the parser can make up for that error, in which case it will
|
|
137
|
+
* just be emitted as a warning and `parseManifest` will continue its
|
|
138
|
+
* operations.
|
|
139
|
+
* @returns {Object | Promise.<Object>} - Returns directly the Manifest data
|
|
140
|
+
* if the parsing can be performed synchronously or through a Promise if it
|
|
141
|
+
* needs to perform network requests first through the `scheduleRequest`
|
|
142
|
+
* function.
|
|
143
|
+
*
|
|
144
|
+
* Throws if an error happens synchronously and rejects if it happens
|
|
145
|
+
* asynchronously.
|
|
146
|
+
*
|
|
147
|
+
* If this error is due to a failed request performed through the
|
|
148
|
+
* `scheduleRequest` argument, then the rejected error should be the same one
|
|
149
|
+
* than the one rejected by `scheduleRequest`.
|
|
150
|
+
*
|
|
151
|
+
* If this error is due to a cancellation instead (indicated through the
|
|
152
|
+
* `cancelSignal` argument), then the rejected error should be the
|
|
153
|
+
* `CancellationError` instance instead.
|
|
154
|
+
*/
|
|
155
|
+
parseManifest : (
|
|
156
|
+
manifestData : IRequestedData<unknown>,
|
|
157
|
+
parserOptions : IManifestParserOptions,
|
|
158
|
+
onWarnings : (warnings : Error[]) => void,
|
|
159
|
+
cancelSignal : CancellationSignal,
|
|
160
|
+
scheduleRequest : IManifestParserRequestScheduler
|
|
161
|
+
) => IManifestParserResult |
|
|
162
|
+
Promise<IManifestParserResult>;
|
|
100
163
|
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
164
|
+
/**
|
|
165
|
+
* @deprecated
|
|
166
|
+
* "Resolves the Manifest's URL, to obtain its true URL.
|
|
167
|
+
* This is a deprecated function which corresponds to an old use case at
|
|
168
|
+
* Canal+ where the URL of the Manifest first need to be parsed from a .wsx
|
|
169
|
+
* file.
|
|
170
|
+
* Thankfully this API should not be used anymore, though to not break
|
|
171
|
+
* compatibility, we have to keep it until a v4.x.x release.
|
|
172
|
+
*
|
|
173
|
+
* @param {string | undefined} url - URL used to obtain the real URL of the
|
|
174
|
+
* Manifest.
|
|
175
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
176
|
+
* allow to abort the resolving operation if you do not want the Manifest
|
|
177
|
+
* anymore.
|
|
178
|
+
* When cancelled, the promise returned by this function will reject with a
|
|
179
|
+
* `CancellationError`.
|
|
180
|
+
* @returns {Promise.<string|undefined>} - Promise emitting the "real" URL of
|
|
181
|
+
* the Manifest, that should be loaded by the `loadManifest` function.
|
|
182
|
+
* `undefined` if the URL is either unknown or inexistant.
|
|
183
|
+
*
|
|
184
|
+
* Rejects in two cases:
|
|
185
|
+
*
|
|
186
|
+
* 1. The resolving operation has been aborted through the `cancelSignal`
|
|
187
|
+
* given in argument.
|
|
188
|
+
* In that case, this Promise will reject a `CancellationError`.
|
|
189
|
+
*
|
|
190
|
+
* 2. The resolving operation failed, most likely due to a request error.
|
|
191
|
+
* In that case, this Promise will reject the corresponding Error.
|
|
192
|
+
*/
|
|
193
|
+
resolveManifestUrl? : (
|
|
194
|
+
url : string | undefined,
|
|
195
|
+
cancelSignal : CancellationSignal,
|
|
196
|
+
) => Promise<string | undefined>;
|
|
197
|
+
}
|
|
112
198
|
|
|
113
199
|
/** Functions allowing to load and parse segments of any type. */
|
|
114
200
|
export interface ISegmentPipeline<
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
ParsedMediaDataFormat,
|
|
201
|
+
TLoadedFormat,
|
|
202
|
+
TParsedSegmentDataFormat,
|
|
118
203
|
> {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
ParsedMediaDataFormat>;
|
|
204
|
+
loadSegment : ISegmentLoader<TLoadedFormat>;
|
|
205
|
+
parseSegment : ISegmentParser<TLoadedFormat,
|
|
206
|
+
TParsedSegmentDataFormat>;
|
|
123
207
|
}
|
|
124
208
|
|
|
125
209
|
/**
|
|
126
210
|
* Segment loader function, allowing to load a segment of any type.
|
|
127
|
-
* @param {
|
|
128
|
-
*
|
|
211
|
+
* @param {stop|null} url - URL at which the segment should be downloaded.
|
|
212
|
+
* `null` if we do not have an URL (in which case the segment should be loaded
|
|
213
|
+
* through other means, such as information taken from the segment's content).
|
|
214
|
+
* @param {Object} content - Content linked to the wanted segment.
|
|
215
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
216
|
+
* allow to cancel the loading operation if the segment is not needed anymore.
|
|
217
|
+
*
|
|
218
|
+
* When cancelled, this loader should stop any pending operation (such as an
|
|
219
|
+
* HTTP request) and the Promise returned should reject immediately with a
|
|
220
|
+
* `CancellationError`, generated through this CancellationSignal object.
|
|
221
|
+
* @param {Object} callbacks - Callbacks called on various loader events.
|
|
222
|
+
* @returns {Promise.<Object>} - Promise resolving when it has finished loading
|
|
223
|
+
* the segment.
|
|
129
224
|
*/
|
|
130
|
-
export type ISegmentLoader<
|
|
131
|
-
|
|
132
|
-
|
|
225
|
+
export type ISegmentLoader<TLoadedFormat> = (
|
|
226
|
+
url : string | null,
|
|
227
|
+
content : ISegmentContext,
|
|
228
|
+
cancelSignal : CancellationSignal,
|
|
229
|
+
callbacks : ISegmentLoaderCallbacks<TLoadedFormat>
|
|
230
|
+
) => Promise<ISegmentLoaderResultSegmentCreated<TLoadedFormat> |
|
|
231
|
+
ISegmentLoaderResultSegmentLoaded<TLoadedFormat> |
|
|
232
|
+
ISegmentLoaderResultChunkedComplete>;
|
|
133
233
|
|
|
134
234
|
/**
|
|
135
|
-
* Segment parser function, allowing to parse a
|
|
136
|
-
*
|
|
137
|
-
*
|
|
235
|
+
* Segment parser function, allowing to parse a chunk (which may be a sub-part
|
|
236
|
+
* of a segment) of any type.
|
|
237
|
+
*
|
|
238
|
+
* This function will throw if it encounters any error it cannot recover from.
|
|
138
239
|
*/
|
|
139
240
|
export type ISegmentParser<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
ParsedMediaDataFormat
|
|
241
|
+
TLoadedFormat,
|
|
242
|
+
TParsedSegmentDataFormat
|
|
143
243
|
> = (
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
/** Arguments for the loader of the segment pipelines. */
|
|
159
|
-
export interface ISegmentLoaderArguments {
|
|
160
|
-
/** Manifest object related to this segment. */
|
|
161
|
-
manifest : Manifest;
|
|
162
|
-
/** Period object related to this segment. */
|
|
163
|
-
period : Period;
|
|
164
|
-
/** Adaptation object related to this segment. */
|
|
165
|
-
adaptation : Adaptation;
|
|
166
|
-
/** Representation Object related to this segment. */
|
|
167
|
-
representation : Representation;
|
|
168
|
-
/** Segment we want to load. */
|
|
169
|
-
segment : ISegment;
|
|
244
|
+
/** Attributes of the corresponding loader's response. */
|
|
245
|
+
loadedSegment : {
|
|
246
|
+
/** The loaded segment data. */
|
|
247
|
+
data : TLoadedFormat;
|
|
248
|
+
/**
|
|
249
|
+
* If `true`,`data` is only a "chunk" of the whole segment (which potentially
|
|
250
|
+
* will contain multiple chunks).
|
|
251
|
+
* If `false`, `data` is the data for the whole segment.
|
|
252
|
+
*/
|
|
253
|
+
isChunked : boolean;
|
|
254
|
+
},
|
|
255
|
+
/** Context about the wanted segment. */
|
|
256
|
+
content : ISegmentContext,
|
|
170
257
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
258
|
+
* "Timescale" obtained from parsing the wanted representation's initialization
|
|
259
|
+
* segment.
|
|
260
|
+
*
|
|
261
|
+
* `undefined` if either no such `timescale` has been parsed yet or if this
|
|
262
|
+
* value doesn't exist for the wanted segment.
|
|
263
|
+
*
|
|
264
|
+
* This value can be useful when parsing the loaded segment's data.
|
|
174
265
|
*/
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
/** Payload of a "data-loaded" event. */
|
|
179
|
-
export interface ILoaderDataLoadedValue<T> {
|
|
180
|
-
/** The loaded response data. */
|
|
181
|
-
responseData : T;
|
|
182
|
-
/** Duration the request took to be performed, in seconds. */
|
|
183
|
-
duration : number | undefined;
|
|
266
|
+
initTimescale : number | undefined
|
|
267
|
+
) =>
|
|
184
268
|
/**
|
|
185
|
-
*
|
|
269
|
+
* The parsed data.
|
|
186
270
|
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
271
|
+
* Can be of two types:
|
|
272
|
+
* - `ISegmentParserParsedInitChunk`: When the parsed chunk was part of an
|
|
273
|
+
* initialization segment.
|
|
274
|
+
* Such segments only serve to initialize the decoder and do not contain
|
|
275
|
+
* any decodable media data.
|
|
276
|
+
* - `ISegmentParserParsedMediaChunk`: When the parsed chunk was part of a
|
|
277
|
+
* media segment.
|
|
278
|
+
* Such segments generally contain decodable media data.
|
|
191
279
|
*/
|
|
192
|
-
|
|
280
|
+
ISegmentParserParsedInitChunk<TParsedSegmentDataFormat> |
|
|
281
|
+
ISegmentParserParsedMediaChunk<TParsedSegmentDataFormat>;
|
|
282
|
+
|
|
283
|
+
export interface IManifestParserOptions {
|
|
193
284
|
/**
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* requests, this time corresponds to the first request made.
|
|
285
|
+
* If set, offset to add to `performance.now()` to obtain the current
|
|
286
|
+
* server's time.
|
|
197
287
|
*/
|
|
198
|
-
|
|
288
|
+
externalClockOffset : number | undefined;
|
|
289
|
+
/** Original URL used for the full version of the Manifest. */
|
|
290
|
+
originalUrl : string | undefined;
|
|
291
|
+
/** The previous value of the Manifest (when updating). */
|
|
292
|
+
previousManifest : Manifest | null;
|
|
199
293
|
/**
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
294
|
+
* If set to `true`, the Manifest parser can perform advanced optimizations
|
|
295
|
+
* to speed-up the parsing process. Those optimizations might lead to a
|
|
296
|
+
* de-synchronization with what is actually on the server, hence the "unsafe"
|
|
297
|
+
* part.
|
|
298
|
+
* To use with moderation and only when needed.
|
|
203
299
|
*/
|
|
204
|
-
|
|
205
|
-
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
206
|
-
size : number | undefined;
|
|
300
|
+
unsafeMode : boolean;
|
|
207
301
|
}
|
|
208
302
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
ArrayBuffer |
|
|
212
|
-
string |
|
|
213
|
-
IMetaPlaylist |
|
|
214
|
-
ILocalManifest |
|
|
215
|
-
Manifest;
|
|
216
|
-
|
|
217
|
-
/** Event emitted by a Manifest loader when the Manifest is fully available. */
|
|
218
|
-
export interface IManifestLoaderDataLoadedEvent {
|
|
219
|
-
type : "data-loaded";
|
|
220
|
-
value : ILoaderDataLoadedValue<ILoadedManifest>;
|
|
221
|
-
}
|
|
303
|
+
export interface IManifestParserCallbacks {
|
|
304
|
+
onWarning : (warning : Error) => void;
|
|
222
305
|
|
|
223
|
-
/**
|
|
224
|
-
|
|
225
|
-
|
|
306
|
+
/**
|
|
307
|
+
* @param {Function} performRequest - Function performing the request
|
|
308
|
+
* @param {TaskCanceller} canceller - Interface allowing to cancel the request
|
|
309
|
+
* performed by the `performRequest` argument.
|
|
310
|
+
* @returns {Promise.<Object>}
|
|
311
|
+
*/
|
|
312
|
+
scheduleRequest : (
|
|
313
|
+
performRequest : () => Promise< IRequestedData< Document | string > >,
|
|
314
|
+
canceller : TaskCanceller
|
|
315
|
+
) => Promise< IRequestedData< Document | string > >;
|
|
316
|
+
}
|
|
226
317
|
|
|
227
318
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
319
|
+
* Function allowing a Manifest parser to perform a request needed for the
|
|
320
|
+
* parsing of the Manifest.
|
|
230
321
|
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Event emitted by a segment loader when new information on a pending request
|
|
239
|
-
* is available.
|
|
322
|
+
* @param {Function} performRequest - Function performing the wanted request.
|
|
323
|
+
* Note that this function might be called multiple times depending on the error
|
|
324
|
+
* obtained at the last call.
|
|
325
|
+
*
|
|
326
|
+
* Should resolve with the requested data on success.
|
|
240
327
|
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
328
|
+
* Rejects in two cases:
|
|
329
|
+
* - The request has been cancelled through the `canceller` given.
|
|
330
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
331
|
+
*
|
|
332
|
+
* - The request failed.
|
|
333
|
+
* In that case, this Promise will reject with the corresponding Error.
|
|
334
|
+
*
|
|
335
|
+
* @param {TaskCanceller} canceller - Interface allowing to cancel the request
|
|
336
|
+
* performed by the `performRequest` argument.
|
|
337
|
+
*
|
|
338
|
+
* When triggered, the request should be aborted and the Promise returned by
|
|
339
|
+
* `performRequest` should reject the corresponding `CancellationError`.
|
|
340
|
+
*
|
|
341
|
+
* The Promise returned by that function should in consequence also reject the
|
|
342
|
+
* same `CancellationError`.
|
|
343
|
+
*
|
|
344
|
+
* @returns {Promise.<Object>} - Promise resolving with the requested data on
|
|
345
|
+
* success.
|
|
346
|
+
*
|
|
347
|
+
* Rejects in two cases:
|
|
348
|
+
* - The request has been cancelled through the `canceller` given.
|
|
349
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
350
|
+
*
|
|
351
|
+
* - All the attempts to perform the request failed.
|
|
352
|
+
* In that case, this Promise will reject with the Error corresponding to
|
|
353
|
+
* the last performed request.
|
|
245
354
|
*/
|
|
246
|
-
export
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
355
|
+
export type IManifestParserRequestScheduler =
|
|
356
|
+
(
|
|
357
|
+
performRequest : () => Promise< IRequestedData< ILoadedManifestFormat > >
|
|
358
|
+
) => Promise< IRequestedData< ILoadedManifestFormat > >;
|
|
359
|
+
|
|
360
|
+
// Either the Manifest can be parsed directly, in which case a
|
|
361
|
+
// IManifestParserResult is returned, either the Manifest parser needs to
|
|
362
|
+
// perform supplementary requests first
|
|
363
|
+
|
|
364
|
+
/** Event emitted when a Manifest has been parsed by a Manifest parser. */
|
|
365
|
+
export interface IManifestParserResult {
|
|
366
|
+
/** The parsed Manifest Object itself. */
|
|
367
|
+
manifest : Manifest;
|
|
368
|
+
/**
|
|
369
|
+
* "Real" URL (post-redirection) at which the Manifest can be refreshed.
|
|
370
|
+
*
|
|
371
|
+
* Note that this doesn't always apply e.g. some Manifest might need multiple
|
|
372
|
+
* URLs to be fetched, some other might need to fetch no URL.
|
|
373
|
+
* This property should only be set when a unique URL is sufficient to
|
|
374
|
+
* retrieve the whole data.
|
|
375
|
+
*/
|
|
376
|
+
url? : string | undefined;
|
|
266
377
|
}
|
|
267
378
|
|
|
268
379
|
/**
|
|
269
|
-
*
|
|
270
|
-
*
|
|
380
|
+
* Allow the parser to ask for loading supplementary ressources while still
|
|
381
|
+
* profiting from the same retries and error management than the loader.
|
|
271
382
|
*/
|
|
272
|
-
export interface
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
/** Duration the request took to be performed, in seconds. */
|
|
276
|
-
duration : number | undefined;
|
|
277
|
-
/**
|
|
278
|
-
* "Real" URL (post-redirection) at which the segment was loaded.
|
|
279
|
-
*
|
|
280
|
-
* Note that this doesn't always apply e.g. some segment might need multiple
|
|
281
|
-
* URLs to be fetched, some other might need to fetch no URL.
|
|
282
|
-
* This property should only be set when a unique URL is sufficient to
|
|
283
|
-
* retrieve the whole data.
|
|
284
|
-
*/
|
|
285
|
-
url? : string;
|
|
286
|
-
/**
|
|
287
|
-
* Time at which the request began in terms of `performance.now`.
|
|
288
|
-
* If fetching the corresponding data necessitated to perform multiple
|
|
289
|
-
* requests, this time corresponds to the first request made.
|
|
290
|
-
*/
|
|
291
|
-
sendingTime? : number;
|
|
292
|
-
/**
|
|
293
|
-
* Time at which the request ended in terms of `performance.now`.
|
|
294
|
-
* If fetching the corresponding data necessitated to perform multiple
|
|
295
|
-
* requests, this time corresponds to the last request to end.
|
|
296
|
-
*/
|
|
297
|
-
receivedTime? : number;
|
|
298
|
-
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
299
|
-
size : number | undefined;
|
|
300
|
-
};
|
|
383
|
+
export interface IManifestParserRequestNeeded {
|
|
384
|
+
resultType : "request-needed";
|
|
385
|
+
performRequest : IManifestParserRequest;
|
|
301
386
|
}
|
|
302
387
|
|
|
303
388
|
/**
|
|
304
|
-
*
|
|
305
|
-
*
|
|
389
|
+
* Time information for a single segment.
|
|
390
|
+
* Those variables expose the best guess we have on the effective duration and
|
|
391
|
+
* starting time that the corresponding segment should have at decoding time.
|
|
306
392
|
*/
|
|
307
|
-
export
|
|
308
|
-
ISegmentLoaderDataChunkCompleteEvent;
|
|
309
|
-
|
|
310
|
-
/** Event emitted by a Manifest loader. */
|
|
311
|
-
export type IManifestLoaderEvent = IManifestLoaderDataLoadedEvent;
|
|
312
|
-
|
|
313
|
-
/** Event emitted by a segment loader. */
|
|
314
|
-
export type ISegmentLoaderEvent<T> = ILoaderProgressEvent |
|
|
315
|
-
ISegmentLoaderChunkEvent |
|
|
316
|
-
ISegmentLoaderDataLoadedEvent<T> |
|
|
317
|
-
ISegmentLoaderDataCreatedEvent<T>;
|
|
318
|
-
|
|
319
|
-
/** Arguments given to the `parser` function of the Manifest pipeline. */
|
|
320
|
-
export interface IManifestParserArguments {
|
|
321
|
-
/** Response obtained from the loader. */
|
|
322
|
-
response : ILoaderDataLoadedValue<unknown>;
|
|
323
|
-
/** Original URL used for the full version of the Manifest. */
|
|
324
|
-
url? : string;
|
|
325
|
-
/**
|
|
326
|
-
* If set, offset to add to `performance.now()` to obtain the current
|
|
327
|
-
* server's time.
|
|
328
|
-
*/
|
|
329
|
-
externalClockOffset? : number;
|
|
330
|
-
/** The previous value of the Manifest (when updating). */
|
|
331
|
-
previousManifest : Manifest | null;
|
|
393
|
+
export interface IChunkTimeInfo {
|
|
332
394
|
/**
|
|
333
|
-
*
|
|
334
|
-
*
|
|
395
|
+
* Difference between the latest and the earliest presentation time
|
|
396
|
+
* available in that chunk, in seconds.
|
|
397
|
+
*
|
|
398
|
+
* If multiple chunks are present in a single segment (e.g. low-latency CMAF
|
|
399
|
+
* chunks, this is only the duration of the current chunk).
|
|
400
|
+
*
|
|
401
|
+
* Either `undefined` or set to `0` for an initialization segment.
|
|
335
402
|
*/
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
403
|
+
duration : number | undefined;
|
|
404
|
+
/** Earliest presentation time available in that segment, in seconds. */
|
|
405
|
+
time : number;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/** Text track segment data, once parsed. */
|
|
409
|
+
export interface ITextTrackSegmentData {
|
|
410
|
+
/** The text track data, in the format indicated in `type`. */
|
|
411
|
+
data : string;
|
|
412
|
+
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
413
|
+
type : string;
|
|
339
414
|
/**
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
* part.
|
|
344
|
-
* To use with moderation and only when needed.
|
|
415
|
+
* Language in which the text track is, as a language code.
|
|
416
|
+
* This is mostly needed for "sami" subtitles, to know which cues can / should
|
|
417
|
+
* be parsed.
|
|
345
418
|
*/
|
|
346
|
-
|
|
419
|
+
language? : string | undefined;
|
|
420
|
+
/** start time from which the segment apply, in seconds. */
|
|
421
|
+
start? : number | undefined;
|
|
422
|
+
/** end time until which the segment apply, in seconds. */
|
|
423
|
+
end? : number | undefined;
|
|
347
424
|
}
|
|
348
425
|
|
|
349
|
-
/**
|
|
350
|
-
export interface
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
426
|
+
/** Format under which image data is decodable by the RxPlayer. */
|
|
427
|
+
export interface IImageTrackSegmentData {
|
|
428
|
+
data : IBifThumbnail[]; // image track data, in the given type
|
|
429
|
+
end : number; // end time time until which the segment apply
|
|
430
|
+
start : number; // start time from which the segment apply
|
|
431
|
+
timescale : number; // timescale to convert the start and end into seconds
|
|
432
|
+
type : string; // the type of the data (example: "bif")
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
export type IManifestParserRequest1 = (
|
|
436
|
+
(
|
|
355
437
|
/**
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
438
|
+
* Cancellation signal which will allow to cancel the request if the
|
|
439
|
+
* Manifest is not needed anymore.
|
|
440
|
+
*
|
|
441
|
+
* When cancelled, this parser should stop any pending operation (such as an
|
|
442
|
+
* HTTP request) and the Promise returned should reject immediately after with
|
|
443
|
+
* a `CancellationError`.
|
|
359
444
|
*/
|
|
360
|
-
|
|
361
|
-
|
|
445
|
+
cancelSignal : CancellationSignal,
|
|
446
|
+
) => Promise< IRequestedData< Document | string > >
|
|
447
|
+
);
|
|
448
|
+
export type IManifestParserRequest = (
|
|
362
449
|
/**
|
|
363
|
-
*
|
|
450
|
+
* Cancellation signal which will allow to cancel the request if the
|
|
451
|
+
* Manifest is not needed anymore.
|
|
452
|
+
*
|
|
453
|
+
* When cancelled, this parser should stop any pending operation (such as an
|
|
454
|
+
* HTTP request) and the Promise returned should reject immediately after with
|
|
455
|
+
* a `CancellationError`.
|
|
456
|
+
*/
|
|
457
|
+
cancelSignal : CancellationSignal,
|
|
458
|
+
) => Promise< IManifestParserResult |
|
|
459
|
+
IManifestParserRequestNeeded >;
|
|
460
|
+
|
|
461
|
+
export interface ITransportAudioVideoSegmentPipeline {
|
|
462
|
+
loadSegment : ISegmentLoader<ILoadedAudioVideoSegmentFormat>;
|
|
463
|
+
parseSegment : ISegmentParser<ILoadedAudioVideoSegmentFormat,
|
|
464
|
+
Uint8Array | ArrayBuffer | null>;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
export interface ITransportTextSegmentPipeline {
|
|
468
|
+
loadSegment : ISegmentLoader<ILoadedTextSegmentFormat>;
|
|
469
|
+
parseSegment : ISegmentParser<ILoadedTextSegmentFormat,
|
|
470
|
+
ITextTrackSegmentData | null>;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
export interface ITransportImageSegmentPipeline {
|
|
474
|
+
loadSegment : ISegmentLoader<ILoadedImageSegmentFormat>;
|
|
475
|
+
parseSegment : ISegmentParser<ILoadedImageSegmentFormat,
|
|
476
|
+
IImageTrackSegmentData | null>;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
export type ITransportSegmentPipeline = ITransportAudioVideoSegmentPipeline |
|
|
480
|
+
ITransportTextSegmentPipeline |
|
|
481
|
+
ITransportImageSegmentPipeline;
|
|
482
|
+
|
|
483
|
+
export type ITransportPipeline = ITransportManifestPipeline |
|
|
484
|
+
ITransportSegmentPipeline;
|
|
485
|
+
|
|
486
|
+
interface IServerSyncInfos { serverTimestamp : number;
|
|
487
|
+
clientTime : number; }
|
|
488
|
+
|
|
489
|
+
export interface ITransportOptions {
|
|
490
|
+
aggressiveMode? : boolean | undefined;
|
|
491
|
+
checkMediaSegmentIntegrity? : boolean | undefined;
|
|
492
|
+
lowLatencyMode : boolean;
|
|
493
|
+
manifestLoader?: ICustomManifestLoader | undefined;
|
|
494
|
+
manifestUpdateUrl? : string | undefined;
|
|
495
|
+
referenceDateTime? : number | undefined;
|
|
496
|
+
representationFilter? : IRepresentationFilter | undefined;
|
|
497
|
+
segmentLoader? : ICustomSegmentLoader | undefined;
|
|
498
|
+
serverSyncInfos? : IServerSyncInfos | undefined;
|
|
499
|
+
/* eslint-disable import/no-deprecated */
|
|
500
|
+
supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
|
|
501
|
+
supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
|
|
502
|
+
/* eslint-enable import/no-deprecated */
|
|
503
|
+
|
|
504
|
+
__priv_patchLastSegmentInSidx? : boolean | undefined;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
export type ICustomSegmentLoader = (
|
|
508
|
+
// first argument: infos on the segment
|
|
509
|
+
infos : { url : string;
|
|
510
|
+
manifest : IExposedManifest;
|
|
511
|
+
period : IExposedPeriod;
|
|
512
|
+
adaptation : IExposedAdaptation;
|
|
513
|
+
representation : IExposedRepresentation;
|
|
514
|
+
segment : IExposedSegment; },
|
|
515
|
+
|
|
516
|
+
// second argument: callbacks
|
|
517
|
+
callbacks : { resolve : (rArgs : { data : ArrayBuffer | Uint8Array;
|
|
518
|
+
sendingTime? : number | undefined;
|
|
519
|
+
receivingTime? : number | undefined;
|
|
520
|
+
size? : number | undefined;
|
|
521
|
+
duration? : number | undefined; }) => void;
|
|
522
|
+
|
|
523
|
+
reject : (err? : unknown) => void;
|
|
524
|
+
fallback : () => void;
|
|
525
|
+
progress : (
|
|
526
|
+
info : { duration : number;
|
|
527
|
+
size : number;
|
|
528
|
+
totalSize? : number | undefined; }
|
|
529
|
+
) => void;
|
|
530
|
+
}
|
|
531
|
+
) =>
|
|
532
|
+
// returns either the aborting callback or nothing
|
|
533
|
+
(() => void)|void;
|
|
534
|
+
|
|
535
|
+
export type ICustomManifestLoader = (
|
|
536
|
+
// first argument: url of the manifest
|
|
537
|
+
url : string | undefined,
|
|
538
|
+
|
|
539
|
+
// second argument: callbacks
|
|
540
|
+
callbacks : { resolve : (args : { data : ILoadedManifestFormat;
|
|
541
|
+
url? : string | undefined;
|
|
542
|
+
sendingTime? : number | undefined;
|
|
543
|
+
receivingTime? : number | undefined;
|
|
544
|
+
size? : number | undefined;
|
|
545
|
+
duration? : number | undefined; })
|
|
546
|
+
=> void;
|
|
547
|
+
|
|
548
|
+
reject : (err? : Error) => void;
|
|
549
|
+
fallback : () => void; }
|
|
550
|
+
) =>
|
|
551
|
+
// returns either the aborting callback or nothing
|
|
552
|
+
(() => void)|void;
|
|
553
|
+
|
|
554
|
+
export interface ISegmentContext {
|
|
555
|
+
/** Manifest object related to this segment. */
|
|
556
|
+
manifest : Manifest;
|
|
557
|
+
/** Period object related to this segment. */
|
|
558
|
+
period : Period;
|
|
559
|
+
/** Adaptation object related to this segment. */
|
|
560
|
+
adaptation : Adaptation;
|
|
561
|
+
/** Representation Object related to this segment. */
|
|
562
|
+
representation : Representation;
|
|
563
|
+
/** Segment we want to load. */
|
|
564
|
+
segment : ISegment;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
export interface ISegmentLoaderCallbacks<T> {
|
|
568
|
+
/**
|
|
569
|
+
* Callback called when new progress information on a segment request is
|
|
570
|
+
* available.
|
|
571
|
+
* The information emitted though this callback can be used to gather
|
|
572
|
+
* metrics on a current, un-terminated, request.
|
|
573
|
+
*/
|
|
574
|
+
onProgress : (info : ISegmentLoadingProgressInformation) => void;
|
|
575
|
+
/**
|
|
576
|
+
* Callback called when a decodable sub-part of the segment is available.
|
|
577
|
+
*
|
|
578
|
+
* Note that this callback is only called if the loader decides to load the
|
|
579
|
+
* wanted segment in a "chunk" mode, that is, when the segment is loaded
|
|
580
|
+
* decodable chunk by decodable chunk, each being a subpart of this same
|
|
364
581
|
* segment.
|
|
365
582
|
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
583
|
+
* In that case, this callback might be called multiple times for subsequent
|
|
584
|
+
* decodable chunks until the Promise resolves.
|
|
368
585
|
*
|
|
369
|
-
*
|
|
586
|
+
* Not all segments are loaded in a "chunk" mode.
|
|
587
|
+
* The alternatives to this mode are:
|
|
588
|
+
*
|
|
589
|
+
* - when the segment is created locally without needing to perform any
|
|
590
|
+
* request.
|
|
591
|
+
*
|
|
592
|
+
* - when the segment is loaded as a whole.
|
|
593
|
+
*
|
|
594
|
+
* In both of those other cases, the segment data can be retrieved in the
|
|
595
|
+
* Promise returned by the segment loader instead.
|
|
370
596
|
*/
|
|
371
|
-
|
|
372
|
-
/** Context about the wanted segment. */
|
|
373
|
-
content : {
|
|
374
|
-
/** Manifest object related to this segment. */
|
|
375
|
-
manifest : Manifest;
|
|
376
|
-
/** Period object related to this segment. */
|
|
377
|
-
period : Period;
|
|
378
|
-
/** Adaptation object related to this segment. */
|
|
379
|
-
adaptation : Adaptation;
|
|
380
|
-
/** Representation Object related to this segment. */
|
|
381
|
-
representation : Representation;
|
|
382
|
-
/** Segment we want to parse. */
|
|
383
|
-
segment : ISegment;
|
|
384
|
-
};
|
|
597
|
+
onNewChunk : (data : T) => void;
|
|
385
598
|
}
|
|
386
599
|
|
|
387
|
-
/**
|
|
388
|
-
export interface
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
*
|
|
396
|
-
* Note that this doesn't always apply e.g. some Manifest might need multiple
|
|
397
|
-
* URLs to be fetched, some other might need to fetch no URL.
|
|
398
|
-
* This property should only be set when a unique URL is sufficient to
|
|
399
|
-
* retrieve the whole data.
|
|
400
|
-
*/
|
|
401
|
-
url? : string;
|
|
402
|
-
};
|
|
600
|
+
/** Information related to a pending Segment request progressing. */
|
|
601
|
+
export interface ISegmentLoadingProgressInformation {
|
|
602
|
+
/** Time since the beginning of the request so far, in seconds. */
|
|
603
|
+
duration : number;
|
|
604
|
+
/** Size of the data already downloaded, in bytes. */
|
|
605
|
+
size : number;
|
|
606
|
+
/** Size of whole data to download (data already-loaded included), in bytes. */
|
|
607
|
+
totalSize? : number | undefined;
|
|
403
608
|
}
|
|
404
609
|
|
|
405
|
-
/**
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
610
|
+
/**
|
|
611
|
+
* Result returned by a segment loader when a segment has been loaded in a
|
|
612
|
+
* "chunk" mode.
|
|
613
|
+
* In that mode, the segment has been divided into multiple decodable chunks
|
|
614
|
+
* each sent in order through the `onNewChunk` callback of the corresponding
|
|
615
|
+
* loader.
|
|
616
|
+
*/
|
|
617
|
+
export interface ISegmentLoaderResultChunkedComplete {
|
|
618
|
+
resultType : "chunk-complete";
|
|
619
|
+
/** Information on the request performed. */
|
|
620
|
+
resultData : IChunkCompleteInformation;
|
|
410
621
|
}
|
|
411
622
|
|
|
412
623
|
/**
|
|
413
|
-
*
|
|
414
|
-
*
|
|
415
|
-
* starting time that the corresponding segment should have at decoding time.
|
|
624
|
+
* Result returned by a segment loader when a segment has been loaded
|
|
625
|
+
* by performing a request.
|
|
416
626
|
*/
|
|
417
|
-
export interface
|
|
627
|
+
export interface ISegmentLoaderResultSegmentLoaded<T> {
|
|
628
|
+
resultType : "segment-loaded";
|
|
629
|
+
/** Segment data and information on the request. */
|
|
630
|
+
resultData : IRequestedData<T>;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Result returned by a segment loader when a segment has been fully
|
|
635
|
+
* created locally and thus did not depend on a request.
|
|
636
|
+
* TODO merge with ISegmentLoaderResultSegmentLoaded?
|
|
637
|
+
*/
|
|
638
|
+
export interface ISegmentLoaderResultSegmentCreated<T> {
|
|
639
|
+
resultType : "segment-created";
|
|
640
|
+
/** The data iself. */
|
|
641
|
+
resultData : T;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/** Data emitted in a `ISegmentLoaderResultChunkedComplete`. */
|
|
645
|
+
export interface IChunkCompleteInformation {
|
|
646
|
+
/** Duration the request took to be performed, in seconds. */
|
|
647
|
+
requestDuration : number | undefined;
|
|
418
648
|
/**
|
|
419
|
-
*
|
|
420
|
-
* available in that segment, in seconds.
|
|
649
|
+
* "Real" URL (post-redirection) at which the segment was loaded.
|
|
421
650
|
*
|
|
422
|
-
*
|
|
651
|
+
* Note that this doesn't always apply e.g. some segment might need multiple
|
|
652
|
+
* URLs to be fetched, some other might need to fetch no URL.
|
|
653
|
+
* This property should only be set when a unique URL is sufficient to
|
|
654
|
+
* retrieve the whole data.
|
|
423
655
|
*/
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
|
|
656
|
+
url? : string | undefined;
|
|
657
|
+
/**
|
|
658
|
+
* Time at which the request began in terms of `performance.now`.
|
|
659
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
660
|
+
* requests, this time corresponds to the first request made.
|
|
661
|
+
*/
|
|
662
|
+
sendingTime? : number | undefined;
|
|
663
|
+
/**
|
|
664
|
+
* Time at which the request ended in terms of `performance.now`.
|
|
665
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
666
|
+
* requests, this time corresponds to the last request to end.
|
|
667
|
+
*/
|
|
668
|
+
receivedTime? : number | undefined;
|
|
669
|
+
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
670
|
+
size : number | undefined;
|
|
427
671
|
}
|
|
428
672
|
|
|
429
|
-
/**
|
|
430
|
-
export
|
|
673
|
+
/** Format of a loaded Manifest before parsing. */
|
|
674
|
+
export type ILoadedManifestFormat = Document |
|
|
675
|
+
string |
|
|
676
|
+
ArrayBuffer |
|
|
677
|
+
IMetaPlaylist |
|
|
678
|
+
ILocalManifest |
|
|
679
|
+
Manifest;
|
|
680
|
+
|
|
681
|
+
/** Format of a loaded audio and video segment before parsing. */
|
|
682
|
+
export type ILoadedAudioVideoSegmentFormat = Uint8Array |
|
|
683
|
+
ArrayBuffer |
|
|
684
|
+
null;
|
|
685
|
+
|
|
686
|
+
/** Format of a loaded text segment before parsing. */
|
|
687
|
+
export type ILoadedTextSegmentFormat = Uint8Array |
|
|
688
|
+
ArrayBuffer |
|
|
689
|
+
string |
|
|
690
|
+
null;
|
|
691
|
+
|
|
692
|
+
/** Format of a loaded image segment before parsing. */
|
|
693
|
+
export type ILoadedImageSegmentFormat = Uint8Array |
|
|
694
|
+
ArrayBuffer |
|
|
695
|
+
null;
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Result returned by a segment parser when it parsed a chunk from an init
|
|
699
|
+
* segment (which does not contain media data).
|
|
700
|
+
*/
|
|
701
|
+
export interface ISegmentParserParsedInitChunk<DataType> {
|
|
702
|
+
segmentType : "init";
|
|
431
703
|
/**
|
|
432
704
|
* Initialization segment that can be directly pushed to the corresponding
|
|
433
705
|
* buffer.
|
|
434
706
|
*/
|
|
435
|
-
initializationData :
|
|
707
|
+
initializationData : DataType | null;
|
|
436
708
|
/**
|
|
437
709
|
* Timescale metadata found inside this initialization segment.
|
|
438
710
|
* That timescale might be useful when parsing further merdia segments.
|
|
439
711
|
*/
|
|
440
|
-
initTimescale? : number;
|
|
712
|
+
initTimescale? : number | undefined;
|
|
441
713
|
/**
|
|
442
714
|
* If set to `true`, some protection information has been found in this
|
|
443
715
|
* initialization segment and lead the corresponding `Representation`
|
|
@@ -452,34 +724,51 @@ export interface ISegmentParserParsedInitSegment<T> {
|
|
|
452
724
|
protectionDataUpdate : boolean;
|
|
453
725
|
}
|
|
454
726
|
|
|
455
|
-
/**
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
727
|
+
/**
|
|
728
|
+
* Result returned by a segment parser when it parsed a chunk from a media
|
|
729
|
+
* segment (which contains media data, unlike an initialization segment).
|
|
730
|
+
*/
|
|
731
|
+
export interface ISegmentParserParsedMediaChunk<DataType> {
|
|
732
|
+
segmentType : "media";
|
|
733
|
+
/**
|
|
734
|
+
* Parsed chunk of data that can be decoded.
|
|
735
|
+
* `null` if no data was parsed.
|
|
736
|
+
*/
|
|
737
|
+
chunkData : DataType | null;
|
|
738
|
+
/**
|
|
739
|
+
* Time information on this parsed chunk.
|
|
740
|
+
* `null` if unknown.
|
|
741
|
+
*/
|
|
460
742
|
chunkInfos : IChunkTimeInfo | null;
|
|
461
743
|
/**
|
|
462
|
-
*
|
|
744
|
+
* time offset, in seconds, to add to the absolute timed data defined in
|
|
463
745
|
* `chunkData` to obtain the "real" wanted effective time.
|
|
464
746
|
*
|
|
465
747
|
* For example:
|
|
466
|
-
* If `chunkData`
|
|
467
|
-
* `chunkOffset` equals to `4`, then the
|
|
468
|
-
* seconds (32 + 4).
|
|
748
|
+
* If `chunkData` announces (when parsed by the demuxer or decoder) that the
|
|
749
|
+
* segment begins at 32 seconds, and `chunkOffset` equals to `4`, then the
|
|
750
|
+
* segment should really begin at 36 seconds (32 + 4).
|
|
469
751
|
*
|
|
470
752
|
* Note that `chunkInfos` needs not to be offseted as it should already
|
|
471
753
|
* contain the correct time information.
|
|
472
754
|
*/
|
|
473
755
|
chunkOffset : number;
|
|
474
756
|
/**
|
|
475
|
-
*
|
|
476
|
-
*
|
|
757
|
+
* start and end windows for the segment (part of the chunk respectively
|
|
758
|
+
* before and after that time will be ignored).
|
|
759
|
+
* `undefined` when their is no such limitation.
|
|
477
760
|
*/
|
|
478
761
|
appendWindow : [ number | undefined,
|
|
479
762
|
number | undefined ];
|
|
480
|
-
/**
|
|
481
|
-
|
|
482
|
-
|
|
763
|
+
/**
|
|
764
|
+
* If set and not empty, then "events" have been encountered in this parsed
|
|
765
|
+
* chunks.
|
|
766
|
+
*/
|
|
767
|
+
inbandEvents? : IInbandEvent[] | undefined;
|
|
768
|
+
/**
|
|
769
|
+
* If set to `true`, then parsing this chunk revealed that the current
|
|
770
|
+
* Manifest instance needs to be refreshed.
|
|
771
|
+
*/
|
|
483
772
|
needsManifestRefresh?: boolean;
|
|
484
773
|
/**
|
|
485
774
|
* If set to `true`, some protection information has been found in this
|
|
@@ -495,122 +784,33 @@ export interface ISegmentParserParsedSegment<T> {
|
|
|
495
784
|
protectionDataUpdate : boolean;
|
|
496
785
|
}
|
|
497
786
|
|
|
498
|
-
/**
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
*/
|
|
505
|
-
export interface ISegmentParserInitSegment<T> {
|
|
506
|
-
type : "parsed-init-segment";
|
|
507
|
-
value : ISegmentParserParsedInitSegment<T>;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/**
|
|
511
|
-
* What a segment parser returns when parsing a media segment.
|
|
512
|
-
* Those types of segment contain decodable data.
|
|
513
|
-
*/
|
|
514
|
-
export interface ISegmentParserSegment<T> {
|
|
515
|
-
type : "parsed-segment";
|
|
516
|
-
value : ISegmentParserParsedSegment<T>;
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
// format under which audio / video data / initialization data is decodable
|
|
520
|
-
/** Text track segment data, once parsed. */
|
|
521
|
-
export interface ITextTrackSegmentData {
|
|
522
|
-
/** The text track data, in the format indicated in `type`. */
|
|
523
|
-
data : string;
|
|
524
|
-
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
525
|
-
type : string;
|
|
787
|
+
/** Describe data loaded through a request. */
|
|
788
|
+
export interface IRequestedData<T> {
|
|
789
|
+
/** The loaded response data. */
|
|
790
|
+
responseData : T;
|
|
791
|
+
/** Duration the request took to be performed, in seconds. */
|
|
792
|
+
requestDuration : number | undefined;
|
|
526
793
|
/**
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
794
|
+
* "Real" URL (post-redirection) at which the data can be loaded.
|
|
795
|
+
*
|
|
796
|
+
* Note that this doesn't always apply e.g. some data might need multiple
|
|
797
|
+
* URLs to be fetched, some other might need to fetch no URL.
|
|
798
|
+
* This property should only be set when a unique URL is sufficient to
|
|
799
|
+
* retrieve the whole data.
|
|
530
800
|
*/
|
|
531
|
-
|
|
532
|
-
/**
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
/**
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
/**
|
|
545
|
-
|
|
546
|
-
/** Timescale to convert the `start` and `end` properties into seconds. */
|
|
547
|
-
timescale : number;
|
|
548
|
-
/** The format the data is in (example: "bif"). */
|
|
549
|
-
type : "bif";
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
interface IServerSyncInfos { serverTimestamp : number;
|
|
553
|
-
clientTime : number; }
|
|
554
|
-
|
|
555
|
-
export interface ITransportOptions {
|
|
556
|
-
aggressiveMode? : boolean;
|
|
557
|
-
checkMediaSegmentIntegrity? : boolean;
|
|
558
|
-
lowLatencyMode : boolean;
|
|
559
|
-
manifestLoader?: CustomManifestLoader;
|
|
560
|
-
manifestUpdateUrl? : string;
|
|
561
|
-
referenceDateTime? : number;
|
|
562
|
-
representationFilter? : IRepresentationFilter;
|
|
563
|
-
segmentLoader? : CustomSegmentLoader;
|
|
564
|
-
serverSyncInfos? : IServerSyncInfos;
|
|
565
|
-
/* eslint-disable import/no-deprecated */
|
|
566
|
-
supplementaryImageTracks? : ISupplementaryImageTrack[];
|
|
567
|
-
supplementaryTextTracks? : ISupplementaryTextTrack[];
|
|
568
|
-
/* eslint-enable import/no-deprecated */
|
|
569
|
-
|
|
570
|
-
__priv_patchLastSegmentInSidx? : boolean;
|
|
801
|
+
url? : string | undefined;
|
|
802
|
+
/**
|
|
803
|
+
* Time at which the request began in terms of `performance.now`.
|
|
804
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
805
|
+
* requests, this time corresponds to the first request made.
|
|
806
|
+
*/
|
|
807
|
+
sendingTime? : number | undefined;
|
|
808
|
+
/**
|
|
809
|
+
* Time at which the request ended in terms of `performance.now`.
|
|
810
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
811
|
+
* requests, this time corresponds to the last request to end.
|
|
812
|
+
*/
|
|
813
|
+
receivedTime? : number | undefined;
|
|
814
|
+
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
815
|
+
size : number | undefined;
|
|
571
816
|
}
|
|
572
|
-
|
|
573
|
-
export type CustomSegmentLoader = (
|
|
574
|
-
// first argument: infos on the segment
|
|
575
|
-
args : { adaptation : Adaptation;
|
|
576
|
-
representation : Representation;
|
|
577
|
-
segment : ISegment;
|
|
578
|
-
transport : string;
|
|
579
|
-
url : string;
|
|
580
|
-
manifest : Manifest; },
|
|
581
|
-
|
|
582
|
-
// second argument: callbacks
|
|
583
|
-
callbacks : { resolve : (rArgs : { data : ArrayBuffer | Uint8Array;
|
|
584
|
-
sendingTime? : number;
|
|
585
|
-
receivingTime? : number;
|
|
586
|
-
size? : number;
|
|
587
|
-
duration? : number; })
|
|
588
|
-
=> void;
|
|
589
|
-
|
|
590
|
-
progress : (pArgs : { duration : number;
|
|
591
|
-
size : number;
|
|
592
|
-
totalSize? : number; })
|
|
593
|
-
=> void;
|
|
594
|
-
reject : (err? : Error) => void;
|
|
595
|
-
fallback? : () => void; }
|
|
596
|
-
) =>
|
|
597
|
-
// returns either the aborting callback or nothing
|
|
598
|
-
(() => void)|void;
|
|
599
|
-
|
|
600
|
-
export type CustomManifestLoader = (
|
|
601
|
-
// first argument: url of the manifest
|
|
602
|
-
url : string | undefined,
|
|
603
|
-
|
|
604
|
-
// second argument: callbacks
|
|
605
|
-
callbacks : { resolve : (args : { data : ILoadedManifest;
|
|
606
|
-
sendingTime? : number;
|
|
607
|
-
receivingTime? : number;
|
|
608
|
-
size? : number;
|
|
609
|
-
duration? : number; })
|
|
610
|
-
=> void;
|
|
611
|
-
|
|
612
|
-
reject : (err? : Error) => void;
|
|
613
|
-
fallback? : () => void; }
|
|
614
|
-
) =>
|
|
615
|
-
// returns either the aborting callback or nothing
|
|
616
|
-
(() => void)|void;
|