rx-player 3.25.2 → 3.26.3-dev.2022021400
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/.github/workflows/checks.yml +99 -0
- package/.github/workflows/perfs.yml +22 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +142 -70
- package/CONTRIBUTING.md +68 -3
- package/MAINTAINERS.md +1 -1
- package/README.md +121 -73
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +14 -9
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +7 -19
- package/dist/_esm5.processed/compat/browser_detection.js +4 -12
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +2 -4
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +4 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +7 -20
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +18 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +7 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts +21 -0
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +9 -10
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -12
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +22 -25
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +2 -1
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +5 -4
- package/dist/_esm5.processed/compat/event_listeners.js +21 -35
- package/dist/_esm5.processed/compat/fullscreen.js +1 -5
- package/dist/_esm5.processed/compat/index.d.ts +3 -4
- package/dist/_esm5.processed/compat/index.js +3 -4
- package/dist/_esm5.processed/compat/is_vtt_cue.js +1 -2
- package/dist/_esm5.processed/compat/make_vtt_cue.js +11 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +3 -0
- package/dist/_esm5.processed/compat/play.d.ts +1 -1
- package/dist/_esm5.processed/compat/play.js +1 -1
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +72 -13
- package/dist/_esm5.processed/config.js +73 -14
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -17
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +26 -8
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +5 -8
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +35 -52
- package/dist/_esm5.processed/core/abr/representation_estimator.js +114 -65
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/get_player_state.d.ts +3 -4
- package/dist/_esm5.processed/core/api/get_player_state.js +2 -2
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +25 -15
- package/dist/_esm5.processed/core/api/option_utils.d.ts +5 -5
- package/dist/_esm5.processed/core/api/option_utils.js +6 -40
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +11 -10
- package/dist/_esm5.processed/core/api/public_api.js +118 -140
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +7 -8
- package/dist/_esm5.processed/core/api/track_choice_manager.js +54 -57
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +4 -6
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +25 -32
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +2 -6
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -9
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +5 -7
- package/dist/_esm5.processed/core/eme/find_key_system.js +20 -21
- package/dist/_esm5.processed/core/eme/get_media_keys.js +4 -11
- package/dist/_esm5.processed/core/eme/get_session.js +3 -6
- package/dist/_esm5.processed/core/eme/init_media_keys.js +6 -14
- package/dist/_esm5.processed/core/eme/session_events_listener.js +12 -10
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +14 -6
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +3 -9
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +5 -8
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +28 -13
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +258 -65
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +13 -31
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +1 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +101 -19
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +239 -99
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +38 -21
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +13 -10
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +37 -22
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +129 -59
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +17 -8
- package/dist/_esm5.processed/{transports/utils/return_parsed_manifest.d.ts → core/init/emit_loaded_event.d.ts} +9 -8
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +47 -0
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/events_generators.d.ts +3 -5
- package/dist/_esm5.processed/core/init/events_generators.js +5 -16
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +56 -22
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +65 -56
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +8 -7
- package/dist/_esm5.processed/core/init/initialize_directfile.js +31 -33
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +12 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.js +20 -18
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +9 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.js +30 -43
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +11 -18
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +12 -7
- package/dist/_esm5.processed/core/init/stall_avoider.js +102 -39
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/refresh_scheduled_events_list.js +2 -12
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +11 -28
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +7 -6
- package/dist/_esm5.processed/core/init/update_playback_rate.js +11 -12
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +5 -5
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +32 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +15 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +52 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +33 -32
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +47 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +18 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +17 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +81 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +91 -0
- package/dist/_esm5.processed/core/{fetchers/utils/create_request_scheduler.d.ts → segment_buffers/inventory/index.d.ts} +5 -4
- package/dist/_esm5.processed/core/{fetchers/manifest/get_manifest_backoff_options.d.ts → segment_buffers/inventory/index.js} +2 -11
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.d.ts → inventory/segment_inventory.d.ts} +38 -39
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.js → inventory/segment_inventory.js} +65 -28
- package/dist/_esm5.processed/core/{abr/cached_segment_detector.d.ts → segment_buffers/inventory/types.d.ts} +10 -9
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +16 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +18 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +38 -34
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -22
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +13 -6
- package/dist/_esm5.processed/core/stream/events_generators.js +20 -12
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_blacklisted_ranges.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -41
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +12 -15
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +25 -11
- package/dist/_esm5.processed/core/stream/period/period_stream.js +39 -30
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +45 -0
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +48 -0
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +222 -0
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +254 -0
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +9 -12
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +10 -18
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +3 -1
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +108 -6
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +4 -8
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +7 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +5 -9
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +12 -18
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +150 -209
- package/dist/_esm5.processed/core/stream/types.d.ts +65 -17
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +7 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +26 -13
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +32 -36
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +4 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +6 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +9 -23
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +28 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +12 -10
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +5 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +10 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +12 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +6 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/initialize_features.js +49 -47
- package/dist/_esm5.processed/features/list/directfile.js +1 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -10
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/adaptation.d.ts +10 -16
- package/dist/_esm5.processed/manifest/adaptation.js +3 -25
- package/dist/_esm5.processed/manifest/index.d.ts +5 -4
- package/dist/_esm5.processed/manifest/index.js +3 -2
- package/dist/_esm5.processed/manifest/manifest.d.ts +11 -11
- package/dist/_esm5.processed/manifest/manifest.js +14 -11
- package/dist/_esm5.processed/manifest/period.d.ts +4 -4
- package/dist/_esm5.processed/manifest/period.js +7 -16
- package/dist/_esm5.processed/manifest/representation.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.js +3 -7
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +95 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/update_periods.js +11 -7
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/utils.js +44 -0
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +54 -58
- package/dist/_esm5.processed/parsers/images/bif.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +9 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +8 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +5 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +8 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +16 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +12 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +11 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +3 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +34 -21
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +26 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -33
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +50 -57
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +29 -30
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +26 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +70 -65
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +24 -16
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +30 -42
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -36
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +28 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +13 -11
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +70 -29
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +14 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +9 -21
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +22 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +31 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +6 -11
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +13 -7
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -13
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +9 -30
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +5 -6
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +16 -6
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +12 -4
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +45 -29
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +11 -7
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +1 -5
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +10 -6
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +11 -15
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +1 -3
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -7
- package/dist/_esm5.processed/public_types.d.ts +4 -0
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -3
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +70 -9
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +12 -6
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +34 -36
- package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +8 -4
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +32 -36
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +38 -40
- package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +3 -7
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +115 -52
- package/dist/_esm5.processed/transports/dash/pipelines.js +10 -10
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/segment_loader.js +70 -57
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/segment_parser.js +15 -32
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/text_loader.js +28 -18
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +5 -4
- package/dist/_esm5.processed/transports/dash/text_parser.js +58 -51
- package/dist/_esm5.processed/transports/local/pipelines.js +16 -14
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +8 -5
- package/dist/_esm5.processed/transports/local/segment_loader.js +69 -28
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +5 -3
- package/dist/_esm5.processed/transports/local/segment_parser.js +15 -27
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +9 -5
- package/dist/_esm5.processed/transports/local/text_parser.js +54 -53
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +5 -5
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +7 -9
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +82 -138
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +3 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.d.ts +1 -4
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +1 -4
- package/dist/_esm5.processed/transports/smooth/pipelines.js +149 -155
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +6 -3
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +150 -107
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +9 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +11 -1
- package/dist/_esm5.processed/transports/types.d.ts +533 -376
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +45 -32
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +4 -4
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +16 -5
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +8 -12
- package/dist/_esm5.processed/utils/array_find.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find.js +0 -5
- package/dist/_esm5.processed/utils/array_find_index.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find_index.js +0 -5
- package/dist/_esm5.processed/utils/assert.d.ts +1 -1
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +30 -0
- package/dist/_esm5.processed/utils/cancellable_sleep.js +42 -0
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +11 -6
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/flat_map.js +0 -6
- package/dist/_esm5.processed/utils/id_generator.d.ts +2 -1
- package/dist/_esm5.processed/utils/id_generator.js +2 -1
- package/dist/_esm5.processed/utils/languages/normalize.js +1 -3
- package/dist/_esm5.processed/utils/ranges.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +64 -27
- package/dist/_esm5.processed/utils/request/fetch.js +95 -113
- package/dist/_esm5.processed/utils/request/index.d.ts +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +64 -47
- package/dist/_esm5.processed/utils/request/xhr.js +49 -43
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +39 -0
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +58 -0
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +240 -0
- package/dist/_esm5.processed/utils/task_canceller.js +289 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +8775 -6211
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -4
- package/package.json +122 -106
- package/scripts/README.md +11 -0
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +197 -0
- package/scripts/build/templates/experimental/features/index.d.ts +16 -0
- package/scripts/build/templates/experimental/features/index.js +16 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +18 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +18 -0
- package/scripts/build/templates/experimental/tools/index.d.ts +16 -0
- package/scripts/build/templates/experimental/tools/index.js +16 -0
- package/scripts/build/templates/features/index.d.ts +16 -0
- package/scripts/build/templates/features/index.js +16 -0
- package/scripts/build/templates/logger/index.d.ts +17 -0
- package/scripts/build/templates/logger/index.js +17 -0
- package/scripts/build/templates/minimal/index.d.ts +17 -0
- package/scripts/build/templates/minimal/index.js +17 -0
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +18 -0
- package/scripts/build/templates/tools/TextTrackRenderer.js +18 -0
- package/scripts/build/templates/tools/index.d.ts +16 -0
- package/scripts/build/templates/tools/index.js +16 -0
- package/scripts/build/templates/tools/string-utils.d.ts +18 -0
- package/{dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.d.ts → scripts/build/templates/tools/string-utils.js} +3 -11
- package/scripts/build/templates/types/index.d.ts +16 -0
- package/scripts/build/templates/types/index.js +15 -0
- package/scripts/check_nodejs_import_compatibility.js +35 -1
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +147 -0
- package/scripts/doc-generator/generate_page_html.js +115 -0
- package/scripts/doc-generator/generate_page_list_html.js +92 -0
- package/scripts/doc-generator/generate_sidebar_html.js +85 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +74 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +9 -5
- package/scripts/generate_full_demo.js +108 -10
- package/scripts/generate_standalone_demo.js +15 -8
- package/scripts/launch_static_server.js +139 -56
- package/scripts/list-npm-scripts.js +99 -0
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/{run_full_demo.js → start_demo_web_server.js} +16 -3
- package/scripts/update-version +8 -1
- package/scripts/{display_webpack_errors.js → utils/display_webpack_errors.js} +0 -4
- package/scripts/{get_human_readable_hours.js → utils/get_human_readable_hours.js} +0 -4
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +12 -11
- package/src/compat/__tests__/browser_compatibility_types.test.ts +69 -60
- package/src/compat/__tests__/browser_version.test.ts +3 -1
- package/src/compat/__tests__/change_source_buffer_type.test.ts +3 -3
- package/src/compat/__tests__/clear_element_src.test.ts +62 -36
- package/src/compat/__tests__/fullscreen.test.ts +154 -139
- package/src/compat/__tests__/is_offline.test.ts +20 -12
- package/src/compat/__tests__/is_vtt_cue.test.ts +14 -10
- package/src/compat/__tests__/make_vtt_cue.test.ts +16 -15
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +30 -48
- package/src/compat/__tests__/play.test.ts +2 -2
- package/src/compat/__tests__/remove_cue.test.ts +5 -5
- package/src/compat/__tests__/set_element_src.test.ts +3 -3
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +14 -6
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/browser_compatibility_types.ts +38 -36
- package/src/compat/browser_detection.ts +17 -12
- package/src/compat/can_rely_on_video_visibility_and_size.ts +3 -3
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +7 -6
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +22 -26
- package/src/compat/eme/custom_media_keys/index.ts +32 -38
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +16 -19
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +39 -9
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +10 -12
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +27 -30
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +6 -2
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +30 -46
- package/src/compat/fullscreen.ts +2 -4
- package/src/compat/index.ts +2 -6
- package/src/compat/is_vtt_cue.ts +1 -2
- package/src/compat/make_vtt_cue.ts +10 -8
- package/src/compat/on_height_width_change.ts +4 -6
- package/src/compat/patch_webkit_source_buffer.ts +11 -5
- package/src/compat/play.ts +1 -1
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +79 -14
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +85 -18
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +75 -32
- package/src/core/abr/pending_requests_store.ts +72 -40
- package/src/core/abr/representation_estimator.ts +205 -135
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/get_player_state.test.ts +58 -110
- package/src/core/api/__tests__/media_element_track_choice_manager.test.ts +35 -31
- package/src/core/api/__tests__/option_utils.test.ts +104 -17
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/get_player_state.ts +5 -7
- package/src/core/api/index.ts +8 -3
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +7 -7
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +128 -130
- package/src/core/api/track_choice_manager.ts +82 -78
- package/src/core/eme/__tests__/__global__/get_license.test.ts +14 -9
- package/src/core/eme/__tests__/__global__/init_data.test.ts +12 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +3 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +6 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +18 -12
- package/src/core/eme/__tests__/__global__/utils.ts +21 -17
- package/src/core/eme/__tests__/clean_old_loaded_sessions.test.ts +4 -4
- package/src/core/eme/__tests__/clean_old_stored_persistent_info.test.ts +3 -2
- package/src/core/eme/__tests__/init_media_keys.test.ts +10 -66
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +24 -13
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +17 -17
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +21 -18
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +17 -6
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +256 -109
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +4 -5
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +48 -51
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +396 -177
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +56 -39
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +123 -91
- package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -1
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +21 -18
- package/src/core/init/emit_loaded_event.ts +71 -0
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/events_generators.ts +4 -5
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +128 -96
- package/src/core/init/initialize_directfile.ts +49 -57
- package/src/core/init/initialize_media_source.ts +31 -31
- package/src/core/init/load_on_media_source.ts +70 -74
- package/src/core/init/manifest_update_scheduler.ts +18 -19
- package/src/core/init/stall_avoider.ts +142 -51
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +15 -28
- package/src/core/init/update_playback_rate.ts +17 -18
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +17 -13
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +46 -11
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +21 -18
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +92 -18
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +33 -32
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +82 -6
- package/src/core/segment_buffers/implementations/types.ts +23 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/index.ts +6 -1
- package/src/core/segment_buffers/inventory/buffered_history.ts +127 -0
- package/src/core/segment_buffers/inventory/index.ts +28 -0
- package/src/core/segment_buffers/{segment_inventory.ts → inventory/segment_inventory.ts} +85 -52
- package/{dist/_esm5.processed/manifest/are_same_content.js → src/core/segment_buffers/inventory/types.ts} +19 -11
- package/src/core/segment_buffers/segment_buffers_store.ts +4 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +90 -65
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/events_generators.ts +31 -7
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +9 -11
- package/src/core/stream/orchestrator/are_streams_complete.ts +4 -6
- package/src/core/stream/orchestrator/get_blacklisted_ranges.ts +1 -1
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +70 -62
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +126 -85
- package/src/core/stream/reload_after_switch.ts +70 -0
- package/src/core/stream/representation/append_segment_to_buffer.ts +21 -17
- package/src/core/stream/representation/downloading_queue.ts +502 -0
- package/src/core/stream/representation/force_garbage_collection.ts +20 -29
- package/src/core/stream/representation/get_buffer_status.ts +15 -13
- package/src/core/stream/representation/get_needed_segments.ts +135 -6
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +238 -307
- package/src/core/stream/types.ts +91 -39
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +2 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +47 -30
- package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +1 -2
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +41 -72
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +20 -13
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -7
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +13 -27
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +38 -37
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +56 -47
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +6 -4
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +7 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +1 -0
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +12 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +12 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +6 -1
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +207 -110
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +2 -0
- package/src/features/list/__tests__/dash.test.ts +2 -0
- package/src/features/list/__tests__/directfile.test.ts +2 -0
- package/src/features/list/__tests__/eme.test.ts +2 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/image_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/smooth.test.ts +2 -0
- package/src/features/types.ts +3 -11
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/adaptation.test.ts +0 -79
- package/src/manifest/__tests__/manifest.test.ts +68 -67
- package/src/manifest/__tests__/period.test.ts +142 -118
- package/src/manifest/__tests__/update_period_in_place.test.ts +85 -62
- package/src/manifest/__tests__/update_periods.test.ts +33 -12
- package/src/manifest/adaptation.ts +17 -51
- package/src/manifest/index.ts +15 -2
- package/src/manifest/manifest.ts +31 -18
- package/src/manifest/period.ts +13 -20
- package/src/manifest/representation.ts +3 -3
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +43 -21
- package/src/manifest/types.ts +97 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +7 -4
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +29 -6
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +5 -8
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +11 -9
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +5 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +10 -10
- package/src/parsers/manifest/dash/common/indexes/list.ts +20 -17
- package/src/parsers/manifest/dash/common/indexes/template.ts +30 -22
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +63 -27
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +64 -73
- package/src/parsers/manifest/dash/common/parse_mpd.ts +33 -24
- package/src/parsers/manifest/dash/common/parse_periods.ts +115 -87
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +88 -80
- package/src/parsers/manifest/dash/common/parse_representations.ts +61 -64
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +1 -1
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +66 -29
- package/src/parsers/manifest/dash/parsers_types.ts +11 -5
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +4 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +43 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +41 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +22 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +40 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +10 -19
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +25 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +34 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +31 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -5
- package/src/parsers/manifest/smooth/create_parser.ts +24 -22
- package/src/parsers/manifest/smooth/representation_index.ts +17 -15
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +39 -36
- package/src/parsers/manifest/utils/check_manifest_ids.ts +2 -2
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +16 -7
- package/src/parsers/manifest/utils/index_helpers.ts +22 -12
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/srt/html.ts +16 -10
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/parsers/texttracks/ttml/nodes.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -6
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +18 -0
- package/src/transports/README.md +8 -4
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +68 -27
- package/src/transports/dash/image_pipelines.ts +58 -45
- package/src/transports/dash/init_segment_loader.ts +68 -45
- package/src/transports/dash/low_latency_segment_loader.ts +52 -68
- package/src/transports/dash/manifest_parser.ts +148 -78
- package/src/transports/dash/pipelines.ts +10 -10
- package/src/transports/dash/segment_loader.ts +117 -90
- package/src/transports/dash/segment_parser.ts +46 -45
- package/src/transports/dash/text_loader.ts +55 -34
- package/src/transports/dash/text_parser.ts +91 -78
- package/src/transports/local/pipelines.ts +19 -21
- package/src/transports/local/segment_loader.ts +86 -40
- package/src/transports/local/segment_parser.ts +31 -38
- package/src/transports/local/text_parser.ts +82 -74
- package/src/transports/metaplaylist/manifest_loader.ts +17 -15
- package/src/transports/metaplaylist/pipelines.ts +158 -181
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/isobmff/create_boxes.ts +5 -5
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +1 -4
- package/src/transports/smooth/pipelines.ts +206 -187
- package/src/transports/smooth/segment_loader.ts +138 -87
- package/src/transports/smooth/utils.ts +13 -0
- package/src/transports/types.ts +639 -439
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +24 -24
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +31 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +83 -60
- package/src/transports/utils/generate_manifest_loader.ts +34 -12
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/array_find.test.ts +5 -5
- package/src/utils/__tests__/array_find_index.test.ts +6 -5
- package/src/utils/__tests__/array_includes.test.ts +1 -0
- package/src/utils/__tests__/assert.test.ts +38 -21
- package/src/utils/__tests__/assert_unreachable.test.ts +8 -7
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/flat_map.test.ts +18 -6
- package/src/utils/__tests__/id_generator.test.ts +3 -3
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/__tests__/promise.test.ts +1 -1
- package/src/utils/__tests__/starts_with.test.ts +2 -0
- package/src/utils/array_find.ts +11 -3
- package/src/utils/array_find_index.ts +11 -3
- package/src/utils/assert.ts +5 -2
- package/src/utils/cancellable_sleep.ts +51 -0
- package/src/utils/cast_to_observable.ts +12 -13
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/flat_map.ts +10 -8
- package/src/utils/id_generator.ts +2 -1
- package/src/utils/object_assign.ts +1 -1
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +175 -147
- package/src/utils/request/index.ts +6 -6
- package/src/utils/request/xhr.ts +144 -128
- package/src/utils/rx-from_cancellable_promise.ts +66 -0
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/src/utils/task_canceller.ts +326 -0
- package/src/utils/uniq.ts +1 -1
- package/tsconfig.json +5 -1
- package/tsconfig.modules.json +9 -3
- package/dist/_esm5.processed/compat/is_playback_stuck.d.ts +0 -28
- package/dist/_esm5.processed/compat/is_playback_stuck.js +0 -33
- package/dist/_esm5.processed/core/abr/cached_segment_detector.js +0 -60
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -52
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -129
- package/dist/_esm5.processed/core/api/clock.js +0 -335
- package/dist/_esm5.processed/core/fetchers/manifest/get_manifest_backoff_options.js +0 -38
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.d.ts +0 -98
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.js +0 -124
- package/dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.js +0 -32
- package/dist/_esm5.processed/core/fetchers/utils/create_request_scheduler.js +0 -38
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -56
- package/dist/_esm5.processed/core/stream/utils.d.ts +0 -60
- package/dist/_esm5.processed/core/stream/utils.js +0 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/dist/_esm5.processed/transports/utils/return_parsed_manifest.js +0 -32
- package/scripts/clean-up_builds +0 -18
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/scripts/generate_builds +0 -224
- package/scripts/list-npm-scripts-info.js +0 -39
- package/src/compat/is_playback_stuck.ts +0 -42
- package/src/core/abr/cached_segment_detector.ts +0 -86
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/api/clock.ts +0 -497
- package/src/core/fetchers/manifest/get_manifest_backoff_options.ts +0 -50
- package/src/core/fetchers/segment/create_segment_loader.ts +0 -251
- package/src/core/fetchers/segment/get_segment_backoff_options.ts +0 -45
- package/src/core/fetchers/utils/create_request_scheduler.ts +0 -56
- package/src/core/init/create_stream_clock.ts +0 -94
- package/src/core/stream/utils.ts +0 -97
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
- package/src/transports/utils/return_parsed_manifest.ts +0 -47
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Observable } from "rxjs";
|
|
17
16
|
import { IInbandEvent } from "../core/stream";
|
|
18
|
-
import Manifest, { Adaptation, IRepresentationFilter, ISegment, ISupplementaryImageTrack, ISupplementaryTextTrack, Period, Representation } from "../manifest";
|
|
17
|
+
import Manifest, { Adaptation, IExposedAdaptation, IExposedManifest, IExposedPeriod, IExposedRepresentation, IExposedSegment, IRepresentationFilter, ISegment, ISupplementaryImageTrack, ISupplementaryTextTrack, Period, Representation } from "../manifest";
|
|
19
18
|
import { IBifThumbnail } from "../parsers/images/bif";
|
|
20
19
|
import { ILocalManifest } from "../parsers/manifest/local";
|
|
21
20
|
import { IMetaPlaylist } from "../parsers/manifest/metaplaylist";
|
|
21
|
+
import TaskCanceller, { CancellationSignal } from "../utils/task_canceller";
|
|
22
22
|
/**
|
|
23
23
|
* Interface returned by any transport implementation.
|
|
24
24
|
* @param {Object} options - Options allowing to configure the transport's
|
|
@@ -35,337 +35,548 @@ export interface ITransportPipelines {
|
|
|
35
35
|
/** Functions allowing to load an parse the Manifest for this transport. */
|
|
36
36
|
manifest: ITransportManifestPipeline;
|
|
37
37
|
/** Functions allowing to load an parse audio segments. */
|
|
38
|
-
audio: ISegmentPipeline<
|
|
38
|
+
audio: ISegmentPipeline<ILoadedAudioVideoSegmentFormat, Uint8Array | ArrayBuffer | null>;
|
|
39
39
|
/** Functions allowing to load an parse video segments. */
|
|
40
|
-
video: ISegmentPipeline<
|
|
40
|
+
video: ISegmentPipeline<ILoadedAudioVideoSegmentFormat, Uint8Array | ArrayBuffer | null>;
|
|
41
41
|
/** Functions allowing to load an parse text (e.g. subtitles) segments. */
|
|
42
|
-
text: ISegmentPipeline<
|
|
42
|
+
text: ISegmentPipeline<ILoadedTextSegmentFormat, ITextTrackSegmentData | null>;
|
|
43
43
|
/** Functions allowing to load an parse image (e.g. thumbnails) segments. */
|
|
44
|
-
image: ISegmentPipeline<
|
|
44
|
+
image: ISegmentPipeline<ILoadedImageSegmentFormat, IImageTrackSegmentData | null>;
|
|
45
45
|
}
|
|
46
46
|
/** Functions allowing to load and parse the Manifest. */
|
|
47
47
|
export interface ITransportManifestPipeline {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
/**
|
|
49
|
+
* "Loader" of the Manifest pipeline, allowing to request a Manifest so it can
|
|
50
|
+
* later be parsed by the `parseManifest` function.
|
|
51
|
+
*
|
|
52
|
+
* @param {string|undefined} url - URL of the Manifest we want to load.
|
|
53
|
+
* `undefined` if the Manifest doesn't have an URL linked to it, in which case
|
|
54
|
+
* the Manifest should be loaded through another mean.
|
|
55
|
+
* @param {CancellationSignal} cancellationSignal - Signal which will allow to
|
|
56
|
+
* cancel the loading operation if the Manifest is not needed anymore (for
|
|
57
|
+
* example, if the content has just been stopped).
|
|
58
|
+
* When cancelled, the promise returned by this function will reject with a
|
|
59
|
+
* `CancellationError`.
|
|
60
|
+
* @returns {Promise.<Object>} - Promise emitting the loaded Manifest, that
|
|
61
|
+
* then can be parsed through the `parseManifest` function.
|
|
62
|
+
*
|
|
63
|
+
* Rejects in two cases:
|
|
64
|
+
* - The loading operation has been cancelled through the `cancelSignal`
|
|
65
|
+
* given in argument.
|
|
66
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
67
|
+
* - The loading operation failed, most likely due to a request error.
|
|
68
|
+
* In that case, this Promise will reject with the corresponding Error.
|
|
69
|
+
*/
|
|
70
|
+
loadManifest: (url: string | undefined, cancelSignal: CancellationSignal) => Promise<IRequestedData<ILoadedManifestFormat>>;
|
|
71
|
+
/**
|
|
72
|
+
* "Parser" of the Manifest pipeline, allowing to parse a loaded Manifest so
|
|
73
|
+
* it can be exploited by the rest of the RxPlayer's logic.
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} manifestData - Response obtained from the `loadManifest`
|
|
76
|
+
* function.
|
|
77
|
+
* @param {Object} parserOptions - Various options relative to the parsing
|
|
78
|
+
* operation.
|
|
79
|
+
* @param {Function} onWarnings - Callbacks called:
|
|
80
|
+
* - when minor Manifest parsing errors are found
|
|
81
|
+
* - when `scheduleRequest` rejects on requests this function can do
|
|
82
|
+
* without.
|
|
83
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
84
|
+
* allow to abort the parsing operation if you do not want the Manifest
|
|
85
|
+
* anymore.
|
|
86
|
+
*
|
|
87
|
+
* That cancellationSignal can be triggered at any time, such as:
|
|
88
|
+
* - after a warning is received
|
|
89
|
+
* - while a request scheduled through the `scheduleRequest` argument is
|
|
90
|
+
* pending.
|
|
91
|
+
*
|
|
92
|
+
* `parseManifest` will interrupt all operations if the signal has been
|
|
93
|
+
* triggered in one of those scenarios, and will automatically reject with
|
|
94
|
+
* the corresponding `CancellationError` instance.
|
|
95
|
+
* @param {Function} scheduleRequest - Allows `parseManifest` to schedule
|
|
96
|
+
* network requests, for example to fetch sub-parts of the Manifest or
|
|
97
|
+
* supplementary resources we can only know of at Manifest parsing time.
|
|
98
|
+
*
|
|
99
|
+
* All requests scheduled through `scheduleRequest` should abort (and the
|
|
100
|
+
* corresponding Promise reject a `CancellationError`) when/if `cancelSignal`
|
|
101
|
+
* is triggered.
|
|
102
|
+
*
|
|
103
|
+
* If a request scheduled through `scheduleRequest` rejects with an error:
|
|
104
|
+
* - either the error was due to a cancellation, in which case
|
|
105
|
+
* `parseManifest` should reject the same error immediately.
|
|
106
|
+
* - either the requested resource was mandatory to parse the Manifest
|
|
107
|
+
* in which case `parseManifest` will reject with the same error.
|
|
108
|
+
* - either the parser can make up for that error, in which case it will
|
|
109
|
+
* just be emitted as a warning and `parseManifest` will continue its
|
|
110
|
+
* operations.
|
|
111
|
+
* @returns {Object | Promise.<Object>} - Returns directly the Manifest data
|
|
112
|
+
* if the parsing can be performed synchronously or through a Promise if it
|
|
113
|
+
* needs to perform network requests first through the `scheduleRequest`
|
|
114
|
+
* function.
|
|
115
|
+
*
|
|
116
|
+
* Throws if an error happens synchronously and rejects if it happens
|
|
117
|
+
* asynchronously.
|
|
118
|
+
*
|
|
119
|
+
* If this error is due to a failed request performed through the
|
|
120
|
+
* `scheduleRequest` argument, then the rejected error should be the same one
|
|
121
|
+
* than the one rejected by `scheduleRequest`.
|
|
122
|
+
*
|
|
123
|
+
* If this error is due to a cancellation instead (indicated through the
|
|
124
|
+
* `cancelSignal` argument), then the rejected error should be the
|
|
125
|
+
* `CancellationError` instance instead.
|
|
126
|
+
*/
|
|
127
|
+
parseManifest: (manifestData: IRequestedData<unknown>, parserOptions: IManifestParserOptions, onWarnings: (warnings: Error[]) => void, cancelSignal: CancellationSignal, scheduleRequest: IManifestParserRequestScheduler) => IManifestParserResult | Promise<IManifestParserResult>;
|
|
128
|
+
/**
|
|
129
|
+
* @deprecated
|
|
130
|
+
* "Resolves the Manifest's URL, to obtain its true URL.
|
|
131
|
+
* This is a deprecated function which corresponds to an old use case at
|
|
132
|
+
* Canal+ where the URL of the Manifest first need to be parsed from a .wsx
|
|
133
|
+
* file.
|
|
134
|
+
* Thankfully this API should not be used anymore, though to not break
|
|
135
|
+
* compatibility, we have to keep it until a v4.x.x release.
|
|
136
|
+
*
|
|
137
|
+
* @param {string | undefined} url - URL used to obtain the real URL of the
|
|
138
|
+
* Manifest.
|
|
139
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
140
|
+
* allow to abort the resolving operation if you do not want the Manifest
|
|
141
|
+
* anymore.
|
|
142
|
+
* When cancelled, the promise returned by this function will reject with a
|
|
143
|
+
* `CancellationError`.
|
|
144
|
+
* @returns {Promise.<string|undefined>} - Promise emitting the "real" URL of
|
|
145
|
+
* the Manifest, that should be loaded by the `loadManifest` function.
|
|
146
|
+
* `undefined` if the URL is either unknown or inexistant.
|
|
147
|
+
*
|
|
148
|
+
* Rejects in two cases:
|
|
149
|
+
*
|
|
150
|
+
* 1. The resolving operation has been aborted through the `cancelSignal`
|
|
151
|
+
* given in argument.
|
|
152
|
+
* In that case, this Promise will reject a `CancellationError`.
|
|
153
|
+
*
|
|
154
|
+
* 2. The resolving operation failed, most likely due to a request error.
|
|
155
|
+
* In that case, this Promise will reject the corresponding Error.
|
|
156
|
+
*/
|
|
157
|
+
resolveManifestUrl?: (url: string | undefined, cancelSignal: CancellationSignal) => Promise<string | undefined>;
|
|
158
|
+
}
|
|
159
|
+
/** Functions allowing to load and parse segments of any type. */
|
|
160
|
+
export interface ISegmentPipeline<TLoadedFormat, TParsedSegmentDataFormat> {
|
|
161
|
+
loadSegment: ISegmentLoader<TLoadedFormat>;
|
|
162
|
+
parseSegment: ISegmentParser<TLoadedFormat, TParsedSegmentDataFormat>;
|
|
51
163
|
}
|
|
52
164
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
165
|
+
* Segment loader function, allowing to load a segment of any type.
|
|
166
|
+
* @param {stop|null} url - URL at which the segment should be downloaded.
|
|
167
|
+
* `null` if we do not have an URL (in which case the segment should be loaded
|
|
168
|
+
* through other means, such as information taken from the segment's content).
|
|
169
|
+
* @param {Object} content - Content linked to the wanted segment.
|
|
170
|
+
* @param {CancellationSignal} cancelSignal - Cancellation signal which will
|
|
171
|
+
* allow to cancel the loading operation if the segment is not needed anymore.
|
|
60
172
|
*
|
|
61
|
-
*
|
|
62
|
-
* the
|
|
63
|
-
*
|
|
173
|
+
* When cancelled, this loader should stop any pending operation (such as an
|
|
174
|
+
* HTTP request) and the Promise returned should reject immediately with a
|
|
175
|
+
* `CancellationError`, generated through this CancellationSignal object.
|
|
176
|
+
* @param {Object} callbacks - Callbacks called on various loader events.
|
|
177
|
+
* @returns {Promise.<Object>} - Promise resolving when it has finished loading
|
|
178
|
+
* the segment.
|
|
64
179
|
*/
|
|
65
|
-
export declare type
|
|
180
|
+
export declare type ISegmentLoader<TLoadedFormat> = (url: string | null, content: ISegmentContext, cancelSignal: CancellationSignal, callbacks: ISegmentLoaderCallbacks<TLoadedFormat>) => Promise<ISegmentLoaderResultSegmentCreated<TLoadedFormat> | ISegmentLoaderResultSegmentLoaded<TLoadedFormat> | ISegmentLoaderResultChunkedComplete>;
|
|
66
181
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
182
|
+
* Segment parser function, allowing to parse a chunk (which may be a sub-part
|
|
183
|
+
* of a segment) of any type.
|
|
69
184
|
*
|
|
70
|
-
*
|
|
71
|
-
* load.
|
|
72
|
-
* @returns {Observable.<Object>}
|
|
185
|
+
* This function will throw if it encounters any error it cannot recover from.
|
|
73
186
|
*/
|
|
74
|
-
export declare type
|
|
187
|
+
export declare type ISegmentParser<TLoadedFormat, TParsedSegmentDataFormat> = (
|
|
188
|
+
/** Attributes of the corresponding loader's response. */
|
|
189
|
+
loadedSegment: {
|
|
190
|
+
/** The loaded segment data. */
|
|
191
|
+
data: TLoadedFormat;
|
|
192
|
+
/**
|
|
193
|
+
* If `true`,`data` is only a "chunk" of the whole segment (which potentially
|
|
194
|
+
* will contain multiple chunks).
|
|
195
|
+
* If `false`, `data` is the data for the whole segment.
|
|
196
|
+
*/
|
|
197
|
+
isChunked: boolean;
|
|
198
|
+
},
|
|
199
|
+
/** Context about the wanted segment. */
|
|
200
|
+
content: ISegmentContext,
|
|
75
201
|
/**
|
|
76
|
-
* "
|
|
77
|
-
*
|
|
202
|
+
* "Timescale" obtained from parsing the wanted representation's initialization
|
|
203
|
+
* segment.
|
|
78
204
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/** Functions allowing to load and parse segments of any type. */
|
|
84
|
-
export interface ISegmentPipeline<LoadedFormat, ParsedInitDataFormat, ParsedMediaDataFormat> {
|
|
85
|
-
loader: ISegmentLoader<LoadedFormat>;
|
|
86
|
-
parser: ISegmentParser<LoadedFormat, ParsedInitDataFormat, ParsedMediaDataFormat>;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Segment loader function, allowing to load a segment of any type.
|
|
90
|
-
* @param {Object} x
|
|
91
|
-
* @returns {Observable.<Object>}
|
|
205
|
+
* `undefined` if either no such `timescale` has been parsed yet or if this
|
|
206
|
+
* value doesn't exist for the wanted segment.
|
|
207
|
+
*
|
|
208
|
+
* This value can be useful when parsing the loaded segment's data.
|
|
92
209
|
*/
|
|
93
|
-
|
|
210
|
+
initTimescale: number | undefined) =>
|
|
94
211
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
212
|
+
* The parsed data.
|
|
213
|
+
*
|
|
214
|
+
* Can be of two types:
|
|
215
|
+
* - `ISegmentParserParsedInitChunk`: When the parsed chunk was part of an
|
|
216
|
+
* initialization segment.
|
|
217
|
+
* Such segments only serve to initialize the decoder and do not contain
|
|
218
|
+
* any decodable media data.
|
|
219
|
+
* - `ISegmentParserParsedMediaChunk`: When the parsed chunk was part of a
|
|
220
|
+
* media segment.
|
|
221
|
+
* Such segments generally contain decodable media data.
|
|
98
222
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
export interface IManifestLoaderArguments {
|
|
223
|
+
ISegmentParserParsedInitChunk<TParsedSegmentDataFormat> | ISegmentParserParsedMediaChunk<TParsedSegmentDataFormat>;
|
|
224
|
+
export interface IManifestParserOptions {
|
|
102
225
|
/**
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* case the Manifest should be loaded from another mean.
|
|
226
|
+
* If set, offset to add to `performance.now()` to obtain the current
|
|
227
|
+
* server's time.
|
|
106
228
|
*/
|
|
107
|
-
|
|
229
|
+
externalClockOffset: number | undefined;
|
|
230
|
+
/** Original URL used for the full version of the Manifest. */
|
|
231
|
+
originalUrl: string | undefined;
|
|
232
|
+
/** The previous value of the Manifest (when updating). */
|
|
233
|
+
previousManifest: Manifest | null;
|
|
234
|
+
/**
|
|
235
|
+
* If set to `true`, the Manifest parser can perform advanced optimizations
|
|
236
|
+
* to speed-up the parsing process. Those optimizations might lead to a
|
|
237
|
+
* de-synchronization with what is actually on the server, hence the "unsafe"
|
|
238
|
+
* part.
|
|
239
|
+
* To use with moderation and only when needed.
|
|
240
|
+
*/
|
|
241
|
+
unsafeMode: boolean;
|
|
108
242
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
/** Manifest object related to this segment. */
|
|
112
|
-
manifest: Manifest;
|
|
113
|
-
/** Period object related to this segment. */
|
|
114
|
-
period: Period;
|
|
115
|
-
/** Adaptation object related to this segment. */
|
|
116
|
-
adaptation: Adaptation;
|
|
117
|
-
/** Representation Object related to this segment. */
|
|
118
|
-
representation: Representation;
|
|
119
|
-
/** Segment we want to load. */
|
|
120
|
-
segment: ISegment;
|
|
243
|
+
export interface IManifestParserCallbacks {
|
|
244
|
+
onWarning: (warning: Error) => void;
|
|
121
245
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
246
|
+
* @param {Function} performRequest - Function performing the request
|
|
247
|
+
* @param {TaskCanceller} canceller - Interface allowing to cancel the request
|
|
248
|
+
* performed by the `performRequest` argument.
|
|
249
|
+
* @returns {Promise.<Object>}
|
|
125
250
|
*/
|
|
126
|
-
|
|
251
|
+
scheduleRequest: (performRequest: () => Promise<IRequestedData<Document | string>>, canceller: TaskCanceller) => Promise<IRequestedData<Document | string>>;
|
|
127
252
|
}
|
|
128
|
-
/**
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
253
|
+
/**
|
|
254
|
+
* Function allowing a Manifest parser to perform a request needed for the
|
|
255
|
+
* parsing of the Manifest.
|
|
256
|
+
*
|
|
257
|
+
* @param {Function} performRequest - Function performing the wanted request.
|
|
258
|
+
* Note that this function might be called multiple times depending on the error
|
|
259
|
+
* obtained at the last call.
|
|
260
|
+
*
|
|
261
|
+
* Should resolve with the requested data on success.
|
|
262
|
+
*
|
|
263
|
+
* Rejects in two cases:
|
|
264
|
+
* - The request has been cancelled through the `canceller` given.
|
|
265
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
266
|
+
*
|
|
267
|
+
* - The request failed.
|
|
268
|
+
* In that case, this Promise will reject with the corresponding Error.
|
|
269
|
+
*
|
|
270
|
+
* @param {TaskCanceller} canceller - Interface allowing to cancel the request
|
|
271
|
+
* performed by the `performRequest` argument.
|
|
272
|
+
*
|
|
273
|
+
* When triggered, the request should be aborted and the Promise returned by
|
|
274
|
+
* `performRequest` should reject the corresponding `CancellationError`.
|
|
275
|
+
*
|
|
276
|
+
* The Promise returned by that function should in consequence also reject the
|
|
277
|
+
* same `CancellationError`.
|
|
278
|
+
*
|
|
279
|
+
* @returns {Promise.<Object>} - Promise resolving with the requested data on
|
|
280
|
+
* success.
|
|
281
|
+
*
|
|
282
|
+
* Rejects in two cases:
|
|
283
|
+
* - The request has been cancelled through the `canceller` given.
|
|
284
|
+
* In that case, this Promise will reject with a `CancellationError`.
|
|
285
|
+
*
|
|
286
|
+
* - All the attempts to perform the request failed.
|
|
287
|
+
* In that case, this Promise will reject with the Error corresponding to
|
|
288
|
+
* the last performed request.
|
|
289
|
+
*/
|
|
290
|
+
export declare type IManifestParserRequestScheduler = (performRequest: () => Promise<IRequestedData<ILoadedManifestFormat>>) => Promise<IRequestedData<ILoadedManifestFormat>>;
|
|
291
|
+
/** Event emitted when a Manifest has been parsed by a Manifest parser. */
|
|
292
|
+
export interface IManifestParserResult {
|
|
293
|
+
/** The parsed Manifest Object itself. */
|
|
294
|
+
manifest: Manifest;
|
|
134
295
|
/**
|
|
135
|
-
* "Real" URL (post-redirection) at which the
|
|
296
|
+
* "Real" URL (post-redirection) at which the Manifest can be refreshed.
|
|
136
297
|
*
|
|
137
|
-
* Note that this doesn't always apply e.g. some
|
|
298
|
+
* Note that this doesn't always apply e.g. some Manifest might need multiple
|
|
138
299
|
* URLs to be fetched, some other might need to fetch no URL.
|
|
139
300
|
* This property should only be set when a unique URL is sufficient to
|
|
140
301
|
* retrieve the whole data.
|
|
141
302
|
*/
|
|
142
|
-
url?: string;
|
|
303
|
+
url?: string | undefined;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Allow the parser to ask for loading supplementary ressources while still
|
|
307
|
+
* profiting from the same retries and error management than the loader.
|
|
308
|
+
*/
|
|
309
|
+
export interface IManifestParserRequestNeeded {
|
|
310
|
+
resultType: "request-needed";
|
|
311
|
+
performRequest: IManifestParserRequest;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Time information for a single segment.
|
|
315
|
+
* Those variables expose the best guess we have on the effective duration and
|
|
316
|
+
* starting time that the corresponding segment should have at decoding time.
|
|
317
|
+
*/
|
|
318
|
+
export interface IChunkTimeInfo {
|
|
143
319
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
320
|
+
* Difference between the latest and the earliest presentation time
|
|
321
|
+
* available in that chunk, in seconds.
|
|
322
|
+
*
|
|
323
|
+
* If multiple chunks are present in a single segment (e.g. low-latency CMAF
|
|
324
|
+
* chunks, this is only the duration of the current chunk).
|
|
325
|
+
*
|
|
326
|
+
* Either `undefined` or set to `0` for an initialization segment.
|
|
147
327
|
*/
|
|
148
|
-
|
|
328
|
+
duration: number | undefined;
|
|
329
|
+
/** Earliest presentation time available in that segment, in seconds. */
|
|
330
|
+
time: number;
|
|
331
|
+
}
|
|
332
|
+
/** Text track segment data, once parsed. */
|
|
333
|
+
export interface ITextTrackSegmentData {
|
|
334
|
+
/** The text track data, in the format indicated in `type`. */
|
|
335
|
+
data: string;
|
|
336
|
+
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
337
|
+
type: string;
|
|
149
338
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
339
|
+
* Language in which the text track is, as a language code.
|
|
340
|
+
* This is mostly needed for "sami" subtitles, to know which cues can / should
|
|
341
|
+
* be parsed.
|
|
153
342
|
*/
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
export declare type ILoadedManifest = Document | ArrayBuffer | string | IMetaPlaylist | ILocalManifest | Manifest;
|
|
160
|
-
/** Event emitted by a Manifest loader when the Manifest is fully available. */
|
|
161
|
-
export interface IManifestLoaderDataLoadedEvent {
|
|
162
|
-
type: "data-loaded";
|
|
163
|
-
value: ILoaderDataLoadedValue<ILoadedManifest>;
|
|
343
|
+
language?: string | undefined;
|
|
344
|
+
/** start time from which the segment apply, in seconds. */
|
|
345
|
+
start?: number | undefined;
|
|
346
|
+
/** end time until which the segment apply, in seconds. */
|
|
347
|
+
end?: number | undefined;
|
|
164
348
|
}
|
|
165
|
-
/**
|
|
166
|
-
export interface
|
|
167
|
-
|
|
168
|
-
|
|
349
|
+
/** Format under which image data is decodable by the RxPlayer. */
|
|
350
|
+
export interface IImageTrackSegmentData {
|
|
351
|
+
data: IBifThumbnail[];
|
|
352
|
+
end: number;
|
|
353
|
+
start: number;
|
|
354
|
+
timescale: number;
|
|
355
|
+
type: string;
|
|
169
356
|
}
|
|
357
|
+
export declare type IManifestParserRequest1 = ((
|
|
170
358
|
/**
|
|
171
|
-
*
|
|
172
|
-
*
|
|
359
|
+
* Cancellation signal which will allow to cancel the request if the
|
|
360
|
+
* Manifest is not needed anymore.
|
|
173
361
|
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
362
|
+
* When cancelled, this parser should stop any pending operation (such as an
|
|
363
|
+
* HTTP request) and the Promise returned should reject immediately after with
|
|
364
|
+
* a `CancellationError`.
|
|
176
365
|
*/
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
value: {
|
|
180
|
-
responseData: T;
|
|
181
|
-
};
|
|
182
|
-
}
|
|
366
|
+
cancelSignal: CancellationSignal) => Promise<IRequestedData<Document | string>>);
|
|
367
|
+
export declare type IManifestParserRequest = (
|
|
183
368
|
/**
|
|
184
|
-
*
|
|
185
|
-
* is
|
|
369
|
+
* Cancellation signal which will allow to cancel the request if the
|
|
370
|
+
* Manifest is not needed anymore.
|
|
186
371
|
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* bandwidth.
|
|
372
|
+
* When cancelled, this parser should stop any pending operation (such as an
|
|
373
|
+
* HTTP request) and the Promise returned should reject immediately after with
|
|
374
|
+
* a `CancellationError`.
|
|
191
375
|
*/
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
duration: number;
|
|
197
|
-
/** Size of the data already downloaded, in bytes. */
|
|
198
|
-
size: number;
|
|
199
|
-
/** Size of whole data to download (data already-loaded included), in bytes. */
|
|
200
|
-
totalSize?: number;
|
|
201
|
-
};
|
|
376
|
+
cancelSignal: CancellationSignal) => Promise<IManifestParserResult | IManifestParserRequestNeeded>;
|
|
377
|
+
export interface ITransportAudioVideoSegmentPipeline {
|
|
378
|
+
loadSegment: ISegmentLoader<ILoadedAudioVideoSegmentFormat>;
|
|
379
|
+
parseSegment: ISegmentParser<ILoadedAudioVideoSegmentFormat, Uint8Array | ArrayBuffer | null>;
|
|
202
380
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
value: {
|
|
207
|
-
/** Loaded chunk, as raw data. */
|
|
208
|
-
responseData: ArrayBuffer | Uint8Array;
|
|
209
|
-
};
|
|
381
|
+
export interface ITransportTextSegmentPipeline {
|
|
382
|
+
loadSegment: ISegmentLoader<ILoadedTextSegmentFormat>;
|
|
383
|
+
parseSegment: ISegmentParser<ILoadedTextSegmentFormat, ITextTrackSegmentData | null>;
|
|
210
384
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
*/
|
|
215
|
-
export interface ISegmentLoaderDataChunkCompleteEvent {
|
|
216
|
-
type: "data-chunk-complete";
|
|
217
|
-
value: {
|
|
218
|
-
/** Duration the request took to be performed, in seconds. */
|
|
219
|
-
duration: number | undefined;
|
|
220
|
-
/**
|
|
221
|
-
* "Real" URL (post-redirection) at which the segment was loaded.
|
|
222
|
-
*
|
|
223
|
-
* Note that this doesn't always apply e.g. some segment might need multiple
|
|
224
|
-
* URLs to be fetched, some other might need to fetch no URL.
|
|
225
|
-
* This property should only be set when a unique URL is sufficient to
|
|
226
|
-
* retrieve the whole data.
|
|
227
|
-
*/
|
|
228
|
-
url?: string;
|
|
229
|
-
/**
|
|
230
|
-
* Time at which the request began in terms of `performance.now`.
|
|
231
|
-
* If fetching the corresponding data necessitated to perform multiple
|
|
232
|
-
* requests, this time corresponds to the first request made.
|
|
233
|
-
*/
|
|
234
|
-
sendingTime?: number;
|
|
235
|
-
/**
|
|
236
|
-
* Time at which the request ended in terms of `performance.now`.
|
|
237
|
-
* If fetching the corresponding data necessitated to perform multiple
|
|
238
|
-
* requests, this time corresponds to the last request to end.
|
|
239
|
-
*/
|
|
240
|
-
receivedTime?: number;
|
|
241
|
-
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
242
|
-
size: number | undefined;
|
|
243
|
-
};
|
|
385
|
+
export interface ITransportImageSegmentPipeline {
|
|
386
|
+
loadSegment: ISegmentLoader<ILoadedImageSegmentFormat>;
|
|
387
|
+
parseSegment: ISegmentParser<ILoadedImageSegmentFormat, IImageTrackSegmentData | null>;
|
|
244
388
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
export
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
389
|
+
export declare type ITransportSegmentPipeline = ITransportAudioVideoSegmentPipeline | ITransportTextSegmentPipeline | ITransportImageSegmentPipeline;
|
|
390
|
+
export declare type ITransportPipeline = ITransportManifestPipeline | ITransportSegmentPipeline;
|
|
391
|
+
interface IServerSyncInfos {
|
|
392
|
+
serverTimestamp: number;
|
|
393
|
+
clientTime: number;
|
|
394
|
+
}
|
|
395
|
+
export interface ITransportOptions {
|
|
396
|
+
aggressiveMode?: boolean | undefined;
|
|
397
|
+
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
398
|
+
lowLatencyMode: boolean;
|
|
399
|
+
manifestLoader?: ICustomManifestLoader | undefined;
|
|
400
|
+
manifestUpdateUrl?: string | undefined;
|
|
401
|
+
referenceDateTime?: number | undefined;
|
|
402
|
+
representationFilter?: IRepresentationFilter | undefined;
|
|
403
|
+
segmentLoader?: ICustomSegmentLoader | undefined;
|
|
404
|
+
serverSyncInfos?: IServerSyncInfos | undefined;
|
|
405
|
+
supplementaryImageTracks?: ISupplementaryImageTrack[] | undefined;
|
|
406
|
+
supplementaryTextTracks?: ISupplementaryTextTrack[] | undefined;
|
|
407
|
+
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
408
|
+
}
|
|
409
|
+
export declare type ICustomSegmentLoader = (infos: {
|
|
410
|
+
url: string;
|
|
411
|
+
manifest: IExposedManifest;
|
|
412
|
+
period: IExposedPeriod;
|
|
413
|
+
adaptation: IExposedAdaptation;
|
|
414
|
+
representation: IExposedRepresentation;
|
|
415
|
+
segment: IExposedSegment;
|
|
416
|
+
}, callbacks: {
|
|
417
|
+
resolve: (rArgs: {
|
|
418
|
+
data: ArrayBuffer | Uint8Array;
|
|
419
|
+
sendingTime?: number | undefined;
|
|
420
|
+
receivingTime?: number | undefined;
|
|
421
|
+
size?: number | undefined;
|
|
422
|
+
duration?: number | undefined;
|
|
423
|
+
}) => void;
|
|
424
|
+
reject: (err?: unknown) => void;
|
|
425
|
+
fallback: () => void;
|
|
426
|
+
progress: (info: {
|
|
427
|
+
duration: number;
|
|
428
|
+
size: number;
|
|
429
|
+
totalSize?: number | undefined;
|
|
430
|
+
}) => void;
|
|
431
|
+
}) => (() => void) | void;
|
|
432
|
+
export declare type ICustomManifestLoader = (url: string | undefined, callbacks: {
|
|
433
|
+
resolve: (args: {
|
|
434
|
+
data: ILoadedManifestFormat;
|
|
435
|
+
url?: string | undefined;
|
|
436
|
+
sendingTime?: number | undefined;
|
|
437
|
+
receivingTime?: number | undefined;
|
|
438
|
+
size?: number | undefined;
|
|
439
|
+
duration?: number | undefined;
|
|
440
|
+
}) => void;
|
|
441
|
+
reject: (err?: Error) => void;
|
|
442
|
+
fallback: () => void;
|
|
443
|
+
}) => (() => void) | void;
|
|
444
|
+
export interface ISegmentContext {
|
|
445
|
+
/** Manifest object related to this segment. */
|
|
446
|
+
manifest: Manifest;
|
|
447
|
+
/** Period object related to this segment. */
|
|
448
|
+
period: Period;
|
|
449
|
+
/** Adaptation object related to this segment. */
|
|
450
|
+
adaptation: Adaptation;
|
|
451
|
+
/** Representation Object related to this segment. */
|
|
452
|
+
representation: Representation;
|
|
453
|
+
/** Segment we want to load. */
|
|
454
|
+
segment: ISegment;
|
|
455
|
+
}
|
|
456
|
+
export interface ISegmentLoaderCallbacks<T> {
|
|
272
457
|
/**
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
* To use with moderation and only when needed.
|
|
458
|
+
* Callback called when new progress information on a segment request is
|
|
459
|
+
* available.
|
|
460
|
+
* The information emitted though this callback can be used to gather
|
|
461
|
+
* metrics on a current, un-terminated, request.
|
|
278
462
|
*/
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
/** Arguments given to the `parser` function of the segment pipeline. */
|
|
282
|
-
export interface ISegmentParserArguments<T> {
|
|
283
|
-
/** Attributes of the corresponding loader's response. */
|
|
284
|
-
response: {
|
|
285
|
-
/** The loaded data. */
|
|
286
|
-
data: T;
|
|
287
|
-
/**
|
|
288
|
-
* If `true`,`data` is only a "chunk" of the whole segment (which potentially
|
|
289
|
-
* will contain multiple chunks).
|
|
290
|
-
* If `false`, `data` is the data for the whole segment.
|
|
291
|
-
*/
|
|
292
|
-
isChunked: boolean;
|
|
293
|
-
};
|
|
463
|
+
onProgress: (info: ISegmentLoadingProgressInformation) => void;
|
|
294
464
|
/**
|
|
295
|
-
*
|
|
465
|
+
* Callback called when a decodable sub-part of the segment is available.
|
|
466
|
+
*
|
|
467
|
+
* Note that this callback is only called if the loader decides to load the
|
|
468
|
+
* wanted segment in a "chunk" mode, that is, when the segment is loaded
|
|
469
|
+
* decodable chunk by decodable chunk, each being a subpart of this same
|
|
296
470
|
* segment.
|
|
297
471
|
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
472
|
+
* In that case, this callback might be called multiple times for subsequent
|
|
473
|
+
* decodable chunks until the Promise resolves.
|
|
300
474
|
*
|
|
301
|
-
*
|
|
475
|
+
* Not all segments are loaded in a "chunk" mode.
|
|
476
|
+
* The alternatives to this mode are:
|
|
477
|
+
*
|
|
478
|
+
* - when the segment is created locally without needing to perform any
|
|
479
|
+
* request.
|
|
480
|
+
*
|
|
481
|
+
* - when the segment is loaded as a whole.
|
|
482
|
+
*
|
|
483
|
+
* In both of those other cases, the segment data can be retrieved in the
|
|
484
|
+
* Promise returned by the segment loader instead.
|
|
302
485
|
*/
|
|
303
|
-
|
|
304
|
-
/** Context about the wanted segment. */
|
|
305
|
-
content: {
|
|
306
|
-
/** Manifest object related to this segment. */
|
|
307
|
-
manifest: Manifest;
|
|
308
|
-
/** Period object related to this segment. */
|
|
309
|
-
period: Period;
|
|
310
|
-
/** Adaptation object related to this segment. */
|
|
311
|
-
adaptation: Adaptation;
|
|
312
|
-
/** Representation Object related to this segment. */
|
|
313
|
-
representation: Representation;
|
|
314
|
-
/** Segment we want to parse. */
|
|
315
|
-
segment: ISegment;
|
|
316
|
-
};
|
|
486
|
+
onNewChunk: (data: T) => void;
|
|
317
487
|
}
|
|
318
|
-
/**
|
|
319
|
-
export interface
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
*
|
|
327
|
-
* Note that this doesn't always apply e.g. some Manifest might need multiple
|
|
328
|
-
* URLs to be fetched, some other might need to fetch no URL.
|
|
329
|
-
* This property should only be set when a unique URL is sufficient to
|
|
330
|
-
* retrieve the whole data.
|
|
331
|
-
*/
|
|
332
|
-
url?: string;
|
|
333
|
-
};
|
|
488
|
+
/** Information related to a pending Segment request progressing. */
|
|
489
|
+
export interface ISegmentLoadingProgressInformation {
|
|
490
|
+
/** Time since the beginning of the request so far, in seconds. */
|
|
491
|
+
duration: number;
|
|
492
|
+
/** Size of the data already downloaded, in bytes. */
|
|
493
|
+
size: number;
|
|
494
|
+
/** Size of whole data to download (data already-loaded included), in bytes. */
|
|
495
|
+
totalSize?: number | undefined;
|
|
334
496
|
}
|
|
335
|
-
/**
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
497
|
+
/**
|
|
498
|
+
* Result returned by a segment loader when a segment has been loaded in a
|
|
499
|
+
* "chunk" mode.
|
|
500
|
+
* In that mode, the segment has been divided into multiple decodable chunks
|
|
501
|
+
* each sent in order through the `onNewChunk` callback of the corresponding
|
|
502
|
+
* loader.
|
|
503
|
+
*/
|
|
504
|
+
export interface ISegmentLoaderResultChunkedComplete {
|
|
505
|
+
resultType: "chunk-complete";
|
|
506
|
+
/** Information on the request performed. */
|
|
507
|
+
resultData: IChunkCompleteInformation;
|
|
340
508
|
}
|
|
341
509
|
/**
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
* starting time that the corresponding segment should have at decoding time.
|
|
510
|
+
* Result returned by a segment loader when a segment has been loaded
|
|
511
|
+
* by performing a request.
|
|
345
512
|
*/
|
|
346
|
-
export interface
|
|
513
|
+
export interface ISegmentLoaderResultSegmentLoaded<T> {
|
|
514
|
+
resultType: "segment-loaded";
|
|
515
|
+
/** Segment data and information on the request. */
|
|
516
|
+
resultData: IRequestedData<T>;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Result returned by a segment loader when a segment has been fully
|
|
520
|
+
* created locally and thus did not depend on a request.
|
|
521
|
+
* TODO merge with ISegmentLoaderResultSegmentLoaded?
|
|
522
|
+
*/
|
|
523
|
+
export interface ISegmentLoaderResultSegmentCreated<T> {
|
|
524
|
+
resultType: "segment-created";
|
|
525
|
+
/** The data iself. */
|
|
526
|
+
resultData: T;
|
|
527
|
+
}
|
|
528
|
+
/** Data emitted in a `ISegmentLoaderResultChunkedComplete`. */
|
|
529
|
+
export interface IChunkCompleteInformation {
|
|
530
|
+
/** Duration the request took to be performed, in seconds. */
|
|
531
|
+
requestDuration: number | undefined;
|
|
347
532
|
/**
|
|
348
|
-
*
|
|
349
|
-
* available in that segment, in seconds.
|
|
533
|
+
* "Real" URL (post-redirection) at which the segment was loaded.
|
|
350
534
|
*
|
|
351
|
-
*
|
|
535
|
+
* Note that this doesn't always apply e.g. some segment might need multiple
|
|
536
|
+
* URLs to be fetched, some other might need to fetch no URL.
|
|
537
|
+
* This property should only be set when a unique URL is sufficient to
|
|
538
|
+
* retrieve the whole data.
|
|
352
539
|
*/
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
|
|
540
|
+
url?: string | undefined;
|
|
541
|
+
/**
|
|
542
|
+
* Time at which the request began in terms of `performance.now`.
|
|
543
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
544
|
+
* requests, this time corresponds to the first request made.
|
|
545
|
+
*/
|
|
546
|
+
sendingTime?: number | undefined;
|
|
547
|
+
/**
|
|
548
|
+
* Time at which the request ended in terms of `performance.now`.
|
|
549
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
550
|
+
* requests, this time corresponds to the last request to end.
|
|
551
|
+
*/
|
|
552
|
+
receivedTime?: number | undefined;
|
|
553
|
+
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
554
|
+
size: number | undefined;
|
|
356
555
|
}
|
|
357
|
-
/**
|
|
358
|
-
export
|
|
556
|
+
/** Format of a loaded Manifest before parsing. */
|
|
557
|
+
export declare type ILoadedManifestFormat = Document | string | ArrayBuffer | IMetaPlaylist | ILocalManifest | Manifest;
|
|
558
|
+
/** Format of a loaded audio and video segment before parsing. */
|
|
559
|
+
export declare type ILoadedAudioVideoSegmentFormat = Uint8Array | ArrayBuffer | null;
|
|
560
|
+
/** Format of a loaded text segment before parsing. */
|
|
561
|
+
export declare type ILoadedTextSegmentFormat = Uint8Array | ArrayBuffer | string | null;
|
|
562
|
+
/** Format of a loaded image segment before parsing. */
|
|
563
|
+
export declare type ILoadedImageSegmentFormat = Uint8Array | ArrayBuffer | null;
|
|
564
|
+
/**
|
|
565
|
+
* Result returned by a segment parser when it parsed a chunk from an init
|
|
566
|
+
* segment (which does not contain media data).
|
|
567
|
+
*/
|
|
568
|
+
export interface ISegmentParserParsedInitChunk<DataType> {
|
|
569
|
+
segmentType: "init";
|
|
359
570
|
/**
|
|
360
571
|
* Initialization segment that can be directly pushed to the corresponding
|
|
361
572
|
* buffer.
|
|
362
573
|
*/
|
|
363
|
-
initializationData:
|
|
574
|
+
initializationData: DataType | null;
|
|
364
575
|
/**
|
|
365
576
|
* Timescale metadata found inside this initialization segment.
|
|
366
577
|
* That timescale might be useful when parsing further merdia segments.
|
|
367
578
|
*/
|
|
368
|
-
initTimescale?: number;
|
|
579
|
+
initTimescale?: number | undefined;
|
|
369
580
|
/**
|
|
370
581
|
* If set to `true`, some protection information has been found in this
|
|
371
582
|
* initialization segment and lead the corresponding `Representation`
|
|
@@ -379,36 +590,53 @@ export interface ISegmentParserParsedInitSegment<T> {
|
|
|
379
590
|
*/
|
|
380
591
|
protectionDataUpdate: boolean;
|
|
381
592
|
}
|
|
382
|
-
/**
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
593
|
+
/**
|
|
594
|
+
* Result returned by a segment parser when it parsed a chunk from a media
|
|
595
|
+
* segment (which contains media data, unlike an initialization segment).
|
|
596
|
+
*/
|
|
597
|
+
export interface ISegmentParserParsedMediaChunk<DataType> {
|
|
598
|
+
segmentType: "media";
|
|
599
|
+
/**
|
|
600
|
+
* Parsed chunk of data that can be decoded.
|
|
601
|
+
* `null` if no data was parsed.
|
|
602
|
+
*/
|
|
603
|
+
chunkData: DataType | null;
|
|
604
|
+
/**
|
|
605
|
+
* Time information on this parsed chunk.
|
|
606
|
+
* `null` if unknown.
|
|
607
|
+
*/
|
|
387
608
|
chunkInfos: IChunkTimeInfo | null;
|
|
388
609
|
/**
|
|
389
|
-
*
|
|
610
|
+
* time offset, in seconds, to add to the absolute timed data defined in
|
|
390
611
|
* `chunkData` to obtain the "real" wanted effective time.
|
|
391
612
|
*
|
|
392
613
|
* For example:
|
|
393
|
-
* If `chunkData`
|
|
394
|
-
* `chunkOffset` equals to `4`, then the
|
|
395
|
-
* seconds (32 + 4).
|
|
614
|
+
* If `chunkData` announces (when parsed by the demuxer or decoder) that the
|
|
615
|
+
* segment begins at 32 seconds, and `chunkOffset` equals to `4`, then the
|
|
616
|
+
* segment should really begin at 36 seconds (32 + 4).
|
|
396
617
|
*
|
|
397
618
|
* Note that `chunkInfos` needs not to be offseted as it should already
|
|
398
619
|
* contain the correct time information.
|
|
399
620
|
*/
|
|
400
621
|
chunkOffset: number;
|
|
401
622
|
/**
|
|
402
|
-
*
|
|
403
|
-
*
|
|
623
|
+
* start and end windows for the segment (part of the chunk respectively
|
|
624
|
+
* before and after that time will be ignored).
|
|
625
|
+
* `undefined` when their is no such limitation.
|
|
404
626
|
*/
|
|
405
627
|
appendWindow: [
|
|
406
628
|
number | undefined,
|
|
407
629
|
number | undefined
|
|
408
630
|
];
|
|
409
|
-
/**
|
|
410
|
-
|
|
411
|
-
|
|
631
|
+
/**
|
|
632
|
+
* If set and not empty, then "events" have been encountered in this parsed
|
|
633
|
+
* chunks.
|
|
634
|
+
*/
|
|
635
|
+
inbandEvents?: IInbandEvent[] | undefined;
|
|
636
|
+
/**
|
|
637
|
+
* If set to `true`, then parsing this chunk revealed that the current
|
|
638
|
+
* Manifest instance needs to be refreshed.
|
|
639
|
+
*/
|
|
412
640
|
needsManifestRefresh?: boolean;
|
|
413
641
|
/**
|
|
414
642
|
* If set to `true`, some protection information has been found in this
|
|
@@ -423,105 +651,34 @@ export interface ISegmentParserParsedSegment<T> {
|
|
|
423
651
|
*/
|
|
424
652
|
protectionDataUpdate: boolean;
|
|
425
653
|
}
|
|
426
|
-
/**
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
*/
|
|
433
|
-
export interface ISegmentParserInitSegment<T> {
|
|
434
|
-
type: "parsed-init-segment";
|
|
435
|
-
value: ISegmentParserParsedInitSegment<T>;
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* What a segment parser returns when parsing a media segment.
|
|
439
|
-
* Those types of segment contain decodable data.
|
|
440
|
-
*/
|
|
441
|
-
export interface ISegmentParserSegment<T> {
|
|
442
|
-
type: "parsed-segment";
|
|
443
|
-
value: ISegmentParserParsedSegment<T>;
|
|
444
|
-
}
|
|
445
|
-
/** Text track segment data, once parsed. */
|
|
446
|
-
export interface ITextTrackSegmentData {
|
|
447
|
-
/** The text track data, in the format indicated in `type`. */
|
|
448
|
-
data: string;
|
|
449
|
-
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
450
|
-
type: string;
|
|
654
|
+
/** Describe data loaded through a request. */
|
|
655
|
+
export interface IRequestedData<T> {
|
|
656
|
+
/** The loaded response data. */
|
|
657
|
+
responseData: T;
|
|
658
|
+
/** Duration the request took to be performed, in seconds. */
|
|
659
|
+
requestDuration: number | undefined;
|
|
451
660
|
/**
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
*
|
|
661
|
+
* "Real" URL (post-redirection) at which the data can be loaded.
|
|
662
|
+
*
|
|
663
|
+
* Note that this doesn't always apply e.g. some data might need multiple
|
|
664
|
+
* URLs to be fetched, some other might need to fetch no URL.
|
|
665
|
+
* This property should only be set when a unique URL is sufficient to
|
|
666
|
+
* retrieve the whole data.
|
|
455
667
|
*/
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
timescale: number;
|
|
472
|
-
/** The format the data is in (example: "bif"). */
|
|
473
|
-
type: "bif";
|
|
474
|
-
}
|
|
475
|
-
interface IServerSyncInfos {
|
|
476
|
-
serverTimestamp: number;
|
|
477
|
-
clientTime: number;
|
|
478
|
-
}
|
|
479
|
-
export interface ITransportOptions {
|
|
480
|
-
aggressiveMode?: boolean;
|
|
481
|
-
checkMediaSegmentIntegrity?: boolean;
|
|
482
|
-
lowLatencyMode: boolean;
|
|
483
|
-
manifestLoader?: CustomManifestLoader;
|
|
484
|
-
manifestUpdateUrl?: string;
|
|
485
|
-
referenceDateTime?: number;
|
|
486
|
-
representationFilter?: IRepresentationFilter;
|
|
487
|
-
segmentLoader?: CustomSegmentLoader;
|
|
488
|
-
serverSyncInfos?: IServerSyncInfos;
|
|
489
|
-
supplementaryImageTracks?: ISupplementaryImageTrack[];
|
|
490
|
-
supplementaryTextTracks?: ISupplementaryTextTrack[];
|
|
491
|
-
__priv_patchLastSegmentInSidx?: boolean;
|
|
668
|
+
url?: string | undefined;
|
|
669
|
+
/**
|
|
670
|
+
* Time at which the request began in terms of `performance.now`.
|
|
671
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
672
|
+
* requests, this time corresponds to the first request made.
|
|
673
|
+
*/
|
|
674
|
+
sendingTime?: number | undefined;
|
|
675
|
+
/**
|
|
676
|
+
* Time at which the request ended in terms of `performance.now`.
|
|
677
|
+
* If fetching the corresponding data necessitated to perform multiple
|
|
678
|
+
* requests, this time corresponds to the last request to end.
|
|
679
|
+
*/
|
|
680
|
+
receivedTime?: number | undefined;
|
|
681
|
+
/** Size in bytes of the loaded data. `undefined` if we don't know. */
|
|
682
|
+
size: number | undefined;
|
|
492
683
|
}
|
|
493
|
-
export declare type CustomSegmentLoader = (args: {
|
|
494
|
-
adaptation: Adaptation;
|
|
495
|
-
representation: Representation;
|
|
496
|
-
segment: ISegment;
|
|
497
|
-
transport: string;
|
|
498
|
-
url: string;
|
|
499
|
-
manifest: Manifest;
|
|
500
|
-
}, callbacks: {
|
|
501
|
-
resolve: (rArgs: {
|
|
502
|
-
data: ArrayBuffer | Uint8Array;
|
|
503
|
-
sendingTime?: number;
|
|
504
|
-
receivingTime?: number;
|
|
505
|
-
size?: number;
|
|
506
|
-
duration?: number;
|
|
507
|
-
}) => void;
|
|
508
|
-
progress: (pArgs: {
|
|
509
|
-
duration: number;
|
|
510
|
-
size: number;
|
|
511
|
-
totalSize?: number;
|
|
512
|
-
}) => void;
|
|
513
|
-
reject: (err?: Error) => void;
|
|
514
|
-
fallback?: () => void;
|
|
515
|
-
}) => (() => void) | void;
|
|
516
|
-
export declare type CustomManifestLoader = (url: string | undefined, callbacks: {
|
|
517
|
-
resolve: (args: {
|
|
518
|
-
data: ILoadedManifest;
|
|
519
|
-
sendingTime?: number;
|
|
520
|
-
receivingTime?: number;
|
|
521
|
-
size?: number;
|
|
522
|
-
duration?: number;
|
|
523
|
-
}) => void;
|
|
524
|
-
reject: (err?: Error) => void;
|
|
525
|
-
fallback?: () => void;
|
|
526
|
-
}) => (() => void) | void;
|
|
527
684
|
export {};
|