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
|
@@ -36,7 +36,7 @@ export interface IHDRInformation {
|
|
|
36
36
|
* It is used to ask to the user agent if the color depth is supported by the
|
|
37
37
|
* output device.
|
|
38
38
|
*/
|
|
39
|
-
colorDepth?: number;
|
|
39
|
+
colorDepth?: number | undefined;
|
|
40
40
|
/**
|
|
41
41
|
* It is the HDR eotf. It is the transfer function having the video signal as
|
|
42
42
|
* input and converting it into the linear light output of the display. The
|
|
@@ -44,14 +44,14 @@ export interface IHDRInformation {
|
|
|
44
44
|
*
|
|
45
45
|
* It may be used here to ask the MediaSource if it supported.
|
|
46
46
|
*/
|
|
47
|
-
eotf?: string;
|
|
47
|
+
eotf?: string | undefined;
|
|
48
48
|
/**
|
|
49
49
|
* It is the video color space used for encoding. An HDR content may not have
|
|
50
50
|
* a wide color gamut.
|
|
51
51
|
*
|
|
52
52
|
* It may be used to ask about output device color space support.
|
|
53
53
|
*/
|
|
54
|
-
colorSpace?: string;
|
|
54
|
+
colorSpace?: string | undefined;
|
|
55
55
|
}
|
|
56
56
|
/** Manifest, as documented in the API documentation. */
|
|
57
57
|
export interface IExposedManifest {
|
|
@@ -38,7 +38,7 @@ export interface IParsedWEBMHDRInformation {
|
|
|
38
38
|
*
|
|
39
39
|
* It may be used to ask about output device color space support.
|
|
40
40
|
*/
|
|
41
|
-
colorSpace
|
|
41
|
+
colorSpace: "rec2020" | undefined;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Extract the webm HDR information out of the codec string.
|
|
@@ -19,16 +19,16 @@ interface IPeriodTimeInformation {
|
|
|
19
19
|
/** Time in seconds at which the Period starts. */
|
|
20
20
|
periodStart: number;
|
|
21
21
|
/** Difference in seconds between the Period's end and its start. */
|
|
22
|
-
periodDuration?: number;
|
|
22
|
+
periodDuration?: number | undefined;
|
|
23
23
|
/** Time in seconds at which the Period ends. */
|
|
24
|
-
periodEnd?: number;
|
|
24
|
+
periodEnd?: number | undefined;
|
|
25
25
|
}
|
|
26
26
|
/** Additionnal context needed to retrieve the period time information. */
|
|
27
27
|
export interface IParsedPeriodsContext {
|
|
28
28
|
/** Value of MPD@availabilityStartTime. */
|
|
29
29
|
availabilityStartTime: number;
|
|
30
30
|
/** Value of MPD@mediaPresentationDuration. */
|
|
31
|
-
duration?: number;
|
|
31
|
+
duration?: number | undefined;
|
|
32
32
|
/** `true` if MPD@type is equal to "dynamic". */
|
|
33
33
|
isDynamic: boolean;
|
|
34
34
|
}
|
|
@@ -24,7 +24,7 @@ import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
|
24
24
|
*/
|
|
25
25
|
export interface IBaseIndex {
|
|
26
26
|
/** Byte range for a possible index of segments in the server. */
|
|
27
|
-
indexRange?: [number, number];
|
|
27
|
+
indexRange?: [number, number] | undefined;
|
|
28
28
|
/**
|
|
29
29
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
30
30
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -43,15 +43,15 @@ export interface IBaseIndex {
|
|
|
43
43
|
/** URLs to access the initialization segment. */
|
|
44
44
|
mediaURLs: string[] | null;
|
|
45
45
|
/** possible byte range to request it. */
|
|
46
|
-
range?: [number, number];
|
|
47
|
-
};
|
|
46
|
+
range?: [number, number] | undefined;
|
|
47
|
+
} | undefined;
|
|
48
48
|
/**
|
|
49
49
|
* Base URL(s) to access any segment. Can contain tokens to replace to convert
|
|
50
50
|
* it to real URLs.
|
|
51
51
|
*/
|
|
52
52
|
mediaURLs: string[] | null;
|
|
53
53
|
/** Number from which the first segments in this index starts with. */
|
|
54
|
-
startNumber?: number;
|
|
54
|
+
startNumber?: number | undefined;
|
|
55
55
|
/** Every segments defined in this index. */
|
|
56
56
|
timeline: IIndexSegment[];
|
|
57
57
|
/**
|
|
@@ -100,9 +100,9 @@ export interface IBaseIndexContextArgument {
|
|
|
100
100
|
/** Base URL for the Representation concerned. */
|
|
101
101
|
representationBaseURLs: IResolvedBaseUrl[];
|
|
102
102
|
/** ID of the Representation concerned. */
|
|
103
|
-
representationId?: string;
|
|
103
|
+
representationId?: string | undefined;
|
|
104
104
|
/** Bitrate of the Representation concerned. */
|
|
105
|
-
representationBitrate?: number;
|
|
105
|
+
representationBitrate?: number | undefined;
|
|
106
106
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
107
107
|
}
|
|
108
108
|
export default class BaseRepresentationIndex implements IRepresentationIndex {
|
|
@@ -25,8 +25,8 @@ export default function getInitSegment(index: {
|
|
|
25
25
|
timescale: number;
|
|
26
26
|
initialization?: {
|
|
27
27
|
mediaURLs: string[] | null;
|
|
28
|
-
range?: [number, number];
|
|
29
|
-
};
|
|
30
|
-
indexRange?: [number, number];
|
|
28
|
+
range?: [number, number] | undefined;
|
|
29
|
+
} | undefined;
|
|
30
|
+
indexRange?: [number, number] | undefined;
|
|
31
31
|
indexTimeOffset: number;
|
|
32
32
|
}, isEMSGWhitelisted?: (inbandEvent: IEMSG) => boolean): ISegment;
|
package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts
CHANGED
|
@@ -26,9 +26,9 @@ import { IIndexSegment } from "../../../utils/index_helpers";
|
|
|
26
26
|
* @returns {Array.<Object>}
|
|
27
27
|
*/
|
|
28
28
|
export default function getSegmentsFromTimeline(index: {
|
|
29
|
-
availabilityTimeComplete?: boolean;
|
|
29
|
+
availabilityTimeComplete?: boolean | undefined;
|
|
30
30
|
mediaURLs: string[] | null;
|
|
31
|
-
startNumber?: number;
|
|
31
|
+
startNumber?: number | undefined;
|
|
32
32
|
timeline: IIndexSegment[];
|
|
33
33
|
timescale: number;
|
|
34
34
|
indexTimeOffset: number;
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import config from "../../../../../config";
|
|
17
|
-
var DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR = config.DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR;
|
|
18
17
|
/**
|
|
19
18
|
* In Javascript, numbers are encoded in a way that a floating number may be
|
|
20
19
|
* represented internally with a rounding error.
|
|
@@ -28,6 +27,6 @@ var DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR = config.DEFAULT_MAXIMUM_TIME_ROUNDING_E
|
|
|
28
27
|
* @returns {boolean}
|
|
29
28
|
*/
|
|
30
29
|
export default function isPeriodFulfilled(timescale, lastSegmentEnd, periodEnd) {
|
|
31
|
-
var scaledRoundingError = DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
|
|
30
|
+
var scaledRoundingError = config.getCurrent().DEFAULT_MAXIMUM_TIME_ROUNDING_ERROR * timescale;
|
|
32
31
|
return (lastSegmentEnd + scaledRoundingError) >= periodEnd;
|
|
33
32
|
}
|
|
@@ -13,7 +13,7 @@ export interface IListIndex {
|
|
|
13
13
|
*/
|
|
14
14
|
duration: number;
|
|
15
15
|
/** Byte range for a possible index of segments in the server. */
|
|
16
|
-
indexRange?: [number, number];
|
|
16
|
+
indexRange?: [number, number] | undefined;
|
|
17
17
|
/**
|
|
18
18
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
19
19
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -32,14 +32,14 @@ export interface IListIndex {
|
|
|
32
32
|
/** URLs to access the initialization segment. */
|
|
33
33
|
mediaURLs: string[] | null;
|
|
34
34
|
/** possible byte range to request it. */
|
|
35
|
-
range?: [number, number];
|
|
36
|
-
};
|
|
35
|
+
range?: [number, number] | undefined;
|
|
36
|
+
} | undefined;
|
|
37
37
|
/** Information on the list of segments for this index. */
|
|
38
38
|
list: Array<{
|
|
39
39
|
/** URLs of the segment. */
|
|
40
40
|
mediaURLs: string[] | null;
|
|
41
41
|
/** Possible byte-range of the segment. */
|
|
42
|
-
mediaRange?: [number, number];
|
|
42
|
+
mediaRange?: [number, number] | undefined;
|
|
43
43
|
}>;
|
|
44
44
|
/**
|
|
45
45
|
* Timescale to convert a time given here into seconds.
|
|
@@ -53,15 +53,15 @@ export interface IListIndex {
|
|
|
53
53
|
* Most of the properties here are already defined in IListIndex.
|
|
54
54
|
*/
|
|
55
55
|
export interface IListIndexIndexArgument {
|
|
56
|
-
duration?: number;
|
|
57
|
-
indexRange?: [number, number];
|
|
56
|
+
duration?: number | undefined;
|
|
57
|
+
indexRange?: [number, number] | undefined;
|
|
58
58
|
initialization?: {
|
|
59
|
-
media?: string;
|
|
60
|
-
range?: [number, number];
|
|
59
|
+
media?: string | undefined;
|
|
60
|
+
range?: [number, number] | undefined;
|
|
61
61
|
};
|
|
62
62
|
list: Array<{
|
|
63
|
-
media?: string;
|
|
64
|
-
mediaRange?: [number, number];
|
|
63
|
+
media?: string | undefined;
|
|
64
|
+
mediaRange?: [number, number] | undefined;
|
|
65
65
|
}>;
|
|
66
66
|
/**
|
|
67
67
|
* Offset present in the index to convert from the mediaTime (time declared in
|
|
@@ -77,8 +77,8 @@ export interface IListIndexIndexArgument {
|
|
|
77
77
|
* The time given here is in the current
|
|
78
78
|
* timescale (see timescale)
|
|
79
79
|
*/
|
|
80
|
-
presentationTimeOffset?: number;
|
|
81
|
-
timescale?: number;
|
|
80
|
+
presentationTimeOffset?: number | undefined;
|
|
81
|
+
timescale?: number | undefined;
|
|
82
82
|
}
|
|
83
83
|
/** Aditional context needed by a SegmentList RepresentationIndex. */
|
|
84
84
|
export interface IListIndexContextArgument {
|
|
@@ -87,9 +87,9 @@ export interface IListIndexContextArgument {
|
|
|
87
87
|
/** Base URL for the Representation concerned. */
|
|
88
88
|
representationBaseURLs: IResolvedBaseUrl[];
|
|
89
89
|
/** ID of the Representation concerned. */
|
|
90
|
-
representationId?: string;
|
|
90
|
+
representationId?: string | undefined;
|
|
91
91
|
/** Bitrate of the Representation concerned. */
|
|
92
|
-
representationBitrate?: number;
|
|
92
|
+
representationBitrate?: number | undefined;
|
|
93
93
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
94
94
|
}
|
|
95
95
|
export default class ListRepresentationIndex implements IRepresentationIndex {
|
|
@@ -35,14 +35,14 @@ export interface ITemplateIndex {
|
|
|
35
35
|
*/
|
|
36
36
|
timescale: number;
|
|
37
37
|
/** Byte range for a possible index of segments in the server. */
|
|
38
|
-
indexRange?: [number, number];
|
|
38
|
+
indexRange?: [number, number] | undefined;
|
|
39
39
|
/** Information on the initialization segment. */
|
|
40
40
|
initialization?: {
|
|
41
41
|
/** URLs to access the initialization segment. */
|
|
42
42
|
mediaURLs: string[] | null;
|
|
43
43
|
/** possible byte range to request it. */
|
|
44
|
-
range?: [number, number];
|
|
45
|
-
};
|
|
44
|
+
range?: [number, number] | undefined;
|
|
45
|
+
} | undefined;
|
|
46
46
|
/**
|
|
47
47
|
* URL base to access any segment.
|
|
48
48
|
* Can contain token to replace to convert it to real URLs.
|
|
@@ -77,23 +77,23 @@ export interface ITemplateIndex {
|
|
|
77
77
|
*/
|
|
78
78
|
presentationTimeOffset: number;
|
|
79
79
|
/** Number from which the first segments in this index starts with. */
|
|
80
|
-
startNumber?: number;
|
|
80
|
+
startNumber?: number | undefined;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* `index` Argument for a SegmentTemplate RepresentationIndex.
|
|
84
84
|
* Most of the properties here are already defined in ITemplateIndex.
|
|
85
85
|
*/
|
|
86
86
|
export interface ITemplateIndexIndexArgument {
|
|
87
|
-
duration?: number;
|
|
88
|
-
indexRange?: [number, number];
|
|
87
|
+
duration?: number | undefined;
|
|
88
|
+
indexRange?: [number, number] | undefined;
|
|
89
89
|
initialization?: {
|
|
90
|
-
media?: string;
|
|
91
|
-
range?: [number, number];
|
|
92
|
-
};
|
|
93
|
-
media?: string;
|
|
94
|
-
presentationTimeOffset?: number;
|
|
95
|
-
startNumber?: number;
|
|
96
|
-
timescale?: number;
|
|
90
|
+
media?: string | undefined;
|
|
91
|
+
range?: [number, number] | undefined;
|
|
92
|
+
} | undefined;
|
|
93
|
+
media?: string | undefined;
|
|
94
|
+
presentationTimeOffset?: number | undefined;
|
|
95
|
+
startNumber?: number | undefined;
|
|
96
|
+
timescale?: number | undefined;
|
|
97
97
|
}
|
|
98
98
|
/** Aditional context needed by a SegmentTemplate RepresentationIndex. */
|
|
99
99
|
export interface ITemplateIndexContextArgument {
|
|
@@ -111,9 +111,9 @@ export interface ITemplateIndexContextArgument {
|
|
|
111
111
|
/** Base URL for the Representation concerned. */
|
|
112
112
|
representationBaseURLs: IResolvedBaseUrl[];
|
|
113
113
|
/** ID of the Representation concerned. */
|
|
114
|
-
representationId?: string;
|
|
114
|
+
representationId?: string | undefined;
|
|
115
115
|
/** Bitrate of the Representation concerned. */
|
|
116
|
-
representationBitrate?: number;
|
|
116
|
+
representationBitrate?: number | undefined;
|
|
117
117
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
@@ -134,9 +134,9 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
134
134
|
/** Absolute start of the Period, in seconds. */
|
|
135
135
|
private _periodStart;
|
|
136
136
|
/** Difference between the end time of the Period and its start time, in timescale. */
|
|
137
|
-
private _scaledPeriodEnd
|
|
137
|
+
private _scaledPeriodEnd;
|
|
138
138
|
/** Minimum availabilityTimeOffset concerning the segments of this Representation. */
|
|
139
|
-
private _availabilityTimeOffset
|
|
139
|
+
private _availabilityTimeOffset;
|
|
140
140
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
141
141
|
private _isDynamic;
|
|
142
142
|
private _isEMSGWhitelisted;
|
|
@@ -17,7 +17,6 @@ import config from "../../../../../config";
|
|
|
17
17
|
import getInitSegment from "./get_init_segment";
|
|
18
18
|
import isPeriodFulfilled from "./is_period_fulfilled";
|
|
19
19
|
import { createDashUrlDetokenizer, createIndexURLs, } from "./tokens";
|
|
20
|
-
var MINIMUM_SEGMENT_SIZE = config.MINIMUM_SEGMENT_SIZE;
|
|
21
20
|
/**
|
|
22
21
|
* IRepresentationIndex implementation for DASH' SegmentTemplate without a
|
|
23
22
|
* SegmentTimeline.
|
|
@@ -327,7 +326,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
327
326
|
// segment that there actually is due to a very little difference between
|
|
328
327
|
// the period's duration and a multiple of a segment's duration.
|
|
329
328
|
// Check that we're within a good margin
|
|
330
|
-
var minimumDuration = MINIMUM_SEGMENT_SIZE * timescale;
|
|
329
|
+
var minimumDuration = config.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
|
|
331
330
|
if (maximumTime - regularLastSegmentStart > minimumDuration ||
|
|
332
331
|
numberIndexedToZero === 0) {
|
|
333
332
|
return regularLastSegmentStart;
|
|
@@ -41,7 +41,7 @@ export default function constructTimelineFromElements(elements, scaledPeriodStar
|
|
|
41
41
|
null :
|
|
42
42
|
initialTimeline[i + 1];
|
|
43
43
|
var timelineElement = convertElementsToIndexSegment(item, previousItem, nextItem, scaledPeriodStart);
|
|
44
|
-
if (timelineElement
|
|
44
|
+
if (timelineElement !== null) {
|
|
45
45
|
timeline.push(timelineElement);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -29,7 +29,7 @@ export interface ITimelineIndex {
|
|
|
29
29
|
/** If `false`, the last segment anounced might be still incomplete. */
|
|
30
30
|
availabilityTimeComplete: boolean;
|
|
31
31
|
/** Byte range for a possible index of segments in the server. */
|
|
32
|
-
indexRange?: [number, number];
|
|
32
|
+
indexRange?: [number, number] | undefined;
|
|
33
33
|
/**
|
|
34
34
|
* Temporal offset, in the current timescale (see timescale), to add to the
|
|
35
35
|
* presentation time (time a segment has at decoding time) to obtain the
|
|
@@ -48,15 +48,15 @@ export interface ITimelineIndex {
|
|
|
48
48
|
/** URLs to access the initialization segment. */
|
|
49
49
|
mediaURLs: string[] | null;
|
|
50
50
|
/** possible byte range to request it. */
|
|
51
|
-
range?: [number, number];
|
|
52
|
-
};
|
|
51
|
+
range?: [number, number] | undefined;
|
|
52
|
+
} | undefined;
|
|
53
53
|
/**
|
|
54
54
|
* Base URL(s) to access any segment. Can contain tokens to replace to convert
|
|
55
55
|
* it to real URLs.
|
|
56
56
|
*/
|
|
57
57
|
mediaURLs: string[] | null;
|
|
58
58
|
/** Number from which the first segments in this index starts with. */
|
|
59
|
-
startNumber?: number;
|
|
59
|
+
startNumber?: number | undefined;
|
|
60
60
|
/**
|
|
61
61
|
* Every segments defined in this index.
|
|
62
62
|
* `null` at the beginning as this property is parsed lazily (only when first
|
|
@@ -87,14 +87,14 @@ export interface ITimelineIndex {
|
|
|
87
87
|
* Most of the properties here are already defined in ITimelineIndex.
|
|
88
88
|
*/
|
|
89
89
|
export interface ITimelineIndexIndexArgument {
|
|
90
|
-
indexRange?: [number, number];
|
|
90
|
+
indexRange?: [number, number] | undefined;
|
|
91
91
|
initialization?: {
|
|
92
|
-
media?: string;
|
|
93
|
-
range?: [number, number];
|
|
94
|
-
};
|
|
95
|
-
media?: string;
|
|
96
|
-
startNumber?: number;
|
|
97
|
-
timescale?: number;
|
|
92
|
+
media?: string | undefined;
|
|
93
|
+
range?: [number, number] | undefined;
|
|
94
|
+
} | undefined;
|
|
95
|
+
media?: string | undefined;
|
|
96
|
+
startNumber?: number | undefined;
|
|
97
|
+
timescale?: number | undefined;
|
|
98
98
|
/**
|
|
99
99
|
* Offset present in the index to convert from the mediaTime (time declared in
|
|
100
100
|
* the media segments and in this index) to the presentationTime (time wanted
|
|
@@ -109,9 +109,9 @@ export interface ITimelineIndexIndexArgument {
|
|
|
109
109
|
* The time given here is in the current
|
|
110
110
|
* timescale (see timescale)
|
|
111
111
|
*/
|
|
112
|
-
presentationTimeOffset?: number;
|
|
113
|
-
timelineParser?: () => HTMLCollection;
|
|
114
|
-
timeline?: ISegmentTimelineElement[];
|
|
112
|
+
presentationTimeOffset?: number | undefined;
|
|
113
|
+
timelineParser?: (() => HTMLCollection) | undefined;
|
|
114
|
+
timeline?: ISegmentTimelineElement[] | undefined;
|
|
115
115
|
}
|
|
116
116
|
/** Aditional context needed by a SegmentTimeline RepresentationIndex. */
|
|
117
117
|
export interface ITimelineIndexContextArgument {
|
|
@@ -119,9 +119,9 @@ export interface ITimelineIndexContextArgument {
|
|
|
119
119
|
availabilityTimeComplete: boolean;
|
|
120
120
|
/** Allows to obtain the minimum and maximum positions of a content. */
|
|
121
121
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
122
|
-
/** Start of the period
|
|
122
|
+
/** Start of the period linked to this RepresentationIndex, in seconds. */
|
|
123
123
|
periodStart: number;
|
|
124
|
-
/** End of the period
|
|
124
|
+
/** End of the period linked to this RepresentationIndex, in seconds. */
|
|
125
125
|
periodEnd: number | undefined;
|
|
126
126
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
127
127
|
isDynamic: boolean;
|
|
@@ -129,13 +129,13 @@ export interface ITimelineIndexContextArgument {
|
|
|
129
129
|
* Time (in terms of `performance.now`) at which the XML file containing this
|
|
130
130
|
* index was received
|
|
131
131
|
*/
|
|
132
|
-
receivedTime?: number;
|
|
132
|
+
receivedTime?: number | undefined;
|
|
133
133
|
/** Base URL for the Representation concerned. */
|
|
134
134
|
representationBaseURLs: IResolvedBaseUrl[];
|
|
135
135
|
/** ID of the Representation concerned. */
|
|
136
|
-
representationId?: string;
|
|
136
|
+
representationId?: string | undefined;
|
|
137
137
|
/** Bitrate of the Representation concerned. */
|
|
138
|
-
representationBitrate?: number;
|
|
138
|
+
representationBitrate?: number | undefined;
|
|
139
139
|
/**
|
|
140
140
|
* The parser should take this previous version of the
|
|
141
141
|
* `TimelineRepresentationIndex` - which was from the same Representation
|
|
@@ -145,11 +145,17 @@ export interface ITimelineIndexContextArgument {
|
|
|
145
145
|
* Use with moderation.
|
|
146
146
|
*/
|
|
147
147
|
unsafelyBaseOnPreviousRepresentation: Representation | null;
|
|
148
|
+
/** Function that tells if an EMSG is whitelisted by the manifest */
|
|
148
149
|
isEMSGWhitelisted: (inbandEvent: IEMSG) => boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Set to `true` if the linked Period is the chronologically last one in the
|
|
152
|
+
* Manifest.
|
|
153
|
+
*/
|
|
154
|
+
isLastPeriod: boolean;
|
|
149
155
|
}
|
|
150
156
|
export interface ILastSegmentInformation {
|
|
151
157
|
/** End of the timeline on `time`, timescaled. */
|
|
152
|
-
lastPosition?: number;
|
|
158
|
+
lastPosition?: number | undefined;
|
|
153
159
|
/** Defines the time at which `lastPosition` was last calculated. */
|
|
154
160
|
time: number;
|
|
155
161
|
}
|
|
@@ -181,6 +187,8 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
181
187
|
*/
|
|
182
188
|
private _unsafelyBaseOnPreviousIndex;
|
|
183
189
|
private _isEMSGWhitelisted;
|
|
190
|
+
/** `true` if the linked Period is the chronologically last one in the Manifest. */
|
|
191
|
+
private _isLastPeriod;
|
|
184
192
|
/**
|
|
185
193
|
* @param {Object} index
|
|
186
194
|
* @param {Object} context
|
|
@@ -27,7 +27,6 @@ import { createIndexURLs } from "../tokens";
|
|
|
27
27
|
import constructTimelineFromElements from "./construct_timeline_from_elements";
|
|
28
28
|
// eslint-disable-next-line max-len
|
|
29
29
|
import constructTimelineFromPreviousTimeline from "./construct_timeline_from_previous_timeline";
|
|
30
|
-
var MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY = config.MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY;
|
|
31
30
|
var TimelineRepresentationIndex = /** @class */ (function () {
|
|
32
31
|
/**
|
|
33
32
|
* @param {Object} index
|
|
@@ -39,7 +38,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
39
38
|
throw new Error("The given index is not compatible with a " +
|
|
40
39
|
"TimelineRepresentationIndex.");
|
|
41
40
|
}
|
|
42
|
-
var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
|
|
41
|
+
var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, isLastPeriod = context.isLastPeriod, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
|
|
43
42
|
var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
44
43
|
var presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
45
44
|
index.presentationTimeOffset :
|
|
@@ -48,6 +47,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
48
47
|
var indexTimeOffset = presentationTimeOffset - scaledStart;
|
|
49
48
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
50
49
|
this._isEMSGWhitelisted = isEMSGWhitelisted;
|
|
50
|
+
this._isLastPeriod = isLastPeriod;
|
|
51
51
|
this._lastUpdate = context.receivedTime == null ?
|
|
52
52
|
performance.now() :
|
|
53
53
|
context.receivedTime;
|
|
@@ -204,6 +204,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
204
204
|
this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
|
|
205
205
|
this._lastUpdate = newIndex._lastUpdate;
|
|
206
206
|
this._manifestBoundsCalculator = newIndex._manifestBoundsCalculator;
|
|
207
|
+
this._isLastPeriod = newIndex._isLastPeriod;
|
|
207
208
|
};
|
|
208
209
|
/**
|
|
209
210
|
* Update this RepresentationIndex with a shorter version of it coming from a
|
|
@@ -217,11 +218,15 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
217
218
|
if (newIndex._index.timeline === null) {
|
|
218
219
|
newIndex._index.timeline = newIndex._getTimeline();
|
|
219
220
|
}
|
|
220
|
-
updateSegmentTimeline(this._index.timeline, newIndex._index.timeline);
|
|
221
|
+
var hasReplaced = updateSegmentTimeline(this._index.timeline, newIndex._index.timeline);
|
|
222
|
+
if (hasReplaced) {
|
|
223
|
+
this._index.startNumber = newIndex._index.startNumber;
|
|
224
|
+
}
|
|
221
225
|
this._isDynamic = newIndex._isDynamic;
|
|
222
226
|
this._scaledPeriodStart = newIndex._scaledPeriodStart;
|
|
223
227
|
this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
|
|
224
228
|
this._lastUpdate = newIndex._lastUpdate;
|
|
229
|
+
this._isLastPeriod = newIndex._isLastPeriod;
|
|
225
230
|
};
|
|
226
231
|
/**
|
|
227
232
|
* Returns `true` if this RepresentationIndex currently contains its last
|
|
@@ -230,7 +235,13 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
230
235
|
* @returns {Boolean}
|
|
231
236
|
*/
|
|
232
237
|
TimelineRepresentationIndex.prototype.isFinished = function () {
|
|
233
|
-
if (!this._isDynamic) {
|
|
238
|
+
if (!this._isDynamic || !this._isLastPeriod) {
|
|
239
|
+
// Either the content is not dynamic, in which case no new segment will
|
|
240
|
+
// be generated, either it is but this index is not linked to the current
|
|
241
|
+
// last Period in the MPD, in which case it is inferred that it has been
|
|
242
|
+
// completely generated. Note that this second condition might break very
|
|
243
|
+
// very rare use cases where old Periods are still being generated, yet it
|
|
244
|
+
// should fix more cases than it breaks.
|
|
234
245
|
return true;
|
|
235
246
|
}
|
|
236
247
|
if (this._index.timeline === null) {
|
|
@@ -273,7 +284,10 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
273
284
|
return; // we don't know yet
|
|
274
285
|
}
|
|
275
286
|
var scaledFirstPosition = toIndexTime(firstPosition, this._index);
|
|
276
|
-
clearTimelineFromPosition(this._index.timeline, scaledFirstPosition);
|
|
287
|
+
var nbEltsRemoved = clearTimelineFromPosition(this._index.timeline, scaledFirstPosition);
|
|
288
|
+
if (this._index.startNumber !== undefined) {
|
|
289
|
+
this._index.startNumber += nbEltsRemoved;
|
|
290
|
+
}
|
|
277
291
|
};
|
|
278
292
|
TimelineRepresentationIndex.getIndexEnd = function (timeline, scaledPeriodEnd) {
|
|
279
293
|
if (timeline.length <= 0) {
|
|
@@ -313,6 +327,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
313
327
|
}
|
|
314
328
|
var newElements = this._parseTimeline();
|
|
315
329
|
this._parseTimeline = null; // Free memory
|
|
330
|
+
var MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY = config.getCurrent().MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY;
|
|
316
331
|
if (this._unsafelyBaseOnPreviousIndex === null ||
|
|
317
332
|
newElements.length < MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY) {
|
|
318
333
|
// Just completely parse the current timeline
|
|
@@ -18,8 +18,8 @@ import { IRepresentationIntermediateRepresentation } from "../node_parser_types"
|
|
|
18
18
|
declare type IAdaptationType = "audio" | "video" | "text" | "image";
|
|
19
19
|
/** Structure of a parsed "scheme-like" element in the MPD. */
|
|
20
20
|
interface IScheme {
|
|
21
|
-
schemeIdUri?: string;
|
|
22
|
-
value?: string;
|
|
21
|
+
schemeIdUri?: string | undefined;
|
|
22
|
+
value?: string | undefined;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Infers the type of adaptation from codec and mimetypes found in it.
|
|
@@ -16,35 +16,21 @@
|
|
|
16
16
|
import { Period } from "../../../../manifest";
|
|
17
17
|
import { IParsedAdaptations } from "../../types";
|
|
18
18
|
import { IAdaptationSetIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
|
|
19
|
-
import
|
|
20
|
-
|
|
19
|
+
import { IRepresentationContext } from "./parse_representations";
|
|
20
|
+
/**
|
|
21
|
+
* Process AdaptationSets intermediate representations to return under its final
|
|
22
|
+
* form.
|
|
23
|
+
* Note that the AdaptationSets returned are sorted by priority (from the most
|
|
24
|
+
* priority to the least one).
|
|
25
|
+
* @param {Array.<Object>} adaptationsIR
|
|
26
|
+
* @param {Object} context
|
|
27
|
+
* @returns {Array.<Object>}
|
|
28
|
+
*/
|
|
29
|
+
export default function parseAdaptationSets(adaptationsIR: IAdaptationSetIntermediateRepresentation[], context: IAdaptationSetContext): IParsedAdaptations;
|
|
21
30
|
/** Context needed when calling `parseAdaptationSets`. */
|
|
22
|
-
export interface
|
|
23
|
-
/** Whether we should request new segments even if they are not yet finished. */
|
|
24
|
-
aggressiveMode: boolean;
|
|
25
|
-
availabilityTimeComplete: boolean;
|
|
26
|
-
/** availabilityTimeOffset of the concerned period. */
|
|
27
|
-
availabilityTimeOffset: number;
|
|
28
|
-
/** Eventual URLs from which every relative URL will be based on. */
|
|
29
|
-
baseURLs: IResolvedBaseUrl[];
|
|
30
|
-
/** Allows to obtain the first available position of a content. */
|
|
31
|
-
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
32
|
-
end?: number;
|
|
33
|
-
/** Whether the Manifest can evolve with time. */
|
|
34
|
-
isDynamic: boolean;
|
|
35
|
-
/** Manifest DASH profiles used for signaling some features */
|
|
36
|
-
manifestProfiles?: string;
|
|
37
|
-
/**
|
|
38
|
-
* Time (in terms of `performance.now`) at which the XML file containing
|
|
39
|
-
* this AdaptationSet was received.
|
|
40
|
-
*/
|
|
41
|
-
receivedTime?: number;
|
|
31
|
+
export interface IAdaptationSetContext extends IInheritedRepresentationContext {
|
|
42
32
|
/** SegmentTemplate parsed in the Period, if found. */
|
|
43
|
-
segmentTemplate?: ISegmentTemplateIntermediateRepresentation;
|
|
44
|
-
/** Start time of the current period, in seconds. */
|
|
45
|
-
start: number;
|
|
46
|
-
/** Depth of the buffer for the whole content, in seconds. */
|
|
47
|
-
timeShiftBufferDepth?: number;
|
|
33
|
+
segmentTemplate?: ISegmentTemplateIntermediateRepresentation | undefined;
|
|
48
34
|
/**
|
|
49
35
|
* The parser should take this Period - which is from a previously parsed
|
|
50
36
|
* Manifest for the same dynamic content - as a base to speed-up the parsing
|
|
@@ -56,12 +42,8 @@ export interface IAdaptationSetsContextInfos {
|
|
|
56
42
|
unsafelyBaseOnPreviousPeriod: Period | null;
|
|
57
43
|
}
|
|
58
44
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* Note that the AdaptationSets returned are sorted by priority (from the most
|
|
62
|
-
* priority to the least one).
|
|
63
|
-
* @param {Array.<Object>} adaptationsIR
|
|
64
|
-
* @param {Object} periodInfos
|
|
65
|
-
* @returns {Array.<Object>}
|
|
45
|
+
* Supplementary context needed to parse a Representation common with
|
|
46
|
+
* `IRepresentationContext`.
|
|
66
47
|
*/
|
|
67
|
-
|
|
48
|
+
declare type IInheritedRepresentationContext = Omit<IRepresentationContext, "unsafelyBaseOnPreviousAdaptation" | "parentSegmentTemplates">;
|
|
49
|
+
export {};
|