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
|
@@ -26,14 +26,13 @@ import {
|
|
|
26
26
|
import {
|
|
27
27
|
IAdaptationSetIntermediateRepresentation,
|
|
28
28
|
IRepresentationIntermediateRepresentation,
|
|
29
|
-
ISegmentTemplateIntermediateRepresentation,
|
|
30
29
|
IScheme,
|
|
31
30
|
IContentProtectionIntermediateRepresentation,
|
|
32
31
|
} from "../node_parser_types";
|
|
33
32
|
import { getWEBMHDRInformation } from "./get_hdr_information";
|
|
34
|
-
import
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
import parseRepresentationIndex, {
|
|
34
|
+
IRepresentationIndexContext,
|
|
35
|
+
} from "./parse_representation_index";
|
|
37
36
|
|
|
38
37
|
/**
|
|
39
38
|
* Combine inband event streams from representation and
|
|
@@ -59,49 +58,6 @@ function combineInbandEventStreams(
|
|
|
59
58
|
return newSchemeId;
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
/** Supplementary context needed to parse a Representation. */
|
|
63
|
-
export interface IAdaptationInfos {
|
|
64
|
-
/** Whether we should request new segments even if they are not yet finished. */
|
|
65
|
-
aggressiveMode : boolean;
|
|
66
|
-
availabilityTimeComplete: boolean;
|
|
67
|
-
/** availability time offset of the concerned Adaptation. */
|
|
68
|
-
availabilityTimeOffset: number;
|
|
69
|
-
/** Eventual URLs from which every relative URL will be based on. */
|
|
70
|
-
baseURLs : IResolvedBaseUrl[];
|
|
71
|
-
/** Allows to obtain the first/last available position of a dynamic content. */
|
|
72
|
-
manifestBoundsCalculator : ManifestBoundsCalculator;
|
|
73
|
-
/** End time of the current period, in seconds. */
|
|
74
|
-
end? : number;
|
|
75
|
-
/** Whether the Manifest can evolve with time. */
|
|
76
|
-
isDynamic : boolean;
|
|
77
|
-
/** Manifest DASH profiles used for signalling some features */
|
|
78
|
-
manifestProfiles?: string;
|
|
79
|
-
/**
|
|
80
|
-
* Parent parsed SegmentTemplate elements.
|
|
81
|
-
* Sorted by provenance from higher level (e.g. Period) to lower-lever (e.g.
|
|
82
|
-
* AdaptationSet).
|
|
83
|
-
*/
|
|
84
|
-
parentSegmentTemplates : ISegmentTemplateIntermediateRepresentation[];
|
|
85
|
-
/**
|
|
86
|
-
* Time (in terms of `performance.now`) at which the XML file containing this
|
|
87
|
-
* Representation was received.
|
|
88
|
-
*/
|
|
89
|
-
receivedTime? : number;
|
|
90
|
-
/** Start time of the current period, in seconds. */
|
|
91
|
-
start : number;
|
|
92
|
-
/** Depth of the buffer for the whole content, in seconds. */
|
|
93
|
-
timeShiftBufferDepth? : number;
|
|
94
|
-
/**
|
|
95
|
-
* The parser should take this Adaptation - which is from a previously parsed
|
|
96
|
-
* Manifest for the same dynamic content - as a base to speed-up the parsing
|
|
97
|
-
* process.
|
|
98
|
-
* /!\ If unexpected differences exist between both, there is a risk of
|
|
99
|
-
* de-synchronization with what is actually on the server,
|
|
100
|
-
* Use with moderation.
|
|
101
|
-
*/
|
|
102
|
-
unsafelyBaseOnPreviousAdaptation : Adaptation | null;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
61
|
/**
|
|
106
62
|
* Extract HDR information from manifest and codecs.
|
|
107
63
|
* @param {Object}
|
|
@@ -111,9 +67,9 @@ function getHDRInformation(
|
|
|
111
67
|
{ adaptationProfiles,
|
|
112
68
|
manifestProfiles,
|
|
113
69
|
codecs,
|
|
114
|
-
}: { adaptationProfiles?: string;
|
|
115
|
-
manifestProfiles?: string;
|
|
116
|
-
codecs?: string; }
|
|
70
|
+
}: { adaptationProfiles?: string | undefined;
|
|
71
|
+
manifestProfiles?: string | undefined;
|
|
72
|
+
codecs?: string | undefined; }
|
|
117
73
|
): undefined | IHDRInformation {
|
|
118
74
|
const profiles = (adaptationProfiles ?? "") + (manifestProfiles ?? "");
|
|
119
75
|
if (codecs === undefined) {
|
|
@@ -138,13 +94,13 @@ function getHDRInformation(
|
|
|
138
94
|
/**
|
|
139
95
|
* Process intermediate representations to create final parsed representations.
|
|
140
96
|
* @param {Array.<Object>} representationsIR
|
|
141
|
-
* @param {Object}
|
|
97
|
+
* @param {Object} context
|
|
142
98
|
* @returns {Array.<Object>}
|
|
143
99
|
*/
|
|
144
100
|
export default function parseRepresentations(
|
|
145
101
|
representationsIR : IRepresentationIntermediateRepresentation[],
|
|
146
102
|
adaptation : IAdaptationSetIntermediateRepresentation,
|
|
147
|
-
|
|
103
|
+
context : IRepresentationContext
|
|
148
104
|
): IParsedRepresentation[] {
|
|
149
105
|
const parsedRepresentations : IParsedRepresentation[] = [];
|
|
150
106
|
for (const representation of representationsIR) {
|
|
@@ -171,7 +127,7 @@ export default function parseRepresentations(
|
|
|
171
127
|
}
|
|
172
128
|
|
|
173
129
|
// Retrieve previous version of the Representation, if one.
|
|
174
|
-
const unsafelyBaseOnPreviousRepresentation =
|
|
130
|
+
const unsafelyBaseOnPreviousRepresentation = context
|
|
175
131
|
.unsafelyBaseOnPreviousAdaptation?.getRepresentation(representationID) ??
|
|
176
132
|
null;
|
|
177
133
|
|
|
@@ -180,18 +136,19 @@ export default function parseRepresentations(
|
|
|
180
136
|
|
|
181
137
|
const availabilityTimeComplete =
|
|
182
138
|
representation.attributes.availabilityTimeComplete ??
|
|
183
|
-
|
|
139
|
+
context.availabilityTimeComplete;
|
|
184
140
|
const availabilityTimeOffset =
|
|
185
141
|
(representation.attributes.availabilityTimeOffset ?? 0) +
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
142
|
+
context.availabilityTimeOffset;
|
|
143
|
+
const reprIndexCtxt = objectAssign({},
|
|
144
|
+
context,
|
|
145
|
+
{ availabilityTimeOffset,
|
|
146
|
+
availabilityTimeComplete,
|
|
147
|
+
unsafelyBaseOnPreviousRepresentation,
|
|
148
|
+
adaptation,
|
|
149
|
+
inbandEventStreams });
|
|
193
150
|
const representationIndex = parseRepresentationIndex(representation,
|
|
194
|
-
|
|
151
|
+
reprIndexCtxt);
|
|
195
152
|
|
|
196
153
|
// Find bitrate
|
|
197
154
|
let representationBitrate : number;
|
|
@@ -297,10 +254,34 @@ export default function parseRepresentations(
|
|
|
297
254
|
|
|
298
255
|
parsedRepresentation.hdrInfo =
|
|
299
256
|
getHDRInformation({ adaptationProfiles: adaptation.attributes.profiles,
|
|
300
|
-
manifestProfiles:
|
|
257
|
+
manifestProfiles: context.manifestProfiles,
|
|
301
258
|
codecs });
|
|
302
259
|
|
|
303
260
|
parsedRepresentations.push(parsedRepresentation);
|
|
304
261
|
}
|
|
305
262
|
return parsedRepresentations;
|
|
306
263
|
}
|
|
264
|
+
|
|
265
|
+
/** Supplementary context needed to parse a Representation. */
|
|
266
|
+
export interface IRepresentationContext extends IInheritedRepresentationIndexContext {
|
|
267
|
+
/** Manifest DASH profiles used for signalling some features */
|
|
268
|
+
manifestProfiles?: string | undefined;
|
|
269
|
+
/**
|
|
270
|
+
* The parser should take this Adaptation - which is from a previously parsed
|
|
271
|
+
* Manifest for the same dynamic content - as a base to speed-up the parsing
|
|
272
|
+
* process.
|
|
273
|
+
* /!\ If unexpected differences exist between both, there is a risk of
|
|
274
|
+
* de-synchronization with what is actually on the server,
|
|
275
|
+
* Use with moderation.
|
|
276
|
+
*/
|
|
277
|
+
unsafelyBaseOnPreviousAdaptation : Adaptation | null;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Supplementary context needed to parse a Representation common with
|
|
282
|
+
* `IRepresentationIndexContext`.
|
|
283
|
+
*/
|
|
284
|
+
type IInheritedRepresentationIndexContext = Omit<IRepresentationIndexContext,
|
|
285
|
+
"adaptation" |
|
|
286
|
+
"unsafelyBaseOnPreviousRepresentation" |
|
|
287
|
+
"inbandEventStreams">;
|
|
@@ -131,7 +131,7 @@ export interface IPeriodChildren {
|
|
|
131
131
|
/**
|
|
132
132
|
* Provide a template with which we will be able to request segments.
|
|
133
133
|
*/
|
|
134
|
-
segmentTemplate? : ISegmentTemplateIntermediateRepresentation;
|
|
134
|
+
segmentTemplate? : ISegmentTemplateIntermediateRepresentation | undefined;
|
|
135
135
|
/**
|
|
136
136
|
* Allows to signal events linked to this Period.
|
|
137
137
|
*
|
|
@@ -189,17 +189,17 @@ export interface IAdaptationSetChildren {
|
|
|
189
189
|
representations : IRepresentationIntermediateRepresentation[];
|
|
190
190
|
|
|
191
191
|
// optional
|
|
192
|
-
accessibilities? : IScheme[];
|
|
193
|
-
contentComponent? : IContentComponentAttributes;
|
|
194
|
-
contentProtections? : IContentProtectionIntermediateRepresentation[];
|
|
195
|
-
essentialProperties? : IScheme[];
|
|
196
|
-
inbandEventStreams? : IScheme[];
|
|
192
|
+
accessibilities? : IScheme[] | undefined;
|
|
193
|
+
contentComponent? : IContentComponentAttributes | undefined;
|
|
194
|
+
contentProtections? : IContentProtectionIntermediateRepresentation[] | undefined;
|
|
195
|
+
essentialProperties? : IScheme[] | undefined;
|
|
196
|
+
inbandEventStreams? : IScheme[] | undefined;
|
|
197
197
|
roles? : IScheme[];
|
|
198
|
-
supplementalProperties? : IScheme[];
|
|
198
|
+
supplementalProperties? : IScheme[] | undefined;
|
|
199
199
|
|
|
200
|
-
segmentBase? : ISegmentBaseIntermediateRepresentation;
|
|
201
|
-
segmentList? : ISegmentListIntermediateRepresentation;
|
|
202
|
-
segmentTemplate? : ISegmentTemplateIntermediateRepresentation;
|
|
200
|
+
segmentBase? : ISegmentBaseIntermediateRepresentation | undefined;
|
|
201
|
+
segmentList? : ISegmentListIntermediateRepresentation | undefined;
|
|
202
|
+
segmentTemplate? : ISegmentTemplateIntermediateRepresentation | undefined;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
/* Intermediate representation for An AdaptationSet node's attributes. */
|
|
@@ -336,20 +336,20 @@ export interface IContentProtectionAttributes {
|
|
|
336
336
|
}
|
|
337
337
|
|
|
338
338
|
export interface ISegmentTemplateIntermediateRepresentation {
|
|
339
|
-
availabilityTimeComplete? : boolean;
|
|
340
|
-
availabilityTimeOffset
|
|
341
|
-
bitstreamSwitching? : boolean;
|
|
342
|
-
duration? : number;
|
|
343
|
-
index? : string;
|
|
344
|
-
indexRange?: [number, number];
|
|
345
|
-
indexRangeExact? : boolean;
|
|
346
|
-
media? : string;
|
|
347
|
-
presentationTimeOffset? : number;
|
|
348
|
-
startNumber? : number;
|
|
349
|
-
timescale? : number;
|
|
350
|
-
initialization? : { media?: string };
|
|
351
|
-
timeline? : ISegmentTimelineElement[];
|
|
352
|
-
timelineParser? : ITimelineParser;
|
|
339
|
+
availabilityTimeComplete? : boolean | undefined;
|
|
340
|
+
availabilityTimeOffset? : number | undefined;
|
|
341
|
+
bitstreamSwitching? : boolean | undefined;
|
|
342
|
+
duration? : number | undefined;
|
|
343
|
+
index? : string | undefined;
|
|
344
|
+
indexRange?: [number, number] | undefined;
|
|
345
|
+
indexRangeExact? : boolean | undefined;
|
|
346
|
+
media? : string | undefined;
|
|
347
|
+
presentationTimeOffset? : number | undefined;
|
|
348
|
+
startNumber? : number | undefined;
|
|
349
|
+
timescale? : number | undefined;
|
|
350
|
+
initialization? : { media?: string } | undefined;
|
|
351
|
+
timeline? : ISegmentTimelineElement[] | undefined;
|
|
352
|
+
timelineParser? : ITimelineParser | undefined;
|
|
353
353
|
}
|
|
354
354
|
|
|
355
355
|
export interface ISegmentTimelineElement {
|
|
@@ -382,9 +382,9 @@ export interface IScheme {
|
|
|
382
382
|
*
|
|
383
383
|
* `undefined` if no `schemeIdUri` attribute has been found.
|
|
384
384
|
*/
|
|
385
|
-
schemeIdUri? : string;
|
|
385
|
+
schemeIdUri? : string | undefined;
|
|
386
386
|
/** Inner content of that scheme. */
|
|
387
|
-
value? : string;
|
|
387
|
+
value? : string | undefined;
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
export interface IEventStreamIntermediateRepresentation {
|
|
@@ -395,9 +395,9 @@ export interface IEventStreamIntermediateRepresentation {
|
|
|
395
395
|
}
|
|
396
396
|
|
|
397
397
|
export interface IEventStreamAttributes {
|
|
398
|
-
schemeIdUri? : string;
|
|
399
|
-
timescale? : number;
|
|
400
|
-
value? : string;
|
|
398
|
+
schemeIdUri? : string | undefined;
|
|
399
|
+
timescale? : number | undefined;
|
|
400
|
+
value? : string | undefined;
|
|
401
401
|
|
|
402
402
|
/**
|
|
403
403
|
* XML namespaces linked to the `<EventStream>` element.
|
|
@@ -406,7 +406,7 @@ export interface IEventStreamAttributes {
|
|
|
406
406
|
* not parsed through the browser's DOMParser API, and thus might depend on
|
|
407
407
|
* parent namespaces to be parsed correctly.
|
|
408
408
|
*/
|
|
409
|
-
namespaces? : Array<{ key: string; value: string }
|
|
409
|
+
namespaces? : Array<{ key: string; value: string }> | undefined;
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
export interface IEventStreamChildren {
|
|
@@ -71,19 +71,19 @@ export interface ILoadedResource<T extends string | ArrayBuffer> {
|
|
|
71
71
|
* The URL of the loaded resource (post-redirection if one).
|
|
72
72
|
* `undefined` if unknown or inexistant.
|
|
73
73
|
*/
|
|
74
|
-
url? : string;
|
|
74
|
+
url? : string | undefined;
|
|
75
75
|
/**
|
|
76
76
|
* The time, in terms of `performance.now()`, at which the resource was
|
|
77
77
|
* starting to be fetched.
|
|
78
78
|
* `undefined` if unknown or not applicable.
|
|
79
79
|
*/
|
|
80
|
-
sendingTime? : number;
|
|
80
|
+
sendingTime? : number | undefined;
|
|
81
81
|
/**
|
|
82
82
|
* The time, in terms of `performance.now()`, at which the resource was
|
|
83
83
|
* fully-fetched.
|
|
84
84
|
* `undefined` if unknown or not applicable.
|
|
85
85
|
*/
|
|
86
|
-
receivedTime? : number;
|
|
86
|
+
receivedTime? : number | undefined;
|
|
87
87
|
/** The loaded resource itself, under the right format.
|
|
88
88
|
* Or an error, when fetching ressources.
|
|
89
89
|
*/
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import PPromise from "pinkie";
|
|
18
17
|
import log from "../../../../../log";
|
|
19
18
|
import assertUnreachable from "../../../../../utils/assert_unreachable";
|
|
20
19
|
import noop from "../../../../../utils/noop";
|
|
20
|
+
import PPromise from "../../../../../utils/promise";
|
|
21
21
|
import parseMpdIr, {
|
|
22
22
|
IIrParserResponse,
|
|
23
23
|
ILoadedXlinkData,
|
|
@@ -69,11 +69,11 @@ export interface IMetaPlaylist {
|
|
|
69
69
|
export default function parseMetaPlaylist(
|
|
70
70
|
data : unknown,
|
|
71
71
|
parserOptions : {
|
|
72
|
-
url?: string;
|
|
72
|
+
url?: string | undefined;
|
|
73
73
|
serverSyncInfos?: {
|
|
74
74
|
serverTimestamp: number;
|
|
75
75
|
clientTime: number;
|
|
76
|
-
};
|
|
76
|
+
} | undefined;
|
|
77
77
|
}
|
|
78
78
|
): IParserResponse<IParsedManifest> {
|
|
79
79
|
let parsedData;
|
|
@@ -147,9 +147,9 @@ export default function parseMetaPlaylist(
|
|
|
147
147
|
function createManifest(
|
|
148
148
|
mplData : IMetaPlaylist,
|
|
149
149
|
manifests : Manifest[],
|
|
150
|
-
parserOptions: { url?: string;
|
|
150
|
+
parserOptions: { url?: string | undefined;
|
|
151
151
|
serverSyncInfos?: { serverTimestamp: number;
|
|
152
|
-
clientTime: number; }; }
|
|
152
|
+
clientTime: number; } | undefined; }
|
|
153
153
|
): IParsedManifest {
|
|
154
154
|
const { url, serverSyncInfos } = parserOptions;
|
|
155
155
|
const clockOffset = serverSyncInfos !== undefined ?
|
|
@@ -64,8 +64,8 @@ interface IAdaptationParserArguments { root : Element;
|
|
|
64
64
|
timescale : number;
|
|
65
65
|
protections : IContentProtectionSmooth[];
|
|
66
66
|
isLive : boolean;
|
|
67
|
-
timeShiftBufferDepth? : number;
|
|
68
|
-
manifestReceivedTime? : number; }
|
|
67
|
+
timeShiftBufferDepth? : number | undefined;
|
|
68
|
+
manifestReceivedTime? : number | undefined; }
|
|
69
69
|
|
|
70
70
|
type IAdaptationType = "audio" |
|
|
71
71
|
"video" |
|
|
@@ -83,18 +83,19 @@ const MIME_TYPES : Partial<Record<string, string>> = {
|
|
|
83
83
|
AVC1: "video/mp4",
|
|
84
84
|
H264: "video/mp4",
|
|
85
85
|
TTML: "application/ttml+xml+mp4",
|
|
86
|
+
DFXP: "application/ttml+xml+mp4",
|
|
86
87
|
};
|
|
87
88
|
|
|
88
89
|
export interface IHSSParserConfiguration {
|
|
89
|
-
aggressiveMode? : boolean;
|
|
90
|
-
suggestedPresentationDelay? : number;
|
|
91
|
-
referenceDateTime? : number;
|
|
92
|
-
minRepresentationBitrate? : number;
|
|
93
|
-
keySystems? : (hex
|
|
90
|
+
aggressiveMode? : boolean | undefined;
|
|
91
|
+
suggestedPresentationDelay? : number | undefined;
|
|
92
|
+
referenceDateTime? : number | undefined;
|
|
93
|
+
minRepresentationBitrate? : number | undefined;
|
|
94
|
+
keySystems? : ((hex : Uint8Array | undefined) => IKeySystem[]) | undefined;
|
|
94
95
|
serverSyncInfos? : {
|
|
95
96
|
serverTimestamp: number;
|
|
96
97
|
clientTime: number;
|
|
97
|
-
};
|
|
98
|
+
} | undefined;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
interface ISmoothParsedQualityLevel {
|
|
@@ -104,16 +105,16 @@ interface ISmoothParsedQualityLevel {
|
|
|
104
105
|
customAttributes : string[];
|
|
105
106
|
|
|
106
107
|
// optional
|
|
107
|
-
audiotag? : number;
|
|
108
|
-
bitsPerSample? : number;
|
|
109
|
-
channels? : number;
|
|
110
|
-
codecs? : string;
|
|
111
|
-
height? : number;
|
|
112
|
-
id? : string;
|
|
113
|
-
mimeType? : string;
|
|
114
|
-
packetSize? : number;
|
|
115
|
-
samplingRate? : number;
|
|
116
|
-
width? : number;
|
|
108
|
+
audiotag? : number | undefined;
|
|
109
|
+
bitsPerSample? : number | undefined;
|
|
110
|
+
channels? : number | undefined;
|
|
111
|
+
codecs? : string | undefined;
|
|
112
|
+
height? : number | undefined;
|
|
113
|
+
id? : string | undefined;
|
|
114
|
+
mimeType? : string | undefined;
|
|
115
|
+
packetSize? : number | undefined;
|
|
116
|
+
samplingRate? : number | undefined;
|
|
117
|
+
width? : number | undefined;
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
/**
|
|
@@ -122,9 +123,11 @@ interface ISmoothParsedQualityLevel {
|
|
|
122
123
|
*/
|
|
123
124
|
function createSmoothStreamingParser(
|
|
124
125
|
parserOptions : IHSSParserConfiguration = {}
|
|
125
|
-
) : (
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
) : (
|
|
127
|
+
manifest : Document,
|
|
128
|
+
url? : string | undefined,
|
|
129
|
+
manifestReceivedTime? : number | undefined
|
|
130
|
+
) => IParsedManifest {
|
|
128
131
|
const referenceDateTime = parserOptions.referenceDateTime === undefined ?
|
|
129
132
|
Date.UTC(1970, 0, 1, 0, 0, 0, 0) / 1000 :
|
|
130
133
|
parserOptions.referenceDateTime;
|
|
@@ -178,12 +178,12 @@ export interface ISmoothRepresentationIndexContextInformation {
|
|
|
178
178
|
|
|
179
179
|
/** Information allowing to generate a Smooth initialization segment. */
|
|
180
180
|
interface ISmoothInitSegmentPrivateInfos {
|
|
181
|
-
bitsPerSample? : number;
|
|
182
|
-
channels? : number;
|
|
183
|
-
codecPrivateData? : string;
|
|
184
|
-
packetSize? : number;
|
|
185
|
-
samplingRate? : number;
|
|
186
|
-
protection? : { keyId : Uint8Array };
|
|
181
|
+
bitsPerSample? : number | undefined;
|
|
182
|
+
channels? : number | undefined;
|
|
183
|
+
codecPrivateData? : string | undefined;
|
|
184
|
+
packetSize? : number | undefined;
|
|
185
|
+
samplingRate? : number | undefined;
|
|
186
|
+
protection? : { keyId : Uint8Array } | undefined;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
/**
|
|
@@ -198,13 +198,13 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
198
198
|
* Information needed to generate an initialization segment.
|
|
199
199
|
* Taken from the Manifest.
|
|
200
200
|
*/
|
|
201
|
-
private _initSegmentInfos : { codecPrivateData? : string;
|
|
202
|
-
bitsPerSample? : number;
|
|
203
|
-
channels? : number;
|
|
204
|
-
packetSize? : number;
|
|
205
|
-
samplingRate? : number;
|
|
201
|
+
private _initSegmentInfos : { codecPrivateData? : string | undefined;
|
|
202
|
+
bitsPerSample? : number | undefined;
|
|
203
|
+
channels? : number | undefined;
|
|
204
|
+
packetSize? : number | undefined;
|
|
205
|
+
samplingRate? : number | undefined;
|
|
206
206
|
timescale : number;
|
|
207
|
-
protection? : { keyId : Uint8Array }; };
|
|
207
|
+
protection? : { keyId : Uint8Array } | undefined; };
|
|
208
208
|
|
|
209
209
|
/**
|
|
210
210
|
* if `true`, this class will return segments even if we're not sure they had
|
|
@@ -225,13 +225,13 @@ export default class SmoothRepresentationIndex implements IRepresentationIndex {
|
|
|
225
225
|
* Useful to know if a segment present in the timeline has actually been
|
|
226
226
|
* generated on the server-side
|
|
227
227
|
*/
|
|
228
|
-
private _scaledLiveGap
|
|
228
|
+
private _scaledLiveGap : number | undefined;
|
|
229
229
|
|
|
230
230
|
/**
|
|
231
231
|
* Defines the end of the latest available segment when this index was known to
|
|
232
232
|
* be valid, in the index's timescale.
|
|
233
233
|
*/
|
|
234
|
-
private _initialScaledLastPosition
|
|
234
|
+
private _initialScaledLastPosition : number | undefined;
|
|
235
235
|
|
|
236
236
|
/**
|
|
237
237
|
* Defines the earliest time when this index was known to be valid (that is, when
|
|
@@ -18,8 +18,8 @@ import { IRepresentationIndex } from "../../manifest";
|
|
|
18
18
|
import { IHDRInformation } from "../../manifest/types";
|
|
19
19
|
|
|
20
20
|
export interface IManifestStreamEvent { start: number;
|
|
21
|
-
end?: number;
|
|
22
|
-
id?: string;
|
|
21
|
+
end?: number | undefined;
|
|
22
|
+
id?: string | undefined;
|
|
23
23
|
data: IParsedStreamEventData; }
|
|
24
24
|
|
|
25
25
|
export interface IParsedStreamEventData {
|
|
@@ -33,7 +33,7 @@ export interface IParsedStreamEventData {
|
|
|
33
33
|
|
|
34
34
|
/** Describes information about an encryption Key ID of a given media. */
|
|
35
35
|
export interface IContentProtectionKID { keyId : Uint8Array;
|
|
36
|
-
systemId?: string; }
|
|
36
|
+
systemId?: string | undefined; }
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Encryption initialization data.
|
|
@@ -92,37 +92,37 @@ export interface IParsedRepresentation {
|
|
|
92
92
|
id: string;
|
|
93
93
|
|
|
94
94
|
/** Codec(s) associated with this Representation. */
|
|
95
|
-
codecs?: string;
|
|
95
|
+
codecs?: string | undefined;
|
|
96
96
|
/**
|
|
97
97
|
* Information about the encryption associated with this Representation.
|
|
98
98
|
* Not set if unknown or if the content is not encrypted.
|
|
99
99
|
*/
|
|
100
|
-
contentProtections? : IContentProtections;
|
|
100
|
+
contentProtections? : IContentProtections | undefined;
|
|
101
101
|
/**
|
|
102
102
|
* Frame rate (images per seconds) associated with this Representation.
|
|
103
103
|
* Not set if unknown or if it makes no sense (e.g. for subtitles).
|
|
104
104
|
*/
|
|
105
|
-
frameRate?: string;
|
|
105
|
+
frameRate?: string | undefined;
|
|
106
106
|
/**
|
|
107
107
|
* Height (top to bottom) in pixels this Representation has.
|
|
108
108
|
* Not set if unknown or if it makes no sense (e.g. for audio).
|
|
109
109
|
*/
|
|
110
|
-
height?: number;
|
|
110
|
+
height?: number | undefined;
|
|
111
111
|
/**
|
|
112
112
|
* Defines the mime-type of the content.
|
|
113
113
|
* This allows to deduce the media container but most of the time, the
|
|
114
114
|
* `codecs` will also be needed to know how to decode that media.
|
|
115
115
|
*/
|
|
116
|
-
mimeType?: string;
|
|
116
|
+
mimeType?: string | undefined;
|
|
117
117
|
/**
|
|
118
118
|
* Width (left to right) in pixels this Representation has.
|
|
119
119
|
* Not set if unknown or if it makes no sense (e.g. for audio).
|
|
120
120
|
*/
|
|
121
|
-
width?: number;
|
|
121
|
+
width?: number | undefined;
|
|
122
122
|
/**
|
|
123
123
|
* Information about the HDR characteristic of a content.
|
|
124
124
|
*/
|
|
125
|
-
hdrInfo?: IHDRInformation;
|
|
125
|
+
hdrInfo?: IHDRInformation | undefined;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/** Every possible types an Adaptation can have. */
|
|
@@ -155,34 +155,34 @@ export interface IParsedAdaptation {
|
|
|
155
155
|
* Not set if unknown or if it makes no sense for the current track (e.g. for
|
|
156
156
|
* a video track).
|
|
157
157
|
*/
|
|
158
|
-
audioDescription? : boolean;
|
|
158
|
+
audioDescription? : boolean | undefined;
|
|
159
159
|
/**
|
|
160
160
|
* Whether this Adaptation are closed captions for the hard of hearing.
|
|
161
161
|
* Not set if unknown or if it makes no sense for the current track (e.g. for
|
|
162
162
|
* a video track).
|
|
163
163
|
*/
|
|
164
|
-
closedCaption? : boolean;
|
|
164
|
+
closedCaption? : boolean | undefined;
|
|
165
165
|
/**
|
|
166
166
|
* If true this Adaptation is in a dub: it was recorded in another language
|
|
167
167
|
* than the original(s) one(s).
|
|
168
168
|
*/
|
|
169
|
-
isDub? : boolean;
|
|
169
|
+
isDub? : boolean | undefined;
|
|
170
170
|
/**
|
|
171
171
|
* If true this Adaptation is in a sign interpreted: which is a variant of the
|
|
172
172
|
* video with sign language.
|
|
173
173
|
*/
|
|
174
|
-
isSignInterpreted? : boolean;
|
|
174
|
+
isSignInterpreted? : boolean | undefined;
|
|
175
175
|
/** Tells if the track is a trick mode track. */
|
|
176
|
-
isTrickModeTrack? : boolean;
|
|
176
|
+
isTrickModeTrack? : boolean | undefined;
|
|
177
177
|
/**
|
|
178
178
|
* Language the `Adaptation` is in.
|
|
179
179
|
* Not set if unknown or if it makes no sense for the current track.
|
|
180
180
|
*/
|
|
181
|
-
language?: string;
|
|
181
|
+
language?: string | undefined;
|
|
182
182
|
/**
|
|
183
183
|
* TrickMode tracks attached to the adaptation.
|
|
184
184
|
*/
|
|
185
|
-
trickModeTracks?: IParsedAdaptation[];
|
|
185
|
+
trickModeTracks?: IParsedAdaptation[] | undefined;
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
/** Information on a given period of time in the Manifest */
|
|
@@ -205,18 +205,18 @@ export interface IParsedPeriod {
|
|
|
205
205
|
* Duration of the Period (from the start to the end), in seconds.
|
|
206
206
|
* `undefined` if the Period is the last one and is still being updated.
|
|
207
207
|
*/
|
|
208
|
-
duration? : number;
|
|
208
|
+
duration? : number | undefined;
|
|
209
209
|
/**
|
|
210
210
|
* Time at which the Period ends, in seconds.
|
|
211
211
|
* `undefined` if the Period is the last one and is still
|
|
212
212
|
* being updated.
|
|
213
213
|
*/
|
|
214
|
-
end? : number;
|
|
214
|
+
end? : number | undefined;
|
|
215
215
|
/**
|
|
216
216
|
* Array containing every stream event from period in manifest.
|
|
217
217
|
* `undefined` if no parsed stream event in manifest.
|
|
218
218
|
*/
|
|
219
|
-
streamEvents?: IManifestStreamEvent[];
|
|
219
|
+
streamEvents?: IManifestStreamEvent[] | undefined;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/** Information on the whole content */
|
|
@@ -240,23 +240,23 @@ export interface IParsedManifest {
|
|
|
240
240
|
* The wall-clock time when the manifest was generated and published at the
|
|
241
241
|
* origin server
|
|
242
242
|
*/
|
|
243
|
-
publishTime
|
|
243
|
+
publishTime? : number | undefined;
|
|
244
244
|
/** Underlying transport protocol: "smooth", "dash", "metaplaylist" etc. */
|
|
245
245
|
transportType: string;
|
|
246
246
|
/** Base time from which the segments are generated. */
|
|
247
|
-
availabilityStartTime? : number;
|
|
247
|
+
availabilityStartTime? : number | undefined;
|
|
248
248
|
/**
|
|
249
249
|
* Offset, in milliseconds, the client's clock (in terms of `performance.now`)
|
|
250
250
|
* has relatively to the server's
|
|
251
251
|
*/
|
|
252
|
-
clockOffset
|
|
252
|
+
clockOffset? : number | undefined;
|
|
253
253
|
/** If set, the Manifest needs to be updated when that Promise resolves. */
|
|
254
|
-
expired? : Promise<void
|
|
254
|
+
expired? : Promise<void> | undefined;
|
|
255
255
|
/**
|
|
256
256
|
* Duration of the validity of this Manifest from its download time.
|
|
257
257
|
* After that time has elapsed, the Manifest should be refreshed.
|
|
258
258
|
*/
|
|
259
|
-
lifetime
|
|
259
|
+
lifetime? : number | undefined;
|
|
260
260
|
/**
|
|
261
261
|
* Data allowing to calculate the minimum and maximum seekable positions at
|
|
262
262
|
* any given time.
|
|
@@ -266,7 +266,7 @@ export interface IParsedManifest {
|
|
|
266
266
|
* The minimum time, in seconds, available in this Manifest.
|
|
267
267
|
* `undefined` if that value is unknown.
|
|
268
268
|
*/
|
|
269
|
-
absoluteMinimumTime? : number;
|
|
269
|
+
absoluteMinimumTime? : number | undefined;
|
|
270
270
|
/**
|
|
271
271
|
* Some dynamic contents have the concept of a "window depth" (or "buffer
|
|
272
272
|
* depth") which allows to set a minimum position for all reachable
|
|
@@ -311,8 +311,8 @@ export interface IParsedManifest {
|
|
|
311
311
|
* Suggested delay from the last position the player should start from by
|
|
312
312
|
* default.
|
|
313
313
|
*/
|
|
314
|
-
suggestedPresentationDelay? : number;
|
|
314
|
+
suggestedPresentationDelay? : number | undefined;
|
|
315
315
|
/** URIs where the manifest can be refreshed by order of importance. */
|
|
316
|
-
uris
|
|
316
|
+
uris? : string[] | undefined;
|
|
317
317
|
}
|
|
318
318
|
|