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
|
@@ -20,34 +20,29 @@
|
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
|
-
BehaviorSubject,
|
|
24
23
|
combineLatest as observableCombineLatest,
|
|
25
24
|
Connectable,
|
|
26
25
|
concat as observableConcat,
|
|
27
26
|
connectable,
|
|
27
|
+
distinctUntilChanged,
|
|
28
28
|
EMPTY,
|
|
29
|
+
filter,
|
|
30
|
+
map,
|
|
29
31
|
merge as observableMerge,
|
|
32
|
+
mergeMap,
|
|
30
33
|
Observable,
|
|
31
34
|
of as observableOf,
|
|
32
35
|
ReplaySubject,
|
|
33
|
-
Subject,
|
|
34
|
-
Subscription,
|
|
35
|
-
} from "rxjs";
|
|
36
|
-
import {
|
|
37
|
-
distinctUntilChanged,
|
|
38
|
-
filter,
|
|
39
|
-
map,
|
|
40
|
-
mapTo,
|
|
41
|
-
mergeMap,
|
|
42
|
-
mergeMapTo,
|
|
43
36
|
share,
|
|
44
37
|
shareReplay,
|
|
45
38
|
skipWhile,
|
|
46
39
|
startWith,
|
|
47
|
-
|
|
40
|
+
Subject,
|
|
41
|
+
Subscription,
|
|
42
|
+
switchMap,
|
|
48
43
|
take,
|
|
49
44
|
takeUntil,
|
|
50
|
-
} from "rxjs
|
|
45
|
+
} from "rxjs";
|
|
51
46
|
import {
|
|
52
47
|
events,
|
|
53
48
|
exitFullscreen,
|
|
@@ -87,6 +82,9 @@ import {
|
|
|
87
82
|
getPlayedSizeOfRange,
|
|
88
83
|
getSizeOfRange,
|
|
89
84
|
} from "../../utils/ranges";
|
|
85
|
+
import createSharedReference, {
|
|
86
|
+
ISharedReference,
|
|
87
|
+
} from "../../utils/reference";
|
|
90
88
|
import warnOnce from "../../utils/warn_once";
|
|
91
89
|
import {
|
|
92
90
|
clearEMESession,
|
|
@@ -111,9 +109,6 @@ import SegmentBuffersStore, {
|
|
|
111
109
|
IBufferType,
|
|
112
110
|
} from "../segment_buffers";
|
|
113
111
|
import { IInbandEvent } from "../stream";
|
|
114
|
-
import createClock, {
|
|
115
|
-
IClockTick,
|
|
116
|
-
} from "./clock";
|
|
117
112
|
import emitSeekEvents from "./emit_seek_events";
|
|
118
113
|
import getPlayerState, {
|
|
119
114
|
IPlayerState,
|
|
@@ -128,6 +123,9 @@ import {
|
|
|
128
123
|
parseConstructorOptions,
|
|
129
124
|
parseLoadVideoOptions,
|
|
130
125
|
} from "./option_utils";
|
|
126
|
+
import PlaybackObserver, {
|
|
127
|
+
IPlaybackObservation,
|
|
128
|
+
} from "./playback_observer";
|
|
131
129
|
import TrackChoiceManager, {
|
|
132
130
|
IAudioTrackPreference,
|
|
133
131
|
ITextTrackPreference,
|
|
@@ -144,7 +142,7 @@ import TrackChoiceManager, {
|
|
|
144
142
|
|
|
145
143
|
const { DEFAULT_UNMUTED_VOLUME } = config;
|
|
146
144
|
|
|
147
|
-
const {
|
|
145
|
+
const { isPageActive,
|
|
148
146
|
isVideoVisible,
|
|
149
147
|
onEnded$,
|
|
150
148
|
onFullscreenChange$,
|
|
@@ -254,10 +252,11 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
254
252
|
private readonly _priv_destroy$ : Subject<void>;
|
|
255
253
|
|
|
256
254
|
/**
|
|
257
|
-
*
|
|
258
|
-
*
|
|
255
|
+
* Contains `true` when the previous content is cleaning-up, `false` when it's
|
|
256
|
+
* done.
|
|
257
|
+
* A new content cannot be launched until it stores `false`.
|
|
259
258
|
*/
|
|
260
|
-
private readonly _priv_contentLock
|
|
259
|
+
private readonly _priv_contentLock : ISharedReference<boolean>;
|
|
261
260
|
|
|
262
261
|
/**
|
|
263
262
|
* Changes on "play" and "pause" events from the media elements.
|
|
@@ -265,22 +264,22 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
265
264
|
* Switches to ``false`` whent the "pause" event was the last received.
|
|
266
265
|
* ``false`` if no such event was received for the current loaded content.
|
|
267
266
|
*/
|
|
268
|
-
private readonly
|
|
267
|
+
private readonly _priv_isPlaying : ISharedReference<boolean>;
|
|
269
268
|
|
|
270
269
|
/**
|
|
271
270
|
* The speed that should be applied to playback.
|
|
272
271
|
* Used instead of videoElement.playbackRate to allow more flexibility.
|
|
273
272
|
*/
|
|
274
|
-
private readonly _priv_speed
|
|
273
|
+
private readonly _priv_speed : ISharedReference<number>;
|
|
275
274
|
|
|
276
275
|
/** Store buffer-related options used needed when initializing a content. */
|
|
277
276
|
private readonly _priv_bufferOptions : {
|
|
278
|
-
/**
|
|
279
|
-
wantedBufferAhead
|
|
277
|
+
/** Last wanted buffer goal. */
|
|
278
|
+
wantedBufferAhead : ISharedReference<number>;
|
|
280
279
|
/** Maximum kept buffer ahead in the current position, in seconds. */
|
|
281
|
-
maxBufferAhead
|
|
280
|
+
maxBufferAhead : ISharedReference<number>;
|
|
282
281
|
/** Maximum kept buffer behind in the current position, in seconds. */
|
|
283
|
-
maxBufferBehind
|
|
282
|
+
maxBufferBehind : ISharedReference<number>;
|
|
284
283
|
};
|
|
285
284
|
|
|
286
285
|
/** Information on the current bitrate settings. */
|
|
@@ -295,16 +294,16 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
295
294
|
image? : number; };
|
|
296
295
|
|
|
297
296
|
/** Store last wanted minAutoBitrates for the next ABRManager instanciation. */
|
|
298
|
-
minAutoBitrates : { audio :
|
|
299
|
-
video :
|
|
297
|
+
minAutoBitrates : { audio : ISharedReference<number>;
|
|
298
|
+
video : ISharedReference<number>; };
|
|
300
299
|
|
|
301
300
|
/** Store last wanted maxAutoBitrates for the next ABRManager instanciation. */
|
|
302
|
-
maxAutoBitrates : { audio :
|
|
303
|
-
video :
|
|
301
|
+
maxAutoBitrates : { audio : ISharedReference<number>;
|
|
302
|
+
video : ISharedReference<number>; };
|
|
304
303
|
|
|
305
304
|
/** Store last wanted manual bitrates for the next ABRManager instanciation. */
|
|
306
|
-
manualBitrates : { audio :
|
|
307
|
-
video :
|
|
305
|
+
manualBitrates : { audio : ISharedReference<number>;
|
|
306
|
+
video : ISharedReference<number>; };
|
|
308
307
|
};
|
|
309
308
|
|
|
310
309
|
/**
|
|
@@ -495,7 +494,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
495
494
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
496
495
|
videoElement.preload = "auto";
|
|
497
496
|
|
|
498
|
-
this.version = /* PLAYER_VERSION */"3.26.
|
|
497
|
+
this.version = /* PLAYER_VERSION */"3.26.2";
|
|
499
498
|
this.log = log;
|
|
500
499
|
this.state = "STOPPED";
|
|
501
500
|
this.videoElement = videoElement;
|
|
@@ -546,26 +545,26 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
546
545
|
)
|
|
547
546
|
.subscribe((x : TextTrack[]) => this._priv_onNativeTextTracksNext(x));
|
|
548
547
|
|
|
549
|
-
this.
|
|
550
|
-
this._priv_speed
|
|
548
|
+
this._priv_isPlaying = createSharedReference(false);
|
|
549
|
+
this._priv_speed = createSharedReference(videoElement.playbackRate);
|
|
551
550
|
this._priv_preferTrickModeTracks = false;
|
|
552
|
-
this._priv_contentLock
|
|
551
|
+
this._priv_contentLock = createSharedReference<boolean>(false);
|
|
553
552
|
|
|
554
553
|
this._priv_bufferOptions = {
|
|
555
|
-
wantedBufferAhead
|
|
556
|
-
maxBufferAhead
|
|
557
|
-
maxBufferBehind
|
|
554
|
+
wantedBufferAhead: createSharedReference(wantedBufferAhead),
|
|
555
|
+
maxBufferAhead: createSharedReference(maxBufferAhead),
|
|
556
|
+
maxBufferBehind: createSharedReference(maxBufferBehind),
|
|
558
557
|
};
|
|
559
558
|
|
|
560
559
|
this._priv_bitrateInfos = {
|
|
561
560
|
lastBitrates: { audio: initialAudioBitrate,
|
|
562
561
|
video: initialVideoBitrate },
|
|
563
|
-
minAutoBitrates: { audio:
|
|
564
|
-
video:
|
|
565
|
-
maxAutoBitrates: { audio:
|
|
566
|
-
video:
|
|
567
|
-
manualBitrates: { audio:
|
|
568
|
-
video:
|
|
562
|
+
minAutoBitrates: { audio: createSharedReference(minAudioBitrate),
|
|
563
|
+
video: createSharedReference(minVideoBitrate) },
|
|
564
|
+
maxAutoBitrates: { audio: createSharedReference(maxAudioBitrate),
|
|
565
|
+
video: createSharedReference(maxVideoBitrate) },
|
|
566
|
+
manualBitrates: { audio: createSharedReference(-1),
|
|
567
|
+
video: createSharedReference(-1) },
|
|
569
568
|
};
|
|
570
569
|
|
|
571
570
|
this._priv_throttleWhenHidden = throttleWhenHidden;
|
|
@@ -622,20 +621,20 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
622
621
|
this._priv_destroy$.next();
|
|
623
622
|
this._priv_destroy$.complete();
|
|
624
623
|
|
|
625
|
-
// Complete all subjects
|
|
626
|
-
this._priv_playing$.complete();
|
|
627
|
-
this._priv_speed$.complete();
|
|
628
|
-
this._priv_contentLock$.complete();
|
|
629
|
-
this._priv_bufferOptions.wantedBufferAhead$.complete();
|
|
630
|
-
this._priv_bufferOptions.maxBufferAhead$.complete();
|
|
631
|
-
this._priv_bufferOptions.maxBufferBehind$.complete();
|
|
624
|
+
// Complete all subjects and references
|
|
632
625
|
this._priv_pictureInPictureEvent$.complete();
|
|
633
|
-
this.
|
|
634
|
-
this.
|
|
635
|
-
this.
|
|
636
|
-
this.
|
|
637
|
-
this.
|
|
638
|
-
this.
|
|
626
|
+
this._priv_isPlaying.finish();
|
|
627
|
+
this._priv_speed.finish();
|
|
628
|
+
this._priv_contentLock.finish();
|
|
629
|
+
this._priv_bufferOptions.wantedBufferAhead.finish();
|
|
630
|
+
this._priv_bufferOptions.maxBufferAhead.finish();
|
|
631
|
+
this._priv_bufferOptions.maxBufferBehind.finish();
|
|
632
|
+
this._priv_bitrateInfos.manualBitrates.video.finish();
|
|
633
|
+
this._priv_bitrateInfos.manualBitrates.audio.finish();
|
|
634
|
+
this._priv_bitrateInfos.minAutoBitrates.video.finish();
|
|
635
|
+
this._priv_bitrateInfos.minAutoBitrates.audio.finish();
|
|
636
|
+
this._priv_bitrateInfos.maxAutoBitrates.video.finish();
|
|
637
|
+
this._priv_bitrateInfos.maxAutoBitrates.audio.finish();
|
|
639
638
|
|
|
640
639
|
this._priv_lastContentPlaybackInfos = {};
|
|
641
640
|
|
|
@@ -745,8 +744,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
745
744
|
|
|
746
745
|
|
|
747
746
|
const videoElement = this.videoElement;
|
|
748
|
-
|
|
749
|
-
|
|
747
|
+
|
|
748
|
+
/** Global "playback observer" which will emit playback conditions */
|
|
749
|
+
const playbackObserver = new PlaybackObserver(videoElement, {
|
|
750
750
|
withMediaSource: !isDirectFile,
|
|
751
751
|
lowLatencyMode,
|
|
752
752
|
});
|
|
@@ -754,15 +754,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
754
754
|
/** Emit playback events. */
|
|
755
755
|
let playback$ : Connectable<IInitEvent>;
|
|
756
756
|
|
|
757
|
-
const speed$ = this._priv_speed$.pipe(distinctUntilChanged());
|
|
758
|
-
|
|
759
757
|
if (!isDirectFile) {
|
|
760
758
|
const transportFn = features.transports[transport];
|
|
761
759
|
if (typeof transportFn !== "function") {
|
|
762
760
|
// Stop previous content and reset its state
|
|
763
761
|
this.stop();
|
|
764
762
|
this._priv_currentError = null;
|
|
765
|
-
this.
|
|
763
|
+
this._priv_isPlaying.setValue(false);
|
|
766
764
|
throw new Error(`transport "${transport}" not supported`);
|
|
767
765
|
}
|
|
768
766
|
|
|
@@ -813,7 +811,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
813
811
|
this.stop();
|
|
814
812
|
|
|
815
813
|
this._priv_currentError = null;
|
|
816
|
-
this.
|
|
814
|
+
this._priv_isPlaying.setValue(false);
|
|
817
815
|
this._priv_contentInfos = contentInfos;
|
|
818
816
|
|
|
819
817
|
const relyOnVideoVisibilityAndSize = canRelyOnVideoVisibilityAndSize();
|
|
@@ -827,7 +825,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
827
825
|
"browser can't be trusted for visibility.");
|
|
828
826
|
} else {
|
|
829
827
|
throttlers.throttle = {
|
|
830
|
-
video:
|
|
828
|
+
video: isPageActive().pipe(
|
|
831
829
|
map(active => active ? Infinity :
|
|
832
830
|
0),
|
|
833
831
|
takeUntil(stopContent$)),
|
|
@@ -886,7 +884,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
886
884
|
const init$ = initializeMediaSourcePlayback({ adaptiveOptions,
|
|
887
885
|
autoPlay,
|
|
888
886
|
bufferOptions,
|
|
889
|
-
|
|
887
|
+
playbackObserver,
|
|
890
888
|
keySystems,
|
|
891
889
|
lowLatencyMode,
|
|
892
890
|
manifest$,
|
|
@@ -894,8 +892,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
894
892
|
mediaElement: videoElement,
|
|
895
893
|
minimumManifestUpdateInterval,
|
|
896
894
|
segmentFetcherCreator,
|
|
897
|
-
|
|
898
|
-
speed$,
|
|
895
|
+
speed: this._priv_speed,
|
|
899
896
|
startAt,
|
|
900
897
|
textTrackOptions })
|
|
901
898
|
.pipe(takeUntil(stopContent$));
|
|
@@ -906,7 +903,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
906
903
|
// Stop previous content and reset its state
|
|
907
904
|
this.stop();
|
|
908
905
|
this._priv_currentError = null;
|
|
909
|
-
this.
|
|
906
|
+
this._priv_isPlaying.setValue(false);
|
|
910
907
|
if (features.directfile === null) {
|
|
911
908
|
throw new Error("DirectFile feature not activated in your build.");
|
|
912
909
|
}
|
|
@@ -969,12 +966,11 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
969
966
|
|
|
970
967
|
const directfileInit$ =
|
|
971
968
|
features.directfile.initDirectFile({ autoPlay,
|
|
972
|
-
clock$,
|
|
973
969
|
keySystems,
|
|
974
970
|
mediaElement: videoElement,
|
|
975
|
-
speed
|
|
971
|
+
speed: this._priv_speed,
|
|
972
|
+
playbackObserver,
|
|
976
973
|
startAt,
|
|
977
|
-
setCurrentTime,
|
|
978
974
|
url })
|
|
979
975
|
.pipe(takeUntil(stopContent$));
|
|
980
976
|
|
|
@@ -1014,7 +1010,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1014
1010
|
|
|
1015
1011
|
/** Emit state updates once the content is considered "loaded". */
|
|
1016
1012
|
const loadedStateUpdates$ = observableCombineLatest([
|
|
1017
|
-
this.
|
|
1013
|
+
this._priv_isPlaying.asObservable(),
|
|
1018
1014
|
stalled$.pipe(startWith(null)),
|
|
1019
1015
|
endedEvent$.pipe(startWith(null)),
|
|
1020
1016
|
seekingEvent$.pipe(startWith(null)),
|
|
@@ -1030,7 +1026,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1030
1026
|
observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
|
|
1031
1027
|
|
|
1032
1028
|
// LOADED as soon as the first "loaded" event is sent
|
|
1033
|
-
loaded$.pipe(take(1),
|
|
1029
|
+
loaded$.pipe(take(1), map(() => PLAYER_STATES.LOADED)),
|
|
1034
1030
|
|
|
1035
1031
|
observableMerge(
|
|
1036
1032
|
loadedStateUpdates$
|
|
@@ -1042,10 +1038,10 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1042
1038
|
|
|
1043
1039
|
// when reloading
|
|
1044
1040
|
reloading$.pipe(
|
|
1045
|
-
|
|
1041
|
+
switchMap(() =>
|
|
1046
1042
|
loaded$.pipe(
|
|
1047
1043
|
take(1), // wait for the next loaded event
|
|
1048
|
-
|
|
1044
|
+
mergeMap(() => loadedStateUpdates$), // to update the state as usual
|
|
1049
1045
|
startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
|
|
1050
1046
|
)
|
|
1051
1047
|
)
|
|
@@ -1067,14 +1063,16 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1067
1063
|
.pipe(takeUntil(stopContent$))
|
|
1068
1064
|
.subscribe(e => this._priv_onPlayPauseNext(e.type === "play"));
|
|
1069
1065
|
|
|
1070
|
-
|
|
1071
|
-
|
|
1066
|
+
const observation$ = playbackObserver.observe(true);
|
|
1067
|
+
|
|
1068
|
+
// Link "positionUpdate" events to the PlaybackObserver
|
|
1069
|
+
observation$
|
|
1072
1070
|
.pipe(takeUntil(stopContent$))
|
|
1073
|
-
.subscribe(
|
|
1071
|
+
.subscribe(o => this._priv_triggerPositionUpdate(o));
|
|
1074
1072
|
|
|
1075
1073
|
// Link "seeking" and "seeked" events (once the content is loaded)
|
|
1076
1074
|
loaded$.pipe(
|
|
1077
|
-
|
|
1075
|
+
switchMap(() => emitSeekEvents(this.videoElement, observation$)),
|
|
1078
1076
|
takeUntil(stopContent$)
|
|
1079
1077
|
).subscribe((evt : "seeking" | "seeked") => {
|
|
1080
1078
|
log.info(`API: Triggering "${evt}" event`);
|
|
@@ -1103,7 +1101,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1103
1101
|
});
|
|
1104
1102
|
|
|
1105
1103
|
// initialize the content only when the lock is inactive
|
|
1106
|
-
this._priv_contentLock
|
|
1104
|
+
this._priv_contentLock.asObservable()
|
|
1107
1105
|
.pipe(
|
|
1108
1106
|
filter((isLocked) => !isLocked),
|
|
1109
1107
|
take(1),
|
|
@@ -1375,7 +1373,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1375
1373
|
* @returns {Number}
|
|
1376
1374
|
*/
|
|
1377
1375
|
getPlaybackRate() : number {
|
|
1378
|
-
return this._priv_speed
|
|
1376
|
+
return this._priv_speed.getValue();
|
|
1379
1377
|
}
|
|
1380
1378
|
|
|
1381
1379
|
/**
|
|
@@ -1438,7 +1436,9 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1438
1436
|
rate : number,
|
|
1439
1437
|
opts? : { preferTrickModeTracks? : boolean }
|
|
1440
1438
|
) : void {
|
|
1441
|
-
this._priv_speed
|
|
1439
|
+
if (rate !== this._priv_speed.getValue()) {
|
|
1440
|
+
this._priv_speed.setValue(rate);
|
|
1441
|
+
}
|
|
1442
1442
|
|
|
1443
1443
|
const preferTrickModeTracks = opts?.preferTrickModeTracks;
|
|
1444
1444
|
if (typeof preferTrickModeTracks !== "boolean") {
|
|
@@ -1770,7 +1770,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1770
1770
|
* @param {Number} btr
|
|
1771
1771
|
*/
|
|
1772
1772
|
setVideoBitrate(btr : number) : void {
|
|
1773
|
-
this._priv_bitrateInfos.manualBitrates.video.
|
|
1773
|
+
this._priv_bitrateInfos.manualBitrates.video.setValue(btr);
|
|
1774
1774
|
}
|
|
1775
1775
|
|
|
1776
1776
|
/**
|
|
@@ -1779,7 +1779,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1779
1779
|
* @param {Number} btr
|
|
1780
1780
|
*/
|
|
1781
1781
|
setAudioBitrate(btr : number) : void {
|
|
1782
|
-
this._priv_bitrateInfos.manualBitrates.audio.
|
|
1782
|
+
this._priv_bitrateInfos.manualBitrates.audio.setValue(btr);
|
|
1783
1783
|
}
|
|
1784
1784
|
|
|
1785
1785
|
/**
|
|
@@ -1793,7 +1793,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1793
1793
|
`Its value, "${btr}" is superior the current maximum ` +
|
|
1794
1794
|
`video birate, "${maxVideoBitrate}".`);
|
|
1795
1795
|
}
|
|
1796
|
-
this._priv_bitrateInfos.minAutoBitrates.video.
|
|
1796
|
+
this._priv_bitrateInfos.minAutoBitrates.video.setValue(btr);
|
|
1797
1797
|
}
|
|
1798
1798
|
|
|
1799
1799
|
/**
|
|
@@ -1807,7 +1807,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1807
1807
|
`Its value, "${btr}" is superior the current maximum ` +
|
|
1808
1808
|
`audio birate, "${maxAudioBitrate}".`);
|
|
1809
1809
|
}
|
|
1810
|
-
this._priv_bitrateInfos.minAutoBitrates.audio.
|
|
1810
|
+
this._priv_bitrateInfos.minAutoBitrates.audio.setValue(btr);
|
|
1811
1811
|
}
|
|
1812
1812
|
|
|
1813
1813
|
/**
|
|
@@ -1821,7 +1821,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1821
1821
|
`Its value, "${btr}" is inferior the current minimum ` +
|
|
1822
1822
|
`video birate, "${minVideoBitrate}".`);
|
|
1823
1823
|
}
|
|
1824
|
-
this._priv_bitrateInfos.maxAutoBitrates.video.
|
|
1824
|
+
this._priv_bitrateInfos.maxAutoBitrates.video.setValue(btr);
|
|
1825
1825
|
}
|
|
1826
1826
|
|
|
1827
1827
|
/**
|
|
@@ -1835,7 +1835,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1835
1835
|
`Its value, "${btr}" is inferior the current minimum ` +
|
|
1836
1836
|
`audio birate, "${minAudioBitrate}".`);
|
|
1837
1837
|
}
|
|
1838
|
-
this._priv_bitrateInfos.maxAutoBitrates.audio.
|
|
1838
|
+
this._priv_bitrateInfos.maxAutoBitrates.audio.setValue(btr);
|
|
1839
1839
|
}
|
|
1840
1840
|
|
|
1841
1841
|
/**
|
|
@@ -1844,7 +1844,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1844
1844
|
* @param {Number} depthInSeconds
|
|
1845
1845
|
*/
|
|
1846
1846
|
setMaxBufferBehind(depthInSeconds : number) : void {
|
|
1847
|
-
this._priv_bufferOptions.maxBufferBehind
|
|
1847
|
+
this._priv_bufferOptions.maxBufferBehind.setValue(depthInSeconds);
|
|
1848
1848
|
}
|
|
1849
1849
|
|
|
1850
1850
|
/**
|
|
@@ -1853,7 +1853,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1853
1853
|
* @param {Number} depthInSeconds
|
|
1854
1854
|
*/
|
|
1855
1855
|
setMaxBufferAhead(depthInSeconds : number) : void {
|
|
1856
|
-
this._priv_bufferOptions.maxBufferAhead
|
|
1856
|
+
this._priv_bufferOptions.maxBufferAhead.setValue(depthInSeconds);
|
|
1857
1857
|
}
|
|
1858
1858
|
|
|
1859
1859
|
/**
|
|
@@ -1862,7 +1862,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1862
1862
|
* @param {Number} sizeInSeconds
|
|
1863
1863
|
*/
|
|
1864
1864
|
setWantedBufferAhead(sizeInSeconds : number) : void {
|
|
1865
|
-
this._priv_bufferOptions.wantedBufferAhead
|
|
1865
|
+
this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
|
|
1866
1866
|
}
|
|
1867
1867
|
|
|
1868
1868
|
/**
|
|
@@ -1870,7 +1870,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1870
1870
|
* @returns {Number}
|
|
1871
1871
|
*/
|
|
1872
1872
|
getMaxBufferBehind() : number {
|
|
1873
|
-
return this._priv_bufferOptions.maxBufferBehind
|
|
1873
|
+
return this._priv_bufferOptions.maxBufferBehind.getValue();
|
|
1874
1874
|
}
|
|
1875
1875
|
|
|
1876
1876
|
/**
|
|
@@ -1878,7 +1878,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1878
1878
|
* @returns {Number}
|
|
1879
1879
|
*/
|
|
1880
1880
|
getMaxBufferAhead() : number {
|
|
1881
|
-
return this._priv_bufferOptions.maxBufferAhead
|
|
1881
|
+
return this._priv_bufferOptions.maxBufferAhead.getValue();
|
|
1882
1882
|
}
|
|
1883
1883
|
|
|
1884
1884
|
/**
|
|
@@ -1886,7 +1886,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
1886
1886
|
* @returns {Number}
|
|
1887
1887
|
*/
|
|
1888
1888
|
getWantedBufferAhead() : number {
|
|
1889
|
-
return this._priv_bufferOptions.wantedBufferAhead
|
|
1889
|
+
return this._priv_bufferOptions.wantedBufferAhead.getValue();
|
|
1890
1890
|
}
|
|
1891
1891
|
|
|
1892
1892
|
/**
|
|
@@ -2327,7 +2327,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2327
2327
|
log.debug("Locking `contentLock` to clean-up the current content.");
|
|
2328
2328
|
|
|
2329
2329
|
// lock playback of new contents while cleaning up is pending
|
|
2330
|
-
this._priv_contentLock
|
|
2330
|
+
this._priv_contentLock.setValue(true);
|
|
2331
2331
|
|
|
2332
2332
|
this._priv_contentInfos = null;
|
|
2333
2333
|
this._priv_trackChoiceManager = null;
|
|
@@ -2339,7 +2339,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2339
2339
|
// EME cleaning
|
|
2340
2340
|
const freeUpContentLock = () => {
|
|
2341
2341
|
log.debug("Unlocking `contentLock`. Next content can begin.");
|
|
2342
|
-
this._priv_contentLock
|
|
2342
|
+
this._priv_contentLock.setValue(false);
|
|
2343
2343
|
};
|
|
2344
2344
|
|
|
2345
2345
|
if (!isNullOrUndefined(this.videoElement)) {
|
|
@@ -2848,7 +2848,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2848
2848
|
throw new Error("Disposed player");
|
|
2849
2849
|
}
|
|
2850
2850
|
|
|
2851
|
-
this.
|
|
2851
|
+
this._priv_isPlaying.setValue(isPlaying);
|
|
2852
2852
|
}
|
|
2853
2853
|
|
|
2854
2854
|
/**
|
|
@@ -2878,13 +2878,13 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2878
2878
|
}
|
|
2879
2879
|
|
|
2880
2880
|
/**
|
|
2881
|
-
* Triggered each time a
|
|
2881
|
+
* Triggered each time a playback observation.
|
|
2882
2882
|
*
|
|
2883
2883
|
* Trigger the right Player Event
|
|
2884
2884
|
*
|
|
2885
|
-
* @param {Object}
|
|
2885
|
+
* @param {Object} observation
|
|
2886
2886
|
*/
|
|
2887
|
-
private _priv_triggerPositionUpdate(
|
|
2887
|
+
private _priv_triggerPositionUpdate(observation : IPlaybackObservation) : void {
|
|
2888
2888
|
if (this._priv_contentInfos === null) {
|
|
2889
2889
|
log.warn("API: Cannot perform time update: no content loaded.");
|
|
2890
2890
|
return;
|
|
@@ -2895,33 +2895,33 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2895
2895
|
}
|
|
2896
2896
|
|
|
2897
2897
|
const { isDirectFile, manifest } = this._priv_contentInfos;
|
|
2898
|
-
if ((!isDirectFile && manifest === null) || isNullOrUndefined(
|
|
2898
|
+
if ((!isDirectFile && manifest === null) || isNullOrUndefined(observation)) {
|
|
2899
2899
|
return;
|
|
2900
2900
|
}
|
|
2901
2901
|
|
|
2902
|
-
this._priv_lastContentPlaybackInfos.lastPlaybackPosition =
|
|
2902
|
+
this._priv_lastContentPlaybackInfos.lastPlaybackPosition = observation.position;
|
|
2903
2903
|
|
|
2904
2904
|
const maximumPosition = manifest !== null ? manifest.getMaximumPosition() :
|
|
2905
2905
|
undefined;
|
|
2906
2906
|
const positionData : IPositionUpdateItem = {
|
|
2907
|
-
position:
|
|
2908
|
-
duration:
|
|
2909
|
-
playbackRate:
|
|
2907
|
+
position: observation.position,
|
|
2908
|
+
duration: observation.duration,
|
|
2909
|
+
playbackRate: observation.playbackRate,
|
|
2910
2910
|
maximumBufferTime: maximumPosition,
|
|
2911
2911
|
|
|
2912
2912
|
// TODO fix higher up?
|
|
2913
|
-
bufferGap: isFinite(
|
|
2913
|
+
bufferGap: isFinite(observation.bufferGap) ? observation.bufferGap :
|
|
2914
2914
|
0,
|
|
2915
2915
|
};
|
|
2916
2916
|
|
|
2917
2917
|
if (manifest !== null &&
|
|
2918
2918
|
maximumPosition !== undefined &&
|
|
2919
2919
|
manifest.isLive &&
|
|
2920
|
-
|
|
2920
|
+
observation.position > 0
|
|
2921
2921
|
) {
|
|
2922
2922
|
const ast = manifest.availabilityStartTime ?? 0;
|
|
2923
|
-
positionData.wallClockTime =
|
|
2924
|
-
positionData.liveGap = maximumPosition -
|
|
2923
|
+
positionData.wallClockTime = observation.position + ast;
|
|
2924
|
+
positionData.liveGap = maximumPosition - observation.position;
|
|
2925
2925
|
}
|
|
2926
2926
|
|
|
2927
2927
|
this.trigger("positionUpdate", positionData);
|
|
@@ -2975,7 +2975,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2975
2975
|
return activeRepresentations[currentPeriod.id];
|
|
2976
2976
|
}
|
|
2977
2977
|
}
|
|
2978
|
-
Player.version = /* PLAYER_VERSION */"3.26.
|
|
2978
|
+
Player.version = /* PLAYER_VERSION */"3.26.2";
|
|
2979
2979
|
|
|
2980
2980
|
export default Player;
|
|
2981
2981
|
export { IStreamEventData };
|
|
@@ -325,7 +325,8 @@ export default class TrackChoiceManager {
|
|
|
325
325
|
const adaptations = period.getSupportedAdaptations(bufferType);
|
|
326
326
|
if (periodItem !== undefined) {
|
|
327
327
|
if (periodItem[bufferType] !== undefined) {
|
|
328
|
-
log.warn(`TrackChoiceManager: ${bufferType} already added for period`,
|
|
328
|
+
log.warn(`TrackChoiceManager: ${bufferType} already added for period`,
|
|
329
|
+
period.start);
|
|
329
330
|
return;
|
|
330
331
|
} else {
|
|
331
332
|
periodItem[bufferType] = { adaptations, adaptation$ };
|
|
@@ -348,13 +349,15 @@ export default class TrackChoiceManager {
|
|
|
348
349
|
) : void {
|
|
349
350
|
const periodIndex = findPeriodIndex(this._periods, period);
|
|
350
351
|
if (periodIndex === undefined) {
|
|
351
|
-
log.warn(`TrackChoiceManager: ${bufferType} not found for period`,
|
|
352
|
+
log.warn(`TrackChoiceManager: ${bufferType} not found for period`,
|
|
353
|
+
period.start);
|
|
352
354
|
return;
|
|
353
355
|
}
|
|
354
356
|
|
|
355
357
|
const periodItem = this._periods.get(periodIndex);
|
|
356
358
|
if (periodItem[bufferType] === undefined) {
|
|
357
|
-
log.warn(`TrackChoiceManager: ${bufferType} already removed for period`,
|
|
359
|
+
log.warn(`TrackChoiceManager: ${bufferType} already removed for period`,
|
|
360
|
+
period.start);
|
|
358
361
|
return;
|
|
359
362
|
}
|
|
360
363
|
delete periodItem[bufferType];
|
|
@@ -23,8 +23,10 @@
|
|
|
23
23
|
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
24
24
|
/* eslint-disable no-restricted-properties */
|
|
25
25
|
|
|
26
|
-
import {
|
|
27
|
-
|
|
26
|
+
import {
|
|
27
|
+
Subject,
|
|
28
|
+
takeUntil,
|
|
29
|
+
} from "rxjs";
|
|
28
30
|
import { ICustomError } from "../../../../errors";
|
|
29
31
|
import { concat } from "../../../../utils/byte_parsing";
|
|
30
32
|
import { IContentProtection } from "../../types";
|
|
@@ -353,7 +355,7 @@ function checkGetLicense(
|
|
|
353
355
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
354
356
|
.subscribe((evt : any) => {
|
|
355
357
|
if (evt.type === "created-media-keys") {
|
|
356
|
-
evt.value.
|
|
358
|
+
evt.value.canAttachMediaKeys.setValue(true);
|
|
357
359
|
}
|
|
358
360
|
eventsReceived++;
|
|
359
361
|
// Those first three have been tested enough
|