rx-player 4.0.0-dev.2023120600 → 4.0.0-dev.2023121900
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +178 -2
- package/README.md +2 -33
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_text_track.d.ts +3 -1
- package/dist/_esm5.processed/compat/add_text_track.js +7 -4
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +7 -0
- package/dist/_esm5.processed/compat/event_listeners.d.ts +15 -2
- package/dist/_esm5.processed/compat/event_listeners.js +37 -2
- package/dist/_esm5.processed/compat/fullscreen.d.ts +32 -0
- package/dist/_esm5.processed/compat/fullscreen.js +78 -0
- package/dist/_esm5.processed/compat/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/index.js +3 -1
- package/dist/_esm5.processed/compat/is_offline.d.ts +39 -0
- package/dist/_esm5.processed/compat/is_offline.js +43 -0
- package/dist/_esm5.processed/config.d.ts +21 -9
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.d.ts +58 -0
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +54 -14
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.d.ts +8 -2
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +11 -2
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +46 -17
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +3 -3
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +1 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +35 -14
- package/dist/_esm5.processed/core/api/option_utils.js +230 -47
- package/dist/_esm5.processed/core/api/public_api.d.ts +266 -92
- package/dist/_esm5.processed/core/api/public_api.js +802 -444
- package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.d.ts → tracks_management/media_element_track_choice_manager.d.ts} +75 -15
- package/dist/_esm5.processed/core/api/{track_management/media_element_tracks_store.js → tracks_management/media_element_track_choice_manager.js} +193 -74
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.d.ts +258 -0
- package/dist/_esm5.processed/core/api/tracks_management/track_choice_manager.js +989 -0
- package/dist/_esm5.processed/core/api/utils.d.ts +0 -1
- package/dist/_esm5.processed/core/api/utils.js +11 -28
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +3 -3
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +71 -83
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +5 -6
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +72 -10
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +4 -4
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +4 -6
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.d.ts +3 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +26 -7
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +9 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +9 -16
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +3 -1
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.d.ts +6 -1
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +41 -4
- package/dist/_esm5.processed/core/init/media_source_content_initializer.d.ts +8 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +5 -2
- package/dist/_esm5.processed/core/init/types.d.ts +15 -5
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.d.ts +75 -0
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +133 -0
- package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.d.ts +2 -3
- package/dist/_esm5.processed/core/{api/track_management → segment_buffers/implementations/image}/index.js +2 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/index.js +1 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +2 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +0 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.d.ts +1 -0
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +16 -2
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -0
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +93 -183
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +13 -27
- package/dist/_esm5.processed/core/stream/index.d.ts +3 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +0 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +7 -5
- package/dist/_esm5.processed/core/stream/period/period_stream.js +12 -13
- package/dist/_esm5.processed/core/stream/period/types.d.ts +14 -5
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +46 -10
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +23 -29
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +1 -11
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/_esm5.processed/default_config.d.ts +98 -35
- package/dist/_esm5.processed/default_config.js +113 -36
- package/dist/_esm5.processed/errors/custom_loader_error.d.ts +3 -1
- package/dist/_esm5.processed/errors/custom_loader_error.js +3 -1
- package/dist/_esm5.processed/errors/media_error.js +2 -2
- package/dist/_esm5.processed/errors/network_error.d.ts +1 -0
- package/dist/_esm5.processed/errors/network_error.js +1 -0
- package/dist/_esm5.processed/errors/request_error.d.ts +3 -2
- package/dist/_esm5.processed/errors/request_error.js +5 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -3
- package/dist/_esm5.processed/features/features_object.js +2 -0
- package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.js → features/list/bif_parser.d.ts} +6 -7
- package/dist/_esm5.processed/features/list/bif_parser.js +27 -0
- package/dist/_esm5.processed/features/list/directfile.js +5 -2
- package/dist/_esm5.processed/features/list/image_buffer.d.ts +23 -0
- package/dist/_esm5.processed/features/list/image_buffer.js +25 -0
- package/dist/_esm5.processed/features/list/index.d.ts +2 -0
- package/dist/_esm5.processed/features/list/index.js +2 -0
- package/dist/_esm5.processed/features/types.d.ts +27 -3
- package/dist/_esm5.processed/manifest/adaptation.d.ts +11 -9
- package/dist/_esm5.processed/manifest/adaptation.js +30 -41
- package/dist/_esm5.processed/manifest/index.d.ts +4 -3
- package/dist/_esm5.processed/manifest/manifest.d.ts +54 -5
- package/dist/_esm5.processed/manifest/manifest.js +110 -5
- package/dist/_esm5.processed/manifest/period.d.ts +5 -4
- package/dist/_esm5.processed/manifest/representation.d.ts +5 -10
- package/dist/_esm5.processed/manifest/representation.js +5 -15
- package/dist/_esm5.processed/manifest/representation_index/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/representation_index/static.d.ts +0 -2
- package/dist/_esm5.processed/manifest/representation_index/static.js +0 -6
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +21 -42
- package/dist/_esm5.processed/manifest/types.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +31 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +19 -26
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +1 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +6 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +8 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +0 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +6 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +5 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +6 -10
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +2 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.d.ts +1 -10
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +2 -18
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.d.ts +0 -2
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +0 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +6 -6
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.d.ts +3 -12
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +2 -11
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +17 -11
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +83 -21
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +125 -53
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.d.ts +6 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/_esm5.processed/public_types.d.ts +310 -396
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.d.ts +4 -5
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +4 -5
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +4 -4
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +38 -0
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +129 -0
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +3 -2
- package/dist/_esm5.processed/transports/dash/pipelines.js +4 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +20 -26
- package/dist/_esm5.processed/transports/dash/segment_parser.js +24 -19
- package/dist/_esm5.processed/transports/dash/text_loader.js +5 -5
- package/dist/_esm5.processed/transports/dash/text_parser.js +33 -28
- package/dist/_esm5.processed/transports/local/pipelines.js +10 -1
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/local/segment_parser.js +10 -10
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.js +23 -23
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +52 -34
- package/dist/_esm5.processed/transports/smooth/pipelines.js +190 -33
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +22 -28
- package/dist/_esm5.processed/transports/smooth/utils.d.ts +26 -1
- package/dist/_esm5.processed/transports/smooth/utils.js +55 -1
- package/dist/_esm5.processed/transports/types.d.ts +89 -94
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.d.ts +3 -3
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +7 -5
- package/dist/_esm5.processed/transports/utils/parse_text_track.d.ts +12 -8
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +21 -19
- package/dist/_esm5.processed/utils/array_includes.d.ts +1 -2
- package/dist/_esm5.processed/utils/array_includes.js +28 -30
- package/dist/_esm5.processed/{transports/smooth/is_mp4_embedded_track.d.ts → utils/list_to_map.d.ts} +5 -5
- package/dist/_esm5.processed/utils/list_to_map.js +28 -0
- package/dist/_esm5.processed/utils/request/xhr.js +5 -5
- package/dist/_esm5.processed/utils/simple_set.d.ts +51 -0
- package/dist/_esm5.processed/utils/simple_set.js +57 -0
- package/dist/_esm5.processed/utils/uniq.d.ts +36 -0
- package/dist/_esm5.processed/utils/uniq.js +43 -0
- package/dist/commonjs/config.d.ts +1 -1
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/commonjs/core/adaptive/network_analyzer.js +3 -3
- package/dist/commonjs/core/api/index.d.ts +1 -1
- package/dist/commonjs/core/api/playback_observer.d.ts +128 -8
- package/dist/commonjs/core/api/playback_observer.js +217 -64
- package/dist/commonjs/core/api/public_api.js +9 -9
- package/dist/commonjs/core/api/utils.js +1 -1
- package/dist/commonjs/core/decrypt/get_media_keys.js +2 -6
- package/dist/commonjs/core/init/directfile_content_initializer.js +5 -1
- package/dist/commonjs/core/init/media_source_content_initializer.js +28 -14
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +1 -2
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/commonjs/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/commonjs/core/init/utils/initial_seek_and_play.js +121 -91
- package/dist/commonjs/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/commonjs/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/commonjs/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/commonjs/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/commonjs/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +14 -18
- package/dist/commonjs/core/stream/period/period_stream.js +5 -8
- package/dist/commonjs/core/stream/period/types.d.ts +2 -3
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/commonjs/core/stream/representation/representation_stream.js +3 -4
- package/dist/commonjs/core/stream/representation/types.d.ts +2 -2
- package/dist/commonjs/core/stream/representation/utils/append_segment_to_buffer.js +11 -12
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/commonjs/default_config.d.ts +7 -16
- package/dist/commonjs/default_config.js +16 -16
- package/dist/commonjs/manifest/adaptation.js +2 -1
- package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/commonjs/public_types.d.ts +29 -2
- package/dist/es2017/config.d.ts +1 -1
- package/dist/es2017/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/es2017/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/es2017/core/adaptive/network_analyzer.js +3 -3
- package/dist/es2017/core/api/index.d.ts +1 -1
- package/dist/es2017/core/api/playback_observer.d.ts +128 -8
- package/dist/es2017/core/api/playback_observer.js +217 -66
- package/dist/es2017/core/api/public_api.js +9 -9
- package/dist/es2017/core/api/utils.js +1 -1
- package/dist/es2017/core/decrypt/get_media_keys.js +2 -6
- package/dist/es2017/core/init/directfile_content_initializer.js +7 -1
- package/dist/es2017/core/init/media_source_content_initializer.js +30 -16
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +1 -2
- package/dist/es2017/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/es2017/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/es2017/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/es2017/core/init/utils/initial_seek_and_play.js +120 -91
- package/dist/es2017/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/es2017/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/es2017/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/es2017/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/es2017/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +16 -18
- package/dist/es2017/core/stream/period/period_stream.js +4 -7
- package/dist/es2017/core/stream/period/types.d.ts +2 -3
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/es2017/core/stream/representation/representation_stream.js +3 -4
- package/dist/es2017/core/stream/representation/types.d.ts +2 -2
- package/dist/es2017/core/stream/representation/utils/append_segment_to_buffer.js +1 -2
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/es2017/default_config.d.ts +7 -16
- package/dist/es2017/default_config.js +16 -16
- package/dist/es2017/manifest/adaptation.js +2 -1
- package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/es2017/public_types.d.ts +29 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +614 -438
- package/dist/rx-player.min.js +1 -1
- package/package.json +5 -1
- package/scripts/canal-release.patch +78 -0
- package/scripts/make-dev-releases +65 -0
- package/scripts/update-version +5 -0
- package/sonar-project.properties +1 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +4 -21
- package/src/core/adaptive/network_analyzer.ts +3 -3
- package/src/core/api/index.ts +1 -0
- package/src/core/api/playback_observer.ts +327 -107
- package/src/core/api/public_api.ts +9 -9
- package/src/core/api/utils.ts +3 -1
- package/src/core/decrypt/get_media_keys.ts +2 -8
- package/src/core/init/directfile_content_initializer.ts +8 -8
- package/src/core/init/media_source_content_initializer.ts +27 -20
- package/src/core/init/utils/content_time_boundaries_observer.ts +1 -1
- package/src/core/init/utils/create_stream_playback_observer.ts +19 -20
- package/src/core/init/utils/initial_seek_and_play.ts +140 -108
- package/src/core/init/utils/rebuffering_controller.ts +32 -77
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +5 -2
- package/src/core/segment_buffers/garbage_collector.ts +1 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/index.ts +2 -0
- package/src/core/segment_buffers/inventory/index.ts +2 -0
- package/src/core/segment_buffers/inventory/segment_inventory.ts +49 -17
- package/src/core/stream/adaptation/get_representations_switch_strategy.ts +21 -12
- package/src/core/stream/orchestrator/stream_orchestrator.ts +14 -19
- package/src/core/stream/period/period_stream.ts +7 -8
- package/src/core/stream/period/types.ts +2 -3
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +21 -15
- package/src/core/stream/representation/representation_stream.ts +3 -5
- package/src/core/stream/representation/types.ts +2 -2
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +1 -1
- package/src/core/stream/representation/utils/get_buffer_status.ts +2 -1
- package/src/default_config.ts +17 -17
- package/src/manifest/adaptation.ts +2 -1
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +3 -1
- package/src/public_types.ts +29 -2
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +0 -84
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +0 -158
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +0 -406
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +0 -932
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.d.ts +0 -33
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +0 -49
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.d.ts +0 -39
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +0 -133
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +0 -119
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +0 -159
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2015 CANAL+ Group
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Adaptation, Period } from "../../../manifest";
|
|
17
|
+
import { IAudioTrack, IAudioTrackPreference, IAvailableAudioTrack, IAvailableTextTrack, IAvailableVideoTrack, ITextTrack, ITextTrackPreference, IVideoTrack, IVideoTrackPreference } from "../../../public_types";
|
|
18
|
+
import SharedReference from "../../../utils/reference";
|
|
19
|
+
/**
|
|
20
|
+
* Manage audio and text tracks for all active periods.
|
|
21
|
+
* Choose the audio and text tracks for each period and record this choice.
|
|
22
|
+
* @class TrackChoiceManager
|
|
23
|
+
*/
|
|
24
|
+
export default class TrackChoiceManager {
|
|
25
|
+
/**
|
|
26
|
+
* Current Periods considered by the TrackChoiceManager.
|
|
27
|
+
* Sorted by start time ascending
|
|
28
|
+
*/
|
|
29
|
+
private _periods;
|
|
30
|
+
/**
|
|
31
|
+
* Array of preferred settings for audio tracks.
|
|
32
|
+
* Sorted by order of preference descending.
|
|
33
|
+
*/
|
|
34
|
+
private _preferredAudioTracks;
|
|
35
|
+
/**
|
|
36
|
+
* Array of preferred languages for text tracks.
|
|
37
|
+
* Sorted by order of preference descending.
|
|
38
|
+
*/
|
|
39
|
+
private _preferredTextTracks;
|
|
40
|
+
/**
|
|
41
|
+
* Array of preferred settings for video tracks.
|
|
42
|
+
* Sorted by order of preference descending.
|
|
43
|
+
*/
|
|
44
|
+
private _preferredVideoTracks;
|
|
45
|
+
/** Memorization of the previously-chosen audio Adaptation for each Period. */
|
|
46
|
+
private _audioChoiceMemory;
|
|
47
|
+
/** Memorization of the previously-chosen text Adaptation for each Period. */
|
|
48
|
+
private _textChoiceMemory;
|
|
49
|
+
/** Memorization of the previously-chosen video Adaptation for each Period. */
|
|
50
|
+
private _videoChoiceMemory;
|
|
51
|
+
/** Tells if trick mode has been enabled by the RxPlayer user */
|
|
52
|
+
trickModeTrackEnabled: boolean;
|
|
53
|
+
constructor(args: {
|
|
54
|
+
preferTrickModeTracks: boolean;
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* Set the list of preferred audio tracks, in preference order.
|
|
58
|
+
* @param {Array.<Object>} preferredAudioTracks
|
|
59
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
60
|
+
* applied on the currently loaded Period. `false` if it should only
|
|
61
|
+
* be applied to new content.
|
|
62
|
+
*/
|
|
63
|
+
setPreferredAudioTracks(preferredAudioTracks: IAudioTrackPreference[], shouldApply: boolean): void;
|
|
64
|
+
/**
|
|
65
|
+
* Set the list of preferred text tracks, in preference order.
|
|
66
|
+
* @param {Array.<Object>} preferredTextTracks
|
|
67
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
68
|
+
* applied on the currently loaded Periods. `false` if it should only
|
|
69
|
+
* be applied to new content.
|
|
70
|
+
*/
|
|
71
|
+
setPreferredTextTracks(preferredTextTracks: ITextTrackPreference[], shouldApply: boolean): void;
|
|
72
|
+
/**
|
|
73
|
+
* Set the list of preferred text tracks, in preference order.
|
|
74
|
+
* @param {Array.<Object>} preferredVideoTracks
|
|
75
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
76
|
+
* applied on the currently loaded Period. `false` if it should only
|
|
77
|
+
* be applied to new content.
|
|
78
|
+
*/
|
|
79
|
+
setPreferredVideoTracks(preferredVideoTracks: IVideoTrackPreference[], shouldApply: boolean): void;
|
|
80
|
+
/**
|
|
81
|
+
* Add shared reference to choose Adaptation for new "audio" or "text" Period.
|
|
82
|
+
* @param {string} bufferType - The concerned buffer type
|
|
83
|
+
* @param {Period} period - The concerned Period.
|
|
84
|
+
* @param {Object} adaptationRef
|
|
85
|
+
*/
|
|
86
|
+
addPeriod(bufferType: "audio" | "text" | "video", period: Period, adaptationRef: SharedReference<Adaptation | null | undefined>): void;
|
|
87
|
+
/**
|
|
88
|
+
* Remove shared reference to choose an "audio", "video" or "text" Adaptation
|
|
89
|
+
* for a Period.
|
|
90
|
+
* @param {string} bufferType - The concerned buffer type
|
|
91
|
+
* @param {Period} period - The concerned Period.
|
|
92
|
+
*/
|
|
93
|
+
removePeriod(bufferType: "audio" | "text" | "video", period: Period): void;
|
|
94
|
+
resetPeriods(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Update the choice of all added Periods based on:
|
|
97
|
+
* 1. What was the last chosen adaptation
|
|
98
|
+
* 2. If not found, the preferences
|
|
99
|
+
*/
|
|
100
|
+
update(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Emit initial audio Adaptation through the given shared reference based on:
|
|
103
|
+
* - the preferred audio tracks
|
|
104
|
+
* - the last choice for this period, if one
|
|
105
|
+
* @param {Period} period - The concerned Period.
|
|
106
|
+
*/
|
|
107
|
+
setInitialAudioTrack(period: Period): void;
|
|
108
|
+
/**
|
|
109
|
+
* Emit initial text Adaptation through the given shared reference based on:
|
|
110
|
+
* - the preferred text tracks
|
|
111
|
+
* - the last choice for this period, if one
|
|
112
|
+
* @param {Period} period - The concerned Period.
|
|
113
|
+
*/
|
|
114
|
+
setInitialTextTrack(period: Period): void;
|
|
115
|
+
/**
|
|
116
|
+
* Emit initial video Adaptation through the given shared reference based on:
|
|
117
|
+
* - the preferred video tracks
|
|
118
|
+
* - the last choice for this period, if one
|
|
119
|
+
* @param {Period} period - The concerned Period.
|
|
120
|
+
*/
|
|
121
|
+
setInitialVideoTrack(period: Period): void;
|
|
122
|
+
/**
|
|
123
|
+
* Set audio track based on the ID of its adaptation for a given added Period.
|
|
124
|
+
* @param {Period} period - The concerned Period.
|
|
125
|
+
* @param {string} wantedId - adaptation id of the wanted track
|
|
126
|
+
*/
|
|
127
|
+
setAudioTrackByID(period: Period, wantedId: string): void;
|
|
128
|
+
/**
|
|
129
|
+
* Set text track based on the ID of its adaptation for a given added Period.
|
|
130
|
+
* @param {Period} period - The concerned Period.
|
|
131
|
+
* @param {string} wantedId - adaptation id of the wanted track
|
|
132
|
+
*/
|
|
133
|
+
setTextTrackByID(period: Period, wantedId: string): void;
|
|
134
|
+
/**
|
|
135
|
+
* Set video track based on the ID of its adaptation for a given added Period.
|
|
136
|
+
* @param {Period} period - The concerned Period.
|
|
137
|
+
* @param {string} wantedId - adaptation id of the wanted track
|
|
138
|
+
*
|
|
139
|
+
* @throws Error - Throws if the period given has not been added
|
|
140
|
+
* @throws Error - Throws if the given id is not found in any video adaptation
|
|
141
|
+
* of the given Period.
|
|
142
|
+
*/
|
|
143
|
+
setVideoTrackByID(period: Period, wantedId: string): void;
|
|
144
|
+
/**
|
|
145
|
+
* Disable the current text track for a given period.
|
|
146
|
+
*
|
|
147
|
+
* @param {Period} period - The concerned Period.
|
|
148
|
+
*
|
|
149
|
+
* @throws Error - Throws if the period given has not been added
|
|
150
|
+
*/
|
|
151
|
+
disableTextTrack(period: Period): void;
|
|
152
|
+
/**
|
|
153
|
+
* Disable the current video track for a given period.
|
|
154
|
+
* @param {Object} period
|
|
155
|
+
* @throws Error - Throws if the period given has not been added
|
|
156
|
+
*/
|
|
157
|
+
disableVideoTrack(period: Period): void;
|
|
158
|
+
disableVideoTrickModeTracks(): void;
|
|
159
|
+
enableVideoTrickModeTracks(): void;
|
|
160
|
+
/**
|
|
161
|
+
* @returns {boolean}
|
|
162
|
+
*/
|
|
163
|
+
isTrickModeEnabled(): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Returns an object describing the chosen audio track for the given audio
|
|
166
|
+
* Period.
|
|
167
|
+
*
|
|
168
|
+
* Returns null is the the current audio track is disabled or not
|
|
169
|
+
* set yet.
|
|
170
|
+
*
|
|
171
|
+
* @param {Period} period - The concerned Period.
|
|
172
|
+
* @returns {Object|null} - The audio track chosen for this Period
|
|
173
|
+
*/
|
|
174
|
+
getChosenAudioTrack(period: Period): IAudioTrack | null;
|
|
175
|
+
/**
|
|
176
|
+
* Returns an object describing the chosen text track for the given text
|
|
177
|
+
* Period.
|
|
178
|
+
*
|
|
179
|
+
* Returns null is the the current text track is disabled or not
|
|
180
|
+
* set yet.
|
|
181
|
+
*
|
|
182
|
+
* @param {Period} period - The concerned Period.
|
|
183
|
+
* @returns {Object|null} - The text track chosen for this Period
|
|
184
|
+
*/
|
|
185
|
+
getChosenTextTrack(period: Period): ITextTrack | null;
|
|
186
|
+
/**
|
|
187
|
+
* Returns an object describing the chosen video track for the given video
|
|
188
|
+
* Period.
|
|
189
|
+
*
|
|
190
|
+
* Returns null is the the current video track is disabled or not
|
|
191
|
+
* set yet.
|
|
192
|
+
*
|
|
193
|
+
* @param {Period} period - The concerned Period.
|
|
194
|
+
* @returns {Object|null} - The video track chosen for this Period
|
|
195
|
+
*/
|
|
196
|
+
getChosenVideoTrack(period: Period): IVideoTrack | null;
|
|
197
|
+
/**
|
|
198
|
+
* Returns all available audio tracks for a given Period, as an array of
|
|
199
|
+
* objects.
|
|
200
|
+
*
|
|
201
|
+
* @returns {Array.<Object>}
|
|
202
|
+
*/
|
|
203
|
+
getAvailableAudioTracks(period: Period): IAvailableAudioTrack[];
|
|
204
|
+
/**
|
|
205
|
+
* Returns all available text tracks for a given Period, as an array of
|
|
206
|
+
* objects.
|
|
207
|
+
*
|
|
208
|
+
* @param {Period} period
|
|
209
|
+
* @returns {Array.<Object>}
|
|
210
|
+
*/
|
|
211
|
+
getAvailableTextTracks(period: Period): IAvailableTextTrack[];
|
|
212
|
+
/**
|
|
213
|
+
* Returns all available video tracks for a given Period, as an array of
|
|
214
|
+
* objects.
|
|
215
|
+
*
|
|
216
|
+
* @returns {Array.<Object>}
|
|
217
|
+
*/
|
|
218
|
+
getAvailableVideoTracks(period: Period): IAvailableVideoTrack[];
|
|
219
|
+
/**
|
|
220
|
+
* Reset all audio tracks choices to corresponds to the current preferences.
|
|
221
|
+
*/
|
|
222
|
+
private _applyAudioPreferences;
|
|
223
|
+
/**
|
|
224
|
+
* Reset all text tracks choices to corresponds to the current preferences.
|
|
225
|
+
*/
|
|
226
|
+
private _applyTextPreferences;
|
|
227
|
+
/**
|
|
228
|
+
* Reset all video tracks choices to corresponds to the current preferences.
|
|
229
|
+
*/
|
|
230
|
+
private _applyVideoPreferences;
|
|
231
|
+
/**
|
|
232
|
+
* Choose again the best audio tracks for all current Periods.
|
|
233
|
+
* This is based on two things:
|
|
234
|
+
* 1. what was the track previously chosen for that Period (by checking
|
|
235
|
+
* `this._audioChoiceMemory`).
|
|
236
|
+
* 2. If no track were previously chosen or if it is not available anymore
|
|
237
|
+
* we check the audio preferences.
|
|
238
|
+
*/
|
|
239
|
+
private _resetChosenAudioTracks;
|
|
240
|
+
/**
|
|
241
|
+
* Choose again the best text tracks for all current Periods.
|
|
242
|
+
* This is based on two things:
|
|
243
|
+
* 1. what was the track previously chosen for that Period (by checking
|
|
244
|
+
* `this._textChoiceMemory`).
|
|
245
|
+
* 2. If no track were previously chosen or if it is not available anymore
|
|
246
|
+
* we check the text preferences.
|
|
247
|
+
*/
|
|
248
|
+
private _resetChosenTextTracks;
|
|
249
|
+
/**
|
|
250
|
+
* Choose again the best video tracks for all current Periods.
|
|
251
|
+
* This is based on two things:
|
|
252
|
+
* 1. what was the track previously chosen for that Period (by checking
|
|
253
|
+
* `this._videoChoiceMemory`).
|
|
254
|
+
* 2. If no track were previously chosen or if it is not available anymore
|
|
255
|
+
* we check the video preferences.
|
|
256
|
+
*/
|
|
257
|
+
private _resetChosenVideoTracks;
|
|
258
|
+
}
|