rx-player 4.0.0-dev.2023120600 → 4.0.0-dev.2023121900
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 +178 -2
- package/README.md +2 -33
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_text_track.d.ts +3 -1
- package/dist/_esm5.processed/compat/add_text_track.js +7 -4
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +7 -0
- package/dist/_esm5.processed/compat/event_listeners.d.ts +15 -2
- package/dist/_esm5.processed/compat/event_listeners.js +37 -2
- package/dist/_esm5.processed/compat/fullscreen.d.ts +32 -0
- package/dist/_esm5.processed/compat/fullscreen.js +78 -0
- package/dist/_esm5.processed/compat/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/index.js +3 -1
- package/dist/_esm5.processed/compat/is_offline.d.ts +39 -0
- package/dist/_esm5.processed/compat/is_offline.js +43 -0
- package/dist/_esm5.processed/config.d.ts +21 -9
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +58 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +54 -14
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +8 -2
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +11 -2
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +46 -17
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +35 -14
- package/dist/_esm5.processed/core/api/option_utils.js +230 -47
- package/dist/_esm5.processed/core/api/public_api.d.ts +266 -92
- package/dist/_esm5.processed/core/api/public_api.js +802 -444
- package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.d.ts → tracks_management/media_element_track_choice_manager.d.ts} +75 -15
- package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.js → tracks_management/media_element_track_choice_manager.js} +193 -74
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +258 -0
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +989 -0
- package/dist/_esm5.processed/core/api/utils.d.ts +0 -1
- package/dist/_esm5.processed/core/api/utils.js +11 -28
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +71 -83
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +5 -6
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +72 -10
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +4 -6
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +3 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +26 -7
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +9 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +9 -16
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +3 -1
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +6 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +41 -4
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +8 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -2
- package/dist/_esm5.processed/core/init/types.d.ts +15 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +75 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +133 -0
- package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.d.ts +2 -3
- package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.js +2 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.js +1 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +2 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +0 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +1 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +16 -2
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -0
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +93 -183
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +13 -27
- package/dist/_esm5.processed/core/stream/index.d.ts +3 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +0 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +7 -5
- package/dist/_esm5.processed/core/stream/period/period_stream.js +12 -13
- package/dist/_esm5.processed/core/stream/period/types.d.ts +14 -5
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +46 -10
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +23 -29
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +1 -11
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/_esm5.processed/default_config.d.ts +98 -35
- package/dist/_esm5.processed/default_config.js +113 -36
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +3 -1
- package/dist/_esm5.processed/errors/custom_loader_error.js +3 -1
- package/dist/_esm5.processed/errors/media_error.js +2 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +1 -0
- package/dist/_esm5.processed/errors/network_error.js +1 -0
- package/dist/_esm5.processed/errors/request_error.d.ts +3 -2
- package/dist/_esm5.processed/errors/request_error.js +5 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
- package/dist/_esm5.processed/features/features_object.js +2 -0
- package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.js → features/list/bif_parser.d.ts} +6 -7
- package/dist/_esm5.processed/features/list/bif_parser.js +27 -0
- package/dist/_esm5.processed/features/list/directfile.js +5 -2
- package/dist/_esm5.processed/features/list/image_buffer.d.ts +23 -0
- package/dist/_esm5.processed/features/list/image_buffer.js +25 -0
- package/dist/_esm5.processed/features/list/index.d.ts +2 -0
- package/dist/_esm5.processed/features/list/index.js +2 -0
- package/dist/_esm5.processed/features/types.d.ts +27 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +11 -9
- package/dist/_esm5.processed/manifest/adaptation.js +30 -41
- package/dist/_esm5.processed/manifest/index.d.ts +4 -3
- package/dist/_esm5.processed/manifest/manifest.d.ts +54 -5
- package/dist/_esm5.processed/manifest/manifest.js +110 -5
- package/dist/_esm5.processed/manifest/period.d.ts +5 -4
- package/dist/_esm5.processed/manifest/representation.d.ts +5 -10
- package/dist/_esm5.processed/manifest/representation.js +5 -15
- package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/representation_index/static.d.ts +0 -2
- package/dist/_esm5.processed/manifest/representation_index/static.js +0 -6
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +21 -42
- package/dist/_esm5.processed/manifest/types.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +31 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +19 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +1 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +6 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +8 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +0 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +6 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +5 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +6 -10
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +2 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +1 -10
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +2 -18
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +0 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +3 -12
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +17 -11
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +83 -21
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +125 -53
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +6 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/_esm5.processed/public_types.d.ts +310 -396
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +4 -5
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +4 -5
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +38 -0
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +129 -0
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +3 -2
- package/dist/_esm5.processed/transports/dash/pipelines.js +4 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +20 -26
- package/dist/_esm5.processed/transports/dash/segment_parser.js +24 -19
- package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
- package/dist/_esm5.processed/transports/dash/text_parser.js +33 -28
- package/dist/_esm5.processed/transports/local/pipelines.js +10 -1
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +52 -34
- package/dist/_esm5.processed/transports/smooth/pipelines.js +190 -33
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +22 -28
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +26 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +55 -1
- package/dist/_esm5.processed/transports/types.d.ts +89 -94
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +7 -5
- package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +12 -8
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +21 -19
- package/dist/_esm5.processed/utils/array_includes.d.ts +1 -2
- package/dist/_esm5.processed/utils/array_includes.js +28 -30
- package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.d.ts → utils/list_to_map.d.ts} +5 -5
- package/dist/_esm5.processed/utils/list_to_map.js +28 -0
- package/dist/_esm5.processed/utils/request/xhr.js +5 -5
- package/dist/_esm5.processed/utils/simple_set.d.ts +51 -0
- package/dist/_esm5.processed/utils/simple_set.js +57 -0
- package/dist/_esm5.processed/utils/uniq.d.ts +36 -0
- package/dist/_esm5.processed/utils/uniq.js +43 -0
- package/dist/commonjs/config.d.ts +1 -1
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/commonjs/core/adaptive/network_analyzer.js +3 -3
- package/dist/commonjs/core/api/index.d.ts +1 -1
- package/dist/commonjs/core/api/playback_observer.d.ts +128 -8
- package/dist/commonjs/core/api/playback_observer.js +217 -64
- package/dist/commonjs/core/api/public_api.js +9 -9
- package/dist/commonjs/core/api/utils.js +1 -1
- package/dist/commonjs/core/decrypt/get_media_keys.js +2 -6
- package/dist/commonjs/core/init/directfile_content_initializer.js +5 -1
- package/dist/commonjs/core/init/media_source_content_initializer.js +28 -14
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +1 -2
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/commonjs/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/commonjs/core/init/utils/initial_seek_and_play.js +121 -91
- package/dist/commonjs/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/commonjs/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/commonjs/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/commonjs/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/commonjs/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +14 -18
- package/dist/commonjs/core/stream/period/period_stream.js +5 -8
- package/dist/commonjs/core/stream/period/types.d.ts +2 -3
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/commonjs/core/stream/representation/representation_stream.js +3 -4
- package/dist/commonjs/core/stream/representation/types.d.ts +2 -2
- package/dist/commonjs/core/stream/representation/utils/append_segment_to_buffer.js +11 -12
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/commonjs/default_config.d.ts +7 -16
- package/dist/commonjs/default_config.js +16 -16
- package/dist/commonjs/manifest/adaptation.js +2 -1
- package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/commonjs/public_types.d.ts +29 -2
- package/dist/es2017/config.d.ts +1 -1
- package/dist/es2017/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/es2017/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/es2017/core/adaptive/network_analyzer.js +3 -3
- package/dist/es2017/core/api/index.d.ts +1 -1
- package/dist/es2017/core/api/playback_observer.d.ts +128 -8
- package/dist/es2017/core/api/playback_observer.js +217 -66
- package/dist/es2017/core/api/public_api.js +9 -9
- package/dist/es2017/core/api/utils.js +1 -1
- package/dist/es2017/core/decrypt/get_media_keys.js +2 -6
- package/dist/es2017/core/init/directfile_content_initializer.js +7 -1
- package/dist/es2017/core/init/media_source_content_initializer.js +30 -16
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +1 -2
- package/dist/es2017/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/es2017/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/es2017/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/es2017/core/init/utils/initial_seek_and_play.js +120 -91
- package/dist/es2017/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/es2017/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/es2017/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/es2017/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/es2017/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +16 -18
- package/dist/es2017/core/stream/period/period_stream.js +4 -7
- package/dist/es2017/core/stream/period/types.d.ts +2 -3
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/es2017/core/stream/representation/representation_stream.js +3 -4
- package/dist/es2017/core/stream/representation/types.d.ts +2 -2
- package/dist/es2017/core/stream/representation/utils/append_segment_to_buffer.js +1 -2
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/es2017/default_config.d.ts +7 -16
- package/dist/es2017/default_config.js +16 -16
- package/dist/es2017/manifest/adaptation.js +2 -1
- package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/es2017/public_types.d.ts +29 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +614 -438
- package/dist/rx-player.min.js +1 -1
- package/package.json +5 -1
- package/scripts/canal-release.patch +78 -0
- package/scripts/make-dev-releases +65 -0
- package/scripts/update-version +5 -0
- package/sonar-project.properties +1 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +4 -21
- package/src/core/adaptive/network_analyzer.ts +3 -3
- package/src/core/api/index.ts +1 -0
- package/src/core/api/playback_observer.ts +327 -107
- package/src/core/api/public_api.ts +9 -9
- package/src/core/api/utils.ts +3 -1
- package/src/core/decrypt/get_media_keys.ts +2 -8
- package/src/core/init/directfile_content_initializer.ts +8 -8
- package/src/core/init/media_source_content_initializer.ts +27 -20
- package/src/core/init/utils/content_time_boundaries_observer.ts +1 -1
- package/src/core/init/utils/create_stream_playback_observer.ts +19 -20
- package/src/core/init/utils/initial_seek_and_play.ts +140 -108
- package/src/core/init/utils/rebuffering_controller.ts +32 -77
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +5 -2
- package/src/core/segment_buffers/garbage_collector.ts +1 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/index.ts +2 -0
- package/src/core/segment_buffers/inventory/index.ts +2 -0
- package/src/core/segment_buffers/inventory/segment_inventory.ts +49 -17
- package/src/core/stream/adaptation/get_representations_switch_strategy.ts +21 -12
- package/src/core/stream/orchestrator/stream_orchestrator.ts +14 -19
- package/src/core/stream/period/period_stream.ts +7 -8
- package/src/core/stream/period/types.ts +2 -3
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +21 -15
- package/src/core/stream/representation/representation_stream.ts +3 -5
- package/src/core/stream/representation/types.ts +2 -2
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +1 -1
- package/src/core/stream/representation/utils/get_buffer_status.ts +2 -1
- package/src/default_config.ts +17 -17
- package/src/manifest/adaptation.ts +2 -1
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +3 -1
- package/src/public_types.ts +29 -2
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +0 -84
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +0 -158
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +0 -406
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +0 -932
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +0 -33
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +0 -49
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +0 -39
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +0 -133
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +0 -119
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +0 -159
|
@@ -82,7 +82,8 @@ var Adaptation = /** @class */ (function () {
|
|
|
82
82
|
var reprObject = {
|
|
83
83
|
id: representation.id,
|
|
84
84
|
bitrate: representation.bitrate,
|
|
85
|
-
|
|
85
|
+
codecs: representation.codec === undefined ? [] :
|
|
86
|
+
[representation.codec],
|
|
86
87
|
height: representation.height,
|
|
87
88
|
width: representation.width,
|
|
88
89
|
frameRate: representation.frameRate,
|
|
@@ -24,10 +24,11 @@ var regexps_1 = require("../regexps");
|
|
|
24
24
|
*/
|
|
25
25
|
function applyLineHeight(element, lineHeight) {
|
|
26
26
|
var trimmedLineHeight = lineHeight.trim();
|
|
27
|
+
var splittedLineHeight = trimmedLineHeight.split(" ");
|
|
27
28
|
if (trimmedLineHeight === "auto") {
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
|
-
var firstLineHeight = regexps_1.REGXP_LENGTH.exec(
|
|
31
|
+
var firstLineHeight = regexps_1.REGXP_LENGTH.exec(splittedLineHeight[0]);
|
|
31
32
|
if (firstLineHeight === null) {
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
@@ -137,8 +137,35 @@ export interface IRepresentationFilterRepresentation {
|
|
|
137
137
|
/** String identifying the Representation, unique per Adaptation. */
|
|
138
138
|
id: string;
|
|
139
139
|
bitrate?: number | undefined;
|
|
140
|
-
/**
|
|
141
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Codec(s) relied on by the media segments of that Representation.
|
|
142
|
+
*
|
|
143
|
+
* For the great majority of cases, this value will be set to either
|
|
144
|
+
* `undefined` (meaning the codec is unknown) or to an array with a
|
|
145
|
+
* single element which will be the actual codec relied on when the
|
|
146
|
+
* corresponding Representation will be played.
|
|
147
|
+
*
|
|
148
|
+
* However in some very rare scenarios, this value might be set to an array
|
|
149
|
+
* with multiple codecs, itself being a list of its candidate codecs from the
|
|
150
|
+
* most wanted to the most compatible.
|
|
151
|
+
* The conditions for this more complex format are very specific:
|
|
152
|
+
*
|
|
153
|
+
* - It can only happen if the `representationFilter` callback is called in
|
|
154
|
+
* an environment where it hasn't yet been possible for the RxPlayer to
|
|
155
|
+
* check for codec support (mainly when running through the RxPlayer's
|
|
156
|
+
* `MULTI_THREAD` feature in a browser without MSE-in-worker
|
|
157
|
+
* capabilities).
|
|
158
|
+
*
|
|
159
|
+
* - The corresponding Representation is compatible to a restrictive codec
|
|
160
|
+
* yet also retro-compatible to a less restrictive one.
|
|
161
|
+
*
|
|
162
|
+
* The main example being Dolby Vision Representations which are
|
|
163
|
+
* retro-compatible to HDR10 HEVC codecs.
|
|
164
|
+
* In that very specific case, we could have an array with two elements:
|
|
165
|
+
* 1. The Dolby Vision codec
|
|
166
|
+
* 2. The base HDR10 codec
|
|
167
|
+
*/
|
|
168
|
+
codecs?: string[] | undefined;
|
|
142
169
|
/**
|
|
143
170
|
* This property makes the most sense for video Representations.
|
|
144
171
|
* It defines the height of the video, in pixels.
|
package/dist/es2017/config.d.ts
CHANGED
|
@@ -36,6 +36,7 @@ declare class ConfigHandler {
|
|
|
36
36
|
DEFAULT_MAX_BUFFER_BEHIND: number;
|
|
37
37
|
DEFAULT_MAX_VIDEO_BUFFER_SIZE: number;
|
|
38
38
|
MAXIMUM_MAX_BUFFER_AHEAD: Partial<Record<"audio" | "video" | "text", number>>;
|
|
39
|
+
MINIMUM_MAX_BUFFER_AHEAD: Partial<Record<"audio" | "video" | "image" | "text", number>>;
|
|
39
40
|
MAXIMUM_MAX_BUFFER_BEHIND: Partial<Record<"audio" | "video" | "text", number>>;
|
|
40
41
|
DEFAULT_BASE_BANDWIDTH: number;
|
|
41
42
|
INACTIVITY_DELAY: number;
|
|
@@ -46,7 +47,6 @@ declare class ConfigHandler {
|
|
|
46
47
|
LOW_LATENCY: number;
|
|
47
48
|
};
|
|
48
49
|
BUFFER_DISCONTINUITY_THRESHOLD: number;
|
|
49
|
-
FORCE_DISCONTINUITY_SEEK_DELAY: number;
|
|
50
50
|
BITRATE_REBUFFERING_RATIO: number;
|
|
51
51
|
BUFFER_GC_GAPS: {
|
|
52
52
|
CALM: number;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import Manifest, { Adaptation, ISegment, Period, Representation } from "../../manifest";
|
|
17
17
|
import { IReadOnlySharedReference } from "../../utils/reference";
|
|
18
18
|
import { CancellationSignal } from "../../utils/task_canceller";
|
|
19
|
-
import { IReadOnlyPlaybackObserver } from "../api";
|
|
19
|
+
import { IObservationPosition, IReadOnlyPlaybackObserver } from "../api";
|
|
20
20
|
import { IBufferType } from "../segment_buffers";
|
|
21
21
|
import BandwidthEstimator from "./utils/bandwidth_estimator";
|
|
22
22
|
import { IResolutionInfo } from "./utils/filter_by_resolution";
|
|
@@ -99,24 +99,7 @@ export interface IRepresentationEstimatorPlaybackObservation {
|
|
|
99
99
|
* Information on the current media position in seconds at the time of a
|
|
100
100
|
* Playback Observation.
|
|
101
101
|
*/
|
|
102
|
-
position:
|
|
103
|
-
/**
|
|
104
|
-
* Known position at the time the Observation was emitted, in seconds.
|
|
105
|
-
*
|
|
106
|
-
* Note that it might have changed since. If you want truly precize
|
|
107
|
-
* information, you should recuperate it from the HTMLMediaElement directly
|
|
108
|
-
* through another mean.
|
|
109
|
-
*/
|
|
110
|
-
last: number;
|
|
111
|
-
/**
|
|
112
|
-
* Actually wanted position in seconds that is not yet reached.
|
|
113
|
-
*
|
|
114
|
-
* This might for example be set to the initial position when the content is
|
|
115
|
-
* loading (and thus potentially at a `0` position) but which will be seeked
|
|
116
|
-
* to a given position once possible.
|
|
117
|
-
*/
|
|
118
|
-
pending: number | undefined;
|
|
119
|
-
};
|
|
102
|
+
position: IObservationPosition;
|
|
120
103
|
/**
|
|
121
104
|
* Last "playback rate" set by the user. This is the ideal "playback rate" at
|
|
122
105
|
* which the media should play.
|
|
@@ -197,7 +197,7 @@ function getEstimateReference({ bandwidthEstimator, context, currentRepresentati
|
|
|
197
197
|
}
|
|
198
198
|
const { position, speed } = lastPlaybackObservation;
|
|
199
199
|
const timeRanges = val.buffered;
|
|
200
|
-
const bufferGap = getLeftSizeOfBufferedTimeRange(timeRanges, position.
|
|
200
|
+
const bufferGap = getLeftSizeOfBufferedTimeRange(timeRanges, position.getWanted());
|
|
201
201
|
const { representation } = val.content;
|
|
202
202
|
const currentScore = scoreCalculator.getEstimate(representation);
|
|
203
203
|
const currentBitrate = representation.bitrate;
|
|
@@ -288,7 +288,7 @@ function getEstimateReference({ bandwidthEstimator, context, currentRepresentati
|
|
|
288
288
|
if (lowLatencyMode &&
|
|
289
289
|
currentRepresentationVal !== null &&
|
|
290
290
|
context.manifest.isDynamic &&
|
|
291
|
-
maximumPosition - position.
|
|
291
|
+
maximumPosition - position.getWanted() < 40) {
|
|
292
292
|
chosenRepFromGuessMode = guessBasedChooser
|
|
293
293
|
.getGuess(sortedRepresentations, lastPlaybackObservation, currentRepresentationVal, currentBestBitrate, requests);
|
|
294
294
|
}
|
|
@@ -120,7 +120,7 @@ function estimateStarvationModeBitrate(pendingRequests, playbackInfo, currentRep
|
|
|
120
120
|
const { bufferGap, speed, position } = playbackInfo;
|
|
121
121
|
const realBufferGap = isFinite(bufferGap) ? bufferGap :
|
|
122
122
|
0;
|
|
123
|
-
const nextNeededPosition = position.
|
|
123
|
+
const nextNeededPosition = position.getWanted() + realBufferGap;
|
|
124
124
|
const concernedRequests = getConcernedRequests(pendingRequests, nextNeededPosition);
|
|
125
125
|
if (concernedRequests.length !== 1) { // 0 == no request
|
|
126
126
|
// 2+ == too complicated to calculate
|
|
@@ -188,7 +188,7 @@ function shouldDirectlySwitchToLowBitrate(playbackInfo, requests, lowLatencyMode
|
|
|
188
188
|
}
|
|
189
189
|
const realBufferGap = isFinite(playbackInfo.bufferGap) ? playbackInfo.bufferGap :
|
|
190
190
|
0;
|
|
191
|
-
const nextNeededPosition = playbackInfo.position.
|
|
191
|
+
const nextNeededPosition = playbackInfo.position.getWanted() + realBufferGap;
|
|
192
192
|
const nextRequest = arrayFind(requests, ({ content }) => content.segment.duration > 0 &&
|
|
193
193
|
(content.segment.time + content.segment.duration) > nextNeededPosition);
|
|
194
194
|
if (nextRequest === undefined) {
|
|
@@ -261,7 +261,7 @@ export default class NetworkAnalyzer {
|
|
|
261
261
|
const { ABR_STARVATION_DURATION_DELTA } = config.getCurrent();
|
|
262
262
|
// check if should get in/out of starvation mode
|
|
263
263
|
if (isNaN(duration) ||
|
|
264
|
-
realBufferGap + position.
|
|
264
|
+
realBufferGap + position.getWanted() < duration - ABR_STARVATION_DURATION_DELTA) {
|
|
265
265
|
if (!this._inStarvationMode && realBufferGap <= localConf.starvationGap) {
|
|
266
266
|
log.info("ABR: enter starvation mode.");
|
|
267
267
|
this._inStarvationMode = true;
|
|
@@ -16,5 +16,5 @@
|
|
|
16
16
|
import PlaybackObserver from "./playback_observer";
|
|
17
17
|
import Player from "./public_api";
|
|
18
18
|
export { PlaybackObserver };
|
|
19
|
-
export { IPlaybackObservation, IPlaybackObserverEventType, IReadOnlyPlaybackObserver, IFreezingStatus, IRebufferingStatus, } from "./playback_observer";
|
|
19
|
+
export { IObservationPosition, IPlaybackObservation, IPlaybackObserverEventType, IReadOnlyPlaybackObserver, IFreezingStatus, IRebufferingStatus, } from "./playback_observer";
|
|
20
20
|
export default Player;
|
|
@@ -39,6 +39,13 @@ export default class PlaybackObserver {
|
|
|
39
39
|
* influence on some chosen interval values here.
|
|
40
40
|
*/
|
|
41
41
|
private _lowLatencyMode;
|
|
42
|
+
/**
|
|
43
|
+
* If set, position which could not yet be seeked to as the HTMLMediaElement
|
|
44
|
+
* had a readyState of `0`.
|
|
45
|
+
* This position should be seeked to as soon as the HTMLMediaElement is able
|
|
46
|
+
* to handle it.
|
|
47
|
+
*/
|
|
48
|
+
private _pendingSeek;
|
|
42
49
|
/**
|
|
43
50
|
* The RxPlayer usually wants to differientate when a seek was sourced from
|
|
44
51
|
* the RxPlayer's internal logic vs when it was sourced from an outside
|
|
@@ -64,6 +71,21 @@ export default class PlaybackObserver {
|
|
|
64
71
|
* observations.
|
|
65
72
|
*/
|
|
66
73
|
private _canceller;
|
|
74
|
+
/**
|
|
75
|
+
* On some devices (right now only seen on Tizen), seeking through the
|
|
76
|
+
* `currentTime` property can lead to the browser re-seeking once the
|
|
77
|
+
* segments have been loaded to improve seeking performances (for
|
|
78
|
+
* example, by seeking right to an intra video frame).
|
|
79
|
+
* In that case, we risk being in a conflict with that behavior: if for
|
|
80
|
+
* example we encounter a small discontinuity at the position the browser
|
|
81
|
+
* seeks to, we will seek over it, the browser would seek back and so on.
|
|
82
|
+
*
|
|
83
|
+
* This variable allows to store the maximum known position we were seeking to
|
|
84
|
+
* so we can detect when the browser seeked back (to avoid performing another
|
|
85
|
+
* seek after that). When browsers seek back to a position behind a
|
|
86
|
+
* discontinuity, they are usually able to skip them without our help.
|
|
87
|
+
*/
|
|
88
|
+
private _expectedSeekingPosition;
|
|
67
89
|
/**
|
|
68
90
|
* Create a new `PlaybackObserver`, which allows to produce new "playback
|
|
69
91
|
* observations" on various media events and intervals.
|
|
@@ -164,18 +186,22 @@ export default class PlaybackObserver {
|
|
|
164
186
|
* @returns {Object}
|
|
165
187
|
*/
|
|
166
188
|
deriveReadOnlyObserver<TDest>(transform: (observationRef: IReadOnlySharedReference<IPlaybackObservation>, cancellationSignal: CancellationSignal) => IReadOnlySharedReference<TDest>): IReadOnlyPlaybackObserver<TDest>;
|
|
189
|
+
private _actuallySetCurrentTime;
|
|
167
190
|
/**
|
|
168
191
|
* Creates the `IReadOnlySharedReference` that will generate playback
|
|
169
192
|
* observations.
|
|
170
193
|
* @returns {Object}
|
|
171
194
|
*/
|
|
172
195
|
private _createSharedReference;
|
|
173
|
-
private
|
|
196
|
+
private _getCurrentObservation;
|
|
197
|
+
private _generateObservationForEvent;
|
|
174
198
|
}
|
|
175
199
|
/** "Event" that triggered the playback observation. */
|
|
176
200
|
export type IPlaybackObserverEventType =
|
|
177
201
|
/** First playback observation automatically emitted. */
|
|
178
|
-
"init" |
|
|
202
|
+
"init" |
|
|
203
|
+
/** Observation manually forced by the PlaybackObserver. */
|
|
204
|
+
"manual" |
|
|
179
205
|
/** Regularly emitted playback observation when no event happened in a long time. */
|
|
180
206
|
"timeupdate" |
|
|
181
207
|
/** On the HTML5 event with the same name */
|
|
@@ -236,8 +262,18 @@ interface IMediaInfos {
|
|
|
236
262
|
readyState: number;
|
|
237
263
|
/** Current `seeking` value on the mediaElement. */
|
|
238
264
|
seeking: boolean;
|
|
239
|
-
|
|
240
|
-
|
|
265
|
+
}
|
|
266
|
+
/** Categorize a pending seek operation. */
|
|
267
|
+
export declare const enum SeekingState {
|
|
268
|
+
/** We're not currently seeking. */
|
|
269
|
+
None = 0,
|
|
270
|
+
/**
|
|
271
|
+
* We're currently seeking due to an internal logic of the RxPlayer (e.g.
|
|
272
|
+
* discontinuity skipping).
|
|
273
|
+
*/
|
|
274
|
+
Internal = 1,
|
|
275
|
+
/** We're currently seeking due to a regular seek wanted by the application. */
|
|
276
|
+
External = 2
|
|
241
277
|
}
|
|
242
278
|
/**
|
|
243
279
|
* Describes when the player is "rebuffering" and what event started that
|
|
@@ -277,7 +313,16 @@ export interface IFreezingStatus {
|
|
|
277
313
|
timestamp: number;
|
|
278
314
|
}
|
|
279
315
|
/** Information emitted on each playback observation. */
|
|
280
|
-
export interface IPlaybackObservation extends IMediaInfos {
|
|
316
|
+
export interface IPlaybackObservation extends Omit<IMediaInfos, "position" | "seeking"> {
|
|
317
|
+
/** Event that triggered this playback observation. */
|
|
318
|
+
event: IPlaybackObserverEventType;
|
|
319
|
+
/** Current seeking state. */
|
|
320
|
+
seeking: SeekingState;
|
|
321
|
+
/**
|
|
322
|
+
* Information on the current position being played, the position for which
|
|
323
|
+
* media is wanted etc.
|
|
324
|
+
*/
|
|
325
|
+
position: IObservationPosition;
|
|
281
326
|
/**
|
|
282
327
|
* Set if the player is short on audio and/or video media data and is a such,
|
|
283
328
|
* rebuffering.
|
|
@@ -292,11 +337,86 @@ export interface IPlaybackObservation extends IMediaInfos {
|
|
|
292
337
|
* `null` if the player is not frozen.
|
|
293
338
|
*/
|
|
294
339
|
freezing: IFreezingStatus | null;
|
|
340
|
+
}
|
|
341
|
+
export type IObservationPosition = ObservationPosition;
|
|
342
|
+
declare class ObservationPosition {
|
|
343
|
+
/**
|
|
344
|
+
* Known position at the time the Observation was emitted, in seconds.
|
|
345
|
+
*
|
|
346
|
+
* Note that it might have changed since. If you want truly precize
|
|
347
|
+
* information, you should recuperate it from the HTMLMediaElement directly
|
|
348
|
+
* through another mean.
|
|
349
|
+
*/
|
|
350
|
+
private _last;
|
|
351
|
+
/**
|
|
352
|
+
* Actually wanted position in seconds that is not yet reached.
|
|
353
|
+
*
|
|
354
|
+
* This might for example be set to the initial position when the content is
|
|
355
|
+
* loading (and thus potentially at a `0` position) but which will be seeked
|
|
356
|
+
* to a given position once possible. It may also be the position of a seek
|
|
357
|
+
* that has not been properly accounted for by the current device.
|
|
358
|
+
*/
|
|
359
|
+
private _wanted;
|
|
360
|
+
constructor(last: number, wanted: number | null);
|
|
361
|
+
/**
|
|
362
|
+
* Returns the playback position actually observed on the media element at
|
|
363
|
+
* the time the playback observation was made.
|
|
364
|
+
*
|
|
365
|
+
* Note that it may be different than the position for which media data is
|
|
366
|
+
* wanted in rare scenarios where the goal position is not yet set on the
|
|
367
|
+
* media element.
|
|
368
|
+
*
|
|
369
|
+
* You should use this value when you want to obtain the actual position set
|
|
370
|
+
* on the media element for browser compatibility purposes. Note that this
|
|
371
|
+
* position was calculated at observation time, it might thus not be
|
|
372
|
+
* up-to-date if what you want is milliseconds-accuracy.
|
|
373
|
+
*
|
|
374
|
+
* If what you want is the actual position which the player is intended to
|
|
375
|
+
* play, you should rely on `getWanted` instead`.
|
|
376
|
+
* @returns {number}
|
|
377
|
+
*/
|
|
378
|
+
getPolled(): number;
|
|
379
|
+
/**
|
|
380
|
+
* Returns the position which the player should consider to load media data
|
|
381
|
+
* at the time the observation was made.
|
|
382
|
+
*
|
|
383
|
+
* It can be different than the value returned by `getPolled` in rare
|
|
384
|
+
* scenarios:
|
|
385
|
+
*
|
|
386
|
+
* - When the initial position has not been set yet.
|
|
387
|
+
*
|
|
388
|
+
* - When the current device do not let the RxPlayer peform precize seeks,
|
|
389
|
+
* usually for perfomance reasons by seeking to a previous IDR frame
|
|
390
|
+
* instead (for now only Tizen may be like this), in which case we
|
|
391
|
+
* prefer to generally rely on the position wanted by the player (this
|
|
392
|
+
* e.g. prevents issues where the RxPlayer logic and the device are
|
|
393
|
+
* seeking back and forth in a loop).
|
|
394
|
+
*
|
|
395
|
+
* - When a wanted position has been "forced" (@see forceWantedPosition).
|
|
396
|
+
* @returns {number}
|
|
397
|
+
*/
|
|
398
|
+
getWanted(): number;
|
|
399
|
+
/**
|
|
400
|
+
* Method to call if you want to overwrite the currently wanted position.
|
|
401
|
+
* @param {number} pos
|
|
402
|
+
*/
|
|
403
|
+
forceWantedPosition(pos: number): void;
|
|
295
404
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
405
|
+
* Returns `true` when the position wanted returned by `getWanted` and the
|
|
406
|
+
* actual position returned by `getPolled` may be different, meaning that
|
|
407
|
+
* we're currently not at the position we want to reach.
|
|
408
|
+
*
|
|
409
|
+
* This is a relatively rare situation which only happens when either the
|
|
410
|
+
* initial seek has not yet been performed. on specific targets where the
|
|
411
|
+
* seeking behavior is a little broken (@see getWanted) or when the wanted
|
|
412
|
+
* position has been forced (@see forceWantedPosition).
|
|
413
|
+
*
|
|
414
|
+
* In those situations, you might temporarily refrain from acting upon the
|
|
415
|
+
* actual current media position, as it may change soon.
|
|
416
|
+
*
|
|
417
|
+
* @returns {boolean}
|
|
298
418
|
*/
|
|
299
|
-
|
|
419
|
+
isAwaitingFuturePosition(): boolean;
|
|
300
420
|
}
|
|
301
421
|
/**
|
|
302
422
|
* Interface providing a generic and read-only version of a `PlaybackObserver`.
|