rx-player 4.0.0-dev.2023111400 → 4.0.0-dev.2023120600
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 +11 -227
- package/FILES.md +1 -1
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_text_track.d.ts +1 -3
- package/dist/_esm5.processed/compat/add_text_track.js +4 -7
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -7
- package/dist/_esm5.processed/compat/event_listeners.d.ts +2 -15
- package/dist/_esm5.processed/compat/event_listeners.js +2 -37
- package/dist/_esm5.processed/compat/index.d.ts +1 -3
- package/dist/_esm5.processed/compat/index.js +1 -3
- package/dist/_esm5.processed/config.d.ts +9 -21
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +0 -58
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +14 -54
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +2 -8
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +2 -11
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +13 -32
- 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 +12 -35
- package/dist/_esm5.processed/core/api/option_utils.js +41 -230
- package/dist/_esm5.processed/core/api/public_api.d.ts +91 -266
- package/dist/_esm5.processed/core/api/public_api.js +439 -805
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.d.ts +3 -2
- package/dist/_esm5.processed/core/{segment_buffers/implementations/image → api/track_management}/index.js +3 -2
- package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.d.ts → track_management/media_element_tracks_store.d.ts} +15 -75
- package/dist/_esm5.processed/core/api/{tracks_management/media_element_track_choice_manager.js → track_management/media_element_tracks_store.js} +74 -193
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +84 -0
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +158 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +406 -0
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +932 -0
- package/dist/_esm5.processed/core/api/utils.d.ts +1 -0
- package/dist/_esm5.processed/core/api/utils.js +28 -11
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +83 -71
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +6 -5
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +10 -72
- 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 +6 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +7 -26
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +3 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +16 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +1 -6
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +4 -41
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +1 -8
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -19
- package/dist/_esm5.processed/core/init/types.d.ts +5 -15
- 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/text/native/native_text_segment_buffer.d.ts +1 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +2 -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 +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +1 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +33 -0
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +49 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +0 -1
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +2 -16
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +0 -15
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +183 -93
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +39 -0
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +133 -0
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +27 -13
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -3
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +2 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +5 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +13 -12
- package/dist/_esm5.processed/core/stream/period/types.d.ts +5 -14
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +2 -4
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +10 -46
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +29 -23
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +11 -1
- package/dist/_esm5.processed/default_config.d.ts +35 -98
- package/dist/_esm5.processed/default_config.js +36 -113
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +1 -3
- package/dist/_esm5.processed/errors/custom_loader_error.js +1 -3
- package/dist/_esm5.processed/errors/media_error.js +2 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +0 -1
- package/dist/_esm5.processed/errors/network_error.js +0 -1
- package/dist/_esm5.processed/errors/request_error.d.ts +2 -3
- package/dist/_esm5.processed/errors/request_error.js +2 -5
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
- package/dist/_esm5.processed/features/features_object.js +0 -2
- package/dist/_esm5.processed/features/list/directfile.js +2 -5
- package/dist/_esm5.processed/features/list/index.d.ts +0 -2
- package/dist/_esm5.processed/features/list/index.js +0 -2
- package/dist/_esm5.processed/features/types.d.ts +3 -27
- package/dist/_esm5.processed/manifest/adaptation.d.ts +9 -11
- package/dist/_esm5.processed/manifest/adaptation.js +41 -30
- package/dist/_esm5.processed/manifest/index.d.ts +3 -4
- package/dist/_esm5.processed/manifest/manifest.d.ts +5 -54
- package/dist/_esm5.processed/manifest/manifest.js +5 -110
- package/dist/_esm5.processed/manifest/period.d.ts +4 -5
- package/dist/_esm5.processed/manifest/representation.d.ts +10 -5
- package/dist/_esm5.processed/manifest/representation.js +15 -5
- package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/representation_index/static.d.ts +2 -0
- package/dist/_esm5.processed/manifest/representation_index/static.js +6 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +42 -21
- package/dist/_esm5.processed/manifest/types.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +17 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +26 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +6 -0
- 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 +1 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +3 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +0 -2
- 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 +0 -2
- 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 +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +10 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +18 -2
- 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 +3 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +12 -3
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +11 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +0 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +11 -17
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +21 -83
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +53 -125
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +119 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +159 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +3 -6
- 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_extent.js +1 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
- package/dist/_esm5.processed/public_types.d.ts +396 -308
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +5 -4
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +5 -4
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
- package/dist/_esm5.processed/transports/dash/pipelines.js +1 -4
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +26 -20
- package/dist/_esm5.processed/transports/dash/segment_parser.js +19 -24
- package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
- package/dist/_esm5.processed/transports/dash/text_parser.js +28 -33
- package/dist/_esm5.processed/transports/local/pipelines.js +1 -10
- 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 +34 -52
- package/dist/_esm5.processed/{utils/list_to_map.d.ts → transports/smooth/is_mp4_embedded_track.d.ts} +5 -5
- package/dist/_esm5.processed/{features/list/image_buffer.d.ts → transports/smooth/is_mp4_embedded_track.js} +7 -6
- package/dist/_esm5.processed/transports/smooth/pipelines.js +33 -190
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +28 -22
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +1 -26
- package/dist/_esm5.processed/transports/smooth/utils.js +1 -55
- package/dist/_esm5.processed/transports/types.d.ts +94 -89
- 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 +5 -7
- package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +8 -12
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +19 -21
- package/dist/_esm5.processed/utils/array_includes.d.ts +2 -1
- package/dist/_esm5.processed/utils/array_includes.js +30 -28
- package/dist/_esm5.processed/utils/request/xhr.js +5 -5
- package/dist/commonjs/compat/is_codec_supported.js +22 -1
- package/dist/commonjs/config.d.ts +1 -0
- 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/option_utils.d.ts +2 -0
- package/dist/commonjs/core/api/option_utils.js +2 -3
- package/dist/commonjs/core/api/public_api.d.ts +9 -0
- package/dist/commonjs/core/api/public_api.js +34 -9
- 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 +24 -7
- package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/commonjs/core/init/media_source_content_initializer.js +4 -6
- 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 +16 -17
- 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/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/commonjs/default_config.d.ts +5 -0
- package/dist/commonjs/default_config.js +5 -0
- 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/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/public_types.d.ts +78 -34
- 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 +1 -0
- 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/option_utils.d.ts +2 -0
- package/dist/es2017/core/api/option_utils.js +2 -3
- package/dist/es2017/core/api/public_api.d.ts +9 -0
- package/dist/es2017/core/api/public_api.js +33 -8
- 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 +24 -7
- package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/es2017/core/init/media_source_content_initializer.js +4 -6
- 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 +16 -15
- 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/stream/representation/utils/get_buffer_status.js +3 -3
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/es2017/default_config.d.ts +5 -0
- package/dist/es2017/default_config.js +5 -0
- 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/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/public_types.d.ts +78 -34
- 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/rx-player.js +723 -376
- package/dist/rx-player.min.js +1 -1
- package/package.json +3 -4
- package/scripts/update-version +2 -0
- package/sonar-project.properties +1 -1
- package/src/compat/is_codec_supported.ts +23 -1
- 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/option_utils.ts +3 -3
- package/src/core/api/public_api.ts +35 -7
- 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 +23 -7
- package/src/core/init/media_source_content_initializer.ts +13 -7
- package/src/core/init/utils/content_time_boundaries_observer.ts +23 -22
- package/src/core/init/utils/get_initial_time.ts +25 -12
- package/src/core/stream/representation/utils/get_buffer_status.ts +3 -3
- package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
- package/src/default_config.ts +5 -0
- 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/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/public_types.ts +79 -34
- 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/_esm5.processed/compat/fullscreen.d.ts +0 -32
- package/dist/_esm5.processed/compat/fullscreen.js +0 -78
- package/dist/_esm5.processed/compat/is_offline.d.ts +0 -39
- package/dist/_esm5.processed/compat/is_offline.js +0 -43
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +0 -258
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +0 -989
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +0 -75
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +0 -133
- package/dist/_esm5.processed/features/list/bif_parser.d.ts +0 -23
- package/dist/_esm5.processed/features/list/bif_parser.js +0 -27
- package/dist/_esm5.processed/features/list/image_buffer.js +0 -25
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +0 -38
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +0 -129
- package/dist/_esm5.processed/utils/list_to_map.js +0 -28
- package/dist/_esm5.processed/utils/simple_set.d.ts +0 -51
- package/dist/_esm5.processed/utils/simple_set.js +0 -57
- package/dist/_esm5.processed/utils/uniq.d.ts +0 -36
- package/dist/_esm5.processed/utils/uniq.js +0 -43
- 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
|
@@ -46,13 +46,6 @@ export interface IABREstimate {
|
|
|
46
46
|
* If `undefined`, we do not currently know the bitrate for the current type.
|
|
47
47
|
*/
|
|
48
48
|
bitrate: undefined | number;
|
|
49
|
-
/**
|
|
50
|
-
* If `true`, the `representation` chosen in the current estimate object is
|
|
51
|
-
* linked to a choice chosen manually by the user.
|
|
52
|
-
*
|
|
53
|
-
* If `false`, this estimate is just due to the adaptative logic.
|
|
54
|
-
*/
|
|
55
|
-
manual: boolean;
|
|
56
49
|
/**
|
|
57
50
|
* The Representation considered as the most adapted to the current network
|
|
58
51
|
* and playback conditions.
|
|
@@ -243,50 +236,6 @@ export interface IRepresentationEstimatorArguments {
|
|
|
243
236
|
* Such contents have specific settings.
|
|
244
237
|
*/
|
|
245
238
|
lowLatencyMode: boolean;
|
|
246
|
-
/**
|
|
247
|
-
* Reference allowing to set manually choose a Representation:
|
|
248
|
-
*
|
|
249
|
-
* The highest-quality Representation with a bitrate lower-or-equal to that
|
|
250
|
-
* value will be chosen.
|
|
251
|
-
* If no Representation has bitrate lower or equal to that value, the
|
|
252
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
253
|
-
*
|
|
254
|
-
* If no Representation has a bitrate lower or equal to that value, the
|
|
255
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
256
|
-
*
|
|
257
|
-
* Set it to a negative value to enable "adaptative mode" instead:
|
|
258
|
-
* `getEstimateReference` will choose the best Representation based on the
|
|
259
|
-
* current network and playback conditions.
|
|
260
|
-
*/
|
|
261
|
-
manualBitrate: IReadOnlySharedReference<number>;
|
|
262
|
-
/**
|
|
263
|
-
* Set a bitrate floor (the minimum reachable bitrate) for adaptative
|
|
264
|
-
* streaming.
|
|
265
|
-
*
|
|
266
|
-
* When `getEstimateReference` is choosing a `Representation` in
|
|
267
|
-
* adaptive mode (e.g. no Representation has been manually chosen through
|
|
268
|
-
* the `manualBitrate` reference), it will never choose a Representation
|
|
269
|
-
* having a bitrate inferior to that value, with a notable exception:
|
|
270
|
-
* If no Representation has a bitrate superior or equal to that value, the
|
|
271
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
272
|
-
*
|
|
273
|
-
* You can set it to `0` to disable any effect of that option.
|
|
274
|
-
*/
|
|
275
|
-
minAutoBitrate: IReadOnlySharedReference<number>;
|
|
276
|
-
/**
|
|
277
|
-
* Set a bitrate ceil (the maximum reachable bitrate) for adaptative
|
|
278
|
-
* streaming.
|
|
279
|
-
*
|
|
280
|
-
* When `getEstimateReference` is choosing a `Representation` in
|
|
281
|
-
* adaptive mode (e.g. no Representation has been manually chosen through
|
|
282
|
-
* the `manualBitrate` reference), it will never choose a Representation
|
|
283
|
-
* having a bitrate superior to that value, with a notable exception:
|
|
284
|
-
* If no Representation has a bitrate lower or equal to that value, the
|
|
285
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
286
|
-
*
|
|
287
|
-
* You can set it to `Infinity` to disable any effect of that option.
|
|
288
|
-
*/
|
|
289
|
-
maxAutoBitrate: IReadOnlySharedReference<number>;
|
|
290
239
|
/** The list of Representations `getEstimateReference` can choose from. */
|
|
291
240
|
representations: IReadOnlySharedReference<Representation[]>;
|
|
292
241
|
/** Context for the list of Representations to choose. */
|
|
@@ -343,12 +292,6 @@ export interface IAdaptiveRepresentationSelectorArguments {
|
|
|
343
292
|
* Set it to `true` if you're playing such content.
|
|
344
293
|
*/
|
|
345
294
|
lowLatencyMode: boolean;
|
|
346
|
-
/** Minimum bitrate chosen when in adaptive mode, per type (0 by default) */
|
|
347
|
-
minAutoBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
348
|
-
/** Maximum bitrate chosen when in adaptive mode, per type (0 by default) */
|
|
349
|
-
maxAutoBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
350
|
-
/** Manually forced bitrate set for a given type (`-1` for adaptive mode) */
|
|
351
|
-
manualBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
352
295
|
/** Allows to filter which Representations can be choosen. */
|
|
353
296
|
throttlers: IRepresentationEstimatorThrottlers;
|
|
354
297
|
}
|
|
@@ -358,6 +301,5 @@ export interface IAdaptiveRepresentationSelectorArguments {
|
|
|
358
301
|
*/
|
|
359
302
|
export interface IRepresentationEstimatorThrottlers {
|
|
360
303
|
limitWidth: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
361
|
-
throttle: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
362
304
|
throttleBitrate: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
363
305
|
}
|
|
@@ -30,12 +30,6 @@ 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
32
|
// Create default shared references
|
|
33
|
-
var manualBitrateDefaultRef = new SharedReference(-1);
|
|
34
|
-
manualBitrateDefaultRef.finish();
|
|
35
|
-
var minAutoBitrateDefaultRef = new SharedReference(0);
|
|
36
|
-
minAutoBitrateDefaultRef.finish();
|
|
37
|
-
var maxAutoBitrateDefaultRef = new SharedReference(Infinity);
|
|
38
|
-
maxAutoBitrateDefaultRef.finish();
|
|
39
33
|
var limitWidthDefaultRef = new SharedReference(undefined);
|
|
40
34
|
limitWidthDefaultRef.finish();
|
|
41
35
|
var throttleBitrateDefaultRef = new SharedReference(Infinity);
|
|
@@ -54,7 +48,7 @@ export default function createAdaptiveRepresentationSelector(options) {
|
|
|
54
48
|
* One per active media type.
|
|
55
49
|
*/
|
|
56
50
|
var bandwidthEstimators = {};
|
|
57
|
-
var
|
|
51
|
+
var initialBitrates = options.initialBitrates, throttlers = options.throttlers, lowLatencyMode = options.lowLatencyMode;
|
|
58
52
|
/**
|
|
59
53
|
* Returns Object emitting Representation estimates as well as callbacks
|
|
60
54
|
* allowing to helping it produce them.
|
|
@@ -68,18 +62,15 @@ export default function createAdaptiveRepresentationSelector(options) {
|
|
|
68
62
|
* @returns {Array.<Object>}
|
|
69
63
|
*/
|
|
70
64
|
return function getEstimates(context, currentRepresentation, representations, playbackObserver, stopAllEstimates) {
|
|
71
|
-
var _a, _b, _c
|
|
65
|
+
var _a, _b, _c;
|
|
72
66
|
var type = context.adaptation.type;
|
|
73
67
|
var bandwidthEstimator = _getBandwidthEstimator(type);
|
|
74
|
-
var
|
|
75
|
-
var minAutoBitrate = (_b = minAutoBitrates[type]) !== null && _b !== void 0 ? _b : minAutoBitrateDefaultRef;
|
|
76
|
-
var maxAutoBitrate = (_c = maxAutoBitrates[type]) !== null && _c !== void 0 ? _c : maxAutoBitrateDefaultRef;
|
|
77
|
-
var initialBitrate = (_d = initialBitrates[type]) !== null && _d !== void 0 ? _d : 0;
|
|
68
|
+
var initialBitrate = (_a = initialBitrates[type]) !== null && _a !== void 0 ? _a : 0;
|
|
78
69
|
var filters = {
|
|
79
|
-
limitWidth: (
|
|
80
|
-
throttleBitrate: (
|
|
70
|
+
limitWidth: (_b = throttlers.limitWidth[type]) !== null && _b !== void 0 ? _b : limitWidthDefaultRef,
|
|
71
|
+
throttleBitrate: (_c = throttlers.throttleBitrate[type]) !== null && _c !== void 0 ? _c : throttleBitrateDefaultRef,
|
|
81
72
|
};
|
|
82
|
-
return getEstimateReference({ bandwidthEstimator: bandwidthEstimator, context: context, currentRepresentation: currentRepresentation, filters: filters, initialBitrate: initialBitrate,
|
|
73
|
+
return getEstimateReference({ bandwidthEstimator: bandwidthEstimator, context: context, currentRepresentation: currentRepresentation, filters: filters, initialBitrate: initialBitrate, playbackObserver: playbackObserver, representations: representations, lowLatencyMode: lowLatencyMode }, stopAllEstimates);
|
|
83
74
|
};
|
|
84
75
|
/**
|
|
85
76
|
* Returns interface allowing to estimate network throughtput for a given type.
|
|
@@ -117,7 +108,7 @@ export default function createAdaptiveRepresentationSelector(options) {
|
|
|
117
108
|
* @returns {Array.<Object>}
|
|
118
109
|
*/
|
|
119
110
|
function getEstimateReference(_a, stopAllEstimates) {
|
|
120
|
-
var bandwidthEstimator = _a.bandwidthEstimator, context = _a.context, currentRepresentation = _a.currentRepresentation, filters = _a.filters, initialBitrate = _a.initialBitrate, lowLatencyMode = _a.lowLatencyMode,
|
|
111
|
+
var bandwidthEstimator = _a.bandwidthEstimator, context = _a.context, currentRepresentation = _a.currentRepresentation, filters = _a.filters, initialBitrate = _a.initialBitrate, lowLatencyMode = _a.lowLatencyMode, playbackObserver = _a.playbackObserver, representationsRef = _a.representations;
|
|
121
112
|
var scoreCalculator = new RepresentationScoreCalculator();
|
|
122
113
|
var networkAnalyzer = new NetworkAnalyzer(initialBitrate !== null && initialBitrate !== void 0 ? initialBitrate : 0, lowLatencyMode);
|
|
123
114
|
var requestsStore = new PendingRequestsStore();
|
|
@@ -145,21 +136,10 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
145
136
|
representationsRef.onUpdate(restartEstimatesProductionFromCurrentConditions, { clearSignal: stopAllEstimates });
|
|
146
137
|
return { estimates: estimateRef, callbacks: callbacks };
|
|
147
138
|
function createEstimateReference(representations, innerCancellationSignal) {
|
|
148
|
-
if (representations.length
|
|
149
|
-
// No Representation given, return `null` as documented
|
|
150
|
-
return new SharedReference({
|
|
151
|
-
representation: null,
|
|
152
|
-
bitrate: undefined,
|
|
153
|
-
knownStableBitrate: undefined,
|
|
154
|
-
manual: false,
|
|
155
|
-
urgent: true,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
if (representations.length === 1) {
|
|
139
|
+
if (representations.length <= 1) {
|
|
159
140
|
// There's only a single Representation. Just choose it.
|
|
160
141
|
return new SharedReference({ bitrate: undefined,
|
|
161
142
|
representation: representations[0],
|
|
162
|
-
manual: false,
|
|
163
143
|
urgent: true,
|
|
164
144
|
knownStableBitrate: undefined });
|
|
165
145
|
}
|
|
@@ -205,9 +185,6 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
205
185
|
innerCancellationSignal.register(function () {
|
|
206
186
|
onAddedSegment = noop;
|
|
207
187
|
});
|
|
208
|
-
manualBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
209
|
-
minAutoBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
210
|
-
maxAutoBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
211
188
|
filters.limitWidth.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
212
189
|
filters.limitWidth.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
213
190
|
return innerEstimateRef;
|
|
@@ -216,24 +193,10 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
216
193
|
}
|
|
217
194
|
/** Returns the actual estimate based on all methods and algorithm available. */
|
|
218
195
|
function getCurrentEstimate() {
|
|
219
|
-
var manualBitrateVal = manualBitrate.getValue();
|
|
220
|
-
if (manualBitrateVal >= 0) {
|
|
221
|
-
// A manual bitrate has been set. Just choose Representation according to it.
|
|
222
|
-
var manualRepresentation = selectOptimalRepresentation(representations, manualBitrateVal, 0, Infinity);
|
|
223
|
-
return {
|
|
224
|
-
representation: manualRepresentation,
|
|
225
|
-
bitrate: undefined,
|
|
226
|
-
knownStableBitrate: undefined,
|
|
227
|
-
manual: true,
|
|
228
|
-
urgent: true, // a manual bitrate switch should happen immediately
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
196
|
var bufferGap = lastPlaybackObservation.bufferGap, position = lastPlaybackObservation.position, maximumPosition = lastPlaybackObservation.maximumPosition;
|
|
232
197
|
var widthLimit = filters.limitWidth.getValue();
|
|
233
198
|
var bitrateThrottle = filters.throttleBitrate.getValue();
|
|
234
199
|
var currentRepresentationVal = currentRepresentation.getValue();
|
|
235
|
-
var minAutoBitrateVal = minAutoBitrate.getValue();
|
|
236
|
-
var maxAutoBitrateVal = maxAutoBitrate.getValue();
|
|
237
200
|
var filteredReps = getFilteredRepresentations(representations, widthLimit, bitrateThrottle);
|
|
238
201
|
var requests = requestsStore.getRequests();
|
|
239
202
|
var _a = networkAnalyzer
|
|
@@ -259,7 +222,7 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
259
222
|
* This is a safe enough choice but might be lower than what the user
|
|
260
223
|
* could actually profit from.
|
|
261
224
|
*/
|
|
262
|
-
var chosenRepFromBandwidth = selectOptimalRepresentation(filteredReps, bitrateChosen
|
|
225
|
+
var chosenRepFromBandwidth = selectOptimalRepresentation(filteredReps, bitrateChosen);
|
|
263
226
|
/**
|
|
264
227
|
* Current optimal Representation's bandwidth choosen by a buffer-based
|
|
265
228
|
* adaptive algorithm.
|
|
@@ -280,7 +243,7 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
280
243
|
if (allowBufferBasedEstimates &&
|
|
281
244
|
currentBufferBasedEstimate !== undefined &&
|
|
282
245
|
currentBufferBasedEstimate > currentBestBitrate) {
|
|
283
|
-
chosenRepFromBufferSize = selectOptimalRepresentation(filteredReps, currentBufferBasedEstimate
|
|
246
|
+
chosenRepFromBufferSize = selectOptimalRepresentation(filteredReps, currentBufferBasedEstimate);
|
|
284
247
|
currentBestBitrate = chosenRepFromBufferSize.bitrate;
|
|
285
248
|
}
|
|
286
249
|
/**
|
|
@@ -313,30 +276,27 @@ function getEstimateReference(_a, stopAllEstimates) {
|
|
|
313
276
|
return { bitrate: bandwidthEstimate,
|
|
314
277
|
representation: chosenRepFromGuessMode,
|
|
315
278
|
urgent: currentRepresentationVal === null ||
|
|
316
|
-
chosenRepFromGuessMode.bitrate < currentRepresentationVal.bitrate,
|
|
317
|
-
manual: false, knownStableBitrate: knownStableBitrate };
|
|
279
|
+
chosenRepFromGuessMode.bitrate < currentRepresentationVal.bitrate, knownStableBitrate: knownStableBitrate };
|
|
318
280
|
}
|
|
319
281
|
else if (chosenRepFromBufferSize !== null) {
|
|
320
282
|
log.debug("ABR: Choosing representation with buffer-based estimation.", chosenRepFromBufferSize.bitrate, chosenRepFromBufferSize.id);
|
|
321
283
|
prevEstimate.update(chosenRepFromBufferSize, bandwidthEstimate, 0 /* ABRAlgorithmType.BufferBased */);
|
|
322
284
|
return { bitrate: bandwidthEstimate,
|
|
323
285
|
representation: chosenRepFromBufferSize,
|
|
324
|
-
urgent: networkAnalyzer.isUrgent(chosenRepFromBufferSize.bitrate, currentRepresentationVal, requests, lastPlaybackObservation),
|
|
325
|
-
manual: false, knownStableBitrate: knownStableBitrate };
|
|
286
|
+
urgent: networkAnalyzer.isUrgent(chosenRepFromBufferSize.bitrate, currentRepresentationVal, requests, lastPlaybackObservation), knownStableBitrate: knownStableBitrate };
|
|
326
287
|
}
|
|
327
288
|
else {
|
|
328
289
|
log.debug("ABR: Choosing representation with bandwidth estimation.", chosenRepFromBandwidth.bitrate, chosenRepFromBandwidth.id);
|
|
329
290
|
prevEstimate.update(chosenRepFromBandwidth, bandwidthEstimate, 1 /* ABRAlgorithmType.BandwidthBased */);
|
|
330
291
|
return { bitrate: bandwidthEstimate,
|
|
331
292
|
representation: chosenRepFromBandwidth,
|
|
332
|
-
urgent: networkAnalyzer.isUrgent(chosenRepFromBandwidth.bitrate, currentRepresentationVal, requests, lastPlaybackObservation),
|
|
333
|
-
manual: false, knownStableBitrate: knownStableBitrate };
|
|
293
|
+
urgent: networkAnalyzer.isUrgent(chosenRepFromBandwidth.bitrate, currentRepresentationVal, requests, lastPlaybackObservation), knownStableBitrate: knownStableBitrate };
|
|
334
294
|
}
|
|
335
295
|
}
|
|
336
296
|
}
|
|
337
297
|
/**
|
|
338
298
|
* Stop previous estimate production (if one) and restart it considering new
|
|
339
|
-
* conditions (such as a
|
|
299
|
+
* conditions (such as a new list of Representations).
|
|
340
300
|
*/
|
|
341
301
|
function restartEstimatesProductionFromCurrentConditions() {
|
|
342
302
|
var representations = representationsRef.getValue();
|
|
@@ -20,14 +20,8 @@ import { Representation } from "../../../manifest";
|
|
|
20
20
|
* bitrates.
|
|
21
21
|
* @param {Array.<Representation>} representations - The representations array,
|
|
22
22
|
* sorted in bitrate ascending order.
|
|
23
|
-
* @param {Number}
|
|
23
|
+
* @param {Number} wantedBitrate - The optimal bitrate the Representation
|
|
24
24
|
* should have under the current condition.
|
|
25
|
-
* @param {Number} minBitrate - The minimum bitrate the chosen Representation
|
|
26
|
-
* should have. We will take the Representation with the maximum bitrate if none
|
|
27
|
-
* is found.
|
|
28
|
-
* @param {Number} maxBitrate - The maximum bitrate the chosen Representation
|
|
29
|
-
* should have. We will take the Representation with the minimum bitrate if none
|
|
30
|
-
* is found.
|
|
31
25
|
* @returns {Representation|undefined}
|
|
32
26
|
*/
|
|
33
|
-
export default function selectOptimalRepresentation(representations: Representation[],
|
|
27
|
+
export default function selectOptimalRepresentation(representations: Representation[], wantedBitrate: number): Representation;
|
|
@@ -20,20 +20,11 @@ import arrayFindIndex from "../../../utils/array_find_index";
|
|
|
20
20
|
* bitrates.
|
|
21
21
|
* @param {Array.<Representation>} representations - The representations array,
|
|
22
22
|
* sorted in bitrate ascending order.
|
|
23
|
-
* @param {Number}
|
|
23
|
+
* @param {Number} wantedBitrate - The optimal bitrate the Representation
|
|
24
24
|
* should have under the current condition.
|
|
25
|
-
* @param {Number} minBitrate - The minimum bitrate the chosen Representation
|
|
26
|
-
* should have. We will take the Representation with the maximum bitrate if none
|
|
27
|
-
* is found.
|
|
28
|
-
* @param {Number} maxBitrate - The maximum bitrate the chosen Representation
|
|
29
|
-
* should have. We will take the Representation with the minimum bitrate if none
|
|
30
|
-
* is found.
|
|
31
25
|
* @returns {Representation|undefined}
|
|
32
26
|
*/
|
|
33
|
-
export default function selectOptimalRepresentation(representations,
|
|
34
|
-
var wantedBitrate = optimalBitrate <= minBitrate ? minBitrate :
|
|
35
|
-
optimalBitrate >= maxBitrate ? maxBitrate :
|
|
36
|
-
optimalBitrate;
|
|
27
|
+
export default function selectOptimalRepresentation(representations, wantedBitrate) {
|
|
37
28
|
var firstIndexTooHigh = arrayFindIndex(representations, function (representation) { return representation.bitrate > wantedBitrate; });
|
|
38
29
|
if (firstIndexTooHigh === -1) {
|
|
39
30
|
return representations[representations.length - 1];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var BUFFER_WIDTH_IN_SECONDS =
|
|
1
|
+
var BUFFER_WIDTH_IN_SECONDS = 30 * 60;
|
|
2
2
|
var COLORS = [
|
|
3
3
|
"#2ab7ca",
|
|
4
4
|
"#fed766",
|
|
@@ -65,11 +65,7 @@ var SegmentBufferGraph = /** @class */ (function () {
|
|
|
65
65
|
var minimumPosition;
|
|
66
66
|
var 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
|
}
|
|
@@ -17,6 +17,7 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
17
17
|
representationsElt,
|
|
18
18
|
]);
|
|
19
19
|
function updateGeneralInfo() {
|
|
20
|
+
var _a, _b, _c, _d, _e;
|
|
20
21
|
var videoElement = instance.getVideoElement();
|
|
21
22
|
if (videoElement === null) {
|
|
22
23
|
// disposed player. Clean-up everything
|
|
@@ -28,7 +29,7 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
30
31
|
var currentTime = instance.getPosition();
|
|
31
|
-
var bufferGap = instance.
|
|
32
|
+
var bufferGap = instance.getCurrentBufferGap();
|
|
32
33
|
var bufferGapStr = bufferGap === Infinity ? "0" : bufferGap.toFixed(2);
|
|
33
34
|
var valuesLine1 = [
|
|
34
35
|
["ct", currentTime.toFixed(2)],
|
|
@@ -55,30 +56,6 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
55
56
|
if (mba !== Infinity) {
|
|
56
57
|
valuesLine2.push(["mba", String(mba)]);
|
|
57
58
|
}
|
|
58
|
-
var mia = instance.getMinAudioBitrate();
|
|
59
|
-
if (mia !== 0) {
|
|
60
|
-
valuesLine2.push(["mia", String(mia)]);
|
|
61
|
-
}
|
|
62
|
-
var miv = instance.getMinVideoBitrate();
|
|
63
|
-
if (miv !== 0) {
|
|
64
|
-
valuesLine2.push(["miv", String(miv)]);
|
|
65
|
-
}
|
|
66
|
-
var maa = instance.getMaxAudioBitrate();
|
|
67
|
-
if (maa !== Infinity) {
|
|
68
|
-
valuesLine2.push(["maa", String(maa)]);
|
|
69
|
-
}
|
|
70
|
-
var mav = instance.getMaxVideoBitrate();
|
|
71
|
-
if (mav !== Infinity) {
|
|
72
|
-
valuesLine2.push(["mav", String(mav)]);
|
|
73
|
-
}
|
|
74
|
-
var fab = instance.getManualAudioBitrate();
|
|
75
|
-
if (fab >= 0) {
|
|
76
|
-
valuesLine2.push(["fab", String(fab)]);
|
|
77
|
-
}
|
|
78
|
-
var fvb = instance.getManualVideoBitrate();
|
|
79
|
-
if (fvb >= 0) {
|
|
80
|
-
valuesLine2.push(["fvb", String(fvb)]);
|
|
81
|
-
}
|
|
82
59
|
var mbs = instance.getMaxVideoBufferSize();
|
|
83
60
|
if (mbs !== Infinity) {
|
|
84
61
|
valuesLine2.push(["mbs", String(mbs)]);
|
|
@@ -99,12 +76,12 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
99
76
|
valuesLine3.push(["er", "\"".concat(String(error), "\"")]);
|
|
100
77
|
}
|
|
101
78
|
generalInfoElt.innerHTML = "";
|
|
102
|
-
for (var _i = 0,
|
|
103
|
-
var valueSet =
|
|
79
|
+
for (var _i = 0, _f = [valuesLine1, valuesLine2, valuesLine3]; _i < _f.length; _i++) {
|
|
80
|
+
var valueSet = _f[_i];
|
|
104
81
|
if (valueSet.length > 0) {
|
|
105
82
|
var lineInfoElt = createElement("div");
|
|
106
|
-
for (var
|
|
107
|
-
var value = valueSet_1[
|
|
83
|
+
for (var _g = 0, valueSet_1 = valueSet; _g < valueSet_1.length; _g++) {
|
|
84
|
+
var value = valueSet_1[_g];
|
|
108
85
|
lineInfoElt.appendChild(createMetricTitle(value[0]));
|
|
109
86
|
lineInfoElt.appendChild(createElement("span", {
|
|
110
87
|
textContent: value[1] + " ",
|
|
@@ -114,7 +91,7 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
114
91
|
}
|
|
115
92
|
}
|
|
116
93
|
if (isExtendedMode(parentElt)) {
|
|
117
|
-
var url = instance.
|
|
94
|
+
var url = (_a = instance.getContentUrls()) === null || _a === void 0 ? void 0 : _a[0];
|
|
118
95
|
if (url !== undefined) {
|
|
119
96
|
var reducedUrl = url.length > 100 ?
|
|
120
97
|
url.substring(0, 99) + "…" :
|
|
@@ -175,8 +152,12 @@ export default function constructDebugGeneralInfo(instance, parentElt, cancelSig
|
|
|
175
152
|
]);
|
|
176
153
|
adaptationsElt.appendChild(textAdaps);
|
|
177
154
|
}
|
|
178
|
-
var videoBitrates = instance.
|
|
179
|
-
|
|
155
|
+
var videoBitrates = (_c = (_b = instance.getVideoTrack()) === null || _b === void 0 ? void 0 : _b.representations.map(function (r) {
|
|
156
|
+
return r.bitrate;
|
|
157
|
+
}).filter(function (bitrate) { return bitrate !== undefined; })) !== null && _c !== void 0 ? _c : [];
|
|
158
|
+
var audioBitrates = (_e = (_d = instance.getAudioTrack()) === null || _d === void 0 ? void 0 : _d.representations.map(function (r) {
|
|
159
|
+
return r.bitrate;
|
|
160
|
+
}).filter(function (bitrate) { return bitrate !== undefined; })) !== null && _e !== void 0 ? _e : [];
|
|
180
161
|
representationsElt.innerHTML = "";
|
|
181
162
|
if (videoBitrates.length > 0) {
|
|
182
163
|
representationsElt.appendChild(createMetricTitle("vb"));
|
|
@@ -67,9 +67,9 @@ export default function createSegmentBufferGraph(instance, bufferType, title, pa
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
loadingRangeRepInfoElt.innerHTML = "";
|
|
70
|
-
var rep = (_c = instance.
|
|
71
|
-
var adap = (_d = instance.
|
|
72
|
-
var manifest = instance.
|
|
70
|
+
var rep = (_c = instance.__priv_getCurrentRepresentations()) === null || _c === void 0 ? void 0 : _c[bufferType];
|
|
71
|
+
var adap = (_d = instance.__priv_getCurrentAdaptation()) === null || _d === void 0 ? void 0 : _d[bufferType];
|
|
72
|
+
var manifest = instance.__priv_getManifest();
|
|
73
73
|
if (manifest !== null && !isNullOrUndefined(rep) && !isNullOrUndefined(adap)) {
|
|
74
74
|
var period = manifest.getPeriodForTime(currentTime);
|
|
75
75
|
if (period !== undefined) {
|
|
@@ -22,7 +22,7 @@ export default function createSegmentBufferSizeGraph(instance, parentElt, cancel
|
|
|
22
22
|
clearInterval(intervalId);
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
var bufferGap = instance.
|
|
25
|
+
var bufferGap = instance.getCurrentBufferGap();
|
|
26
26
|
if (bufferGap === Infinity) {
|
|
27
27
|
bufferSizeGraph.pushBufferSize(0);
|
|
28
28
|
}
|
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
import { IAudioTrackPreference, IAudioTrackSwitchingMode, IConstructorOptions, IKeySystemOption, ILoadedManifestFormat, ILoadVideoOptions, IManifestLoader, INetworkConfigOption, IRepresentationFilter, ISegmentLoader, IServerSyncInfos, ITextTrackPreference, IVideoTrackPreference } from "../../public_types";
|
|
16
|
+
import { IAudioTrackSwitchingMode, IConstructorOptions, IKeySystemOption, ILoadedManifestFormat, ILoadVideoOptions, IManifestLoader, IRequestConfig, IRepresentationFilter, ISegmentLoader, IServerSyncInfos } from "../../public_types";
|
|
18
17
|
/** Value once parsed for the `startAt` option of the `loadVideo` method. */
|
|
19
18
|
export type IParsedStartAtOption = {
|
|
20
19
|
position: number;
|
|
@@ -27,20 +26,6 @@ export type IParsedStartAtOption = {
|
|
|
27
26
|
} | {
|
|
28
27
|
fromFirstPosition: number;
|
|
29
28
|
};
|
|
30
|
-
export interface IParsedTransportOptions {
|
|
31
|
-
aggressiveMode?: boolean | undefined;
|
|
32
|
-
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
33
|
-
lowLatencyMode: boolean;
|
|
34
|
-
manifestLoader?: IManifestLoader | undefined;
|
|
35
|
-
referenceDateTime?: number | undefined;
|
|
36
|
-
representationFilter?: IRepresentationFilter | undefined;
|
|
37
|
-
segmentLoader?: ISegmentLoader | undefined;
|
|
38
|
-
serverSyncInfos?: IServerSyncInfos | undefined;
|
|
39
|
-
manifestUpdateUrl?: string | undefined;
|
|
40
|
-
supplementaryImageTracks?: ISupplementaryImageTrack[] | undefined;
|
|
41
|
-
supplementaryTextTracks?: ISupplementaryTextTrack[] | undefined;
|
|
42
|
-
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
43
|
-
}
|
|
44
29
|
/** Options of the RxPlayer's constructor once parsed. */
|
|
45
30
|
export interface IParsedConstructorOptions {
|
|
46
31
|
maxBufferAhead: number;
|
|
@@ -48,19 +33,9 @@ export interface IParsedConstructorOptions {
|
|
|
48
33
|
wantedBufferAhead: number;
|
|
49
34
|
maxVideoBufferSize: number;
|
|
50
35
|
limitVideoWidth: boolean;
|
|
51
|
-
throttleWhenHidden: boolean;
|
|
52
36
|
throttleVideoBitrateWhenHidden: boolean;
|
|
53
|
-
preferredAudioTracks: IAudioTrackPreference[];
|
|
54
|
-
preferredTextTracks: ITextTrackPreference[];
|
|
55
|
-
preferredVideoTracks: IVideoTrackPreference[];
|
|
56
37
|
videoElement: HTMLMediaElement;
|
|
57
|
-
|
|
58
|
-
initialAudioBitrate: number;
|
|
59
|
-
minAudioBitrate: number;
|
|
60
|
-
minVideoBitrate: number;
|
|
61
|
-
maxAudioBitrate: number;
|
|
62
|
-
maxVideoBitrate: number;
|
|
63
|
-
stopAtEnd: boolean;
|
|
38
|
+
baseBandwidth: number;
|
|
64
39
|
}
|
|
65
40
|
/**
|
|
66
41
|
* Base type which the types for the parsed options of the RxPlayer's
|
|
@@ -74,15 +49,19 @@ interface IParsedLoadVideoOptionsBase {
|
|
|
74
49
|
keySystems: IKeySystemOption[];
|
|
75
50
|
lowLatencyMode: boolean;
|
|
76
51
|
minimumManifestUpdateInterval: number;
|
|
77
|
-
|
|
78
|
-
transportOptions: IParsedTransportOptions;
|
|
79
|
-
defaultAudioTrack: IAudioTrackPreference | null | undefined;
|
|
80
|
-
defaultTextTrack: ITextTrackPreference | null | undefined;
|
|
52
|
+
requestConfig: IRequestConfig;
|
|
81
53
|
startAt: IParsedStartAtOption | undefined;
|
|
82
|
-
manualBitrateSwitchingMode: "seamless" | "direct";
|
|
83
54
|
enableFastSwitching: boolean;
|
|
84
|
-
|
|
55
|
+
defaultAudioTrackSwitchingMode: IAudioTrackSwitchingMode | undefined;
|
|
85
56
|
onCodecSwitch: "continue" | "reload";
|
|
57
|
+
checkMediaSegmentIntegrity?: boolean | undefined;
|
|
58
|
+
manifestLoader?: IManifestLoader | undefined;
|
|
59
|
+
referenceDateTime?: number | undefined;
|
|
60
|
+
representationFilter?: IRepresentationFilter | undefined;
|
|
61
|
+
segmentLoader?: ISegmentLoader | undefined;
|
|
62
|
+
serverSyncInfos?: IServerSyncInfos | undefined;
|
|
63
|
+
manifestUpdateUrl?: string | undefined;
|
|
64
|
+
__priv_patchLastSegmentInSidx?: boolean | undefined;
|
|
86
65
|
}
|
|
87
66
|
/**
|
|
88
67
|
* Options of the RxPlayer's `loadVideo` method once parsed when a "native"
|
|
@@ -90,7 +69,6 @@ interface IParsedLoadVideoOptionsBase {
|
|
|
90
69
|
*/
|
|
91
70
|
interface IParsedLoadVideoOptionsNative extends IParsedLoadVideoOptionsBase {
|
|
92
71
|
textTrackMode: "native";
|
|
93
|
-
hideNativeSubtitle: boolean;
|
|
94
72
|
}
|
|
95
73
|
/**
|
|
96
74
|
* Options of the RxPlayer's `loadVideo` method once parsed when an "html"
|
|
@@ -137,7 +115,6 @@ declare function checkReloadOptions(options?: {
|
|
|
137
115
|
*
|
|
138
116
|
* Throws if any mandatory option is not set.
|
|
139
117
|
* @param {Object|undefined} options
|
|
140
|
-
* @param {Object} ctx - The player context, needed for some default values.
|
|
141
118
|
* @returns {Object}
|
|
142
119
|
*/
|
|
143
120
|
declare function parseLoadVideoOptions(options: ILoadVideoOptions): IParsedLoadVideoOptions;
|