rx-player 3.29.0 → 3.30.0-dev.2023011800
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/CHANGELOG.md +23 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/can_reuse_media_keys.d.ts +3 -2
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +5 -4
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +16 -7
- package/dist/_esm5.processed/compat/event_listeners.d.ts +33 -56
- package/dist/_esm5.processed/compat/event_listeners.js +66 -116
- package/dist/_esm5.processed/compat/index.d.ts +1 -4
- package/dist/_esm5.processed/compat/index.js +1 -4
- package/dist/_esm5.processed/compat/on_height_width_change.d.ts +1 -1
- package/dist/_esm5.processed/compat/on_height_width_change.js +2 -2
- package/dist/_esm5.processed/config.d.ts +1 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +3 -1
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +27 -6
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +8 -9
- package/dist/_esm5.processed/core/api/playback_observer.js +6 -7
- package/dist/_esm5.processed/core/api/public_api.d.ts +39 -41
- package/dist/_esm5.processed/core/api/public_api.js +569 -578
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +9 -14
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +73 -43
- package/dist/_esm5.processed/core/api/utils.d.ts +15 -10
- package/dist/_esm5.processed/core/api/utils.js +84 -19
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +22 -5
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +97 -25
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +3 -2
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +3 -2
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +1 -1
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +12 -20
- package/dist/_esm5.processed/core/decrypt/create_session.js +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +35 -13
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +1 -1
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +32 -31
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +291 -160
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +1 -1
- package/dist/_esm5.processed/core/decrypt/types.d.ts +0 -6
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +153 -89
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +419 -144
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +0 -24
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +0 -24
- package/dist/_esm5.processed/core/init/{initialize_directfile.d.ts → directfile_content_initializer.d.ts} +13 -16
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +196 -0
- package/dist/_esm5.processed/core/init/index.d.ts +2 -2
- package/dist/_esm5.processed/core/init/index.js +2 -2
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +181 -0
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +576 -0
- package/dist/_esm5.processed/core/init/types.d.ts +203 -64
- package/dist/_esm5.processed/core/init/types.js +36 -1
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.d.ts +164 -0
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +484 -0
- package/dist/_esm5.processed/core/init/{create_media_source.d.ts → utils/create_media_source.d.ts} +8 -4
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +118 -0
- package/dist/_esm5.processed/core/init/{create_stream_playback_observer.d.ts → utils/create_stream_playback_observer.d.ts} +4 -4
- package/dist/_esm5.processed/core/init/{create_stream_playback_observer.js → utils/create_stream_playback_observer.js} +2 -5
- package/dist/_esm5.processed/core/init/{end_of_stream.d.ts → utils/end_of_stream.d.ts} +5 -5
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +85 -0
- package/dist/_esm5.processed/core/init/{get_initial_time.d.ts → utils/get_initial_time.d.ts} +1 -1
- package/dist/_esm5.processed/core/init/{get_initial_time.js → utils/get_initial_time.js} +3 -3
- package/dist/_esm5.processed/core/init/{emit_loaded_event.d.ts → utils/get_loaded_reference.d.ts} +9 -9
- package/dist/_esm5.processed/core/init/{emit_loaded_event.js → utils/get_loaded_reference.js} +23 -17
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.d.ts +63 -0
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +124 -0
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +80 -0
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +111 -0
- package/dist/_esm5.processed/core/init/{media_duration_updater.d.ts → utils/media_duration_updater.d.ts} +3 -3
- package/dist/_esm5.processed/core/init/{media_duration_updater.js → utils/media_duration_updater.js} +115 -41
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +113 -0
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +483 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.d.ts +0 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.js +0 -0
- package/dist/_esm5.processed/core/{stream/types.js → init/utils/stream_events_emitter/index.d.ts} +3 -1
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.js +0 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.d.ts +1 -1
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.js +0 -0
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +30 -0
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +155 -0
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.d.ts +1 -13
- package/dist/_esm5.processed/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.js +0 -0
- package/dist/_esm5.processed/core/init/{throw_on_media_error.d.ts → utils/throw_on_media_error.d.ts} +5 -5
- package/dist/_esm5.processed/core/init/{throw_on_media_error.js → utils/throw_on_media_error.js} +19 -15
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +0 -1
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +0 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.d.ts +0 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +0 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +25 -130
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +188 -117
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/adaptation/index.js +1 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +172 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.js +1 -0
- package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.d.ts → utils/create_representation_estimator.d.ts} +6 -6
- package/dist/_esm5.processed/core/stream/adaptation/{create_representation_estimator.js → utils/create_representation_estimator.js} +3 -4
- package/dist/_esm5.processed/core/stream/index.d.ts +4 -3
- package/dist/_esm5.processed/core/stream/index.js +0 -1
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +142 -17
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +303 -229
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -3
- package/dist/_esm5.processed/core/stream/period/index.js +1 -0
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +27 -62
- package/dist/_esm5.processed/core/stream/period/period_stream.js +278 -105
- package/dist/_esm5.processed/core/stream/period/types.d.ts +110 -0
- package/dist/_esm5.processed/core/stream/period/types.js +1 -0
- package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.d.ts → utils/get_adaptation_switch_strategy.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/period/{get_adaptation_switch_strategy.js → utils/get_adaptation_switch_strategy.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/index.js +1 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +32 -121
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +210 -136
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +267 -0
- package/dist/_esm5.processed/core/stream/representation/types.js +1 -0
- package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.d.ts → utils/append_segment_to_buffer.d.ts} +5 -5
- package/dist/_esm5.processed/core/stream/representation/{append_segment_to_buffer.js → utils/append_segment_to_buffer.js} +8 -3
- package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.d.ts → utils/check_for_discontinuity.d.ts} +2 -2
- package/dist/_esm5.processed/core/stream/representation/{check_for_discontinuity.js → utils/check_for_discontinuity.js} +1 -1
- package/dist/_esm5.processed/core/stream/representation/{downloading_queue.d.ts → utils/downloading_queue.d.ts} +85 -80
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +378 -0
- package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.d.ts → utils/force_garbage_collection.d.ts} +2 -2
- package/dist/_esm5.processed/core/stream/representation/{force_garbage_collection.js → utils/force_garbage_collection.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.d.ts → utils/get_buffer_status.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_buffer_status.js → utils/get_buffer_status.js} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.d.ts → utils/get_needed_segments.d.ts} +3 -3
- package/dist/_esm5.processed/core/stream/representation/{get_needed_segments.js → utils/get_needed_segments.js} +4 -5
- package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.d.ts → utils/get_segment_priority.d.ts} +0 -0
- package/dist/_esm5.processed/core/stream/representation/{get_segment_priority.js → utils/get_segment_priority.js} +1 -1
- package/dist/_esm5.processed/core/stream/representation/{push_init_segment.d.ts → utils/push_init_segment.d.ts} +9 -12
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +85 -0
- package/dist/_esm5.processed/core/stream/representation/{push_media_segment.d.ts → utils/push_media_segment.d.ts} +9 -12
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +109 -0
- package/dist/_esm5.processed/default_config.d.ts +10 -0
- package/dist/_esm5.processed/default_config.js +12 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +1 -1
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.d.ts +2 -3
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +107 -59
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +6 -7
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/directfile.js +1 -1
- package/dist/_esm5.processed/features/types.d.ts +2 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +7 -0
- package/dist/_esm5.processed/manifest/adaptation.js +3 -0
- package/dist/_esm5.processed/manifest/manifest.d.ts +2 -1
- package/dist/_esm5.processed/manifest/manifest.js +4 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.d.ts +26 -1
- package/dist/_esm5.processed/manifest/update_period_in_place.js +58 -7
- package/dist/_esm5.processed/manifest/update_periods.d.ts +19 -2
- package/dist/_esm5.processed/manifest/update_periods.js +62 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +1 -0
- 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 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +16 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +63 -25
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +60 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +39 -13
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +3 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +0 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +13 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +7 -0
- package/dist/_esm5.processed/public_types.d.ts +2 -0
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.js +3 -3
- package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
- package/dist/_esm5.processed/utils/event_emitter.d.ts +3 -13
- package/dist/_esm5.processed/utils/event_emitter.js +0 -19
- package/dist/_esm5.processed/utils/reference.d.ts +46 -67
- package/dist/_esm5.processed/utils/reference.js +63 -93
- package/dist/_esm5.processed/utils/request/xhr.d.ts +3 -68
- package/dist/_esm5.processed/utils/{rx-retry_with_backoff.d.ts → retry_promise_with_backoff.d.ts} +19 -34
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +119 -0
- package/dist/_esm5.processed/utils/sleep.d.ts +10 -0
- package/dist/_esm5.processed/utils/sleep.js +14 -0
- package/dist/_esm5.processed/utils/sorted_list.d.ts +1 -0
- package/dist/_esm5.processed/utils/sorted_list.js +3 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +8116 -11600
- package/dist/rx-player.min.js +1 -1
- package/dist/rx-player.min.js.LICENSE.txt +0 -15
- package/manifest.mpd +149 -0
- package/package.json +26 -26
- package/scripts/build/generate_build.js +1 -8
- package/sonar-project.properties +1 -1
- package/src/README.md +2 -2
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +4 -27
- package/src/compat/can_reuse_media_keys.ts +5 -7
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +14 -15
- package/src/compat/event_listeners.ts +84 -148
- package/src/compat/index.ts +0 -6
- package/src/compat/on_height_width_change.ts +2 -2
- package/src/core/README.md +1 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +36 -7
- package/src/core/api/README.md +0 -33
- package/src/core/api/playback_observer.ts +20 -11
- package/src/core/api/public_api.ts +826 -815
- package/src/core/api/tracks_management/track_choice_manager.ts +97 -57
- package/src/core/api/utils.ts +112 -42
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +42 -38
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +15 -20
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +35 -47
- package/src/core/decrypt/__tests__/__global__/utils.ts +116 -17
- package/src/core/decrypt/attach_media_keys.ts +3 -2
- package/src/core/decrypt/clear_on_stop.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +19 -27
- package/src/core/decrypt/create_session.ts +1 -1
- package/src/core/decrypt/find_key_system.ts +31 -11
- package/src/core/decrypt/get_media_keys.ts +1 -1
- package/src/core/decrypt/session_events_listener.ts +259 -277
- package/src/core/decrypt/set_server_certificate.ts +1 -1
- package/src/core/decrypt/types.ts +0 -5
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +1 -1
- package/src/core/decrypt/utils/loaded_sessions_store.ts +1 -1
- package/src/core/fetchers/README.md +3 -0
- package/src/core/fetchers/index.ts +6 -6
- package/src/core/fetchers/manifest/index.ts +7 -7
- package/src/core/fetchers/manifest/manifest_fetcher.ts +646 -295
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -24
- package/src/core/init/README.md +31 -45
- package/src/core/init/directfile_content_initializer.ts +229 -0
- package/src/core/init/index.ts +3 -3
- package/src/core/init/media_source_content_initializer.ts +819 -0
- package/src/core/init/types.ts +220 -132
- package/src/core/init/{__tests__ → utils/__tests__}/are_same_stream_events.test.ts +0 -0
- package/src/core/init/{__tests__ → utils/__tests__}/refresh_scheduled_events_list.test.ts +0 -0
- package/src/core/init/utils/content_time_boundaries_observer.ts +609 -0
- package/src/core/init/{create_media_source.ts → utils/create_media_source.ts} +60 -55
- package/src/core/init/{create_stream_playback_observer.ts → utils/create_stream_playback_observer.ts} +7 -11
- package/src/core/init/utils/end_of_stream.ts +104 -0
- package/src/core/init/{get_initial_time.ts → utils/get_initial_time.ts} +4 -4
- package/src/core/init/utils/get_loaded_reference.ts +76 -0
- package/src/core/init/utils/initial_seek_and_play.ts +179 -0
- package/src/core/init/utils/initialize_content_decryption.ts +178 -0
- package/src/core/init/{media_duration_updater.ts → utils/media_duration_updater.ts} +166 -84
- package/src/core/init/{rebuffering_controller.ts → utils/rebuffering_controller.ts} +247 -226
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/are_same_stream_events.ts +0 -0
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/index.ts +1 -13
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/refresh_scheduled_events_list.ts +1 -1
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +210 -0
- package/src/core/init/{stream_events_emitter → utils/stream_events_emitter}/types.ts +1 -19
- package/src/core/init/utils/throw_on_media_error.ts +74 -0
- package/src/core/segment_buffers/README.md +5 -4
- package/src/core/segment_buffers/garbage_collector.ts +0 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -8
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +3 -3
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
- package/src/core/stream/README.md +1 -1
- package/src/core/stream/adaptation/adaptation_stream.ts +265 -330
- package/src/core/stream/adaptation/index.ts +2 -12
- package/src/core/stream/adaptation/types.ts +193 -0
- package/src/core/stream/adaptation/{create_representation_estimator.ts → utils/create_representation_estimator.ts} +10 -9
- package/src/core/stream/index.ts +9 -1
- package/src/core/stream/orchestrator/README.md +1 -4
- package/src/core/stream/orchestrator/index.ts +2 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +423 -326
- package/src/core/stream/period/index.ts +2 -12
- package/src/core/stream/period/period_stream.ts +301 -238
- package/src/core/stream/period/types.ts +132 -0
- package/src/core/stream/period/{get_adaptation_switch_strategy.ts → utils/get_adaptation_switch_strategy.ts} +6 -6
- package/src/core/stream/representation/README.md +2 -23
- package/src/core/stream/representation/index.ts +2 -12
- package/src/core/stream/representation/representation_stream.ts +315 -415
- package/src/core/stream/representation/types.ts +292 -0
- package/src/core/stream/representation/{append_segment_to_buffer.ts → utils/append_segment_to_buffer.ts} +11 -7
- package/src/core/stream/representation/{check_for_discontinuity.ts → utils/check_for_discontinuity.ts} +3 -3
- package/src/core/stream/representation/utils/downloading_queue.ts +592 -0
- package/src/core/stream/representation/{force_garbage_collection.ts → utils/force_garbage_collection.ts} +5 -6
- package/src/core/stream/representation/{get_buffer_status.ts → utils/get_buffer_status.ts} +5 -5
- package/src/core/stream/representation/{get_needed_segments.ts → utils/get_needed_segments.ts} +6 -7
- package/src/core/stream/representation/{get_segment_priority.ts → utils/get_segment_priority.ts} +1 -2
- package/src/core/stream/representation/utils/push_init_segment.ts +80 -0
- package/src/core/stream/representation/utils/push_media_segment.ts +113 -0
- package/src/default_config.ts +13 -1
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +1 -1
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +1 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +58 -66
- package/src/experimental/tools/createMetaplaylist/index.ts +29 -38
- package/src/features/__tests__/initialize_features.test.ts +1 -1
- package/src/features/initialize_features.ts +2 -1
- package/src/features/list/__tests__/directfile.test.ts +3 -2
- package/src/features/list/directfile.ts +1 -1
- package/src/features/types.ts +2 -7
- package/src/manifest/__tests__/manifest.test.ts +14 -365
- package/src/manifest/__tests__/update_period_in_place.test.ts +522 -57
- package/src/manifest/__tests__/update_periods.test.ts +254 -40
- package/src/manifest/adaptation.ts +11 -0
- package/src/manifest/manifest.ts +6 -4
- package/src/manifest/update_period_in_place.ts +84 -14
- package/src/manifest/update_periods.ts +93 -33
- package/src/parsers/manifest/dash/common/indexes/base.ts +4 -0
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +8 -1
- package/src/parsers/manifest/dash/common/indexes/template.ts +76 -25
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +61 -3
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +46 -15
- package/src/parsers/manifest/dash/common/parse_representations.ts +7 -3
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +6 -0
- package/src/parsers/manifest/dash/node_parser_types.ts +3 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +3 -0
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +4 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +3 -0
- package/src/parsers/manifest/types.ts +13 -2
- package/src/parsers/texttracks/ttml/html/create_element.ts +8 -0
- package/src/public_types.ts +2 -0
- package/src/transports/README.md +15 -54
- package/src/transports/dash/manifest_parser.ts +2 -2
- package/src/transports/dash/segment_loader.ts +1 -1
- package/src/transports/dash/text_parser.ts +3 -3
- package/src/transports/local/segment_loader.ts +1 -1
- package/src/utils/__tests__/event_emitter.test.ts +1 -76
- package/src/utils/event_emitter.ts +6 -30
- package/src/utils/reference.ts +112 -169
- package/src/utils/request/xhr.ts +3 -68
- package/src/utils/retry_promise_with_backoff.ts +95 -0
- package/src/utils/sleep.ts +14 -0
- package/src/utils/sorted_list.ts +4 -0
- package/dist/_esm5.processed/compat/play.d.ts +0 -23
- package/dist/_esm5.processed/compat/play.js +0 -32
- package/dist/_esm5.processed/compat/set_element_src.d.ts +0 -26
- package/dist/_esm5.processed/compat/set_element_src.js +0 -37
- package/dist/_esm5.processed/compat/when_loaded_metadata.d.ts +0 -23
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +0 -33
- package/dist/_esm5.processed/core/init/content_time_boundaries_observer.d.ts +0 -45
- package/dist/_esm5.processed/core/init/content_time_boundaries_observer.js +0 -295
- package/dist/_esm5.processed/core/init/create_media_source.js +0 -107
- package/dist/_esm5.processed/core/init/end_of_stream.js +0 -74
- package/dist/_esm5.processed/core/init/events_generators.d.ts +0 -88
- package/dist/_esm5.processed/core/init/events_generators.js +0 -87
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +0 -81
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +0 -114
- package/dist/_esm5.processed/core/init/initialize_directfile.js +0 -120
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +0 -122
- package/dist/_esm5.processed/core/init/initialize_media_source.js +0 -201
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +0 -62
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +0 -94
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +0 -46
- package/dist/_esm5.processed/core/init/load_on_media_source.js +0 -122
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.d.ts +0 -65
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +0 -233
- package/dist/_esm5.processed/core/init/rebuffering_controller.d.ts +0 -81
- package/dist/_esm5.processed/core/init/rebuffering_controller.js +0 -439
- package/dist/_esm5.processed/core/init/stream_events_emitter/index.d.ts +0 -19
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +0 -27
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +0 -126
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +0 -0
- package/dist/_esm5.processed/core/init/update_playback_rate.js +0 -1
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +0 -67
- package/dist/_esm5.processed/core/stream/events_generators.js +0 -112
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.d.ts +0 -53
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +0 -124
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.d.ts +0 -35
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +0 -53
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +0 -36
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +0 -46
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +0 -47
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +0 -56
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +0 -371
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +0 -49
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +0 -76
- package/dist/_esm5.processed/core/stream/types.d.ts +0 -437
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +0 -24
- package/dist/_esm5.processed/utils/cast_to_observable.js +0 -35
- package/dist/_esm5.processed/utils/concat_map_latest.d.ts +0 -23
- package/dist/_esm5.processed/utils/concat_map_latest.js +0 -48
- package/dist/_esm5.processed/utils/defer_subscriptions.d.ts +0 -79
- package/dist/_esm5.processed/utils/defer_subscriptions.js +0 -89
- package/dist/_esm5.processed/utils/filter_map.d.ts +0 -28
- package/dist/_esm5.processed/utils/filter_map.js +0 -32
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +0 -39
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +0 -63
- package/dist/_esm5.processed/utils/rx-next-tick.d.ts +0 -27
- package/dist/_esm5.processed/utils/rx-next-tick.js +0 -41
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +0 -70
- package/dist/_esm5.processed/utils/rx-throttle.d.ts +0 -40
- package/dist/_esm5.processed/utils/rx-throttle.js +0 -47
- package/dist/_esm5.processed/utils/rx-try_catch.d.ts +0 -23
- package/dist/_esm5.processed/utils/rx-try_catch.js +0 -30
- package/src/compat/__tests__/play.test.ts +0 -73
- package/src/compat/__tests__/set_element_src.test.ts +0 -71
- package/src/compat/__tests__/when_loaded_metadata.test.ts +0 -109
- package/src/compat/play.ts +0 -37
- package/src/compat/set_element_src.ts +0 -47
- package/src/compat/when_loaded_metadata.ts +0 -40
- package/src/core/init/content_time_boundaries_observer.ts +0 -382
- package/src/core/init/emit_loaded_event.ts +0 -71
- package/src/core/init/end_of_stream.ts +0 -104
- package/src/core/init/events_generators.ts +0 -140
- package/src/core/init/initial_seek_and_play.ts +0 -208
- package/src/core/init/initialize_directfile.ts +0 -191
- package/src/core/init/initialize_media_source.ts +0 -389
- package/src/core/init/link_drm_and_content.ts +0 -176
- package/src/core/init/load_on_media_source.ts +0 -237
- package/src/core/init/manifest_update_scheduler.ts +0 -362
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +0 -182
- package/src/core/init/throw_on_media_error.ts +0 -68
- package/src/core/init/update_playback_rate.ts +0 -0
- package/src/core/stream/events_generators.ts +0 -217
- package/src/core/stream/orchestrator/active_period_emitter.ts +0 -146
- package/src/core/stream/orchestrator/are_streams_complete.ts +0 -70
- package/src/core/stream/period/create_empty_adaptation_stream.ts +0 -70
- package/src/core/stream/reload_after_switch.ts +0 -76
- package/src/core/stream/representation/downloading_queue.ts +0 -632
- package/src/core/stream/representation/push_init_segment.ts +0 -87
- package/src/core/stream/representation/push_media_segment.ts +0 -125
- package/src/core/stream/types.ts +0 -558
- package/src/utils/__tests__/cast_to_observable.test.ts +0 -93
- package/src/utils/__tests__/concat_map_latest.test.ts +0 -221
- package/src/utils/__tests__/defer_subscriptions.test.ts +0 -50
- package/src/utils/__tests__/filter_map.test.ts +0 -87
- package/src/utils/__tests__/rx-throttle.test.ts +0 -252
- package/src/utils/__tests__/rx-try_catch.test.ts +0 -100
- package/src/utils/cast_to_observable.ts +0 -48
- package/src/utils/concat_map_latest.ts +0 -61
- package/src/utils/defer_subscriptions.ts +0 -96
- package/src/utils/filter_map.ts +0 -43
- package/src/utils/rx-from_cancellable_promise.ts +0 -71
- package/src/utils/rx-next-tick.ts +0 -43
- package/src/utils/rx-retry_with_backoff.ts +0 -101
- package/src/utils/rx-throttle.ts +0 -84
- package/src/utils/rx-try_catch.ts +0 -37
|
@@ -32,12 +32,9 @@ import isOffline from "./is_offline";
|
|
|
32
32
|
import isVTTCue from "./is_vtt_cue";
|
|
33
33
|
import makeVTTCue from "./make_vtt_cue";
|
|
34
34
|
import onHeightWidthChange from "./on_height_width_change";
|
|
35
|
-
import play from "./play";
|
|
36
|
-
import setElementSrc$ from "./set_element_src";
|
|
37
35
|
import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
|
|
38
36
|
import shouldRenewMediaKeySystemAccess from "./should_renew_media_key_system_access";
|
|
39
37
|
import shouldUnsetMediaKeys from "./should_unset_media_keys";
|
|
40
38
|
import shouldValidateMetadata from "./should_validate_metadata";
|
|
41
39
|
import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
|
|
42
|
-
|
|
43
|
-
export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, play, requestFullscreen, requestMediaKeySystemAccess, setElementSrc$, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, whenLoadedMetadata$, };
|
|
40
|
+
export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, ICompatTextTrack, ICompatVTTCue, ICustomMediaKeySession, ICustomMediaKeySystemAccess, ICustomMediaKeys, ICompatSourceBuffer, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, requestFullscreen, requestMediaKeySystemAccess, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, };
|
|
@@ -33,17 +33,14 @@ import isVTTCue from "./is_vtt_cue";
|
|
|
33
33
|
import makeVTTCue from "./make_vtt_cue";
|
|
34
34
|
import onHeightWidthChange from "./on_height_width_change";
|
|
35
35
|
import patchWebkitSourceBuffer from "./patch_webkit_source_buffer";
|
|
36
|
-
import play from "./play";
|
|
37
|
-
import setElementSrc$ from "./set_element_src";
|
|
38
36
|
// eslint-disable-next-line max-len
|
|
39
37
|
import shouldReloadMediaSourceOnDecipherabilityUpdate from "./should_reload_media_source_on_decipherability_update";
|
|
40
38
|
import shouldRenewMediaKeySystemAccess from "./should_renew_media_key_system_access";
|
|
41
39
|
import shouldUnsetMediaKeys from "./should_unset_media_keys";
|
|
42
40
|
import shouldValidateMetadata from "./should_validate_metadata";
|
|
43
41
|
import shouldWaitForDataBeforeLoaded from "./should_wait_for_data_before_loaded";
|
|
44
|
-
import whenLoadedMetadata$ from "./when_loaded_metadata";
|
|
45
42
|
// TODO To remove. This seems to be the only side-effect done on import, which
|
|
46
43
|
// we would prefer to disallow (both for the understandability of the code and
|
|
47
44
|
// to better exploit tree shaking.
|
|
48
45
|
patchWebkitSourceBuffer();
|
|
49
|
-
export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange,
|
|
46
|
+
export { addClassName, addTextTrack, canPatchISOBMFFSegment, canReuseMediaKeys, clearElementSrc, closeSession, CustomMediaKeySystemAccess, enableAudioTrack, events, exitFullscreen, generateKeyRequest, getInitData, getStartDate, hasEMEAPIs, isCodecSupported, isFullscreen, isNode, isOffline, isVTTCue, loadSession, makeVTTCue, MediaSource_, onHeightWidthChange, requestFullscreen, requestMediaKeySystemAccess, setMediaKeys, shouldReloadMediaSourceOnDecipherabilityUpdate, shouldRenewMediaKeySystemAccess, shouldUnsetMediaKeys, shouldValidateMetadata, shouldWaitForDataBeforeLoaded, tryToChangeSourceBufferType, };
|
|
@@ -28,6 +28,6 @@ export interface IResolution {
|
|
|
28
28
|
* milliseconds at which we should query that element's size.
|
|
29
29
|
* @param {HTMLElement} element
|
|
30
30
|
* @param {number} interval
|
|
31
|
-
* @returns {
|
|
31
|
+
* @returns {Object}
|
|
32
32
|
*/
|
|
33
33
|
export default function onHeightWidthChange(element: HTMLElement, interval: number, cancellationSignal: CancellationSignal): IReadOnlySharedReference<IResolution>;
|
|
@@ -31,14 +31,14 @@ var _ResizeObserver = isNode ? undefined :
|
|
|
31
31
|
* milliseconds at which we should query that element's size.
|
|
32
32
|
* @param {HTMLElement} element
|
|
33
33
|
* @param {number} interval
|
|
34
|
-
* @returns {
|
|
34
|
+
* @returns {Object}
|
|
35
35
|
*/
|
|
36
36
|
export default function onHeightWidthChange(element, interval, cancellationSignal) {
|
|
37
37
|
var _a = element.getBoundingClientRect(), initHeight = _a.height, initWidth = _a.width;
|
|
38
38
|
var ref = createSharedReference({
|
|
39
39
|
height: initHeight,
|
|
40
40
|
width: initWidth,
|
|
41
|
-
});
|
|
41
|
+
}, cancellationSignal);
|
|
42
42
|
var lastHeight = initHeight;
|
|
43
43
|
var lastWidth = initWidth;
|
|
44
44
|
if (_ResizeObserver !== undefined) {
|
|
@@ -137,6 +137,7 @@ declare class ConfigHandler {
|
|
|
137
137
|
MAX_HIGH_PRIORITY_LEVEL: number;
|
|
138
138
|
MIN_CANCELABLE_PRIORITY: number;
|
|
139
139
|
EME_DEFAULT_WIDEVINE_ROBUSTNESSES: string[];
|
|
140
|
+
EME_DEFAULT_PLAYREADY_ROBUSTNESSES: string[];
|
|
140
141
|
EME_KEY_SYSTEMS: Partial<Record<string, string[]>>;
|
|
141
142
|
MAX_CONSECUTIVE_MANIFEST_PARSING_IN_UNSAFE_MODE: number;
|
|
142
143
|
MIN_MANIFEST_PARSING_TIME_TO_ENTER_UNSAFE_MODE: number;
|
|
@@ -56,8 +56,10 @@ export interface IABREstimate {
|
|
|
56
56
|
/**
|
|
57
57
|
* The Representation considered as the most adapted to the current network
|
|
58
58
|
* and playback conditions.
|
|
59
|
+
* `null` in the rare occurence where there is no `Representation` to choose
|
|
60
|
+
* from.
|
|
59
61
|
*/
|
|
60
|
-
representation: Representation;
|
|
62
|
+
representation: Representation | null;
|
|
61
63
|
/**
|
|
62
64
|
* If `true`, the current `representation` suggested should be switched to as
|
|
63
65
|
* soon as possible. For example, you might want to interrupt all pending
|
|
@@ -29,6 +29,17 @@ import LastEstimateStorage from "./utils/last_estimate_storage";
|
|
|
29
29
|
import PendingRequestsStore from "./utils/pending_requests_store";
|
|
30
30
|
import RepresentationScoreCalculator from "./utils/representation_score_calculator";
|
|
31
31
|
import selectOptimalRepresentation from "./utils/select_optimal_representation";
|
|
32
|
+
// Create default shared references
|
|
33
|
+
var manualBitrateDefaultRef = createSharedReference(-1);
|
|
34
|
+
manualBitrateDefaultRef.finish();
|
|
35
|
+
var minAutoBitrateDefaultRef = createSharedReference(0);
|
|
36
|
+
minAutoBitrateDefaultRef.finish();
|
|
37
|
+
var maxAutoBitrateDefaultRef = createSharedReference(Infinity);
|
|
38
|
+
maxAutoBitrateDefaultRef.finish();
|
|
39
|
+
var limitWidthDefaultRef = createSharedReference(undefined);
|
|
40
|
+
limitWidthDefaultRef.finish();
|
|
41
|
+
var throttleBitrateDefaultRef = createSharedReference(Infinity);
|
|
42
|
+
throttleBitrateDefaultRef.finish();
|
|
32
43
|
/**
|
|
33
44
|
* Select the most adapted Representation according to the network and buffer
|
|
34
45
|
* metrics it receives.
|
|
@@ -59,13 +70,13 @@ export default function createAdaptiveRepresentationSelector(options) {
|
|
|
59
70
|
return function getEstimates(context, currentRepresentation, representations, playbackObserver, stopAllEstimates) {
|
|
60
71
|
var type = context.adaptation.type;
|
|
61
72
|
var bandwidthEstimator = _getBandwidthEstimator(type);
|
|
62
|
-
var manualBitrate = takeFirstSet(manualBitrates[type],
|
|
63
|
-
var minAutoBitrate = takeFirstSet(minAutoBitrates[type],
|
|
64
|
-
var maxAutoBitrate = takeFirstSet(maxAutoBitrates[type],
|
|
73
|
+
var manualBitrate = takeFirstSet(manualBitrates[type], manualBitrateDefaultRef);
|
|
74
|
+
var minAutoBitrate = takeFirstSet(minAutoBitrates[type], minAutoBitrateDefaultRef);
|
|
75
|
+
var maxAutoBitrate = takeFirstSet(maxAutoBitrates[type], maxAutoBitrateDefaultRef);
|
|
65
76
|
var initialBitrate = takeFirstSet(initialBitrates[type], 0);
|
|
66
77
|
var filters = {
|
|
67
|
-
limitWidth: takeFirstSet(throttlers.limitWidth[type],
|
|
68
|
-
throttleBitrate: takeFirstSet(throttlers.throttleBitrate[type], throttlers.throttle[type],
|
|
78
|
+
limitWidth: takeFirstSet(throttlers.limitWidth[type], limitWidthDefaultRef),
|
|
79
|
+
throttleBitrate: takeFirstSet(throttlers.throttleBitrate[type], throttlers.throttle[type], throttleBitrateDefaultRef),
|
|
69
80
|
};
|
|
70
81
|
return getEstimateReference({ bandwidthEstimator: bandwidthEstimator, context: context, currentRepresentation: currentRepresentation, filters: filters, initialBitrate: initialBitrate, manualBitrate: manualBitrate, minAutoBitrate: minAutoBitrate, maxAutoBitrate: maxAutoBitrate, playbackObserver: playbackObserver, representations: representations, lowLatencyMode: lowLatencyMode }, stopAllEstimates);
|
|
71
82
|
};
|
|
@@ -129,6 +140,16 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
129
140
|
representationsRef.onUpdate(restartEstimatesProductionFromCurrentConditions, { clearSignal: stopAllEstimates });
|
|
130
141
|
return { estimates: estimateRef, callbacks: callbacks };
|
|
131
142
|
function createEstimateReference(manualBitrateVal, representations, innerCancellationSignal) {
|
|
143
|
+
if (representations.length === 0) {
|
|
144
|
+
// No Representation given, return `null` as documented
|
|
145
|
+
return createSharedReference({
|
|
146
|
+
representation: null,
|
|
147
|
+
bitrate: undefined,
|
|
148
|
+
knownStableBitrate: undefined,
|
|
149
|
+
manual: false,
|
|
150
|
+
urgent: true,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
132
153
|
if (manualBitrateVal >= 0) {
|
|
133
154
|
// A manual bitrate has been set. Just choose Representation according to it.
|
|
134
155
|
var manualRepresentation = selectOptimalRepresentation(representations, manualBitrateVal, 0, Infinity);
|
|
@@ -174,7 +195,7 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
174
195
|
var lastPlaybackObservation = playbackObserver.getReference().getValue();
|
|
175
196
|
/** Reference through which estimates are emitted. */
|
|
176
197
|
var innerEstimateRef = createSharedReference(getCurrentEstimate());
|
|
177
|
-
//
|
|
198
|
+
// Listen to playback observations
|
|
178
199
|
playbackObserver.listen(function (obs) {
|
|
179
200
|
lastPlaybackObservation = obs;
|
|
180
201
|
updateEstimate();
|
|
@@ -24,8 +24,8 @@ import { CancellationSignal } from "../../utils/task_canceller";
|
|
|
24
24
|
* `PlaybackObserver` to know the current state of the media being played.
|
|
25
25
|
*
|
|
26
26
|
* You can use the PlaybackObserver to either get the last observation
|
|
27
|
-
* performed, get the current media state or
|
|
28
|
-
*
|
|
27
|
+
* performed, get the current media state or listen to media observation sent
|
|
28
|
+
* at a regular interval.
|
|
29
29
|
*
|
|
30
30
|
* @class {PlaybackObserver}
|
|
31
31
|
*/
|
|
@@ -77,8 +77,7 @@ export default class PlaybackObserver {
|
|
|
77
77
|
constructor(mediaElement: HTMLMediaElement, options: IPlaybackObserverOptions);
|
|
78
78
|
/**
|
|
79
79
|
* Stop the `PlaybackObserver` from emitting playback observations and free all
|
|
80
|
-
* resources reserved to emitting them such as event listeners
|
|
81
|
-
* subscribing callbacks.
|
|
80
|
+
* resources reserved to emitting them such as event listeners and intervals.
|
|
82
81
|
*
|
|
83
82
|
* Once `stop` is called, no new playback observation will ever be emitted.
|
|
84
83
|
*
|
|
@@ -131,7 +130,7 @@ export default class PlaybackObserver {
|
|
|
131
130
|
* produced by the `PlaybackObserver` and updated each time a new one is
|
|
132
131
|
* produced.
|
|
133
132
|
*
|
|
134
|
-
* This value can then be for example
|
|
133
|
+
* This value can then be for example listened to to be notified of future
|
|
135
134
|
* playback observations.
|
|
136
135
|
*
|
|
137
136
|
* @returns {Object}
|
|
@@ -146,7 +145,7 @@ export default class PlaybackObserver {
|
|
|
146
145
|
* - `clearSignal`: If set, the callback will be unregistered when this
|
|
147
146
|
* CancellationSignal emits.
|
|
148
147
|
*/
|
|
149
|
-
listen(cb: (observation: IPlaybackObservation) => void, options?: {
|
|
148
|
+
listen(cb: (observation: IPlaybackObservation, stopListening: () => void) => void, options?: {
|
|
150
149
|
includeLastObservation?: boolean | undefined;
|
|
151
150
|
clearSignal?: CancellationSignal | undefined;
|
|
152
151
|
}): typeof noop | undefined;
|
|
@@ -168,7 +167,7 @@ export default class PlaybackObserver {
|
|
|
168
167
|
/**
|
|
169
168
|
* Creates the `IReadOnlySharedReference` that will generate playback
|
|
170
169
|
* observations.
|
|
171
|
-
* @returns {
|
|
170
|
+
* @returns {Object}
|
|
172
171
|
*/
|
|
173
172
|
private _createSharedReference;
|
|
174
173
|
private _generateInitialObservation;
|
|
@@ -328,7 +327,7 @@ export interface IReadOnlyPlaybackObserver<TObservationType> {
|
|
|
328
327
|
* produced by the `IReadOnlyPlaybackObserver` and updated each time a new one
|
|
329
328
|
* is produced.
|
|
330
329
|
*
|
|
331
|
-
* This value can then be for example
|
|
330
|
+
* This value can then be for example listened to to be notified of future
|
|
332
331
|
* playback observations.
|
|
333
332
|
*
|
|
334
333
|
* @returns {Object}
|
|
@@ -344,7 +343,7 @@ export interface IReadOnlyPlaybackObserver<TObservationType> {
|
|
|
344
343
|
* CancellationSignal emits.
|
|
345
344
|
* @returns {Function} - Allows to easily unregister the callback
|
|
346
345
|
*/
|
|
347
|
-
listen(cb: (observation: TObservationType) => void, options?: {
|
|
346
|
+
listen(cb: (observation: TObservationType, stopListening: () => void) => void, options?: {
|
|
348
347
|
includeLastObservation?: boolean | undefined;
|
|
349
348
|
clearSignal?: CancellationSignal | undefined;
|
|
350
349
|
}): void;
|
|
@@ -41,8 +41,8 @@ var SCANNED_MEDIA_ELEMENTS_EVENTS = ["canplay",
|
|
|
41
41
|
* `PlaybackObserver` to know the current state of the media being played.
|
|
42
42
|
*
|
|
43
43
|
* You can use the PlaybackObserver to either get the last observation
|
|
44
|
-
* performed, get the current media state or
|
|
45
|
-
*
|
|
44
|
+
* performed, get the current media state or listen to media observation sent
|
|
45
|
+
* at a regular interval.
|
|
46
46
|
*
|
|
47
47
|
* @class {PlaybackObserver}
|
|
48
48
|
*/
|
|
@@ -67,8 +67,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Stop the `PlaybackObserver` from emitting playback observations and free all
|
|
70
|
-
* resources reserved to emitting them such as event listeners
|
|
71
|
-
* subscribing callbacks.
|
|
70
|
+
* resources reserved to emitting them such as event listeners and intervals.
|
|
72
71
|
*
|
|
73
72
|
* Once `stop` is called, no new playback observation will ever be emitted.
|
|
74
73
|
*
|
|
@@ -136,7 +135,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
136
135
|
* produced by the `PlaybackObserver` and updated each time a new one is
|
|
137
136
|
* produced.
|
|
138
137
|
*
|
|
139
|
-
* This value can then be for example
|
|
138
|
+
* This value can then be for example listened to to be notified of future
|
|
140
139
|
* playback observations.
|
|
141
140
|
*
|
|
142
141
|
* @returns {Object}
|
|
@@ -183,7 +182,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
183
182
|
/**
|
|
184
183
|
* Creates the `IReadOnlySharedReference` that will generate playback
|
|
185
184
|
* observations.
|
|
186
|
-
* @returns {
|
|
185
|
+
* @returns {Object}
|
|
187
186
|
*/
|
|
188
187
|
PlaybackObserver.prototype._createSharedReference = function () {
|
|
189
188
|
var _this = this;
|
|
@@ -220,7 +219,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
220
219
|
}
|
|
221
220
|
return timings;
|
|
222
221
|
};
|
|
223
|
-
var returnedSharedReference = createSharedReference(getCurrentObservation("init"));
|
|
222
|
+
var returnedSharedReference = createSharedReference(getCurrentObservation("init"), this._canceller.signal);
|
|
224
223
|
var generateObservationForEvent = function (event) {
|
|
225
224
|
var newObservation = getCurrentObservation(event);
|
|
226
225
|
if (log.hasLevel("DEBUG")) {
|
|
@@ -38,7 +38,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
38
38
|
readonly log: Logger;
|
|
39
39
|
/**
|
|
40
40
|
* Current state of the RxPlayer.
|
|
41
|
-
* Please use `
|
|
41
|
+
* Please use `getPlayerState()` instead.
|
|
42
42
|
*/
|
|
43
43
|
state: IPlayerState;
|
|
44
44
|
/**
|
|
@@ -46,7 +46,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
46
46
|
* used for its normal functionment can be freed.
|
|
47
47
|
* The player will be unusable after that.
|
|
48
48
|
*/
|
|
49
|
-
private readonly
|
|
49
|
+
private readonly _destroyCanceller;
|
|
50
50
|
/**
|
|
51
51
|
* Contains `true` when the previous content is cleaning-up, `false` when it's
|
|
52
52
|
* done.
|
|
@@ -80,18 +80,6 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
80
80
|
private _priv_preferredVideoTracks;
|
|
81
81
|
/** If `true` trickMode video tracks will be chosen if available. */
|
|
82
82
|
private _priv_preferTrickModeTracks;
|
|
83
|
-
/**
|
|
84
|
-
* TrackChoiceManager instance linked to the current content.
|
|
85
|
-
* `null` if no content has been loaded or if the current content loaded
|
|
86
|
-
* has no TrackChoiceManager.
|
|
87
|
-
*/
|
|
88
|
-
private _priv_trackChoiceManager;
|
|
89
|
-
/**
|
|
90
|
-
* MediaElementTrackChoiceManager instance linked to the current content.
|
|
91
|
-
* `null` if no content has been loaded or if the current content loaded
|
|
92
|
-
* has no MediaElementTrackChoiceManager.
|
|
93
|
-
*/
|
|
94
|
-
private _priv_mediaElementTrackChoiceManager;
|
|
95
83
|
/** Refer to last picture in picture event received. */
|
|
96
84
|
private _priv_pictureInPictureRef;
|
|
97
85
|
/** Store wanted configuration for the `limitVideoWidth` option. */
|
|
@@ -241,11 +229,23 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
241
229
|
*/
|
|
242
230
|
areTrickModeTracksEnabled(): boolean;
|
|
243
231
|
/**
|
|
244
|
-
* Returns the url of the content
|
|
232
|
+
* Returns the url of the currently considered Manifest, or of the content for
|
|
233
|
+
* directfile content.
|
|
245
234
|
* @returns {string|undefined} - Current URL. `undefined` if not known or no
|
|
246
235
|
* URL yet.
|
|
247
236
|
*/
|
|
248
237
|
getUrl(): string | undefined;
|
|
238
|
+
/**
|
|
239
|
+
* Update URL of the content currently being played (e.g. DASH's MPD).
|
|
240
|
+
* @param {Array.<string>|undefined} urls - URLs to reach that content /
|
|
241
|
+
* Manifest from the most prioritized URL to the least prioritized URL.
|
|
242
|
+
* @param {Object|undefined} [params]
|
|
243
|
+
* @param {boolean} params.refresh - If `true` the resource in question
|
|
244
|
+
* (e.g. DASH's MPD) will be refreshed immediately.
|
|
245
|
+
*/
|
|
246
|
+
updateContentUrls(urls: string[] | undefined, params?: {
|
|
247
|
+
refresh?: boolean;
|
|
248
|
+
} | undefined): void;
|
|
249
249
|
/**
|
|
250
250
|
* Returns the video duration, in seconds.
|
|
251
251
|
* NaN if no video is playing.
|
|
@@ -685,58 +685,39 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
685
685
|
* Reset all state properties relative to a playing content.
|
|
686
686
|
*/
|
|
687
687
|
private _priv_cleanUpCurrentContentState;
|
|
688
|
-
/**
|
|
689
|
-
* Triggered each time the playback Observable emits.
|
|
690
|
-
*
|
|
691
|
-
* React to various events.
|
|
692
|
-
*
|
|
693
|
-
* @param {Object} event - payload emitted
|
|
694
|
-
*/
|
|
695
|
-
private _priv_onPlaybackEvent;
|
|
696
|
-
/**
|
|
697
|
-
* Triggered when we received a fatal error.
|
|
698
|
-
* Clean-up ressources and signal that the content has stopped on error.
|
|
699
|
-
* @param {Error} error
|
|
700
|
-
*/
|
|
701
|
-
private _priv_onPlaybackError;
|
|
702
|
-
/**
|
|
703
|
-
* Triggered when we received a warning event during playback.
|
|
704
|
-
* Trigger the right API event.
|
|
705
|
-
* @param {Error} error
|
|
706
|
-
*/
|
|
707
|
-
private _priv_onPlaybackWarning;
|
|
708
688
|
/**
|
|
709
689
|
* Triggered when the Manifest has been loaded for the current content.
|
|
710
690
|
* Initialize various private properties and emit initial event.
|
|
711
|
-
* @param {Object}
|
|
691
|
+
* @param {Object} contentInfos
|
|
692
|
+
* @param {Object} manifest
|
|
712
693
|
*/
|
|
713
694
|
private _priv_onManifestReady;
|
|
714
695
|
/**
|
|
715
696
|
* Triggered each times the current Period Changed.
|
|
716
697
|
* Store and emit initial state for the Period.
|
|
717
698
|
*
|
|
718
|
-
* @param {Object}
|
|
699
|
+
* @param {Object} contentInfos
|
|
700
|
+
* @param {Object} periodInfo
|
|
719
701
|
*/
|
|
720
702
|
private _priv_onActivePeriodChanged;
|
|
721
703
|
/**
|
|
722
704
|
* Triggered each times a new "PeriodStream" is ready.
|
|
723
705
|
* Choose the right Adaptation for the Period and emit it.
|
|
706
|
+
* @param {Object} contentInfos
|
|
724
707
|
* @param {Object} value
|
|
725
708
|
*/
|
|
726
709
|
private _priv_onPeriodStreamReady;
|
|
727
710
|
/**
|
|
728
711
|
* Triggered each times we "remove" a PeriodStream.
|
|
712
|
+
* @param {Object} contentInfos
|
|
729
713
|
* @param {Object} value
|
|
730
714
|
*/
|
|
731
715
|
private _priv_onPeriodStreamCleared;
|
|
732
|
-
/**
|
|
733
|
-
* Triggered each time the content is re-loaded on the MediaSource.
|
|
734
|
-
*/
|
|
735
|
-
private _priv_onReloadingMediaSource;
|
|
736
716
|
/**
|
|
737
717
|
* Triggered each times a new Adaptation is considered for the current
|
|
738
718
|
* content.
|
|
739
719
|
* Store given Adaptation and emit it if from the current Period.
|
|
720
|
+
* @param {Object} contentInfos
|
|
740
721
|
* @param {Object} value
|
|
741
722
|
*/
|
|
742
723
|
private _priv_onAdaptationChange;
|
|
@@ -745,6 +726,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
745
726
|
*
|
|
746
727
|
* Store given Representation and emit it if from the current Period.
|
|
747
728
|
*
|
|
729
|
+
* @param {Object} contentInfos
|
|
748
730
|
* @param {Object} obj
|
|
749
731
|
*/
|
|
750
732
|
private _priv_onRepresentationChange;
|
|
@@ -777,6 +759,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
777
759
|
*
|
|
778
760
|
* Trigger the right Player Event
|
|
779
761
|
*
|
|
762
|
+
* @param {Object} contentInfos
|
|
780
763
|
* @param {Object} observation
|
|
781
764
|
*/
|
|
782
765
|
private _priv_triggerPositionUpdate;
|
|
@@ -785,6 +768,7 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
785
768
|
* the previously stored value.
|
|
786
769
|
* @param {string} event
|
|
787
770
|
* @param {Array.<number>} newVal
|
|
771
|
+
* @param {Object} currentContentCancelSignal
|
|
788
772
|
*/
|
|
789
773
|
private _priv_triggerAvailableBitratesChangeEvent;
|
|
790
774
|
/**
|
|
@@ -792,9 +776,23 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
792
776
|
* previously stored value.
|
|
793
777
|
* @param {string} event
|
|
794
778
|
* @param {number} newVal
|
|
779
|
+
* @param {Object} currentContentCancelSignal
|
|
795
780
|
*/
|
|
796
781
|
private _priv_triggerCurrentBitrateChangeEvent;
|
|
797
782
|
private _priv_getCurrentRepresentations;
|
|
783
|
+
/**
|
|
784
|
+
* @param {string} evt
|
|
785
|
+
* @param {*} arg
|
|
786
|
+
* @param {Object} currentContentCancelSignal
|
|
787
|
+
*/
|
|
788
|
+
private _priv_triggerEventIfNotStopped;
|
|
789
|
+
/**
|
|
790
|
+
* @param {Object} defaultAudioTrack
|
|
791
|
+
* @param {Object} defaultTextTrack
|
|
792
|
+
* @param {Object} cancelSignal
|
|
793
|
+
* @returns {Object}
|
|
794
|
+
*/
|
|
795
|
+
private _priv_initializeMediaElementTrackChoiceManager;
|
|
798
796
|
}
|
|
799
797
|
/** Every events sent by the RxPlayer's public API. */
|
|
800
798
|
interface IPublicAPIEvent {
|