rx-player 3.26.3-dev.2022021400 → 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/CHANGELOG.md +15 -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 +21 -22
- 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/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 +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/{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 +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 +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 +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.js +2 -2
- 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/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 +4 -2
- 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/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 +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 +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/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/smooth/create_parser.js +1 -0
- package/dist/_esm5.processed/public_types.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/image_pipelines.js +3 -0
- package/dist/_esm5.processed/transports/dash/segment_parser.js +6 -3
- package/dist/_esm5.processed/transports/dash/text_parser.js +8 -2
- 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/smooth/pipelines.js +68 -10
- package/dist/_esm5.processed/transports/types.d.ts +22 -0
- 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 +1 -1
- 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 +5002 -3033
- 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 +32 -34
- package/scripts/build/templates/experimental/index.d.ts +16 -0
- package/scripts/build/templates/experimental/index.js +16 -0
- package/sonar-project.properties +1 -1
- package/src/README.md +6 -6
- 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/index.ts +21 -38
- 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/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 +17 -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 +37 -20
- package/src/core/api/playback_observer.ts +12 -8
- package/src/core/api/public_api.ts +151 -111
- 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 +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 +112 -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} +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 +4 -4
- package/src/core/fetchers/segment/segment_fetcher.ts +4 -4
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +2 -2
- 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 +42 -105
- 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/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 +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 +2 -1
- 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/probers/DRMInfos.ts +1 -2
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.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/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 +5 -1
- package/src/transports/dash/image_pipelines.ts +3 -0
- package/src/transports/dash/segment_parser.ts +5 -0
- package/src/transports/dash/text_parser.ts +8 -0
- package/src/transports/local/segment_parser.ts +4 -0
- package/src/transports/local/text_parser.ts +8 -0
- package/src/transports/smooth/pipelines.ts +22 -9
- package/src/transports/types.ts +22 -0
- package/src/utils/__tests__/deep_merge.test.ts +48 -0
- 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 +2 -1
- package/src/utils/rx-from_cancellable_promise.ts +7 -2
- package/src/utils/task_canceller.ts +6 -4
- 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 -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
|
@@ -249,7 +249,8 @@ export default class VideoThumbnailLoader {
|
|
|
249
249
|
if (end === undefined) {
|
|
250
250
|
end = start + (segment.duration / segment.timescale);
|
|
251
251
|
}
|
|
252
|
-
const inventoryInfos = objectAssign({
|
|
252
|
+
const inventoryInfos = objectAssign({ chunkSize: data.chunkSize,
|
|
253
|
+
segment,
|
|
253
254
|
start,
|
|
254
255
|
end }, contentInfos);
|
|
255
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
|
});
|
|
@@ -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)) {
|
|
@@ -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;
|
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";
|
|
@@ -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 });
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { isCodecSupported } from "../compat";
|
|
18
|
-
import { IContentProtection } from "../core/eme";
|
|
19
18
|
import log from "../log";
|
|
20
19
|
import {
|
|
21
20
|
IContentProtections,
|
|
@@ -166,7 +165,7 @@ class Representation {
|
|
|
166
165
|
* @param {string} drmSystemId - The hexa-encoded DRM system ID
|
|
167
166
|
* @returns {Array.<Object>}
|
|
168
167
|
*/
|
|
169
|
-
public getEncryptionData(drmSystemId : string) :
|
|
168
|
+
public getEncryptionData(drmSystemId : string) : IRepresentationProtectionData[] {
|
|
170
169
|
const allInitData = this.getAllEncryptionData();
|
|
171
170
|
const filtered = [];
|
|
172
171
|
for (let i = 0; i < allInitData.length; i++) {
|
|
@@ -216,7 +215,7 @@ class Representation {
|
|
|
216
215
|
* after parsing this Representation's initialization segment, if one exists.
|
|
217
216
|
* @returns {Array.<Object>}
|
|
218
217
|
*/
|
|
219
|
-
public getAllEncryptionData() :
|
|
218
|
+
public getAllEncryptionData() : IRepresentationProtectionData[] {
|
|
220
219
|
if (this.contentProtections === undefined ||
|
|
221
220
|
this.contentProtections.initData.length === 0)
|
|
222
221
|
{
|
|
@@ -297,4 +296,38 @@ class Representation {
|
|
|
297
296
|
}
|
|
298
297
|
}
|
|
299
298
|
|
|
299
|
+
/** Protection data as returned by a Representation. */
|
|
300
|
+
export interface IRepresentationProtectionData {
|
|
301
|
+
/**
|
|
302
|
+
* Initialization data type.
|
|
303
|
+
* String describing the format of the initialization data sent through this
|
|
304
|
+
* event.
|
|
305
|
+
* https://www.w3.org/TR/eme-initdata-registry/
|
|
306
|
+
*/
|
|
307
|
+
type: string;
|
|
308
|
+
/**
|
|
309
|
+
* The key ids linked to those initialization data.
|
|
310
|
+
* This should be the key ids for the key concerned by the media which have
|
|
311
|
+
* the present initialization data.
|
|
312
|
+
*
|
|
313
|
+
* `undefined` when not known (different from an empty array - which would
|
|
314
|
+
* just mean that there's no key id involved).
|
|
315
|
+
*/
|
|
316
|
+
keyIds : Uint8Array[] | undefined;
|
|
317
|
+
/** Every initialization data for that type. */
|
|
318
|
+
values: Array<{
|
|
319
|
+
/**
|
|
320
|
+
* Hex encoded system id, which identifies the key system.
|
|
321
|
+
* https://dashif.org/identifiers/content_protection/
|
|
322
|
+
*/
|
|
323
|
+
systemId: string;
|
|
324
|
+
/**
|
|
325
|
+
* The initialization data itself for that type and systemId.
|
|
326
|
+
* For example, with "cenc" initialization data found in an ISOBMFF file,
|
|
327
|
+
* this will be the whole PSSH box.
|
|
328
|
+
*/
|
|
329
|
+
data: Uint8Array;
|
|
330
|
+
}>;
|
|
331
|
+
}
|
|
332
|
+
|
|
300
333
|
export default Representation;
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
|
|
17
17
|
import config from "../../../../../config";
|
|
18
18
|
|
|
19
|
-
const { DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR } = config;
|
|
20
19
|
|
|
21
20
|
/**
|
|
22
21
|
* In Javascript, numbers are encoded in a way that a floating number may be
|
|
@@ -36,7 +35,7 @@ export default function isPeriodFulfilled(
|
|
|
36
35
|
periodEnd: number
|
|
37
36
|
): boolean {
|
|
38
37
|
const scaledRoundingError =
|
|
39
|
-
DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
|
|
38
|
+
config.getCurrent().DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
|
|
40
39
|
return (lastSegmentEnd + scaledRoundingError) >= periodEnd;
|
|
41
40
|
}
|
|
42
41
|
|
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
createIndexURLs,
|
|
30
30
|
} from "./tokens";
|
|
31
31
|
|
|
32
|
-
const { MINIMUM_SEGMENT_SIZE } = config;
|
|
33
32
|
|
|
34
33
|
/**
|
|
35
34
|
* Index property defined for a SegmentTemplate RepresentationIndex
|
|
@@ -533,7 +532,7 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
533
532
|
// segment that there actually is due to a very little difference between
|
|
534
533
|
// the period's duration and a multiple of a segment's duration.
|
|
535
534
|
// Check that we're within a good margin
|
|
536
|
-
const minimumDuration = MINIMUM_SEGMENT_SIZE * timescale;
|
|
535
|
+
const minimumDuration = config.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
|
|
537
536
|
if (maximumTime - regularLastSegmentStart > minimumDuration ||
|
|
538
537
|
numberIndexedToZero === 0)
|
|
539
538
|
{
|
|
@@ -47,7 +47,6 @@ import constructTimelineFromElements from "./construct_timeline_from_elements";
|
|
|
47
47
|
// eslint-disable-next-line max-len
|
|
48
48
|
import constructTimelineFromPreviousTimeline from "./construct_timeline_from_previous_timeline";
|
|
49
49
|
|
|
50
|
-
const { MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY } = config;
|
|
51
50
|
|
|
52
51
|
/**
|
|
53
52
|
* Index property defined for a SegmentTimeline RepresentationIndex
|
|
@@ -606,6 +605,7 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
606
605
|
const newElements = this._parseTimeline();
|
|
607
606
|
this._parseTimeline = null; // Free memory
|
|
608
607
|
|
|
608
|
+
const { MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY } = config.getCurrent();
|
|
609
609
|
if (this._unsafelyBaseOnPreviousIndex === null ||
|
|
610
610
|
newElements.length < MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY)
|
|
611
611
|
{
|