rx-player 4.0.0-dev.2023111400 → 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 +20 -60
- package/FILES.md +1 -1
- package/README.md +2 -33
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +20 -10
- package/dist/_esm5.processed/core/api/option_utils.d.ts +0 -2
- package/dist/_esm5.processed/core/api/option_utils.js +0 -6
- package/dist/_esm5.processed/core/api/public_api.d.ts +1 -2
- package/dist/_esm5.processed/core/api/public_api.js +9 -17
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +3 -14
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
- 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.js +1 -1
- 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.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +2 -2
- 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/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/parsers/texttracks/ttml/html/apply_extent.js +1 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
- package/dist/_esm5.processed/public_types.d.ts +2 -0
- package/dist/commonjs/compat/is_codec_supported.js +22 -1
- package/dist/commonjs/config.d.ts +2 -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/debug/buffer_graph.js +2 -6
- package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
- package/dist/commonjs/core/api/index.d.ts +1 -1
- package/dist/commonjs/core/api/option_utils.d.ts +2 -0
- package/dist/commonjs/core/api/option_utils.js +2 -3
- 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.d.ts +9 -0
- package/dist/commonjs/core/api/public_api.js +41 -16
- package/dist/commonjs/core/api/utils.js +1 -1
- package/dist/commonjs/core/decrypt/get_media_keys.js +2 -6
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/commonjs/core/init/directfile_content_initializer.js +29 -8
- package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/commonjs/core/init/media_source_content_initializer.js +32 -20
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +17 -19
- 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/get_initial_time.d.ts +17 -3
- package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
- 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 +4 -4
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/commonjs/default_config.d.ts +12 -16
- package/dist/commonjs/default_config.js +21 -16
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/commonjs/manifest/adaptation.js +2 -1
- package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
- package/dist/commonjs/manifest/representation_index/static.js +2 -2
- package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
- package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
- package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/commonjs/public_types.d.ts +107 -36
- package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
- package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
- package/dist/commonjs/transports/dash/segment_loader.js +2 -1
- package/dist/commonjs/transports/dash/text_loader.js +2 -0
- package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
- package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
- package/dist/commonjs/transports/smooth/pipelines.js +4 -2
- package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
- package/dist/commonjs/transports/types.d.ts +12 -0
- package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
- package/dist/commonjs/utils/request/fetch.d.ts +6 -0
- package/dist/commonjs/utils/request/fetch.js +29 -8
- package/dist/commonjs/utils/request/xhr.d.ts +11 -5
- package/dist/commonjs/utils/request/xhr.js +29 -8
- package/dist/es2017/compat/is_codec_supported.js +22 -1
- package/dist/es2017/config.d.ts +2 -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/debug/buffer_graph.js +2 -6
- package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
- package/dist/es2017/core/api/index.d.ts +1 -1
- package/dist/es2017/core/api/option_utils.d.ts +2 -0
- package/dist/es2017/core/api/option_utils.js +2 -3
- 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.d.ts +9 -0
- package/dist/es2017/core/api/public_api.js +40 -15
- package/dist/es2017/core/api/utils.js +1 -1
- package/dist/es2017/core/decrypt/get_media_keys.js +2 -6
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/es2017/core/init/directfile_content_initializer.js +31 -8
- package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/es2017/core/init/media_source_content_initializer.js +34 -22
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +17 -17
- 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/get_initial_time.d.ts +17 -3
- package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
- 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 +4 -4
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/es2017/default_config.d.ts +12 -16
- package/dist/es2017/default_config.js +21 -16
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/es2017/manifest/adaptation.js +2 -1
- package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
- package/dist/es2017/manifest/representation_index/static.js +2 -2
- package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/es2017/public_types.d.ts +107 -36
- package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
- package/dist/es2017/transports/dash/manifest_parser.js +3 -0
- package/dist/es2017/transports/dash/segment_loader.js +1 -0
- package/dist/es2017/transports/dash/text_loader.js +2 -0
- package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
- package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
- package/dist/es2017/transports/smooth/pipelines.js +2 -0
- package/dist/es2017/transports/smooth/segment_loader.js +1 -0
- package/dist/es2017/transports/types.d.ts +12 -0
- package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
- package/dist/es2017/utils/request/fetch.d.ts +6 -0
- package/dist/es2017/utils/request/fetch.js +29 -8
- package/dist/es2017/utils/request/xhr.d.ts +11 -5
- package/dist/es2017/utils/request/xhr.js +30 -9
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +1335 -812
- package/dist/rx-player.min.js +1 -1
- package/package.json +7 -4
- package/scripts/canal-release.patch +78 -0
- package/scripts/make-dev-releases +65 -0
- package/scripts/update-version +7 -0
- package/sonar-project.properties +1 -1
- package/src/compat/is_codec_supported.ts +23 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +4 -21
- package/src/core/adaptive/network_analyzer.ts +3 -3
- package/src/core/api/debug/buffer_graph.ts +2 -5
- package/src/core/api/debug/modules/general_info.ts +15 -10
- package/src/core/api/index.ts +1 -0
- package/src/core/api/option_utils.ts +3 -3
- package/src/core/api/playback_observer.ts +327 -107
- package/src/core/api/public_api.ts +42 -14
- package/src/core/api/utils.ts +3 -1
- package/src/core/decrypt/get_media_keys.ts +2 -8
- package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
- package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
- package/src/core/fetchers/utils/schedule_request.ts +1 -1
- package/src/core/init/directfile_content_initializer.ts +31 -15
- package/src/core/init/media_source_content_initializer.ts +40 -27
- package/src/core/init/utils/content_time_boundaries_observer.ts +24 -23
- package/src/core/init/utils/create_stream_playback_observer.ts +19 -20
- package/src/core/init/utils/get_initial_time.ts +25 -12
- 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 +5 -4
- package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
- package/src/default_config.ts +22 -17
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
- package/src/manifest/adaptation.ts +2 -1
- package/src/manifest/representation_index/static.ts +2 -2
- package/src/manifest/representation_index/types.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
- package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
- package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
- package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
- package/src/parsers/manifest/dash/common/parse_representations.ts +9 -3
- package/src/parsers/manifest/local/representation_index.ts +3 -3
- package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
- package/src/parsers/manifest/smooth/representation_index.ts +23 -9
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +1 -1
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +3 -1
- package/src/public_types.ts +108 -36
- package/src/transports/dash/init_segment_loader.ts +5 -0
- package/src/transports/dash/manifest_parser.ts +6 -0
- package/src/transports/dash/segment_loader.ts +1 -0
- package/src/transports/dash/text_loader.ts +2 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -0
- package/src/transports/metaplaylist/pipelines.ts +4 -1
- package/src/transports/smooth/pipelines.ts +2 -0
- package/src/transports/smooth/segment_loader.ts +1 -0
- package/src/transports/types.ts +12 -0
- package/src/transports/utils/generate_manifest_loader.ts +3 -0
- package/src/utils/request/fetch.ts +35 -8
- package/src/utils/request/xhr.ts +45 -14
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
- package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
- package/src/typings/object-assign.d.ts +0 -48
package/dist/es2017/config.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ declare class ConfigHandler {
|
|
|
18
18
|
_config: {
|
|
19
19
|
DEFAULT_UNMUTED_VOLUME: number;
|
|
20
20
|
DEFAULT_REQUEST_TIMEOUT: number;
|
|
21
|
+
DEFAULT_CONNECTION_TIMEOUT: number;
|
|
21
22
|
DEFAULT_TEXT_TRACK_MODE: "native" | "html";
|
|
22
23
|
DEFAULT_ENABLE_FAST_SWITCHING: boolean;
|
|
23
24
|
DELTA_POSITION_AFTER_RELOAD: {
|
|
@@ -35,6 +36,7 @@ declare class ConfigHandler {
|
|
|
35
36
|
DEFAULT_MAX_BUFFER_BEHIND: number;
|
|
36
37
|
DEFAULT_MAX_VIDEO_BUFFER_SIZE: number;
|
|
37
38
|
MAXIMUM_MAX_BUFFER_AHEAD: Partial<Record<"audio" | "video" | "text", number>>;
|
|
39
|
+
MINIMUM_MAX_BUFFER_AHEAD: Partial<Record<"audio" | "video" | "image" | "text", number>>;
|
|
38
40
|
MAXIMUM_MAX_BUFFER_BEHIND: Partial<Record<"audio" | "video" | "text", number>>;
|
|
39
41
|
DEFAULT_BASE_BANDWIDTH: number;
|
|
40
42
|
INACTIVITY_DELAY: number;
|
|
@@ -45,7 +47,6 @@ declare class ConfigHandler {
|
|
|
45
47
|
LOW_LATENCY: number;
|
|
46
48
|
};
|
|
47
49
|
BUFFER_DISCONTINUITY_THRESHOLD: number;
|
|
48
|
-
FORCE_DISCONTINUITY_SEEK_DELAY: number;
|
|
49
50
|
BITRATE_REBUFFERING_RATIO: number;
|
|
50
51
|
BUFFER_GC_GAPS: {
|
|
51
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;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const BUFFER_WIDTH_IN_SECONDS =
|
|
1
|
+
const BUFFER_WIDTH_IN_SECONDS = 30 * 60;
|
|
2
2
|
const COLORS = [
|
|
3
3
|
"#2ab7ca",
|
|
4
4
|
"#fed766",
|
|
@@ -65,11 +65,7 @@ export default class SegmentBufferGraph {
|
|
|
65
65
|
let minimumPosition;
|
|
66
66
|
let maximumPosition;
|
|
67
67
|
if (maximumPoint - minimumPoint > BUFFER_WIDTH_IN_SECONDS) {
|
|
68
|
-
if (currentTime
|
|
69
|
-
minimumPosition = minimumPoint;
|
|
70
|
-
maximumPosition = maximumPoint;
|
|
71
|
-
}
|
|
72
|
-
else if (maximumPoint - currentTime < BUFFER_WIDTH_IN_SECONDS / 2) {
|
|
68
|
+
if (maximumPoint - currentTime < BUFFER_WIDTH_IN_SECONDS / 2) {
|
|
73
69
|
maximumPosition = maximumPoint;
|
|
74
70
|
minimumPosition = maximumPoint - BUFFER_WIDTH_IN_SECONDS;
|
|
75
71
|
}
|
|
@@ -141,23 +141,30 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
141
141
|
]);
|
|
142
142
|
adaptationsElt.appendChild(textAdaps);
|
|
143
143
|
}
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
144
|
+
const adaptations = instance.__priv_getCurrentAdaptation();
|
|
145
|
+
const videoBitratesStr = (_c = (_b = adaptations === null || adaptations === void 0 ? void 0 : adaptations.video) === null || _b === void 0 ? void 0 : _b.representations.map((r) => {
|
|
146
|
+
var _a;
|
|
147
|
+
return String((_a = r.bitrate) !== null && _a !== void 0 ? _a : "N/A") +
|
|
148
|
+
(r.isSupported ? "" : " U!") +
|
|
149
|
+
(r.decipherable !== false ? "" : " E!");
|
|
150
|
+
})) !== null && _c !== void 0 ? _c : [];
|
|
151
|
+
const audioBitratesStr = (_e = (_d = adaptations === null || adaptations === void 0 ? void 0 : adaptations.video) === null || _d === void 0 ? void 0 : _d.representations.map((r) => {
|
|
152
|
+
var _a;
|
|
153
|
+
return String((_a = r.bitrate) !== null && _a !== void 0 ? _a : "N/A") +
|
|
154
|
+
(r.isSupported ? "" : " U!") +
|
|
155
|
+
(r.decipherable !== false ? "" : " E!");
|
|
156
|
+
})) !== null && _e !== void 0 ? _e : [];
|
|
150
157
|
representationsElt.innerHTML = "";
|
|
151
|
-
if (
|
|
158
|
+
if (videoBitratesStr.length > 0) {
|
|
152
159
|
representationsElt.appendChild(createMetricTitle("vb"));
|
|
153
160
|
representationsElt.appendChild(createElement("span", {
|
|
154
|
-
textContent:
|
|
161
|
+
textContent: videoBitratesStr.join(" ") + " ",
|
|
155
162
|
}));
|
|
156
163
|
}
|
|
157
|
-
if (
|
|
164
|
+
if (audioBitratesStr.length > 0) {
|
|
158
165
|
representationsElt.appendChild(createMetricTitle("ab"));
|
|
159
166
|
representationsElt.appendChild(createElement("span", {
|
|
160
|
-
textContent:
|
|
167
|
+
textContent: audioBitratesStr.join(" ") + " ",
|
|
161
168
|
}));
|
|
162
169
|
}
|
|
163
170
|
}
|
|
@@ -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;
|
|
@@ -259,9 +259,8 @@ function parseLoadVideoOptions(options) {
|
|
|
259
259
|
"an \"html\" textTrackMode. It will be ignored.");
|
|
260
260
|
}
|
|
261
261
|
if (!isNullOrUndefined(options.startAt)) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
instanceof Date) {
|
|
262
|
+
if ("wallClockTime" in options.startAt
|
|
263
|
+
&& options.startAt.wallClockTime instanceof Date) {
|
|
265
264
|
const wallClockTime = options.startAt
|
|
266
265
|
.wallClockTime.getTime() / 1000;
|
|
267
266
|
startAt = objectAssign({}, options.startAt, { wallClockTime });
|
|
@@ -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`.
|