rx-player 3.26.3-dev.2022021400 → 3.27.0-dev.2022032100
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/.eslintrc.js +0 -4
- package/CHANGELOG.md +17 -2
- package/FILES.md +5 -4
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/browser_detection.d.ts +4 -2
- package/dist/_esm5.processed/compat/browser_detection.js +4 -2
- package/dist/_esm5.processed/compat/eme/close_session.d.ts +11 -5
- package/dist/_esm5.processed/compat/eme/close_session.js +143 -36
- package/dist/_esm5.processed/compat/eme/custom_key_system_access.d.ts +15 -0
- package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +1 -17
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +6 -7
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +20 -22
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +58 -40
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +49 -48
- package/dist/_esm5.processed/compat/eme/generate_key_request.d.ts +2 -3
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +22 -26
- package/dist/_esm5.processed/compat/eme/load_session.d.ts +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +67 -17
- package/dist/_esm5.processed/compat/event_listeners.js +2 -1
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +2 -2
- package/dist/_esm5.processed/config.d.ts +166 -1080
- package/dist/_esm5.processed/config.js +17 -1119
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +4 -1
- package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
- package/dist/_esm5.processed/core/api/get_player_state.js +1 -1
- package/dist/_esm5.processed/core/api/index.d.ts +2 -1
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +2 -1
- package/dist/_esm5.processed/core/api/option_utils.d.ts +6 -3
- package/dist/_esm5.processed/core/api/option_utils.js +21 -7
- package/dist/_esm5.processed/core/api/playback_observer.js +5 -1
- package/dist/_esm5.processed/core/api/public_api.d.ts +82 -71
- package/dist/_esm5.processed/core/api/public_api.js +73 -35
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -49
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +25 -65
- package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +103 -0
- package/dist/_esm5.processed/core/{eme/clear_eme_session.d.ts → decrypt/clear_on_stop.d.ts} +3 -4
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +40 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +865 -0
- package/dist/_esm5.processed/core/{eme/get_session.d.ts → decrypt/create_or_load_session.d.ts} +28 -26
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +124 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/create_session.d.ts +22 -19
- package/dist/_esm5.processed/core/decrypt/create_session.js +173 -0
- package/dist/_esm5.processed/core/{eme/dispose_media_keys.d.ts → decrypt/dispose_decryption_resources.d.ts} +4 -4
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +81 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/find_key_system.d.ts +11 -14
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +299 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/get_current_key_system.js +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/get_media_keys.d.ts +13 -5
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +153 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/index.d.ts +5 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/index.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt}/init_media_keys.d.ts +6 -4
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +82 -0
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +77 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/session_events_listener.js +25 -24
- package/dist/_esm5.processed/core/{eme → decrypt}/set_server_certificate.d.ts +15 -6
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +141 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/types.d.ts +119 -241
- package/dist/_esm5.processed/core/{eme → decrypt}/types.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.d.ts +3 -3
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/are_init_values_compatible.js +5 -5
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.d.ts +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/check_key_statuses.js +4 -3
- package/dist/_esm5.processed/core/{eme/utils/close_session.d.ts → decrypt/utils/clean_old_loaded_sessions.d.ts} +8 -7
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +84 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.js +2 -2
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.d.ts +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/get_drm_system_id.js +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.d.ts +69 -0
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +99 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.d.ts +0 -1
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/is_session_usable.js +4 -5
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +44 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +77 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.d.ts +104 -0
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +155 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +108 -0
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +302 -0
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.d.ts +4 -4
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/media_keys_infos_store.js +0 -0
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.d.ts +8 -18
- package/dist/_esm5.processed/core/{eme → decrypt}/utils/persistent_sessions_store.js +119 -97
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.d.ts → decrypt/utils/serializable_bytes.d.ts} +8 -5
- package/dist/_esm5.processed/core/{eme/utils/init_data_container.js → decrypt/utils/serializable_bytes.js} +9 -9
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.d.ts +1 -1
- package/dist/_esm5.processed/core/{eme → decrypt/utils}/server_certificate_store.js +1 -1
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -5
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +1 -1
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +1 -1
- package/dist/_esm5.processed/core/fetchers/utils/try_urls_with_backoff.js +2 -3
- package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +6 -3
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -69
- package/dist/_esm5.processed/core/init/link_drm_and_content.d.ts +61 -0
- package/dist/_esm5.processed/core/init/link_drm_and_content.js +94 -0
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +2 -1
- package/dist/_esm5.processed/core/init/stall_avoider.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
- package/dist/_esm5.processed/core/init/types.d.ts +2 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +17 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +22 -5
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +6 -3
- package/dist/_esm5.processed/core/stream/events_generators.d.ts +8 -3
- package/dist/_esm5.processed/core/stream/events_generators.js +3 -2
- package/dist/_esm5.processed/core/stream/index.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +3 -3
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +2 -1
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.d.ts +15 -11
- package/dist/_esm5.processed/core/stream/period/get_adaptation_switch_strategy.js +6 -3
- package/dist/_esm5.processed/core/stream/period/index.d.ts +1 -0
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +5 -12
- package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +2 -2
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +6 -1
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +12 -9
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.d.ts +19 -14
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +86 -10
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +6 -0
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +19 -8
- package/dist/_esm5.processed/core/stream/types.d.ts +1 -1
- package/dist/_esm5.processed/default_config.d.ts +1114 -0
- package/dist/_esm5.processed/default_config.js +1145 -0
- package/dist/_esm5.processed/experimental/index.d.ts +2 -0
- package/dist/_esm5.processed/experimental/index.js +2 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +1 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +6 -7
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +2 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +15 -0
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +3 -5
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +3 -5
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -2
- package/dist/_esm5.processed/features/features_object.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +1 -1
- package/dist/_esm5.processed/features/list/eme.d.ts +3 -3
- package/dist/_esm5.processed/features/list/eme.js +5 -5
- package/dist/_esm5.processed/features/types.d.ts +3 -3
- package/dist/_esm5.processed/manifest/manifest.d.ts +1 -14
- package/dist/_esm5.processed/manifest/manifest.js +10 -74
- package/dist/_esm5.processed/manifest/representation.d.ts +35 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +87 -75
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +4 -5
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/public_types.d.ts +3 -2
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +1 -2
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +4 -3
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +60 -11
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -2
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +2 -3
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.js +3 -4
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_loader.js +1 -2
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -3
- package/dist/_esm5.processed/transports/local/segment_parser.js +4 -1
- package/dist/_esm5.processed/transports/local/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +2 -3
- package/dist/_esm5.processed/transports/smooth/pipelines.js +71 -14
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -4
- package/dist/_esm5.processed/transports/types.d.ts +22 -0
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -2
- package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +1 -3
- package/dist/_esm5.processed/utils/deep_merge.d.ts +12 -0
- package/dist/_esm5.processed/utils/deep_merge.js +53 -0
- package/dist/_esm5.processed/utils/reference.d.ts +29 -0
- package/dist/_esm5.processed/utils/reference.js +72 -24
- package/dist/_esm5.processed/utils/request/fetch.js +1 -2
- package/dist/_esm5.processed/utils/request/xhr.js +2 -3
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.js +7 -2
- package/dist/_esm5.processed/utils/task_canceller.d.ts +5 -3
- package/dist/_esm5.processed/utils/task_canceller.js +3 -3
- package/dist/rx-player.js +4936 -3340
- package/dist/rx-player.min.js +1 -1
- package/dummy +1 -0
- package/{dist/_esm5.processed/utils/promise.d.ts → experimental/index.d.ts} +1 -2
- package/{dist/_esm5.processed/utils/promise.js → experimental/index.js} +1 -3
- package/package.json +32 -35
- package/{src/typings/pinkie.d.ts → scripts/build/templates/experimental/index.d.ts} +1 -4
- package/scripts/build/templates/experimental/index.js +16 -0
- package/scripts/update-version +2 -2
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- package/src/compat/__tests__/play.test.ts +2 -4
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +45 -5
- package/src/compat/browser_detection.ts +4 -2
- package/src/compat/eme/close_session.ts +89 -56
- package/src/compat/eme/custom_key_system_access.ts +1 -2
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +6 -7
- package/src/compat/eme/custom_media_keys/index.ts +20 -38
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +68 -52
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +57 -56
- package/src/compat/eme/generate_key_request.ts +25 -33
- package/src/compat/eme/load_session.ts +28 -31
- package/src/compat/event_listeners.ts +2 -1
- package/src/compat/should_favour_custom_safari_EME.ts +5 -2
- package/src/config.ts +17 -1210
- package/src/core/README.md +1 -1
- package/src/core/abr/bandwidth_estimator.ts +4 -4
- package/src/core/abr/network_analyzer.ts +5 -6
- package/src/core/api/__tests__/get_player_state.test.ts +3 -3
- package/src/core/api/__tests__/option_utils.test.ts +29 -17
- package/src/core/api/get_player_state.ts +1 -1
- package/src/core/api/index.ts +3 -0
- package/src/core/api/option_utils.ts +42 -23
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +152 -113
- package/src/core/decrypt/README.md +22 -0
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +418 -0
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +675 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/media_key_system_access.test.ts +99 -92
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +156 -0
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +262 -0
- package/src/core/{eme → decrypt}/__tests__/__global__/utils.ts +31 -93
- package/src/core/{eme → decrypt}/attach_media_keys.ts +48 -56
- package/src/core/decrypt/clear_on_stop.ts +47 -0
- package/src/core/decrypt/content_decryptor.ts +1157 -0
- package/src/core/decrypt/create_or_load_session.ts +130 -0
- package/src/core/decrypt/create_session.ts +174 -0
- package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
- package/src/core/{eme → decrypt}/find_key_system.ts +111 -122
- package/src/core/{eme → decrypt}/get_current_key_system.ts +1 -1
- package/src/core/decrypt/get_media_keys.ts +145 -0
- package/src/core/{eme → decrypt}/index.ts +11 -8
- package/src/core/decrypt/init_media_keys.ts +51 -0
- package/src/core/{eme → decrypt}/session_events_listener.ts +93 -55
- package/src/core/decrypt/set_server_certificate.ts +104 -0
- package/src/core/{eme → decrypt}/types.ts +128 -258
- package/src/core/{eme → decrypt}/utils/__tests__/are_init_values_compatible.test.ts +1 -1
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_loaded_sessions.test.ts +29 -71
- package/src/core/{eme → decrypt/utils}/__tests__/clean_old_stored_persistent_info.test.ts +6 -6
- package/src/core/{eme → decrypt}/utils/are_init_values_compatible.ts +9 -9
- package/src/core/{eme → decrypt/utils}/check_key_statuses.ts +6 -5
- package/{dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js → src/core/decrypt/utils/clean_old_loaded_sessions.ts} +19 -20
- package/src/core/{eme → decrypt/utils}/clean_old_stored_persistent_info.ts +3 -3
- package/src/core/{eme → decrypt/utils}/get_drm_system_id.ts +1 -1
- package/src/core/decrypt/utils/init_data_values_container.ts +119 -0
- package/src/core/{eme → decrypt}/utils/is_session_usable.ts +4 -5
- package/src/core/decrypt/utils/key_id_comparison.ts +82 -0
- package/src/core/decrypt/utils/key_session_record.ts +175 -0
- package/src/core/decrypt/utils/loaded_sessions_store.ts +317 -0
- package/src/core/{eme → decrypt/utils}/media_keys_infos_store.ts +4 -4
- package/src/core/{eme → decrypt}/utils/persistent_sessions_store.ts +122 -104
- package/src/core/{eme/utils/init_data_container.ts → decrypt/utils/serializable_bytes.ts} +8 -5
- package/src/core/{eme → decrypt/utils}/server_certificate_store.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +5 -7
- package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +2 -3
- package/src/core/init/.initialize_media_source.ts.un~ +0 -0
- package/src/core/init/get_initial_time.ts +2 -1
- package/src/core/init/initialize_directfile.ts +17 -20
- package/src/core/init/initialize_media_source.ts +44 -106
- package/src/core/init/link_drm_and_content.ts +176 -0
- package/src/core/init/manifest_update_scheduler.ts +5 -3
- package/src/core/init/stall_avoider.ts +6 -5
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
- package/src/core/init/types.ts +1 -39
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +2 -1
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +3 -4
- package/src/core/segment_buffers/inventory/segment_inventory.ts +42 -8
- package/src/core/stream/adaptation/adaptation_stream.ts +7 -1
- package/src/core/stream/events_generators.ts +9 -4
- package/src/core/stream/index.ts +1 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +9 -4
- package/src/core/stream/period/create_empty_adaptation_stream.ts +2 -1
- package/src/core/stream/period/get_adaptation_switch_strategy.ts +25 -15
- package/src/core/stream/period/index.ts +1 -0
- package/src/core/stream/period/period_stream.ts +10 -16
- package/src/core/stream/representation/force_garbage_collection.ts +2 -2
- package/src/core/stream/representation/get_buffer_status.ts +28 -16
- package/src/core/stream/representation/get_needed_segments.ts +124 -28
- package/src/core/stream/representation/get_segment_priority.ts +1 -2
- package/src/core/stream/representation/push_media_segment.ts +3 -2
- package/src/core/stream/representation/representation_stream.ts +30 -7
- package/src/core/stream/types.ts +1 -1
- package/src/default_config.ts +1241 -0
- package/src/experimental/index.ts +5 -0
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +7 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +9 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +2 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +2 -3
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +3 -5
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +3 -5
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +1 -2
- package/src/features/__tests__/initialize_features.test.ts +2 -2
- package/src/features/features_object.ts +1 -1
- package/src/features/initialize_features.ts +1 -1
- package/src/features/list/__tests__/eme.test.ts +5 -5
- package/src/features/list/eme.ts +5 -5
- package/src/features/types.ts +3 -10
- package/src/manifest/manifest.ts +6 -76
- package/src/manifest/representation.ts +36 -3
- package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +109 -64
- package/src/parsers/manifest/dash/common/parse_mpd.ts +1 -2
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +4 -5
- package/src/parsers/manifest/smooth/create_parser.ts +1 -0
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
- package/src/public_types.ts +6 -1
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +1 -2
- package/src/transports/dash/image_pipelines.ts +15 -14
- package/src/transports/dash/init_segment_loader.ts +1 -2
- package/src/transports/dash/manifest_parser.ts +2 -3
- package/src/transports/dash/segment_loader.ts +4 -5
- package/src/transports/dash/segment_parser.ts +5 -0
- package/src/transports/dash/text_loader.ts +2 -3
- package/src/transports/dash/text_parser.ts +8 -0
- package/src/transports/local/segment_loader.ts +2 -3
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/metaplaylist/pipelines.ts +2 -3
- package/src/transports/smooth/pipelines.ts +26 -14
- package/src/transports/smooth/segment_loader.ts +5 -6
- package/src/transports/types.ts +22 -0
- package/src/transports/utils/call_custom_manifest_loader.ts +1 -2
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- package/src/utils/cancellable_sleep.ts +1 -2
- package/src/utils/cast_to_observable.ts +0 -2
- package/src/utils/deep_merge.ts +46 -0
- package/src/utils/reference.ts +116 -23
- package/src/utils/request/fetch.ts +1 -2
- package/src/utils/request/xhr.ts +3 -3
- package/src/utils/rx-from_cancellable_promise.ts +7 -2
- package/src/utils/task_canceller.ts +6 -4
- package/tsconfig.json +0 -1
- package/tsconfig.modules.json +0 -1
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +0 -57
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.d.ts +0 -59
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +0 -50
- package/dist/_esm5.processed/core/eme/create_session.js +0 -126
- package/dist/_esm5.processed/core/eme/dispose_eme.d.ts +0 -19
- package/dist/_esm5.processed/core/eme/dispose_eme.js +0 -23
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +0 -36
- package/dist/_esm5.processed/core/eme/eme_manager.d.ts +0 -31
- package/dist/_esm5.processed/core/eme/eme_manager.js +0 -278
- package/dist/_esm5.processed/core/eme/find_key_system.js +0 -253
- package/dist/_esm5.processed/core/eme/get_media_keys.js +0 -85
- package/dist/_esm5.processed/core/eme/get_session.js +0 -68
- package/dist/_esm5.processed/core/eme/init_media_keys.js +0 -66
- package/dist/_esm5.processed/core/eme/session_events_listener.d.ts +0 -41
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +0 -85
- package/dist/_esm5.processed/core/eme/utils/close_session.js +0 -81
- package/dist/_esm5.processed/core/eme/utils/init_data_store.d.ts +0 -115
- package/dist/_esm5.processed/core/eme/utils/init_data_store.js +0 -181
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.d.ts +0 -123
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +0 -173
- package/dist/_esm5.processed/core/init/create_eme_manager.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_eme_manager.js +0 -52
- package/src/core/eme/README.md +0 -26
- package/src/core/eme/__tests__/__global__/get_license.test.ts +0 -414
- package/src/core/eme/__tests__/__global__/init_data.test.ts +0 -908
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +0 -266
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +0 -364
- package/src/core/eme/__tests__/init_media_keys.test.ts +0 -182
- package/src/core/eme/clean_old_loaded_sessions.ts +0 -96
- package/src/core/eme/clear_eme_session.ts +0 -62
- package/src/core/eme/create_session.ts +0 -187
- package/src/core/eme/dispose_eme.ts +0 -25
- package/src/core/eme/dispose_media_keys.ts +0 -46
- package/src/core/eme/eme_manager.ts +0 -387
- package/src/core/eme/get_media_keys.ts +0 -141
- package/src/core/eme/get_session.ts +0 -135
- package/src/core/eme/init_media_keys.ts +0 -106
- package/src/core/eme/set_server_certificate.ts +0 -115
- package/src/core/eme/utils/close_session.ts +0 -113
- package/src/core/eme/utils/init_data_store.ts +0 -234
- package/src/core/eme/utils/loaded_sessions_store.ts +0 -235
- package/src/core/init/create_eme_manager.ts +0 -95
- package/src/utils/__tests__/promise.test.ts +0 -23
- package/src/utils/promise.ts +0 -20
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import config from "../../config";
|
|
17
17
|
import EWMA from "./utils/ewma";
|
|
18
|
-
var ABR_MINIMUM_TOTAL_BYTES = config.ABR_MINIMUM_TOTAL_BYTES, ABR_MINIMUM_CHUNK_SIZE = config.ABR_MINIMUM_CHUNK_SIZE, ABR_FAST_EMA = config.ABR_FAST_EMA, ABR_SLOW_EMA = config.ABR_SLOW_EMA;
|
|
19
18
|
/**
|
|
20
19
|
* Calculate a mean bandwidth based on the bytes downloaded and the amount
|
|
21
20
|
* of time needed to do so.
|
|
@@ -25,6 +24,7 @@ var ABR_MINIMUM_TOTAL_BYTES = config.ABR_MINIMUM_TOTAL_BYTES, ABR_MINIMUM_CHUNK_
|
|
|
25
24
|
*/
|
|
26
25
|
var BandwidthEstimator = /** @class */ (function () {
|
|
27
26
|
function BandwidthEstimator() {
|
|
27
|
+
var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
|
|
28
28
|
/**
|
|
29
29
|
* A fast-moving average.
|
|
30
30
|
* @private
|
|
@@ -49,6 +49,7 @@ var BandwidthEstimator = /** @class */ (function () {
|
|
|
49
49
|
* request.
|
|
50
50
|
*/
|
|
51
51
|
BandwidthEstimator.prototype.addSample = function (durationInMs, numberOfBytes) {
|
|
52
|
+
var ABR_MINIMUM_CHUNK_SIZE = config.getCurrent().ABR_MINIMUM_CHUNK_SIZE;
|
|
52
53
|
if (numberOfBytes < ABR_MINIMUM_CHUNK_SIZE) {
|
|
53
54
|
return;
|
|
54
55
|
}
|
|
@@ -63,6 +64,7 @@ var BandwidthEstimator = /** @class */ (function () {
|
|
|
63
64
|
* @returns {Number|undefined}
|
|
64
65
|
*/
|
|
65
66
|
BandwidthEstimator.prototype.getEstimate = function () {
|
|
67
|
+
var ABR_MINIMUM_TOTAL_BYTES = config.getCurrent().ABR_MINIMUM_TOTAL_BYTES;
|
|
66
68
|
if (this._bytesSampled < ABR_MINIMUM_TOTAL_BYTES) {
|
|
67
69
|
return undefined;
|
|
68
70
|
}
|
|
@@ -74,6 +76,7 @@ var BandwidthEstimator = /** @class */ (function () {
|
|
|
74
76
|
* Reset the bandwidth estimation.
|
|
75
77
|
*/
|
|
76
78
|
BandwidthEstimator.prototype.reset = function () {
|
|
79
|
+
var _a = config.getCurrent(), ABR_FAST_EMA = _a.ABR_FAST_EMA, ABR_SLOW_EMA = _a.ABR_SLOW_EMA;
|
|
77
80
|
this._fastEWMA = new EWMA(ABR_FAST_EMA);
|
|
78
81
|
this._slowEWMA = new EWMA(ABR_SLOW_EMA);
|
|
79
82
|
this._bytesSampled = 0;
|
|
@@ -17,7 +17,6 @@ import config from "../../config";
|
|
|
17
17
|
import log from "../../log";
|
|
18
18
|
import arrayFind from "../../utils/array_find";
|
|
19
19
|
import EWMA from "./utils/ewma";
|
|
20
|
-
var ABR_REGULAR_FACTOR = config.ABR_REGULAR_FACTOR, ABR_STARVATION_DURATION_DELTA = config.ABR_STARVATION_DURATION_DELTA, ABR_STARVATION_FACTOR = config.ABR_STARVATION_FACTOR, ABR_STARVATION_GAP = config.ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP = config.OUT_OF_STARVATION_GAP;
|
|
21
20
|
/**
|
|
22
21
|
* Get pending segment request(s) starting with the asked segment position.
|
|
23
22
|
* @param {Object} requests - Every requests pending, in a chronological
|
|
@@ -214,6 +213,7 @@ function shouldDirectlySwitchToLowBitrate(playbackInfo, requests, lowLatencyMode
|
|
|
214
213
|
*/
|
|
215
214
|
var NetworkAnalyzer = /** @class */ (function () {
|
|
216
215
|
function NetworkAnalyzer(initialBitrate, lowLatencyMode) {
|
|
216
|
+
var _a = config.getCurrent(), ABR_STARVATION_GAP = _a.ABR_STARVATION_GAP, OUT_OF_STARVATION_GAP = _a.OUT_OF_STARVATION_GAP, ABR_STARVATION_FACTOR = _a.ABR_STARVATION_FACTOR, ABR_REGULAR_FACTOR = _a.ABR_REGULAR_FACTOR;
|
|
217
217
|
this._initialBitrate = initialBitrate;
|
|
218
218
|
this._inStarvationMode = false;
|
|
219
219
|
this._lowLatencyMode = lowLatencyMode;
|
|
@@ -253,6 +253,7 @@ var NetworkAnalyzer = /** @class */ (function () {
|
|
|
253
253
|
var bufferGap = playbackInfo.bufferGap, position = playbackInfo.position, duration = playbackInfo.duration;
|
|
254
254
|
var realBufferGap = isFinite(bufferGap) ? bufferGap :
|
|
255
255
|
0;
|
|
256
|
+
var ABR_STARVATION_DURATION_DELTA = config.getCurrent().ABR_STARVATION_DURATION_DELTA;
|
|
256
257
|
// check if should get in/out of starvation mode
|
|
257
258
|
if (isNaN(duration) ||
|
|
258
259
|
realBufferGap + position < duration - ABR_STARVATION_DURATION_DELTA) {
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import config from "../../config";
|
|
17
|
-
var FORCED_ENDED_THRESHOLD = config.FORCED_ENDED_THRESHOLD;
|
|
18
17
|
/** Player state dictionnary. */
|
|
19
18
|
export var PLAYER_STATES = { STOPPED: "STOPPED",
|
|
20
19
|
LOADED: "LOADED",
|
|
@@ -35,6 +34,7 @@ export var PLAYER_STATES = { STOPPED: "STOPPED",
|
|
|
35
34
|
* @returns {string}
|
|
36
35
|
*/
|
|
37
36
|
export default function getLoadedContentState(mediaElement, isPlaying, stalledStatus) {
|
|
37
|
+
var FORCED_ENDED_THRESHOLD = config.getCurrent().FORCED_ENDED_THRESHOLD;
|
|
38
38
|
if (mediaElement.ended) {
|
|
39
39
|
return PLAYER_STATES.ENDED;
|
|
40
40
|
}
|
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import PlaybackObserver from "./playback_observer";
|
|
17
17
|
import Player from "./public_api";
|
|
18
|
-
export { IStreamEvent, IStreamEventData, } from "./public_api";
|
|
18
|
+
export { IBitrateEstimate, IPositionUpdateItem, IStreamEvent, IStreamEventData, } from "./public_api";
|
|
19
19
|
export { PlaybackObserver };
|
|
20
|
+
export { IPlayerState } from "./get_player_state";
|
|
20
21
|
export { IPlaybackObservation, IPlaybackObserverEventType, IReadOnlyPlaybackObserver, IFreezingStatus, IRebufferingStatus, } from "./playback_observer";
|
|
21
22
|
export { IConstructorOptions, ILoadVideoOptions, ITransportOptions, IKeySystemOption, ISupplementaryTextTrackOption, ISupplementaryImageTrackOption, IDefaultAudioTrackOption, IDefaultTextTrackOption, INetworkConfigOption, IStartAtOption, } from "./option_utils";
|
|
22
23
|
export { ITMAudioTrackListItem, ITMTextTrackListItem, ITMVideoTrackListItem, ITMAudioTrack, ITMTextTrack, ITMVideoTrack, IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference, } from "./track_choice_manager";
|
|
@@ -131,8 +131,9 @@ function createVideoTracks(videoTracks) {
|
|
|
131
131
|
var MediaElementTrackChoiceManager = /** @class */ (function (_super) {
|
|
132
132
|
__extends(MediaElementTrackChoiceManager, _super);
|
|
133
133
|
function MediaElementTrackChoiceManager(mediaElement) {
|
|
134
|
+
var _this = this;
|
|
134
135
|
var _a, _b, _c;
|
|
135
|
-
|
|
136
|
+
_this = _super.call(this) || this;
|
|
136
137
|
_this._preferredAudioTracks = [];
|
|
137
138
|
_this._preferredTextTracks = [];
|
|
138
139
|
_this._preferredVideoTracks = [];
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { IRepresentationFilter } from "../../manifest";
|
|
17
17
|
import { ICustomManifestLoader, ICustomSegmentLoader, ILoadedManifestFormat, ITransportOptions as IParsedTransportOptions } from "../../transports";
|
|
18
|
-
import { IKeySystemOption } from "../
|
|
18
|
+
import { IKeySystemOption } from "../decrypt";
|
|
19
|
+
import { IAudioTrackSwitchingMode } from "../stream";
|
|
19
20
|
import { IAudioTrackPreference, ITextTrackPreference, IVideoTrackPreference } from "./track_choice_manager";
|
|
20
21
|
export { IKeySystemOption };
|
|
21
22
|
/** Value of the `serverSyncInfos` transport option. */
|
|
@@ -154,6 +155,7 @@ export interface IConstructorOptions {
|
|
|
154
155
|
maxBufferAhead?: number;
|
|
155
156
|
maxBufferBehind?: number;
|
|
156
157
|
wantedBufferAhead?: number;
|
|
158
|
+
maxVideoBufferSize?: number;
|
|
157
159
|
limitVideoWidth?: boolean;
|
|
158
160
|
throttleWhenHidden?: boolean;
|
|
159
161
|
throttleVideoBitrateWhenHidden?: boolean;
|
|
@@ -174,6 +176,7 @@ export interface IParsedConstructorOptions {
|
|
|
174
176
|
maxBufferAhead: number;
|
|
175
177
|
maxBufferBehind: number;
|
|
176
178
|
wantedBufferAhead: number;
|
|
179
|
+
maxVideoBufferSize: number;
|
|
177
180
|
limitVideoWidth: boolean;
|
|
178
181
|
throttleWhenHidden: boolean;
|
|
179
182
|
throttleVideoBitrateWhenHidden: boolean;
|
|
@@ -204,7 +207,7 @@ export interface ILoadVideoOptions {
|
|
|
204
207
|
textTrackElement?: HTMLElement;
|
|
205
208
|
manualBitrateSwitchingMode?: "seamless" | "direct";
|
|
206
209
|
enableFastSwitching?: boolean;
|
|
207
|
-
audioTrackSwitchingMode?:
|
|
210
|
+
audioTrackSwitchingMode?: IAudioTrackSwitchingMode;
|
|
208
211
|
onCodecSwitch?: "continue" | "reload";
|
|
209
212
|
supplementaryTextTracks?: ISupplementaryTextTrackOption[];
|
|
210
213
|
supplementaryImageTracks?: ISupplementaryImageTrackOption[];
|
|
@@ -230,7 +233,7 @@ interface IParsedLoadVideoOptionsBase {
|
|
|
230
233
|
startAt: IParsedStartAtOption | undefined;
|
|
231
234
|
manualBitrateSwitchingMode: "seamless" | "direct";
|
|
232
235
|
enableFastSwitching: boolean;
|
|
233
|
-
audioTrackSwitchingMode:
|
|
236
|
+
audioTrackSwitchingMode: IAudioTrackSwitchingMode;
|
|
234
237
|
onCodecSwitch: "continue" | "reload";
|
|
235
238
|
}
|
|
236
239
|
/**
|
|
@@ -24,7 +24,6 @@ import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
|
24
24
|
import { normalizeAudioTrack, normalizeTextTrack, } from "../../utils/languages";
|
|
25
25
|
import objectAssign from "../../utils/object_assign";
|
|
26
26
|
import warnOnce from "../../utils/warn_once";
|
|
27
|
-
var DEFAULT_AUDIO_TRACK_SWITCHING_MODE = config.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = config.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = config.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = config.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_INITIAL_BITRATES = config.DEFAULT_INITIAL_BITRATES, DEFAULT_LIMIT_VIDEO_WIDTH = config.DEFAULT_LIMIT_VIDEO_WIDTH, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = config.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_MIN_BITRATES = config.DEFAULT_MIN_BITRATES, DEFAULT_MAX_BITRATES = config.DEFAULT_MAX_BITRATES, DEFAULT_MAX_BUFFER_AHEAD = config.DEFAULT_MAX_BUFFER_AHEAD, DEFAULT_MAX_BUFFER_BEHIND = config.DEFAULT_MAX_BUFFER_BEHIND, DEFAULT_SHOW_NATIVE_SUBTITLE = config.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_STOP_AT_END = config.DEFAULT_STOP_AT_END, DEFAULT_TEXT_TRACK_MODE = config.DEFAULT_TEXT_TRACK_MODE, DEFAULT_THROTTLE_WHEN_HIDDEN = config.DEFAULT_THROTTLE_WHEN_HIDDEN, DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN = config.DEFAULT_THROTTLE_VIDEO_BITRATE_WHEN_HIDDEN, DEFAULT_WANTED_BUFFER_AHEAD = config.DEFAULT_WANTED_BUFFER_AHEAD;
|
|
28
27
|
/**
|
|
29
28
|
* Parse options given to the API constructor and set default options as found
|
|
30
29
|
* in the config.
|
|
@@ -38,6 +37,7 @@ function parseConstructorOptions(options) {
|
|
|
38
37
|
var maxBufferAhead;
|
|
39
38
|
var maxBufferBehind;
|
|
40
39
|
var wantedBufferAhead;
|
|
40
|
+
var maxVideoBufferSize;
|
|
41
41
|
var throttleWhenHidden;
|
|
42
42
|
var throttleVideoBitrateWhenHidden;
|
|
43
43
|
var preferredAudioTracks;
|
|
@@ -50,6 +50,7 @@ function parseConstructorOptions(options) {
|
|
|
50
50
|
var minVideoBitrate;
|
|
51
51
|
var maxAudioBitrate;
|
|
52
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;
|
|
53
54
|
if (isNullOrUndefined(options.maxBufferAhead)) {
|
|
54
55
|
maxBufferAhead = DEFAULT_MAX_BUFFER_AHEAD;
|
|
55
56
|
}
|
|
@@ -79,6 +80,17 @@ function parseConstructorOptions(options) {
|
|
|
79
80
|
/* eslint-enable max-len */
|
|
80
81
|
}
|
|
81
82
|
}
|
|
83
|
+
if (isNullOrUndefined(options.maxVideoBufferSize)) {
|
|
84
|
+
maxVideoBufferSize = DEFAULT_MAX_VIDEO_BUFFER_SIZE;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
maxVideoBufferSize = Number(options.maxVideoBufferSize);
|
|
88
|
+
if (isNaN(maxVideoBufferSize)) {
|
|
89
|
+
/* eslint-disable max-len */
|
|
90
|
+
throw new Error("Invalid maxVideoBufferSize parameter. Should be a number.");
|
|
91
|
+
/* eslint-enable max-len */
|
|
92
|
+
}
|
|
93
|
+
}
|
|
82
94
|
var limitVideoWidth = isNullOrUndefined(options.limitVideoWidth) ?
|
|
83
95
|
DEFAULT_LIMIT_VIDEO_WIDTH :
|
|
84
96
|
!!options.limitVideoWidth;
|
|
@@ -218,7 +230,7 @@ function parseConstructorOptions(options) {
|
|
|
218
230
|
}
|
|
219
231
|
var stopAtEnd = isNullOrUndefined(options.stopAtEnd) ? DEFAULT_STOP_AT_END :
|
|
220
232
|
!!options.stopAtEnd;
|
|
221
|
-
return { maxBufferAhead: maxBufferAhead, maxBufferBehind: maxBufferBehind, limitVideoWidth: limitVideoWidth, videoElement: videoElement, wantedBufferAhead: wantedBufferAhead, throttleWhenHidden: throttleWhenHidden, throttleVideoBitrateWhenHidden: throttleVideoBitrateWhenHidden, preferredAudioTracks: preferredAudioTracks, preferredTextTracks: preferredTextTracks, preferredVideoTracks: preferredVideoTracks, initialAudioBitrate: initialAudioBitrate, initialVideoBitrate: initialVideoBitrate, minAudioBitrate: minAudioBitrate, minVideoBitrate: minVideoBitrate, maxAudioBitrate: maxAudioBitrate, maxVideoBitrate: maxVideoBitrate, stopAtEnd: 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 };
|
|
222
234
|
}
|
|
223
235
|
/**
|
|
224
236
|
* Check the format of given reload options.
|
|
@@ -264,6 +276,7 @@ function parseLoadVideoOptions(options) {
|
|
|
264
276
|
var textTrackMode;
|
|
265
277
|
var textTrackElement;
|
|
266
278
|
var startAt;
|
|
279
|
+
var _g = config.getCurrent(), DEFAULT_AUDIO_TRACK_SWITCHING_MODE = _g.DEFAULT_AUDIO_TRACK_SWITCHING_MODE, DEFAULT_AUTO_PLAY = _g.DEFAULT_AUTO_PLAY, DEFAULT_CODEC_SWITCHING_BEHAVIOR = _g.DEFAULT_CODEC_SWITCHING_BEHAVIOR, DEFAULT_ENABLE_FAST_SWITCHING = _g.DEFAULT_ENABLE_FAST_SWITCHING, DEFAULT_MANUAL_BITRATE_SWITCHING_MODE = _g.DEFAULT_MANUAL_BITRATE_SWITCHING_MODE, DEFAULT_SHOW_NATIVE_SUBTITLE = _g.DEFAULT_SHOW_NATIVE_SUBTITLE, DEFAULT_TEXT_TRACK_MODE = _g.DEFAULT_TEXT_TRACK_MODE;
|
|
267
280
|
if (isNullOrUndefined(options)) {
|
|
268
281
|
throw new Error("No option set on loadVideo");
|
|
269
282
|
}
|
|
@@ -313,11 +326,12 @@ function parseLoadVideoOptions(options) {
|
|
|
313
326
|
var audioTrackSwitchingMode = isNullOrUndefined(options.audioTrackSwitchingMode)
|
|
314
327
|
? DEFAULT_AUDIO_TRACK_SWITCHING_MODE
|
|
315
328
|
: options.audioTrackSwitchingMode;
|
|
316
|
-
if (!arrayIncludes(["seamless", "direct"], audioTrackSwitchingMode)) {
|
|
329
|
+
if (!arrayIncludes(["seamless", "direct", "reload"], audioTrackSwitchingMode)) {
|
|
317
330
|
log.warn("The `audioTrackSwitchingMode` loadVideo option must match one of " +
|
|
318
331
|
"the following strategy name:\n" +
|
|
319
332
|
"- `seamless`\n" +
|
|
320
333
|
"- `direct`\n" +
|
|
334
|
+
"- `reload`\n" +
|
|
321
335
|
"If badly set, " + DEFAULT_AUDIO_TRACK_SWITCHING_MODE +
|
|
322
336
|
" strategy will be used as default");
|
|
323
337
|
audioTrackSwitchingMode = DEFAULT_AUDIO_TRACK_SWITCHING_MODE;
|
|
@@ -349,8 +363,8 @@ function parseLoadVideoOptions(options) {
|
|
|
349
363
|
"Please use the `TextTrackRenderer` tool instead.");
|
|
350
364
|
var supplementaryTextTracks = Array.isArray(options.supplementaryTextTracks) ?
|
|
351
365
|
options.supplementaryTextTracks : [options.supplementaryTextTracks];
|
|
352
|
-
for (var
|
|
353
|
-
var supplementaryTextTrack = supplementaryTextTracks_1[
|
|
366
|
+
for (var _h = 0, supplementaryTextTracks_1 = supplementaryTextTracks; _h < supplementaryTextTracks_1.length; _h++) {
|
|
367
|
+
var supplementaryTextTrack = supplementaryTextTracks_1[_h];
|
|
354
368
|
if (typeof supplementaryTextTrack.language !== "string" ||
|
|
355
369
|
typeof supplementaryTextTrack.mimeType !== "string" ||
|
|
356
370
|
typeof supplementaryTextTrack.url !== "string") {
|
|
@@ -365,8 +379,8 @@ function parseLoadVideoOptions(options) {
|
|
|
365
379
|
"Please use the `parseBifThumbnails` tool instead.");
|
|
366
380
|
var supplementaryImageTracks = Array.isArray(options.supplementaryImageTracks) ?
|
|
367
381
|
options.supplementaryImageTracks : [options.supplementaryImageTracks];
|
|
368
|
-
for (var
|
|
369
|
-
var supplementaryImageTrack = supplementaryImageTracks_1[
|
|
382
|
+
for (var _j = 0, supplementaryImageTracks_1 = supplementaryImageTracks; _j < supplementaryImageTracks_1.length; _j++) {
|
|
383
|
+
var supplementaryImageTrack = supplementaryImageTracks_1[_j];
|
|
370
384
|
if (typeof supplementaryImageTrack.mimeType !== "string" ||
|
|
371
385
|
typeof supplementaryImageTrack.url !== "string") {
|
|
372
386
|
throw new Error("Invalid supplementary image track given. " +
|
|
@@ -27,7 +27,6 @@ import config from "../../config";
|
|
|
27
27
|
import log from "../../log";
|
|
28
28
|
import objectAssign from "../../utils/object_assign";
|
|
29
29
|
import { getRange } from "../../utils/ranges";
|
|
30
|
-
var SAMPLING_INTERVAL_MEDIASOURCE = config.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = config.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = config.SAMPLING_INTERVAL_NO_MEDIASOURCE, RESUME_GAP_AFTER_SEEKING = config.RESUME_GAP_AFTER_SEEKING, RESUME_GAP_AFTER_NOT_ENOUGH_DATA = config.RESUME_GAP_AFTER_NOT_ENOUGH_DATA, RESUME_GAP_AFTER_BUFFERING = config.RESUME_GAP_AFTER_BUFFERING, REBUFFERING_GAP = config.REBUFFERING_GAP, MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING = config.MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING;
|
|
31
30
|
/**
|
|
32
31
|
* HTMLMediaElement Events for which playback observations are calculated and
|
|
33
32
|
* emitted.
|
|
@@ -145,6 +144,7 @@ var PlaybackObserver = /** @class */ (function () {
|
|
|
145
144
|
PlaybackObserver.prototype._createInnerObservable = function () {
|
|
146
145
|
var _this = this;
|
|
147
146
|
return observableDefer(function () {
|
|
147
|
+
var _a = config.getCurrent(), SAMPLING_INTERVAL_MEDIASOURCE = _a.SAMPLING_INTERVAL_MEDIASOURCE, SAMPLING_INTERVAL_LOW_LATENCY = _a.SAMPLING_INTERVAL_LOW_LATENCY, SAMPLING_INTERVAL_NO_MEDIASOURCE = _a.SAMPLING_INTERVAL_NO_MEDIASOURCE;
|
|
148
148
|
var getCurrentObservation = function (event) {
|
|
149
149
|
var _a;
|
|
150
150
|
var tmpEvt = event;
|
|
@@ -212,6 +212,7 @@ function getRebufferingEndGap(rebufferingStatus, lowLatencyMode) {
|
|
|
212
212
|
}
|
|
213
213
|
var suffix = lowLatencyMode ? "LOW_LATENCY" :
|
|
214
214
|
"DEFAULT";
|
|
215
|
+
var _a = config.getCurrent(), RESUME_GAP_AFTER_SEEKING = _a.RESUME_GAP_AFTER_SEEKING, RESUME_GAP_AFTER_NOT_ENOUGH_DATA = _a.RESUME_GAP_AFTER_NOT_ENOUGH_DATA, RESUME_GAP_AFTER_BUFFERING = _a.RESUME_GAP_AFTER_BUFFERING;
|
|
215
216
|
switch (rebufferingStatus.reason) {
|
|
216
217
|
case "seeking":
|
|
217
218
|
return RESUME_GAP_AFTER_SEEKING[suffix];
|
|
@@ -228,6 +229,7 @@ function getRebufferingEndGap(rebufferingStatus, lowLatencyMode) {
|
|
|
228
229
|
* @returns {Boolean}
|
|
229
230
|
*/
|
|
230
231
|
function hasLoadedUntilTheEnd(currentRange, duration, lowLatencyMode) {
|
|
232
|
+
var REBUFFERING_GAP = config.getCurrent().REBUFFERING_GAP;
|
|
231
233
|
var suffix = lowLatencyMode ? "LOW_LATENCY" :
|
|
232
234
|
"DEFAULT";
|
|
233
235
|
return currentRange !== null &&
|
|
@@ -261,6 +263,7 @@ function getMediaInfos(mediaElement, event) {
|
|
|
261
263
|
*/
|
|
262
264
|
function getRebufferingStatus(prevObservation, currentInfo, _a) {
|
|
263
265
|
var withMediaSource = _a.withMediaSource, lowLatencyMode = _a.lowLatencyMode;
|
|
266
|
+
var REBUFFERING_GAP = config.getCurrent().REBUFFERING_GAP;
|
|
264
267
|
var currentEvt = currentInfo.event, currentTime = currentInfo.position, bufferGap = currentInfo.bufferGap, currentRange = currentInfo.currentRange, duration = currentInfo.duration, paused = currentInfo.paused, readyState = currentInfo.readyState, ended = currentInfo.ended;
|
|
265
268
|
var prevRebuffering = prevObservation.rebuffering, prevEvt = prevObservation.event, prevTime = prevObservation.position;
|
|
266
269
|
var fullyLoaded = hasLoadedUntilTheEnd(currentRange, duration, lowLatencyMode);
|
|
@@ -354,6 +357,7 @@ function getRebufferingStatus(prevObservation, currentInfo, _a) {
|
|
|
354
357
|
* @returns {Object|null}
|
|
355
358
|
*/
|
|
356
359
|
function getFreezingStatus(prevObservation, currentInfo) {
|
|
360
|
+
var MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING = config.getCurrent().MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING;
|
|
357
361
|
if (prevObservation.freezing) {
|
|
358
362
|
if (currentInfo.ended ||
|
|
359
363
|
currentInfo.paused ||
|
|
@@ -24,77 +24,6 @@ import { IInbandEvent } from "../stream";
|
|
|
24
24
|
import { IPlayerState } from "./get_player_state";
|
|
25
25
|
import { IConstructorOptions, ILoadVideoOptions } from "./option_utils";
|
|
26
26
|
import { IAudioTrackPreference, ITextTrackPreference, ITMAudioTrack, ITMAudioTrackListItem, ITMTextTrack, ITMTextTrackListItem, ITMVideoTrack, ITMVideoTrackListItem, IVideoTrackPreference } from "./track_choice_manager";
|
|
27
|
-
/** Payload emitted with a `positionUpdate` event. */
|
|
28
|
-
interface IPositionUpdateItem {
|
|
29
|
-
/** current position the player is in, in seconds. */
|
|
30
|
-
position: number;
|
|
31
|
-
/** Last position set for the current media currently, in seconds. */
|
|
32
|
-
duration: number;
|
|
33
|
-
/** Playback rate (i.e. speed) at which the current media is played. */
|
|
34
|
-
playbackRate: number;
|
|
35
|
-
/** Amount of buffer available for now in front of the current position, in seconds. */
|
|
36
|
-
bufferGap: number;
|
|
37
|
-
/** Current maximum seekable position. */
|
|
38
|
-
maximumBufferTime?: number | undefined;
|
|
39
|
-
wallClockTime?: number | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* Only for live contents. Difference between the "live edge" and the current
|
|
42
|
-
* position, in seconds.
|
|
43
|
-
*/
|
|
44
|
-
liveGap?: number | undefined;
|
|
45
|
-
}
|
|
46
|
-
/** Payload emitted with a `bitrateEstimationChange` event. */
|
|
47
|
-
interface IBitrateEstimate {
|
|
48
|
-
/** The type of buffer this estimate was done for (e.g. "audio). */
|
|
49
|
-
type: IBufferType;
|
|
50
|
-
/** The calculated bitrate, in bits per seconds. */
|
|
51
|
-
bitrate: number | undefined;
|
|
52
|
-
}
|
|
53
|
-
export declare type IStreamEvent = {
|
|
54
|
-
data: IStreamEventData;
|
|
55
|
-
start: number;
|
|
56
|
-
end: number;
|
|
57
|
-
onExit?: () => void;
|
|
58
|
-
} | {
|
|
59
|
-
data: IStreamEventData;
|
|
60
|
-
start: number;
|
|
61
|
-
};
|
|
62
|
-
/** Every events sent by the RxPlayer's public API. */
|
|
63
|
-
interface IPublicAPIEvent {
|
|
64
|
-
playerStateChange: string;
|
|
65
|
-
positionUpdate: IPositionUpdateItem;
|
|
66
|
-
audioTrackChange: ITMAudioTrack | null;
|
|
67
|
-
textTrackChange: ITMTextTrack | null;
|
|
68
|
-
videoTrackChange: ITMVideoTrack | null;
|
|
69
|
-
audioBitrateChange: number;
|
|
70
|
-
videoBitrateChange: number;
|
|
71
|
-
imageTrackUpdate: {
|
|
72
|
-
data: IBifThumbnail[];
|
|
73
|
-
};
|
|
74
|
-
fullscreenChange: boolean;
|
|
75
|
-
bitrateEstimationChange: IBitrateEstimate;
|
|
76
|
-
volumeChange: number;
|
|
77
|
-
error: ICustomError | Error;
|
|
78
|
-
warning: ICustomError | Error;
|
|
79
|
-
nativeTextTracksChange: TextTrack[];
|
|
80
|
-
periodChange: Period;
|
|
81
|
-
availableAudioBitratesChange: number[];
|
|
82
|
-
availableVideoBitratesChange: number[];
|
|
83
|
-
availableAudioTracksChange: ITMAudioTrackListItem[];
|
|
84
|
-
availableTextTracksChange: ITMTextTrackListItem[];
|
|
85
|
-
availableVideoTracksChange: ITMVideoTrackListItem[];
|
|
86
|
-
decipherabilityUpdate: Array<{
|
|
87
|
-
manifest: Manifest;
|
|
88
|
-
period: Period;
|
|
89
|
-
adaptation: Adaptation;
|
|
90
|
-
representation: Representation;
|
|
91
|
-
}>;
|
|
92
|
-
seeking: null;
|
|
93
|
-
seeked: null;
|
|
94
|
-
streamEvent: IStreamEvent;
|
|
95
|
-
streamEventSkip: IStreamEvent;
|
|
96
|
-
inbandEvents: IInbandEvent[];
|
|
97
|
-
}
|
|
98
27
|
/**
|
|
99
28
|
* @class Player
|
|
100
29
|
* @extends EventEmitter
|
|
@@ -594,6 +523,12 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
594
523
|
* @param {Number} sizeInSeconds
|
|
595
524
|
*/
|
|
596
525
|
setWantedBufferAhead(sizeInSeconds: number): void;
|
|
526
|
+
/**
|
|
527
|
+
* Set the max buffer size the buffer should take in memory
|
|
528
|
+
* The player . will stop downloading chunks when this size is reached.
|
|
529
|
+
* @param {Number} sizeInKBytes
|
|
530
|
+
*/
|
|
531
|
+
setMaxVideoBufferSize(sizeInKBytes: number): void;
|
|
597
532
|
/**
|
|
598
533
|
* Returns the max buffer size for the buffer behind the current position.
|
|
599
534
|
* @returns {Number}
|
|
@@ -609,6 +544,11 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
609
544
|
* @returns {Number}
|
|
610
545
|
*/
|
|
611
546
|
getWantedBufferAhead(): number;
|
|
547
|
+
/**
|
|
548
|
+
* Returns the max buffer memory size for the buffer in kilobytes
|
|
549
|
+
* @returns {Number}
|
|
550
|
+
*/
|
|
551
|
+
getMaxVideoBufferSize(): number;
|
|
612
552
|
/**
|
|
613
553
|
* Returns type of current keysystem (e.g. playready, widevine) if the content
|
|
614
554
|
* is encrypted. null otherwise.
|
|
@@ -865,5 +805,76 @@ declare class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
865
805
|
private _priv_triggerCurrentBitrateChangeEvent;
|
|
866
806
|
private _priv_getCurrentRepresentations;
|
|
867
807
|
}
|
|
808
|
+
/** Payload emitted with a `positionUpdate` event. */
|
|
809
|
+
export interface IPositionUpdateItem {
|
|
810
|
+
/** current position the player is in, in seconds. */
|
|
811
|
+
position: number;
|
|
812
|
+
/** Last position set for the current media currently, in seconds. */
|
|
813
|
+
duration: number;
|
|
814
|
+
/** Playback rate (i.e. speed) at which the current media is played. */
|
|
815
|
+
playbackRate: number;
|
|
816
|
+
/** Amount of buffer available for now in front of the current position, in seconds. */
|
|
817
|
+
bufferGap: number;
|
|
818
|
+
/** Current maximum seekable position. */
|
|
819
|
+
maximumBufferTime?: number | undefined;
|
|
820
|
+
wallClockTime?: number | undefined;
|
|
821
|
+
/**
|
|
822
|
+
* Only for live contents. Difference between the "live edge" and the current
|
|
823
|
+
* position, in seconds.
|
|
824
|
+
*/
|
|
825
|
+
liveGap?: number | undefined;
|
|
826
|
+
}
|
|
827
|
+
/** Payload emitted with a `bitrateEstimationChange` event. */
|
|
828
|
+
export interface IBitrateEstimate {
|
|
829
|
+
/** The type of buffer this estimate was done for (e.g. "audio). */
|
|
830
|
+
type: IBufferType;
|
|
831
|
+
/** The calculated bitrate, in bits per seconds. */
|
|
832
|
+
bitrate: number | undefined;
|
|
833
|
+
}
|
|
834
|
+
export declare type IStreamEvent = {
|
|
835
|
+
data: IStreamEventData;
|
|
836
|
+
start: number;
|
|
837
|
+
end: number;
|
|
838
|
+
onExit?: () => void;
|
|
839
|
+
} | {
|
|
840
|
+
data: IStreamEventData;
|
|
841
|
+
start: number;
|
|
842
|
+
};
|
|
843
|
+
/** Every events sent by the RxPlayer's public API. */
|
|
844
|
+
interface IPublicAPIEvent {
|
|
845
|
+
playerStateChange: string;
|
|
846
|
+
positionUpdate: IPositionUpdateItem;
|
|
847
|
+
audioTrackChange: ITMAudioTrack | null;
|
|
848
|
+
textTrackChange: ITMTextTrack | null;
|
|
849
|
+
videoTrackChange: ITMVideoTrack | null;
|
|
850
|
+
audioBitrateChange: number;
|
|
851
|
+
videoBitrateChange: number;
|
|
852
|
+
imageTrackUpdate: {
|
|
853
|
+
data: IBifThumbnail[];
|
|
854
|
+
};
|
|
855
|
+
fullscreenChange: boolean;
|
|
856
|
+
bitrateEstimationChange: IBitrateEstimate;
|
|
857
|
+
volumeChange: number;
|
|
858
|
+
error: ICustomError | Error;
|
|
859
|
+
warning: ICustomError | Error;
|
|
860
|
+
nativeTextTracksChange: TextTrack[];
|
|
861
|
+
periodChange: Period;
|
|
862
|
+
availableAudioBitratesChange: number[];
|
|
863
|
+
availableVideoBitratesChange: number[];
|
|
864
|
+
availableAudioTracksChange: ITMAudioTrackListItem[];
|
|
865
|
+
availableTextTracksChange: ITMTextTrackListItem[];
|
|
866
|
+
availableVideoTracksChange: ITMVideoTrackListItem[];
|
|
867
|
+
decipherabilityUpdate: Array<{
|
|
868
|
+
manifest: Manifest;
|
|
869
|
+
period: Period;
|
|
870
|
+
adaptation: Adaptation;
|
|
871
|
+
representation: Representation;
|
|
872
|
+
}>;
|
|
873
|
+
seeking: null;
|
|
874
|
+
seeked: null;
|
|
875
|
+
streamEvent: IStreamEvent;
|
|
876
|
+
streamEventSkip: IStreamEvent;
|
|
877
|
+
inbandEvents: IInbandEvent[];
|
|
878
|
+
}
|
|
868
879
|
export default Player;
|
|
869
880
|
export { IStreamEventData };
|