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
|
@@ -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,
|
|
@@ -55,7 +54,7 @@ class Representation {
|
|
|
55
54
|
* A string describing the codec used for this Representation.
|
|
56
55
|
* undefined if we do not know.
|
|
57
56
|
*/
|
|
58
|
-
public codec
|
|
57
|
+
public codec : string | undefined;
|
|
59
58
|
|
|
60
59
|
/**
|
|
61
60
|
* A string describing the mime-type for this Representation.
|
|
@@ -93,7 +92,7 @@ class Representation {
|
|
|
93
92
|
* Representation
|
|
94
93
|
* - if `undefined` there is no certainty on this matter
|
|
95
94
|
*/
|
|
96
|
-
public decipherable? : boolean;
|
|
95
|
+
public decipherable? : boolean | undefined;
|
|
97
96
|
|
|
98
97
|
/** `true` if the Representation is in a supported codec, false otherwise. */
|
|
99
98
|
public isSupported : boolean;
|
|
@@ -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;
|
|
@@ -38,12 +38,12 @@ export interface ISmoothInitSegmentPrivateInfos {
|
|
|
38
38
|
* as found in the Manifest.
|
|
39
39
|
*/
|
|
40
40
|
timescale : number;
|
|
41
|
-
codecPrivateData? : string;
|
|
42
|
-
bitsPerSample? : number;
|
|
43
|
-
channels? : number;
|
|
44
|
-
packetSize? : number;
|
|
45
|
-
samplingRate? : number;
|
|
46
|
-
protection? : { keyId : Uint8Array };
|
|
41
|
+
codecPrivateData? : string | undefined;
|
|
42
|
+
bitsPerSample? : number | undefined;
|
|
43
|
+
channels? : number | undefined;
|
|
44
|
+
packetSize? : number | undefined;
|
|
45
|
+
samplingRate? : number | undefined;
|
|
46
|
+
protection? : { keyId : Uint8Array } | undefined;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -78,7 +78,7 @@ export interface IMetaPlaylistPrivateInfos {
|
|
|
78
78
|
/** The segment originally created by this transport's RepresentationIndex. */
|
|
79
79
|
originalSegment : ISegment;
|
|
80
80
|
contentStart : number;
|
|
81
|
-
contentEnd? : number;
|
|
81
|
+
contentEnd? : number | undefined;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
/**
|
|
@@ -112,12 +112,12 @@ export interface ILocalManifestSegmentPrivateInfos {
|
|
|
112
112
|
* exploited by the corresponding transport logic.
|
|
113
113
|
*/
|
|
114
114
|
export interface IPrivateInfos {
|
|
115
|
-
smoothInitSegment? : ISmoothInitSegmentPrivateInfos;
|
|
116
|
-
smoothMediaSegment? : ISmoothSegmentPrivateInfos;
|
|
117
|
-
metaplaylistInfos? : IMetaPlaylistPrivateInfos;
|
|
118
|
-
localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos;
|
|
119
|
-
localManifestSegment? : ILocalManifestSegmentPrivateInfos;
|
|
120
|
-
isEMSGWhitelisted? : (evt: IEMSG) => boolean;
|
|
115
|
+
smoothInitSegment? : ISmoothInitSegmentPrivateInfos | undefined;
|
|
116
|
+
smoothMediaSegment? : ISmoothSegmentPrivateInfos | undefined;
|
|
117
|
+
metaplaylistInfos? : IMetaPlaylistPrivateInfos | undefined;
|
|
118
|
+
localManifestInitSegment? : ILocalManifestInitSegmentPrivateInfos | undefined;
|
|
119
|
+
localManifestSegment? : ILocalManifestSegmentPrivateInfos | undefined;
|
|
120
|
+
isEMSGWhitelisted? : ((evt: IEMSG) => boolean) | undefined;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
/** Represent a single Segment from a Representation. */
|
|
@@ -149,24 +149,24 @@ export interface ISegment {
|
|
|
149
149
|
* contain an index describing other Segments
|
|
150
150
|
* TODO put in privateInfos?
|
|
151
151
|
*/
|
|
152
|
-
indexRange? : [number, number];
|
|
152
|
+
indexRange? : [number, number] | undefined;
|
|
153
153
|
/**
|
|
154
154
|
* Optional number of the Segment
|
|
155
155
|
* TODO put in privateInfos?
|
|
156
156
|
*/
|
|
157
|
-
number? : number;
|
|
157
|
+
number? : number | undefined;
|
|
158
158
|
/**
|
|
159
159
|
* Allows to store supplementary information on a segment that can be later
|
|
160
160
|
* exploited by the transport logic.
|
|
161
161
|
*/
|
|
162
|
-
privateInfos? : IPrivateInfos;
|
|
162
|
+
privateInfos? : IPrivateInfos | undefined;
|
|
163
163
|
/** Optional byte range to retrieve the Segment from its URL(s) */
|
|
164
|
-
range? : [number, number];
|
|
164
|
+
range? : [number, number] | undefined;
|
|
165
165
|
/**
|
|
166
166
|
* Estimated time, in seconds, at which the concerned segment should be
|
|
167
167
|
* offseted when decoded.
|
|
168
168
|
*/
|
|
169
|
-
timestampOffset? : number;
|
|
169
|
+
timestampOffset? : number | undefined;
|
|
170
170
|
/**
|
|
171
171
|
* Estimated start time for the segment, in seconds.
|
|
172
172
|
* Note that some rounding errors and some differences between what the
|
package/src/manifest/types.ts
CHANGED
|
@@ -39,7 +39,7 @@ export interface IHDRInformation {
|
|
|
39
39
|
* It is used to ask to the user agent if the color depth is supported by the
|
|
40
40
|
* output device.
|
|
41
41
|
*/
|
|
42
|
-
colorDepth
|
|
42
|
+
colorDepth? : number | undefined;
|
|
43
43
|
/**
|
|
44
44
|
* It is the HDR eotf. It is the transfer function having the video signal as
|
|
45
45
|
* input and converting it into the linear light output of the display. The
|
|
@@ -47,14 +47,14 @@ export interface IHDRInformation {
|
|
|
47
47
|
*
|
|
48
48
|
* It may be used here to ask the MediaSource if it supported.
|
|
49
49
|
*/
|
|
50
|
-
eotf
|
|
50
|
+
eotf? : string | undefined;
|
|
51
51
|
/**
|
|
52
52
|
* It is the video color space used for encoding. An HDR content may not have
|
|
53
53
|
* a wide color gamut.
|
|
54
54
|
*
|
|
55
55
|
* It may be used to ask about output device color space support.
|
|
56
56
|
*/
|
|
57
|
-
colorSpace
|
|
57
|
+
colorSpace? : string | undefined;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/** Manifest, as documented in the API documentation. */
|
|
@@ -46,6 +46,7 @@ describe("DASH parsers - ManifestBoundsCalculator", () => {
|
|
|
46
46
|
/* eslint-enable max-len */
|
|
47
47
|
const manifestBoundsCalculator = new ManifestBoundsCalculator({
|
|
48
48
|
isDynamic: false,
|
|
49
|
+
timeShiftBufferDepth: undefined,
|
|
49
50
|
});
|
|
50
51
|
expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0);
|
|
51
52
|
expect(manifestBoundsCalculator.estimateMinimumBound()).toEqual(0);
|
|
@@ -21,9 +21,9 @@ interface IPeriodTimeInformation {
|
|
|
21
21
|
/** Time in seconds at which the Period starts. */
|
|
22
22
|
periodStart: number;
|
|
23
23
|
/** Difference in seconds between the Period's end and its start. */
|
|
24
|
-
periodDuration?: number;
|
|
24
|
+
periodDuration?: number | undefined;
|
|
25
25
|
/** Time in seconds at which the Period ends. */
|
|
26
|
-
periodEnd?: number;
|
|
26
|
+
periodEnd?: number | undefined;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/** Additionnal context needed to retrieve the period time information. */
|
|
@@ -31,7 +31,7 @@ export interface IParsedPeriodsContext {
|
|
|
31
31
|
/** Value of MPD@availabilityStartTime. */
|
|
32
32
|
availabilityStartTime : number;
|
|
33
33
|
/** Value of MPD@mediaPresentationDuration. */
|
|
34
|
-
duration? : number;
|
|
34
|
+
duration? : number | undefined;
|
|
35
35
|
/** `true` if MPD@type is equal to "dynamic". */
|
|
36
36
|
isDynamic : boolean;
|
|
37
37
|
}
|
|
@@ -38,7 +38,7 @@ import { createIndexURLs } from "./tokens";
|
|
|
38
38
|
*/
|
|
39
39
|
export interface IBaseIndex {
|
|
40
40
|
/** Byte range for a possible index of segments in the server. */
|
|
41
|
-
indexRange?: [number, number];
|
|
41
|
+
indexRange?: [number, number] | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
44
44
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -57,15 +57,15 @@ export interface IBaseIndex {
|
|
|
57
57
|
/** URLs to access the initialization segment. */
|
|
58
58
|
mediaURLs: string[] | null;
|
|
59
59
|
/** possible byte range to request it. */
|
|
60
|
-
range?: [number, number];
|
|
61
|
-
};
|
|
60
|
+
range?: [number, number] | undefined;
|
|
61
|
+
} | undefined;
|
|
62
62
|
/**
|
|
63
63
|
* Base URL(s) to access any segment. Can contain tokens to replace to convert
|
|
64
64
|
* it to real URLs.
|
|
65
65
|
*/
|
|
66
66
|
mediaURLs : string[] | null;
|
|
67
67
|
/** Number from which the first segments in this index starts with. */
|
|
68
|
-
startNumber? : number;
|
|
68
|
+
startNumber? : number | undefined;
|
|
69
69
|
/** Every segments defined in this index. */
|
|
70
70
|
timeline : IIndexSegment[];
|
|
71
71
|
/**
|
|
@@ -113,9 +113,9 @@ export interface IBaseIndexContextArgument {
|
|
|
113
113
|
/** Base URL for the Representation concerned. */
|
|
114
114
|
representationBaseURLs : IResolvedBaseUrl[];
|
|
115
115
|
/** ID of the Representation concerned. */
|
|
116
|
-
representationId? : string;
|
|
116
|
+
representationId? : string | undefined;
|
|
117
117
|
/** Bitrate of the Representation concerned. */
|
|
118
|
-
representationBitrate? : number;
|
|
118
|
+
representationBitrate? : number | undefined;
|
|
119
119
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
120
120
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
121
121
|
}
|
|
@@ -25,8 +25,10 @@ import { IEMSG } from "../../../../containers/isobmff";
|
|
|
25
25
|
*/
|
|
26
26
|
export default function getInitSegment(
|
|
27
27
|
index: { timescale: number;
|
|
28
|
-
initialization?: { mediaURLs: string[] | null;
|
|
29
|
-
|
|
28
|
+
initialization?: { mediaURLs: string[] | null;
|
|
29
|
+
range?: [number, number] | undefined; } |
|
|
30
|
+
undefined;
|
|
31
|
+
indexRange?: [number, number] | undefined;
|
|
30
32
|
indexTimeOffset : number; },
|
|
31
33
|
isEMSGWhitelisted?: (inbandEvent: IEMSG) => boolean
|
|
32
34
|
) : ISegment {
|
|
@@ -52,9 +52,9 @@ function getWantedRepeatIndex(
|
|
|
52
52
|
* @returns {Array.<Object>}
|
|
53
53
|
*/
|
|
54
54
|
export default function getSegmentsFromTimeline(
|
|
55
|
-
index : { availabilityTimeComplete? : boolean;
|
|
55
|
+
index : { availabilityTimeComplete? : boolean | undefined;
|
|
56
56
|
mediaURLs : string[] | null;
|
|
57
|
-
startNumber? : number;
|
|
57
|
+
startNumber? : number | undefined;
|
|
58
58
|
timeline : IIndexSegment[];
|
|
59
59
|
timescale : number;
|
|
60
60
|
indexTimeOffset : number; },
|
|
@@ -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
|
|
|
@@ -37,7 +37,7 @@ export interface IListIndex {
|
|
|
37
37
|
*/
|
|
38
38
|
duration : number;
|
|
39
39
|
/** Byte range for a possible index of segments in the server. */
|
|
40
|
-
indexRange?: [number, number];
|
|
40
|
+
indexRange?: [number, number] | undefined;
|
|
41
41
|
/**
|
|
42
42
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
43
43
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -56,14 +56,14 @@ export interface IListIndex {
|
|
|
56
56
|
/** URLs to access the initialization segment. */
|
|
57
57
|
mediaURLs: string[] | null;
|
|
58
58
|
/** possible byte range to request it. */
|
|
59
|
-
range?: [number, number];
|
|
60
|
-
};
|
|
59
|
+
range?: [number, number] | undefined;
|
|
60
|
+
} | undefined;
|
|
61
61
|
/** Information on the list of segments for this index. */
|
|
62
62
|
list: Array<{
|
|
63
63
|
/** URLs of the segment. */
|
|
64
64
|
mediaURLs : string[] | null;
|
|
65
65
|
/** Possible byte-range of the segment. */
|
|
66
|
-
mediaRange? : [number, number];
|
|
66
|
+
mediaRange? : [number, number] | undefined;
|
|
67
67
|
}>;
|
|
68
68
|
/**
|
|
69
69
|
* Timescale to convert a time given here into seconds.
|
|
@@ -78,12 +78,12 @@ export interface IListIndex {
|
|
|
78
78
|
* Most of the properties here are already defined in IListIndex.
|
|
79
79
|
*/
|
|
80
80
|
export interface IListIndexIndexArgument {
|
|
81
|
-
duration? : number;
|
|
82
|
-
indexRange?: [number, number];
|
|
83
|
-
initialization?: { media? : string;
|
|
84
|
-
range? : [number, number]; };
|
|
85
|
-
list: Array<{ media? : string;
|
|
86
|
-
mediaRange? : [number, number]; }>;
|
|
81
|
+
duration? : number | undefined;
|
|
82
|
+
indexRange?: [number, number] | undefined;
|
|
83
|
+
initialization?: { media? : string | undefined;
|
|
84
|
+
range? : [number, number] | undefined; };
|
|
85
|
+
list: Array<{ media? : string | undefined;
|
|
86
|
+
mediaRange? : [number, number] | undefined; }>;
|
|
87
87
|
/**
|
|
88
88
|
* Offset present in the index to convert from the mediaTime (time declared in
|
|
89
89
|
* the media segments and in this index) to the presentationTime (time wanted
|
|
@@ -98,8 +98,8 @@ export interface IListIndexIndexArgument {
|
|
|
98
98
|
* The time given here is in the current
|
|
99
99
|
* timescale (see timescale)
|
|
100
100
|
*/
|
|
101
|
-
presentationTimeOffset? : number;
|
|
102
|
-
timescale? : number;
|
|
101
|
+
presentationTimeOffset? : number | undefined;
|
|
102
|
+
timescale? : number | undefined;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
/** Aditional context needed by a SegmentList RepresentationIndex. */
|
|
@@ -109,9 +109,9 @@ export interface IListIndexContextArgument {
|
|
|
109
109
|
/** Base URL for the Representation concerned. */
|
|
110
110
|
representationBaseURLs : IResolvedBaseUrl[];
|
|
111
111
|
/** ID of the Representation concerned. */
|
|
112
|
-
representationId? : string;
|
|
112
|
+
representationId? : string | undefined;
|
|
113
113
|
/** Bitrate of the Representation concerned. */
|
|
114
|
-
representationBitrate? : number;
|
|
114
|
+
representationBitrate? : number | undefined;
|
|
115
115
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
116
116
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
117
117
|
}
|
|
@@ -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
|
|
@@ -49,14 +48,14 @@ export interface ITemplateIndex {
|
|
|
49
48
|
*/
|
|
50
49
|
timescale : number;
|
|
51
50
|
/** Byte range for a possible index of segments in the server. */
|
|
52
|
-
indexRange?: [number, number];
|
|
51
|
+
indexRange?: [number, number] | undefined;
|
|
53
52
|
/** Information on the initialization segment. */
|
|
54
53
|
initialization? : {
|
|
55
54
|
/** URLs to access the initialization segment. */
|
|
56
55
|
mediaURLs: string[] | null;
|
|
57
56
|
/** possible byte range to request it. */
|
|
58
|
-
range?: [number, number];
|
|
59
|
-
};
|
|
57
|
+
range?: [number, number] | undefined;
|
|
58
|
+
} | undefined;
|
|
60
59
|
/**
|
|
61
60
|
* URL base to access any segment.
|
|
62
61
|
* Can contain token to replace to convert it to real URLs.
|
|
@@ -91,7 +90,7 @@ export interface ITemplateIndex {
|
|
|
91
90
|
*/
|
|
92
91
|
presentationTimeOffset : number;
|
|
93
92
|
/** Number from which the first segments in this index starts with. */
|
|
94
|
-
startNumber? : number;
|
|
93
|
+
startNumber? : number | undefined;
|
|
95
94
|
}
|
|
96
95
|
|
|
97
96
|
/**
|
|
@@ -99,14 +98,15 @@ export interface ITemplateIndex {
|
|
|
99
98
|
* Most of the properties here are already defined in ITemplateIndex.
|
|
100
99
|
*/
|
|
101
100
|
export interface ITemplateIndexIndexArgument {
|
|
102
|
-
duration? : number;
|
|
103
|
-
indexRange?: [number, number];
|
|
104
|
-
initialization?: { media? : string;
|
|
105
|
-
range? : [number, number]; }
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
101
|
+
duration? : number | undefined;
|
|
102
|
+
indexRange?: [number, number] | undefined;
|
|
103
|
+
initialization?: { media? : string | undefined;
|
|
104
|
+
range? : [number, number] | undefined; } |
|
|
105
|
+
undefined;
|
|
106
|
+
media? : string | undefined;
|
|
107
|
+
presentationTimeOffset? : number | undefined;
|
|
108
|
+
startNumber? : number | undefined;
|
|
109
|
+
timescale? : number | undefined;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/** Aditional context needed by a SegmentTemplate RepresentationIndex. */
|
|
@@ -125,9 +125,9 @@ export interface ITemplateIndexContextArgument {
|
|
|
125
125
|
/** Base URL for the Representation concerned. */
|
|
126
126
|
representationBaseURLs : IResolvedBaseUrl[];
|
|
127
127
|
/** ID of the Representation concerned. */
|
|
128
|
-
representationId? : string;
|
|
128
|
+
representationId? : string | undefined;
|
|
129
129
|
/** Bitrate of the Representation concerned. */
|
|
130
|
-
representationBitrate? : number;
|
|
130
|
+
representationBitrate? : number | undefined;
|
|
131
131
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
132
132
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
133
133
|
}
|
|
@@ -150,9 +150,9 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
150
150
|
/** Absolute start of the Period, in seconds. */
|
|
151
151
|
private _periodStart : number;
|
|
152
152
|
/** Difference between the end time of the Period and its start time, in timescale. */
|
|
153
|
-
private _scaledPeriodEnd
|
|
153
|
+
private _scaledPeriodEnd : number | undefined;
|
|
154
154
|
/** Minimum availabilityTimeOffset concerning the segments of this Representation. */
|
|
155
|
-
private _availabilityTimeOffset
|
|
155
|
+
private _availabilityTimeOffset : number | undefined;
|
|
156
156
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
157
157
|
private _isDynamic : boolean;
|
|
158
158
|
/* Function that tells if an EMSG is whitelisted by the manifest */
|
|
@@ -532,7 +532,7 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
532
532
|
// segment that there actually is due to a very little difference between
|
|
533
533
|
// the period's duration and a multiple of a segment's duration.
|
|
534
534
|
// Check that we're within a good margin
|
|
535
|
-
const minimumDuration = MINIMUM_SEGMENT_SIZE * timescale;
|
|
535
|
+
const minimumDuration = config.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
|
|
536
536
|
if (maximumTime - regularLastSegmentStart > minimumDuration ||
|
|
537
537
|
numberIndexedToZero === 0)
|
|
538
538
|
{
|