rx-player 3.26.2 → 3.27.0-dev.20220317
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/.github/workflows/perfs.yml +22 -0
- package/CHANGELOG.md +33 -1
- 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 +144 -36
- 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 +27 -24
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +53 -34
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +43 -41
- 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 +68 -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/buffer_based_chooser.d.ts +28 -6
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +63 -12
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/network_analyzer.js +2 -1
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +3 -5
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +1 -1
- package/dist/_esm5.processed/core/abr/representation_estimator.js +2 -2
- 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.d.ts +6 -0
- package/dist/_esm5.processed/core/api/media_element_track_choice_manager.js +22 -4
- package/dist/_esm5.processed/core/api/option_utils.d.ts +3 -1
- package/dist/_esm5.processed/core/api/option_utils.js +19 -6
- 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 +72 -33
- package/dist/_esm5.processed/core/api/track_choice_manager.d.ts +6 -6
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.d.ts +7 -51
- package/dist/_esm5.processed/core/{eme → decrypt}/__tests__/__global__/utils.js +30 -75
- package/dist/_esm5.processed/core/{eme → decrypt}/attach_media_keys.d.ts +12 -12
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +104 -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 +41 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +216 -0
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +866 -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 +174 -0
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +21 -0
- 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 +300 -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 +120 -242
- 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 +85 -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 +303 -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.d.ts +4 -4
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +3 -3
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +6 -2
- 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 +1 -1
- package/dist/_esm5.processed/core/init/get_initial_time.js +1 -1
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +3 -3
- package/dist/_esm5.processed/core/init/initialize_directfile.js +11 -17
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +5 -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.d.ts +4 -4
- 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/are_same_stream_events.d.ts +4 -4
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +1 -1
- package/dist/_esm5.processed/core/init/stream_events_emitter/types.d.ts +2 -2
- 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.d.ts +3 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +3 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +32 -31
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.d.ts +4 -4
- 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/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.js +1 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +2 -1
- package/dist/_esm5.processed/core/stream/period/period_stream.js +3 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +5 -6
- 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/errors/request_error.js +3 -1
- 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.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +2 -4
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.d.ts +3 -3
- 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/adaptation.d.ts +2 -2
- package/dist/_esm5.processed/manifest/adaptation.js +3 -1
- package/dist/_esm5.processed/manifest/manifest.d.ts +10 -23
- package/dist/_esm5.processed/manifest/manifest.js +10 -74
- package/dist/_esm5.processed/manifest/period.d.ts +3 -3
- package/dist/_esm5.processed/manifest/representation.d.ts +37 -5
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +18 -18
- package/dist/_esm5.processed/manifest/types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +6 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/is_period_fulfilled.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +14 -14
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +17 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +28 -20
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +20 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +17 -35
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +109 -96
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +1 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +18 -27
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +25 -23
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +21 -15
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +19 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +15 -38
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +8 -8
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +30 -30
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.d.ts +7 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +8 -8
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +28 -28
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.d.ts +3 -2
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +15 -5
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.d.ts +11 -1
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +31 -19
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.d.ts +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.d.ts +1 -1
- package/dist/_esm5.processed/public_types.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +2 -1
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +4 -1
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +1 -1
- package/dist/_esm5.processed/transports/dash/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/dash/segment_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.d.ts +1 -1
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- package/dist/_esm5.processed/transports/local/segment_loader.d.ts +1 -2
- package/dist/_esm5.processed/transports/local/segment_loader.js +1 -1
- 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/manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +69 -11
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +0 -1
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/types.d.ts +58 -30
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.d.ts +1 -1
- package/dist/_esm5.processed/utils/cancellable_sleep.js +1 -1
- package/dist/_esm5.processed/utils/cast_to_observable.d.ts +1 -2
- package/dist/_esm5.processed/utils/cast_to_observable.js +1 -1
- 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.d.ts +4 -5
- package/dist/_esm5.processed/utils/request/fetch.js +8 -6
- package/dist/_esm5.processed/utils/request/xhr.d.ts +6 -6
- package/dist/_esm5.processed/utils/request/xhr.js +3 -2
- package/dist/_esm5.processed/utils/rx-from_cancellable_promise.d.ts +1 -2
- 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 +5242 -3190
- package/dist/rx-player.min.js +1 -1
- package/dummy +1 -0
- package/{dist/_esm5.processed/core/eme/dispose_eme.d.ts → experimental/index.d.ts} +1 -4
- package/{dist/_esm5.processed/core/eme/dispose_media_keys.d.ts → experimental/index.js} +1 -6
- package/package.json +33 -36
- package/scripts/build/templates/experimental/index.d.ts +16 -0
- package/scripts/build/templates/experimental/index.js +16 -0
- package/scripts/doc-generator/generate_header_html.js +6 -7
- package/scripts/doc-generator/generate_page_html.js +3 -4
- package/scripts/doc-generator/generate_page_list_html.js +4 -5
- package/scripts/doc-generator/generate_sidebar_html.js +4 -7
- package/scripts/doc-generator/utils.js +0 -11
- package/scripts/generate_demo_list.js +3 -3
- package/scripts/generate_documentation_list.js +3 -3
- package/scripts/launch_static_server.js +127 -67
- package/scripts/run_standalone_demo.js +1 -0
- package/scripts/start_demo_web_server.js +1 -0
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- package/src/compat/__tests__/fullscreen.test.ts +7 -7
- package/src/compat/__tests__/is_vtt_cue.test.ts +1 -1
- 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 +90 -56
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +28 -41
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +63 -46
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +51 -49
- package/src/compat/eme/generate_key_request.ts +25 -33
- package/src/compat/eme/load_session.ts +29 -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/__tests__/{get_estimate_from_buffer_levels.test.ts → buffer_based_chooser.test.ts} +94 -123
- package/src/core/abr/bandwidth_estimator.ts +4 -4
- package/src/core/abr/buffer_based_chooser.ts +85 -20
- package/src/core/abr/network_analyzer.ts +6 -7
- package/src/core/abr/pending_requests_store.ts +3 -5
- package/src/core/abr/representation_estimator.ts +6 -3
- package/src/core/api/__tests__/get_player_state.test.ts +3 -3
- package/src/core/api/__tests__/option_utils.test.ts +17 -17
- package/src/core/api/get_player_state.ts +1 -1
- package/src/core/api/index.ts +3 -0
- package/src/core/api/media_element_track_choice_manager.ts +22 -3
- package/src/core/api/option_utils.ts +37 -20
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +152 -112
- package/src/core/api/track_choice_manager.ts +10 -9
- 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 +36 -103
- package/src/core/{eme → decrypt}/attach_media_keys.ts +49 -56
- package/src/core/decrypt/clear_on_stop.ts +48 -0
- package/src/core/decrypt/content_decryptor.ts +1158 -0
- package/src/core/decrypt/create_or_load_session.ts +130 -0
- package/src/core/decrypt/create_session.ts +175 -0
- package/src/core/decrypt/dispose_decryption_resources.ts +39 -0
- package/src/core/{eme → decrypt}/find_key_system.ts +126 -134
- 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 +129 -259
- 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} +20 -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 +318 -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 +9 -9
- package/src/core/fetchers/segment/segment_fetcher.ts +10 -7
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- package/src/core/fetchers/utils/try_urls_with_backoff.ts +1 -1
- 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 +19 -22
- package/src/core/init/initialize_media_source.ts +43 -106
- package/src/core/init/link_drm_and_content.ts +176 -0
- package/src/core/init/manifest_update_scheduler.ts +12 -10
- package/src/core/init/stall_avoider.ts +6 -5
- package/src/core/init/stream_events_emitter/are_same_stream_events.ts +4 -4
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +2 -1
- package/src/core/init/stream_events_emitter/types.ts +2 -2
- 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 +6 -7
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +32 -31
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +4 -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/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 +1 -1
- package/src/core/stream/period/period_stream.ts +5 -2
- package/src/core/stream/representation/force_garbage_collection.ts +5 -7
- 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/errors/request_error.ts +4 -1
- 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 +5 -7
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +3 -10
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +4 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +3 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +3 -3
- 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/adaptation.ts +6 -4
- package/src/manifest/manifest.ts +16 -86
- package/src/manifest/period.ts +3 -3
- package/src/manifest/representation.ts +38 -5
- package/src/manifest/representation_index/types.ts +18 -18
- package/src/manifest/types.ts +3 -3
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +1 -0
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +1 -1
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +3 -3
- package/src/parsers/manifest/dash/common/indexes/base.ts +6 -6
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +4 -2
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/is_period_fulfilled.ts +1 -2
- package/src/parsers/manifest/dash/common/indexes/list.ts +14 -14
- package/src/parsers/manifest/dash/common/indexes/template.ts +18 -18
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +1 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +51 -23
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +2 -2
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +1 -1
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +167 -134
- package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -10
- package/src/parsers/manifest/dash/common/parse_periods.ts +80 -79
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +83 -75
- package/src/parsers/manifest/dash/common/parse_representations.ts +44 -63
- package/src/parsers/manifest/dash/node_parser_types.ts +30 -30
- package/src/parsers/manifest/dash/parsers_types.ts +3 -3
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +1 -1
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +4 -4
- package/src/parsers/manifest/smooth/create_parser.ts +24 -21
- package/src/parsers/manifest/smooth/representation_index.ts +14 -14
- package/src/parsers/manifest/types.ts +28 -28
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +31 -33
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +15 -6
- package/src/parsers/manifest/utils/index_helpers.ts +2 -2
- package/src/parsers/manifest/utils/update_segment_timeline.ts +32 -21
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +1 -0
- package/src/parsers/texttracks/webvtt/html/to_html.ts +2 -2
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +1 -1
- package/src/public_types.ts +5 -1
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +2 -2
- package/src/transports/dash/image_pipelines.ts +4 -1
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +1 -1
- package/src/transports/dash/segment_loader.ts +7 -7
- package/src/transports/dash/segment_parser.ts +8 -1
- package/src/transports/dash/text_loader.ts +2 -2
- package/src/transports/dash/text_parser.ts +11 -1
- package/src/transports/local/segment_loader.ts +4 -4
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -1
- package/src/transports/metaplaylist/pipelines.ts +1 -1
- package/src/transports/smooth/pipelines.ts +29 -16
- package/src/transports/smooth/segment_loader.ts +8 -8
- package/src/transports/types.ts +59 -30
- package/src/transports/utils/call_custom_manifest_loader.ts +6 -6
- package/src/transports/utils/generate_manifest_loader.ts +1 -1
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- package/src/utils/__tests__/flat_map.test.ts +12 -7
- package/src/utils/cancellable_sleep.ts +1 -1
- package/src/utils/cast_to_observable.ts +1 -2
- package/src/utils/deep_merge.ts +46 -0
- package/src/utils/reference.ts +116 -23
- package/src/utils/request/fetch.ts +17 -15
- package/src/utils/request/xhr.ts +11 -8
- package/src/utils/rx-from_cancellable_promise.ts +8 -4
- package/src/utils/task_canceller.ts +6 -4
- package/tsconfig.json +1 -2
- package/tsconfig.modules.json +1 -2
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +0 -29
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +0 -67
- 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.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 -243
- 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/abr/get_estimate_from_buffer_levels.ts +0 -85
- 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
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import pinkie from "pinkie";
|
|
18
17
|
import {
|
|
19
18
|
catchError,
|
|
20
19
|
combineLatest,
|
|
@@ -36,6 +35,7 @@ import createSegmentFetcher, {
|
|
|
36
35
|
import log from "../../../log";
|
|
37
36
|
import { ISegment } from "../../../manifest";
|
|
38
37
|
import objectAssign from "../../../utils/object_assign";
|
|
38
|
+
import PPromise from "../../../utils/promise";
|
|
39
39
|
import { freeRequest } from "./create_request";
|
|
40
40
|
import getCompleteSegmentId from "./get_complete_segment_id";
|
|
41
41
|
import getContentInfos from "./get_content_infos";
|
|
@@ -52,9 +52,6 @@ import {
|
|
|
52
52
|
} from "./types";
|
|
53
53
|
import VideoThumbnailLoaderError from "./video_thumbnail_loader_error";
|
|
54
54
|
|
|
55
|
-
const PPromise = typeof Promise === "function" ? Promise :
|
|
56
|
-
pinkie;
|
|
57
|
-
|
|
58
55
|
const MIN_NEEDED_DATA_AFTER_TIME = 2;
|
|
59
56
|
|
|
60
57
|
interface ITimeSettingTask { contentInfos: IContentInfos;
|
|
@@ -75,8 +72,8 @@ export default class VideoThumbnailLoader {
|
|
|
75
72
|
private readonly _videoElement: HTMLVideoElement;
|
|
76
73
|
|
|
77
74
|
private _player: Player;
|
|
78
|
-
private _currentTask
|
|
79
|
-
private _nextTaskSegmentsCompleteIds
|
|
75
|
+
private _currentTask : ITimeSettingTask | undefined;
|
|
76
|
+
private _nextTaskSegmentsCompleteIds : string[] | undefined;
|
|
80
77
|
constructor(videoElement: HTMLVideoElement,
|
|
81
78
|
player: Player) {
|
|
82
79
|
this._videoElement = videoElement;
|
|
@@ -252,7 +249,8 @@ export default class VideoThumbnailLoader {
|
|
|
252
249
|
if (end === undefined) {
|
|
253
250
|
end = start + (segment.duration / segment.timescale);
|
|
254
251
|
}
|
|
255
|
-
const inventoryInfos = objectAssign({
|
|
252
|
+
const inventoryInfos = objectAssign({ chunkSize: data.chunkSize,
|
|
253
|
+
segment,
|
|
256
254
|
start,
|
|
257
255
|
end }, contentInfos);
|
|
258
256
|
return pushData(inventoryInfos,
|
|
@@ -20,11 +20,8 @@
|
|
|
20
20
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
21
21
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
23
|
+
/* eslint-disable no-restricted-properties */
|
|
23
24
|
|
|
24
|
-
import {
|
|
25
|
-
map,
|
|
26
|
-
of as observableOf,
|
|
27
|
-
} from "rxjs";
|
|
28
25
|
import { ProberStatus } from "../../types";
|
|
29
26
|
|
|
30
27
|
|
|
@@ -81,7 +78,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
|
|
|
81
78
|
},
|
|
82
79
|
};
|
|
83
80
|
const mockRequestMediaKeySystemAccess = jest.fn(() => {
|
|
84
|
-
return
|
|
81
|
+
return Promise.resolve({
|
|
85
82
|
getConfiguration: () => ({}),
|
|
86
83
|
});
|
|
87
84
|
});
|
|
@@ -114,11 +111,7 @@ describe("MediaCapabilitiesProber probers - DRMInfos", () => {
|
|
|
114
111
|
};
|
|
115
112
|
const mockRequestMediaKeySystemAccess = jest.fn(
|
|
116
113
|
() => {
|
|
117
|
-
return
|
|
118
|
-
map(() => {
|
|
119
|
-
throw new Error();
|
|
120
|
-
})
|
|
121
|
-
);
|
|
114
|
+
return Promise.reject(new Error());
|
|
122
115
|
}
|
|
123
116
|
);
|
|
124
117
|
jest.mock("../../../../../compat", () => ({
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
21
21
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
23
|
+
/* eslint-disable no-restricted-properties */
|
|
23
24
|
|
|
24
|
-
import { of as observableOf } from "rxjs";
|
|
25
25
|
import PPromise from "../../../../../utils/promise";
|
|
26
26
|
import { ProberStatus } from "../../types";
|
|
27
27
|
|
|
@@ -60,7 +60,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
|
|
|
60
60
|
return PPromise.resolve({});
|
|
61
61
|
});
|
|
62
62
|
const mockRequestMediaKeySystemAcces = jest.fn(() => {
|
|
63
|
-
return
|
|
63
|
+
return Promise.resolve({
|
|
64
64
|
createMediaKeys: mockCreateMediaKeys,
|
|
65
65
|
});
|
|
66
66
|
});
|
|
@@ -90,7 +90,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
|
|
|
90
90
|
});
|
|
91
91
|
});
|
|
92
92
|
const mockRequestMediaKeySystemAcces = jest.fn(() => {
|
|
93
|
-
return
|
|
93
|
+
return Promise.resolve({
|
|
94
94
|
createMediaKeys: mockCreateMediaKeys,
|
|
95
95
|
});
|
|
96
96
|
});
|
|
@@ -120,7 +120,7 @@ describe("MediaCapabilitiesProber probers - HDCPPolicy", () => {
|
|
|
120
120
|
});
|
|
121
121
|
});
|
|
122
122
|
const mockRequestMediaKeySystemAcces = jest.fn(() => {
|
|
123
|
-
return
|
|
123
|
+
return Promise.resolve({
|
|
124
124
|
createMediaKeys: mockCreateMediaKeys,
|
|
125
125
|
});
|
|
126
126
|
});
|
|
@@ -127,7 +127,7 @@ const mediaCapabilitiesProber = {
|
|
|
127
127
|
}>
|
|
128
128
|
) : Promise<ICompatibleKeySystem[]> {
|
|
129
129
|
const promises: Array<Promise<{ globalStatus: ProberStatus;
|
|
130
|
-
result? : ICompatibleKeySystem; }>> = [];
|
|
130
|
+
result? : ICompatibleKeySystem | undefined; }>> = [];
|
|
131
131
|
configurations.forEach((configuration) => {
|
|
132
132
|
const globalConfig = {
|
|
133
133
|
keySystem: configuration,
|
|
@@ -36,7 +36,7 @@ export interface IProbedMediaConfiguration {
|
|
|
36
36
|
globalStatus: ProberStatus;
|
|
37
37
|
resultsFromAPIS: Array<{
|
|
38
38
|
APIName: ICapabilitiesTypes;
|
|
39
|
-
result?: IResultsFromAPI;
|
|
39
|
+
result?: IResultsFromAPI | undefined;
|
|
40
40
|
}>;
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -63,7 +63,7 @@ function probeMediaConfiguration(
|
|
|
63
63
|
let globalStatus : ProberStatus|undefined;
|
|
64
64
|
const resultsFromAPIS: Array<{
|
|
65
65
|
APIName: ICapabilitiesTypes;
|
|
66
|
-
result
|
|
66
|
+
result: IResultsFromAPI | undefined;
|
|
67
67
|
}> = [];
|
|
68
68
|
const promises = [];
|
|
69
69
|
for (const browserAPI of browserAPIS) {
|
|
@@ -103,7 +103,7 @@ function probeMediaConfiguration(
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
return PPromise.all(promises).then(() => {
|
|
106
|
-
if (globalStatus
|
|
106
|
+
if (globalStatus === undefined) {
|
|
107
107
|
globalStatus = ProberStatus.Unknown;
|
|
108
108
|
}
|
|
109
109
|
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { lastValueFrom } from "rxjs";
|
|
18
17
|
import { requestMediaKeySystemAccess } from "../../../../compat";
|
|
19
18
|
import PPromise from "../../../../utils/promise";
|
|
20
19
|
import log from "../log";
|
|
@@ -55,7 +54,7 @@ export default function probeDRMInfos(
|
|
|
55
54
|
return PPromise.resolve([ProberStatus.NotSupported, result]);
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
return
|
|
57
|
+
return requestMediaKeySystemAccess(type, [configuration])
|
|
59
58
|
.then((keySystemAccess) => {
|
|
60
59
|
result.compatibleConfiguration = keySystemAccess.getConfiguration();
|
|
61
60
|
const status : [ProberStatus, ICompatibleKeySystem?] =
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { lastValueFrom } from "rxjs";
|
|
18
17
|
import { requestMediaKeySystemAccess } from "../../../../compat";
|
|
19
18
|
import PPromise from "../../../../utils/promise";
|
|
20
19
|
import {
|
|
@@ -61,7 +60,7 @@ export default function probeHDCPPolicy(
|
|
|
61
60
|
}],
|
|
62
61
|
};
|
|
63
62
|
|
|
64
|
-
return
|
|
63
|
+
return requestMediaKeySystemAccess(keySystem, [drmConfig])
|
|
65
64
|
.then((mediaKeysSystemAccess) => {
|
|
66
65
|
return mediaKeysSystemAccess.createMediaKeys().then((mediaKeys) => {
|
|
67
66
|
if (!("getStatusForPolicy" in mediaKeys)) {
|
|
@@ -52,9 +52,9 @@ export interface IDisplayConfiguration {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface IMediaConfiguration {
|
|
55
|
-
type?: "media-source"|"file";
|
|
56
|
-
video?: IVideoConfiguration;
|
|
57
|
-
audio?: IAudioConfiguration;
|
|
55
|
+
type?: "media-source" | "file" | undefined;
|
|
56
|
+
video?: IVideoConfiguration | undefined;
|
|
57
|
+
audio?: IAudioConfiguration | undefined;
|
|
58
58
|
keySystem?: IKeySystem;
|
|
59
59
|
hdcp?: string;
|
|
60
60
|
display?: IDisplayConfiguration;
|
|
@@ -93,7 +93,7 @@ describe("Features - initializeFeaturesObject", () => {
|
|
|
93
93
|
nativeTextTracksParsers: {},
|
|
94
94
|
htmlTextTracksBuffer: null,
|
|
95
95
|
htmlTextTracksParsers: {},
|
|
96
|
-
|
|
96
|
+
ContentDecryptor: null,
|
|
97
97
|
directfile: null,
|
|
98
98
|
};
|
|
99
99
|
jest.mock("../features_object", () => ({
|
|
@@ -113,7 +113,7 @@ describe("Features - initializeFeaturesObject", () => {
|
|
|
113
113
|
js: require("../../parsers/manifest/dash/js-parser").default,
|
|
114
114
|
wasm: null,
|
|
115
115
|
},
|
|
116
|
-
|
|
116
|
+
ContentDecryptor: require("../../core/decrypt/index").default,
|
|
117
117
|
directfile: {
|
|
118
118
|
initDirectFile: require("../../core/init/initialize_directfile").default,
|
|
119
119
|
mediaElementTrackChoiceManager:
|
|
@@ -23,7 +23,7 @@ import { IFeaturesObject } from "./types";
|
|
|
23
23
|
const features : IFeaturesObject = { dashParsers: { wasm: null,
|
|
24
24
|
js: null },
|
|
25
25
|
directfile: null,
|
|
26
|
-
|
|
26
|
+
ContentDecryptor: null,
|
|
27
27
|
htmlTextTracksBuffer: null,
|
|
28
28
|
htmlTextTracksParsers: {},
|
|
29
29
|
imageBuffer: null,
|
|
@@ -27,7 +27,7 @@ import features from "./features_object";
|
|
|
27
27
|
*/
|
|
28
28
|
export default function initializeFeaturesObject() : void {
|
|
29
29
|
if (__FEATURES__.EME === __FEATURES__.IS_ENABLED as number) {
|
|
30
|
-
features.
|
|
30
|
+
features.ContentDecryptor = require("../core/decrypt/index.ts").default;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (__FEATURES__.BIF_PARSER === __FEATURES__.IS_ENABLED as number) {
|
|
@@ -17,20 +17,20 @@
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
18
18
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
19
19
|
|
|
20
|
-
import
|
|
20
|
+
import ContentDecryptor from "../../../core/decrypt";
|
|
21
21
|
import addEMEFeature from "../eme";
|
|
22
22
|
|
|
23
|
-
jest.mock("../../../core/
|
|
23
|
+
jest.mock("../../../core/decrypt", () => ({
|
|
24
24
|
__esModule: true as const,
|
|
25
25
|
default: jest.fn(),
|
|
26
26
|
}));
|
|
27
27
|
|
|
28
28
|
describe("Features list - EME", () => {
|
|
29
|
-
it("should add
|
|
29
|
+
it("should add the ContentDecryptor in the current features", () => {
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
31
|
const featureObject : any = {};
|
|
32
32
|
addEMEFeature(featureObject);
|
|
33
|
-
expect(featureObject).toEqual({
|
|
34
|
-
expect(featureObject.
|
|
33
|
+
expect(featureObject).toEqual({ ContentDecryptor });
|
|
34
|
+
expect(featureObject.ContentDecryptor).toBe(ContentDecryptor);
|
|
35
35
|
});
|
|
36
36
|
});
|
package/src/features/list/eme.ts
CHANGED
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import
|
|
17
|
+
import ContentDecryptor from "../../core/decrypt";
|
|
18
18
|
import { IFeaturesObject } from "../types";
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Add ability to play encrypted contents
|
|
22
22
|
* @param {Object} features
|
|
23
23
|
*/
|
|
24
|
-
function
|
|
25
|
-
features.
|
|
24
|
+
function addEMEFeature(features : IFeaturesObject) : void {
|
|
25
|
+
features.ContentDecryptor = ContentDecryptor;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export {
|
|
29
|
-
export default
|
|
28
|
+
export { addEMEFeature as EME };
|
|
29
|
+
export default addEMEFeature;
|
package/src/features/types.ts
CHANGED
|
@@ -17,11 +17,7 @@
|
|
|
17
17
|
import { Observable } from "rxjs";
|
|
18
18
|
// eslint-disable-next-line max-len
|
|
19
19
|
import MediaElementTrackChoiceManager from "../core/api/media_element_track_choice_manager";
|
|
20
|
-
import
|
|
21
|
-
IContentProtection,
|
|
22
|
-
IEMEManagerEvent,
|
|
23
|
-
IKeySystemOption,
|
|
24
|
-
} from "../core/eme";
|
|
20
|
+
import type ContentDecryptor from "../core/decrypt";
|
|
25
21
|
import {
|
|
26
22
|
IDirectfileEvent,
|
|
27
23
|
IDirectFileOptions,
|
|
@@ -41,10 +37,7 @@ import { ITransportFunction } from "../transports";
|
|
|
41
37
|
export type IDirectFileInit = (args : IDirectFileOptions) =>
|
|
42
38
|
Observable<IDirectfileEvent>;
|
|
43
39
|
|
|
44
|
-
export type
|
|
45
|
-
keySystems: IKeySystemOption[],
|
|
46
|
-
contentProtections$ : Observable<IContentProtection>) =>
|
|
47
|
-
Observable<IEMEManagerEvent>;
|
|
40
|
+
export type IContentDecryptorClass = typeof ContentDecryptor;
|
|
48
41
|
|
|
49
42
|
export type IHTMLTextTracksBuffer =
|
|
50
43
|
new(mediaElement : HTMLMediaElement,
|
|
@@ -89,7 +82,7 @@ export interface IFeaturesObject {
|
|
|
89
82
|
directfile : { initDirectFile: IDirectFileInit;
|
|
90
83
|
mediaElementTrackChoiceManager : IMediaElementTrackChoiceManager; } |
|
|
91
84
|
null;
|
|
92
|
-
|
|
85
|
+
ContentDecryptor : IContentDecryptorClass|null;
|
|
93
86
|
htmlTextTracksBuffer : IHTMLTextTracksBuffer|null;
|
|
94
87
|
htmlTextTracksParsers : Partial<Record<string, IHTMLTextTracksParserFn>>;
|
|
95
88
|
imageBuffer : IImageBuffer|null;
|
|
@@ -109,16 +109,18 @@ export default class Adaptation {
|
|
|
109
109
|
* @param {Object|undefined} [options]
|
|
110
110
|
*/
|
|
111
111
|
constructor(parsedAdaptation : IParsedAdaptation, options : {
|
|
112
|
-
representationFilter? : IRepresentationFilter;
|
|
113
|
-
isManuallyAdded? : boolean;
|
|
112
|
+
representationFilter? : IRepresentationFilter | undefined;
|
|
113
|
+
isManuallyAdded? : boolean | undefined;
|
|
114
114
|
} = {}) {
|
|
115
115
|
const { trickModeTracks } = parsedAdaptation;
|
|
116
116
|
const { representationFilter, isManuallyAdded } = options;
|
|
117
117
|
this.id = parsedAdaptation.id;
|
|
118
|
-
this.isTrickModeTrack = parsedAdaptation.isTrickModeTrack;
|
|
119
|
-
|
|
120
118
|
this.type = parsedAdaptation.type;
|
|
121
119
|
|
|
120
|
+
if (parsedAdaptation.isTrickModeTrack !== undefined) {
|
|
121
|
+
this.isTrickModeTrack = parsedAdaptation.isTrickModeTrack;
|
|
122
|
+
}
|
|
123
|
+
|
|
122
124
|
if (parsedAdaptation.language !== undefined) {
|
|
123
125
|
this.language = parsedAdaptation.language;
|
|
124
126
|
this.normalizedLanguage = normalizeLanguage(parsedAdaptation.language);
|
package/src/manifest/manifest.ts
CHANGED
|
@@ -14,13 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { IInitializationDataInfo } from "../core/eme";
|
|
18
17
|
import {
|
|
19
18
|
ICustomError,
|
|
20
19
|
MediaError,
|
|
21
20
|
} from "../errors";
|
|
22
21
|
import { IParsedManifest } from "../parsers/manifest";
|
|
23
|
-
import areArraysOfNumbersEqual from "../utils/are_arrays_of_numbers_equal";
|
|
24
22
|
import arrayFind from "../utils/array_find";
|
|
25
23
|
import EventEmitter from "../utils/event_emitter";
|
|
26
24
|
import idGenerator from "../utils/id_generator";
|
|
@@ -83,18 +81,18 @@ interface ISupplementaryTextTrack {
|
|
|
83
81
|
interface IManifestParsingOptions {
|
|
84
82
|
/* eslint-disable import/no-deprecated */
|
|
85
83
|
/** Text tracks to add manually to the Manifest instance. */
|
|
86
|
-
supplementaryTextTracks? : ISupplementaryTextTrack[];
|
|
84
|
+
supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
|
|
87
85
|
/** Image tracks to add manually to the Manifest instance. */
|
|
88
|
-
supplementaryImageTracks? : ISupplementaryImageTrack[];
|
|
86
|
+
supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
|
|
89
87
|
/* eslint-enable import/no-deprecated */
|
|
90
88
|
/** External callback peforming an automatic filtering of wanted Representations. */
|
|
91
|
-
representationFilter? : IRepresentationFilter;
|
|
89
|
+
representationFilter? : IRepresentationFilter | undefined;
|
|
92
90
|
/** Optional URL that points to a shorter version of the Manifest used
|
|
93
91
|
* for updates only. When using this URL for refresh, the manifest will be
|
|
94
92
|
* updated with the partial update type. If this URL is undefined, then the
|
|
95
93
|
* manifest will be updated fully when it needs to be refreshed, and it will
|
|
96
94
|
* fetched through the original URL. */
|
|
97
|
-
manifestUpdateUrl? : string;
|
|
95
|
+
manifestUpdateUrl? : string | undefined;
|
|
98
96
|
}
|
|
99
97
|
|
|
100
98
|
/** Representation affected by a `decipherabilityUpdate` event. */
|
|
@@ -197,7 +195,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
197
195
|
|
|
198
196
|
/** Optional URL that points to a shorter version of the Manifest used
|
|
199
197
|
* for updates only. */
|
|
200
|
-
public updateUrl
|
|
198
|
+
public updateUrl : string | undefined;
|
|
201
199
|
|
|
202
200
|
/**
|
|
203
201
|
* Suggested delay from the "live edge" (i.e. the position corresponding to
|
|
@@ -205,7 +203,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
205
203
|
* from.
|
|
206
204
|
* This only applies to live contents.
|
|
207
205
|
*/
|
|
208
|
-
public suggestedPresentationDelay
|
|
206
|
+
public suggestedPresentationDelay : number | undefined;
|
|
209
207
|
|
|
210
208
|
/**
|
|
211
209
|
* Amount of time, in seconds, this Manifest is valid from the time when it
|
|
@@ -213,7 +211,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
213
211
|
* If no lifetime is set, this Manifest does not become invalid after an
|
|
214
212
|
* amount of time.
|
|
215
213
|
*/
|
|
216
|
-
public lifetime
|
|
214
|
+
public lifetime : number | undefined;
|
|
217
215
|
|
|
218
216
|
/**
|
|
219
217
|
* Minimum time, in seconds, at which a segment defined in the Manifest
|
|
@@ -221,14 +219,14 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
221
219
|
* This is also used as an offset for live content to apply to a segment's
|
|
222
220
|
* time.
|
|
223
221
|
*/
|
|
224
|
-
public availabilityStartTime
|
|
222
|
+
public availabilityStartTime : number | undefined;
|
|
225
223
|
|
|
226
224
|
/**
|
|
227
225
|
* It specifies the wall-clock time when the manifest was generated and published
|
|
228
226
|
* at the origin server. It is present in order to identify different versions
|
|
229
227
|
* of manifest instances.
|
|
230
228
|
*/
|
|
231
|
-
public publishTime
|
|
229
|
+
public publishTime: number | undefined;
|
|
232
230
|
|
|
233
231
|
/**
|
|
234
232
|
* Array containing every minor errors that happened when the Manifest has
|
|
@@ -271,7 +269,7 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
271
269
|
* segment, and `timeshiftDepth` would be the whole depth that will
|
|
272
270
|
* become available once enough segments have been generated.
|
|
273
271
|
*/
|
|
274
|
-
absoluteMinimumTime? : number;
|
|
272
|
+
absoluteMinimumTime? : number | undefined;
|
|
275
273
|
/**
|
|
276
274
|
* Some dynamic contents have the concept of a "window depth" (or "buffer
|
|
277
275
|
* depth") which allows to set a minimum position for all reachable
|
|
@@ -502,73 +500,10 @@ export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
|
502
500
|
* changes performed.
|
|
503
501
|
* @param {Object} keyUpdates
|
|
504
502
|
*/
|
|
505
|
-
public
|
|
506
|
-
|
|
507
|
-
blacklistedKeyIDs } : { whitelistedKeyIds : Uint8Array[];
|
|
508
|
-
blacklistedKeyIDs : Uint8Array[]; }
|
|
503
|
+
public updateRepresentationsDeciperability(
|
|
504
|
+
isDecipherableCb : (rep : Representation) => boolean | undefined
|
|
509
505
|
) : void {
|
|
510
|
-
const updates = updateDeciperability(this,
|
|
511
|
-
if (representation.decipherable === false ||
|
|
512
|
-
representation.contentProtections === undefined)
|
|
513
|
-
{
|
|
514
|
-
return representation.decipherable;
|
|
515
|
-
}
|
|
516
|
-
const contentKIDs = representation.contentProtections.keyIds;
|
|
517
|
-
for (let i = 0; i < contentKIDs.length; i++) {
|
|
518
|
-
const elt = contentKIDs[i];
|
|
519
|
-
for (let j = 0; j < blacklistedKeyIDs.length; j++) {
|
|
520
|
-
if (areArraysOfNumbersEqual(blacklistedKeyIDs[j], elt.keyId)) {
|
|
521
|
-
return false;
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
for (let j = 0; j < whitelistedKeyIds.length; j++) {
|
|
525
|
-
if (areArraysOfNumbersEqual(whitelistedKeyIds[j], elt.keyId)) {
|
|
526
|
-
return true;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
return representation.decipherable;
|
|
531
|
-
});
|
|
532
|
-
|
|
533
|
-
if (updates.length > 0) {
|
|
534
|
-
this.trigger("decipherabilityUpdate", updates);
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
/**
|
|
539
|
-
* Look in the Manifest for Representations linked to the given content
|
|
540
|
-
* protection initialization data and mark them as being impossible to
|
|
541
|
-
* decrypt.
|
|
542
|
-
* Then trigger a "decipherabilityUpdate" event to notify everyone of the
|
|
543
|
-
* changes performed.
|
|
544
|
-
* @param {Object} initData
|
|
545
|
-
*/
|
|
546
|
-
public addUndecipherableProtectionData(initData : IInitializationDataInfo) : void {
|
|
547
|
-
const updates = updateDeciperability(this, (representation) => {
|
|
548
|
-
if (representation.decipherable === false) {
|
|
549
|
-
return false;
|
|
550
|
-
}
|
|
551
|
-
const segmentProtections = representation.contentProtections?.initData ?? [];
|
|
552
|
-
for (let i = 0; i < segmentProtections.length; i++) {
|
|
553
|
-
if (initData.type === undefined ||
|
|
554
|
-
segmentProtections[i].type === initData.type)
|
|
555
|
-
{
|
|
556
|
-
const containedInitData = initData.values.every(undecipherableVal => {
|
|
557
|
-
return segmentProtections[i].values.some(currVal => {
|
|
558
|
-
return (undecipherableVal.systemId === undefined ||
|
|
559
|
-
currVal.systemId === undecipherableVal.systemId) &&
|
|
560
|
-
areArraysOfNumbersEqual(currVal.data,
|
|
561
|
-
undecipherableVal.data);
|
|
562
|
-
});
|
|
563
|
-
});
|
|
564
|
-
if (containedInitData) {
|
|
565
|
-
return false;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
return representation.decipherable;
|
|
570
|
-
});
|
|
571
|
-
|
|
506
|
+
const updates = updateDeciperability(this, isDecipherableCb);
|
|
572
507
|
if (updates.length > 0) {
|
|
573
508
|
this.trigger("decipherabilityUpdate", updates);
|
|
574
509
|
}
|
|
@@ -795,14 +730,9 @@ function updateDeciperability(
|
|
|
795
730
|
isDecipherable : (rep : Representation) => boolean | undefined
|
|
796
731
|
) : IDecipherabilityUpdateElement[] {
|
|
797
732
|
const updates : IDecipherabilityUpdateElement[] = [];
|
|
798
|
-
for (
|
|
799
|
-
const
|
|
800
|
-
|
|
801
|
-
for (let j = 0; j < adaptations.length; j++) {
|
|
802
|
-
const adaptation = adaptations[j];
|
|
803
|
-
const representations = adaptation.representations;
|
|
804
|
-
for (let k = 0; k < representations.length; k++) {
|
|
805
|
-
const representation = representations[k];
|
|
733
|
+
for (const period of manifest.periods) {
|
|
734
|
+
for (const adaptation of period.getAdaptations()) {
|
|
735
|
+
for (const representation of adaptation.representations) {
|
|
806
736
|
const result = isDecipherable(representation);
|
|
807
737
|
if (result !== representation.decipherable) {
|
|
808
738
|
updates.push({ manifest, period, adaptation, representation });
|
package/src/manifest/period.ts
CHANGED
|
@@ -50,13 +50,13 @@ export default class Period {
|
|
|
50
50
|
* Duration of this Period, in seconds.
|
|
51
51
|
* `undefined` for still-running Periods.
|
|
52
52
|
*/
|
|
53
|
-
public duration
|
|
53
|
+
public duration : number | undefined;
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* Absolute end time of the Period, in seconds.
|
|
57
57
|
* `undefined` for still-running Periods.
|
|
58
58
|
*/
|
|
59
|
-
public end
|
|
59
|
+
public end : number | undefined;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Array containing every errors that happened when the Period has been
|
|
@@ -74,7 +74,7 @@ export default class Period {
|
|
|
74
74
|
*/
|
|
75
75
|
constructor(
|
|
76
76
|
args : IParsedPeriod,
|
|
77
|
-
representationFilter? : IRepresentationFilter
|
|
77
|
+
representationFilter? : IRepresentationFilter | undefined
|
|
78
78
|
) {
|
|
79
79
|
this.contentWarnings = [];
|
|
80
80
|
this.id = args.id;
|