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
|
@@ -28,11 +28,11 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
28
28
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
29
|
};
|
|
30
30
|
})();
|
|
31
|
-
import { fromEvent, interval, Observable, Subject, } from "rxjs";
|
|
32
|
-
import { takeUntil, tap, } from "rxjs/operators";
|
|
31
|
+
import { fromEvent, interval, Observable, Subject, takeUntil, tap, } from "rxjs";
|
|
33
32
|
import { tryToChangeSourceBufferType, } from "../../../../compat";
|
|
34
33
|
import config from "../../../../config";
|
|
35
34
|
import log from "../../../../log";
|
|
35
|
+
import { getLoggableSegmentId } from "../../../../manifest";
|
|
36
36
|
import areArraysOfNumbersEqual from "../../../../utils/are_arrays_of_numbers_equal";
|
|
37
37
|
import assertUnreachable from "../../../../utils/assert_unreachable";
|
|
38
38
|
import { toUint8Array } from "../../../../utils/byte_parsing";
|
|
@@ -107,7 +107,8 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
107
107
|
* @returns {Observable}
|
|
108
108
|
*/
|
|
109
109
|
AudioVideoSegmentBuffer.prototype.pushChunk = function (infos) {
|
|
110
|
-
|
|
110
|
+
assertPushedDataIsBufferSource(infos);
|
|
111
|
+
log.debug("AVSB: receiving order to push data to the SourceBuffer", this.bufferType, getLoggableSegmentId(infos.inventoryInfos));
|
|
111
112
|
return this._addToQueue({ type: SegmentBufferOperation.Push,
|
|
112
113
|
value: infos });
|
|
113
114
|
};
|
|
@@ -132,7 +133,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
132
133
|
* @returns {Observable}
|
|
133
134
|
*/
|
|
134
135
|
AudioVideoSegmentBuffer.prototype.endOfSegment = function (infos) {
|
|
135
|
-
log.debug("AVSB: receiving order for validating end of segment", this.bufferType, infos
|
|
136
|
+
log.debug("AVSB: receiving order for validating end of segment", this.bufferType, getLoggableSegmentId(infos));
|
|
136
137
|
return this._addToQueue({ type: SegmentBufferOperation.EndOfSegment,
|
|
137
138
|
value: infos });
|
|
138
139
|
};
|
|
@@ -151,7 +152,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
151
152
|
*/
|
|
152
153
|
AudioVideoSegmentBuffer.prototype.getPendingOperations = function () {
|
|
153
154
|
var parseQueuedOperation = function (op) {
|
|
154
|
-
// Had to be written that way for
|
|
155
|
+
// Had to be written that way for TypeScript
|
|
155
156
|
switch (op.type) {
|
|
156
157
|
case SegmentBufferOperation.Push:
|
|
157
158
|
return { type: op.type, value: op.value };
|
|
@@ -191,7 +192,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
191
192
|
this._sourceBuffer.abort();
|
|
192
193
|
}
|
|
193
194
|
catch (e) {
|
|
194
|
-
log.warn("AVSB: Failed to abort a "
|
|
195
|
+
log.warn("AVSB: Failed to abort a ".concat(this.bufferType, " SourceBuffer:"), e);
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
198
|
};
|
|
@@ -263,7 +264,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
263
264
|
}
|
|
264
265
|
break;
|
|
265
266
|
case SegmentBufferOperation.EndOfSegment:
|
|
266
|
-
this._segmentInventory.completeSegment(task.value);
|
|
267
|
+
this._segmentInventory.completeSegment(task.value, this.getBufferedRanges());
|
|
267
268
|
break;
|
|
268
269
|
case SegmentBufferOperation.Remove:
|
|
269
270
|
this.synchronizeInventory();
|
|
@@ -311,7 +312,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
311
312
|
switch (this._pendingTask.type) {
|
|
312
313
|
case SegmentBufferOperation.EndOfSegment:
|
|
313
314
|
// nothing to do, we will just acknowledge the segment.
|
|
314
|
-
log.debug("AVSB: Acknowledging complete segment", this._pendingTask.value);
|
|
315
|
+
log.debug("AVSB: Acknowledging complete segment", getLoggableSegmentId(this._pendingTask.value));
|
|
315
316
|
this._flush();
|
|
316
317
|
return;
|
|
317
318
|
case SegmentBufferOperation.Push:
|
|
@@ -320,6 +321,7 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
320
321
|
this._flush();
|
|
321
322
|
return;
|
|
322
323
|
}
|
|
324
|
+
log.debug("AVSB: pushing segment", this.bufferType, getLoggableSegmentId(this._pendingTask.inventoryData));
|
|
323
325
|
this._sourceBuffer.appendBuffer(segmentData);
|
|
324
326
|
break;
|
|
325
327
|
case SegmentBufferOperation.Remove:
|
|
@@ -426,3 +428,25 @@ var AudioVideoSegmentBuffer = /** @class */ (function (_super) {
|
|
|
426
428
|
return AudioVideoSegmentBuffer;
|
|
427
429
|
}(SegmentBuffer));
|
|
428
430
|
export default AudioVideoSegmentBuffer;
|
|
431
|
+
/**
|
|
432
|
+
* Throw if the given input is not in the expected format.
|
|
433
|
+
* Allows to enforce runtime type-checking as compile-time type-checking here is
|
|
434
|
+
* difficult to enforce.
|
|
435
|
+
* @param {Object} pushedData
|
|
436
|
+
*/
|
|
437
|
+
function assertPushedDataIsBufferSource(pushedData) {
|
|
438
|
+
if (0 /* CURRENT_ENV */ === 0 /* PRODUCTION */) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
var _a = pushedData.data, chunk = _a.chunk, initSegment = _a.initSegment;
|
|
442
|
+
if (typeof chunk !== "object" ||
|
|
443
|
+
typeof initSegment !== "object" ||
|
|
444
|
+
(chunk !== null &&
|
|
445
|
+
!(chunk instanceof ArrayBuffer) &&
|
|
446
|
+
!(chunk.buffer instanceof ArrayBuffer)) ||
|
|
447
|
+
(initSegment !== null &&
|
|
448
|
+
!(initSegment instanceof ArrayBuffer) &&
|
|
449
|
+
!(initSegment.buffer instanceof ArrayBuffer))) {
|
|
450
|
+
throw new Error("Invalid data given to the AudioVideoSegmentBuffer");
|
|
451
|
+
}
|
|
452
|
+
}
|
package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts
CHANGED
|
@@ -17,31 +17,18 @@ import { Observable } from "rxjs";
|
|
|
17
17
|
import { IBifThumbnail } from "../../../../parsers/images/bif";
|
|
18
18
|
import { IEndOfSegmentInfos, IPushChunkInfos, SegmentBuffer } from "../types";
|
|
19
19
|
import ManualTimeRanges from "../utils/manual_time_ranges";
|
|
20
|
-
/** Format of the data pushed to the `ImageSegmentBuffer`. */
|
|
21
|
-
export interface IImageTrackSegmentData {
|
|
22
|
-
/** Image track data, in the given type */
|
|
23
|
-
data: IBifThumbnail[];
|
|
24
|
-
/** The type of the data (example: "bif") */
|
|
25
|
-
type: string;
|
|
26
|
-
/** End time until which the segment apply */
|
|
27
|
-
end: number;
|
|
28
|
-
/** Start time from which the segment apply */
|
|
29
|
-
start: number;
|
|
30
|
-
/** Timescale to convert the start and end into seconds */
|
|
31
|
-
timescale: number;
|
|
32
|
-
}
|
|
33
20
|
/**
|
|
34
21
|
* Image SegmentBuffer implementation.
|
|
35
22
|
* @class ImageSegmentBuffer
|
|
36
23
|
*/
|
|
37
|
-
export default class ImageSegmentBuffer extends SegmentBuffer
|
|
24
|
+
export default class ImageSegmentBuffer extends SegmentBuffer {
|
|
38
25
|
readonly bufferType: "image";
|
|
39
26
|
private _buffered;
|
|
40
27
|
constructor();
|
|
41
28
|
/**
|
|
42
29
|
* @param {Object} data
|
|
43
30
|
*/
|
|
44
|
-
pushChunk(infos: IPushChunkInfos<
|
|
31
|
+
pushChunk(infos: IPushChunkInfos<unknown>): Observable<void>;
|
|
45
32
|
/**
|
|
46
33
|
* @param {Number} from
|
|
47
34
|
* @param {Number} to
|
|
@@ -64,3 +51,16 @@ export default class ImageSegmentBuffer extends SegmentBuffer<IImageTrackSegment
|
|
|
64
51
|
getBufferedRanges(): ManualTimeRanges;
|
|
65
52
|
dispose(): void;
|
|
66
53
|
}
|
|
54
|
+
/** Format of the data pushed to the `ImageSegmentBuffer`. */
|
|
55
|
+
export interface IImageTrackSegmentData {
|
|
56
|
+
/** Image track data, in the given type */
|
|
57
|
+
data: IBifThumbnail[];
|
|
58
|
+
/** The type of the data (example: "bif") */
|
|
59
|
+
type: string;
|
|
60
|
+
/** End time until which the segment apply */
|
|
61
|
+
end: number;
|
|
62
|
+
/** Start time from which the segment apply */
|
|
63
|
+
start: number;
|
|
64
|
+
/** Timescale to convert the start and end into seconds */
|
|
65
|
+
timescale: number;
|
|
66
|
+
}
|
package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js
CHANGED
|
@@ -58,7 +58,9 @@ var ImageSegmentBuffer = /** @class */ (function (_super) {
|
|
|
58
58
|
return observableOf(undefined);
|
|
59
59
|
}
|
|
60
60
|
var _c = infos.data, appendWindow = _c.appendWindow, chunk = _c.chunk;
|
|
61
|
-
|
|
61
|
+
// The following check is ugly. I don't care, the image buffer is there
|
|
62
|
+
// due to an ugly deprecated API that will soon disappear
|
|
63
|
+
var _d = chunk, start = _d.start, end = _d.end, timescale = _d.timescale;
|
|
62
64
|
var appendWindowStart = (_a = appendWindow[0]) !== null && _a !== void 0 ? _a : 0;
|
|
63
65
|
var appendWindowEnd = (_b = appendWindow[1]) !== null && _b !== void 0 ? _b : Infinity;
|
|
64
66
|
var timescaledStart = start / timescale;
|
|
@@ -101,7 +103,7 @@ var ImageSegmentBuffer = /** @class */ (function (_super) {
|
|
|
101
103
|
ImageSegmentBuffer.prototype.endOfSegment = function (_infos) {
|
|
102
104
|
var _this = this;
|
|
103
105
|
return observableDefer(function () {
|
|
104
|
-
_this._segmentInventory.completeSegment(_infos);
|
|
106
|
+
_this._segmentInventory.completeSegment(_infos, _this._buffered);
|
|
105
107
|
return observableOf(undefined);
|
|
106
108
|
});
|
|
107
109
|
};
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
|
-
import { ITextTrackSegmentData } from "../../../../../transports";
|
|
18
17
|
import { IEndOfSegmentInfos, IPushChunkInfos, SegmentBuffer } from "../../types";
|
|
19
18
|
import ManualTimeRanges from "../../utils/manual_time_ranges";
|
|
20
19
|
/**
|
|
@@ -22,7 +21,7 @@ import ManualTimeRanges from "../../utils/manual_time_ranges";
|
|
|
22
21
|
* HTML element.
|
|
23
22
|
* @class HTMLTextSegmentBuffer
|
|
24
23
|
*/
|
|
25
|
-
export default class HTMLTextSegmentBuffer extends SegmentBuffer
|
|
24
|
+
export default class HTMLTextSegmentBuffer extends SegmentBuffer {
|
|
26
25
|
readonly bufferType: "text";
|
|
27
26
|
/**
|
|
28
27
|
* The video element the cues refer to.
|
|
@@ -58,7 +57,7 @@ export default class HTMLTextSegmentBuffer extends SegmentBuffer<ITextTrackSegme
|
|
|
58
57
|
* @param {Object} infos
|
|
59
58
|
* @returns {Observable}
|
|
60
59
|
*/
|
|
61
|
-
pushChunk(infos: IPushChunkInfos<
|
|
60
|
+
pushChunk(infos: IPushChunkInfos<unknown>): Observable<void>;
|
|
62
61
|
/**
|
|
63
62
|
* Remove buffered data.
|
|
64
63
|
* @param {number} start - start position, in seconds
|
|
@@ -97,7 +96,7 @@ export default class HTMLTextSegmentBuffer extends SegmentBuffer<ITextTrackSegme
|
|
|
97
96
|
* @param {Object} data
|
|
98
97
|
* @returns {boolean}
|
|
99
98
|
*/
|
|
100
|
-
pushChunkSync(infos: IPushChunkInfos<
|
|
99
|
+
pushChunkSync(infos: IPushChunkInfos<unknown>): void;
|
|
101
100
|
/**
|
|
102
101
|
* Remove buffer data between the given start and end, synchronously.
|
|
103
102
|
* @param {number} start
|
|
@@ -114,3 +113,20 @@ export default class HTMLTextSegmentBuffer extends SegmentBuffer<ITextTrackSegme
|
|
|
114
113
|
*/
|
|
115
114
|
private _displayCues;
|
|
116
115
|
}
|
|
116
|
+
/** Data of chunks that should be pushed to the NativeTextSegmentBuffer. */
|
|
117
|
+
export interface INativeTextTracksBufferSegmentData {
|
|
118
|
+
/** The text track data, in the format indicated in `type`. */
|
|
119
|
+
data: string;
|
|
120
|
+
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
121
|
+
type: string;
|
|
122
|
+
/**
|
|
123
|
+
* Language in which the text track is, as a language code.
|
|
124
|
+
* This is mostly needed for "sami" subtitles, to know which cues can / should
|
|
125
|
+
* be parsed.
|
|
126
|
+
*/
|
|
127
|
+
language?: string | undefined;
|
|
128
|
+
/** start time from which the segment apply, in seconds. */
|
|
129
|
+
start?: number | undefined;
|
|
130
|
+
/** end time until which the segment apply, in seconds. */
|
|
131
|
+
end?: number | undefined;
|
|
132
|
+
}
|
|
@@ -28,8 +28,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
28
28
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
29
|
};
|
|
30
30
|
})();
|
|
31
|
-
import { concat as observableConcat, defer as observableDefer, interval as observableInterval, merge as observableMerge, of as observableOf, Subject, } from "rxjs";
|
|
32
|
-
import { mapTo, startWith, switchMapTo, takeUntil, } from "rxjs/operators";
|
|
31
|
+
import { concat as observableConcat, defer as observableDefer, interval as observableInterval, map, merge as observableMerge, of as observableOf, startWith, Subject, switchMap, takeUntil, } from "rxjs";
|
|
33
32
|
import { events, onHeightWidthChange, } from "../../../../../compat";
|
|
34
33
|
import config from "../../../../../config";
|
|
35
34
|
import log from "../../../../../log";
|
|
@@ -41,18 +40,18 @@ import updateProportionalElements from "./update_proportional_elements";
|
|
|
41
40
|
var onEnded$ = events.onEnded$, onSeeked$ = events.onSeeked$, onSeeking$ = events.onSeeking$;
|
|
42
41
|
var MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL = config.MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL, TEXT_TRACK_SIZE_CHECKS_INTERVAL = config.TEXT_TRACK_SIZE_CHECKS_INTERVAL;
|
|
43
42
|
/**
|
|
44
|
-
* Generate the
|
|
43
|
+
* Generate the interval at which TextTrack HTML Cues should be refreshed.
|
|
45
44
|
* @param {HTMLMediaElement} videoElement
|
|
46
45
|
* @returns {Observable}
|
|
47
46
|
*/
|
|
48
|
-
function
|
|
47
|
+
function generateRefreshInterval(videoElement) {
|
|
49
48
|
var seeking$ = onSeeking$(videoElement);
|
|
50
49
|
var seeked$ = onSeeked$(videoElement);
|
|
51
50
|
var ended$ = onEnded$(videoElement);
|
|
52
51
|
var manualRefresh$ = observableMerge(seeked$, ended$);
|
|
53
52
|
var autoRefresh$ = observableInterval(MAXIMUM_HTML_TEXT_TRACK_UPDATE_INTERVAL)
|
|
54
53
|
.pipe(startWith(null));
|
|
55
|
-
return manualRefresh$.pipe(startWith(null),
|
|
54
|
+
return manualRefresh$.pipe(startWith(null), switchMap(function () { return observableConcat(autoRefresh$.pipe(map(function () { return true; }), takeUntil(seeking$)), observableOf(false)); }));
|
|
56
55
|
}
|
|
57
56
|
/**
|
|
58
57
|
* @param {Element} element
|
|
@@ -107,7 +106,7 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
107
106
|
_this._buffer = new TextTrackCuesStore();
|
|
108
107
|
_this._currentCues = [];
|
|
109
108
|
// update text tracks
|
|
110
|
-
|
|
109
|
+
generateRefreshInterval(_this._videoElement)
|
|
111
110
|
.pipe(takeUntil(_this._destroy$))
|
|
112
111
|
.subscribe(function (shouldDisplay) {
|
|
113
112
|
if (!shouldDisplay) {
|
|
@@ -164,7 +163,7 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
164
163
|
HTMLTextSegmentBuffer.prototype.endOfSegment = function (_infos) {
|
|
165
164
|
var _this = this;
|
|
166
165
|
return observableDefer(function () {
|
|
167
|
-
_this._segmentInventory.completeSegment(_infos);
|
|
166
|
+
_this._segmentInventory.completeSegment(_infos, _this._buffered);
|
|
168
167
|
return observableOf(undefined);
|
|
169
168
|
});
|
|
170
169
|
};
|
|
@@ -205,6 +204,7 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
205
204
|
if (chunk === null) {
|
|
206
205
|
return;
|
|
207
206
|
}
|
|
207
|
+
assertChunkIsTextTrackSegmentData(chunk);
|
|
208
208
|
var startTime = chunk.start, endTime = chunk.end, dataString = chunk.data, type = chunk.type, language = chunk.language;
|
|
209
209
|
var appendWindowStart = (_a = appendWindow[0]) !== null && _a !== void 0 ? _a : 0;
|
|
210
210
|
var appendWindowEnd = (_b = appendWindow[1]) !== null && _b !== void 0 ? _b : Infinity;
|
|
@@ -330,3 +330,48 @@ var HTMLTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
330
330
|
return HTMLTextSegmentBuffer;
|
|
331
331
|
}(SegmentBuffer));
|
|
332
332
|
export default HTMLTextSegmentBuffer;
|
|
333
|
+
/**
|
|
334
|
+
* Throw if the given input is not in the expected format.
|
|
335
|
+
* Allows to enforce runtime type-checking as compile-time type-checking here is
|
|
336
|
+
* difficult to enforce.
|
|
337
|
+
* @param {Object} chunk
|
|
338
|
+
*/
|
|
339
|
+
function assertChunkIsTextTrackSegmentData(chunk) {
|
|
340
|
+
if (0 /* CURRENT_ENV */ === 0 /* PRODUCTION */) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
if (typeof chunk !== "object" ||
|
|
344
|
+
chunk === null ||
|
|
345
|
+
typeof chunk.data !== "string" ||
|
|
346
|
+
typeof chunk.type !== "string" ||
|
|
347
|
+
(chunk.language !== undefined &&
|
|
348
|
+
typeof chunk.language !== "string") ||
|
|
349
|
+
(chunk.start !== undefined &&
|
|
350
|
+
typeof chunk.start !== "number") ||
|
|
351
|
+
(chunk.end !== undefined &&
|
|
352
|
+
typeof chunk.end !== "number")) {
|
|
353
|
+
throw new Error("Invalid format given to a NativeTextSegmentBuffer");
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/*
|
|
357
|
+
* The following ugly code is here to provide a compile-time check that an
|
|
358
|
+
* `INativeTextTracksBufferSegmentData` (type of data pushed to a
|
|
359
|
+
* `NativeTextSegmentBuffer`) can be derived from a `ITextTrackSegmentData`
|
|
360
|
+
* (text track data parsed from a segment).
|
|
361
|
+
*
|
|
362
|
+
* It doesn't correspond at all to real code that will be called. This is just
|
|
363
|
+
* a hack to tell TypeScript to perform that check.
|
|
364
|
+
*/
|
|
365
|
+
if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
|
|
366
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
367
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
368
|
+
// @ts-ignore
|
|
369
|
+
function _checkType(input) {
|
|
370
|
+
function checkEqual(_arg) {
|
|
371
|
+
/* nothing */
|
|
372
|
+
}
|
|
373
|
+
checkEqual(input);
|
|
374
|
+
}
|
|
375
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
376
|
+
/* eslint-enable @typescript-eslint/ban-ts-comment */
|
|
377
|
+
}
|
package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js
CHANGED
|
@@ -48,8 +48,8 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
48
48
|
var ret = [];
|
|
49
49
|
// begins at the end as most of the time the player will ask for the last
|
|
50
50
|
// CuesGroup
|
|
51
|
-
for (var
|
|
52
|
-
var segment = cuesBuffer[
|
|
51
|
+
for (var cueIdx = cuesBuffer.length - 1; cueIdx >= 0; cueIdx--) {
|
|
52
|
+
var segment = cuesBuffer[cueIdx];
|
|
53
53
|
if (time < segment.end && time >= segment.start) {
|
|
54
54
|
var cues = segment.cues;
|
|
55
55
|
for (var j = 0; j < cues.length; j++) {
|
|
@@ -68,17 +68,17 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
68
68
|
* @param {Number} to
|
|
69
69
|
*/
|
|
70
70
|
TextTrackCuesStore.prototype.remove = function (from, _to) {
|
|
71
|
-
if (
|
|
71
|
+
if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
|
|
72
72
|
assert(from >= 0);
|
|
73
73
|
assert(_to >= 0);
|
|
74
74
|
assert(_to > from);
|
|
75
75
|
}
|
|
76
76
|
var to = Math.max(from, _to);
|
|
77
77
|
var cuesBuffer = this._cuesBuffer;
|
|
78
|
-
for (var
|
|
79
|
-
if (cuesBuffer[
|
|
78
|
+
for (var cueIdx = 0; cueIdx < cuesBuffer.length; cueIdx++) {
|
|
79
|
+
if (cuesBuffer[cueIdx].end > from) {
|
|
80
80
|
// this cuesInfos is concerned by the remove
|
|
81
|
-
var startCuesInfos = cuesBuffer[
|
|
81
|
+
var startCuesInfos = cuesBuffer[cueIdx];
|
|
82
82
|
if (startCuesInfos.start >= to) {
|
|
83
83
|
// our cuesInfos is strictly after this interval, we have nothing to do
|
|
84
84
|
return;
|
|
@@ -93,8 +93,8 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
93
93
|
else {
|
|
94
94
|
// from -> to is in the middle part of startCuesInfos
|
|
95
95
|
var _a = removeCuesInfosBetween(startCuesInfos, from, to), cuesInfos1 = _a[0], cuesInfos2 = _a[1];
|
|
96
|
-
this._cuesBuffer[
|
|
97
|
-
cuesBuffer.splice(
|
|
96
|
+
this._cuesBuffer[cueIdx] = cuesInfos1;
|
|
97
|
+
cuesBuffer.splice(cueIdx + 1, 0, cuesInfos2);
|
|
98
98
|
}
|
|
99
99
|
// No cuesInfos can be concerned after this one, we can quit
|
|
100
100
|
return;
|
|
@@ -102,8 +102,8 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
102
102
|
// Else remove all part after `from`
|
|
103
103
|
if (startCuesInfos.start >= from) {
|
|
104
104
|
// all the segment is concerned
|
|
105
|
-
cuesBuffer.splice(
|
|
106
|
-
|
|
105
|
+
cuesBuffer.splice(cueIdx, 1);
|
|
106
|
+
cueIdx--; // one less element, we have to decrement the loop
|
|
107
107
|
}
|
|
108
108
|
else {
|
|
109
109
|
// only the end is concerned
|
|
@@ -187,8 +187,8 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
187
187
|
cuesBuffer.splice(indexOfNextCue, 0, cuesInfosToInsert);
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
for (var
|
|
191
|
-
var cuesInfos = cuesBuffer[
|
|
190
|
+
for (var cueIdx = 0; cueIdx < cuesBuffer.length; cueIdx++) {
|
|
191
|
+
var cuesInfos = cuesBuffer[cueIdx];
|
|
192
192
|
if (start < cuesInfos.end) {
|
|
193
193
|
if (areNearlyEqual(start, cuesInfos.start)) {
|
|
194
194
|
if (areNearlyEqual(end, cuesInfos.end)) {
|
|
@@ -198,7 +198,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
198
198
|
// Result: |AAAAA|
|
|
199
199
|
// Which means:
|
|
200
200
|
// 1. replace the current cue with ours
|
|
201
|
-
cuesBuffer[
|
|
201
|
+
cuesBuffer[cueIdx] = cuesInfosToInsert;
|
|
202
202
|
return;
|
|
203
203
|
}
|
|
204
204
|
else if (end < cuesInfos.end) {
|
|
@@ -212,7 +212,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
212
212
|
// 3. add ours before the current one
|
|
213
213
|
cuesInfos.cues = getCuesAfter(cuesInfos.cues, end);
|
|
214
214
|
cuesInfos.start = end;
|
|
215
|
-
cuesBuffer.splice(
|
|
215
|
+
cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
|
|
216
216
|
return;
|
|
217
217
|
}
|
|
218
218
|
// our cue goes beyond the current one:
|
|
@@ -222,10 +222,10 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
222
222
|
// Here we have to delete any cuesInfos which end before ours end,
|
|
223
223
|
// and see about the following one.
|
|
224
224
|
do {
|
|
225
|
-
cuesBuffer.splice(
|
|
226
|
-
cuesInfos = cuesBuffer[
|
|
225
|
+
cuesBuffer.splice(cueIdx, 1);
|
|
226
|
+
cuesInfos = cuesBuffer[cueIdx];
|
|
227
227
|
} while (cuesInfos !== undefined && end > cuesInfos.end);
|
|
228
|
-
onIndexOfNextCueFound(
|
|
228
|
+
onIndexOfNextCueFound(cueIdx);
|
|
229
229
|
return;
|
|
230
230
|
}
|
|
231
231
|
else if (start < cuesInfos.start) {
|
|
@@ -236,7 +236,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
236
236
|
// Result: |AAAAAAA| |BBBB|
|
|
237
237
|
// Which means:
|
|
238
238
|
// - add ours before the current one
|
|
239
|
-
cuesBuffer.splice(
|
|
239
|
+
cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
|
|
240
240
|
return;
|
|
241
241
|
}
|
|
242
242
|
else if (areNearlyEqual(end, cuesInfos.start)) {
|
|
@@ -248,7 +248,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
248
248
|
// - update start time of the current one to be sure
|
|
249
249
|
// - add ours before the current one
|
|
250
250
|
cuesInfos.start = end;
|
|
251
|
-
cuesBuffer.splice(
|
|
251
|
+
cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
|
|
252
252
|
return;
|
|
253
253
|
}
|
|
254
254
|
else if (areNearlyEqual(end, cuesInfos.end)) {
|
|
@@ -256,7 +256,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
256
256
|
// the current one: |BBBB|
|
|
257
257
|
// Result: |AAAAAAA|
|
|
258
258
|
// Replace
|
|
259
|
-
cuesBuffer.splice(
|
|
259
|
+
cuesBuffer.splice(cueIdx, 1, cuesInfosToInsert);
|
|
260
260
|
return;
|
|
261
261
|
}
|
|
262
262
|
else if (end < cuesInfos.end) {
|
|
@@ -265,17 +265,17 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
265
265
|
// Result: |AAAAAAABB|
|
|
266
266
|
cuesInfos.cues = getCuesAfter(cuesInfos.cues, end);
|
|
267
267
|
cuesInfos.start = end;
|
|
268
|
-
cuesBuffer.splice(
|
|
268
|
+
cuesBuffer.splice(cueIdx, 0, cuesInfosToInsert);
|
|
269
269
|
return;
|
|
270
270
|
}
|
|
271
271
|
// ours: |AAAAAAA|
|
|
272
272
|
// the current one: |BBB|...
|
|
273
273
|
// Result: |AAAAAAA|...
|
|
274
274
|
do {
|
|
275
|
-
cuesBuffer.splice(
|
|
276
|
-
cuesInfos = cuesBuffer[
|
|
275
|
+
cuesBuffer.splice(cueIdx, 1);
|
|
276
|
+
cuesInfos = cuesBuffer[cueIdx];
|
|
277
277
|
} while (cuesInfos !== undefined && end > cuesInfos.end);
|
|
278
|
-
onIndexOfNextCueFound(
|
|
278
|
+
onIndexOfNextCueFound(cueIdx);
|
|
279
279
|
return;
|
|
280
280
|
}
|
|
281
281
|
// else -> start > cuesInfos.start
|
|
@@ -285,7 +285,7 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
285
285
|
// Result: |BBAAAAAA|
|
|
286
286
|
cuesInfos.cues = getCuesBefore(cuesInfos.cues, start);
|
|
287
287
|
cuesInfos.end = start;
|
|
288
|
-
cuesBuffer.splice(
|
|
288
|
+
cuesBuffer.splice(cueIdx + 1, 0, cuesInfosToInsert);
|
|
289
289
|
return;
|
|
290
290
|
}
|
|
291
291
|
else if (cuesInfos.end > end) {
|
|
@@ -293,9 +293,9 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
293
293
|
// the current one: |BBBBBBBBBBB|
|
|
294
294
|
// Result: |BBAAAAAABBB|
|
|
295
295
|
var _a = removeCuesInfosBetween(cuesInfos, start, end), cuesInfos1 = _a[0], cuesInfos2 = _a[1];
|
|
296
|
-
this._cuesBuffer[
|
|
297
|
-
cuesBuffer.splice(
|
|
298
|
-
cuesBuffer.splice(
|
|
296
|
+
this._cuesBuffer[cueIdx] = cuesInfos1;
|
|
297
|
+
cuesBuffer.splice(cueIdx + 1, 0, cuesInfosToInsert);
|
|
298
|
+
cuesBuffer.splice(cueIdx + 2, 0, cuesInfos2);
|
|
299
299
|
return;
|
|
300
300
|
}
|
|
301
301
|
else {
|
|
@@ -304,12 +304,13 @@ var TextTrackCuesStore = /** @class */ (function () {
|
|
|
304
304
|
// Result: |BBAAAAAA|...
|
|
305
305
|
cuesInfos.cues = getCuesBefore(cuesInfos.cues, start);
|
|
306
306
|
cuesInfos.end = start;
|
|
307
|
-
|
|
307
|
+
var nextCueIdx = cueIdx + 1;
|
|
308
|
+
cuesInfos = cuesBuffer[nextCueIdx];
|
|
308
309
|
while (cuesInfos !== undefined && end > cuesInfos.end) {
|
|
309
|
-
cuesBuffer.splice(
|
|
310
|
-
cuesInfos = cuesBuffer[
|
|
310
|
+
cuesBuffer.splice(nextCueIdx, 1);
|
|
311
|
+
cuesInfos = cuesBuffer[nextCueIdx];
|
|
311
312
|
}
|
|
312
|
-
onIndexOfNextCueFound(
|
|
313
|
+
onIndexOfNextCueFound(nextCueIdx);
|
|
313
314
|
return;
|
|
314
315
|
}
|
|
315
316
|
}
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
|
-
import { ITextTrackSegmentData } from "../../../../../transports";
|
|
18
17
|
import { IEndOfSegmentInfos, IPushChunkInfos, SegmentBuffer } from "../../types";
|
|
19
18
|
import ManualTimeRanges from "../../utils/manual_time_ranges";
|
|
20
19
|
/**
|
|
@@ -23,11 +22,11 @@ import ManualTimeRanges from "../../utils/manual_time_ranges";
|
|
|
23
22
|
* expected behavior to display subtitles synchronized to the video.
|
|
24
23
|
* @class NativeTextSegmentBuffer
|
|
25
24
|
*/
|
|
26
|
-
export default class NativeTextSegmentBuffer extends SegmentBuffer
|
|
25
|
+
export default class NativeTextSegmentBuffer extends SegmentBuffer {
|
|
27
26
|
readonly bufferType: "text";
|
|
28
27
|
private readonly _videoElement;
|
|
29
28
|
private readonly _track;
|
|
30
|
-
private readonly _trackElement
|
|
29
|
+
private readonly _trackElement;
|
|
31
30
|
private _buffered;
|
|
32
31
|
/**
|
|
33
32
|
* @param {HTMLMediaElement} videoElement
|
|
@@ -38,7 +37,7 @@ export default class NativeTextSegmentBuffer extends SegmentBuffer<ITextTrackSeg
|
|
|
38
37
|
* @param {Object} infos
|
|
39
38
|
* @returns {Observable}
|
|
40
39
|
*/
|
|
41
|
-
pushChunk(infos: IPushChunkInfos<
|
|
40
|
+
pushChunk(infos: IPushChunkInfos<unknown>): Observable<void>;
|
|
42
41
|
/**
|
|
43
42
|
* Remove buffered data.
|
|
44
43
|
* @param {number} start - start position, in seconds
|
|
@@ -64,3 +63,20 @@ export default class NativeTextSegmentBuffer extends SegmentBuffer<ITextTrackSeg
|
|
|
64
63
|
dispose(): void;
|
|
65
64
|
private _removeData;
|
|
66
65
|
}
|
|
66
|
+
/** Data of chunks that should be pushed to the NativeTextSegmentBuffer. */
|
|
67
|
+
export interface INativeTextTracksBufferSegmentData {
|
|
68
|
+
/** The text track data, in the format indicated in `type`. */
|
|
69
|
+
data: string;
|
|
70
|
+
/** The format of `data` (examples: "ttml", "srt" or "vtt") */
|
|
71
|
+
type: string;
|
|
72
|
+
/**
|
|
73
|
+
* Language in which the text track is, as a language code.
|
|
74
|
+
* This is mostly needed for "sami" subtitles, to know which cues can / should
|
|
75
|
+
* be parsed.
|
|
76
|
+
*/
|
|
77
|
+
language?: string | undefined;
|
|
78
|
+
/** start time from which the segment apply, in seconds. */
|
|
79
|
+
start?: number | undefined;
|
|
80
|
+
/** end time until which the segment apply, in seconds. */
|
|
81
|
+
end?: number | undefined;
|
|
82
|
+
}
|
|
@@ -72,6 +72,7 @@ var NativeTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
72
72
|
return observableOf(undefined);
|
|
73
73
|
}
|
|
74
74
|
var _c = infos.data, timestampOffset = _c.timestampOffset, appendWindow = _c.appendWindow, chunk = _c.chunk;
|
|
75
|
+
assertChunkIsTextTrackSegmentData(chunk);
|
|
75
76
|
var startTime = chunk.start, endTime = chunk.end, dataString = chunk.data, type = chunk.type, language = chunk.language;
|
|
76
77
|
var appendWindowStart = (_a = appendWindow[0]) !== null && _a !== void 0 ? _a : 0;
|
|
77
78
|
var appendWindowEnd = (_b = appendWindow[1]) !== null && _b !== void 0 ? _b : Infinity;
|
|
@@ -176,7 +177,7 @@ var NativeTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
176
177
|
NativeTextSegmentBuffer.prototype.endOfSegment = function (_infos) {
|
|
177
178
|
var _this = this;
|
|
178
179
|
return observableDefer(function () {
|
|
179
|
-
_this._segmentInventory.completeSegment(_infos);
|
|
180
|
+
_this._segmentInventory.completeSegment(_infos, _this._buffered);
|
|
180
181
|
return observableOf(undefined);
|
|
181
182
|
});
|
|
182
183
|
};
|
|
@@ -222,3 +223,48 @@ var NativeTextSegmentBuffer = /** @class */ (function (_super) {
|
|
|
222
223
|
return NativeTextSegmentBuffer;
|
|
223
224
|
}(SegmentBuffer));
|
|
224
225
|
export default NativeTextSegmentBuffer;
|
|
226
|
+
/**
|
|
227
|
+
* Throw if the given input is not in the expected format.
|
|
228
|
+
* Allows to enforce runtime type-checking as compile-time type-checking here is
|
|
229
|
+
* difficult to enforce.
|
|
230
|
+
* @param {Object} chunk
|
|
231
|
+
*/
|
|
232
|
+
function assertChunkIsTextTrackSegmentData(chunk) {
|
|
233
|
+
if (0 /* CURRENT_ENV */ === 0 /* PRODUCTION */) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (typeof chunk !== "object" ||
|
|
237
|
+
chunk === null ||
|
|
238
|
+
typeof chunk.data !== "string" ||
|
|
239
|
+
typeof chunk.type !== "string" ||
|
|
240
|
+
(chunk.language !== undefined &&
|
|
241
|
+
typeof chunk.language !== "string") ||
|
|
242
|
+
(chunk.start !== undefined &&
|
|
243
|
+
typeof chunk.start !== "number") ||
|
|
244
|
+
(chunk.end !== undefined &&
|
|
245
|
+
typeof chunk.end !== "number")) {
|
|
246
|
+
throw new Error("Invalid format given to a NativeTextSegmentBuffer");
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/*
|
|
250
|
+
* The following ugly code is here to provide a compile-time check that an
|
|
251
|
+
* `INativeTextTracksBufferSegmentData` (type of data pushed to a
|
|
252
|
+
* `NativeTextSegmentBuffer`) can be derived from a `ITextTrackSegmentData`
|
|
253
|
+
* (text track data parsed from a segment).
|
|
254
|
+
*
|
|
255
|
+
* It doesn't correspond at all to real code that will be called. This is just
|
|
256
|
+
* a hack to tell TypeScript to perform that check.
|
|
257
|
+
*/
|
|
258
|
+
if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
|
|
259
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
260
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
261
|
+
// @ts-ignore
|
|
262
|
+
function _checkType(input) {
|
|
263
|
+
function checkEqual(_arg) {
|
|
264
|
+
/* nothing */
|
|
265
|
+
}
|
|
266
|
+
checkEqual(input);
|
|
267
|
+
}
|
|
268
|
+
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
269
|
+
/* eslint-enable @typescript-eslint/ban-ts-comment */
|
|
270
|
+
}
|