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
|
@@ -34,7 +34,6 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
34
34
|
*/
|
|
35
35
|
import { enableAudioTrack } from "../../../compat";
|
|
36
36
|
import EventEmitter from "../../../utils/event_emitter";
|
|
37
|
-
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
38
37
|
import normalizeLanguage from "../../../utils/languages";
|
|
39
38
|
/**
|
|
40
39
|
* Check if track array is different from an other one
|
|
@@ -141,13 +140,16 @@ function createVideoTracks(videoTracks) {
|
|
|
141
140
|
}
|
|
142
141
|
/**
|
|
143
142
|
* Manage video, audio and text tracks for current direct file content.
|
|
144
|
-
* @class
|
|
143
|
+
* @class MediaElementTrackChoiceManager
|
|
145
144
|
*/
|
|
146
|
-
var
|
|
147
|
-
__extends(
|
|
148
|
-
function
|
|
145
|
+
var MediaElementTrackChoiceManager = /** @class */ (function (_super) {
|
|
146
|
+
__extends(MediaElementTrackChoiceManager, _super);
|
|
147
|
+
function MediaElementTrackChoiceManager(mediaElement) {
|
|
149
148
|
var _a, _b, _c;
|
|
150
149
|
var _this = _super.call(this) || this;
|
|
150
|
+
_this._preferredAudioTracks = [];
|
|
151
|
+
_this._preferredTextTracks = [];
|
|
152
|
+
_this._preferredVideoTracks = [];
|
|
151
153
|
// TODO In practice, the audio/video/text tracks API are not always implemented on
|
|
152
154
|
// the media element, although Typescript HTMLMediaElement types tend to mean
|
|
153
155
|
// that can't be undefined.
|
|
@@ -163,19 +165,58 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
163
165
|
_this._textTracks =
|
|
164
166
|
_this._nativeTextTracks !== undefined ? createTextTracks(_this._nativeTextTracks) :
|
|
165
167
|
[];
|
|
166
|
-
_this._lastEmittedNativeAudioTrack = (_a = _this.
|
|
167
|
-
_this._lastEmittedNativeVideoTrack = (_b = _this.
|
|
168
|
-
_this._lastEmittedNativeTextTrack = (_c = _this.
|
|
168
|
+
_this._lastEmittedNativeAudioTrack = (_a = _this._getPrivateChosenAudioTrack()) === null || _a === void 0 ? void 0 : _a.nativeTrack;
|
|
169
|
+
_this._lastEmittedNativeVideoTrack = (_b = _this._getPrivateChosenVideoTrack()) === null || _b === void 0 ? void 0 : _b.nativeTrack;
|
|
170
|
+
_this._lastEmittedNativeTextTrack = (_c = _this._getPrivateChosenTextTrack()) === null || _c === void 0 ? void 0 : _c.nativeTrack;
|
|
169
171
|
_this._handleNativeTracksCallbacks();
|
|
170
172
|
return _this;
|
|
171
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Set the list of preferred audio tracks, in preference order.
|
|
176
|
+
* @param {Array.<Object>} preferredAudioTracks
|
|
177
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
178
|
+
* applied on the currently loaded Period. `false` if it should only
|
|
179
|
+
* be applied to new content.
|
|
180
|
+
*/
|
|
181
|
+
MediaElementTrackChoiceManager.prototype.setPreferredAudioTracks = function (preferredAudioTracks, shouldApply) {
|
|
182
|
+
this._preferredAudioTracks = preferredAudioTracks;
|
|
183
|
+
if (shouldApply) {
|
|
184
|
+
this._applyAudioPreferences();
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Set the list of preferred text tracks, in preference order.
|
|
189
|
+
* @param {Array.<Object>} preferredTextTracks
|
|
190
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
191
|
+
* applied on the currently loaded Period. `false` if it should only
|
|
192
|
+
* be applied to new content.
|
|
193
|
+
*/
|
|
194
|
+
MediaElementTrackChoiceManager.prototype.setPreferredTextTracks = function (preferredTextTracks, shouldApply) {
|
|
195
|
+
this._preferredTextTracks = preferredTextTracks;
|
|
196
|
+
if (shouldApply) {
|
|
197
|
+
this._applyTextPreferences();
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Set the list of preferred video tracks, in preference order.
|
|
202
|
+
* @param {Array.<Object>} preferredVideoTracks
|
|
203
|
+
* @param {boolean} shouldApply - `true` if those preferences should be
|
|
204
|
+
* applied on the currently loaded Period. `false` if it should only
|
|
205
|
+
* be applied to new content.
|
|
206
|
+
*/
|
|
207
|
+
MediaElementTrackChoiceManager.prototype.setPreferredVideoTracks = function (preferredVideoTracks, shouldApply) {
|
|
208
|
+
this._preferredVideoTracks = preferredVideoTracks;
|
|
209
|
+
if (shouldApply) {
|
|
210
|
+
this._applyVideoPreferences();
|
|
211
|
+
}
|
|
212
|
+
};
|
|
172
213
|
/**
|
|
173
214
|
* Update the currently active audio track by setting the wanted audio track's
|
|
174
215
|
* ID property.
|
|
175
216
|
* Throws if the wanted audio track is not found.
|
|
176
217
|
* @param {string|number|undefined} id
|
|
177
218
|
*/
|
|
178
|
-
|
|
219
|
+
MediaElementTrackChoiceManager.prototype.setAudioTrackById = function (id) {
|
|
179
220
|
for (var i = 0; i < this._audioTracks.length; i++) {
|
|
180
221
|
var _a = this._audioTracks[i], track = _a.track, nativeTrack = _a.nativeTrack;
|
|
181
222
|
if (track.id === id) {
|
|
@@ -189,7 +230,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
189
230
|
/**
|
|
190
231
|
* Disable the currently-active text track, if one.
|
|
191
232
|
*/
|
|
192
|
-
|
|
233
|
+
MediaElementTrackChoiceManager.prototype.disableTextTrack = function () {
|
|
193
234
|
disableTextTracks(this._textTracks);
|
|
194
235
|
this._textTrackLockedOn = null;
|
|
195
236
|
};
|
|
@@ -199,7 +240,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
199
240
|
* Throws if the wanted text track is not found.
|
|
200
241
|
* @param {string|number|undefined} id
|
|
201
242
|
*/
|
|
202
|
-
|
|
243
|
+
MediaElementTrackChoiceManager.prototype.setTextTrackById = function (id) {
|
|
203
244
|
var hasSetTrack = false;
|
|
204
245
|
for (var i = 0; i < this._textTracks.length; i++) {
|
|
205
246
|
var _a = this._textTracks[i], track = _a.track, nativeTrack = _a.nativeTrack;
|
|
@@ -219,7 +260,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
219
260
|
/**
|
|
220
261
|
* Disable the currently-active video track, if one.
|
|
221
262
|
*/
|
|
222
|
-
|
|
263
|
+
MediaElementTrackChoiceManager.prototype.disableVideoTrack = function () {
|
|
223
264
|
disableVideoTracks(this._videoTracks);
|
|
224
265
|
this._videoTrackLockedOn = null;
|
|
225
266
|
};
|
|
@@ -229,7 +270,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
229
270
|
* Throws if the wanted video track is not found.
|
|
230
271
|
* @param {string|number|undefined} id
|
|
231
272
|
*/
|
|
232
|
-
|
|
273
|
+
MediaElementTrackChoiceManager.prototype.setVideoTrackById = function (id) {
|
|
233
274
|
for (var i = 0; i < this._videoTracks.length; i++) {
|
|
234
275
|
var _a = this._videoTracks[i], track = _a.track, nativeTrack = _a.nativeTrack;
|
|
235
276
|
if (track.id === id) {
|
|
@@ -246,11 +287,12 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
246
287
|
* Returns `undefined` if we cannot know which audio track is active.
|
|
247
288
|
* @returns {Object|null|undefined}
|
|
248
289
|
*/
|
|
249
|
-
|
|
250
|
-
var
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
290
|
+
MediaElementTrackChoiceManager.prototype.getChosenAudioTrack = function () {
|
|
291
|
+
var chosenPrivateAudioTrack = this._getPrivateChosenAudioTrack();
|
|
292
|
+
if (chosenPrivateAudioTrack != null) {
|
|
293
|
+
return chosenPrivateAudioTrack.track;
|
|
294
|
+
}
|
|
295
|
+
return chosenPrivateAudioTrack;
|
|
254
296
|
};
|
|
255
297
|
/**
|
|
256
298
|
* Returns the currently active text track.
|
|
@@ -258,11 +300,12 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
258
300
|
* Returns `undefined` if we cannot know which text track is active.
|
|
259
301
|
* @returns {Object|null|undefined}
|
|
260
302
|
*/
|
|
261
|
-
|
|
262
|
-
var
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
303
|
+
MediaElementTrackChoiceManager.prototype.getChosenTextTrack = function () {
|
|
304
|
+
var chosenPrivateTextTrack = this._getPrivateChosenTextTrack();
|
|
305
|
+
if (chosenPrivateTextTrack != null) {
|
|
306
|
+
return chosenPrivateTextTrack.track;
|
|
307
|
+
}
|
|
308
|
+
return chosenPrivateTextTrack;
|
|
266
309
|
};
|
|
267
310
|
/**
|
|
268
311
|
* Returns the currently active video track.
|
|
@@ -270,17 +313,18 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
270
313
|
* Returns `undefined` if we cannot know which video track is active.
|
|
271
314
|
* @returns {Object|null|undefined}
|
|
272
315
|
*/
|
|
273
|
-
|
|
274
|
-
var
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
316
|
+
MediaElementTrackChoiceManager.prototype.getChosenVideoTrack = function () {
|
|
317
|
+
var chosenPrivateVideoTrack = this._getPrivateChosenVideoTrack();
|
|
318
|
+
if (chosenPrivateVideoTrack != null) {
|
|
319
|
+
return chosenPrivateVideoTrack.track;
|
|
320
|
+
}
|
|
321
|
+
return chosenPrivateVideoTrack;
|
|
278
322
|
};
|
|
279
323
|
/**
|
|
280
324
|
* Returns a description of every available audio tracks.
|
|
281
325
|
* @returns {Array.<Object>}
|
|
282
326
|
*/
|
|
283
|
-
|
|
327
|
+
MediaElementTrackChoiceManager.prototype.getAvailableAudioTracks = function () {
|
|
284
328
|
return this._audioTracks.map(function (_a) {
|
|
285
329
|
var track = _a.track, nativeTrack = _a.nativeTrack;
|
|
286
330
|
return { id: track.id,
|
|
@@ -295,7 +339,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
295
339
|
* Returns a description of every available text tracks.
|
|
296
340
|
* @returns {Array.<Object>}
|
|
297
341
|
*/
|
|
298
|
-
|
|
342
|
+
MediaElementTrackChoiceManager.prototype.getAvailableTextTracks = function () {
|
|
299
343
|
return this._textTracks.map(function (_a) {
|
|
300
344
|
var track = _a.track, nativeTrack = _a.nativeTrack;
|
|
301
345
|
return { id: track.id,
|
|
@@ -311,7 +355,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
311
355
|
* Returns a description of every available video tracks.
|
|
312
356
|
* @returns {Array.<Object>}
|
|
313
357
|
*/
|
|
314
|
-
|
|
358
|
+
MediaElementTrackChoiceManager.prototype.getAvailableVideoTracks = function () {
|
|
315
359
|
return this._videoTracks.map(function (_a) {
|
|
316
360
|
var track = _a.track, nativeTrack = _a.nativeTrack;
|
|
317
361
|
return { id: track.id,
|
|
@@ -320,9 +364,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
320
364
|
});
|
|
321
365
|
};
|
|
322
366
|
/**
|
|
323
|
-
* Free the resources used by the
|
|
367
|
+
* Free the resources used by the MediaElementTrackChoiceManager.
|
|
324
368
|
*/
|
|
325
|
-
|
|
369
|
+
MediaElementTrackChoiceManager.prototype.dispose = function () {
|
|
326
370
|
if (this._nativeVideoTracks !== undefined) {
|
|
327
371
|
this._nativeVideoTracks.onchange = null;
|
|
328
372
|
this._nativeVideoTracks.onaddtrack = null;
|
|
@@ -346,7 +390,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
346
390
|
* `null` if no audio track is chosen.
|
|
347
391
|
* @returns {Object|undefined|null}
|
|
348
392
|
*/
|
|
349
|
-
|
|
393
|
+
MediaElementTrackChoiceManager.prototype._getPrivateChosenAudioTrack = function () {
|
|
350
394
|
if (this._nativeAudioTracks === undefined) {
|
|
351
395
|
return undefined;
|
|
352
396
|
}
|
|
@@ -364,7 +408,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
364
408
|
* `null` if no video track is chosen.
|
|
365
409
|
* @returns {Object|undefined|null}
|
|
366
410
|
*/
|
|
367
|
-
|
|
411
|
+
MediaElementTrackChoiceManager.prototype._getPrivateChosenVideoTrack = function () {
|
|
368
412
|
if (this._nativeVideoTracks === undefined) {
|
|
369
413
|
return undefined;
|
|
370
414
|
}
|
|
@@ -382,7 +426,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
382
426
|
* `null` if no text track is chosen.
|
|
383
427
|
* @returns {Object|undefined|null}
|
|
384
428
|
*/
|
|
385
|
-
|
|
429
|
+
MediaElementTrackChoiceManager.prototype._getPrivateChosenTextTrack = function () {
|
|
386
430
|
if (this._nativeTextTracks === undefined) {
|
|
387
431
|
return undefined;
|
|
388
432
|
}
|
|
@@ -397,19 +441,12 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
397
441
|
/**
|
|
398
442
|
* Iterate over every available audio tracks on the media element and either:
|
|
399
443
|
* - if the last manually set audio track is found, set that one.
|
|
444
|
+
* - if not, set the most preferred one
|
|
400
445
|
* - if we still do not find an optimal track, let the one chosen by default
|
|
401
446
|
*/
|
|
402
|
-
|
|
403
|
-
if
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
else if (this._audioTrackLockedOn === null) {
|
|
407
|
-
for (var i = 0; i < this._audioTracks.length; i++) {
|
|
408
|
-
var nativeTrack = this._audioTracks[i].nativeTrack;
|
|
409
|
-
nativeTrack.enabled = false;
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
447
|
+
MediaElementTrackChoiceManager.prototype._setOptimalAudioTrack = function () {
|
|
448
|
+
// First check if the last set track is available, set it if that's the case
|
|
449
|
+
if (this._audioTrackLockedOn !== undefined) {
|
|
413
450
|
for (var i = 0; i < this._audioTracks.length; i++) {
|
|
414
451
|
var nativeTrack = this._audioTracks[i].nativeTrack;
|
|
415
452
|
if (nativeTrack === this._audioTrackLockedOn) {
|
|
@@ -418,21 +455,46 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
418
455
|
}
|
|
419
456
|
}
|
|
420
457
|
}
|
|
458
|
+
this._applyAudioPreferences();
|
|
459
|
+
};
|
|
460
|
+
/**
|
|
461
|
+
* Try to find a track corresponding to the audio track preferences:
|
|
462
|
+
* - if found, set it as the active track
|
|
463
|
+
* - if not found, let the chosen audio track by default
|
|
464
|
+
*/
|
|
465
|
+
MediaElementTrackChoiceManager.prototype._applyAudioPreferences = function () {
|
|
466
|
+
// Re-set the last manually set audio track
|
|
467
|
+
this._audioTrackLockedOn = undefined;
|
|
468
|
+
var preferredAudioTracks = this._preferredAudioTracks;
|
|
469
|
+
for (var i = 0; i < preferredAudioTracks.length; i++) {
|
|
470
|
+
var track = preferredAudioTracks[i];
|
|
471
|
+
if (track !== null && track.language !== undefined) {
|
|
472
|
+
var normalized = normalizeLanguage(track.language);
|
|
473
|
+
for (var j = 0; j < this._audioTracks.length; j++) {
|
|
474
|
+
var audioTrack = this._audioTracks[j];
|
|
475
|
+
if (audioTrack.track.normalized === normalized &&
|
|
476
|
+
audioTrack.track.audioDescription === track.audioDescription) {
|
|
477
|
+
this._enableAudioTrackFromIndex(j);
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
// else just let the default one instead
|
|
421
484
|
};
|
|
422
485
|
/**
|
|
423
486
|
* Iterate over every available text tracks on the media element and either:
|
|
424
487
|
* - if the last manually set text track is found, set that one.
|
|
488
|
+
* - if not, set the most preferred one
|
|
425
489
|
* - if we still do not find an optimal track, just disable it.
|
|
426
490
|
*/
|
|
427
|
-
|
|
428
|
-
if
|
|
429
|
-
|
|
430
|
-
}
|
|
431
|
-
else if (this._textTrackLockedOn === null) {
|
|
491
|
+
MediaElementTrackChoiceManager.prototype._setOptimalTextTrack = function () {
|
|
492
|
+
// First check if the last set track is available, set it if that's the case
|
|
493
|
+
if (this._textTrackLockedOn === null) {
|
|
432
494
|
disableTextTracks(this._textTracks);
|
|
433
495
|
return;
|
|
434
496
|
}
|
|
435
|
-
else {
|
|
497
|
+
else if (this._textTrackLockedOn !== undefined) {
|
|
436
498
|
for (var i = 0; i < this._textTracks.length; i++) {
|
|
437
499
|
var nativeTrack = this._textTracks[i].nativeTrack;
|
|
438
500
|
if (nativeTrack === this._textTrackLockedOn) {
|
|
@@ -445,21 +507,54 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
445
507
|
}
|
|
446
508
|
}
|
|
447
509
|
}
|
|
510
|
+
// Else set the preferred one
|
|
511
|
+
this._applyTextPreferences();
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Try to find a track corresponding to the text track preferences:
|
|
515
|
+
* - if found, set it as the active track
|
|
516
|
+
* - if not found, let the chosen text track by default
|
|
517
|
+
*/
|
|
518
|
+
MediaElementTrackChoiceManager.prototype._applyTextPreferences = function () {
|
|
519
|
+
// Re-set the last manually set audio track
|
|
520
|
+
this._textTrackLockedOn = undefined;
|
|
521
|
+
var preferredTextTracks = this._preferredTextTracks;
|
|
522
|
+
for (var i = 0; i < preferredTextTracks.length; i++) {
|
|
523
|
+
var track = preferredTextTracks[i];
|
|
524
|
+
if (track === null) {
|
|
525
|
+
disableTextTracks(this._textTracks);
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
var normalized = normalizeLanguage(track.language);
|
|
529
|
+
for (var j = 0; j < this._textTracks.length; j++) {
|
|
530
|
+
var textTrack = this._textTracks[j];
|
|
531
|
+
if (textTrack.track.normalized === normalized &&
|
|
532
|
+
textTrack.track.closedCaption === track.closedCaption) {
|
|
533
|
+
// disable the rest
|
|
534
|
+
disableAllTextTracksBut(this._textTracks, textTrack.nativeTrack);
|
|
535
|
+
if (textTrack.nativeTrack.mode !== "showing") {
|
|
536
|
+
textTrack.nativeTrack.mode = "showing";
|
|
537
|
+
}
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
// Else just disable text tracks
|
|
543
|
+
disableTextTracks(this._textTracks);
|
|
448
544
|
};
|
|
449
545
|
/**
|
|
450
546
|
* Iterate over every available video tracks on the media element and either:
|
|
451
547
|
* - if the last manually set video track is found, set that one.
|
|
548
|
+
* - if not, set the most preferred one
|
|
452
549
|
* - if we still do not find an optimal track, let the one chosen by default
|
|
453
550
|
*/
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
}
|
|
458
|
-
else if (this._videoTrackLockedOn === null) {
|
|
551
|
+
MediaElementTrackChoiceManager.prototype._setOptimalVideoTrack = function () {
|
|
552
|
+
// 1. first check if the last set track is available, set it if that's the case
|
|
553
|
+
if (this._videoTrackLockedOn === null) {
|
|
459
554
|
disableVideoTracks(this._videoTracks);
|
|
460
555
|
return;
|
|
461
556
|
}
|
|
462
|
-
else {
|
|
557
|
+
else if (this._videoTrackLockedOn !== undefined) {
|
|
463
558
|
for (var i = 0; i < this._videoTracks.length; i++) {
|
|
464
559
|
var nativeTrack = this._videoTracks[i].nativeTrack;
|
|
465
560
|
if (nativeTrack === this._videoTrackLockedOn) {
|
|
@@ -468,12 +563,36 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
468
563
|
}
|
|
469
564
|
}
|
|
470
565
|
}
|
|
566
|
+
// Else set the preferred one
|
|
567
|
+
this._applyVideoPreferences();
|
|
568
|
+
};
|
|
569
|
+
/**
|
|
570
|
+
* Try to find a track corresponding to the text track preferences:
|
|
571
|
+
* - if found, set it as the active track
|
|
572
|
+
* - if not found, let the chosen text track by default
|
|
573
|
+
*/
|
|
574
|
+
MediaElementTrackChoiceManager.prototype._applyVideoPreferences = function () {
|
|
575
|
+
// Re-set the last manually set video track
|
|
576
|
+
this._videoTrackLockedOn = undefined;
|
|
577
|
+
// NOTE: As we cannot access either codec information or sign interpretation
|
|
578
|
+
// information easily about the different codecs. It is the same case than
|
|
579
|
+
// if we had only tracks where those were set to undefined.
|
|
580
|
+
// Based on that, we should disable the video track as long as one of the
|
|
581
|
+
// set preferrence is "no video track" (i.e. `null`) as this is the only
|
|
582
|
+
// constraint that we know we can respect.
|
|
583
|
+
// Else, just chose the first track.
|
|
584
|
+
var preferredVideoTracks = this._preferredVideoTracks;
|
|
585
|
+
var hasNullPreference = preferredVideoTracks.some(function (p) { return p === null; });
|
|
586
|
+
if (hasNullPreference) {
|
|
587
|
+
disableVideoTracks(this._videoTracks);
|
|
588
|
+
}
|
|
589
|
+
// else just let the default one instead
|
|
471
590
|
};
|
|
472
591
|
/**
|
|
473
592
|
* Monitor native tracks add, remove and change callback and trigger the
|
|
474
593
|
* change events.
|
|
475
594
|
*/
|
|
476
|
-
|
|
595
|
+
MediaElementTrackChoiceManager.prototype._handleNativeTracksCallbacks = function () {
|
|
477
596
|
var _this = this;
|
|
478
597
|
if (this._nativeAudioTracks !== undefined) {
|
|
479
598
|
this._nativeAudioTracks.onaddtrack = function () {
|
|
@@ -482,9 +601,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
482
601
|
var newAudioTracks = createAudioTracks(_this._nativeAudioTracks);
|
|
483
602
|
if (areTrackArraysDifferent(_this._audioTracks, newAudioTracks)) {
|
|
484
603
|
_this._audioTracks = newAudioTracks;
|
|
485
|
-
_this.
|
|
604
|
+
_this._setOptimalAudioTrack();
|
|
486
605
|
_this.trigger("availableAudioTracksChange", _this.getAvailableAudioTracks());
|
|
487
|
-
var chosenAudioTrack = _this.
|
|
606
|
+
var chosenAudioTrack = _this._getPrivateChosenAudioTrack();
|
|
488
607
|
if ((chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.nativeTrack) !== _this._lastEmittedNativeAudioTrack) {
|
|
489
608
|
_this.trigger("audioTrackChange", (_a = chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
490
609
|
_this._lastEmittedNativeAudioTrack = (_b = chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -499,7 +618,7 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
499
618
|
if (areTrackArraysDifferent(_this._audioTracks, newAudioTracks)) {
|
|
500
619
|
_this._audioTracks = newAudioTracks;
|
|
501
620
|
_this.trigger("availableAudioTracksChange", _this.getAvailableAudioTracks());
|
|
502
|
-
var chosenAudioTrack = _this.
|
|
621
|
+
var chosenAudioTrack = _this._getPrivateChosenAudioTrack();
|
|
503
622
|
if ((chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.nativeTrack) !== _this._lastEmittedNativeAudioTrack) {
|
|
504
623
|
_this.trigger("audioTrackChange", (_a = chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
505
624
|
_this._lastEmittedNativeAudioTrack = (_b = chosenAudioTrack === null || chosenAudioTrack === void 0 ? void 0 : chosenAudioTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -534,9 +653,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
534
653
|
var newTextTracks = createTextTracks(_this._nativeTextTracks);
|
|
535
654
|
if (areTrackArraysDifferent(_this._textTracks, newTextTracks)) {
|
|
536
655
|
_this._textTracks = newTextTracks;
|
|
537
|
-
_this.
|
|
656
|
+
_this._setOptimalTextTrack();
|
|
538
657
|
_this.trigger("availableTextTracksChange", _this.getAvailableTextTracks());
|
|
539
|
-
var chosenTextTrack = _this.
|
|
658
|
+
var chosenTextTrack = _this._getPrivateChosenTextTrack();
|
|
540
659
|
if ((chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.nativeTrack) !== _this._lastEmittedNativeTextTrack) {
|
|
541
660
|
_this.trigger("textTrackChange", (_a = chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
542
661
|
_this._lastEmittedNativeTextTrack = (_b = chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -550,9 +669,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
550
669
|
var newTextTracks = createTextTracks(_this._nativeTextTracks);
|
|
551
670
|
if (areTrackArraysDifferent(_this._textTracks, newTextTracks)) {
|
|
552
671
|
_this._textTracks = newTextTracks;
|
|
553
|
-
_this.
|
|
672
|
+
_this._setOptimalTextTrack();
|
|
554
673
|
_this.trigger("availableTextTracksChange", _this.getAvailableTextTracks());
|
|
555
|
-
var chosenTextTrack = _this.
|
|
674
|
+
var chosenTextTrack = _this._getPrivateChosenTextTrack();
|
|
556
675
|
if ((chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.nativeTrack) !== _this._lastEmittedNativeTextTrack) {
|
|
557
676
|
_this.trigger("textTrackChange", (_a = chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
558
677
|
_this._lastEmittedNativeTextTrack = (_b = chosenTextTrack === null || chosenTextTrack === void 0 ? void 0 : chosenTextTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -587,9 +706,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
587
706
|
var newVideoTracks = createVideoTracks(_this._nativeVideoTracks);
|
|
588
707
|
if (areTrackArraysDifferent(_this._videoTracks, newVideoTracks)) {
|
|
589
708
|
_this._videoTracks = newVideoTracks;
|
|
590
|
-
_this.
|
|
709
|
+
_this._setOptimalVideoTrack();
|
|
591
710
|
_this.trigger("availableVideoTracksChange", _this.getAvailableVideoTracks());
|
|
592
|
-
var chosenVideoTrack = _this.
|
|
711
|
+
var chosenVideoTrack = _this._getPrivateChosenVideoTrack();
|
|
593
712
|
if ((chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.nativeTrack) !== _this._lastEmittedNativeVideoTrack) {
|
|
594
713
|
_this.trigger("videoTrackChange", (_a = chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
595
714
|
_this._lastEmittedNativeVideoTrack = (_b = chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -603,9 +722,9 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
603
722
|
var newVideoTracks = createVideoTracks(_this._nativeVideoTracks);
|
|
604
723
|
if (areTrackArraysDifferent(_this._videoTracks, newVideoTracks)) {
|
|
605
724
|
_this._videoTracks = newVideoTracks;
|
|
606
|
-
_this.
|
|
725
|
+
_this._setOptimalVideoTrack();
|
|
607
726
|
_this.trigger("availableVideoTracksChange", _this.getAvailableVideoTracks());
|
|
608
|
-
var chosenVideoTrack = _this.
|
|
727
|
+
var chosenVideoTrack = _this._getPrivateChosenVideoTrack();
|
|
609
728
|
if ((chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.nativeTrack) !== _this._lastEmittedNativeVideoTrack) {
|
|
610
729
|
_this.trigger("videoTrackChange", (_a = chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.track) !== null && _a !== void 0 ? _a : null);
|
|
611
730
|
_this._lastEmittedNativeVideoTrack = (_b = chosenVideoTrack === null || chosenVideoTrack === void 0 ? void 0 : chosenVideoTrack.nativeTrack) !== null && _b !== void 0 ? _b : null;
|
|
@@ -639,15 +758,15 @@ var MediaElementTracksStore = /** @class */ (function (_super) {
|
|
|
639
758
|
* `this._audioTracks` array.
|
|
640
759
|
* @param {number} index}
|
|
641
760
|
*/
|
|
642
|
-
|
|
761
|
+
MediaElementTrackChoiceManager.prototype._enableAudioTrackFromIndex = function (index) {
|
|
643
762
|
enableAudioTrack(this._audioTracks.map(function (_a) {
|
|
644
763
|
var nativeTrack = _a.nativeTrack;
|
|
645
764
|
return nativeTrack;
|
|
646
765
|
}), index);
|
|
647
766
|
};
|
|
648
|
-
return
|
|
767
|
+
return MediaElementTrackChoiceManager;
|
|
649
768
|
}(EventEmitter));
|
|
650
|
-
export default
|
|
769
|
+
export default MediaElementTrackChoiceManager;
|
|
651
770
|
/**
|
|
652
771
|
* Disable all text track elements in the given array from showing.
|
|
653
772
|
* @param {Array.<Object>} textTracks
|