rx-player 3.25.2 → 3.26.3-dev.2022021400
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/.github/workflows/checks.yml +99 -0
- package/.github/workflows/perfs.yml +22 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +142 -70
- package/CONTRIBUTING.md +68 -3
- package/MAINTAINERS.md +1 -1
- package/README.md +121 -73
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +14 -9
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +7 -19
- package/dist/_esm5.processed/compat/browser_detection.js +4 -12
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +2 -4
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +4 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +7 -20
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +18 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +7 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.d.ts +21 -0
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +9 -10
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -12
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +22 -25
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +2 -1
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +5 -4
- package/dist/_esm5.processed/compat/event_listeners.js +21 -35
- package/dist/_esm5.processed/compat/fullscreen.js +1 -5
- package/dist/_esm5.processed/compat/index.d.ts +3 -4
- package/dist/_esm5.processed/compat/index.js +3 -4
- package/dist/_esm5.processed/compat/is_vtt_cue.js +1 -2
- package/dist/_esm5.processed/compat/make_vtt_cue.js +11 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +3 -0
- package/dist/_esm5.processed/compat/play.d.ts +1 -1
- package/dist/_esm5.processed/compat/play.js +1 -1
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +72 -13
- package/dist/_esm5.processed/config.js +73 -14
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -17
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +26 -8
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +5 -8
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +35 -52
- package/dist/_esm5.processed/core/abr/representation_estimator.js +114 -65
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/get_player_state.d.ts +3 -4
- package/dist/_esm5.processed/core/api/get_player_state.js +2 -2
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +25 -15
- package/dist/_esm5.processed/core/api/option_utils.d.ts +5 -5
- package/dist/_esm5.processed/core/api/option_utils.js +6 -40
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +11 -10
- package/dist/_esm5.processed/core/api/public_api.js +118 -140
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +7 -8
- package/dist/_esm5.processed/core/api/track_choice_manager.js +54 -57
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.d.ts +4 -6
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +25 -32
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +2 -6
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -9
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +5 -7
- package/dist/_esm5.processed/core/eme/find_key_system.js +20 -21
- package/dist/_esm5.processed/core/eme/get_media_keys.js +4 -11
- package/dist/_esm5.processed/core/eme/get_session.js +3 -6
- package/dist/_esm5.processed/core/eme/init_media_keys.js +6 -14
- package/dist/_esm5.processed/core/eme/session_events_listener.js +12 -10
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +14 -6
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +3 -9
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +5 -8
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +28 -13
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +258 -65
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +13 -31
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.js +1 -4
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +101 -19
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +239 -99
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +38 -21
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +13 -10
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.d.ts +37 -22
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +129 -59
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +17 -8
- package/dist/_esm5.processed/{transports/utils/return_parsed_manifest.d.ts → core/init/emit_loaded_event.d.ts} +9 -8
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +47 -0
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/events_generators.d.ts +3 -5
- package/dist/_esm5.processed/core/init/events_generators.js +5 -16
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +56 -22
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +65 -56
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +8 -7
- package/dist/_esm5.processed/core/init/initialize_directfile.js +31 -33
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +12 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.js +20 -18
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +9 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.js +30 -43
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +4 -4
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +11 -18
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +12 -7
- package/dist/_esm5.processed/core/init/stall_avoider.js +102 -39
- package/dist/_esm5.processed/core/init/stream_events_emitter/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/refresh_scheduled_events_list.js +2 -12
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +11 -28
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +7 -6
- package/dist/_esm5.processed/core/init/update_playback_rate.js +11 -12
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +5 -5
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +32 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +15 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +52 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +33 -32
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +20 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +47 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +18 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +17 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +81 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +91 -0
- package/dist/_esm5.processed/core/{fetchers/utils/create_request_scheduler.d.ts → segment_buffers/inventory/index.d.ts} +5 -4
- package/dist/_esm5.processed/core/{fetchers/manifest/get_manifest_backoff_options.d.ts → segment_buffers/inventory/index.js} +2 -11
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.d.ts → inventory/segment_inventory.d.ts} +38 -39
- package/dist/_esm5.processed/core/segment_buffers/{segment_inventory.js → inventory/segment_inventory.js} +65 -28
- package/dist/_esm5.processed/core/{abr/cached_segment_detector.d.ts → segment_buffers/inventory/types.d.ts} +10 -9
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +16 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +18 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +38 -34
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -22
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +13 -6
- package/dist/_esm5.processed/core/stream/events_generators.js +20 -12
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_blacklisted_ranges.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +41 -41
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +12 -15
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +25 -11
- package/dist/_esm5.processed/core/stream/period/period_stream.js +39 -30
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +45 -0
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +48 -0
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +222 -0
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +254 -0
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +9 -12
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +10 -18
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +3 -1
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +108 -6
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +5 -3
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +4 -8
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +7 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +5 -9
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +12 -18
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +150 -209
- package/dist/_esm5.processed/core/stream/types.d.ts +65 -17
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/errors/request_error.js +3 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +7 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +26 -13
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_content_infos.js +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.d.ts +3 -6
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +32 -36
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +4 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +6 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.js +9 -23
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +28 -29
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +12 -10
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +5 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +10 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +12 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +6 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- package/dist/_esm5.processed/features/initialize_features.js +49 -47
- package/dist/_esm5.processed/features/list/directfile.js +1 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -10
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/adaptation.d.ts +10 -16
- package/dist/_esm5.processed/manifest/adaptation.js +3 -25
- package/dist/_esm5.processed/manifest/index.d.ts +5 -4
- package/dist/_esm5.processed/manifest/index.js +3 -2
- package/dist/_esm5.processed/manifest/manifest.d.ts +11 -11
- package/dist/_esm5.processed/manifest/manifest.js +14 -11
- package/dist/_esm5.processed/manifest/period.d.ts +4 -4
- package/dist/_esm5.processed/manifest/period.js +7 -16
- package/dist/_esm5.processed/manifest/representation.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.js +3 -7
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +95 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/update_periods.js +11 -7
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/utils.js +44 -0
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +54 -58
- package/dist/_esm5.processed/parsers/images/bif.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +9 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +8 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +5 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +8 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +16 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +12 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +11 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +3 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +34 -21
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +26 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -33
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +50 -57
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +29 -30
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +26 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +70 -65
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +24 -16
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +30 -42
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -36
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +28 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +13 -11
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +70 -29
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +14 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +9 -21
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +22 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +31 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +1 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +6 -11
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +13 -7
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -13
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +9 -30
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +5 -6
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +16 -6
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +12 -4
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +45 -29
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +11 -7
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +1 -5
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +10 -6
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +1 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/nodes.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +11 -15
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +1 -3
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +2 -7
- package/dist/_esm5.processed/public_types.d.ts +4 -0
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +1 -3
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +70 -9
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +12 -6
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +34 -36
- package/dist/_esm5.processed/transports/dash/init_segment_loader.d.ts +8 -4
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +32 -36
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +38 -40
- package/dist/_esm5.processed/transports/dash/manifest_parser.d.ts +3 -7
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +115 -52
- package/dist/_esm5.processed/transports/dash/pipelines.js +10 -10
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +14 -3
- package/dist/_esm5.processed/transports/dash/segment_loader.js +70 -57
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/segment_parser.js +15 -32
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +3 -4
- package/dist/_esm5.processed/transports/dash/text_loader.js +28 -18
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +5 -4
- package/dist/_esm5.processed/transports/dash/text_parser.js +58 -51
- package/dist/_esm5.processed/transports/local/pipelines.js +16 -14
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +8 -5
- package/dist/_esm5.processed/transports/local/segment_loader.js +69 -28
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +5 -3
- package/dist/_esm5.processed/transports/local/segment_parser.js +15 -27
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +9 -5
- package/dist/_esm5.processed/transports/local/text_parser.js +54 -53
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.d.ts +5 -5
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +7 -9
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +82 -138
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +3 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.d.ts +1 -4
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +1 -4
- package/dist/_esm5.processed/transports/smooth/pipelines.js +149 -155
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +6 -3
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +150 -107
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +9 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +11 -1
- package/dist/_esm5.processed/transports/types.d.ts +533 -376
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +45 -32
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +4 -4
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +16 -5
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +8 -12
- package/dist/_esm5.processed/utils/array_find.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find.js +0 -5
- package/dist/_esm5.processed/utils/array_find_index.d.ts +1 -1
- package/dist/_esm5.processed/utils/array_find_index.js +0 -5
- package/dist/_esm5.processed/utils/assert.d.ts +1 -1
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/cancellable_sleep.d.ts +30 -0
- package/dist/_esm5.processed/utils/cancellable_sleep.js +42 -0
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +11 -6
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/flat_map.js +0 -6
- package/dist/_esm5.processed/utils/id_generator.d.ts +2 -1
- package/dist/_esm5.processed/utils/id_generator.js +2 -1
- package/dist/_esm5.processed/utils/languages/normalize.js +1 -3
- package/dist/_esm5.processed/utils/ranges.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +64 -27
- package/dist/_esm5.processed/utils/request/fetch.js +95 -113
- package/dist/_esm5.processed/utils/request/index.d.ts +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +64 -47
- package/dist/_esm5.processed/utils/request/xhr.js +49 -43
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +39 -0
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +58 -0
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +240 -0
- package/dist/_esm5.processed/utils/task_canceller.js +289 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +8775 -6211
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -4
- package/package.json +122 -106
- package/scripts/README.md +11 -0
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +197 -0
- package/scripts/build/templates/experimental/features/index.d.ts +16 -0
- package/scripts/build/templates/experimental/features/index.js +16 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +18 -0
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +18 -0
- package/scripts/build/templates/experimental/tools/index.d.ts +16 -0
- package/scripts/build/templates/experimental/tools/index.js +16 -0
- package/scripts/build/templates/features/index.d.ts +16 -0
- package/scripts/build/templates/features/index.js +16 -0
- package/scripts/build/templates/logger/index.d.ts +17 -0
- package/scripts/build/templates/logger/index.js +17 -0
- package/scripts/build/templates/minimal/index.d.ts +17 -0
- package/scripts/build/templates/minimal/index.js +17 -0
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +18 -0
- package/scripts/build/templates/tools/TextTrackRenderer.js +18 -0
- package/scripts/build/templates/tools/index.d.ts +16 -0
- package/scripts/build/templates/tools/index.js +16 -0
- package/scripts/build/templates/tools/string-utils.d.ts +18 -0
- package/{dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.d.ts → scripts/build/templates/tools/string-utils.js} +3 -11
- package/scripts/build/templates/types/index.d.ts +16 -0
- package/scripts/build/templates/types/index.js +15 -0
- package/scripts/check_nodejs_import_compatibility.js +35 -1
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +147 -0
- package/scripts/doc-generator/generate_page_html.js +115 -0
- package/scripts/doc-generator/generate_page_list_html.js +92 -0
- package/scripts/doc-generator/generate_sidebar_html.js +85 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +74 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +9 -5
- package/scripts/generate_full_demo.js +108 -10
- package/scripts/generate_standalone_demo.js +15 -8
- package/scripts/launch_static_server.js +139 -56
- package/scripts/list-npm-scripts.js +99 -0
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/{run_full_demo.js → start_demo_web_server.js} +16 -3
- package/scripts/update-version +8 -1
- package/scripts/{display_webpack_errors.js → utils/display_webpack_errors.js} +0 -4
- package/scripts/{get_human_readable_hours.js → utils/get_human_readable_hours.js} +0 -4
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +12 -11
- package/src/compat/__tests__/browser_compatibility_types.test.ts +69 -60
- package/src/compat/__tests__/browser_version.test.ts +3 -1
- package/src/compat/__tests__/change_source_buffer_type.test.ts +3 -3
- package/src/compat/__tests__/clear_element_src.test.ts +62 -36
- package/src/compat/__tests__/fullscreen.test.ts +154 -139
- package/src/compat/__tests__/is_offline.test.ts +20 -12
- package/src/compat/__tests__/is_vtt_cue.test.ts +14 -10
- package/src/compat/__tests__/make_vtt_cue.test.ts +16 -15
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +30 -48
- package/src/compat/__tests__/play.test.ts +2 -2
- package/src/compat/__tests__/remove_cue.test.ts +5 -5
- package/src/compat/__tests__/set_element_src.test.ts +3 -3
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +14 -6
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/browser_compatibility_types.ts +38 -36
- package/src/compat/browser_detection.ts +17 -12
- package/src/compat/can_rely_on_video_visibility_and_size.ts +3 -3
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +7 -6
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +22 -26
- package/src/compat/eme/custom_media_keys/index.ts +32 -38
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +16 -19
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +39 -9
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +10 -12
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +27 -30
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +6 -2
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +30 -46
- package/src/compat/fullscreen.ts +2 -4
- package/src/compat/index.ts +2 -6
- package/src/compat/is_vtt_cue.ts +1 -2
- package/src/compat/make_vtt_cue.ts +10 -8
- package/src/compat/on_height_width_change.ts +4 -6
- package/src/compat/patch_webkit_source_buffer.ts +11 -5
- package/src/compat/play.ts +1 -1
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +79 -14
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +85 -18
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +75 -32
- package/src/core/abr/pending_requests_store.ts +72 -40
- package/src/core/abr/representation_estimator.ts +205 -135
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/get_player_state.test.ts +58 -110
- package/src/core/api/__tests__/media_element_track_choice_manager.test.ts +35 -31
- package/src/core/api/__tests__/option_utils.test.ts +104 -17
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/get_player_state.ts +5 -7
- package/src/core/api/index.ts +8 -3
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +7 -7
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +128 -130
- package/src/core/api/track_choice_manager.ts +82 -78
- package/src/core/eme/__tests__/__global__/get_license.test.ts +14 -9
- package/src/core/eme/__tests__/__global__/init_data.test.ts +12 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +3 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +6 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +18 -12
- package/src/core/eme/__tests__/__global__/utils.ts +21 -17
- package/src/core/eme/__tests__/clean_old_loaded_sessions.test.ts +4 -4
- package/src/core/eme/__tests__/clean_old_stored_persistent_info.test.ts +3 -2
- package/src/core/eme/__tests__/init_media_keys.test.ts +10 -66
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +24 -13
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +17 -17
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +21 -18
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +17 -6
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +256 -109
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +4 -5
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +48 -51
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +396 -177
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +56 -39
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +123 -91
- package/src/core/init/__tests__/refresh_scheduled_events_list.test.ts +1 -1
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +21 -18
- package/src/core/init/emit_loaded_event.ts +71 -0
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/events_generators.ts +4 -5
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +128 -96
- package/src/core/init/initialize_directfile.ts +49 -57
- package/src/core/init/initialize_media_source.ts +31 -31
- package/src/core/init/load_on_media_source.ts +70 -74
- package/src/core/init/manifest_update_scheduler.ts +18 -19
- package/src/core/init/stall_avoider.ts +142 -51
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +15 -28
- package/src/core/init/update_playback_rate.ts +17 -18
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +17 -13
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +46 -11
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +21 -18
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +92 -18
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +33 -32
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +82 -6
- package/src/core/segment_buffers/implementations/types.ts +23 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/index.ts +6 -1
- package/src/core/segment_buffers/inventory/buffered_history.ts +127 -0
- package/src/core/segment_buffers/inventory/index.ts +28 -0
- package/src/core/segment_buffers/{segment_inventory.ts → inventory/segment_inventory.ts} +85 -52
- package/{dist/_esm5.processed/manifest/are_same_content.js → src/core/segment_buffers/inventory/types.ts} +19 -11
- package/src/core/segment_buffers/segment_buffers_store.ts +4 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +90 -65
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/events_generators.ts +31 -7
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +9 -11
- package/src/core/stream/orchestrator/are_streams_complete.ts +4 -6
- package/src/core/stream/orchestrator/get_blacklisted_ranges.ts +1 -1
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +70 -62
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +1 -1
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +126 -85
- package/src/core/stream/reload_after_switch.ts +70 -0
- package/src/core/stream/representation/append_segment_to_buffer.ts +21 -17
- package/src/core/stream/representation/downloading_queue.ts +502 -0
- package/src/core/stream/representation/force_garbage_collection.ts +20 -29
- package/src/core/stream/representation/get_buffer_status.ts +15 -13
- package/src/core/stream/representation/get_needed_segments.ts +135 -6
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +238 -307
- package/src/core/stream/types.ts +91 -39
- package/src/errors/request_error.ts +4 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +2 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +47 -30
- package/src/experimental/tools/VideoThumbnailLoader/get_content_infos.ts +1 -2
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +41 -72
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +20 -13
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +7 -7
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +13 -27
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +38 -37
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +56 -47
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +6 -4
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +7 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +1 -0
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +12 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +12 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +6 -1
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- package/src/features/__tests__/initialize_features.test.ts +207 -110
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +2 -0
- package/src/features/list/__tests__/dash.test.ts +2 -0
- package/src/features/list/__tests__/directfile.test.ts +2 -0
- package/src/features/list/__tests__/eme.test.ts +2 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/image_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +2 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +2 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +2 -0
- package/src/features/list/__tests__/smooth.test.ts +2 -0
- package/src/features/types.ts +3 -11
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/adaptation.test.ts +0 -79
- package/src/manifest/__tests__/manifest.test.ts +68 -67
- package/src/manifest/__tests__/period.test.ts +142 -118
- package/src/manifest/__tests__/update_period_in_place.test.ts +85 -62
- package/src/manifest/__tests__/update_periods.test.ts +33 -12
- package/src/manifest/adaptation.ts +17 -51
- package/src/manifest/index.ts +15 -2
- package/src/manifest/manifest.ts +31 -18
- package/src/manifest/period.ts +13 -20
- package/src/manifest/representation.ts +3 -3
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +43 -21
- package/src/manifest/types.ts +97 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +7 -4
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +29 -6
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +5 -8
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +11 -9
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +5 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +10 -10
- package/src/parsers/manifest/dash/common/indexes/list.ts +20 -17
- package/src/parsers/manifest/dash/common/indexes/template.ts +30 -22
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +63 -27
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +64 -73
- package/src/parsers/manifest/dash/common/parse_mpd.ts +33 -24
- package/src/parsers/manifest/dash/common/parse_periods.ts +115 -87
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +88 -80
- package/src/parsers/manifest/dash/common/parse_representations.ts +61 -64
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +1 -1
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +66 -29
- package/src/parsers/manifest/dash/parsers_types.ts +11 -5
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +4 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +43 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +41 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +22 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +40 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +10 -19
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +25 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +34 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +31 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -5
- package/src/parsers/manifest/smooth/create_parser.ts +24 -22
- package/src/parsers/manifest/smooth/representation_index.ts +17 -15
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +39 -36
- package/src/parsers/manifest/utils/check_manifest_ids.ts +2 -2
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +16 -7
- package/src/parsers/manifest/utils/index_helpers.ts +22 -12
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/srt/html.ts +16 -10
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/parsers/texttracks/ttml/nodes.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -6
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +18 -0
- package/src/transports/README.md +8 -4
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +68 -27
- package/src/transports/dash/image_pipelines.ts +58 -45
- package/src/transports/dash/init_segment_loader.ts +68 -45
- package/src/transports/dash/low_latency_segment_loader.ts +52 -68
- package/src/transports/dash/manifest_parser.ts +148 -78
- package/src/transports/dash/pipelines.ts +10 -10
- package/src/transports/dash/segment_loader.ts +117 -90
- package/src/transports/dash/segment_parser.ts +46 -45
- package/src/transports/dash/text_loader.ts +55 -34
- package/src/transports/dash/text_parser.ts +91 -78
- package/src/transports/local/pipelines.ts +19 -21
- package/src/transports/local/segment_loader.ts +86 -40
- package/src/transports/local/segment_parser.ts +31 -38
- package/src/transports/local/text_parser.ts +82 -74
- package/src/transports/metaplaylist/manifest_loader.ts +17 -15
- package/src/transports/metaplaylist/pipelines.ts +158 -181
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/isobmff/create_boxes.ts +5 -5
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +1 -4
- package/src/transports/smooth/pipelines.ts +206 -187
- package/src/transports/smooth/segment_loader.ts +138 -87
- package/src/transports/smooth/utils.ts +13 -0
- package/src/transports/types.ts +639 -439
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +24 -24
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +31 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +83 -60
- package/src/transports/utils/generate_manifest_loader.ts +34 -12
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/array_find.test.ts +5 -5
- package/src/utils/__tests__/array_find_index.test.ts +6 -5
- package/src/utils/__tests__/array_includes.test.ts +1 -0
- package/src/utils/__tests__/assert.test.ts +38 -21
- package/src/utils/__tests__/assert_unreachable.test.ts +8 -7
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/flat_map.test.ts +18 -6
- package/src/utils/__tests__/id_generator.test.ts +3 -3
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/__tests__/promise.test.ts +1 -1
- package/src/utils/__tests__/starts_with.test.ts +2 -0
- package/src/utils/array_find.ts +11 -3
- package/src/utils/array_find_index.ts +11 -3
- package/src/utils/assert.ts +5 -2
- package/src/utils/cancellable_sleep.ts +51 -0
- package/src/utils/cast_to_observable.ts +12 -13
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/flat_map.ts +10 -8
- package/src/utils/id_generator.ts +2 -1
- package/src/utils/object_assign.ts +1 -1
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +175 -147
- package/src/utils/request/index.ts +6 -6
- package/src/utils/request/xhr.ts +144 -128
- package/src/utils/rx-from_cancellable_promise.ts +66 -0
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/src/utils/task_canceller.ts +326 -0
- package/src/utils/uniq.ts +1 -1
- package/tsconfig.json +5 -1
- package/tsconfig.modules.json +9 -3
- package/dist/_esm5.processed/compat/is_playback_stuck.d.ts +0 -28
- package/dist/_esm5.processed/compat/is_playback_stuck.js +0 -33
- package/dist/_esm5.processed/core/abr/cached_segment_detector.js +0 -60
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -52
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -129
- package/dist/_esm5.processed/core/api/clock.js +0 -335
- package/dist/_esm5.processed/core/fetchers/manifest/get_manifest_backoff_options.js +0 -38
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.d.ts +0 -98
- package/dist/_esm5.processed/core/fetchers/segment/create_segment_loader.js +0 -124
- package/dist/_esm5.processed/core/fetchers/segment/get_segment_backoff_options.js +0 -32
- package/dist/_esm5.processed/core/fetchers/utils/create_request_scheduler.js +0 -38
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -56
- package/dist/_esm5.processed/core/stream/utils.d.ts +0 -60
- package/dist/_esm5.processed/core/stream/utils.js +0 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/dist/_esm5.processed/transports/utils/return_parsed_manifest.js +0 -32
- package/scripts/clean-up_builds +0 -18
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/scripts/generate_builds +0 -224
- package/scripts/list-npm-scripts-info.js +0 -39
- package/src/compat/is_playback_stuck.ts +0 -42
- package/src/core/abr/cached_segment_detector.ts +0 -86
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/abr/get_estimate_from_buffer_levels.ts +0 -85
- package/src/core/api/clock.ts +0 -497
- package/src/core/fetchers/manifest/get_manifest_backoff_options.ts +0 -50
- package/src/core/fetchers/segment/create_segment_loader.ts +0 -251
- package/src/core/fetchers/segment/get_segment_backoff_options.ts +0 -45
- package/src/core/fetchers/utils/create_request_scheduler.ts +0 -56
- package/src/core/init/create_stream_clock.ts +0 -94
- package/src/core/stream/utils.ts +0 -97
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
- package/src/transports/utils/return_parsed_manifest.ts +0 -47
package/src/manifest/manifest.ts
CHANGED
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { IInitializationDataInfo } from "../core/eme";
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
ICustomError,
|
|
20
|
+
MediaError,
|
|
21
|
+
} from "../errors";
|
|
19
22
|
import { IParsedManifest } from "../parsers/manifest";
|
|
20
23
|
import areArraysOfNumbersEqual from "../utils/are_arrays_of_numbers_equal";
|
|
21
24
|
import arrayFind from "../utils/array_find";
|
|
@@ -80,18 +83,18 @@ interface ISupplementaryTextTrack {
|
|
|
80
83
|
interface IManifestParsingOptions {
|
|
81
84
|
/* eslint-disable import/no-deprecated */
|
|
82
85
|
/** Text tracks to add manually to the Manifest instance. */
|
|
83
|
-
supplementaryTextTracks? : ISupplementaryTextTrack[];
|
|
86
|
+
supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
|
|
84
87
|
/** Image tracks to add manually to the Manifest instance. */
|
|
85
|
-
supplementaryImageTracks? : ISupplementaryImageTrack[];
|
|
88
|
+
supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
|
|
86
89
|
/* eslint-enable import/no-deprecated */
|
|
87
90
|
/** External callback peforming an automatic filtering of wanted Representations. */
|
|
88
|
-
representationFilter? : IRepresentationFilter;
|
|
91
|
+
representationFilter? : IRepresentationFilter | undefined;
|
|
89
92
|
/** Optional URL that points to a shorter version of the Manifest used
|
|
90
93
|
* for updates only. When using this URL for refresh, the manifest will be
|
|
91
94
|
* updated with the partial update type. If this URL is undefined, then the
|
|
92
95
|
* manifest will be updated fully when it needs to be refreshed, and it will
|
|
93
96
|
* fetched through the original URL. */
|
|
94
|
-
manifestUpdateUrl? : string;
|
|
97
|
+
manifestUpdateUrl? : string | undefined;
|
|
95
98
|
}
|
|
96
99
|
|
|
97
100
|
/** Representation affected by a `decipherabilityUpdate` event. */
|
|
@@ -194,7 +197,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
194
197
|
|
|
195
198
|
/** Optional URL that points to a shorter version of the Manifest used
|
|
196
199
|
* for updates only. */
|
|
197
|
-
public updateUrl
|
|
200
|
+
public updateUrl : string | undefined;
|
|
198
201
|
|
|
199
202
|
/**
|
|
200
203
|
* Suggested delay from the "live edge" (i.e. the position corresponding to
|
|
@@ -202,7 +205,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
202
205
|
* from.
|
|
203
206
|
* This only applies to live contents.
|
|
204
207
|
*/
|
|
205
|
-
public suggestedPresentationDelay
|
|
208
|
+
public suggestedPresentationDelay : number | undefined;
|
|
206
209
|
|
|
207
210
|
/**
|
|
208
211
|
* Amount of time, in seconds, this Manifest is valid from the time when it
|
|
@@ -210,7 +213,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
210
213
|
* If no lifetime is set, this Manifest does not become invalid after an
|
|
211
214
|
* amount of time.
|
|
212
215
|
*/
|
|
213
|
-
public lifetime
|
|
216
|
+
public lifetime : number | undefined;
|
|
214
217
|
|
|
215
218
|
/**
|
|
216
219
|
* Minimum time, in seconds, at which a segment defined in the Manifest
|
|
@@ -218,20 +221,20 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
218
221
|
* This is also used as an offset for live content to apply to a segment's
|
|
219
222
|
* time.
|
|
220
223
|
*/
|
|
221
|
-
public availabilityStartTime
|
|
224
|
+
public availabilityStartTime : number | undefined;
|
|
222
225
|
|
|
223
226
|
/**
|
|
224
227
|
* It specifies the wall-clock time when the manifest was generated and published
|
|
225
228
|
* at the origin server. It is present in order to identify different versions
|
|
226
229
|
* of manifest instances.
|
|
227
230
|
*/
|
|
228
|
-
public publishTime
|
|
231
|
+
public publishTime: number | undefined;
|
|
229
232
|
|
|
230
233
|
/**
|
|
231
234
|
* Array containing every minor errors that happened when the Manifest has
|
|
232
235
|
* been created, in the order they have happened.
|
|
233
236
|
*/
|
|
234
|
-
public
|
|
237
|
+
public contentWarnings : ICustomError[];
|
|
235
238
|
|
|
236
239
|
/*
|
|
237
240
|
* Difference between the server's clock in milliseconds and the return of the
|
|
@@ -268,7 +271,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
268
271
|
* segment, and `timeshiftDepth` would be the whole depth that will
|
|
269
272
|
* become available once enough segments have been generated.
|
|
270
273
|
*/
|
|
271
|
-
absoluteMinimumTime? : number;
|
|
274
|
+
absoluteMinimumTime? : number | undefined;
|
|
272
275
|
/**
|
|
273
276
|
* Some dynamic contents have the concept of a "window depth" (or "buffer
|
|
274
277
|
* depth") which allows to set a minimum position for all reachable
|
|
@@ -316,7 +319,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
316
319
|
* Construct a Manifest instance from a parsed Manifest object (as returned by
|
|
317
320
|
* Manifest parsers) and options.
|
|
318
321
|
*
|
|
319
|
-
* Some minor errors can arise during that construction. `this.
|
|
322
|
+
* Some minor errors can arise during that construction. `this.contentWarnings`
|
|
320
323
|
* will contain all such errors, in the order they have been encountered.
|
|
321
324
|
* @param {Object} parsedManifest
|
|
322
325
|
* @param {Object} options
|
|
@@ -327,7 +330,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
327
330
|
supplementaryImageTracks = [],
|
|
328
331
|
representationFilter,
|
|
329
332
|
manifestUpdateUrl } = options;
|
|
330
|
-
this.
|
|
333
|
+
this.contentWarnings = [];
|
|
331
334
|
this.id = generateNewManifestId();
|
|
332
335
|
this.expired = parsedManifest.expired ?? null;
|
|
333
336
|
this.transport = parsedManifest.transportType;
|
|
@@ -335,7 +338,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
335
338
|
|
|
336
339
|
this.periods = parsedManifest.periods.map((parsedPeriod) => {
|
|
337
340
|
const period = new Period(parsedPeriod, representationFilter);
|
|
338
|
-
this.
|
|
341
|
+
this.contentWarnings.push(...period.contentWarnings);
|
|
339
342
|
return period;
|
|
340
343
|
}).sort((a, b) => a.start - b.start);
|
|
341
344
|
|
|
@@ -645,7 +648,12 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
645
648
|
media: url,
|
|
646
649
|
}) }] },
|
|
647
650
|
{ isManuallyAdded: true });
|
|
648
|
-
|
|
651
|
+
if (newAdaptation.representations.length > 0 && !newAdaptation.isSupported) {
|
|
652
|
+
const error =
|
|
653
|
+
new MediaError("MANIFEST_INCOMPATIBLE_CODECS_ERROR",
|
|
654
|
+
"An Adaptation contains only incompatible codecs.");
|
|
655
|
+
this.contentWarnings.push(error);
|
|
656
|
+
}
|
|
649
657
|
return newAdaptation;
|
|
650
658
|
});
|
|
651
659
|
|
|
@@ -698,7 +706,12 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
698
706
|
media: url,
|
|
699
707
|
}) }] },
|
|
700
708
|
{ isManuallyAdded: true });
|
|
701
|
-
|
|
709
|
+
if (newAdaptation.representations.length > 0 && !newAdaptation.isSupported) {
|
|
710
|
+
const error =
|
|
711
|
+
new MediaError("MANIFEST_INCOMPATIBLE_CODECS_ERROR",
|
|
712
|
+
"An Adaptation contains only incompatible codecs.");
|
|
713
|
+
this.contentWarnings.push(error);
|
|
714
|
+
}
|
|
702
715
|
return newAdaptation;
|
|
703
716
|
}));
|
|
704
717
|
}, []);
|
|
@@ -725,7 +738,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
725
738
|
this.isLive = newManifest.isLive;
|
|
726
739
|
this.isLastPeriodKnown = newManifest.isLastPeriodKnown;
|
|
727
740
|
this.lifetime = newManifest.lifetime;
|
|
728
|
-
this.
|
|
741
|
+
this.contentWarnings = newManifest.contentWarnings;
|
|
729
742
|
this.suggestedPresentationDelay = newManifest.suggestedPresentationDelay;
|
|
730
743
|
this.transport = newManifest.transport;
|
|
731
744
|
this.publishTime = newManifest.publishTime;
|
package/src/manifest/period.ts
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import {
|
|
17
17
|
ICustomError,
|
|
18
|
-
isKnownError,
|
|
19
18
|
MediaError,
|
|
20
19
|
} from "../errors";
|
|
21
20
|
import {
|
|
@@ -51,19 +50,19 @@ export default class Period {
|
|
|
51
50
|
* Duration of this Period, in seconds.
|
|
52
51
|
* `undefined` for still-running Periods.
|
|
53
52
|
*/
|
|
54
|
-
public duration
|
|
53
|
+
public duration : number | undefined;
|
|
55
54
|
|
|
56
55
|
/**
|
|
57
56
|
* Absolute end time of the Period, in seconds.
|
|
58
57
|
* `undefined` for still-running Periods.
|
|
59
58
|
*/
|
|
60
|
-
public end
|
|
59
|
+
public end : number | undefined;
|
|
61
60
|
|
|
62
61
|
/**
|
|
63
62
|
* Array containing every errors that happened when the Period has been
|
|
64
63
|
* created, in the order they have happened.
|
|
65
64
|
*/
|
|
66
|
-
public readonly
|
|
65
|
+
public readonly contentWarnings : ICustomError[];
|
|
67
66
|
|
|
68
67
|
/** Array containing every stream event happening on the period */
|
|
69
68
|
public streamEvents : IManifestStreamEvent[];
|
|
@@ -75,9 +74,9 @@ export default class Period {
|
|
|
75
74
|
*/
|
|
76
75
|
constructor(
|
|
77
76
|
args : IParsedPeriod,
|
|
78
|
-
representationFilter? : IRepresentationFilter
|
|
77
|
+
representationFilter? : IRepresentationFilter | undefined
|
|
79
78
|
) {
|
|
80
|
-
this.
|
|
79
|
+
this.contentWarnings = [];
|
|
81
80
|
this.id = args.id;
|
|
82
81
|
this.adaptations = (Object.keys(args.adaptations) as IAdaptationType[])
|
|
83
82
|
.reduce<IManifestAdaptations>((acc, type) => {
|
|
@@ -86,24 +85,18 @@ export default class Period {
|
|
|
86
85
|
return acc;
|
|
87
86
|
}
|
|
88
87
|
const filteredAdaptations = adaptationsForType
|
|
89
|
-
.map((adaptation) : Adaptation
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
{
|
|
97
|
-
this.parsingErrors.push(err);
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
throw err;
|
|
88
|
+
.map((adaptation) : Adaptation => {
|
|
89
|
+
const newAdaptation = new Adaptation(adaptation, { representationFilter });
|
|
90
|
+
if (newAdaptation.representations.length > 0 && !newAdaptation.isSupported) {
|
|
91
|
+
const error =
|
|
92
|
+
new MediaError("MANIFEST_INCOMPATIBLE_CODECS_ERROR",
|
|
93
|
+
"An Adaptation contains only incompatible codecs.");
|
|
94
|
+
this.contentWarnings.push(error);
|
|
101
95
|
}
|
|
102
|
-
this.parsingErrors.push(...newAdaptation.parsingErrors);
|
|
103
96
|
return newAdaptation;
|
|
104
97
|
})
|
|
105
98
|
.filter((adaptation) : adaptation is Adaptation =>
|
|
106
|
-
adaptation
|
|
99
|
+
adaptation.representations.length > 0
|
|
107
100
|
);
|
|
108
101
|
if (filteredAdaptations.every(adaptation => !adaptation.isSupported) &&
|
|
109
102
|
adaptationsForType.length > 0 &&
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
*/
|
|
35
35
|
class Representation {
|
|
36
36
|
/** ID uniquely identifying the Representation in the Adaptation. */
|
|
37
|
-
public readonly id : string
|
|
37
|
+
public readonly id : string;
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
* Interface allowing to get information about segments available for this
|
|
@@ -55,7 +55,7 @@ class Representation {
|
|
|
55
55
|
* A string describing the codec used for this Representation.
|
|
56
56
|
* undefined if we do not know.
|
|
57
57
|
*/
|
|
58
|
-
public codec
|
|
58
|
+
public codec : string | undefined;
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* A string describing the mime-type for this Representation.
|
|
@@ -93,7 +93,7 @@ class Representation {
|
|
|
93
93
|
* Representation
|
|
94
94
|
* - if `undefined` there is no certainty on this matter
|
|
95
95
|
*/
|
|
96
|
-
public decipherable? : boolean;
|
|
96
|
+
public decipherable? : boolean | undefined;
|
|
97
97
|
|
|
98
98
|
/** `true` if the Representation is in a supported codec, false otherwise. */
|
|
99
99
|
public isSupported : boolean;
|
|
@@ -26,6 +26,7 @@ describe("manifest - StaticRepresentationIndex", () => {
|
|
|
26
26
|
it("should return a single segment with the maximum duration and the right url", () => {
|
|
27
27
|
const staticRI = new StaticRepresentationIndex({ media: "foo" });
|
|
28
28
|
expect(staticRI.getSegments()).toEqual([{ id: "0",
|
|
29
|
+
complete: true,
|
|
29
30
|
isInit: false,
|
|
30
31
|
number: 0,
|
|
31
32
|
time: 0,
|
|
@@ -38,12 +38,12 @@ export interface ISmoothInitSegmentPrivateInfos {
|
|
|
38
38
|
* as found in the Manifest.
|
|
39
39
|
*/
|
|
40
40
|
timescale : number;
|
|
41
|
-
codecPrivateData? : string;
|
|
42
|
-
bitsPerSample? : number;
|
|
43
|
-
channels? : number;
|
|
44
|
-
packetSize? : number;
|
|
45
|
-
samplingRate? : number;
|
|
46
|
-
protection? : { keyId : Uint8Array };
|
|
41
|
+
codecPrivateData? : string | undefined;
|
|
42
|
+
bitsPerSample? : number | undefined;
|
|
43
|
+
channels? : number | undefined;
|
|
44
|
+
packetSize? : number | undefined;
|
|
45
|
+
samplingRate? : number | undefined;
|
|
46
|
+
protection? : { keyId : Uint8Array } | undefined;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -78,7 +78,7 @@ export interface IMetaPlaylistPrivateInfos {
|
|
|
78
78
|
/** The segment originally created by this transport's RepresentationIndex. */
|
|
79
79
|
originalSegment : ISegment;
|
|
80
80
|
contentStart : number;
|
|
81
|
-
contentEnd? : number;
|
|
81
|
+
contentEnd? : number | undefined;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
/**
|
|
@@ -112,12 +112,12 @@ export interface ILocalManifestSegmentPrivateInfos {
|
|
|
112
112
|
* exploited by the corresponding transport logic.
|
|
113
113
|
*/
|
|
114
114
|
export interface IPrivateInfos {
|
|
115
|
-
smoothInitSegment? : ISmoothInitSegmentPrivateInfos;
|
|
116
|
-
smoothMediaSegment? : ISmoothSegmentPrivateInfos;
|
|
117
|
-
metaplaylistInfos? : IMetaPlaylistPrivateInfos;
|
|
118
|
-
localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos;
|
|
119
|
-
localManifestSegment? : ILocalManifestSegmentPrivateInfos;
|
|
120
|
-
isEMSGWhitelisted? : (evt: IEMSG) => boolean;
|
|
115
|
+
smoothInitSegment? : ISmoothInitSegmentPrivateInfos | undefined;
|
|
116
|
+
smoothMediaSegment? : ISmoothSegmentPrivateInfos | undefined;
|
|
117
|
+
metaplaylistInfos? : IMetaPlaylistPrivateInfos | undefined;
|
|
118
|
+
localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos | undefined;
|
|
119
|
+
localManifestSegment? : ILocalManifestSegmentPrivateInfos | undefined;
|
|
120
|
+
isEMSGWhitelisted? : ((evt: IEMSG) => boolean) | undefined;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/** Represent a single Segment from a Representation. */
|
|
@@ -149,24 +149,24 @@ export interface ISegment {
|
|
|
149
149
|
* contain an index describing other Segments
|
|
150
150
|
* TODO put in privateInfos?
|
|
151
151
|
*/
|
|
152
|
-
indexRange? : [number, number];
|
|
152
|
+
indexRange? : [number, number] | undefined;
|
|
153
153
|
/**
|
|
154
154
|
* Optional number of the Segment
|
|
155
155
|
* TODO put in privateInfos?
|
|
156
156
|
*/
|
|
157
|
-
number? : number;
|
|
157
|
+
number? : number | undefined;
|
|
158
158
|
/**
|
|
159
159
|
* Allows to store supplementary information on a segment that can be later
|
|
160
160
|
* exploited by the transport logic.
|
|
161
161
|
*/
|
|
162
|
-
privateInfos? : IPrivateInfos;
|
|
162
|
+
privateInfos? : IPrivateInfos | undefined;
|
|
163
163
|
/** Optional byte range to retrieve the Segment from its URL(s) */
|
|
164
|
-
range? : [number, number];
|
|
164
|
+
range? : [number, number] | undefined;
|
|
165
165
|
/**
|
|
166
166
|
* Estimated time, in seconds, at which the concerned segment should be
|
|
167
167
|
* offseted when decoded.
|
|
168
168
|
*/
|
|
169
|
-
timestampOffset? : number;
|
|
169
|
+
timestampOffset? : number | undefined;
|
|
170
170
|
/**
|
|
171
171
|
* Estimated start time for the segment, in seconds.
|
|
172
172
|
* Note that some rounding errors and some differences between what the
|
|
@@ -187,9 +187,20 @@ export interface ISegment {
|
|
|
187
187
|
end : number;
|
|
188
188
|
/**
|
|
189
189
|
* Estimated duration for the segment, in seconds.
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
190
|
+
*
|
|
191
|
+
* Note that this may not reflect the exact segment duration:
|
|
192
|
+
*
|
|
193
|
+
* 1. In some very specific cases, segments might be generated and served
|
|
194
|
+
* progressively. In this case, the full duration of a segment might not
|
|
195
|
+
* be yet known and thus this property only reflect the currently known
|
|
196
|
+
* `duration` of the segment, which may be inferior to its final duration.
|
|
197
|
+
*
|
|
198
|
+
* You can know if we're in that case when the `complete` property of
|
|
199
|
+
* this same segment is set to `false`.
|
|
200
|
+
*
|
|
201
|
+
* 2. some rounding errors and some differences between what the
|
|
202
|
+
* Manifest says and what the content really is might make that time not
|
|
203
|
+
* exact.
|
|
193
204
|
*
|
|
194
205
|
* `0` for initialization segments.
|
|
195
206
|
*/
|
|
@@ -202,6 +213,17 @@ export interface ISegment {
|
|
|
202
213
|
* As both are always in seconds now, this property became unneeded.
|
|
203
214
|
*/
|
|
204
215
|
timescale : 1;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* If `false`, this segment's `duration` property may not be the duration of
|
|
219
|
+
* the full segment as it could still be in the process of being generated
|
|
220
|
+
* on the server-side (when this `ISegment` had been constructed).
|
|
221
|
+
*
|
|
222
|
+
* Note that if the `duration` is sure to be the final one, `complete`
|
|
223
|
+
* should be set to `true` even if the segment is still being
|
|
224
|
+
* generated.
|
|
225
|
+
*/
|
|
226
|
+
complete : boolean;
|
|
205
227
|
}
|
|
206
228
|
|
|
207
229
|
/** Interface that should be implemented by any Representation's `index` value. */
|
package/src/manifest/types.ts
CHANGED
|
@@ -39,7 +39,7 @@ export interface IHDRInformation {
|
|
|
39
39
|
* It is used to ask to the user agent if the color depth is supported by the
|
|
40
40
|
* output device.
|
|
41
41
|
*/
|
|
42
|
-
colorDepth
|
|
42
|
+
colorDepth? : number | undefined;
|
|
43
43
|
/**
|
|
44
44
|
* It is the HDR eotf. It is the transfer function having the video signal as
|
|
45
45
|
* input and converting it into the linear light output of the display. The
|
|
@@ -47,12 +47,106 @@ export interface IHDRInformation {
|
|
|
47
47
|
*
|
|
48
48
|
* It may be used here to ask the MediaSource if it supported.
|
|
49
49
|
*/
|
|
50
|
-
eotf
|
|
50
|
+
eotf? : string | undefined;
|
|
51
51
|
/**
|
|
52
52
|
* It is the video color space used for encoding. An HDR content may not have
|
|
53
53
|
* a wide color gamut.
|
|
54
54
|
*
|
|
55
55
|
* It may be used to ask about output device color space support.
|
|
56
56
|
*/
|
|
57
|
-
colorSpace
|
|
57
|
+
colorSpace? : string | undefined;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Manifest, as documented in the API documentation. */
|
|
61
|
+
export interface IExposedManifest {
|
|
62
|
+
periods : IExposedPeriod[];
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated
|
|
65
|
+
*/
|
|
66
|
+
adaptations : { audio? : IExposedAdaptation[];
|
|
67
|
+
video? : IExposedAdaptation[];
|
|
68
|
+
text? : IExposedAdaptation[];
|
|
69
|
+
image? : IExposedAdaptation[]; };
|
|
70
|
+
isLive : boolean;
|
|
71
|
+
transport : string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Period, as documented in the API documentation. */
|
|
75
|
+
export interface IExposedPeriod {
|
|
76
|
+
id : string;
|
|
77
|
+
start : number;
|
|
78
|
+
end? : number | undefined;
|
|
79
|
+
adaptations : { audio? : IExposedAdaptation[];
|
|
80
|
+
video? : IExposedAdaptation[];
|
|
81
|
+
text? : IExposedAdaptation[];
|
|
82
|
+
image? : IExposedAdaptation[]; };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Adaptation (represents a track), as documented in the API documentation. */
|
|
86
|
+
export interface IExposedAdaptation {
|
|
87
|
+
/** String identifying the Adaptation, unique per Period. */
|
|
88
|
+
id : string;
|
|
89
|
+
type : "video" | "audio" | "text" | "image";
|
|
90
|
+
language? : string | undefined;
|
|
91
|
+
normalizedLanguage? : string | undefined;
|
|
92
|
+
isAudioDescription? : boolean | undefined;
|
|
93
|
+
isClosedCaption? : boolean | undefined;
|
|
94
|
+
isTrickModeTrack? : boolean | undefined;
|
|
95
|
+
representations : IExposedRepresentation[];
|
|
96
|
+
|
|
97
|
+
getAvailableBitrates() : number[];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Representation (represents a quality), as documented in the API documentation. */
|
|
101
|
+
export interface IExposedRepresentation {
|
|
102
|
+
/** String identifying the Representation, unique per Adaptation. */
|
|
103
|
+
id : string;
|
|
104
|
+
bitrate : number;
|
|
105
|
+
/** Codec used by the segment in that Representation. */
|
|
106
|
+
codec? : string | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Whether we are able to decrypt this Representation / unable to decrypt it or
|
|
109
|
+
* if we don't know yet:
|
|
110
|
+
* - if `true`, it means that we know we were able to decrypt this
|
|
111
|
+
* Representation in the current content.
|
|
112
|
+
* - if `false`, it means that we know we were unable to decrypt this
|
|
113
|
+
* Representation
|
|
114
|
+
* - if `undefined` there is no certainty on this matter
|
|
115
|
+
*/
|
|
116
|
+
decipherable? : boolean | undefined;
|
|
117
|
+
/**
|
|
118
|
+
* This property makes the most sense for video Representations.
|
|
119
|
+
* It defines the height of the video, in pixels.
|
|
120
|
+
*/
|
|
121
|
+
height? : number | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* This property makes the most sense for video Representations.
|
|
124
|
+
* It defines the height of the video, in pixels.
|
|
125
|
+
*/
|
|
126
|
+
width? : number | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* The represesentation frame rate for this Representation. It defines either
|
|
129
|
+
* the number of frames per second as an integer (24), or as a ratio
|
|
130
|
+
* (24000 / 1000).
|
|
131
|
+
*/
|
|
132
|
+
frameRate? : string | undefined;
|
|
133
|
+
/** If the track is HDR, gives the HDR characteristics of the content */
|
|
134
|
+
hdrInfo? : IHDRInformation;
|
|
135
|
+
index : IExposedRepresentationIndex;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface IExposedRepresentationIndex {
|
|
139
|
+
getSegments(up : number, duration : number) : IExposedSegment[];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Segment, as documented in the API documentation. */
|
|
143
|
+
export interface IExposedSegment {
|
|
144
|
+
id : string;
|
|
145
|
+
timescale : number;
|
|
146
|
+
duration? : number | undefined;
|
|
147
|
+
time : number;
|
|
148
|
+
isInit? : boolean | undefined;
|
|
149
|
+
range? : number[] | null | undefined;
|
|
150
|
+
indexRange? : number[] | null | undefined;
|
|
151
|
+
number? : number | undefined;
|
|
58
152
|
}
|
|
@@ -14,19 +14,17 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import isNullOrUndefined from "../utils/is_null_or_undefined";
|
|
17
18
|
import Adaptation from "./adaptation";
|
|
18
19
|
import Period from "./period";
|
|
19
20
|
import Representation from "./representation";
|
|
20
21
|
import { ISegment } from "./representation_index";
|
|
21
22
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
period : Period;
|
|
28
|
-
representation : Representation;
|
|
29
|
-
segment : ISegment; }
|
|
23
|
+
/** All information needed to identify a given segment. */
|
|
24
|
+
export interface IBufferedChunkInfos { adaptation : Adaptation;
|
|
25
|
+
period : Period;
|
|
26
|
+
representation : Representation;
|
|
27
|
+
segment : ISegment; }
|
|
30
28
|
|
|
31
29
|
/**
|
|
32
30
|
* Check if two contents are the same
|
|
@@ -34,7 +32,7 @@ interface IBufferedChunkInfos { adaptation : Adaptation;
|
|
|
34
32
|
* @param {Object} content2
|
|
35
33
|
* @returns {boolean}
|
|
36
34
|
*/
|
|
37
|
-
export
|
|
35
|
+
export function areSameContent(
|
|
38
36
|
content1: IBufferedChunkInfos,
|
|
39
37
|
content2: IBufferedChunkInfos
|
|
40
38
|
): boolean {
|
|
@@ -43,3 +41,22 @@ export default function areSameContent(
|
|
|
43
41
|
content1.adaptation.id === content2.adaptation.id &&
|
|
44
42
|
content1.period.id === content2.period.id);
|
|
45
43
|
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get string describing a given ISegment, useful for log functions.
|
|
47
|
+
* @param {Object} content
|
|
48
|
+
* @returns {string|null|undefined}
|
|
49
|
+
*/
|
|
50
|
+
export function getLoggableSegmentId(
|
|
51
|
+
content : IBufferedChunkInfos | null | undefined
|
|
52
|
+
) : string {
|
|
53
|
+
if (isNullOrUndefined(content)) {
|
|
54
|
+
return "";
|
|
55
|
+
}
|
|
56
|
+
const { period, adaptation, representation, segment } = content;
|
|
57
|
+
return `${adaptation.type} P: ${period.id} A: ${adaptation.id} ` +
|
|
58
|
+
`R: ${representation.id} S: ` +
|
|
59
|
+
(segment.isInit ? "init" :
|
|
60
|
+
segment.complete ? `${segment.time}-${segment.duration}` :
|
|
61
|
+
`${segment.time}`);
|
|
62
|
+
}
|
package/src/minimal.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* This allows to import a "minimal" player with a small bundle size and then
|
|
21
21
|
* import only features that is needed.
|
|
22
22
|
*/
|
|
23
|
+
|
|
23
24
|
import Player from "./core/api";
|
|
24
25
|
import {
|
|
25
26
|
addFeatures,
|
|
@@ -27,8 +28,8 @@ import {
|
|
|
27
28
|
} from "./features";
|
|
28
29
|
import logger from "./log";
|
|
29
30
|
|
|
30
|
-
if (
|
|
31
|
-
logger.setLevel(__LOGGER_LEVEL__);
|
|
31
|
+
if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
|
|
32
|
+
logger.setLevel(__LOGGER_LEVEL__.CURRENT_LEVEL);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import log from "../../../log";
|
|
18
|
+
import assert from "../../../utils/assert";
|
|
18
19
|
import {
|
|
19
20
|
be4toi,
|
|
20
21
|
be8toi,
|
|
@@ -23,8 +24,8 @@ import {
|
|
|
23
24
|
/**
|
|
24
25
|
* Returns the content of a box based on its name.
|
|
25
26
|
* `null` if not found.
|
|
26
|
-
* @param {Uint8Array} buf - the isobmff
|
|
27
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
27
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
28
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
28
29
|
* generated from encoding the corresponding ASCII in big endian.
|
|
29
30
|
* @returns {UInt8Array|null}
|
|
30
31
|
*/
|
|
@@ -34,11 +35,36 @@ function getBoxContent(buf : Uint8Array, boxName : number) : Uint8Array|null {
|
|
|
34
35
|
null;
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Reads the whole ISOBMFF and returns the content of all boxes with the given
|
|
40
|
+
* name, in order.
|
|
41
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
42
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
43
|
+
* generated from encoding the corresponding ASCII in big endian.
|
|
44
|
+
* @returns {Array.<Uint8Array>}
|
|
45
|
+
*/
|
|
46
|
+
function getBoxesContent(buf : Uint8Array, boxName : number) : Uint8Array[] {
|
|
47
|
+
const ret = [];
|
|
48
|
+
let currentBuf = buf;
|
|
49
|
+
while (true) {
|
|
50
|
+
const offsets = getBoxOffsets(currentBuf, boxName);
|
|
51
|
+
if (offsets === null) {
|
|
52
|
+
return ret;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Guard against a (very highly improbable) infinite loop
|
|
56
|
+
assert(offsets[2] !== 0 && currentBuf.length !== 0);
|
|
57
|
+
|
|
58
|
+
ret.push(currentBuf.subarray(offsets[1], offsets[2]));
|
|
59
|
+
currentBuf = currentBuf.subarray(offsets[2]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
37
63
|
/**
|
|
38
64
|
* Returns an ISOBMFF box - size and name included - based on its name.
|
|
39
65
|
* `null` if not found.
|
|
40
|
-
* @param {Uint8Array} buf - the isobmff
|
|
41
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
66
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
67
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
42
68
|
* generated from encoding the corresponding ASCII in big endian.
|
|
43
69
|
* @returns {UInt8Array|null}
|
|
44
70
|
*/
|
|
@@ -60,8 +86,8 @@ function getBox(buf : Uint8Array, boxName : number) : Uint8Array|null {
|
|
|
60
86
|
* size and the name of the box.
|
|
61
87
|
* 3. The first byte after the end of the box, might be equal to `buf`'s
|
|
62
88
|
* length if we're considering the last box.
|
|
63
|
-
* @param {Uint8Array} buf - the isobmff
|
|
64
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
89
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
90
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
65
91
|
* generated from encoding the corresponding ASCII in big endian.
|
|
66
92
|
* @returns {Array.<number>|null}
|
|
67
93
|
*/
|
|
@@ -176,8 +202,8 @@ function getUuidContent(
|
|
|
176
202
|
* length if we're considering the last box.
|
|
177
203
|
*
|
|
178
204
|
* `null` if no box is found.
|
|
179
|
-
* @param {Uint8Array} buf - the isobmff
|
|
180
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
205
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
206
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
181
207
|
* generated from encoding the corresponding ASCII in big endian.
|
|
182
208
|
*/
|
|
183
209
|
function getNextBoxOffsets(buf : Uint8Array
|
|
@@ -221,6 +247,7 @@ function getNextBoxOffsets(buf : Uint8Array
|
|
|
221
247
|
export {
|
|
222
248
|
getBox,
|
|
223
249
|
getBoxContent,
|
|
250
|
+
getBoxesContent,
|
|
224
251
|
getBoxOffsets,
|
|
225
252
|
getNextBoxOffsets,
|
|
226
253
|
getUuidContent,
|