rx-player 3.26.1 → 3.26.2
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/.github/workflows/checks.yml +99 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +99 -71
- package/README.md +19 -18
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
- 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 +3 -2
- package/dist/_esm5.processed/compat/event_listeners.js +8 -14
- package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- 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 +3 -8
- package/dist/_esm5.processed/config.js +4 -9
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
- 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 +25 -7
- 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 +9 -7
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
- package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
- 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/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/option_utils.js +4 -4
- 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 +8 -7
- package/dist/_esm5.processed/core/api/public_api.js +98 -94
- package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
- 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 +4 -5
- package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
- package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/get_session.js +1 -2
- package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
- package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- 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 +3 -3
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
- 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/segment_fetcher.d.ts +42 -11
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
- 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 +16 -7
- package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
- package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
- package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
- package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
- 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/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +0 -20
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
- package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
- 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.js +8 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
- 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 -20
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/index.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.js +1 -2
- 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 +22 -21
- 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 +11 -10
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
- 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 +9 -9
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
- 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 +6 -8
- 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 +7 -8
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
- 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 +4 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +47 -44
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/index.js +2 -2
- package/dist/_esm5.processed/manifest/representation.js +1 -1
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
- 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 +52 -47
- package/dist/_esm5.processed/parsers/images/bif.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
- 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 +6 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
- 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/parse_adaptation_sets.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
- 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 +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
- 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 +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -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/local/parse_local_manifest.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
- 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/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- 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/transports/dash/image_pipelines.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
- package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
- package/dist/_esm5.processed/transports/types.d.ts +29 -15
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
- package/dist/_esm5.processed/utils/assert.js +3 -3
- 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/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/fetch.js +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +3666 -2470
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -1
- package/package.json +43 -43
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +1 -189
- 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 +148 -0
- package/scripts/doc-generator/generate_page_html.js +116 -0
- package/scripts/doc-generator/generate_page_list_html.js +93 -0
- package/scripts/doc-generator/generate_sidebar_html.js +88 -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 +85 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_documentation_list.js +6 -2
- package/scripts/generate_full_demo.js +26 -49
- package/scripts/start_demo_web_server.js +14 -4
- package/scripts/update-version +1 -1
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +1 -0
- package/src/compat/__tests__/clear_element_src.test.ts +55 -28
- package/src/compat/__tests__/set_element_src.test.ts +2 -2
- 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/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +3 -5
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +6 -6
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
- 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 +12 -21
- package/src/compat/on_height_width_change.ts +3 -5
- 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 +4 -9
- package/src/core/abr/README.md +7 -7
- 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 +8 -6
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
- 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 +74 -31
- package/src/core/abr/pending_requests_store.ts +76 -42
- package/src/core/abr/representation_estimator.ts +200 -125
- 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__/option_utils.test.ts +1 -0
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/index.ts +6 -2
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +111 -111
- package/src/core/api/track_choice_manager.ts +6 -3
- package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
- package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
- package/src/core/eme/__tests__/__global__/utils.ts +1 -0
- package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +10 -8
- 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 +3 -5
- 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 +14 -15
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +15 -4
- 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 +1 -1
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
- 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 +20 -17
- package/src/core/init/emit_loaded_event.ts +11 -15
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +67 -51
- package/src/core/init/initialize_directfile.ts +26 -35
- package/src/core/init/initialize_media_source.ts +28 -28
- package/src/core/init/load_on_media_source.ts +51 -58
- package/src/core/init/manifest_update_scheduler.ts +11 -12
- package/src/core/init/stall_avoider.ts +64 -47
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +0 -24
- package/src/core/init/update_playback_rate.ts +15 -16
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +15 -11
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
- package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
- package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +118 -75
- package/src/core/stream/reload_after_switch.ts +13 -10
- package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
- package/src/core/stream/representation/downloading_queue.ts +21 -24
- package/src/core/stream/representation/force_garbage_collection.ts +16 -23
- package/src/core/stream/representation/get_buffer_status.ts +9 -11
- package/src/core/stream/representation/get_needed_segments.ts +1 -1
- 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 +50 -47
- package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
- package/src/features/__tests__/initialize_features.test.ts +191 -101
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +1 -0
- package/src/features/list/__tests__/dash.test.ts +1 -0
- package/src/features/list/__tests__/directfile.test.ts +1 -0
- package/src/features/list/__tests__/eme.test.ts +1 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/image_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/smooth.test.ts +1 -0
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/manifest.test.ts +1 -0
- package/src/manifest/index.ts +7 -1
- 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 +25 -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__/flatten_overlapping_period.test.ts +4 -4
- 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_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
- package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
- package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
- 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 +13 -5
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
- package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
- package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- 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 +8 -0
- package/src/parsers/manifest/dash/parsers_types.ts +8 -2
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
- 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 +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -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/types.ts +1 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/smooth/create_parser.ts +1 -1
- package/src/parsers/manifest/smooth/representation_index.ts +3 -1
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +21 -11
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/transports/dash/image_pipelines.ts +4 -4
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +99 -25
- package/src/transports/dash/segment_loader.ts +1 -1
- package/src/transports/dash/segment_parser.ts +4 -4
- package/src/transports/dash/text_parser.ts +8 -8
- package/src/transports/local/segment_loader.ts +2 -2
- package/src/transports/local/segment_parser.ts +4 -4
- package/src/transports/local/text_parser.ts +8 -8
- package/src/transports/metaplaylist/pipelines.ts +11 -11
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/pipelines.ts +8 -8
- package/src/transports/smooth/segment_loader.ts +3 -3
- package/src/transports/types.ts +31 -17
- package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
- 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__/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__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/assert.ts +1 -1
- 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/reference.ts +234 -0
- package/src/utils/request/fetch.ts +3 -3
- package/src/utils/request/xhr.ts +2 -2
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/tsconfig.json +4 -1
- package/tsconfig.modules.json +8 -3
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
- package/dist/_esm5.processed/core/api/clock.js +0 -363
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
- 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/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/src/core/abr/create_filters.ts +0 -59
- package/src/core/api/clock.ts +0 -573
- package/src/core/init/create_stream_clock.ts +0 -93
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
|
@@ -13,17 +13,18 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { combineLatest as observableCombineLatest, defer as observableDefer, merge as observableMerge, of as observableOf, } from "rxjs";
|
|
17
|
-
import { filter, ignoreElements, map, startWith, switchMap, tap, withLatestFrom, } from "rxjs/operators";
|
|
16
|
+
import { combineLatest as observableCombineLatest, defer as observableDefer, filter, ignoreElements, map, merge as observableMerge, of as observableOf, startWith, switchMap, tap, withLatestFrom, } from "rxjs";
|
|
18
17
|
import log from "../../log";
|
|
19
18
|
import { getLeftSizeOfRange } from "../../utils/ranges";
|
|
20
19
|
import BufferBasedChooser from "./buffer_based_chooser";
|
|
21
|
-
import
|
|
22
|
-
import
|
|
20
|
+
import GuessBasedChooser from "./guess_based_chooser";
|
|
21
|
+
import LastEstimateStorage from "./last_estimate_storage";
|
|
23
22
|
import NetworkAnalyzer from "./network_analyzer";
|
|
24
23
|
import PendingRequestsStore from "./pending_requests_store";
|
|
25
24
|
import RepresentationScoreCalculator from "./representation_score_calculator";
|
|
26
|
-
import
|
|
25
|
+
import filterByBitrate from "./utils/filter_by_bitrate";
|
|
26
|
+
import filterByWidth from "./utils/filter_by_width";
|
|
27
|
+
import selectOptimalRepresentation from "./utils/select_optimal_representation";
|
|
27
28
|
/**
|
|
28
29
|
* Filter representations given through filters options.
|
|
29
30
|
* @param {Array.<Representation>} representations
|
|
@@ -31,14 +32,14 @@ import selectOptimalRepresentation from "./select_optimal_representation";
|
|
|
31
32
|
* @returns {Array.<Representation>}
|
|
32
33
|
*/
|
|
33
34
|
function getFilteredRepresentations(representations, filters) {
|
|
34
|
-
var
|
|
35
|
+
var filteredReps = representations;
|
|
35
36
|
if (filters.bitrate != null) {
|
|
36
|
-
|
|
37
|
+
filteredReps = filterByBitrate(filteredReps, filters.bitrate);
|
|
37
38
|
}
|
|
38
39
|
if (filters.width != null) {
|
|
39
|
-
|
|
40
|
+
filteredReps = filterByWidth(filteredReps, filters.width);
|
|
40
41
|
}
|
|
41
|
-
return
|
|
42
|
+
return filteredReps;
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
45
|
* Estimate regularly the current network bandwidth and the best Representation
|
|
@@ -53,7 +54,7 @@ function getFilteredRepresentations(representations, filters) {
|
|
|
53
54
|
* @returns {Observable}
|
|
54
55
|
*/
|
|
55
56
|
export default function RepresentationEstimator(_a) {
|
|
56
|
-
var bandwidthEstimator = _a.bandwidthEstimator,
|
|
57
|
+
var bandwidthEstimator = _a.bandwidthEstimator, observation$ = _a.observation$, filters$ = _a.filters$, initialBitrate = _a.initialBitrate, lowLatencyMode = _a.lowLatencyMode, manualBitrate$ = _a.manualBitrate$, minAutoBitrate$ = _a.minAutoBitrate$, maxAutoBitrate$ = _a.maxAutoBitrate$, representations = _a.representations, streamEvents$ = _a.streamEvents$;
|
|
57
58
|
var scoreCalculator = new RepresentationScoreCalculator();
|
|
58
59
|
var networkAnalyzer = new NetworkAnalyzer(initialBitrate == null ? 0 :
|
|
59
60
|
initialBitrate, lowLatencyMode);
|
|
@@ -63,15 +64,19 @@ export default function RepresentationEstimator(_a) {
|
|
|
63
64
|
* @param {Object} value
|
|
64
65
|
*/
|
|
65
66
|
function onMetric(value) {
|
|
66
|
-
var
|
|
67
|
+
var requestDuration = value.requestDuration, segmentDuration = value.segmentDuration, size = value.size, content = value.content;
|
|
67
68
|
// calculate bandwidth
|
|
68
|
-
bandwidthEstimator.addSample(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
bandwidthEstimator.addSample(requestDuration, size);
|
|
70
|
+
if (!content.segment.isInit) {
|
|
71
|
+
// calculate "maintainability score"
|
|
72
|
+
var segment = content.segment, representation = content.representation;
|
|
73
|
+
if (segmentDuration === undefined && !segment.complete) {
|
|
74
|
+
// We cannot know the real duration of the segment
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
var segDur = segmentDuration !== null && segmentDuration !== void 0 ? segmentDuration : segment.duration;
|
|
78
|
+
scoreCalculator.addSample(representation, requestDuration / 1000, segDur);
|
|
79
|
+
}
|
|
75
80
|
}
|
|
76
81
|
var metrics$ = streamEvents$.pipe(filter(function (e) { return e.type === "metrics"; }), tap(function (_a) {
|
|
77
82
|
var value = _a.value;
|
|
@@ -115,68 +120,122 @@ export default function RepresentationEstimator(_a) {
|
|
|
115
120
|
});
|
|
116
121
|
}
|
|
117
122
|
// -- AUTO mode --
|
|
118
|
-
|
|
119
|
-
var
|
|
123
|
+
/** Store the previous estimate made here. */
|
|
124
|
+
var prevEstimate = new LastEstimateStorage();
|
|
125
|
+
var allowBufferBasedEstimates = false;
|
|
126
|
+
var guessBasedChooser = new GuessBasedChooser(scoreCalculator, prevEstimate);
|
|
120
127
|
// Emit each time a buffer-based estimation should be actualized (each
|
|
121
128
|
// time a segment is added).
|
|
122
|
-
var
|
|
129
|
+
var bufferBasedobservation$ = streamEvents$.pipe(filter(function (e) { return e.type === "added-segment"; }), withLatestFrom(observation$), map(function (_a) {
|
|
123
130
|
var evtValue = _a[0].value, _b = _a[1], speed = _b.speed, position = _b.position;
|
|
124
131
|
var timeRanges = evtValue.buffered;
|
|
125
132
|
var bufferGap = getLeftSizeOfRange(timeRanges, position);
|
|
126
133
|
var representation = evtValue.content.representation;
|
|
127
|
-
var
|
|
134
|
+
var scoreData = scoreCalculator.getEstimate(representation);
|
|
135
|
+
var currentScore = scoreData === null || scoreData === void 0 ? void 0 : scoreData[0];
|
|
128
136
|
var currentBitrate = representation.bitrate;
|
|
129
137
|
return { bufferGap: bufferGap, currentBitrate: currentBitrate, currentScore: currentScore, speed: speed };
|
|
130
138
|
}));
|
|
131
139
|
var bitrates = representations.map(function (r) { return r.bitrate; });
|
|
132
|
-
var bufferBasedEstimation$ = BufferBasedChooser(
|
|
140
|
+
var bufferBasedEstimation$ = BufferBasedChooser(bufferBasedobservation$, bitrates)
|
|
133
141
|
.pipe(startWith(undefined));
|
|
134
|
-
return observableCombineLatest([
|
|
142
|
+
return observableCombineLatest([observation$,
|
|
135
143
|
minAutoBitrate$,
|
|
136
144
|
maxAutoBitrate$,
|
|
137
145
|
filters$,
|
|
138
146
|
bufferBasedEstimation$]).pipe(withLatestFrom(currentRepresentation$), map(function (_a) {
|
|
139
|
-
var _b = _a[0],
|
|
140
|
-
var
|
|
147
|
+
var _b = _a[0], observation = _b[0], minAutoBitrate = _b[1], maxAutoBitrate = _b[2], filters = _b[3], bufferBasedBitrate = _b[4], currentRepresentation = _a[1];
|
|
148
|
+
var bufferGap = observation.bufferGap, liveGap = observation.liveGap;
|
|
149
|
+
var filteredReps = getFilteredRepresentations(representations, filters);
|
|
141
150
|
var requests = requestsStore.getRequests();
|
|
142
151
|
var _c = networkAnalyzer
|
|
143
|
-
.getBandwidthEstimate(
|
|
144
|
-
lastEstimatedBitrate = bandwidthEstimate;
|
|
152
|
+
.getBandwidthEstimate(observation, bandwidthEstimator, currentRepresentation, requests, prevEstimate.bandwidth), bandwidthEstimate = _c.bandwidthEstimate, bitrateChosen = _c.bitrateChosen;
|
|
145
153
|
var stableRepresentation = scoreCalculator.getLastStableRepresentation();
|
|
146
|
-
var knownStableBitrate = stableRepresentation
|
|
154
|
+
var knownStableBitrate = stableRepresentation === null ?
|
|
147
155
|
undefined :
|
|
148
|
-
stableRepresentation.bitrate / (
|
|
149
|
-
|
|
150
|
-
if (
|
|
151
|
-
|
|
156
|
+
stableRepresentation.bitrate / (observation.speed > 0 ? observation.speed :
|
|
157
|
+
1);
|
|
158
|
+
if (allowBufferBasedEstimates && bufferGap <= 5) {
|
|
159
|
+
allowBufferBasedEstimates = false;
|
|
160
|
+
}
|
|
161
|
+
else if (!allowBufferBasedEstimates &&
|
|
162
|
+
isFinite(bufferGap) &&
|
|
163
|
+
bufferGap > 10) {
|
|
164
|
+
allowBufferBasedEstimates = true;
|
|
152
165
|
}
|
|
153
|
-
|
|
154
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Representation chosen when considering only [pessimist] bandwidth
|
|
168
|
+
* calculation.
|
|
169
|
+
* This is a safe enough choice but might be lower than what the user
|
|
170
|
+
* could actually profit from.
|
|
171
|
+
*/
|
|
172
|
+
var chosenRepFromBandwidth = selectOptimalRepresentation(filteredReps, bitrateChosen, minAutoBitrate, maxAutoBitrate);
|
|
173
|
+
var currentBestBitrate = chosenRepFromBandwidth.bitrate;
|
|
174
|
+
/**
|
|
175
|
+
* Representation chosen when considering the current buffer size.
|
|
176
|
+
* If defined, takes precedence over `chosenRepFromBandwidth`.
|
|
177
|
+
*
|
|
178
|
+
* This is a very safe choice, yet it is very slow and might not be
|
|
179
|
+
* adapted to cases where a buffer cannot be build, such as live contents.
|
|
180
|
+
*
|
|
181
|
+
* `null` if this buffer size mode is not enabled or if we don't have a
|
|
182
|
+
* choice from it yet.
|
|
183
|
+
*/
|
|
184
|
+
var chosenRepFromBufferSize = null;
|
|
185
|
+
if (allowBufferBasedEstimates &&
|
|
186
|
+
bufferBasedBitrate !== undefined &&
|
|
187
|
+
bufferBasedBitrate > currentBestBitrate) {
|
|
188
|
+
chosenRepFromBufferSize = selectOptimalRepresentation(filteredReps, bufferBasedBitrate, minAutoBitrate, maxAutoBitrate);
|
|
189
|
+
currentBestBitrate = chosenRepFromBufferSize.bitrate;
|
|
155
190
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
191
|
+
/**
|
|
192
|
+
* Representation chosen by the more adventurous `GuessBasedChooser`,
|
|
193
|
+
* which iterates through Representations one by one until finding one
|
|
194
|
+
* that cannot be "maintained".
|
|
195
|
+
*
|
|
196
|
+
* If defined, takes precedence over both `chosenRepFromBandwidth` and
|
|
197
|
+
* `chosenRepFromBufferSize`.
|
|
198
|
+
*
|
|
199
|
+
* This is the riskiest choice (in terms of rebuffering chances) but is
|
|
200
|
+
* only enabled when no other solution is adapted (for now, this just
|
|
201
|
+
* applies for low-latency contents when playing close to the live
|
|
202
|
+
* edge).
|
|
203
|
+
*
|
|
204
|
+
* `null` if not enabled or if there's currently no guess.
|
|
205
|
+
*/
|
|
206
|
+
var chosenRepFromGuessMode = null;
|
|
207
|
+
if (lowLatencyMode &&
|
|
208
|
+
currentRepresentation !== null &&
|
|
209
|
+
liveGap !== undefined &&
|
|
210
|
+
liveGap < 40) {
|
|
211
|
+
chosenRepFromGuessMode = guessBasedChooser.getGuess(representations, observation, currentRepresentation, currentBestBitrate, requests);
|
|
212
|
+
}
|
|
213
|
+
if (chosenRepFromGuessMode !== null &&
|
|
214
|
+
chosenRepFromGuessMode.bitrate > currentBestBitrate) {
|
|
215
|
+
log.debug("ABR: Choosing representation with guess-based estimation.", chosenRepFromGuessMode.bitrate, chosenRepFromGuessMode.id);
|
|
216
|
+
prevEstimate.update(chosenRepFromGuessMode, bandwidthEstimate, 2 /* GuessBased */);
|
|
159
217
|
return { bitrate: bandwidthEstimate,
|
|
160
|
-
representation:
|
|
161
|
-
urgent:
|
|
218
|
+
representation: chosenRepFromGuessMode,
|
|
219
|
+
urgent: currentRepresentation === null ||
|
|
220
|
+
chosenRepFromGuessMode.bitrate < currentRepresentation.bitrate,
|
|
162
221
|
manual: false, knownStableBitrate: knownStableBitrate };
|
|
163
222
|
}
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
|
|
223
|
+
else if (chosenRepFromBufferSize !== null) {
|
|
224
|
+
log.debug("ABR: Choosing representation with buffer-based estimation.", chosenRepFromBufferSize.bitrate, chosenRepFromBufferSize.id);
|
|
225
|
+
prevEstimate.update(chosenRepFromBufferSize, bandwidthEstimate, 0 /* BufferBased */);
|
|
167
226
|
return { bitrate: bandwidthEstimate,
|
|
168
|
-
representation:
|
|
169
|
-
urgent: networkAnalyzer.isUrgent(
|
|
227
|
+
representation: chosenRepFromBufferSize,
|
|
228
|
+
urgent: networkAnalyzer.isUrgent(chosenRepFromBufferSize.bitrate, currentRepresentation, requests, observation),
|
|
170
229
|
manual: false, knownStableBitrate: knownStableBitrate };
|
|
171
230
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
231
|
+
else {
|
|
232
|
+
log.debug("ABR: Choosing representation with bandwidth estimation.", chosenRepFromBandwidth.bitrate, chosenRepFromBandwidth.id);
|
|
233
|
+
prevEstimate.update(chosenRepFromBandwidth, bandwidthEstimate, 1 /* BandwidthBased */);
|
|
234
|
+
return { bitrate: bandwidthEstimate,
|
|
235
|
+
representation: chosenRepFromBandwidth,
|
|
236
|
+
urgent: networkAnalyzer.isUrgent(chosenRepFromBandwidth.bitrate, currentRepresentation, requests, observation),
|
|
237
|
+
manual: false, knownStableBitrate: knownStableBitrate };
|
|
175
238
|
}
|
|
176
|
-
return { bitrate: bandwidthEstimate,
|
|
177
|
-
representation: chosenRepresentation,
|
|
178
|
-
urgent: networkAnalyzer.isUrgent(bufferBasedBitrate, currentRepresentation, requests, clock),
|
|
179
|
-
manual: false, knownStableBitrate: knownStableBitrate };
|
|
180
239
|
}));
|
|
181
240
|
}));
|
|
182
241
|
});
|
|
@@ -62,7 +62,7 @@ export default class RepresentationScoreCalculator {
|
|
|
62
62
|
* @param {Representation} representation
|
|
63
63
|
* @returns {number|undefined}
|
|
64
64
|
*/
|
|
65
|
-
getEstimate(representation: Representation): number | undefined;
|
|
65
|
+
getEstimate(representation: Representation): [number, ScoreConfidenceLevel] | undefined;
|
|
66
66
|
/**
|
|
67
67
|
* Returns last Representation which had reached a score superior to 1.
|
|
68
68
|
* This Representation is the last known one which could be maintained.
|
|
@@ -72,11 +72,8 @@ export default class RepresentationScoreCalculator {
|
|
|
72
72
|
* @returns {Representation|null}
|
|
73
73
|
*/
|
|
74
74
|
getLastStableRepresentation(): Representation | null;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
* @returns {EWMA|null}
|
|
80
|
-
*/
|
|
81
|
-
private _getEWMA;
|
|
75
|
+
}
|
|
76
|
+
export declare const enum ScoreConfidenceLevel {
|
|
77
|
+
HIGH = 1,
|
|
78
|
+
LOW = 0
|
|
82
79
|
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import log from "../../log";
|
|
17
|
-
import EWMA from "./ewma";
|
|
17
|
+
import EWMA from "./utils/ewma";
|
|
18
18
|
/**
|
|
19
19
|
* Calculate the "maintainability score" of a given Representation:
|
|
20
20
|
* - A score higher than 1 means that the Representation can theorically
|
|
@@ -59,20 +59,24 @@ var RepresentationScoreCalculator = /** @class */ (function () {
|
|
|
59
59
|
*/
|
|
60
60
|
RepresentationScoreCalculator.prototype.addSample = function (representation, requestDuration, segmentDuration) {
|
|
61
61
|
var ratio = segmentDuration / requestDuration;
|
|
62
|
-
var
|
|
62
|
+
var currentRep = this._currentRepresentationData;
|
|
63
63
|
var currentEWMA;
|
|
64
|
-
if (
|
|
65
|
-
currentEWMA =
|
|
66
|
-
|
|
64
|
+
if (currentRep !== null && currentRep.representation.id === representation.id) {
|
|
65
|
+
currentEWMA = currentRep.ewma;
|
|
66
|
+
currentRep.ewma.addSample(requestDuration, ratio);
|
|
67
|
+
currentRep.loadedDuration += segmentDuration;
|
|
68
|
+
currentRep.loadedSegments++;
|
|
67
69
|
}
|
|
68
70
|
else {
|
|
69
71
|
currentEWMA = new EWMA(5);
|
|
70
72
|
currentEWMA.addSample(requestDuration, ratio);
|
|
71
|
-
this._currentRepresentationData = { representation: representation, ewma: currentEWMA
|
|
73
|
+
this._currentRepresentationData = { representation: representation, ewma: currentEWMA,
|
|
74
|
+
loadedDuration: segmentDuration,
|
|
75
|
+
loadedSegments: 0 };
|
|
72
76
|
}
|
|
73
77
|
if (currentEWMA.getEstimate() > 1 &&
|
|
74
78
|
this._lastRepresentationWithGoodScore !== representation) {
|
|
75
|
-
log.debug("ABR: New last stable representation", representation);
|
|
79
|
+
log.debug("ABR: New last stable representation", representation.bitrate);
|
|
76
80
|
this._lastRepresentationWithGoodScore = representation;
|
|
77
81
|
}
|
|
78
82
|
};
|
|
@@ -83,10 +87,16 @@ var RepresentationScoreCalculator = /** @class */ (function () {
|
|
|
83
87
|
* @returns {number|undefined}
|
|
84
88
|
*/
|
|
85
89
|
RepresentationScoreCalculator.prototype.getEstimate = function (representation) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return
|
|
90
|
+
if (this._currentRepresentationData === null ||
|
|
91
|
+
this._currentRepresentationData.representation.id !== representation.id) {
|
|
92
|
+
return undefined;
|
|
89
93
|
}
|
|
94
|
+
var _a = this._currentRepresentationData, ewma = _a.ewma, loadedSegments = _a.loadedSegments, loadedDuration = _a.loadedDuration;
|
|
95
|
+
var estimate = ewma.getEstimate();
|
|
96
|
+
var confidenceLevel = loadedSegments >= 5 &&
|
|
97
|
+
loadedDuration >= 10 ? 1 /* HIGH */ :
|
|
98
|
+
0 /* LOW */;
|
|
99
|
+
return [estimate, confidenceLevel];
|
|
90
100
|
};
|
|
91
101
|
/**
|
|
92
102
|
* Returns last Representation which had reached a score superior to 1.
|
|
@@ -99,19 +109,6 @@ var RepresentationScoreCalculator = /** @class */ (function () {
|
|
|
99
109
|
RepresentationScoreCalculator.prototype.getLastStableRepresentation = function () {
|
|
100
110
|
return this._lastRepresentationWithGoodScore;
|
|
101
111
|
};
|
|
102
|
-
/**
|
|
103
|
-
* Returns EWMA for the given Representation.
|
|
104
|
-
* null if no EWMA is currently stored for it.
|
|
105
|
-
* @param {Representation} representation
|
|
106
|
-
* @returns {EWMA|null}
|
|
107
|
-
*/
|
|
108
|
-
RepresentationScoreCalculator.prototype._getEWMA = function (representation) {
|
|
109
|
-
if (this._currentRepresentationData != null &&
|
|
110
|
-
this._currentRepresentationData.representation.id === representation.id) {
|
|
111
|
-
return this._currentRepresentationData.ewma;
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
};
|
|
115
112
|
return RepresentationScoreCalculator;
|
|
116
113
|
}());
|
|
117
114
|
export default RepresentationScoreCalculator;
|
|
File without changes
|
|
File without changes
|
package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts}
RENAMED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Representation } from "
|
|
16
|
+
import { Representation } from "../../../manifest";
|
|
17
17
|
/**
|
|
18
18
|
* Get only representations lower or equal to a given bitrate.
|
|
19
19
|
* If no representation is lower than the given bitrate, returns an array containing
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import arrayFindIndex from "
|
|
16
|
+
import arrayFindIndex from "../../../utils/array_find_index";
|
|
17
17
|
/**
|
|
18
18
|
* Get only representations lower or equal to a given bitrate.
|
|
19
19
|
* If no representation is lower than the given bitrate, returns an array containing
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Representation } from "
|
|
16
|
+
import { Representation } from "../../../manifest";
|
|
17
17
|
/**
|
|
18
18
|
* Filter representations based on their width:
|
|
19
19
|
* - the highest width considered will be the one linked to the first
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import arrayFind from "
|
|
17
|
-
import takeFirstSet from "
|
|
16
|
+
import arrayFind from "../../../utils/array_find";
|
|
17
|
+
import takeFirstSet from "../../../utils/take_first_set";
|
|
18
18
|
/**
|
|
19
19
|
* Filter representations based on their width:
|
|
20
20
|
* - the highest width considered will be the one linked to the first
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Representation } from "
|
|
16
|
+
import { Representation } from "../../../manifest";
|
|
17
17
|
/**
|
|
18
18
|
* From the given array of Representations (sorted by bitrate order ascending),
|
|
19
19
|
* returns the one corresponding to the given optimal, minimum and maximum
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import arrayFindIndex from "
|
|
16
|
+
import arrayFindIndex from "../../../utils/array_find_index";
|
|
17
17
|
/**
|
|
18
18
|
* From the given array of Representations (sorted by bitrate order ascending),
|
|
19
19
|
* returns the one corresponding to the given optimal, minimum and maximum
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Observable } from "rxjs";
|
|
17
|
-
import {
|
|
17
|
+
import { IPlaybackObservation } from "./playback_observer";
|
|
18
18
|
/**
|
|
19
19
|
* Returns Observable which will emit:
|
|
20
20
|
* - `"seeking"` when we are seeking in the given mediaElement
|
|
21
|
-
* - `"seeked"` when a seek is considered as finished by the given
|
|
21
|
+
* - `"seeked"` when a seek is considered as finished by the given observation$
|
|
22
22
|
* Observable.
|
|
23
23
|
* @param {HTMLMediaElement} mediaElement
|
|
24
|
-
* @param {Observable}
|
|
24
|
+
* @param {Observable} observation$
|
|
25
25
|
* @returns {Observable}
|
|
26
26
|
*/
|
|
27
|
-
export default function emitSeekEvents(mediaElement: HTMLMediaElement | null,
|
|
27
|
+
export default function emitSeekEvents(mediaElement: HTMLMediaElement | null, observation$: Observable<IPlaybackObservation>): Observable<"seeking" | "seeked">;
|
|
@@ -13,26 +13,28 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, EMPTY, merge as observableMerge, } from "rxjs";
|
|
17
|
-
import { filter, mapTo, startWith, switchMapTo, take, } from "rxjs/operators";
|
|
16
|
+
import { defer as observableDefer, EMPTY, filter, map, merge as observableMerge, startWith, switchMap, take, } from "rxjs";
|
|
18
17
|
/**
|
|
19
18
|
* Returns Observable which will emit:
|
|
20
19
|
* - `"seeking"` when we are seeking in the given mediaElement
|
|
21
|
-
* - `"seeked"` when a seek is considered as finished by the given
|
|
20
|
+
* - `"seeked"` when a seek is considered as finished by the given observation$
|
|
22
21
|
* Observable.
|
|
23
22
|
* @param {HTMLMediaElement} mediaElement
|
|
24
|
-
* @param {Observable}
|
|
23
|
+
* @param {Observable} observation$
|
|
25
24
|
* @returns {Observable}
|
|
26
25
|
*/
|
|
27
|
-
export default function emitSeekEvents(mediaElement,
|
|
26
|
+
export default function emitSeekEvents(mediaElement, observation$) {
|
|
28
27
|
return observableDefer(function () {
|
|
29
28
|
if (mediaElement === null) {
|
|
30
29
|
return EMPTY;
|
|
31
30
|
}
|
|
32
|
-
var isSeeking$ =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
var isSeeking$ = observation$.pipe(filter(function (observation) { return observation.event === "seeking"; }), map(function () { return "seeking"; }));
|
|
32
|
+
if (mediaElement.seeking) {
|
|
33
|
+
isSeeking$ = isSeeking$.pipe(startWith("seeking"));
|
|
34
|
+
}
|
|
35
|
+
var hasSeeked$ = isSeeking$.pipe(switchMap(function () {
|
|
36
|
+
return observation$.pipe(filter(function (observation) { return observation.event === "seeked"; }), map(function () { return "seeked"; }), take(1));
|
|
37
|
+
}));
|
|
38
|
+
return observableMerge(isSeeking$, hasSeeked$);
|
|
37
39
|
});
|
|
38
40
|
}
|
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import PlaybackObserver from "./playback_observer";
|
|
16
17
|
import Player from "./public_api";
|
|
17
18
|
export { IStreamEvent, IStreamEventData, } from "./public_api";
|
|
18
|
-
export {
|
|
19
|
+
export { PlaybackObserver };
|
|
20
|
+
export { IPlaybackObservation, IPlaybackObserverEventType, IReadOnlyPlaybackObserver, IFreezingStatus, IRebufferingStatus, } from "./playback_observer";
|
|
19
21
|
export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, } from "./option_utils";
|
|
20
22
|
export { ITMAudioTrackListItem, ITMTextTrackListItem, ITMVideoTrackListItem, ITMAudioTrack, ITMTextTrack, ITMVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, } from "./track_choice_manager";
|
|
21
23
|
export default Player;
|
|
@@ -13,5 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import PlaybackObserver from "./playback_observer";
|
|
16
17
|
import Player from "./public_api";
|
|
18
|
+
export { PlaybackObserver };
|
|
17
19
|
export default Player;
|
|
@@ -198,8 +198,8 @@ function parseConstructorOptions(options) {
|
|
|
198
198
|
}
|
|
199
199
|
else if (minVideoBitrate > maxVideoBitrate) {
|
|
200
200
|
throw new Error("Invalid maxVideoBitrate parameter. Its value, \"" +
|
|
201
|
-
(maxVideoBitrate
|
|
202
|
-
(minVideoBitrate
|
|
201
|
+
"".concat(maxVideoBitrate, "\", is inferior to the set minVideoBitrate, \"") +
|
|
202
|
+
"".concat(minVideoBitrate, "\""));
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
if (isNullOrUndefined(options.maxAudioBitrate)) {
|
|
@@ -212,8 +212,8 @@ function parseConstructorOptions(options) {
|
|
|
212
212
|
}
|
|
213
213
|
else if (minAudioBitrate > maxAudioBitrate) {
|
|
214
214
|
throw new Error("Invalid maxAudioBitrate parameter. Its value, \"" +
|
|
215
|
-
(maxAudioBitrate
|
|
216
|
-
(minAudioBitrate
|
|
215
|
+
"".concat(maxAudioBitrate, "\", is inferior to the set minAudioBitrate, \"") +
|
|
216
|
+
"".concat(minAudioBitrate, "\""));
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
var stopAtEnd = isNullOrUndefined(options.stopAtEnd) ? DEFAULT_STOP_AT_END :
|