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
|
@@ -43,8 +43,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
43
43
|
* This file defines the public API for the RxPlayer.
|
|
44
44
|
* It also starts the different sub-parts of the player on various API calls.
|
|
45
45
|
*/
|
|
46
|
-
import {
|
|
47
|
-
import { distinctUntilChanged, filter, map, mapTo, mergeMap, mergeMapTo, share, shareReplay, skipWhile, startWith, switchMapTo, take, takeUntil, } from "rxjs/operators";
|
|
46
|
+
import { combineLatest as observableCombineLatest, concat as observableConcat, connectable, distinctUntilChanged, EMPTY, filter, map, merge as observableMerge, mergeMap, of as observableOf, ReplaySubject, share, shareReplay, skipWhile, startWith, Subject, switchMap, take, takeUntil, } from "rxjs";
|
|
48
47
|
import { events, exitFullscreen, isFullscreen, requestFullscreen, } from "../../compat";
|
|
49
48
|
/* eslint-disable-next-line max-len */
|
|
50
49
|
import canRelyOnVideoVisibilityAndSize from "../../compat/can_rely_on_video_visibility_and_size";
|
|
@@ -59,18 +58,19 @@ import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
|
59
58
|
import objectAssign from "../../utils/object_assign";
|
|
60
59
|
import PPromise from "../../utils/promise";
|
|
61
60
|
import { getLeftSizeOfRange, getPlayedSizeOfRange, getSizeOfRange, } from "../../utils/ranges";
|
|
61
|
+
import createSharedReference from "../../utils/reference";
|
|
62
62
|
import warnOnce from "../../utils/warn_once";
|
|
63
63
|
import { clearEMESession, disposeEME, getCurrentKeySystem, } from "../eme";
|
|
64
64
|
import { ManifestFetcher, SegmentFetcherCreator, } from "../fetchers";
|
|
65
65
|
import initializeMediaSourcePlayback from "../init";
|
|
66
|
-
import createClock from "./clock";
|
|
67
66
|
import emitSeekEvents from "./emit_seek_events";
|
|
68
67
|
import getPlayerState, { PLAYER_STATES, } from "./get_player_state";
|
|
69
68
|
import { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, } from "./option_utils";
|
|
69
|
+
import PlaybackObserver from "./playback_observer";
|
|
70
70
|
import TrackChoiceManager from "./track_choice_manager";
|
|
71
71
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
72
72
|
var DEFAULT_UNMUTED_VOLUME = config.DEFAULT_UNMUTED_VOLUME;
|
|
73
|
-
var
|
|
73
|
+
var isPageActive = events.isPageActive, isVideoVisible = events.isVideoVisible, onEnded$ = events.onEnded$, onFullscreenChange$ = events.onFullscreenChange$, onPlayPause$ = events.onPlayPause$, onPictureInPictureEvent$ = events.onPictureInPictureEvent$, onSeeking$ = events.onSeeking$, onTextTrackChanges$ = events.onTextTrackChanges$, videoWidth$ = events.videoWidth$;
|
|
74
74
|
/**
|
|
75
75
|
* @class Player
|
|
76
76
|
* @extends EventEmitter
|
|
@@ -88,7 +88,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
88
88
|
// Workaround to support Firefox autoplay on FF 42.
|
|
89
89
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
90
90
|
videoElement.preload = "auto";
|
|
91
|
-
_this.version = /* PLAYER_VERSION */ "3.26.
|
|
91
|
+
_this.version = /* PLAYER_VERSION */ "3.26.2";
|
|
92
92
|
_this.log = log;
|
|
93
93
|
_this.state = "STOPPED";
|
|
94
94
|
_this.videoElement = videoElement;
|
|
@@ -130,24 +130,24 @@ var Player = /** @class */ (function (_super) {
|
|
|
130
130
|
return true;
|
|
131
131
|
}))
|
|
132
132
|
.subscribe(function (x) { return _this._priv_onNativeTextTracksNext(x); });
|
|
133
|
-
_this.
|
|
134
|
-
_this._priv_speed
|
|
133
|
+
_this._priv_isPlaying = createSharedReference(false);
|
|
134
|
+
_this._priv_speed = createSharedReference(videoElement.playbackRate);
|
|
135
135
|
_this._priv_preferTrickModeTracks = false;
|
|
136
|
-
_this._priv_contentLock
|
|
136
|
+
_this._priv_contentLock = createSharedReference(false);
|
|
137
137
|
_this._priv_bufferOptions = {
|
|
138
|
-
wantedBufferAhead
|
|
139
|
-
maxBufferAhead
|
|
140
|
-
maxBufferBehind
|
|
138
|
+
wantedBufferAhead: createSharedReference(wantedBufferAhead),
|
|
139
|
+
maxBufferAhead: createSharedReference(maxBufferAhead),
|
|
140
|
+
maxBufferBehind: createSharedReference(maxBufferBehind),
|
|
141
141
|
};
|
|
142
142
|
_this._priv_bitrateInfos = {
|
|
143
143
|
lastBitrates: { audio: initialAudioBitrate,
|
|
144
144
|
video: initialVideoBitrate },
|
|
145
|
-
minAutoBitrates: { audio:
|
|
146
|
-
video:
|
|
147
|
-
maxAutoBitrates: { audio:
|
|
148
|
-
video:
|
|
149
|
-
manualBitrates: { audio:
|
|
150
|
-
video:
|
|
145
|
+
minAutoBitrates: { audio: createSharedReference(minAudioBitrate),
|
|
146
|
+
video: createSharedReference(minVideoBitrate) },
|
|
147
|
+
maxAutoBitrates: { audio: createSharedReference(maxAudioBitrate),
|
|
148
|
+
video: createSharedReference(maxVideoBitrate) },
|
|
149
|
+
manualBitrates: { audio: createSharedReference(-1),
|
|
150
|
+
video: createSharedReference(-1) },
|
|
151
151
|
};
|
|
152
152
|
_this._priv_throttleWhenHidden = throttleWhenHidden;
|
|
153
153
|
_this._priv_throttleVideoBitrateWhenHidden = throttleVideoBitrateWhenHidden;
|
|
@@ -230,20 +230,20 @@ var Player = /** @class */ (function (_super) {
|
|
|
230
230
|
// free Observables linked to the Player instance
|
|
231
231
|
this._priv_destroy$.next();
|
|
232
232
|
this._priv_destroy$.complete();
|
|
233
|
-
// Complete all subjects
|
|
234
|
-
this._priv_playing$.complete();
|
|
235
|
-
this._priv_speed$.complete();
|
|
236
|
-
this._priv_contentLock$.complete();
|
|
237
|
-
this._priv_bufferOptions.wantedBufferAhead$.complete();
|
|
238
|
-
this._priv_bufferOptions.maxBufferAhead$.complete();
|
|
239
|
-
this._priv_bufferOptions.maxBufferBehind$.complete();
|
|
233
|
+
// Complete all subjects and references
|
|
240
234
|
this._priv_pictureInPictureEvent$.complete();
|
|
241
|
-
this.
|
|
242
|
-
this.
|
|
243
|
-
this.
|
|
244
|
-
this.
|
|
245
|
-
this.
|
|
246
|
-
this.
|
|
235
|
+
this._priv_isPlaying.finish();
|
|
236
|
+
this._priv_speed.finish();
|
|
237
|
+
this._priv_contentLock.finish();
|
|
238
|
+
this._priv_bufferOptions.wantedBufferAhead.finish();
|
|
239
|
+
this._priv_bufferOptions.maxBufferAhead.finish();
|
|
240
|
+
this._priv_bufferOptions.maxBufferBehind.finish();
|
|
241
|
+
this._priv_bitrateInfos.manualBitrates.video.finish();
|
|
242
|
+
this._priv_bitrateInfos.manualBitrates.audio.finish();
|
|
243
|
+
this._priv_bitrateInfos.minAutoBitrates.video.finish();
|
|
244
|
+
this._priv_bitrateInfos.minAutoBitrates.audio.finish();
|
|
245
|
+
this._priv_bitrateInfos.maxAutoBitrates.video.finish();
|
|
246
|
+
this._priv_bitrateInfos.maxAutoBitrates.audio.finish();
|
|
247
247
|
this._priv_lastContentPlaybackInfos = {};
|
|
248
248
|
// un-attach video element
|
|
249
249
|
this.videoElement = null;
|
|
@@ -326,22 +326,21 @@ var Player = /** @class */ (function (_super) {
|
|
|
326
326
|
initialAudioTrack: defaultAudioTrack,
|
|
327
327
|
initialTextTrack: defaultTextTrack };
|
|
328
328
|
var videoElement = this.videoElement;
|
|
329
|
-
/** Global "
|
|
330
|
-
var
|
|
329
|
+
/** Global "playback observer" which will emit playback conditions */
|
|
330
|
+
var playbackObserver = new PlaybackObserver(videoElement, {
|
|
331
331
|
withMediaSource: !isDirectFile,
|
|
332
332
|
lowLatencyMode: lowLatencyMode,
|
|
333
|
-
})
|
|
333
|
+
});
|
|
334
334
|
/** Emit playback events. */
|
|
335
335
|
var playback$;
|
|
336
|
-
var speed$ = this._priv_speed$.pipe(distinctUntilChanged());
|
|
337
336
|
if (!isDirectFile) {
|
|
338
337
|
var transportFn = features.transports[transport];
|
|
339
338
|
if (typeof transportFn !== "function") {
|
|
340
339
|
// Stop previous content and reset its state
|
|
341
340
|
this.stop();
|
|
342
341
|
this._priv_currentError = null;
|
|
343
|
-
this.
|
|
344
|
-
throw new Error("transport \""
|
|
342
|
+
this._priv_isPlaying.setValue(false);
|
|
343
|
+
throw new Error("transport \"".concat(transport, "\" not supported"));
|
|
345
344
|
}
|
|
346
345
|
var transportPipelines = transportFn(transportOptions);
|
|
347
346
|
var offlineRetry = networkConfig.offlineRetry, segmentRetry = networkConfig.segmentRetry, manifestRetry = networkConfig.manifestRetry;
|
|
@@ -375,7 +374,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
375
374
|
// take time.
|
|
376
375
|
this.stop();
|
|
377
376
|
this._priv_currentError = null;
|
|
378
|
-
this.
|
|
377
|
+
this._priv_isPlaying.setValue(false);
|
|
379
378
|
this._priv_contentInfos = contentInfos;
|
|
380
379
|
var relyOnVideoVisibilityAndSize = canRelyOnVideoVisibilityAndSize();
|
|
381
380
|
var throttlers = { throttle: {},
|
|
@@ -388,7 +387,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
388
387
|
}
|
|
389
388
|
else {
|
|
390
389
|
throttlers.throttle = {
|
|
391
|
-
video:
|
|
390
|
+
video: isPageActive().pipe(map(function (active) { return active ? Infinity :
|
|
392
391
|
0; }), takeUntil(stopContent$)),
|
|
393
392
|
};
|
|
394
393
|
}
|
|
@@ -434,7 +433,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
434
433
|
textTrackElement: options.textTrackElement };
|
|
435
434
|
var bufferOptions = objectAssign({ audioTrackSwitchingMode: audioTrackSwitchingMode, enableFastSwitching: enableFastSwitching, manualBitrateSwitchingMode: manualBitrateSwitchingMode, onCodecSwitch: onCodecSwitch }, this._priv_bufferOptions);
|
|
436
435
|
// We've every options set up. Start everything now
|
|
437
|
-
var init$ = initializeMediaSourcePlayback({ adaptiveOptions: adaptiveOptions, autoPlay: autoPlay, bufferOptions: bufferOptions,
|
|
436
|
+
var init$ = initializeMediaSourcePlayback({ adaptiveOptions: adaptiveOptions, autoPlay: autoPlay, bufferOptions: bufferOptions, playbackObserver: playbackObserver, keySystems: keySystems, lowLatencyMode: lowLatencyMode, manifest$: manifest$, manifestFetcher: manifestFetcher, mediaElement: videoElement, minimumManifestUpdateInterval: minimumManifestUpdateInterval, segmentFetcherCreator: segmentFetcherCreator, speed: this._priv_speed, startAt: startAt, textTrackOptions: textTrackOptions })
|
|
438
437
|
.pipe(takeUntil(stopContent$));
|
|
439
438
|
playback$ = connectable(init$, { connector: function () { return new Subject(); },
|
|
440
439
|
resetOnDisconnect: false });
|
|
@@ -443,7 +442,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
443
442
|
// Stop previous content and reset its state
|
|
444
443
|
this.stop();
|
|
445
444
|
this._priv_currentError = null;
|
|
446
|
-
this.
|
|
445
|
+
this._priv_isPlaying.setValue(false);
|
|
447
446
|
if (features.directfile === null) {
|
|
448
447
|
throw new Error("DirectFile feature not activated in your build.");
|
|
449
448
|
}
|
|
@@ -492,8 +491,8 @@ var Player = /** @class */ (function (_super) {
|
|
|
492
491
|
.addEventListener("textTrackChange", function (val) {
|
|
493
492
|
return _this.trigger("textTrackChange", val);
|
|
494
493
|
});
|
|
495
|
-
var directfileInit$ = features.directfile.initDirectFile({ autoPlay: autoPlay,
|
|
496
|
-
speed
|
|
494
|
+
var directfileInit$ = features.directfile.initDirectFile({ autoPlay: autoPlay, keySystems: keySystems, mediaElement: videoElement,
|
|
495
|
+
speed: this._priv_speed, playbackObserver: playbackObserver, startAt: startAt, url: url })
|
|
497
496
|
.pipe(takeUntil(stopContent$));
|
|
498
497
|
playback$ = connectable(directfileInit$, { connector: function () { return new Subject(); },
|
|
499
498
|
resetOnDisconnect: false });
|
|
@@ -518,7 +517,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
518
517
|
var seekingEvent$ = onSeeking$(videoElement);
|
|
519
518
|
/** Emit state updates once the content is considered "loaded". */
|
|
520
519
|
var loadedStateUpdates$ = observableCombineLatest([
|
|
521
|
-
this.
|
|
520
|
+
this._priv_isPlaying.asObservable(),
|
|
522
521
|
stalled$.pipe(startWith(null)),
|
|
523
522
|
endedEvent$.pipe(startWith(null)),
|
|
524
523
|
seekingEvent$.pipe(startWith(null)),
|
|
@@ -529,15 +528,17 @@ var Player = /** @class */ (function (_super) {
|
|
|
529
528
|
/** Emit all player "state" updates. */
|
|
530
529
|
var playerState$ = observableConcat(observableOf(PLAYER_STATES.LOADING), // Begin with LOADING
|
|
531
530
|
// LOADED as soon as the first "loaded" event is sent
|
|
532
|
-
loaded$.pipe(take(1),
|
|
531
|
+
loaded$.pipe(take(1), map(function () { return PLAYER_STATES.LOADED; })), observableMerge(loadedStateUpdates$
|
|
533
532
|
.pipe(
|
|
534
533
|
// From the first reload onward, we enter another dynamic (below)
|
|
535
534
|
takeUntil(reloading$), skipWhile(function (state) { return state === PLAYER_STATES.PAUSED; })),
|
|
536
535
|
// when reloading
|
|
537
|
-
reloading$.pipe(
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
536
|
+
reloading$.pipe(switchMap(function () {
|
|
537
|
+
return loaded$.pipe(take(1), // wait for the next loaded event
|
|
538
|
+
mergeMap(function () { return loadedStateUpdates$; }), // to update the state as usual
|
|
539
|
+
startWith(PLAYER_STATES.RELOADING) // Starts with "RELOADING" state
|
|
540
|
+
);
|
|
541
|
+
})))).pipe(distinctUntilChanged());
|
|
541
542
|
var playbackSubscription;
|
|
542
543
|
stopContent$
|
|
543
544
|
.pipe(take(1))
|
|
@@ -550,13 +551,14 @@ var Player = /** @class */ (function (_super) {
|
|
|
550
551
|
onPlayPause$(videoElement)
|
|
551
552
|
.pipe(takeUntil(stopContent$))
|
|
552
553
|
.subscribe(function (e) { return _this._priv_onPlayPauseNext(e.type === "play"); });
|
|
553
|
-
|
|
554
|
-
|
|
554
|
+
var observation$ = playbackObserver.observe(true);
|
|
555
|
+
// Link "positionUpdate" events to the PlaybackObserver
|
|
556
|
+
observation$
|
|
555
557
|
.pipe(takeUntil(stopContent$))
|
|
556
|
-
.subscribe(function (
|
|
558
|
+
.subscribe(function (o) { return _this._priv_triggerPositionUpdate(o); });
|
|
557
559
|
// Link "seeking" and "seeked" events (once the content is loaded)
|
|
558
|
-
loaded$.pipe(
|
|
559
|
-
log.info("API: Triggering \""
|
|
560
|
+
loaded$.pipe(switchMap(function () { return emitSeekEvents(_this.videoElement, observation$); }), takeUntil(stopContent$)).subscribe(function (evt) {
|
|
561
|
+
log.info("API: Triggering \"".concat(evt, "\" event"));
|
|
560
562
|
_this.trigger(evt, null);
|
|
561
563
|
});
|
|
562
564
|
// Handle state updates
|
|
@@ -577,7 +579,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
577
579
|
complete: function () { return _this._priv_onPlaybackFinished(); },
|
|
578
580
|
});
|
|
579
581
|
// initialize the content only when the lock is inactive
|
|
580
|
-
this._priv_contentLock
|
|
582
|
+
this._priv_contentLock.asObservable()
|
|
581
583
|
.pipe(filter(function (isLocked) { return !isLocked; }), take(1), takeUntil(stopContent$))
|
|
582
584
|
.subscribe(function () {
|
|
583
585
|
// start playback!
|
|
@@ -825,7 +827,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
825
827
|
* @returns {Number}
|
|
826
828
|
*/
|
|
827
829
|
Player.prototype.getPlaybackRate = function () {
|
|
828
|
-
return this._priv_speed
|
|
830
|
+
return this._priv_speed.getValue();
|
|
829
831
|
};
|
|
830
832
|
/**
|
|
831
833
|
* Update the playback rate of the video.
|
|
@@ -884,7 +886,9 @@ var Player = /** @class */ (function (_super) {
|
|
|
884
886
|
* @param {Object} opts
|
|
885
887
|
*/
|
|
886
888
|
Player.prototype.setPlaybackRate = function (rate, opts) {
|
|
887
|
-
this._priv_speed
|
|
889
|
+
if (rate !== this._priv_speed.getValue()) {
|
|
890
|
+
this._priv_speed.setValue(rate);
|
|
891
|
+
}
|
|
888
892
|
var preferTrickModeTracks = opts === null || opts === void 0 ? void 0 : opts.preferTrickModeTracks;
|
|
889
893
|
if (typeof preferTrickModeTracks !== "boolean") {
|
|
890
894
|
return;
|
|
@@ -1181,7 +1185,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1181
1185
|
* @param {Number} btr
|
|
1182
1186
|
*/
|
|
1183
1187
|
Player.prototype.setVideoBitrate = function (btr) {
|
|
1184
|
-
this._priv_bitrateInfos.manualBitrates.video.
|
|
1188
|
+
this._priv_bitrateInfos.manualBitrates.video.setValue(btr);
|
|
1185
1189
|
};
|
|
1186
1190
|
/**
|
|
1187
1191
|
* Force the audio bitrate to a given value. Act as a ceil.
|
|
@@ -1189,7 +1193,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1189
1193
|
* @param {Number} btr
|
|
1190
1194
|
*/
|
|
1191
1195
|
Player.prototype.setAudioBitrate = function (btr) {
|
|
1192
|
-
this._priv_bitrateInfos.manualBitrates.audio.
|
|
1196
|
+
this._priv_bitrateInfos.manualBitrates.audio.setValue(btr);
|
|
1193
1197
|
};
|
|
1194
1198
|
/**
|
|
1195
1199
|
* Update the minimum video bitrate the user can switch to.
|
|
@@ -1199,10 +1203,10 @@ var Player = /** @class */ (function (_super) {
|
|
|
1199
1203
|
var maxVideoBitrate = this._priv_bitrateInfos.maxAutoBitrates.video.getValue();
|
|
1200
1204
|
if (btr > maxVideoBitrate) {
|
|
1201
1205
|
throw new Error("Invalid minimum video bitrate given. " +
|
|
1202
|
-
|
|
1203
|
-
|
|
1206
|
+
"Its value, \"".concat(btr, "\" is superior the current maximum ") +
|
|
1207
|
+
"video birate, \"".concat(maxVideoBitrate, "\"."));
|
|
1204
1208
|
}
|
|
1205
|
-
this._priv_bitrateInfos.minAutoBitrates.video.
|
|
1209
|
+
this._priv_bitrateInfos.minAutoBitrates.video.setValue(btr);
|
|
1206
1210
|
};
|
|
1207
1211
|
/**
|
|
1208
1212
|
* Update the minimum audio bitrate the user can switch to.
|
|
@@ -1212,10 +1216,10 @@ var Player = /** @class */ (function (_super) {
|
|
|
1212
1216
|
var maxAudioBitrate = this._priv_bitrateInfos.maxAutoBitrates.audio.getValue();
|
|
1213
1217
|
if (btr > maxAudioBitrate) {
|
|
1214
1218
|
throw new Error("Invalid minimum audio bitrate given. " +
|
|
1215
|
-
|
|
1216
|
-
|
|
1219
|
+
"Its value, \"".concat(btr, "\" is superior the current maximum ") +
|
|
1220
|
+
"audio birate, \"".concat(maxAudioBitrate, "\"."));
|
|
1217
1221
|
}
|
|
1218
|
-
this._priv_bitrateInfos.minAutoBitrates.audio.
|
|
1222
|
+
this._priv_bitrateInfos.minAutoBitrates.audio.setValue(btr);
|
|
1219
1223
|
};
|
|
1220
1224
|
/**
|
|
1221
1225
|
* Update the maximum video bitrate the user can switch to.
|
|
@@ -1225,10 +1229,10 @@ var Player = /** @class */ (function (_super) {
|
|
|
1225
1229
|
var minVideoBitrate = this._priv_bitrateInfos.minAutoBitrates.video.getValue();
|
|
1226
1230
|
if (btr < minVideoBitrate) {
|
|
1227
1231
|
throw new Error("Invalid maximum video bitrate given. " +
|
|
1228
|
-
|
|
1229
|
-
|
|
1232
|
+
"Its value, \"".concat(btr, "\" is inferior the current minimum ") +
|
|
1233
|
+
"video birate, \"".concat(minVideoBitrate, "\"."));
|
|
1230
1234
|
}
|
|
1231
|
-
this._priv_bitrateInfos.maxAutoBitrates.video.
|
|
1235
|
+
this._priv_bitrateInfos.maxAutoBitrates.video.setValue(btr);
|
|
1232
1236
|
};
|
|
1233
1237
|
/**
|
|
1234
1238
|
* Update the maximum audio bitrate the user can switch to.
|
|
@@ -1238,10 +1242,10 @@ var Player = /** @class */ (function (_super) {
|
|
|
1238
1242
|
var minAudioBitrate = this._priv_bitrateInfos.minAutoBitrates.audio.getValue();
|
|
1239
1243
|
if (btr < minAudioBitrate) {
|
|
1240
1244
|
throw new Error("Invalid maximum audio bitrate given. " +
|
|
1241
|
-
|
|
1242
|
-
|
|
1245
|
+
"Its value, \"".concat(btr, "\" is inferior the current minimum ") +
|
|
1246
|
+
"audio birate, \"".concat(minAudioBitrate, "\"."));
|
|
1243
1247
|
}
|
|
1244
|
-
this._priv_bitrateInfos.maxAutoBitrates.audio.
|
|
1248
|
+
this._priv_bitrateInfos.maxAutoBitrates.audio.setValue(btr);
|
|
1245
1249
|
};
|
|
1246
1250
|
/**
|
|
1247
1251
|
* Set the max buffer size for the buffer behind the current position.
|
|
@@ -1249,7 +1253,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1249
1253
|
* @param {Number} depthInSeconds
|
|
1250
1254
|
*/
|
|
1251
1255
|
Player.prototype.setMaxBufferBehind = function (depthInSeconds) {
|
|
1252
|
-
this._priv_bufferOptions.maxBufferBehind
|
|
1256
|
+
this._priv_bufferOptions.maxBufferBehind.setValue(depthInSeconds);
|
|
1253
1257
|
};
|
|
1254
1258
|
/**
|
|
1255
1259
|
* Set the max buffer size for the buffer behind the current position.
|
|
@@ -1257,7 +1261,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1257
1261
|
* @param {Number} depthInSeconds
|
|
1258
1262
|
*/
|
|
1259
1263
|
Player.prototype.setMaxBufferAhead = function (depthInSeconds) {
|
|
1260
|
-
this._priv_bufferOptions.maxBufferAhead
|
|
1264
|
+
this._priv_bufferOptions.maxBufferAhead.setValue(depthInSeconds);
|
|
1261
1265
|
};
|
|
1262
1266
|
/**
|
|
1263
1267
|
* Set the max buffer size for the buffer ahead of the current position.
|
|
@@ -1265,28 +1269,28 @@ var Player = /** @class */ (function (_super) {
|
|
|
1265
1269
|
* @param {Number} sizeInSeconds
|
|
1266
1270
|
*/
|
|
1267
1271
|
Player.prototype.setWantedBufferAhead = function (sizeInSeconds) {
|
|
1268
|
-
this._priv_bufferOptions.wantedBufferAhead
|
|
1272
|
+
this._priv_bufferOptions.wantedBufferAhead.setValue(sizeInSeconds);
|
|
1269
1273
|
};
|
|
1270
1274
|
/**
|
|
1271
1275
|
* Returns the max buffer size for the buffer behind the current position.
|
|
1272
1276
|
* @returns {Number}
|
|
1273
1277
|
*/
|
|
1274
1278
|
Player.prototype.getMaxBufferBehind = function () {
|
|
1275
|
-
return this._priv_bufferOptions.maxBufferBehind
|
|
1279
|
+
return this._priv_bufferOptions.maxBufferBehind.getValue();
|
|
1276
1280
|
};
|
|
1277
1281
|
/**
|
|
1278
1282
|
* Returns the max buffer size for the buffer behind the current position.
|
|
1279
1283
|
* @returns {Number}
|
|
1280
1284
|
*/
|
|
1281
1285
|
Player.prototype.getMaxBufferAhead = function () {
|
|
1282
|
-
return this._priv_bufferOptions.maxBufferAhead
|
|
1286
|
+
return this._priv_bufferOptions.maxBufferAhead.getValue();
|
|
1283
1287
|
};
|
|
1284
1288
|
/**
|
|
1285
1289
|
* Returns the max buffer size for the buffer ahead of the current position.
|
|
1286
1290
|
* @returns {Number}
|
|
1287
1291
|
*/
|
|
1288
1292
|
Player.prototype.getWantedBufferAhead = function () {
|
|
1289
|
-
return this._priv_bufferOptions.wantedBufferAhead
|
|
1293
|
+
return this._priv_bufferOptions.wantedBufferAhead.getValue();
|
|
1290
1294
|
};
|
|
1291
1295
|
/**
|
|
1292
1296
|
* Returns type of current keysystem (e.g. playready, widevine) if the content
|
|
@@ -1702,7 +1706,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1702
1706
|
var _a;
|
|
1703
1707
|
log.debug("Locking `contentLock` to clean-up the current content.");
|
|
1704
1708
|
// lock playback of new contents while cleaning up is pending
|
|
1705
|
-
this._priv_contentLock
|
|
1709
|
+
this._priv_contentLock.setValue(true);
|
|
1706
1710
|
this._priv_contentInfos = null;
|
|
1707
1711
|
this._priv_trackChoiceManager = null;
|
|
1708
1712
|
(_a = this._priv_mediaElementTrackChoiceManager) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
@@ -1711,7 +1715,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1711
1715
|
// EME cleaning
|
|
1712
1716
|
var freeUpContentLock = function () {
|
|
1713
1717
|
log.debug("Unlocking `contentLock`. Next content can begin.");
|
|
1714
|
-
_this._priv_contentLock
|
|
1718
|
+
_this._priv_contentLock.setValue(false);
|
|
1715
1719
|
};
|
|
1716
1720
|
if (!isNullOrUndefined(this.videoElement)) {
|
|
1717
1721
|
clearEMESession(this.videoElement)
|
|
@@ -1960,7 +1964,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1960
1964
|
break;
|
|
1961
1965
|
case "audio":
|
|
1962
1966
|
if (this._priv_trackChoiceManager === null) {
|
|
1963
|
-
log.error("API: TrackChoiceManager not instanciated for a new "
|
|
1967
|
+
log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
|
|
1964
1968
|
adaptation$.next(null);
|
|
1965
1969
|
}
|
|
1966
1970
|
else {
|
|
@@ -1970,7 +1974,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
1970
1974
|
break;
|
|
1971
1975
|
case "text":
|
|
1972
1976
|
if (this._priv_trackChoiceManager === null) {
|
|
1973
|
-
log.error("API: TrackChoiceManager not instanciated for a new "
|
|
1977
|
+
log.error("API: TrackChoiceManager not instanciated for a new ".concat(type, " period"));
|
|
1974
1978
|
adaptation$.next(null);
|
|
1975
1979
|
}
|
|
1976
1980
|
else {
|
|
@@ -2153,7 +2157,7 @@ var Player = /** @class */ (function (_super) {
|
|
|
2153
2157
|
if (this.videoElement === null) {
|
|
2154
2158
|
throw new Error("Disposed player");
|
|
2155
2159
|
}
|
|
2156
|
-
this.
|
|
2160
|
+
this._priv_isPlaying.setValue(isPlaying);
|
|
2157
2161
|
};
|
|
2158
2162
|
/**
|
|
2159
2163
|
* Triggered each time a textTrack is added to the video DOM Element.
|
|
@@ -2180,13 +2184,13 @@ var Player = /** @class */ (function (_super) {
|
|
|
2180
2184
|
}
|
|
2181
2185
|
};
|
|
2182
2186
|
/**
|
|
2183
|
-
* Triggered each time a
|
|
2187
|
+
* Triggered each time a playback observation.
|
|
2184
2188
|
*
|
|
2185
2189
|
* Trigger the right Player Event
|
|
2186
2190
|
*
|
|
2187
|
-
* @param {Object}
|
|
2191
|
+
* @param {Object} observation
|
|
2188
2192
|
*/
|
|
2189
|
-
Player.prototype._priv_triggerPositionUpdate = function (
|
|
2193
|
+
Player.prototype._priv_triggerPositionUpdate = function (observation) {
|
|
2190
2194
|
var _a;
|
|
2191
2195
|
if (this._priv_contentInfos === null) {
|
|
2192
2196
|
log.warn("API: Cannot perform time update: no content loaded.");
|
|
@@ -2196,28 +2200,28 @@ var Player = /** @class */ (function (_super) {
|
|
|
2196
2200
|
return;
|
|
2197
2201
|
}
|
|
2198
2202
|
var _b = this._priv_contentInfos, isDirectFile = _b.isDirectFile, manifest = _b.manifest;
|
|
2199
|
-
if ((!isDirectFile && manifest === null) || isNullOrUndefined(
|
|
2203
|
+
if ((!isDirectFile && manifest === null) || isNullOrUndefined(observation)) {
|
|
2200
2204
|
return;
|
|
2201
2205
|
}
|
|
2202
|
-
this._priv_lastContentPlaybackInfos.lastPlaybackPosition =
|
|
2206
|
+
this._priv_lastContentPlaybackInfos.lastPlaybackPosition = observation.position;
|
|
2203
2207
|
var maximumPosition = manifest !== null ? manifest.getMaximumPosition() :
|
|
2204
2208
|
undefined;
|
|
2205
2209
|
var positionData = {
|
|
2206
|
-
position:
|
|
2207
|
-
duration:
|
|
2208
|
-
playbackRate:
|
|
2210
|
+
position: observation.position,
|
|
2211
|
+
duration: observation.duration,
|
|
2212
|
+
playbackRate: observation.playbackRate,
|
|
2209
2213
|
maximumBufferTime: maximumPosition,
|
|
2210
2214
|
// TODO fix higher up?
|
|
2211
|
-
bufferGap: isFinite(
|
|
2215
|
+
bufferGap: isFinite(observation.bufferGap) ? observation.bufferGap :
|
|
2212
2216
|
0,
|
|
2213
2217
|
};
|
|
2214
2218
|
if (manifest !== null &&
|
|
2215
2219
|
maximumPosition !== undefined &&
|
|
2216
2220
|
manifest.isLive &&
|
|
2217
|
-
|
|
2221
|
+
observation.position > 0) {
|
|
2218
2222
|
var ast = (_a = manifest.availabilityStartTime) !== null && _a !== void 0 ? _a : 0;
|
|
2219
|
-
positionData.wallClockTime =
|
|
2220
|
-
positionData.liveGap = maximumPosition -
|
|
2223
|
+
positionData.wallClockTime = observation.position + ast;
|
|
2224
|
+
positionData.liveGap = maximumPosition - observation.position;
|
|
2221
2225
|
}
|
|
2222
2226
|
this.trigger("positionUpdate", positionData);
|
|
2223
2227
|
};
|
|
@@ -2260,5 +2264,5 @@ var Player = /** @class */ (function (_super) {
|
|
|
2260
2264
|
};
|
|
2261
2265
|
return Player;
|
|
2262
2266
|
}(EventEmitter));
|
|
2263
|
-
Player.version = /* PLAYER_VERSION */ "3.26.
|
|
2267
|
+
Player.version = /* PLAYER_VERSION */ "3.26.2";
|
|
2264
2268
|
export default Player;
|
|
@@ -114,7 +114,7 @@ var TrackChoiceManager = /** @class */ (function () {
|
|
|
114
114
|
var adaptations = period.getSupportedAdaptations(bufferType);
|
|
115
115
|
if (periodItem !== undefined) {
|
|
116
116
|
if (periodItem[bufferType] !== undefined) {
|
|
117
|
-
log.warn("TrackChoiceManager: "
|
|
117
|
+
log.warn("TrackChoiceManager: ".concat(bufferType, " already added for period"), period.start);
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
@@ -134,12 +134,12 @@ var TrackChoiceManager = /** @class */ (function () {
|
|
|
134
134
|
TrackChoiceManager.prototype.removePeriod = function (bufferType, period) {
|
|
135
135
|
var periodIndex = findPeriodIndex(this._periods, period);
|
|
136
136
|
if (periodIndex === undefined) {
|
|
137
|
-
log.warn("TrackChoiceManager: "
|
|
137
|
+
log.warn("TrackChoiceManager: ".concat(bufferType, " not found for period"), period.start);
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
140
|
var periodItem = this._periods.get(periodIndex);
|
|
141
141
|
if (periodItem[bufferType] === undefined) {
|
|
142
|
-
log.warn("TrackChoiceManager: "
|
|
142
|
+
log.warn("TrackChoiceManager: ".concat(bufferType, " already removed for period"), period.start);
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
delete periodItem[bufferType];
|
|
@@ -45,6 +45,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
45
45
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
46
46
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
47
47
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
48
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
48
49
|
/* eslint-disable no-restricted-properties */
|
|
49
50
|
import { defer as observableDefer, of as observableOf, Subject, } from "rxjs";
|
|
50
51
|
import { base64ToBytes, bytesToBase64, } from "../../../../utils/base64";
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, of as observableOf, } from "rxjs";
|
|
17
|
-
import { mergeMap, tap } from "rxjs/operators";
|
|
16
|
+
import { defer as observableDefer, mergeMap, tap, of as observableOf, } from "rxjs";
|
|
18
17
|
import { setMediaKeys, } from "../../compat";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import MediaKeysInfosStore from "./media_keys_infos_store";
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import getUUIDKidFromKeyStatusKID from "../../compat/eme/get_uuid_kid_from_keystatus_kid";
|
|
17
17
|
import { EncryptedMediaError } from "../../errors";
|
|
18
|
+
import { bytesToHex } from "../../utils/string_parsing";
|
|
18
19
|
var KEY_STATUSES = { EXPIRED: "expired",
|
|
19
20
|
INTERNAL_ERROR: "internal-error",
|
|
20
21
|
OUTPUT_RESTRICTED: "output-restricted" };
|
|
@@ -44,7 +45,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
|
|
|
44
45
|
var keyId = getUUIDKidFromKeyStatusKID(keySystem, new Uint8Array(keyStatusKeyId));
|
|
45
46
|
switch (keyStatus) {
|
|
46
47
|
case KEY_STATUSES.EXPIRED: {
|
|
47
|
-
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A decryption key expired");
|
|
48
|
+
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A decryption key expired (".concat(bytesToHex(keyId), ")"));
|
|
48
49
|
if (throwOnLicenseExpiration !== false) {
|
|
49
50
|
throw error;
|
|
50
51
|
}
|
|
@@ -53,8 +54,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
|
|
|
53
54
|
break;
|
|
54
55
|
}
|
|
55
56
|
case KEY_STATUSES.INTERNAL_ERROR: {
|
|
56
|
-
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "
|
|
57
|
-
"encountered: " + keyStatus);
|
|
57
|
+
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A \"".concat(keyStatus, "\" status has been encountered (").concat(bytesToHex(keyId), ")"));
|
|
58
58
|
if (fallbackOn.keyInternalError !== true) {
|
|
59
59
|
throw error;
|
|
60
60
|
}
|
|
@@ -63,8 +63,7 @@ export default function checkKeyStatuses(session, options, keySystem) {
|
|
|
63
63
|
break;
|
|
64
64
|
}
|
|
65
65
|
case KEY_STATUSES.OUTPUT_RESTRICTED: {
|
|
66
|
-
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "
|
|
67
|
-
"encountered: " + keyStatus);
|
|
66
|
+
var error = new EncryptedMediaError("KEY_STATUS_CHANGE_ERROR", "A \"".concat(keyStatus, "\" status has been encountered (").concat(bytesToHex(keyId), ")"));
|
|
68
67
|
if (fallbackOn.keyOutputRestricted !== true) {
|
|
69
68
|
throw error;
|
|
70
69
|
}
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { EMPTY, merge as observableMerge, } from "rxjs";
|
|
17
|
-
import { mapTo, startWith, } from "rxjs/operators";
|
|
16
|
+
import { EMPTY, mapTo, merge as observableMerge, startWith, } from "rxjs";
|
|
18
17
|
/**
|
|
19
18
|
* Close sessions from the loadedSessionsStore to allow at maximum `limit`
|
|
20
19
|
* stored MediaKeySessions in it.
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, EMPTY, } from "rxjs";
|
|
17
|
-
import { ignoreElements } from "rxjs/operators";
|
|
16
|
+
import { defer as observableDefer, EMPTY, ignoreElements, } from "rxjs";
|
|
18
17
|
import { shouldUnsetMediaKeys } from "../../compat/";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import disposeMediaKeys from "./dispose_media_keys";
|
|
@@ -38,6 +37,11 @@ export default function clearEMESession(mediaElement) {
|
|
|
38
37
|
currentState.keySystemOptions.closeSessionsOnStop === true) {
|
|
39
38
|
log.info("EME: closing all current sessions.");
|
|
40
39
|
return currentState.loadedSessionsStore.closeAllSessions()
|
|
40
|
+
// NOTE As of now (RxJS 7.4.0), RxJS defines `ignoreElements` default
|
|
41
|
+
// first type parameter as `any` instead of the perfectly fine `unknown`,
|
|
42
|
+
// leading to linter issues, as it forbids the usage of `any`.
|
|
43
|
+
// This is why we're disabling the eslint rule.
|
|
44
|
+
/* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */
|
|
41
45
|
.pipe(ignoreElements());
|
|
42
46
|
}
|
|
43
47
|
log.info("EME: Nothing to clear. Returning right away. No state =", currentState === null);
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, of as observableOf, } from "rxjs";
|
|
17
|
-
import { catchError, map, mergeMap, } from "rxjs/operators";
|
|
16
|
+
import { catchError, defer as observableDefer, map, mergeMap, of as observableOf, } from "rxjs";
|
|
18
17
|
import { loadSession, } from "../../compat";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import isSessionUsable from "./utils/is_session_usable";
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { defer as observableDefer, of as observableOf, } from "rxjs";
|
|
17
|
-
import { mergeMapTo } from "rxjs/operators";
|
|
16
|
+
import { defer as observableDefer, mergeMap, of as observableOf, } from "rxjs";
|
|
18
17
|
import { setMediaKeys } from "../../compat";
|
|
19
18
|
import log from "../../log";
|
|
20
19
|
import MediaKeysInfosStore from "./media_keys_infos_store";
|
|
@@ -32,6 +31,6 @@ export default function disposeMediaKeys(mediaElement) {
|
|
|
32
31
|
var loadedSessionsStore = currentState.loadedSessionsStore;
|
|
33
32
|
MediaKeysInfosStore.clearState(mediaElement);
|
|
34
33
|
return loadedSessionsStore.closeAllSessions()
|
|
35
|
-
.pipe(
|
|
34
|
+
.pipe(mergeMap(function () { return setMediaKeys(mediaElement, null); }));
|
|
36
35
|
});
|
|
37
36
|
}
|