rx-player 3.25.2 → 3.26.3-dev.2022021400
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/.github/workflows/checks.yml +99 -0
- package/.github/workflows/perfs.yml +22 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +142 -70
- package/CONTRIBUTING.md +68 -3
- package/MAINTAINERS.md +1 -1
- package/README.md +121 -73
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +14 -9
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +7 -19
- package/dist/_esm5.processed/compat/browser_detection.js +4 -12
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +2 -4
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +4 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +7 -20
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +18 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +7 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts +21 -0
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +9 -10
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -12
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +22 -25
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +2 -1
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +5 -4
- package/dist/_esm5.processed/compat/event_listeners.js +21 -35
- package/dist/_esm5.processed/compat/fullscreen.js +1 -5
- package/dist/_esm5.processed/compat/index.d.ts +3 -4
- package/dist/_esm5.processed/compat/index.js +3 -4
- package/dist/_esm5.processed/compat/is_vtt_cue.js +1 -2
- package/dist/_esm5.processed/compat/make_vtt_cue.js +11 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +3 -0
- package/dist/_esm5.processed/compat/play.d.ts +1 -1
- package/dist/_esm5.processed/compat/play.js +1 -1
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +72 -13
- package/dist/_esm5.processed/config.js +73 -14
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -17
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +26 -8
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +5 -8
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +35 -52
- package/dist/_esm5.processed/core/abr/representation_estimator.js +114 -65
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/get_player_state.d.ts +3 -4
- package/dist/_esm5.processed/core/api/get_player_state.js +2 -2
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +25 -15
- package/dist/_esm5.processed/core/api/option_utils.d.ts +5 -5
- package/dist/_esm5.processed/core/api/option_utils.js +6 -40
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +11 -10
- package/dist/_esm5.processed/core/api/public_api.js +118 -140
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +7 -8
- package/dist/_esm5.processed/core/api/track_choice_manager.js +54 -57
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +4 -6
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +25 -32
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +2 -6
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -9
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +5 -7
- package/dist/_esm5.processed/core/eme/find_key_system.js +20 -21
- package/dist/_esm5.processed/core/eme/get_media_keys.js +4 -11
- package/dist/_esm5.processed/core/eme/get_session.js +3 -6
- package/dist/_esm5.processed/core/eme/init_media_keys.js +6 -14
- package/dist/_esm5.processed/core/eme/session_events_listener.js +12 -10
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +14 -6
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +3 -9
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +5 -8
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +28 -13
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +258 -65
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +13 -31
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +1 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +101 -19
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +239 -99
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +38 -21
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +13 -10
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +37 -22
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +129 -59
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +17 -8
- package/dist/_esm5.processed/{transports/utils/return_parsed_manifest.d.ts → core/init/emit_loaded_event.d.ts} +9 -8
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +47 -0
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/events_generators.d.ts +3 -5
- package/dist/_esm5.processed/core/init/events_generators.js +5 -16
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +56 -22
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +65 -56
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +8 -7
- package/dist/_esm5.processed/core/init/initialize_directfile.js +31 -33
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +12 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.js +20 -18
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +9 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.js +30 -43
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +11 -18
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +12 -7
- package/dist/_esm5.processed/core/init/stall_avoider.js +102 -39
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/refresh_scheduled_events_list.js +2 -12
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +11 -28
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +7 -6
- package/dist/_esm5.processed/core/init/update_playback_rate.js +11 -12
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +5 -5
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +32 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +15 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +52 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +33 -32
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +47 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +18 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +17 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +81 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +91 -0
- package/dist/_esm5.processed/core/{fetchers/utils/create_request_scheduler.d.ts → segment_buffers/inventory/index.d.ts} +5 -4
- package/dist/_esm5.processed/core/{fetchers/manifest/get_manifest_backoff_options.d.ts → segment_buffers/inventory/index.js} +2 -11
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.d.ts → inventory/segment_inventory.d.ts} +38 -39
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.js → inventory/segment_inventory.js} +65 -28
- package/dist/_esm5.processed/core/{abr/cached_segment_detector.d.ts → segment_buffers/inventory/types.d.ts} +10 -9
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +16 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +18 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +38 -34
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -22
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +13 -6
- package/dist/_esm5.processed/core/stream/events_generators.js +20 -12
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_blacklisted_ranges.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -41
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +12 -15
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +25 -11
- package/dist/_esm5.processed/core/stream/period/period_stream.js +39 -30
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +45 -0
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +48 -0
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +222 -0
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +254 -0
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +9 -12
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +10 -18
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +3 -1
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +108 -6
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +4 -8
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +7 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +5 -9
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +12 -18
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +150 -209
- package/dist/_esm5.processed/core/stream/types.d.ts +65 -17
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +7 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +26 -13
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +32 -36
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +4 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +6 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +9 -23
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +28 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +12 -10
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +5 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +10 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +12 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +6 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/initialize_features.js +49 -47
- package/dist/_esm5.processed/features/list/directfile.js +1 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -10
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/adaptation.d.ts +10 -16
- package/dist/_esm5.processed/manifest/adaptation.js +3 -25
- package/dist/_esm5.processed/manifest/index.d.ts +5 -4
- package/dist/_esm5.processed/manifest/index.js +3 -2
- package/dist/_esm5.processed/manifest/manifest.d.ts +11 -11
- package/dist/_esm5.processed/manifest/manifest.js +14 -11
- package/dist/_esm5.processed/manifest/period.d.ts +4 -4
- package/dist/_esm5.processed/manifest/period.js +7 -16
- package/dist/_esm5.processed/manifest/representation.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.js +3 -7
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +95 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/update_periods.js +11 -7
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/utils.js +44 -0
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +54 -58
- package/dist/_esm5.processed/parsers/images/bif.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +9 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +8 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +5 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +8 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +16 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +12 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +11 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +3 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +34 -21
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +26 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -33
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +50 -57
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +29 -30
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +26 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +70 -65
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +24 -16
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +30 -42
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -36
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +28 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +13 -11
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +70 -29
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +14 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +9 -21
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +22 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +31 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +6 -11
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +13 -7
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -13
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +9 -30
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +5 -6
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +16 -6
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +12 -4
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +45 -29
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +11 -7
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +1 -5
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +10 -6
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +11 -15
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +1 -3
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -7
- package/dist/_esm5.processed/public_types.d.ts +4 -0
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -3
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +70 -9
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +12 -6
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +34 -36
- package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +8 -4
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +32 -36
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +38 -40
- package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +3 -7
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +115 -52
- package/dist/_esm5.processed/transports/dash/pipelines.js +10 -10
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/segment_loader.js +70 -57
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/segment_parser.js +15 -32
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/text_loader.js +28 -18
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +5 -4
- package/dist/_esm5.processed/transports/dash/text_parser.js +58 -51
- package/dist/_esm5.processed/transports/local/pipelines.js +16 -14
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +8 -5
- package/dist/_esm5.processed/transports/local/segment_loader.js +69 -28
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +5 -3
- package/dist/_esm5.processed/transports/local/segment_parser.js +15 -27
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +9 -5
- package/dist/_esm5.processed/transports/local/text_parser.js +54 -53
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +5 -5
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +7 -9
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +82 -138
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +3 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.d.ts +1 -4
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +1 -4
- package/dist/_esm5.processed/transports/smooth/pipelines.js +149 -155
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +6 -3
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +150 -107
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +9 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +11 -1
- package/dist/_esm5.processed/transports/types.d.ts +533 -376
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +45 -32
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +4 -4
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +16 -5
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +8 -12
- package/dist/_esm5.processed/utils/array_find.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find.js +0 -5
- package/dist/_esm5.processed/utils/array_find_index.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find_index.js +0 -5
- package/dist/_esm5.processed/utils/assert.d.ts +1 -1
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +30 -0
- package/dist/_esm5.processed/utils/cancellable_sleep.js +42 -0
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +11 -6
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/flat_map.js +0 -6
- package/dist/_esm5.processed/utils/id_generator.d.ts +2 -1
- package/dist/_esm5.processed/utils/id_generator.js +2 -1
- package/dist/_esm5.processed/utils/languages/normalize.js +1 -3
- package/dist/_esm5.processed/utils/ranges.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +64 -27
- package/dist/_esm5.processed/utils/request/fetch.js +95 -113
- package/dist/_esm5.processed/utils/request/index.d.ts +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +64 -47
- package/dist/_esm5.processed/utils/request/xhr.js +49 -43
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +39 -0
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +58 -0
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +240 -0
- package/dist/_esm5.processed/utils/task_canceller.js +289 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +8775 -6211
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -4
- package/package.json +122 -106
- package/scripts/README.md +11 -0
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +197 -0
- package/scripts/build/templates/experimental/features/index.d.ts +16 -0
- package/scripts/build/templates/experimental/features/index.js +16 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +18 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +18 -0
- package/scripts/build/templates/experimental/tools/index.d.ts +16 -0
- package/scripts/build/templates/experimental/tools/index.js +16 -0
- package/scripts/build/templates/features/index.d.ts +16 -0
- package/scripts/build/templates/features/index.js +16 -0
- package/scripts/build/templates/logger/index.d.ts +17 -0
- package/scripts/build/templates/logger/index.js +17 -0
- package/scripts/build/templates/minimal/index.d.ts +17 -0
- package/scripts/build/templates/minimal/index.js +17 -0
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +18 -0
- package/scripts/build/templates/tools/TextTrackRenderer.js +18 -0
- package/scripts/build/templates/tools/index.d.ts +16 -0
- package/scripts/build/templates/tools/index.js +16 -0
- package/scripts/build/templates/tools/string-utils.d.ts +18 -0
- package/{dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.d.ts → scripts/build/templates/tools/string-utils.js} +3 -11
- package/scripts/build/templates/types/index.d.ts +16 -0
- package/scripts/build/templates/types/index.js +15 -0
- package/scripts/check_nodejs_import_compatibility.js +35 -1
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +147 -0
- package/scripts/doc-generator/generate_page_html.js +115 -0
- package/scripts/doc-generator/generate_page_list_html.js +92 -0
- package/scripts/doc-generator/generate_sidebar_html.js +85 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +74 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +9 -5
- package/scripts/generate_full_demo.js +108 -10
- package/scripts/generate_standalone_demo.js +15 -8
- package/scripts/launch_static_server.js +139 -56
- package/scripts/list-npm-scripts.js +99 -0
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/{run_full_demo.js → start_demo_web_server.js} +16 -3
- package/scripts/update-version +8 -1
- package/scripts/{display_webpack_errors.js → utils/display_webpack_errors.js} +0 -4
- package/scripts/{get_human_readable_hours.js → utils/get_human_readable_hours.js} +0 -4
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +12 -11
- package/src/compat/__tests__/browser_compatibility_types.test.ts +69 -60
- package/src/compat/__tests__/browser_version.test.ts +3 -1
- package/src/compat/__tests__/change_source_buffer_type.test.ts +3 -3
- package/src/compat/__tests__/clear_element_src.test.ts +62 -36
- package/src/compat/__tests__/fullscreen.test.ts +154 -139
- package/src/compat/__tests__/is_offline.test.ts +20 -12
- package/src/compat/__tests__/is_vtt_cue.test.ts +14 -10
- package/src/compat/__tests__/make_vtt_cue.test.ts +16 -15
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +30 -48
- package/src/compat/__tests__/play.test.ts +2 -2
- package/src/compat/__tests__/remove_cue.test.ts +5 -5
- package/src/compat/__tests__/set_element_src.test.ts +3 -3
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +14 -6
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/browser_compatibility_types.ts +38 -36
- package/src/compat/browser_detection.ts +17 -12
- package/src/compat/can_rely_on_video_visibility_and_size.ts +3 -3
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +7 -6
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +22 -26
- package/src/compat/eme/custom_media_keys/index.ts +32 -38
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +16 -19
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +39 -9
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +10 -12
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +27 -30
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +6 -2
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +30 -46
- package/src/compat/fullscreen.ts +2 -4
- package/src/compat/index.ts +2 -6
- package/src/compat/is_vtt_cue.ts +1 -2
- package/src/compat/make_vtt_cue.ts +10 -8
- package/src/compat/on_height_width_change.ts +4 -6
- package/src/compat/patch_webkit_source_buffer.ts +11 -5
- package/src/compat/play.ts +1 -1
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +79 -14
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +85 -18
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +75 -32
- package/src/core/abr/pending_requests_store.ts +72 -40
- package/src/core/abr/representation_estimator.ts +205 -135
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/get_player_state.test.ts +58 -110
- package/src/core/api/__tests__/media_element_track_choice_manager.test.ts +35 -31
- package/src/core/api/__tests__/option_utils.test.ts +104 -17
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/get_player_state.ts +5 -7
- package/src/core/api/index.ts +8 -3
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +7 -7
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +128 -130
- package/src/core/api/track_choice_manager.ts +82 -78
- package/src/core/eme/__tests__/__global__/get_license.test.ts +14 -9
- package/src/core/eme/__tests__/__global__/init_data.test.ts +12 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +3 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +6 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +18 -12
- package/src/core/eme/__tests__/__global__/utils.ts +21 -17
- package/src/core/eme/__tests__/clean_old_loaded_sessions.test.ts +4 -4
- package/src/core/eme/__tests__/clean_old_stored_persistent_info.test.ts +3 -2
- package/src/core/eme/__tests__/init_media_keys.test.ts +10 -66
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +24 -13
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +17 -17
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +21 -18
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +17 -6
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +256 -109
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +4 -5
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +48 -51
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +396 -177
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +56 -39
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +123 -91
- package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -1
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +21 -18
- package/src/core/init/emit_loaded_event.ts +71 -0
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/events_generators.ts +4 -5
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +128 -96
- package/src/core/init/initialize_directfile.ts +49 -57
- package/src/core/init/initialize_media_source.ts +31 -31
- package/src/core/init/load_on_media_source.ts +70 -74
- package/src/core/init/manifest_update_scheduler.ts +18 -19
- package/src/core/init/stall_avoider.ts +142 -51
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +15 -28
- package/src/core/init/update_playback_rate.ts +17 -18
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +17 -13
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +46 -11
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +21 -18
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +92 -18
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +33 -32
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +82 -6
- package/src/core/segment_buffers/implementations/types.ts +23 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/index.ts +6 -1
- package/src/core/segment_buffers/inventory/buffered_history.ts +127 -0
- package/src/core/segment_buffers/inventory/index.ts +28 -0
- package/src/core/segment_buffers/{segment_inventory.ts → inventory/segment_inventory.ts} +85 -52
- package/{dist/_esm5.processed/manifest/are_same_content.js → src/core/segment_buffers/inventory/types.ts} +19 -11
- package/src/core/segment_buffers/segment_buffers_store.ts +4 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +90 -65
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/events_generators.ts +31 -7
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +9 -11
- package/src/core/stream/orchestrator/are_streams_complete.ts +4 -6
- package/src/core/stream/orchestrator/get_blacklisted_ranges.ts +1 -1
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +70 -62
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +126 -85
- package/src/core/stream/reload_after_switch.ts +70 -0
- package/src/core/stream/representation/append_segment_to_buffer.ts +21 -17
- package/src/core/stream/representation/downloading_queue.ts +502 -0
- package/src/core/stream/representation/force_garbage_collection.ts +20 -29
- package/src/core/stream/representation/get_buffer_status.ts +15 -13
- package/src/core/stream/representation/get_needed_segments.ts +135 -6
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +238 -307
- package/src/core/stream/types.ts +91 -39
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +2 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +47 -30
- package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +1 -2
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +41 -72
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +20 -13
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -7
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +13 -27
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +38 -37
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +56 -47
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +6 -4
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +7 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +1 -0
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +12 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +12 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +6 -1
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +207 -110
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +2 -0
- package/src/features/list/__tests__/dash.test.ts +2 -0
- package/src/features/list/__tests__/directfile.test.ts +2 -0
- package/src/features/list/__tests__/eme.test.ts +2 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/image_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/smooth.test.ts +2 -0
- package/src/features/types.ts +3 -11
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/adaptation.test.ts +0 -79
- package/src/manifest/__tests__/manifest.test.ts +68 -67
- package/src/manifest/__tests__/period.test.ts +142 -118
- package/src/manifest/__tests__/update_period_in_place.test.ts +85 -62
- package/src/manifest/__tests__/update_periods.test.ts +33 -12
- package/src/manifest/adaptation.ts +17 -51
- package/src/manifest/index.ts +15 -2
- package/src/manifest/manifest.ts +31 -18
- package/src/manifest/period.ts +13 -20
- package/src/manifest/representation.ts +3 -3
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +43 -21
- package/src/manifest/types.ts +97 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +7 -4
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +29 -6
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +5 -8
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +11 -9
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +5 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +10 -10
- package/src/parsers/manifest/dash/common/indexes/list.ts +20 -17
- package/src/parsers/manifest/dash/common/indexes/template.ts +30 -22
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +63 -27
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +64 -73
- package/src/parsers/manifest/dash/common/parse_mpd.ts +33 -24
- package/src/parsers/manifest/dash/common/parse_periods.ts +115 -87
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +88 -80
- package/src/parsers/manifest/dash/common/parse_representations.ts +61 -64
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +1 -1
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +66 -29
- package/src/parsers/manifest/dash/parsers_types.ts +11 -5
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +4 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +43 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +41 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +22 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +40 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +10 -19
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +25 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +34 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +31 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -5
- package/src/parsers/manifest/smooth/create_parser.ts +24 -22
- package/src/parsers/manifest/smooth/representation_index.ts +17 -15
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +39 -36
- package/src/parsers/manifest/utils/check_manifest_ids.ts +2 -2
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +16 -7
- package/src/parsers/manifest/utils/index_helpers.ts +22 -12
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/srt/html.ts +16 -10
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/parsers/texttracks/ttml/nodes.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -6
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +18 -0
- package/src/transports/README.md +8 -4
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +68 -27
- package/src/transports/dash/image_pipelines.ts +58 -45
- package/src/transports/dash/init_segment_loader.ts +68 -45
- package/src/transports/dash/low_latency_segment_loader.ts +52 -68
- package/src/transports/dash/manifest_parser.ts +148 -78
- package/src/transports/dash/pipelines.ts +10 -10
- package/src/transports/dash/segment_loader.ts +117 -90
- package/src/transports/dash/segment_parser.ts +46 -45
- package/src/transports/dash/text_loader.ts +55 -34
- package/src/transports/dash/text_parser.ts +91 -78
- package/src/transports/local/pipelines.ts +19 -21
- package/src/transports/local/segment_loader.ts +86 -40
- package/src/transports/local/segment_parser.ts +31 -38
- package/src/transports/local/text_parser.ts +82 -74
- package/src/transports/metaplaylist/manifest_loader.ts +17 -15
- package/src/transports/metaplaylist/pipelines.ts +158 -181
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/isobmff/create_boxes.ts +5 -5
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +1 -4
- package/src/transports/smooth/pipelines.ts +206 -187
- package/src/transports/smooth/segment_loader.ts +138 -87
- package/src/transports/smooth/utils.ts +13 -0
- package/src/transports/types.ts +639 -439
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +24 -24
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +31 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +83 -60
- package/src/transports/utils/generate_manifest_loader.ts +34 -12
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/array_find.test.ts +5 -5
- package/src/utils/__tests__/array_find_index.test.ts +6 -5
- package/src/utils/__tests__/array_includes.test.ts +1 -0
- package/src/utils/__tests__/assert.test.ts +38 -21
- package/src/utils/__tests__/assert_unreachable.test.ts +8 -7
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/flat_map.test.ts +18 -6
- package/src/utils/__tests__/id_generator.test.ts +3 -3
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/__tests__/promise.test.ts +1 -1
- package/src/utils/__tests__/starts_with.test.ts +2 -0
- package/src/utils/array_find.ts +11 -3
- package/src/utils/array_find_index.ts +11 -3
- package/src/utils/assert.ts +5 -2
- package/src/utils/cancellable_sleep.ts +51 -0
- package/src/utils/cast_to_observable.ts +12 -13
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/flat_map.ts +10 -8
- package/src/utils/id_generator.ts +2 -1
- package/src/utils/object_assign.ts +1 -1
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +175 -147
- package/src/utils/request/index.ts +6 -6
- package/src/utils/request/xhr.ts +144 -128
- package/src/utils/rx-from_cancellable_promise.ts +66 -0
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/src/utils/task_canceller.ts +326 -0
- package/src/utils/uniq.ts +1 -1
- package/tsconfig.json +5 -1
- package/tsconfig.modules.json +9 -3
- package/dist/_esm5.processed/compat/is_playback_stuck.d.ts +0 -28
- package/dist/_esm5.processed/compat/is_playback_stuck.js +0 -33
- package/dist/_esm5.processed/core/abr/cached_segment_detector.js +0 -60
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -52
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -129
- package/dist/_esm5.processed/core/api/clock.js +0 -335
- package/dist/_esm5.processed/core/fetchers/manifest/get_manifest_backoff_options.js +0 -38
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.d.ts +0 -98
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.js +0 -124
- package/dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.js +0 -32
- package/dist/_esm5.processed/core/fetchers/utils/create_request_scheduler.js +0 -38
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -56
- package/dist/_esm5.processed/core/stream/utils.d.ts +0 -60
- package/dist/_esm5.processed/core/stream/utils.js +0 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/dist/_esm5.processed/transports/utils/return_parsed_manifest.js +0 -32
- package/scripts/clean-up_builds +0 -18
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/scripts/generate_builds +0 -224
- package/scripts/list-npm-scripts-info.js +0 -39
- package/src/compat/is_playback_stuck.ts +0 -42
- package/src/core/abr/cached_segment_detector.ts +0 -86
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/api/clock.ts +0 -497
- package/src/core/fetchers/manifest/get_manifest_backoff_options.ts +0 -50
- package/src/core/fetchers/segment/create_segment_loader.ts +0 -251
- package/src/core/fetchers/segment/get_segment_backoff_options.ts +0 -45
- package/src/core/fetchers/utils/create_request_scheduler.ts +0 -56
- package/src/core/init/create_stream_clock.ts +0 -94
- package/src/core/stream/utils.ts +0 -97
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
- package/src/transports/utils/return_parsed_manifest.ts +0 -47
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { concat as observableConcat, EMPTY, merge as observableMerge, of as observableOf, ReplaySubject, throwError, } from "rxjs";
|
|
17
|
-
import { catchError, filter, ignoreElements, map, mergeMap, shareReplay, take, tap, } from "rxjs/operators";
|
|
16
|
+
import { catchError, concat as observableConcat, EMPTY, filter, ignoreElements, map, merge as observableMerge, mergeMap, of as observableOf, ReplaySubject, shareReplay, take, tap, throwError, } from "rxjs";
|
|
18
17
|
import { events, generateKeyRequest, getInitData, } from "../../compat/";
|
|
19
18
|
import config from "../../config";
|
|
20
19
|
import { EncryptedMediaError } from "../../errors";
|
|
@@ -80,12 +79,12 @@ export default function EMEManager(mediaElement, keySystemsConfigs, contentProte
|
|
|
80
79
|
return evt.type === "attached-media-keys";
|
|
81
80
|
}), take(1));
|
|
82
81
|
/** Parsed `encrypted` events coming from the HTMLMediaElement. */
|
|
83
|
-
var mediaEncryptedEvents$ = onEncrypted$(mediaElement).pipe(tap(function (
|
|
84
|
-
log.debug("EME: Encrypted event received from media element."
|
|
82
|
+
var mediaEncryptedEvents$ = onEncrypted$(mediaElement).pipe(tap(function () {
|
|
83
|
+
log.debug("EME: Encrypted event received from media element.");
|
|
85
84
|
}), filterMap(function (evt) { return getInitData(evt); }, null), shareReplay({ refCount: true })); // multiple Observables listen to that one
|
|
86
85
|
// as soon as the EMEManager is subscribed
|
|
87
86
|
/** Encryption events coming from the `contentProtections$` argument. */
|
|
88
|
-
var externalEvents$ = contentProtections$.pipe(tap(function (
|
|
87
|
+
var externalEvents$ = contentProtections$.pipe(tap(function () { log.debug("EME: Encrypted event received from Player"); }));
|
|
89
88
|
/** Emit events signaling that an encryption initialization data is encountered. */
|
|
90
89
|
var initializationData$ = observableMerge(externalEvents$, mediaEncryptedEvents$);
|
|
91
90
|
/** Create MediaKeySessions and handle the corresponding events. */
|
|
@@ -145,8 +144,7 @@ export default function EMEManager(mediaElement, keySystemsConfigs, contentProte
|
|
|
145
144
|
value: { initializationData: initializationData } });
|
|
146
145
|
}));
|
|
147
146
|
}
|
|
148
|
-
else if (!contentSessions.storeIfNone(initializationData, { initializationData: initializationData,
|
|
149
|
-
lastKeyUpdate$: lastKeyUpdate$ })) {
|
|
147
|
+
else if (!contentSessions.storeIfNone(initializationData, { initializationData: initializationData, lastKeyUpdate$: lastKeyUpdate$ })) {
|
|
150
148
|
log.debug("EME: Init data already received. Skipping it.");
|
|
151
149
|
return observableOf({ type: "init-data-ignored",
|
|
152
150
|
value: { initializationData: initializationData } });
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, of as observableOf, throwError as observableThrow, } from "rxjs";
|
|
17
|
-
import { catchError, map, } from "rxjs/operators";
|
|
16
|
+
import { catchError, defer as observableDefer, map, of as observableOf, throwError as observableThrow, } from "rxjs";
|
|
18
17
|
import { requestMediaKeySystemAccess, shouldRenewMediaKeys, } from "../../compat";
|
|
19
18
|
import config from "../../config";
|
|
20
19
|
import { EncryptedMediaError } from "../../errors";
|
|
@@ -122,16 +121,21 @@ function buildKeySystemConfigurations(ksName, keySystem) {
|
|
|
122
121
|
// More details here:
|
|
123
122
|
// https://storage.googleapis.com/wvdocs/Chrome_EME_Changes_and_Best_Practices.pdf
|
|
124
123
|
// https://www.w3.org/TR/encrypted-media/#get-supported-configuration-and-consent
|
|
125
|
-
var videoCapabilities = flatMap(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
124
|
+
var videoCapabilities = flatMap(audioRobustnesses, function (robustness) {
|
|
125
|
+
return ["video/mp4;codecs=\"avc1.4d401e\"",
|
|
126
|
+
"video/mp4;codecs=\"avc1.42e01e\"",
|
|
127
|
+
"video/webm;codecs=\"vp8\""].map(function (contentType) {
|
|
128
|
+
return robustness !== undefined ? { contentType: contentType, robustness: robustness } :
|
|
129
|
+
{ contentType: contentType };
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
var audioCapabilities = flatMap(audioRobustnesses, function (robustness) {
|
|
133
|
+
return ["audio/mp4;codecs=\"mp4a.40.2\"",
|
|
134
|
+
"audio/webm;codecs=opus"].map(function (contentType) {
|
|
135
|
+
return robustness !== undefined ? { contentType: contentType, robustness: robustness } :
|
|
136
|
+
{ contentType: contentType };
|
|
137
|
+
});
|
|
138
|
+
});
|
|
135
139
|
// TODO Re-test with a set contentType but an undefined robustness on the
|
|
136
140
|
// STBs on which this problem was found.
|
|
137
141
|
//
|
|
@@ -145,12 +149,7 @@ function buildKeySystemConfigurations(ksName, keySystem) {
|
|
|
145
149
|
// distinctiveIdentifier,
|
|
146
150
|
// persistentState,
|
|
147
151
|
// sessionTypes,
|
|
148
|
-
return [{ initDataTypes: ["cenc"],
|
|
149
|
-
videoCapabilities: videoCapabilities,
|
|
150
|
-
audioCapabilities: audioCapabilities,
|
|
151
|
-
distinctiveIdentifier: distinctiveIdentifier,
|
|
152
|
-
persistentState: persistentState,
|
|
153
|
-
sessionTypes: sessionTypes }];
|
|
152
|
+
return [{ initDataTypes: ["cenc"], videoCapabilities: videoCapabilities, audioCapabilities: audioCapabilities, distinctiveIdentifier: distinctiveIdentifier, persistentState: persistentState, sessionTypes: sessionTypes }];
|
|
154
153
|
}
|
|
155
154
|
/**
|
|
156
155
|
* Try to find a compatible key system from the keySystems array given.
|
|
@@ -180,7 +179,7 @@ export default function getMediaKeySystemAccess(mediaElement, keySystemsConfigs)
|
|
|
180
179
|
// one as exactly the same compatibility options.
|
|
181
180
|
var cachedKeySystemAccess = checkCachedMediaKeySystemAccess(keySystemsConfigs, currentState.mediaKeySystemAccess, currentState.keySystemOptions);
|
|
182
181
|
if (cachedKeySystemAccess !== null) {
|
|
183
|
-
log.info("EME: Found cached compatible keySystem"
|
|
182
|
+
log.info("EME: Found cached compatible keySystem");
|
|
184
183
|
return observableOf({
|
|
185
184
|
type: "reuse-media-key-system-access",
|
|
186
185
|
value: { mediaKeySystemAccess: cachedKeySystemAccess.keySystemAccess,
|
|
@@ -238,8 +237,8 @@ export default function getMediaKeySystemAccess(mediaElement, keySystemsConfigs)
|
|
|
238
237
|
}
|
|
239
238
|
var _a = keySystemsType[index], keyName = _a.keyName, keyType = _a.keyType, keySystemOptions = _a.keySystemOptions;
|
|
240
239
|
var keySystemConfigurations = buildKeySystemConfigurations(keyName, keySystemOptions);
|
|
241
|
-
log.debug("EME: Request keysystem access "
|
|
242
|
-
(index + 1
|
|
240
|
+
log.debug("EME: Request keysystem access ".concat(keyType, ",") +
|
|
241
|
+
"".concat(index + 1, " of ").concat(keySystemsType.length), keySystemConfigurations);
|
|
243
242
|
return requestMediaKeySystemAccess(keyType, keySystemConfigurations).pipe(map(function (keySystemAccess) {
|
|
244
243
|
log.info("EME: Found compatible keysystem", keyType, keySystemConfigurations);
|
|
245
244
|
return { type: "create-media-key-system-access",
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { of as observableOf, } from "rxjs";
|
|
17
|
-
import { catchError, map, mergeMap, } from "rxjs/operators";
|
|
16
|
+
import { catchError, map, mergeMap, of as observableOf, } from "rxjs";
|
|
18
17
|
import { EncryptedMediaError } from "../../errors";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import castToObservable from "../../utils/cast_to_observable";
|
|
@@ -59,19 +58,13 @@ export default function getMediaKeysInfos(mediaElement, keySystemsConfigs) {
|
|
|
59
58
|
if (ServerCertificateStore.hasOne(mediaKeys) === false ||
|
|
60
59
|
(!isNullOrUndefined(options.serverCertificate) &&
|
|
61
60
|
ServerCertificateStore.has(mediaKeys, options.serverCertificate))) {
|
|
62
|
-
return observableOf({ mediaKeys: mediaKeys,
|
|
63
|
-
mediaKeySystemAccess: mediaKeySystemAccess,
|
|
64
|
-
stores: { loadedSessionsStore: loadedSessionsStore, persistentSessionsStore: persistentSessionsStore },
|
|
65
|
-
options: options });
|
|
61
|
+
return observableOf({ mediaKeys: mediaKeys, mediaKeySystemAccess: mediaKeySystemAccess, stores: { loadedSessionsStore: loadedSessionsStore, persistentSessionsStore: persistentSessionsStore }, options: options });
|
|
66
62
|
}
|
|
67
63
|
}
|
|
68
64
|
return createMediaKeys(mediaKeySystemAccess).pipe(map(function (mediaKeys) {
|
|
69
|
-
log.info("EME: MediaKeys created with success"
|
|
65
|
+
log.info("EME: MediaKeys created with success");
|
|
70
66
|
var loadedSessionsStore = new LoadedSessionsStore(mediaKeys);
|
|
71
|
-
return { mediaKeys: mediaKeys,
|
|
72
|
-
mediaKeySystemAccess: mediaKeySystemAccess,
|
|
73
|
-
stores: { loadedSessionsStore: loadedSessionsStore, persistentSessionsStore: persistentSessionsStore },
|
|
74
|
-
options: options };
|
|
67
|
+
return { mediaKeys: mediaKeys, mediaKeySystemAccess: mediaKeySystemAccess, stores: { loadedSessionsStore: loadedSessionsStore, persistentSessionsStore: persistentSessionsStore }, options: options };
|
|
75
68
|
}));
|
|
76
69
|
}));
|
|
77
70
|
}
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { concat as observableConcat, defer as observableDefer, of as observableOf, } from "rxjs";
|
|
17
|
-
import { map, mergeMap, } from "rxjs/operators";
|
|
16
|
+
import { concat as observableConcat, defer as observableDefer, map, mergeMap, of as observableOf, } from "rxjs";
|
|
18
17
|
import log from "../../log";
|
|
19
18
|
import cleanOldLoadedSessions from "./clean_old_loaded_sessions";
|
|
20
19
|
import createSession from "./create_session";
|
|
@@ -48,8 +47,7 @@ export default function getSession(initializationData, stores, wantedSessionType
|
|
|
48
47
|
log.info("EME: Reuse loaded session", previousLoadedSession.sessionId);
|
|
49
48
|
return observableOf({ type: "loaded-open-session",
|
|
50
49
|
value: { mediaKeySession: previousLoadedSession,
|
|
51
|
-
sessionType: entry.sessionType,
|
|
52
|
-
initializationData: initializationData } });
|
|
50
|
+
sessionType: entry.sessionType, initializationData: initializationData } });
|
|
53
51
|
}
|
|
54
52
|
else if (persistentSessionsStore !== null) {
|
|
55
53
|
// If the session is not usable anymore, we can also remove it from the
|
|
@@ -64,8 +62,7 @@ export default function getSession(initializationData, stores, wantedSessionType
|
|
|
64
62
|
return observableConcat(cleanOldLoadedSessions(loadedSessionsStore, maxSessionCacheSize), createSession(stores, initializationData, wantedSessionType)
|
|
65
63
|
.pipe(map(function (evt) { return ({ type: evt.type,
|
|
66
64
|
value: { mediaKeySession: evt.value.mediaKeySession,
|
|
67
|
-
sessionType: evt.value.sessionType,
|
|
68
|
-
initializationData: initializationData } }); })));
|
|
65
|
+
sessionType: evt.value.sessionType, initializationData: initializationData } }); })));
|
|
69
66
|
}));
|
|
70
67
|
});
|
|
71
68
|
}
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { of as observableOf,
|
|
17
|
-
import { mapTo, mergeMap, startWith, take, } from "rxjs/operators";
|
|
16
|
+
import { filter, mapTo, mergeMap, of as observableOf, startWith, take, } from "rxjs";
|
|
18
17
|
import log from "../../log";
|
|
19
18
|
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
19
|
+
import createSharedReference from "../../utils/reference";
|
|
20
20
|
import attachMediaKeys, { disableMediaKeys, } from "./attach_media_keys";
|
|
21
21
|
import getDrmSystemId from "./get_drm_system_id";
|
|
22
22
|
import getMediaKeysInfos from "./get_media_keys";
|
|
@@ -44,7 +44,7 @@ export default function initMediaKeys(mediaElement, keySystemsConfigs) {
|
|
|
44
44
|
options.licenseStorage.disableRetroCompatibility === true) {
|
|
45
45
|
initializationDataSystemId = getDrmSystemId(mediaKeySystemAccess.keySystem);
|
|
46
46
|
}
|
|
47
|
-
var
|
|
47
|
+
var canAttachMediaKeys = createSharedReference(false);
|
|
48
48
|
var shouldDisableOldMediaKeys = mediaElement.mediaKeys !== null &&
|
|
49
49
|
mediaElement.mediaKeys !== undefined &&
|
|
50
50
|
mediaKeys !== mediaElement.mediaKeys;
|
|
@@ -55,20 +55,12 @@ export default function initMediaKeys(mediaElement, keySystemsConfigs) {
|
|
|
55
55
|
}
|
|
56
56
|
return disableOldMediaKeys$.pipe(mergeMap(function () {
|
|
57
57
|
log.debug("EME: Attaching current MediaKeys");
|
|
58
|
-
return
|
|
59
|
-
var stateToAttatch = { loadedSessionsStore: stores.loadedSessionsStore,
|
|
60
|
-
mediaKeySystemAccess: mediaKeySystemAccess,
|
|
61
|
-
mediaKeys: mediaKeys,
|
|
62
|
-
keySystemOptions: options };
|
|
58
|
+
return canAttachMediaKeys.asObservable().pipe(filter(function (canAttach) { return canAttach; }), mergeMap(function () {
|
|
59
|
+
var stateToAttatch = { loadedSessionsStore: stores.loadedSessionsStore, mediaKeySystemAccess: mediaKeySystemAccess, mediaKeys: mediaKeys, keySystemOptions: options };
|
|
63
60
|
return attachMediaKeys(mediaElement, stateToAttatch);
|
|
64
61
|
}), take(1), mapTo({ type: "attached-media-keys",
|
|
65
62
|
value: { mediaKeySystemAccess: mediaKeySystemAccess, mediaKeys: mediaKeys, stores: stores, options: options } }), startWith({ type: "created-media-keys",
|
|
66
|
-
value: { mediaKeySystemAccess: mediaKeySystemAccess,
|
|
67
|
-
initializationDataSystemId: initializationDataSystemId,
|
|
68
|
-
mediaKeys: mediaKeys,
|
|
69
|
-
stores: stores,
|
|
70
|
-
options: options,
|
|
71
|
-
attachMediaKeys$: attachMediaKeys$ } }));
|
|
63
|
+
value: { mediaKeySystemAccess: mediaKeySystemAccess, initializationDataSystemId: initializationDataSystemId, mediaKeys: mediaKeys, stores: stores, options: options, canAttachMediaKeys: canAttachMediaKeys } }));
|
|
72
64
|
}));
|
|
73
65
|
}));
|
|
74
66
|
}
|
|
@@ -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, EMPTY, identity, merge as observableMerge, of as observableOf, Subject, TimeoutError, } from "rxjs";
|
|
32
|
-
import { catchError, concatMap, map, mapTo, mergeMap, startWith, takeUntil, tap, timeout, } from "rxjs/operators";
|
|
31
|
+
import { catchError, concat as observableConcat, concatMap, defer as observableDefer, EMPTY, identity, map, merge as observableMerge, mergeMap, of as observableOf, startWith, Subject, takeUntil, tap, timeout, TimeoutError, } from "rxjs";
|
|
33
32
|
import { events, } from "../../compat";
|
|
34
33
|
import { EncryptedMediaError, } from "../../errors";
|
|
35
34
|
import log from "../../log";
|
|
@@ -70,7 +69,7 @@ export { BlacklistedSessionError };
|
|
|
70
69
|
* @returns {Observable}
|
|
71
70
|
*/
|
|
72
71
|
export default function SessionEventsListener(session, keySystemOptions, keySystem, initializationData) {
|
|
73
|
-
log.info("EME: Binding session events", session);
|
|
72
|
+
log.info("EME: Binding session events", session.sessionId);
|
|
74
73
|
var sessionWarningSubject$ = new Subject();
|
|
75
74
|
var _a = keySystemOptions.getLicenseConfig, getLicenseConfig = _a === void 0 ? {} : _a;
|
|
76
75
|
var keyErrors = onKeyError$(session)
|
|
@@ -84,7 +83,7 @@ export default function SessionEventsListener(session, keySystemOptions, keySyst
|
|
|
84
83
|
var messageType = isNonEmptyString(messageEvent.messageType) ?
|
|
85
84
|
messageEvent.messageType :
|
|
86
85
|
"license-request";
|
|
87
|
-
log.info("EME: Received message event, type "
|
|
86
|
+
log.info("EME: Received message event, type ".concat(messageType), session.sessionId, messageEvent);
|
|
88
87
|
var getLicense$ = observableDefer(function () {
|
|
89
88
|
var getLicense = keySystemOptions.getLicense(message, messageType);
|
|
90
89
|
var getLicenseTimeout = isNullOrUndefined(getLicenseConfig.timeout) ?
|
|
@@ -124,7 +123,11 @@ export default function SessionEventsListener(session, keySystemOptions, keySyst
|
|
|
124
123
|
}));
|
|
125
124
|
var sessionEvents = observableMerge(getKeyStatusesEvents(session, keySystemOptions, keySystem), sessionUpdates, keyErrors, sessionWarningSubject$);
|
|
126
125
|
return !isNullOrUndefined(session.closed) ?
|
|
127
|
-
sessionEvents
|
|
126
|
+
sessionEvents
|
|
127
|
+
// TODO There is a subtle TypeScript issue there that made casting
|
|
128
|
+
// to a type-compatible type mandatory. If a more elegant solution
|
|
129
|
+
// can be found, it should be preffered.
|
|
130
|
+
.pipe(takeUntil(castToObservable(session.closed))) :
|
|
128
131
|
sessionEvents;
|
|
129
132
|
}
|
|
130
133
|
/**
|
|
@@ -147,8 +150,7 @@ function getKeyStatusesEvents(session, options, keySystem) {
|
|
|
147
150
|
var warnings$ = warnings.length > 0 ? observableOf.apply(void 0, warnings) :
|
|
148
151
|
EMPTY;
|
|
149
152
|
var keysUpdate$ = observableOf({ type: "keys-update",
|
|
150
|
-
value: { whitelistedKeyIds: whitelistedKeyIds,
|
|
151
|
-
blacklistedKeyIDs: blacklistedKeyIDs } });
|
|
153
|
+
value: { whitelistedKeyIds: whitelistedKeyIds, blacklistedKeyIDs: blacklistedKeyIDs } });
|
|
152
154
|
return observableConcat(warnings$, keysUpdate$);
|
|
153
155
|
});
|
|
154
156
|
}
|
|
@@ -189,8 +191,8 @@ function updateSessionWithMessage(session, message, initializationData) {
|
|
|
189
191
|
var reason = error instanceof Error ? error.toString() :
|
|
190
192
|
"`session.update` failed";
|
|
191
193
|
throw new EncryptedMediaError("KEY_UPDATE_ERROR", reason);
|
|
192
|
-
}), tap(function () { log.info("EME: MediaKeySession update succeeded."); }),
|
|
193
|
-
value: { session: session, license: message, initializationData: initializationData } }));
|
|
194
|
+
}), tap(function () { log.info("EME: MediaKeySession update succeeded."); }), map(function () { return ({ type: "session-updated",
|
|
195
|
+
value: { session: session, license: message, initializationData: initializationData } }); }));
|
|
194
196
|
}
|
|
195
197
|
/**
|
|
196
198
|
* @param {MediaKeySession}
|
|
@@ -199,7 +201,7 @@ function updateSessionWithMessage(session, message, initializationData) {
|
|
|
199
201
|
* @returns {Observable}
|
|
200
202
|
*/
|
|
201
203
|
function handleKeyStatusesChangeEvent(session, keySystemOptions, keySystem, keyStatusesEvent) {
|
|
202
|
-
log.info("EME: keystatuseschange event received", session
|
|
204
|
+
log.info("EME: keystatuseschange event received", session.sessionId);
|
|
203
205
|
var callback$ = observableDefer(function () {
|
|
204
206
|
return tryCatch(function () {
|
|
205
207
|
if (typeof keySystemOptions.onKeyStatusesChange !== "function") {
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, EMPTY, of as observableOf, } from "rxjs";
|
|
17
|
-
import { catchError, ignoreElements, tap, } from "rxjs/operators";
|
|
16
|
+
import { catchError, defer as observableDefer, EMPTY, ignoreElements, tap, of as observableOf, } from "rxjs";
|
|
18
17
|
import { EncryptedMediaError } from "../../errors";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import castToObservable from "../../utils/cast_to_observable";
|
|
@@ -70,7 +69,13 @@ export default function trySettingServerCertificate(mediaKeys, serverCertificate
|
|
|
70
69
|
// know if we attached the server certificate or not.
|
|
71
70
|
// Calling `prepare` allow to invalidate temporarily that status.
|
|
72
71
|
ServerCertificateStore.prepare(mediaKeys);
|
|
73
|
-
return setServerCertificate(mediaKeys, serverCertificate).pipe(tap(function () { ServerCertificateStore.set(mediaKeys, serverCertificate); }),
|
|
72
|
+
return setServerCertificate(mediaKeys, serverCertificate).pipe(tap(function () { ServerCertificateStore.set(mediaKeys, serverCertificate); }),
|
|
73
|
+
// NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
|
|
74
|
+
// first type parameter as `any` instead of the perfectly fine `unknown`,
|
|
75
|
+
// leading to linter issues, as it forbids the usage of `any`.
|
|
76
|
+
// This is why we're disabling the eslint rule.
|
|
77
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
78
|
+
ignoreElements(), catchError(function (error) { return observableOf({
|
|
74
79
|
type: "warning",
|
|
75
80
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
76
81
|
value: error,
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Subject } from "rxjs";
|
|
17
16
|
import { ICustomMediaKeys, ICustomMediaKeySession, ICustomMediaKeySystemAccess } from "../../compat";
|
|
18
17
|
import { ICustomError } from "../../errors";
|
|
18
|
+
import { ISharedReference } from "../../utils/reference";
|
|
19
19
|
import LoadedSessionsStore from "./utils/loaded_sessions_store";
|
|
20
20
|
import PersistentSessionsStore from "./utils/persistent_sessions_store";
|
|
21
21
|
/** Information about the encryption initialization data. */
|
|
@@ -34,7 +34,7 @@ export interface IInitializationDataInfo {
|
|
|
34
34
|
* `undefined` when not known (different from an empty array - which would
|
|
35
35
|
* just mean that there's no key id involved).
|
|
36
36
|
*/
|
|
37
|
-
keyIds?: Uint8Array[];
|
|
37
|
+
keyIds?: Uint8Array[] | undefined;
|
|
38
38
|
/** Every initialization data for that type. */
|
|
39
39
|
values: Array<{
|
|
40
40
|
/**
|
|
@@ -73,8 +73,10 @@ export interface IEncryptedEvent {
|
|
|
73
73
|
* current content.
|
|
74
74
|
* This is necessary before creating a MediaKeySession which will allow
|
|
75
75
|
* encryption keys to be communicated.
|
|
76
|
-
*
|
|
77
|
-
*
|
|
76
|
+
*
|
|
77
|
+
* It carries a shared reference (`canAttachMediaKeys`) that should be setted to
|
|
78
|
+
* `true` to indicate that RxPlayer's EME logic can start to attach the
|
|
79
|
+
* `MediaKeys` instance to the HTMLMediaElement.
|
|
78
80
|
*/
|
|
79
81
|
export interface ICreatedMediaKeysEvent {
|
|
80
82
|
type: "created-media-keys";
|
|
@@ -106,9 +108,15 @@ export interface ICreatedMediaKeysEvent {
|
|
|
106
108
|
initializationDataSystemId: string | undefined;
|
|
107
109
|
/** The MediaKeys instance. */
|
|
108
110
|
mediaKeys: MediaKeys | ICustomMediaKeys;
|
|
111
|
+
/** Stores allowing to cache MediaKeySession instances. */
|
|
109
112
|
stores: IMediaKeySessionStores;
|
|
113
|
+
/** key system options considered. */
|
|
110
114
|
options: IKeySystemOption;
|
|
111
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Shared reference that should be set to `true` once the `MediaKeys`
|
|
117
|
+
* instance can be attached to the HTMLMediaElement.
|
|
118
|
+
*/
|
|
119
|
+
canAttachMediaKeys: ISharedReference<boolean>;
|
|
112
120
|
};
|
|
113
121
|
}
|
|
114
122
|
/**
|
|
@@ -264,7 +272,7 @@ export interface IContentProtection {
|
|
|
264
272
|
* `undefined` when not known (different from an empty array - which would
|
|
265
273
|
* just mean that there's no key id involved).
|
|
266
274
|
*/
|
|
267
|
-
keyIds?: Uint8Array[];
|
|
275
|
+
keyIds?: Uint8Array[] | undefined;
|
|
268
276
|
/** Every initialization data for that type. */
|
|
269
277
|
values: Array<{
|
|
270
278
|
/**
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { of as observableOf, timer, race as observableRace, } from "rxjs";
|
|
17
|
-
import { catchError, mergeMap, take, tap, } from "rxjs/operators";
|
|
16
|
+
import { catchError, mergeMap, of as observableOf, take, tap, timer, race as observableRace, } from "rxjs";
|
|
18
17
|
import { closeSession, } from "../../../compat";
|
|
19
18
|
import { onKeyMessage$, onKeyStatusesChange$ } from "../../../compat/event_listeners";
|
|
20
19
|
import config from "../../../config";
|
|
@@ -39,7 +38,7 @@ export default function safelyCloseMediaKeySession(mediaKeySession) {
|
|
|
39
38
|
* @returns {Observable}
|
|
40
39
|
*/
|
|
41
40
|
function recursivelyTryToCloseMediaKeySession(retryNb) {
|
|
42
|
-
log.debug("EME: Trying to close a MediaKeySession", mediaKeySession, retryNb);
|
|
41
|
+
log.debug("EME: Trying to close a MediaKeySession", mediaKeySession.sessionId, retryNb);
|
|
43
42
|
return closeSession(mediaKeySession).pipe(tap(function () { log.debug("EME: Succeeded to close MediaKeySession"); }), catchError(function (err) {
|
|
44
43
|
// Unitialized MediaKeySession may not close properly until their
|
|
45
44
|
// corresponding `generateRequest` or `load` call are handled by the
|
|
@@ -97,9 +97,7 @@ var InitDataStore = /** @class */ (function () {
|
|
|
97
97
|
this._storage.splice(indexOf, 1);
|
|
98
98
|
}
|
|
99
99
|
var values = this._formatValuesForStore(initializationData.values);
|
|
100
|
-
this._storage.push({ type: initializationData.type,
|
|
101
|
-
values: values,
|
|
102
|
-
payload: payload });
|
|
100
|
+
this._storage.push({ type: initializationData.type, values: values, payload: payload });
|
|
103
101
|
};
|
|
104
102
|
/**
|
|
105
103
|
* Add to the store a value linked to the corresponding initData and
|
|
@@ -122,9 +120,7 @@ var InitDataStore = /** @class */ (function () {
|
|
|
122
120
|
return false;
|
|
123
121
|
}
|
|
124
122
|
var values = this._formatValuesForStore(initializationData.values);
|
|
125
|
-
this._storage.push({ type: initializationData.type,
|
|
126
|
-
values: values,
|
|
127
|
-
payload: payload });
|
|
123
|
+
this._storage.push({ type: initializationData.type, values: values, payload: payload });
|
|
128
124
|
return true;
|
|
129
125
|
};
|
|
130
126
|
/**
|
|
@@ -177,9 +173,7 @@ var InitDataStore = /** @class */ (function () {
|
|
|
177
173
|
1; })
|
|
178
174
|
.map(function (_a) {
|
|
179
175
|
var systemId = _a.systemId, data = _a.data;
|
|
180
|
-
return ({ systemId: systemId,
|
|
181
|
-
data: data,
|
|
182
|
-
hash: hashBuffer(data) });
|
|
176
|
+
return ({ systemId: systemId, data: data, hash: hashBuffer(data) });
|
|
183
177
|
});
|
|
184
178
|
};
|
|
185
179
|
return InitDataStore;
|
|
@@ -33,7 +33,7 @@ export default function isSessionUsable(loadedSession) {
|
|
|
33
33
|
keyStatuses.push(keyStatus);
|
|
34
34
|
});
|
|
35
35
|
if (keyStatuses.length <= 0) {
|
|
36
|
-
log.debug("EME: isSessionUsable: MediaKeySession given has an empty keyStatuses", loadedSession);
|
|
36
|
+
log.debug("EME: isSessionUsable: MediaKeySession given has an empty keyStatuses", loadedSession.sessionId);
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
39
|
if (arrayIncludes(keyStatuses, "expired")) {
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { concat as observableConcat, defer as observableDefer, EMPTY, merge as observableMerge, of as observableOf, } from "rxjs";
|
|
17
|
-
import { ignoreElements } from "rxjs/operators";
|
|
16
|
+
import { concat as observableConcat, defer as observableDefer, EMPTY, ignoreElements, merge as observableMerge, of as observableOf, } from "rxjs";
|
|
18
17
|
import { EncryptedMediaError } from "../../../errors";
|
|
19
18
|
import log from "../../../log";
|
|
20
19
|
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
@@ -110,10 +109,10 @@ var LoadedSessionsStore = /** @class */ (function () {
|
|
|
110
109
|
})
|
|
111
110
|
.catch(function (e) {
|
|
112
111
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
113
|
-
log.warn("EME-LSS: MediaKeySession.closed rejected: "
|
|
112
|
+
log.warn("EME-LSS: MediaKeySession.closed rejected: ".concat(e));
|
|
114
113
|
});
|
|
115
114
|
}
|
|
116
|
-
log.debug("EME-LSS: Add MediaKeySession", entry);
|
|
115
|
+
log.debug("EME-LSS: Add MediaKeySession", entry.sessionType);
|
|
117
116
|
this._storage.store(initializationData, entry);
|
|
118
117
|
return mediaKeySession;
|
|
119
118
|
};
|
|
@@ -154,10 +154,8 @@ var PersistentSessionsStore = /** @class */ (function () {
|
|
|
154
154
|
else if (currentEntry !== null) { // currentEntry has a different sessionId
|
|
155
155
|
this.delete(initData);
|
|
156
156
|
}
|
|
157
|
-
log.info("EME-PSS: Add new session", sessionId
|
|
158
|
-
this._entries.push({ version: 3,
|
|
159
|
-
sessionId: sessionId,
|
|
160
|
-
values: this._formatValuesForStore(initData.values),
|
|
157
|
+
log.info("EME-PSS: Add new session", sessionId);
|
|
158
|
+
this._entries.push({ version: 3, sessionId: sessionId, values: this._formatValuesForStore(initData.values),
|
|
161
159
|
initDataType: initData.type });
|
|
162
160
|
this._save();
|
|
163
161
|
};
|
|
@@ -174,12 +172,12 @@ var PersistentSessionsStore = /** @class */ (function () {
|
|
|
174
172
|
return;
|
|
175
173
|
}
|
|
176
174
|
var entry = this._entries[index];
|
|
177
|
-
log.warn("EME-PSS: Delete session from store", entry);
|
|
175
|
+
log.warn("EME-PSS: Delete session from store", entry.sessionId);
|
|
178
176
|
this._entries.splice(index, 1);
|
|
179
177
|
this._save();
|
|
180
178
|
};
|
|
181
179
|
PersistentSessionsStore.prototype.deleteOldSessions = function (sessionsToDelete) {
|
|
182
|
-
log.info("EME-PSS: Deleting last "
|
|
180
|
+
log.info("EME-PSS: Deleting last ".concat(sessionsToDelete, " sessions."));
|
|
183
181
|
if (sessionsToDelete <= 0) {
|
|
184
182
|
return;
|
|
185
183
|
}
|
|
@@ -286,8 +284,7 @@ var PersistentSessionsStore = /** @class */ (function () {
|
|
|
286
284
|
1; })
|
|
287
285
|
.map(function (_a) {
|
|
288
286
|
var systemId = _a.systemId, data = _a.data;
|
|
289
|
-
return ({ systemId: systemId,
|
|
290
|
-
data: new InitDataContainer(data),
|
|
287
|
+
return ({ systemId: systemId, data: new InitDataContainer(data),
|
|
291
288
|
hash: hashBuffer(data) });
|
|
292
289
|
});
|
|
293
290
|
};
|
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import ManifestFetcher, { IManifestFetcherParsedResult, IManifestFetcherParserOptions, IManifestFetcherWarningEvent } from "./manifest";
|
|
17
|
-
import SegmentFetcherCreator, { IPrioritizedSegmentFetcher, IPrioritizedSegmentFetcherEvent, ISegmentFetcherChunkCompleteEvent, ISegmentFetcherChunkEvent, ISegmentFetcherCreatorBackoffOptions, ISegmentFetcherEvent,
|
|
18
|
-
export { ManifestFetcher, SegmentFetcherCreator, IManifestFetcherParserOptions, IManifestFetcherParsedResult, IManifestFetcherWarningEvent, IPrioritizedSegmentFetcher, IPrioritizedSegmentFetcherEvent, ISegmentFetcherEvent, ISegmentFetcherCreatorBackoffOptions, ISegmentFetcherChunkEvent, ISegmentFetcherChunkCompleteEvent,
|
|
17
|
+
import SegmentFetcherCreator, { IPrioritizedSegmentFetcher, IPrioritizedSegmentFetcherEvent, ISegmentFetcherChunkCompleteEvent, ISegmentFetcherChunkEvent, ISegmentFetcherCreatorBackoffOptions, ISegmentFetcherEvent, ISegmentFetcherRetry } from "./segment";
|
|
18
|
+
export { ManifestFetcher, SegmentFetcherCreator, IManifestFetcherParserOptions, IManifestFetcherParsedResult, IManifestFetcherWarningEvent, IPrioritizedSegmentFetcher, IPrioritizedSegmentFetcherEvent, ISegmentFetcherEvent, ISegmentFetcherCreatorBackoffOptions, ISegmentFetcherChunkEvent, ISegmentFetcherChunkCompleteEvent, ISegmentFetcherRetry, };
|
|
@@ -27,10 +27,10 @@ export interface IManifestFetcherParsedResult {
|
|
|
27
27
|
* The time (`performance.now()`) at which the request was started (at which
|
|
28
28
|
* the JavaScript call was done).
|
|
29
29
|
*/
|
|
30
|
-
sendingTime?: number;
|
|
30
|
+
sendingTime?: number | undefined;
|
|
31
31
|
/** The time (`performance.now()`) at which the request was fully received. */
|
|
32
|
-
receivedTime?: number;
|
|
33
|
-
parsingTime?: number;
|
|
32
|
+
receivedTime?: number | undefined;
|
|
33
|
+
parsingTime?: number | undefined;
|
|
34
34
|
}
|
|
35
35
|
/** Emitted when a fetching or parsing minor error happened. */
|
|
36
36
|
export interface IManifestFetcherWarningEvent {
|
|
@@ -51,7 +51,7 @@ export interface IManifestFetcherParserOptions {
|
|
|
51
51
|
* If set, offset to add to `performance.now()` to obtain the current
|
|
52
52
|
* server's time.
|
|
53
53
|
*/
|
|
54
|
-
externalClockOffset?: number;
|
|
54
|
+
externalClockOffset?: number | undefined;
|
|
55
55
|
/** The previous value of the Manifest (when updating). */
|
|
56
56
|
previousManifest: Manifest | null;
|
|
57
57
|
/**
|
|
@@ -64,7 +64,7 @@ export interface IManifestFetcherParserOptions {
|
|
|
64
64
|
unsafeMode: boolean;
|
|
65
65
|
}
|
|
66
66
|
/** Options used by `createManifestFetcher`. */
|
|
67
|
-
export interface
|
|
67
|
+
export interface IManifestFetcherSettings {
|
|
68
68
|
/**
|
|
69
69
|
* Whether the content is played in a low-latency mode.
|
|
70
70
|
* This has an impact on default backoff delays.
|
|
@@ -94,21 +94,29 @@ export interface IManifestFetcherBackoffOptions {
|
|
|
94
94
|
* ```
|
|
95
95
|
*/
|
|
96
96
|
export default class ManifestFetcher {
|
|
97
|
-
private
|
|
97
|
+
private _settings;
|
|
98
98
|
private _manifestUrl;
|
|
99
99
|
private _pipelines;
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
102
|
-
* @param {
|
|
103
|
-
*
|
|
101
|
+
* Construct a new ManifestFetcher.
|
|
102
|
+
* @param {string | undefined} url - Default Manifest url, will be used when
|
|
103
|
+
* no URL is provided to the `fetch` function.
|
|
104
|
+
* `undefined` if unknown or if a Manifest should be retrieved through other
|
|
105
|
+
* means than an HTTP request.
|
|
106
|
+
* @param {Object} pipelines - Transport pipelines used to perform the
|
|
107
|
+
* Manifest loading and parsing operations.
|
|
108
|
+
* @param {Object} settings - Configure the `ManifestFetcher`.
|
|
104
109
|
*/
|
|
105
|
-
constructor(url: string | undefined, pipelines: ITransportPipelines,
|
|
110
|
+
constructor(url: string | undefined, pipelines: ITransportPipelines, settings: IManifestFetcherSettings);
|
|
106
111
|
/**
|
|
107
|
-
* (re-)Load the Manifest
|
|
112
|
+
* (re-)Load the Manifest.
|
|
113
|
+
* This method does not yet parse it, parsing will then be available through
|
|
114
|
+
* a callback available on the response.
|
|
108
115
|
*
|
|
109
116
|
* You can set an `url` on which that Manifest will be requested.
|
|
110
|
-
* If not set, the regular Manifest url - defined on the
|
|
111
|
-
*
|
|
117
|
+
* If not set, the regular Manifest url - defined on the `ManifestFetcher`
|
|
118
|
+
* instanciation - will be used instead.
|
|
119
|
+
*
|
|
112
120
|
* @param {string} [url]
|
|
113
121
|
* @returns {Observable}
|
|
114
122
|
*/
|
|
@@ -134,4 +142,11 @@ export default class ManifestFetcher {
|
|
|
134
142
|
* @returns {Observable}
|
|
135
143
|
*/
|
|
136
144
|
private _parseLoadedManifest;
|
|
145
|
+
/**
|
|
146
|
+
* Construct "backoff settings" that can be used with a range of functions
|
|
147
|
+
* allowing to perform multiple request attempts
|
|
148
|
+
* @param {Function} onRetry
|
|
149
|
+
* @returns {Object}
|
|
150
|
+
*/
|
|
151
|
+
private _getBackoffSetting;
|
|
137
152
|
}
|