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
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from "../../../../../manifest";
|
|
22
22
|
import { IEMSG } from "../../../../containers/isobmff";
|
|
23
23
|
import { getTimescaledRange } from "../../../utils/index_helpers";
|
|
24
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
24
25
|
import getInitSegment from "./get_init_segment";
|
|
25
26
|
import { createIndexURLs } from "./tokens";
|
|
26
27
|
|
|
@@ -36,7 +37,7 @@ export interface IListIndex {
|
|
|
36
37
|
*/
|
|
37
38
|
duration : number;
|
|
38
39
|
/** Byte range for a possible index of segments in the server. */
|
|
39
|
-
indexRange?: [number, number];
|
|
40
|
+
indexRange?: [number, number] | undefined;
|
|
40
41
|
/**
|
|
41
42
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
42
43
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -55,14 +56,14 @@ export interface IListIndex {
|
|
|
55
56
|
/** URLs to access the initialization segment. */
|
|
56
57
|
mediaURLs: string[] | null;
|
|
57
58
|
/** possible byte range to request it. */
|
|
58
|
-
range?: [number, number];
|
|
59
|
-
};
|
|
59
|
+
range?: [number, number] | undefined;
|
|
60
|
+
} | undefined;
|
|
60
61
|
/** Information on the list of segments for this index. */
|
|
61
62
|
list: Array<{
|
|
62
63
|
/** URLs of the segment. */
|
|
63
64
|
mediaURLs : string[] | null;
|
|
64
65
|
/** Possible byte-range of the segment. */
|
|
65
|
-
mediaRange? : [number, number];
|
|
66
|
+
mediaRange? : [number, number] | undefined;
|
|
66
67
|
}>;
|
|
67
68
|
/**
|
|
68
69
|
* Timescale to convert a time given here into seconds.
|
|
@@ -77,12 +78,12 @@ export interface IListIndex {
|
|
|
77
78
|
* Most of the properties here are already defined in IListIndex.
|
|
78
79
|
*/
|
|
79
80
|
export interface IListIndexIndexArgument {
|
|
80
|
-
duration? : number;
|
|
81
|
-
indexRange?: [number, number];
|
|
82
|
-
initialization?: { media? : string;
|
|
83
|
-
range? : [number, number]; };
|
|
84
|
-
list: Array<{ media? : string;
|
|
85
|
-
mediaRange? : [number, number]; }>;
|
|
81
|
+
duration? : number | undefined;
|
|
82
|
+
indexRange?: [number, number] | undefined;
|
|
83
|
+
initialization?: { media? : string | undefined;
|
|
84
|
+
range? : [number, number] | undefined; };
|
|
85
|
+
list: Array<{ media? : string | undefined;
|
|
86
|
+
mediaRange? : [number, number] | undefined; }>;
|
|
86
87
|
/**
|
|
87
88
|
* Offset present in the index to convert from the mediaTime (time declared in
|
|
88
89
|
* the media segments and in this index) to the presentationTime (time wanted
|
|
@@ -97,8 +98,8 @@ export interface IListIndexIndexArgument {
|
|
|
97
98
|
* The time given here is in the current
|
|
98
99
|
* timescale (see timescale)
|
|
99
100
|
*/
|
|
100
|
-
presentationTimeOffset? : number;
|
|
101
|
-
timescale? : number;
|
|
101
|
+
presentationTimeOffset? : number | undefined;
|
|
102
|
+
timescale? : number | undefined;
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
/** Aditional context needed by a SegmentList RepresentationIndex. */
|
|
@@ -106,11 +107,11 @@ export interface IListIndexContextArgument {
|
|
|
106
107
|
/** Start of the period concerned by this RepresentationIndex, in seconds. */
|
|
107
108
|
periodStart : number;
|
|
108
109
|
/** Base URL for the Representation concerned. */
|
|
109
|
-
representationBaseURLs :
|
|
110
|
+
representationBaseURLs : IResolvedBaseUrl[];
|
|
110
111
|
/** ID of the Representation concerned. */
|
|
111
|
-
representationId? : string;
|
|
112
|
+
representationId? : string | undefined;
|
|
112
113
|
/** Bitrate of the Representation concerned. */
|
|
113
|
-
representationBitrate? : number;
|
|
114
|
+
representationBitrate? : number | undefined;
|
|
114
115
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
115
116
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
116
117
|
}
|
|
@@ -145,8 +146,9 @@ export default class ListRepresentationIndex implements IRepresentationIndex {
|
|
|
145
146
|
const timescale = index.timescale ?? 1;
|
|
146
147
|
const indexTimeOffset = presentationTimeOffset - periodStart * timescale;
|
|
147
148
|
|
|
149
|
+
const urlSources : string[] = representationBaseURLs.map(b => b.url);
|
|
148
150
|
const list = index.list.map((lItem) => ({
|
|
149
|
-
mediaURLs: createIndexURLs(
|
|
151
|
+
mediaURLs: createIndexURLs(urlSources,
|
|
150
152
|
lItem.media,
|
|
151
153
|
representationId,
|
|
152
154
|
representationBitrate),
|
|
@@ -158,7 +160,7 @@ export default class ListRepresentationIndex implements IRepresentationIndex {
|
|
|
158
160
|
indexRange: index.indexRange,
|
|
159
161
|
initialization: index.initialization == null ?
|
|
160
162
|
undefined :
|
|
161
|
-
{ mediaURLs: createIndexURLs(
|
|
163
|
+
{ mediaURLs: createIndexURLs(urlSources,
|
|
162
164
|
index.initialization.media,
|
|
163
165
|
representationId,
|
|
164
166
|
representationBitrate),
|
|
@@ -207,6 +209,7 @@ export default class ListRepresentationIndex implements IRepresentationIndex {
|
|
|
207
209
|
end: time + durationInSeconds,
|
|
208
210
|
mediaURLs,
|
|
209
211
|
timestampOffset: -(index.indexTimeOffset / timescale),
|
|
212
|
+
complete: true,
|
|
210
213
|
privateInfos: { isEMSGWhitelisted:
|
|
211
214
|
this._isEMSGWhitelisted } };
|
|
212
215
|
segments.push(segment);
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from "../../../../../manifest";
|
|
22
22
|
import { IEMSG } from "../../../../containers/isobmff";
|
|
23
23
|
import ManifestBoundsCalculator from "../manifest_bounds_calculator";
|
|
24
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
24
25
|
import getInitSegment from "./get_init_segment";
|
|
25
26
|
import isPeriodFulfilled from "./is_period_fulfilled";
|
|
26
27
|
import {
|
|
@@ -48,14 +49,14 @@ export interface ITemplateIndex {
|
|
|
48
49
|
*/
|
|
49
50
|
timescale : number;
|
|
50
51
|
/** Byte range for a possible index of segments in the server. */
|
|
51
|
-
indexRange?: [number, number];
|
|
52
|
+
indexRange?: [number, number] | undefined;
|
|
52
53
|
/** Information on the initialization segment. */
|
|
53
54
|
initialization? : {
|
|
54
55
|
/** URLs to access the initialization segment. */
|
|
55
56
|
mediaURLs: string[] | null;
|
|
56
57
|
/** possible byte range to request it. */
|
|
57
|
-
range?: [number, number];
|
|
58
|
-
};
|
|
58
|
+
range?: [number, number] | undefined;
|
|
59
|
+
} | undefined;
|
|
59
60
|
/**
|
|
60
61
|
* URL base to access any segment.
|
|
61
62
|
* Can contain token to replace to convert it to real URLs.
|
|
@@ -90,7 +91,7 @@ export interface ITemplateIndex {
|
|
|
90
91
|
*/
|
|
91
92
|
presentationTimeOffset : number;
|
|
92
93
|
/** Number from which the first segments in this index starts with. */
|
|
93
|
-
startNumber? : number;
|
|
94
|
+
startNumber? : number | undefined;
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
/**
|
|
@@ -98,14 +99,15 @@ export interface ITemplateIndex {
|
|
|
98
99
|
* Most of the properties here are already defined in ITemplateIndex.
|
|
99
100
|
*/
|
|
100
101
|
export interface ITemplateIndexIndexArgument {
|
|
101
|
-
duration? : number;
|
|
102
|
-
indexRange?: [number, number];
|
|
103
|
-
initialization?: { media? : string;
|
|
104
|
-
range? : [number, number]; }
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
duration? : number | undefined;
|
|
103
|
+
indexRange?: [number, number] | undefined;
|
|
104
|
+
initialization?: { media? : string | undefined;
|
|
105
|
+
range? : [number, number] | undefined; } |
|
|
106
|
+
undefined;
|
|
107
|
+
media? : string | undefined;
|
|
108
|
+
presentationTimeOffset? : number | undefined;
|
|
109
|
+
startNumber? : number | undefined;
|
|
110
|
+
timescale? : number | undefined;
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
/** Aditional context needed by a SegmentTemplate RepresentationIndex. */
|
|
@@ -122,11 +124,11 @@ export interface ITemplateIndexContextArgument {
|
|
|
122
124
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
123
125
|
isDynamic : boolean;
|
|
124
126
|
/** Base URL for the Representation concerned. */
|
|
125
|
-
representationBaseURLs :
|
|
127
|
+
representationBaseURLs : IResolvedBaseUrl[];
|
|
126
128
|
/** ID of the Representation concerned. */
|
|
127
|
-
representationId? : string;
|
|
129
|
+
representationId? : string | undefined;
|
|
128
130
|
/** Bitrate of the Representation concerned. */
|
|
129
|
-
representationBitrate? : number;
|
|
131
|
+
representationBitrate? : number | undefined;
|
|
130
132
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
131
133
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
132
134
|
}
|
|
@@ -149,9 +151,9 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
149
151
|
/** Absolute start of the Period, in seconds. */
|
|
150
152
|
private _periodStart : number;
|
|
151
153
|
/** Difference between the end time of the Period and its start time, in timescale. */
|
|
152
|
-
private _scaledPeriodEnd
|
|
154
|
+
private _scaledPeriodEnd : number | undefined;
|
|
153
155
|
/** Minimum availabilityTimeOffset concerning the segments of this Representation. */
|
|
154
|
-
private _availabilityTimeOffset
|
|
156
|
+
private _availabilityTimeOffset : number | undefined;
|
|
155
157
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
156
158
|
private _isDynamic : boolean;
|
|
157
159
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
@@ -177,7 +179,12 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
177
179
|
isEMSGWhitelisted } = context;
|
|
178
180
|
const timescale = index.timescale ?? 1;
|
|
179
181
|
|
|
180
|
-
|
|
182
|
+
const minBaseUrlAto = representationBaseURLs.length === 0 ?
|
|
183
|
+
0 :
|
|
184
|
+
representationBaseURLs.reduce((acc, rbu) => {
|
|
185
|
+
return Math.min(acc, rbu.availabilityTimeOffset);
|
|
186
|
+
}, Infinity);
|
|
187
|
+
this._availabilityTimeOffset = availabilityTimeOffset + minBaseUrlAto;
|
|
181
188
|
|
|
182
189
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
183
190
|
this._aggressiveMode = aggressiveMode;
|
|
@@ -192,18 +199,19 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
192
199
|
throw new Error("Invalid SegmentTemplate: no duration");
|
|
193
200
|
}
|
|
194
201
|
|
|
202
|
+
const urlSources : string[] = representationBaseURLs.map(b => b.url);
|
|
195
203
|
this._index = { duration: index.duration,
|
|
196
204
|
timescale,
|
|
197
205
|
indexRange: index.indexRange,
|
|
198
206
|
indexTimeOffset,
|
|
199
207
|
initialization: index.initialization == null ?
|
|
200
208
|
undefined :
|
|
201
|
-
{ mediaURLs: createIndexURLs(
|
|
209
|
+
{ mediaURLs: createIndexURLs(urlSources,
|
|
202
210
|
index.initialization.media,
|
|
203
211
|
representationId,
|
|
204
212
|
representationBitrate),
|
|
205
213
|
range: index.initialization.range },
|
|
206
|
-
mediaURLs: createIndexURLs(
|
|
214
|
+
mediaURLs: createIndexURLs(urlSources,
|
|
207
215
|
index.media,
|
|
208
216
|
representationId,
|
|
209
217
|
representationBitrate),
|
|
@@ -257,8 +265,7 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
257
265
|
const segments : ISegment[] = [];
|
|
258
266
|
|
|
259
267
|
// number corresponding to the Period's start
|
|
260
|
-
const numberOffset = startNumber
|
|
261
|
-
startNumber;
|
|
268
|
+
const numberOffset = startNumber ?? 1;
|
|
262
269
|
|
|
263
270
|
// calcul initial time from Period start, where the first segment would have
|
|
264
271
|
// the `0` number
|
|
@@ -293,6 +300,7 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
293
300
|
scaledDuration: realDuration / timescale,
|
|
294
301
|
mediaURLs: detokenizedURLs,
|
|
295
302
|
timestampOffset: -(index.indexTimeOffset / timescale),
|
|
303
|
+
complete: true,
|
|
296
304
|
privateInfos: {
|
|
297
305
|
isEMSGWhitelisted: this._isEMSGWhitelisted,
|
|
298
306
|
} };
|
package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import log from "../../../../../../log";
|
|
18
|
+
import isNullOrUndefined from "../../../../../../utils/is_null_or_undefined";
|
|
18
19
|
import { IIndexSegment } from "../../../../utils/index_helpers";
|
|
19
20
|
|
|
20
21
|
/**
|
|
@@ -40,23 +41,23 @@ export default function convertElementsToIndexSegment(
|
|
|
40
41
|
let start = item.start;
|
|
41
42
|
let duration = item.duration;
|
|
42
43
|
const repeatCount = item.repeatCount;
|
|
43
|
-
if (start
|
|
44
|
-
if (previousItem
|
|
44
|
+
if (start === undefined) {
|
|
45
|
+
if (previousItem === null) {
|
|
45
46
|
start = timelineStart;
|
|
46
|
-
} else if (previousItem.duration
|
|
47
|
+
} else if (!isNullOrUndefined(previousItem.duration)) {
|
|
47
48
|
start = previousItem.start +
|
|
48
49
|
(previousItem.duration * (previousItem.repeatCount + 1));
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
if ((duration
|
|
52
|
-
nextItem
|
|
53
|
-
start
|
|
52
|
+
if ((duration === undefined || isNaN(duration)) &&
|
|
53
|
+
nextItem !== null && nextItem.start !== undefined && !isNaN(nextItem.start) &&
|
|
54
|
+
start !== undefined && !isNaN(start)
|
|
54
55
|
) {
|
|
55
56
|
duration = nextItem.start - start;
|
|
56
57
|
}
|
|
57
|
-
if ((start
|
|
58
|
-
(duration
|
|
59
|
-
(repeatCount
|
|
58
|
+
if ((start !== undefined && !isNaN(start)) &&
|
|
59
|
+
(duration !== undefined && !isNaN(duration)) &&
|
|
60
|
+
(repeatCount === undefined || !isNaN(repeatCount))
|
|
60
61
|
) {
|
|
61
62
|
return { start,
|
|
62
63
|
duration,
|
|
@@ -38,6 +38,7 @@ import isSegmentStillAvailable from "../../../../utils/is_segment_still_availabl
|
|
|
38
38
|
import updateSegmentTimeline from "../../../../utils/update_segment_timeline";
|
|
39
39
|
import { ISegmentTimelineElement } from "../../../node_parser_types";
|
|
40
40
|
import ManifestBoundsCalculator from "../../manifest_bounds_calculator";
|
|
41
|
+
import { IResolvedBaseUrl } from "../../resolve_base_urls";
|
|
41
42
|
import getInitSegment from "../get_init_segment";
|
|
42
43
|
import getSegmentsFromTimeline from "../get_segments_from_timeline";
|
|
43
44
|
import isPeriodFulfilled from "../is_period_fulfilled";
|
|
@@ -54,8 +55,10 @@ const { MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY } = config;
|
|
|
54
55
|
* given media time.
|
|
55
56
|
*/
|
|
56
57
|
export interface ITimelineIndex {
|
|
58
|
+
/** If `false`, the last segment anounced might be still incomplete. */
|
|
59
|
+
availabilityTimeComplete : boolean;
|
|
57
60
|
/** Byte range for a possible index of segments in the server. */
|
|
58
|
-
indexRange?: [number, number];
|
|
61
|
+
indexRange?: [number, number] | undefined;
|
|
59
62
|
/**
|
|
60
63
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
61
64
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -74,15 +77,15 @@ export interface ITimelineIndex {
|
|
|
74
77
|
/** URLs to access the initialization segment. */
|
|
75
78
|
mediaURLs: string[] | null;
|
|
76
79
|
/** possible byte range to request it. */
|
|
77
|
-
range?: [number, number];
|
|
78
|
-
};
|
|
80
|
+
range?: [number, number] | undefined;
|
|
81
|
+
} | undefined;
|
|
79
82
|
/**
|
|
80
83
|
* Base URL(s) to access any segment. Can contain tokens to replace to convert
|
|
81
84
|
* it to real URLs.
|
|
82
85
|
*/
|
|
83
86
|
mediaURLs : string[] | null ;
|
|
84
87
|
/** Number from which the first segments in this index starts with. */
|
|
85
|
-
startNumber? : number;
|
|
88
|
+
startNumber? : number | undefined;
|
|
86
89
|
/**
|
|
87
90
|
* Every segments defined in this index.
|
|
88
91
|
* `null` at the beginning as this property is parsed lazily (only when first
|
|
@@ -114,11 +117,13 @@ export interface ITimelineIndex {
|
|
|
114
117
|
* Most of the properties here are already defined in ITimelineIndex.
|
|
115
118
|
*/
|
|
116
119
|
export interface ITimelineIndexIndexArgument {
|
|
117
|
-
indexRange?: [number, number];
|
|
118
|
-
initialization? : { media? : string
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
indexRange?: [number, number] | undefined;
|
|
121
|
+
initialization? : { media? : string | undefined;
|
|
122
|
+
range?: [number, number] | undefined; } |
|
|
123
|
+
undefined;
|
|
124
|
+
media? : string | undefined;
|
|
125
|
+
startNumber? : number | undefined;
|
|
126
|
+
timescale? : number | undefined;
|
|
122
127
|
/**
|
|
123
128
|
* Offset present in the index to convert from the mediaTime (time declared in
|
|
124
129
|
* the media segments and in this index) to the presentationTime (time wanted
|
|
@@ -133,19 +138,21 @@ export interface ITimelineIndexIndexArgument {
|
|
|
133
138
|
* The time given here is in the current
|
|
134
139
|
* timescale (see timescale)
|
|
135
140
|
*/
|
|
136
|
-
presentationTimeOffset? : number;
|
|
141
|
+
presentationTimeOffset? : number | undefined;
|
|
137
142
|
|
|
138
|
-
timelineParser? : () => HTMLCollection;
|
|
139
|
-
timeline? : ISegmentTimelineElement[];
|
|
143
|
+
timelineParser? : (() => HTMLCollection) | undefined;
|
|
144
|
+
timeline? : ISegmentTimelineElement[] | undefined;
|
|
140
145
|
}
|
|
141
146
|
|
|
142
147
|
/** Aditional context needed by a SegmentTimeline RepresentationIndex. */
|
|
143
148
|
export interface ITimelineIndexContextArgument {
|
|
149
|
+
/** If `false`, the last segment anounced might be still incomplete. */
|
|
150
|
+
availabilityTimeComplete : boolean;
|
|
144
151
|
/** Allows to obtain the minimum and maximum positions of a content. */
|
|
145
152
|
manifestBoundsCalculator : ManifestBoundsCalculator;
|
|
146
|
-
/** Start of the period
|
|
153
|
+
/** Start of the period linked to this RepresentationIndex, in seconds. */
|
|
147
154
|
periodStart : number;
|
|
148
|
-
/** End of the period
|
|
155
|
+
/** End of the period linked to this RepresentationIndex, in seconds. */
|
|
149
156
|
periodEnd : number|undefined;
|
|
150
157
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
151
158
|
isDynamic : boolean;
|
|
@@ -153,13 +160,13 @@ export interface ITimelineIndexContextArgument {
|
|
|
153
160
|
* Time (in terms of `performance.now`) at which the XML file containing this
|
|
154
161
|
* index was received
|
|
155
162
|
*/
|
|
156
|
-
receivedTime? : number;
|
|
163
|
+
receivedTime? : number | undefined;
|
|
157
164
|
/** Base URL for the Representation concerned. */
|
|
158
|
-
representationBaseURLs :
|
|
165
|
+
representationBaseURLs : IResolvedBaseUrl[];
|
|
159
166
|
/** ID of the Representation concerned. */
|
|
160
|
-
representationId? : string;
|
|
167
|
+
representationId? : string | undefined;
|
|
161
168
|
/** Bitrate of the Representation concerned. */
|
|
162
|
-
representationBitrate? : number;
|
|
169
|
+
representationBitrate? : number | undefined;
|
|
163
170
|
/**
|
|
164
171
|
* The parser should take this previous version of the
|
|
165
172
|
* `TimelineRepresentationIndex` - which was from the same Representation
|
|
@@ -169,13 +176,18 @@ export interface ITimelineIndexContextArgument {
|
|
|
169
176
|
* Use with moderation.
|
|
170
177
|
*/
|
|
171
178
|
unsafelyBaseOnPreviousRepresentation : Representation | null;
|
|
172
|
-
|
|
179
|
+
/** Function that tells if an EMSG is whitelisted by the manifest */
|
|
173
180
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Set to `true` if the linked Period is the chronologically last one in the
|
|
183
|
+
* Manifest.
|
|
184
|
+
*/
|
|
185
|
+
isLastPeriod : boolean;
|
|
174
186
|
}
|
|
175
187
|
|
|
176
188
|
export interface ILastSegmentInformation {
|
|
177
189
|
/** End of the timeline on `time`, timescaled. */
|
|
178
|
-
lastPosition? : number;
|
|
190
|
+
lastPosition? : number | undefined;
|
|
179
191
|
|
|
180
192
|
/** Defines the time at which `lastPosition` was last calculated. */
|
|
181
193
|
time : number;
|
|
@@ -219,6 +231,9 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
219
231
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
220
232
|
private _isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
221
233
|
|
|
234
|
+
/** `true` if the linked Period is the chronologically last one in the Manifest. */
|
|
235
|
+
private _isLastPeriod: boolean;
|
|
236
|
+
|
|
222
237
|
/**
|
|
223
238
|
* @param {Object} index
|
|
224
239
|
* @param {Object} context
|
|
@@ -231,8 +246,10 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
231
246
|
throw new Error("The given index is not compatible with a " +
|
|
232
247
|
"TimelineRepresentationIndex.");
|
|
233
248
|
}
|
|
234
|
-
const {
|
|
249
|
+
const { availabilityTimeComplete,
|
|
250
|
+
manifestBoundsCalculator,
|
|
235
251
|
isDynamic,
|
|
252
|
+
isLastPeriod,
|
|
236
253
|
representationBaseURLs,
|
|
237
254
|
representationId,
|
|
238
255
|
representationBitrate,
|
|
@@ -251,6 +268,7 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
251
268
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
252
269
|
|
|
253
270
|
this._isEMSGWhitelisted = isEMSGWhitelisted;
|
|
271
|
+
this._isLastPeriod = isLastPeriod;
|
|
254
272
|
this._lastUpdate = context.receivedTime == null ?
|
|
255
273
|
performance.now() :
|
|
256
274
|
context.receivedTime;
|
|
@@ -269,18 +287,20 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
269
287
|
|
|
270
288
|
this._isDynamic = isDynamic;
|
|
271
289
|
this._parseTimeline = index.timelineParser ?? null;
|
|
272
|
-
|
|
290
|
+
const urlSources : string[] = representationBaseURLs.map(b => b.url);
|
|
291
|
+
this._index = { availabilityTimeComplete,
|
|
292
|
+
indexRange: index.indexRange,
|
|
273
293
|
indexTimeOffset,
|
|
274
294
|
initialization: index.initialization == null ?
|
|
275
295
|
undefined :
|
|
276
296
|
{
|
|
277
|
-
mediaURLs: createIndexURLs(
|
|
297
|
+
mediaURLs: createIndexURLs(urlSources,
|
|
278
298
|
index.initialization.media,
|
|
279
299
|
representationId,
|
|
280
300
|
representationBitrate),
|
|
281
301
|
range: index.initialization.range,
|
|
282
302
|
},
|
|
283
|
-
mediaURLs: createIndexURLs(
|
|
303
|
+
mediaURLs: createIndexURLs(urlSources,
|
|
284
304
|
index.media,
|
|
285
305
|
representationId,
|
|
286
306
|
representationBitrate),
|
|
@@ -446,6 +466,7 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
446
466
|
this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
|
|
447
467
|
this._lastUpdate = newIndex._lastUpdate;
|
|
448
468
|
this._manifestBoundsCalculator = newIndex._manifestBoundsCalculator;
|
|
469
|
+
this._isLastPeriod = newIndex._isLastPeriod;
|
|
449
470
|
}
|
|
450
471
|
|
|
451
472
|
/**
|
|
@@ -460,11 +481,16 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
460
481
|
if (newIndex._index.timeline === null) {
|
|
461
482
|
newIndex._index.timeline = newIndex._getTimeline();
|
|
462
483
|
}
|
|
463
|
-
updateSegmentTimeline(this._index.timeline,
|
|
484
|
+
const hasReplaced = updateSegmentTimeline(this._index.timeline,
|
|
485
|
+
newIndex._index.timeline);
|
|
486
|
+
if (hasReplaced) {
|
|
487
|
+
this._index.startNumber = newIndex._index.startNumber;
|
|
488
|
+
}
|
|
464
489
|
this._isDynamic = newIndex._isDynamic;
|
|
465
490
|
this._scaledPeriodStart = newIndex._scaledPeriodStart;
|
|
466
491
|
this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
|
|
467
492
|
this._lastUpdate = newIndex._lastUpdate;
|
|
493
|
+
this._isLastPeriod = newIndex._isLastPeriod;
|
|
468
494
|
}
|
|
469
495
|
|
|
470
496
|
/**
|
|
@@ -474,7 +500,13 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
474
500
|
* @returns {Boolean}
|
|
475
501
|
*/
|
|
476
502
|
isFinished() : boolean {
|
|
477
|
-
if (!this._isDynamic) {
|
|
503
|
+
if (!this._isDynamic || !this._isLastPeriod) {
|
|
504
|
+
// Either the content is not dynamic, in which case no new segment will
|
|
505
|
+
// be generated, either it is but this index is not linked to the current
|
|
506
|
+
// last Period in the MPD, in which case it is inferred that it has been
|
|
507
|
+
// completely generated. Note that this second condition might break very
|
|
508
|
+
// very rare use cases where old Periods are still being generated, yet it
|
|
509
|
+
// should fix more cases than it breaks.
|
|
478
510
|
return true;
|
|
479
511
|
}
|
|
480
512
|
|
|
@@ -523,7 +555,11 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
523
555
|
return; // we don't know yet
|
|
524
556
|
}
|
|
525
557
|
const scaledFirstPosition = toIndexTime(firstPosition, this._index);
|
|
526
|
-
clearTimelineFromPosition(this._index.timeline,
|
|
558
|
+
const nbEltsRemoved = clearTimelineFromPosition(this._index.timeline,
|
|
559
|
+
scaledFirstPosition);
|
|
560
|
+
if (this._index.startNumber !== undefined) {
|
|
561
|
+
this._index.startNumber += nbEltsRemoved;
|
|
562
|
+
}
|
|
527
563
|
}
|
|
528
564
|
|
|
529
565
|
static getIndexEnd(timeline : IIndexSegment[],
|
|
@@ -47,7 +47,7 @@ function processFormatedToken(
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
* @param {string}
|
|
50
|
+
* @param {string} baseURLs
|
|
51
51
|
* @param {string|undefined} media
|
|
52
52
|
* @param {string|undefined} id
|
|
53
53
|
* @param {number|undefined} bitrate
|
|
@@ -89,7 +89,7 @@ export function replaceRepresentationDASHTokens(
|
|
|
89
89
|
return path
|
|
90
90
|
.replace(/\$\$/g, "$")
|
|
91
91
|
.replace(/\$RepresentationID\$/g, String(id))
|
|
92
|
-
.replace(/\$Bandwidth(
|
|
92
|
+
.replace(/\$Bandwidth(\%0(\d+)d)?\$/g,
|
|
93
93
|
processFormatedToken(bitrate === undefined ? 0 :
|
|
94
94
|
bitrate));
|
|
95
95
|
}
|
|
@@ -121,13 +121,13 @@ export function createDashUrlDetokenizer(
|
|
|
121
121
|
} else {
|
|
122
122
|
return url
|
|
123
123
|
.replace(/\$\$/g, "$")
|
|
124
|
-
.replace(/\$Number(
|
|
124
|
+
.replace(/\$Number(\%0(\d+)d)?\$/g, (_x, _y, widthStr : string) => {
|
|
125
125
|
if (nb === undefined) {
|
|
126
126
|
throw new Error("Segment number not defined in a $Number$ scheme");
|
|
127
127
|
}
|
|
128
128
|
return processFormatedToken(nb)(_x, _y, widthStr);
|
|
129
129
|
})
|
|
130
|
-
.replace(/\$Time(
|
|
130
|
+
.replace(/\$Time(\%0(\d+)d)?\$/g, (_x, _y, widthStr : string) => {
|
|
131
131
|
if (time === undefined) {
|
|
132
132
|
throw new Error("Segment time not defined in a $Time$ scheme");
|
|
133
133
|
}
|
|
@@ -30,8 +30,8 @@ const SUPPORTED_TEXT_TYPES = ["subtitle", "caption"];
|
|
|
30
30
|
|
|
31
31
|
/** Structure of a parsed "scheme-like" element in the MPD. */
|
|
32
32
|
interface IScheme {
|
|
33
|
-
schemeIdUri? : string;
|
|
34
|
-
value? : string;
|
|
33
|
+
schemeIdUri? : string | undefined;
|
|
34
|
+
value? : string | undefined;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
@@ -47,7 +47,7 @@ export default class ManifestBoundsCalculator {
|
|
|
47
47
|
/**
|
|
48
48
|
* @param {Object} args
|
|
49
49
|
*/
|
|
50
|
-
constructor(args : { timeShiftBufferDepth
|
|
50
|
+
constructor(args : { timeShiftBufferDepth : number | undefined;
|
|
51
51
|
isDynamic : boolean; }
|
|
52
52
|
) {
|
|
53
53
|
this._isDynamic = args.isDynamic;
|