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
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { ISupplementaryImageTrack, ISupplementaryTextTrack } from "../../manifest";
|
|
17
|
+
import { IAudioTrackPreference, IAudioTrackSwitchingMode, IConstructorOptions, IKeySystemOption, ILoadedManifestFormat, ILoadVideoOptions, IManifestLoader, INetworkConfigOption, IRepresentationFilter, ISegmentLoader, IServerSyncInfos, ITextTrackPreference, IVideoTrackPreference } from "../../public_types";
|
|
17
18
|
/** Value once parsed for the `startAt` option of the `loadVideo` method. */
|
|
18
19
|
export type IParsedStartAtOption = {
|
|
19
20
|
position: number;
|
|
@@ -26,6 +27,20 @@ export type IParsedStartAtOption = {
|
|
|
26
27
|
} | {
|
|
27
28
|
fromFirstPosition: number;
|
|
28
29
|
};
|
|
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
|
+
}
|
|
29
44
|
/** Options of the RxPlayer's constructor once parsed. */
|
|
30
45
|
export interface IParsedConstructorOptions {
|
|
31
46
|
maxBufferAhead: number;
|
|
@@ -33,9 +48,19 @@ export interface IParsedConstructorOptions {
|
|
|
33
48
|
wantedBufferAhead: number;
|
|
34
49
|
maxVideoBufferSize: number;
|
|
35
50
|
limitVideoWidth: boolean;
|
|
51
|
+
throttleWhenHidden: boolean;
|
|
36
52
|
throttleVideoBitrateWhenHidden: boolean;
|
|
53
|
+
preferredAudioTracks: IAudioTrackPreference[];
|
|
54
|
+
preferredTextTracks: ITextTrackPreference[];
|
|
55
|
+
preferredVideoTracks: IVideoTrackPreference[];
|
|
37
56
|
videoElement: HTMLMediaElement;
|
|
38
|
-
|
|
57
|
+
initialVideoBitrate: number;
|
|
58
|
+
initialAudioBitrate: number;
|
|
59
|
+
minAudioBitrate: number;
|
|
60
|
+
minVideoBitrate: number;
|
|
61
|
+
maxAudioBitrate: number;
|
|
62
|
+
maxVideoBitrate: number;
|
|
63
|
+
stopAtEnd: boolean;
|
|
39
64
|
}
|
|
40
65
|
/**
|
|
41
66
|
* Base type which the types for the parsed options of the RxPlayer's
|
|
@@ -49,19 +74,15 @@ interface IParsedLoadVideoOptionsBase {
|
|
|
49
74
|
keySystems: IKeySystemOption[];
|
|
50
75
|
lowLatencyMode: boolean;
|
|
51
76
|
minimumManifestUpdateInterval: number;
|
|
52
|
-
|
|
77
|
+
networkConfig: INetworkConfigOption;
|
|
78
|
+
transportOptions: IParsedTransportOptions;
|
|
79
|
+
defaultAudioTrack: IAudioTrackPreference | null | undefined;
|
|
80
|
+
defaultTextTrack: ITextTrackPreference | null | undefined;
|
|
53
81
|
startAt: IParsedStartAtOption | undefined;
|
|
82
|
+
manualBitrateSwitchingMode: "seamless" | "direct";
|
|
54
83
|
enableFastSwitching: boolean;
|
|
55
|
-
|
|
84
|
+
audioTrackSwitchingMode: IAudioTrackSwitchingMode;
|
|
56
85
|
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;
|
|
65
86
|
}
|
|
66
87
|
/**
|
|
67
88
|
* Options of the RxPlayer's `loadVideo` method once parsed when a "native"
|
|
@@ -69,6 +90,7 @@ interface IParsedLoadVideoOptionsBase {
|
|
|
69
90
|
*/
|
|
70
91
|
interface IParsedLoadVideoOptionsNative extends IParsedLoadVideoOptionsBase {
|
|
71
92
|
textTrackMode: "native";
|
|
93
|
+
hideNativeSubtitle: boolean;
|
|
72
94
|
}
|
|
73
95
|
/**
|
|
74
96
|
* Options of the RxPlayer's `loadVideo` method once parsed when an "html"
|
|
@@ -103,8 +125,6 @@ declare function checkReloadOptions(options?: {
|
|
|
103
125
|
position?: number;
|
|
104
126
|
relative?: number;
|
|
105
127
|
};
|
|
106
|
-
keySystems?: IKeySystemOption[];
|
|
107
|
-
autoPlay?: boolean;
|
|
108
128
|
}): void;
|
|
109
129
|
/**
|
|
110
130
|
* Parse options given to loadVideo and set default options as found
|
|
@@ -115,6 +135,7 @@ declare function checkReloadOptions(options?: {
|
|
|
115
135
|
*
|
|
116
136
|
* Throws if any mandatory option is not set.
|
|
117
137
|
* @param {Object|undefined} options
|
|
138
|
+
* @param {Object} ctx - The player context, needed for some default values.
|
|
118
139
|
* @returns {Object}
|
|
119
140
|
*/
|
|
120
141
|
declare function parseLoadVideoOptions(options: ILoadVideoOptions): IParsedLoadVideoOptions;
|
|
@@ -21,6 +21,7 @@ import config from "../../config";
|
|
|
21
21
|
import log from "../../log";
|
|
22
22
|
import arrayIncludes from "../../utils/array_includes";
|
|
23
23
|
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
24
|
+
import { normalizeAudioTrack, normalizeTextTrack, } from "../../utils/languages";
|
|
24
25
|
import objectAssign from "../../utils/object_assign";
|
|
25
26
|
import warnOnce from "../../utils/warn_once";
|
|
26
27
|
/**
|
|
@@ -37,9 +38,19 @@ function parseConstructorOptions(options) {
|
|
|
37
38
|
var maxBufferBehind;
|
|
38
39
|
var wantedBufferAhead;
|
|
39
40
|
var maxVideoBufferSize;
|
|
41
|
+
var throttleWhenHidden;
|
|
42
|
+
var throttleVideoBitrateWhenHidden;
|
|
43
|
+
var preferredAudioTracks;
|
|
44
|
+
var preferredTextTracks;
|
|
45
|
+
var preferredVideoTracks;
|
|
40
46
|
var videoElement;
|
|
41
|
-
var
|
|
42
|
-
var
|
|
47
|
+
var initialVideoBitrate;
|
|
48
|
+
var initialAudioBitrate;
|
|
49
|
+
var minAudioBitrate;
|
|
50
|
+
var minVideoBitrate;
|
|
51
|
+
var maxAudioBitrate;
|
|
52
|
+
var maxVideoBitrate;
|
|
53
|
+
var _a = config.getCurrent(), DEFAULT_INITIAL_BITRATES = _a.DEFAULT_INITIAL_BITRATES, DEFAULT_LIMIT_VIDEO_WIDTH = _a.DEFAULT_LIMIT_VIDEO_WIDTH, DEFAULT_MIN_BITRATES = _a.DEFAULT_MIN_BITRATES, DEFAULT_MAX_BITRATES = _a.DEFAULT_MAX_BITRATES, DEFAULT_MAX_BUFFER_AHEAD = _a.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = _a.DEFAULT_MAX_BUFFER_BEHIND, DEFAULT_MAX_VIDEO_BUFFER_SIZE = _a.DEFAULT_MAX_VIDEO_BUFFER_SIZE, DEFAULT_STOP_AT_END = _a.DEFAULT_STOP_AT_END, DEFAULT_THROTTLE_WHEN_HIDDEN = _a.DEFAULT_THROTTLE_WHEN_HIDDEN, DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN = _a.DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN, DEFAULT_WANTED_BUFFER_AHEAD = _a.DEFAULT_WANTED_BUFFER_AHEAD;
|
|
43
54
|
if (isNullOrUndefined(options.maxBufferAhead)) {
|
|
44
55
|
maxBufferAhead = DEFAULT_MAX_BUFFER_AHEAD;
|
|
45
56
|
}
|
|
@@ -83,9 +94,61 @@ function parseConstructorOptions(options) {
|
|
|
83
94
|
var limitVideoWidth = isNullOrUndefined(options.limitVideoWidth) ?
|
|
84
95
|
DEFAULT_LIMIT_VIDEO_WIDTH :
|
|
85
96
|
!!options.limitVideoWidth;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
97
|
+
if (!isNullOrUndefined(options.throttleWhenHidden)) {
|
|
98
|
+
warnOnce("`throttleWhenHidden` API is deprecated. Consider using " +
|
|
99
|
+
"`throttleVideoBitrateWhenHidden` instead.");
|
|
100
|
+
throttleWhenHidden = !!options.throttleWhenHidden;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throttleWhenHidden = DEFAULT_THROTTLE_WHEN_HIDDEN;
|
|
104
|
+
}
|
|
105
|
+
// `throttleWhenHidden` and `throttleVideoBitrateWhenHidden` can be in conflict
|
|
106
|
+
// Do not activate the latter if the former is
|
|
107
|
+
if (throttleWhenHidden) {
|
|
108
|
+
throttleVideoBitrateWhenHidden = false;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
throttleVideoBitrateWhenHidden =
|
|
112
|
+
isNullOrUndefined(options.throttleVideoBitrateWhenHidden) ?
|
|
113
|
+
DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN :
|
|
114
|
+
!!options.throttleVideoBitrateWhenHidden;
|
|
115
|
+
}
|
|
116
|
+
if (options.preferredTextTracks !== undefined) {
|
|
117
|
+
if (!Array.isArray(options.preferredTextTracks)) {
|
|
118
|
+
warnOnce("Invalid `preferredTextTracks` option, it should be an Array");
|
|
119
|
+
preferredTextTracks = [];
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
preferredTextTracks = options.preferredTextTracks;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
preferredTextTracks = [];
|
|
127
|
+
}
|
|
128
|
+
if (options.preferredAudioTracks !== undefined) {
|
|
129
|
+
if (!Array.isArray(options.preferredAudioTracks)) {
|
|
130
|
+
warnOnce("Invalid `preferredAudioTracks` option, it should be an Array");
|
|
131
|
+
preferredAudioTracks = [];
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
preferredAudioTracks = options.preferredAudioTracks;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
preferredAudioTracks = [];
|
|
139
|
+
}
|
|
140
|
+
if (options.preferredVideoTracks !== undefined) {
|
|
141
|
+
if (!Array.isArray(options.preferredVideoTracks)) {
|
|
142
|
+
warnOnce("Invalid `preferredVideoTracks` option, it should be an Array");
|
|
143
|
+
preferredVideoTracks = [];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
preferredVideoTracks = options.preferredVideoTracks;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
preferredVideoTracks = [];
|
|
151
|
+
}
|
|
89
152
|
if (isNullOrUndefined(options.videoElement)) {
|
|
90
153
|
videoElement = document.createElement("video");
|
|
91
154
|
}
|
|
@@ -97,18 +160,77 @@ function parseConstructorOptions(options) {
|
|
|
97
160
|
throw new Error("Invalid videoElement parameter. Should be a HTMLMediaElement.");
|
|
98
161
|
/* eslint-enable max-len */
|
|
99
162
|
}
|
|
100
|
-
if (isNullOrUndefined(options.
|
|
101
|
-
|
|
163
|
+
if (isNullOrUndefined(options.initialVideoBitrate)) {
|
|
164
|
+
initialVideoBitrate = DEFAULT_INITIAL_BITRATES.video;
|
|
102
165
|
}
|
|
103
166
|
else {
|
|
104
|
-
|
|
105
|
-
if (isNaN(
|
|
167
|
+
initialVideoBitrate = Number(options.initialVideoBitrate);
|
|
168
|
+
if (isNaN(initialVideoBitrate)) {
|
|
106
169
|
/* eslint-disable max-len */
|
|
107
|
-
throw new Error("Invalid
|
|
170
|
+
throw new Error("Invalid initialVideoBitrate parameter. Should be a number.");
|
|
108
171
|
/* eslint-enable max-len */
|
|
109
172
|
}
|
|
110
173
|
}
|
|
111
|
-
|
|
174
|
+
if (isNullOrUndefined(options.initialAudioBitrate)) {
|
|
175
|
+
initialAudioBitrate = DEFAULT_INITIAL_BITRATES.audio;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
initialAudioBitrate = Number(options.initialAudioBitrate);
|
|
179
|
+
if (isNaN(initialAudioBitrate)) {
|
|
180
|
+
/* eslint-disable max-len */
|
|
181
|
+
throw new Error("Invalid initialAudioBitrate parameter. Should be a number.");
|
|
182
|
+
/* eslint-enable max-len */
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (isNullOrUndefined(options.minVideoBitrate)) {
|
|
186
|
+
minVideoBitrate = DEFAULT_MIN_BITRATES.video;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
minVideoBitrate = Number(options.minVideoBitrate);
|
|
190
|
+
if (isNaN(minVideoBitrate)) {
|
|
191
|
+
throw new Error("Invalid maxVideoBitrate parameter. Should be a number.");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (isNullOrUndefined(options.minAudioBitrate)) {
|
|
195
|
+
minAudioBitrate = DEFAULT_MIN_BITRATES.audio;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
minAudioBitrate = Number(options.minAudioBitrate);
|
|
199
|
+
if (isNaN(minAudioBitrate)) {
|
|
200
|
+
throw new Error("Invalid minAudioBitrate parameter. Should be a number.");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (isNullOrUndefined(options.maxVideoBitrate)) {
|
|
204
|
+
maxVideoBitrate = DEFAULT_MAX_BITRATES.video;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
maxVideoBitrate = Number(options.maxVideoBitrate);
|
|
208
|
+
if (isNaN(maxVideoBitrate)) {
|
|
209
|
+
throw new Error("Invalid maxVideoBitrate parameter. Should be a number.");
|
|
210
|
+
}
|
|
211
|
+
else if (minVideoBitrate > maxVideoBitrate) {
|
|
212
|
+
throw new Error("Invalid maxVideoBitrate parameter. Its value, \"" +
|
|
213
|
+
"".concat(maxVideoBitrate, "\", is inferior to the set minVideoBitrate, \"") +
|
|
214
|
+
"".concat(minVideoBitrate, "\""));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (isNullOrUndefined(options.maxAudioBitrate)) {
|
|
218
|
+
maxAudioBitrate = DEFAULT_MAX_BITRATES.audio;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
maxAudioBitrate = Number(options.maxAudioBitrate);
|
|
222
|
+
if (isNaN(maxAudioBitrate)) {
|
|
223
|
+
throw new Error("Invalid maxAudioBitrate parameter. Should be a number.");
|
|
224
|
+
}
|
|
225
|
+
else if (minAudioBitrate > maxAudioBitrate) {
|
|
226
|
+
throw new Error("Invalid maxAudioBitrate parameter. Its value, \"" +
|
|
227
|
+
"".concat(maxAudioBitrate, "\", is inferior to the set minAudioBitrate, \"") +
|
|
228
|
+
"".concat(minAudioBitrate, "\""));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
var stopAtEnd = isNullOrUndefined(options.stopAtEnd) ? DEFAULT_STOP_AT_END :
|
|
232
|
+
!!options.stopAtEnd;
|
|
233
|
+
return { maxBufferAhead: maxBufferAhead, maxBufferBehind: maxBufferBehind, limitVideoWidth: limitVideoWidth, videoElement: videoElement, wantedBufferAhead: wantedBufferAhead, maxVideoBufferSize: maxVideoBufferSize, throttleWhenHidden: throttleWhenHidden, throttleVideoBitrateWhenHidden: throttleVideoBitrateWhenHidden, preferredAudioTracks: preferredAudioTracks, preferredTextTracks: preferredTextTracks, preferredVideoTracks: preferredVideoTracks, initialAudioBitrate: initialAudioBitrate, initialVideoBitrate: initialVideoBitrate, minAudioBitrate: minAudioBitrate, minVideoBitrate: minVideoBitrate, maxAudioBitrate: maxAudioBitrate, maxVideoBitrate: maxVideoBitrate, stopAtEnd: stopAtEnd };
|
|
112
234
|
}
|
|
113
235
|
/**
|
|
114
236
|
* Check the format of given reload options.
|
|
@@ -133,12 +255,6 @@ function checkReloadOptions(options) {
|
|
|
133
255
|
((_d = options === null || options === void 0 ? void 0 : options.reloadAt) === null || _d === void 0 ? void 0 : _d.relative) !== undefined) {
|
|
134
256
|
throw new Error("API: reload - Invalid 'reloadAt.relative' option format.");
|
|
135
257
|
}
|
|
136
|
-
if (!Array.isArray(options === null || options === void 0 ? void 0 : options.keySystems) && (options === null || options === void 0 ? void 0 : options.keySystems) !== undefined) {
|
|
137
|
-
throw new Error("API: reload - Invalid 'keySystems' option format.");
|
|
138
|
-
}
|
|
139
|
-
if ((options === null || options === void 0 ? void 0 : options.autoPlay) !== undefined && typeof options.autoPlay !== "boolean") {
|
|
140
|
-
throw new Error("API: reload - Invalid 'autoPlay' option format.");
|
|
141
|
-
}
|
|
142
258
|
}
|
|
143
259
|
/**
|
|
144
260
|
* Parse options given to loadVideo and set default options as found
|
|
@@ -149,29 +265,30 @@ function checkReloadOptions(options) {
|
|
|
149
265
|
*
|
|
150
266
|
* Throws if any mandatory option is not set.
|
|
151
267
|
* @param {Object|undefined} options
|
|
268
|
+
* @param {Object} ctx - The player context, needed for some default values.
|
|
152
269
|
* @returns {Object}
|
|
153
270
|
*/
|
|
154
271
|
function parseLoadVideoOptions(options) {
|
|
155
|
-
var _a, _b, _c;
|
|
272
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
156
273
|
var url;
|
|
157
274
|
var transport;
|
|
158
275
|
var keySystems;
|
|
159
276
|
var textTrackMode;
|
|
160
277
|
var textTrackElement;
|
|
161
278
|
var startAt;
|
|
162
|
-
var
|
|
279
|
+
var _k = config.getCurrent(), DEFAULT_AUDIO_TRACK_SWITCHING_MODE = _k.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = _k.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = _k.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = _k.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = _k.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_SHOW_NATIVE_SUBTITLE = _k.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_TEXT_TRACK_MODE = _k.DEFAULT_TEXT_TRACK_MODE;
|
|
163
280
|
if (isNullOrUndefined(options)) {
|
|
164
281
|
throw new Error("No option set on loadVideo");
|
|
165
282
|
}
|
|
166
283
|
if (!isNullOrUndefined(options.url)) {
|
|
167
284
|
url = String(options.url);
|
|
168
285
|
}
|
|
169
|
-
else if (isNullOrUndefined(options.initialManifest) &&
|
|
170
|
-
isNullOrUndefined(options.manifestLoader)) {
|
|
286
|
+
else if (isNullOrUndefined((_a = options.transportOptions) === null || _a === void 0 ? void 0 : _a.initialManifest) &&
|
|
287
|
+
isNullOrUndefined((_b = options.transportOptions) === null || _b === void 0 ? void 0 : _b.manifestLoader)) {
|
|
171
288
|
throw new Error("Unable to load a content: no url set on loadVideo.\n" +
|
|
172
289
|
"Please provide at least either an `url` argument, a " +
|
|
173
|
-
"`initialManifest` option or a " +
|
|
174
|
-
"`manifestLoader` option so the RxPlayer " +
|
|
290
|
+
"`transportOptions.initialManifest` option or a " +
|
|
291
|
+
"`transportOptions.manifestLoader` option so the RxPlayer " +
|
|
175
292
|
"can load the content.");
|
|
176
293
|
}
|
|
177
294
|
if (isNullOrUndefined(options.transport)) {
|
|
@@ -180,6 +297,11 @@ function parseLoadVideoOptions(options) {
|
|
|
180
297
|
else {
|
|
181
298
|
transport = String(options.transport);
|
|
182
299
|
}
|
|
300
|
+
if (!isNullOrUndefined((_c = options.transportOptions) === null || _c === void 0 ? void 0 : _c.aggressiveMode)) {
|
|
301
|
+
warnOnce("`transportOptions.aggressiveMode` is deprecated and won't " +
|
|
302
|
+
"be present in the next major version. " +
|
|
303
|
+
"Please open an issue if you still need this.");
|
|
304
|
+
}
|
|
183
305
|
var autoPlay = isNullOrUndefined(options.autoPlay) ? DEFAULT_AUTO_PLAY :
|
|
184
306
|
!!options.autoPlay;
|
|
185
307
|
if (isNullOrUndefined(options.keySystems)) {
|
|
@@ -195,6 +317,11 @@ function parseLoadVideoOptions(options) {
|
|
|
195
317
|
throw new Error("Invalid key system given: Missing type string or " +
|
|
196
318
|
"getLicense callback");
|
|
197
319
|
}
|
|
320
|
+
if (!isNullOrUndefined(keySystem.onKeyStatusesChange)) {
|
|
321
|
+
warnOnce("`keySystems[].onKeyStatusesChange` is deprecated and won't " +
|
|
322
|
+
"be present in the next major version. " +
|
|
323
|
+
"Please open an issue if you still need this.");
|
|
324
|
+
}
|
|
198
325
|
if (!isNullOrUndefined(keySystem.throwOnLicenseExpiration)) {
|
|
199
326
|
warnOnce("`keySystems[].throwOnLicenseExpiration` is deprecated and won't " +
|
|
200
327
|
"be present in the next major version. " +
|
|
@@ -205,17 +332,24 @@ function parseLoadVideoOptions(options) {
|
|
|
205
332
|
var lowLatencyMode = options.lowLatencyMode === undefined ?
|
|
206
333
|
false :
|
|
207
334
|
!!options.lowLatencyMode;
|
|
208
|
-
var
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
335
|
+
var transportOptsArg = typeof options.transportOptions === "object" &&
|
|
336
|
+
options.transportOptions !== null ?
|
|
337
|
+
options.transportOptions :
|
|
338
|
+
{};
|
|
339
|
+
var initialManifest = (_d = options.transportOptions) === null || _d === void 0 ? void 0 : _d.initialManifest;
|
|
340
|
+
var minimumManifestUpdateInterval = (_f = (_e = options.transportOptions) === null || _e === void 0 ? void 0 : _e.minimumManifestUpdateInterval) !== null && _f !== void 0 ? _f : 0;
|
|
341
|
+
var audioTrackSwitchingMode = isNullOrUndefined(options.audioTrackSwitchingMode)
|
|
342
|
+
? DEFAULT_AUDIO_TRACK_SWITCHING_MODE
|
|
343
|
+
: options.audioTrackSwitchingMode;
|
|
344
|
+
if (!arrayIncludes(["seamless", "direct", "reload"], audioTrackSwitchingMode)) {
|
|
345
|
+
log.warn("The `audioTrackSwitchingMode` loadVideo option must match one of " +
|
|
214
346
|
"the following strategy name:\n" +
|
|
215
347
|
"- `seamless`\n" +
|
|
216
348
|
"- `direct`\n" +
|
|
217
|
-
"- `reload
|
|
218
|
-
|
|
349
|
+
"- `reload`\n" +
|
|
350
|
+
"If badly set, " + DEFAULT_AUDIO_TRACK_SWITCHING_MODE +
|
|
351
|
+
" strategy will be used as default");
|
|
352
|
+
audioTrackSwitchingMode = DEFAULT_AUDIO_TRACK_SWITCHING_MODE;
|
|
219
353
|
}
|
|
220
354
|
var onCodecSwitch = isNullOrUndefined(options.onCodecSwitch)
|
|
221
355
|
? DEFAULT_CODEC_SWITCHING_BEHAVIOR
|
|
@@ -229,7 +363,48 @@ function parseLoadVideoOptions(options) {
|
|
|
229
363
|
" will be used as default");
|
|
230
364
|
onCodecSwitch = DEFAULT_CODEC_SWITCHING_BEHAVIOR;
|
|
231
365
|
}
|
|
232
|
-
|
|
366
|
+
var transportOptions = objectAssign({}, transportOptsArg, {
|
|
367
|
+
/* eslint-disable import/no-deprecated */
|
|
368
|
+
supplementaryImageTracks: [],
|
|
369
|
+
supplementaryTextTracks: [],
|
|
370
|
+
/* eslint-enable import/no-deprecated */
|
|
371
|
+
lowLatencyMode: lowLatencyMode,
|
|
372
|
+
});
|
|
373
|
+
// remove already parsed data to simplify the `transportOptions` object
|
|
374
|
+
delete transportOptions.initialManifest;
|
|
375
|
+
delete transportOptions.minimumManifestUpdateInterval;
|
|
376
|
+
if (options.supplementaryTextTracks !== undefined) {
|
|
377
|
+
warnOnce("The `supplementaryTextTracks` loadVideo option is deprecated.\n" +
|
|
378
|
+
"Please use the `TextTrackRenderer` tool instead.");
|
|
379
|
+
var supplementaryTextTracks = Array.isArray(options.supplementaryTextTracks) ?
|
|
380
|
+
options.supplementaryTextTracks : [options.supplementaryTextTracks];
|
|
381
|
+
for (var _l = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _l < supplementaryTextTracks_1.length; _l++) {
|
|
382
|
+
var supplementaryTextTrack = supplementaryTextTracks_1[_l];
|
|
383
|
+
if (typeof supplementaryTextTrack.language !== "string" ||
|
|
384
|
+
typeof supplementaryTextTrack.mimeType !== "string" ||
|
|
385
|
+
typeof supplementaryTextTrack.url !== "string") {
|
|
386
|
+
throw new Error("Invalid supplementary text track given. " +
|
|
387
|
+
"Missing either language, mimetype or url");
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
transportOptions.supplementaryTextTracks = supplementaryTextTracks;
|
|
391
|
+
}
|
|
392
|
+
if (options.supplementaryImageTracks !== undefined) {
|
|
393
|
+
warnOnce("The `supplementaryImageTracks` loadVideo option is deprecated.\n" +
|
|
394
|
+
"Please use the `parseBifThumbnails` tool instead.");
|
|
395
|
+
var supplementaryImageTracks = Array.isArray(options.supplementaryImageTracks) ?
|
|
396
|
+
options.supplementaryImageTracks : [options.supplementaryImageTracks];
|
|
397
|
+
for (var _m = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _m < supplementaryImageTracks_1.length; _m++) {
|
|
398
|
+
var supplementaryImageTrack = supplementaryImageTracks_1[_m];
|
|
399
|
+
if (typeof supplementaryImageTrack.mimeType !== "string" ||
|
|
400
|
+
typeof supplementaryImageTrack.url !== "string") {
|
|
401
|
+
throw new Error("Invalid supplementary image track given. " +
|
|
402
|
+
"Missing either mimetype or url");
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
transportOptions.supplementaryImageTracks = supplementaryImageTracks;
|
|
406
|
+
}
|
|
407
|
+
if (!isNullOrUndefined((_g = options.transportOptions) === null || _g === void 0 ? void 0 : _g.manifestUpdateUrl)) {
|
|
233
408
|
warnOnce("`manifestUpdateUrl` API is deprecated, please open an issue if you" +
|
|
234
409
|
" still rely on this.");
|
|
235
410
|
}
|
|
@@ -242,6 +417,24 @@ function parseLoadVideoOptions(options) {
|
|
|
242
417
|
}
|
|
243
418
|
textTrackMode = options.textTrackMode;
|
|
244
419
|
}
|
|
420
|
+
if (!isNullOrUndefined(options.defaultAudioTrack)) {
|
|
421
|
+
warnOnce("The `defaultAudioTrack` loadVideo option is deprecated.\n" +
|
|
422
|
+
"Please use the `preferredAudioTracks` constructor option or the" +
|
|
423
|
+
"`setPreferredAudioTracks` method instead");
|
|
424
|
+
}
|
|
425
|
+
var defaultAudioTrack = normalizeAudioTrack(options.defaultAudioTrack);
|
|
426
|
+
if (!isNullOrUndefined(options.defaultTextTrack)) {
|
|
427
|
+
warnOnce("The `defaultTextTrack` loadVideo option is deprecated.\n" +
|
|
428
|
+
"Please use the `preferredTextTracks` constructor option or the" +
|
|
429
|
+
"`setPreferredTextTracks` method instead");
|
|
430
|
+
}
|
|
431
|
+
var defaultTextTrack = normalizeTextTrack(options.defaultTextTrack);
|
|
432
|
+
var hideNativeSubtitle = !DEFAULT_SHOW_NATIVE_SUBTITLE;
|
|
433
|
+
if (!isNullOrUndefined(options.hideNativeSubtitle)) {
|
|
434
|
+
warnOnce("The `hideNativeSubtitle` loadVideo option is deprecated");
|
|
435
|
+
hideNativeSubtitle = !!options.hideNativeSubtitle;
|
|
436
|
+
}
|
|
437
|
+
var manualBitrateSwitchingMode = (_h = options.manualBitrateSwitchingMode) !== null && _h !== void 0 ? _h : DEFAULT_MANUAL_BITRATE_SWITCHING_MODE;
|
|
245
438
|
var enableFastSwitching = isNullOrUndefined(options.enableFastSwitching) ?
|
|
246
439
|
DEFAULT_ENABLE_FAST_SWITCHING :
|
|
247
440
|
options.enableFastSwitching;
|
|
@@ -274,20 +467,10 @@ function parseLoadVideoOptions(options) {
|
|
|
274
467
|
startAt = options.startAt;
|
|
275
468
|
}
|
|
276
469
|
}
|
|
277
|
-
var
|
|
278
|
-
//
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
/* eslint-
|
|
282
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
283
|
-
return { __priv_patchLastSegmentInSidx: options.__priv_patchLastSegmentInSidx,
|
|
284
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
285
|
-
/* eslint-enable @typescript-eslint/no-unsafe-assignment */
|
|
286
|
-
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
|
|
287
|
-
checkMediaSegmentIntegrity: options.checkMediaSegmentIntegrity, autoPlay: autoPlay, defaultAudioTrackSwitchingMode: defaultAudioTrackSwitchingMode, enableFastSwitching: enableFastSwitching, initialManifest: initialManifest, keySystems: keySystems, lowLatencyMode: lowLatencyMode, manifestLoader: options.manifestLoader,
|
|
288
|
-
manifestUpdateUrl: options.manifestUpdateUrl, minimumManifestUpdateInterval: minimumManifestUpdateInterval, requestConfig: requestConfig, onCodecSwitch: onCodecSwitch, referenceDateTime: options.referenceDateTime,
|
|
289
|
-
representationFilter: options.representationFilter,
|
|
290
|
-
segmentLoader: options.segmentLoader,
|
|
291
|
-
serverSyncInfos: options.serverSyncInfos, startAt: startAt, textTrackElement: textTrackElement, textTrackMode: textTrackMode, transport: transport, url: url };
|
|
470
|
+
var networkConfig = (_j = options.networkConfig) !== null && _j !== void 0 ? _j : {};
|
|
471
|
+
// TODO without cast
|
|
472
|
+
/* eslint-disable @typescript-eslint/consistent-type-assertions */
|
|
473
|
+
return { autoPlay: autoPlay, defaultAudioTrack: defaultAudioTrack, defaultTextTrack: defaultTextTrack, enableFastSwitching: enableFastSwitching, hideNativeSubtitle: hideNativeSubtitle, keySystems: keySystems, initialManifest: initialManifest, lowLatencyMode: lowLatencyMode, manualBitrateSwitchingMode: manualBitrateSwitchingMode, audioTrackSwitchingMode: audioTrackSwitchingMode, minimumManifestUpdateInterval: minimumManifestUpdateInterval, networkConfig: networkConfig, onCodecSwitch: onCodecSwitch, startAt: startAt, textTrackElement: textTrackElement, textTrackMode: textTrackMode, transport: transport, transportOptions: transportOptions, url: url };
|
|
474
|
+
/* eslint-enable @typescript-eslint/consistent-type-assertions */
|
|
292
475
|
}
|
|
293
476
|
export { checkReloadOptions, parseConstructorOptions, parseLoadVideoOptions, };
|