rx-player 4.0.0-dev.2023092900 → 4.0.0-dev.2023102700
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -12
- package/FILES.md +0 -4
- package/MAINTAINERS.md +1 -0
- package/README.md +0 -21
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_class_name.js +6 -3
- package/dist/_esm5.processed/compat/add_text_track.js +11 -8
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +13 -9
- package/dist/_esm5.processed/compat/browser_detection.js +49 -34
- package/dist/_esm5.processed/compat/browser_version.js +11 -8
- package/dist/_esm5.processed/compat/can_patch_isobmff.js +6 -3
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +9 -6
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/change_source_buffer_type.js +6 -3
- package/dist/_esm5.processed/compat/clear_element_src.js +12 -9
- package/dist/_esm5.processed/compat/eme/close_session.js +45 -106
- package/dist/_esm5.processed/compat/eme/constants.js +6 -3
- package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +18 -22
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +78 -102
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -6
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +18 -15
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +7 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +70 -88
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.js +2 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +91 -117
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +7 -7
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +82 -83
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +36 -31
- package/dist/_esm5.processed/compat/eme/get_init_data.js +28 -25
- package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +8 -5
- package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +17 -14
- package/dist/_esm5.processed/compat/eme/index.js +13 -7
- package/dist/_esm5.processed/compat/eme/load_session.js +26 -69
- package/dist/_esm5.processed/compat/enable_audio_track.js +7 -4
- package/dist/_esm5.processed/compat/event_listeners.js +130 -102
- package/dist/_esm5.processed/compat/get_start_date.js +7 -4
- package/dist/_esm5.processed/compat/global_scope.js +7 -5
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
- package/dist/_esm5.processed/compat/index.js +47 -24
- package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +4 -1
- package/dist/_esm5.processed/compat/is_node.js +5 -3
- package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
- package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -3
- package/dist/_esm5.processed/compat/is_worker.js +3 -1
- package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -7
- package/dist/_esm5.processed/compat/on_height_width_change.js +25 -22
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -17
- package/dist/_esm5.processed/compat/remove_cue.js +12 -9
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +7 -4
- package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +4 -1
- package/dist/_esm5.processed/compat/should_renew_media_key_system_access.js +6 -3
- package/dist/_esm5.processed/compat/should_unset_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/should_validate_metadata.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +6 -3
- package/dist/_esm5.processed/config.js +15 -14
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +123 -94
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +43 -42
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -44
- package/dist/_esm5.processed/core/adaptive/index.js +4 -2
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -74
- package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +24 -23
- package/dist/_esm5.processed/core/adaptive/utils/ewma.js +13 -12
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.js +9 -6
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_resolution.js +18 -19
- package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +10 -7
- package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.js +8 -7
- package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.js +26 -23
- package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +25 -23
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +6 -3
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +41 -40
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +31 -30
- package/dist/_esm5.processed/core/api/debug/constants.js +4 -1
- package/dist/_esm5.processed/core/api/debug/index.js +4 -2
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +64 -72
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +49 -46
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +15 -12
- package/dist/_esm5.processed/core/api/debug/render.js +16 -13
- package/dist/_esm5.processed/core/api/debug/utils.js +18 -13
- package/dist/_esm5.processed/core/api/index.js +7 -4
- package/dist/_esm5.processed/core/api/option_utils.js +85 -58
- package/dist/_esm5.processed/core/api/playback_observer.js +135 -124
- package/dist/_esm5.processed/core/api/public_api.js +610 -684
- package/dist/_esm5.processed/core/api/track_management/index.js +19 -3
- package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +233 -247
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +45 -58
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +300 -324
- package/dist/_esm5.processed/core/api/utils.js +32 -24
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +155 -185
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +42 -81
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +392 -510
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
- package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -67
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +94 -155
- package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
- package/dist/_esm5.processed/core/decrypt/index.js +26 -7
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +17 -59
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
- package/dist/_esm5.processed/core/decrypt/types.js +5 -2
- package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +40 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +17 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/get_drm_system_id.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +23 -23
- package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -21
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -27
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -102
- package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
- package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +18 -16
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +37 -56
- package/dist/_esm5.processed/core/fetchers/index.js +7 -3
- package/dist/_esm5.processed/core/fetchers/manifest/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +233 -313
- package/dist/_esm5.processed/core/fetchers/segment/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +12 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +218 -234
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +20 -19
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +73 -74
- package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +8 -5
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +210 -261
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +73 -99
- package/dist/_esm5.processed/core/init/index.js +5 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +256 -320
- package/dist/_esm5.processed/core/init/types.js +7 -24
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +109 -135
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +35 -30
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +12 -10
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -26
- package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -38
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +13 -10
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +29 -26
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +30 -27
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +58 -60
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +140 -161
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +3 -1
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.js +4 -2
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +28 -30
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +71 -90
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.js +2 -1
- package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +16 -13
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +75 -126
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +130 -147
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/index.js +20 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +106 -125
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +48 -47
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +18 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +22 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +65 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +19 -17
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +23 -22
- package/dist/_esm5.processed/core/segment_buffers/index.js +13 -6
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +24 -22
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +151 -150
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +9 -4
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +82 -89
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +118 -166
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +31 -28
- package/dist/_esm5.processed/core/stream/adaptation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -16
- package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +175 -222
- package/dist/_esm5.processed/core/stream/period/index.js +19 -3
- package/dist/_esm5.processed/core/stream/period/period_stream.js +172 -216
- package/dist/_esm5.processed/core/stream/period/types.js +2 -1
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +34 -33
- package/dist/_esm5.processed/core/stream/representation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +80 -68
- package/dist/_esm5.processed/core/stream/representation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +33 -84
- package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +32 -29
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +126 -145
- package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +32 -88
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +61 -48
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +71 -69
- package/dist/_esm5.processed/core/stream/representation/utils/get_segment_priority.js +8 -5
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +22 -63
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +49 -86
- package/dist/_esm5.processed/default_config.js +4 -2
- package/dist/_esm5.processed/errors/assertion_error.js +10 -26
- package/dist/_esm5.processed/errors/custom_loader_error.js +12 -28
- package/dist/_esm5.processed/errors/encrypted_media_error.js +16 -32
- package/dist/_esm5.processed/errors/error_codes.js +9 -4
- package/dist/_esm5.processed/errors/error_message.js +5 -2
- package/dist/_esm5.processed/errors/format_error.js +9 -7
- package/dist/_esm5.processed/errors/index.js +25 -11
- package/dist/_esm5.processed/errors/is_known_error.js +14 -11
- package/dist/_esm5.processed/errors/media_error.js +17 -33
- package/dist/_esm5.processed/errors/network_error.js +21 -37
- package/dist/_esm5.processed/errors/other_error.js +15 -31
- package/dist/_esm5.processed/errors/request_error.js +17 -33
- package/dist/_esm5.processed/experimental/features/dash_wasm.js +14 -11
- package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
- package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
- package/dist/_esm5.processed/experimental/features/index.js +11 -3
- package/dist/_esm5.processed/experimental/features/local.js +9 -6
- package/dist/_esm5.processed/experimental/features/metaplaylist.js +9 -6
- package/dist/_esm5.processed/experimental/index.js +5 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +7 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +22 -16
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +22 -19
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.js +2 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +125 -186
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +11 -27
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +76 -119
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +24 -15
- package/dist/_esm5.processed/experimental/tools/index.js +11 -5
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +38 -43
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +31 -34
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +21 -18
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +4 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/log.js +5 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +20 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -18
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +13 -10
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +16 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.js +16 -14
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +19 -16
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -8
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.js +5 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +25 -22
- package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +7 -4
- package/dist/_esm5.processed/features/add_features.js +11 -8
- package/dist/_esm5.processed/features/features_object.js +4 -2
- package/dist/_esm5.processed/features/index.js +7 -4
- package/dist/_esm5.processed/features/list/dash.js +11 -8
- package/dist/_esm5.processed/features/list/directfile.js +9 -5
- package/dist/_esm5.processed/features/list/eme.js +7 -4
- package/dist/_esm5.processed/features/list/html_sami_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/index.js +31 -14
- package/dist/_esm5.processed/features/list/native_sami_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/native_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/smooth.js +9 -6
- package/dist/_esm5.processed/features/types.js +2 -1
- package/dist/_esm5.processed/index.js +24 -9
- package/dist/_esm5.processed/log.js +5 -3
- package/dist/_esm5.processed/manifest/adaptation.js +52 -55
- package/dist/_esm5.processed/manifest/index.js +32 -13
- package/dist/_esm5.processed/manifest/manifest.js +112 -134
- package/dist/_esm5.processed/manifest/period.js +38 -42
- package/dist/_esm5.processed/manifest/representation.js +78 -61
- package/dist/_esm5.processed/manifest/representation_index/index.js +5 -2
- package/dist/_esm5.processed/manifest/representation_index/static.js +43 -42
- package/dist/_esm5.processed/manifest/representation_index/types.js +2 -1
- package/dist/_esm5.processed/manifest/types.js +5 -2
- package/dist/_esm5.processed/manifest/update_period_in_place.js +38 -48
- package/dist/_esm5.processed/manifest/update_periods.js +59 -69
- package/dist/_esm5.processed/manifest/utils.js +14 -9
- package/dist/_esm5.processed/minimal.js +9 -7
- package/dist/_esm5.processed/parsers/containers/isobmff/constants.js +4 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +14 -10
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/index.js +5 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +15 -11
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +48 -40
- package/dist/_esm5.processed/parsers/containers/isobmff/index.js +27 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +20 -14
- package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +25 -20
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +130 -112
- package/dist/_esm5.processed/parsers/containers/matroska/index.js +6 -1
- package/dist/_esm5.processed/parsers/containers/matroska/utils.js +67 -63
- package/dist/_esm5.processed/parsers/images/bif.js +40 -29
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +10 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +7 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/index.js +10 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +73 -67
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +9 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +32 -25
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +81 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +130 -123
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +35 -32
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +30 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +14 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -129
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +16 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/utils.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +18 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -111
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -85
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +97 -82
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +39 -37
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +61 -69
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/index.js +8 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +66 -62
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +38 -34
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +34 -30
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +44 -40
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +24 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +21 -18
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +60 -64
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +33 -27
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +192 -238
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +67 -62
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +8 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +17 -13
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +29 -24
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +38 -33
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +37 -32
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +43 -38
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +9 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +16 -12
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +20 -16
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/index.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +22 -20
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +6 -2
- package/dist/_esm5.processed/parsers/manifest/index.js +17 -1
- package/dist/_esm5.processed/parsers/manifest/local/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +30 -27
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
- package/dist/_esm5.processed/parsers/manifest/local/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +75 -72
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -176
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +13 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/index.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +17 -14
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +17 -15
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -98
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -48
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/parseBoolean.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/reduceChildren.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +27 -24
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +31 -22
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +9 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +38 -45
- package/dist/_esm5.processed/parsers/texttracks/index.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +45 -43
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +41 -39
- package/dist/_esm5.processed/parsers/texttracks/srt/find_end_of_cue_block.js +7 -4
- package/dist/_esm5.processed/parsers/texttracks/srt/get_cue_blocks.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +32 -29
- package/dist/_esm5.processed/parsers/texttracks/srt/native.js +16 -13
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +21 -18
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +37 -30
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_styling.js +48 -48
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +7 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +25 -22
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +117 -124
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +12 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +38 -35
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +58 -58
- package/dist/_esm5.processed/parsers/texttracks/ttml/regexps.js +27 -13
- package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.js +18 -18
- package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +28 -26
- package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +37 -25
- package/dist/_esm5.processed/parsers/texttracks/types.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +12 -9
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +60 -60
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +30 -27
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +23 -26
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +23 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +19 -16
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +26 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +15 -7
- package/dist/_esm5.processed/public_types.js +2 -1
- package/dist/_esm5.processed/tools/TextTrackRenderer/index.js +13 -6
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +26 -24
- package/dist/_esm5.processed/tools/index.js +6 -4
- package/dist/_esm5.processed/tools/string_utils.js +10 -1
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +16 -24
- package/dist/_esm5.processed/transports/dash/construct_segment_url.js +6 -3
- package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +17 -14
- package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +19 -16
- package/dist/_esm5.processed/transports/dash/index.js +4 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +47 -27
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +23 -16
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +68 -60
- package/dist/_esm5.processed/transports/dash/pipelines.js +20 -17
- package/dist/_esm5.processed/transports/dash/segment_loader.js +49 -39
- package/dist/_esm5.processed/transports/dash/segment_parser.js +58 -39
- package/dist/_esm5.processed/transports/dash/text_loader.js +36 -30
- package/dist/_esm5.processed/transports/dash/text_parser.js +39 -29
- package/dist/_esm5.processed/transports/index.js +17 -1
- package/dist/_esm5.processed/transports/local/index.js +4 -2
- package/dist/_esm5.processed/transports/local/pipelines.js +26 -23
- package/dist/_esm5.processed/transports/local/segment_loader.js +26 -23
- package/dist/_esm5.processed/transports/local/segment_parser.js +36 -25
- package/dist/_esm5.processed/transports/local/text_parser.js +42 -27
- package/dist/_esm5.processed/transports/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +11 -7
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +91 -96
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +26 -20
- package/dist/_esm5.processed/transports/smooth/index.js +4 -2
- package/dist/_esm5.processed/transports/smooth/is_mp4_embedded_track.js +4 -1
- package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +22 -19
- package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +92 -67
- package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +29 -26
- package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +23 -20
- package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +10 -7
- package/dist/_esm5.processed/transports/smooth/isobmff/index.js +13 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +19 -16
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +41 -38
- package/dist/_esm5.processed/transports/smooth/pipelines.js +106 -96
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -2
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +149 -153
- package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
- package/dist/_esm5.processed/transports/types.js +2 -1
- package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -18
- package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
- package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -10
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
- package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +5 -2
- package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
- package/dist/_esm5.processed/utils/array_find.js +7 -4
- package/dist/_esm5.processed/utils/array_find_index.js +6 -3
- package/dist/_esm5.processed/utils/array_includes.js +12 -11
- package/dist/_esm5.processed/utils/assert.js +13 -9
- package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
- package/dist/_esm5.processed/utils/base64.js +23 -18
- package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
- package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
- package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
- package/dist/_esm5.processed/utils/deep_merge.js +10 -21
- package/dist/_esm5.processed/utils/event_emitter.js +24 -24
- package/dist/_esm5.processed/utils/flat_map.js +7 -4
- package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
- package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
- package/dist/_esm5.processed/utils/id_generator.js +6 -3
- package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
- package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
- package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
- package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/index.js +7 -3
- package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
- package/dist/_esm5.processed/utils/logger.js +24 -23
- package/dist/_esm5.processed/utils/monotonic_timestamp.js +4 -1
- package/dist/_esm5.processed/utils/noop.js +4 -1
- package/dist/_esm5.processed/utils/object_assign.js +8 -10
- package/dist/_esm5.processed/utils/object_values.js +6 -3
- package/dist/_esm5.processed/utils/ranges.js +94 -71
- package/dist/_esm5.processed/utils/reference.js +48 -52
- package/dist/_esm5.processed/utils/request/fetch.js +79 -109
- package/dist/_esm5.processed/utils/request/index.js +9 -4
- package/dist/_esm5.processed/utils/request/xhr.js +49 -37
- package/dist/_esm5.processed/utils/resolve_url.js +18 -18
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
- package/dist/_esm5.processed/utils/sleep.js +5 -2
- package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
- package/dist/_esm5.processed/utils/sorted_list.js +37 -40
- package/dist/_esm5.processed/utils/starts_with.js +5 -2
- package/dist/_esm5.processed/utils/string_parsing.js +84 -73
- package/dist/_esm5.processed/utils/take_first_set.js +9 -10
- package/dist/_esm5.processed/utils/task_canceller.js +51 -71
- package/dist/_esm5.processed/utils/warn_once.js +7 -4
- package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
- package/dist/_esm5.processed/utils/wrapInPromise.js +5 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +43758 -45493
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -22
- package/package.json +22 -23
- package/scripts/build/constants.d.ts +1 -23
- package/scripts/build/generate_build.js +1 -1
- package/scripts/check_nodejs_import_compatibility.js +1 -1
- package/scripts/update-version +1 -4
- package/sonar-project.properties +1 -1
- package/src/compat/event_listeners.ts +8 -8
- package/src/compat/global_scope.ts +2 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
- package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
- package/src/core/adaptive/buffer_based_chooser.ts +1 -1
- package/src/core/adaptive/network_analyzer.ts +5 -4
- package/src/core/api/public_api.ts +2 -2
- package/src/core/api/track_management/track_dispatcher.ts +2 -1
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
- package/src/core/fetchers/cdn_prioritizer.ts +1 -1
- package/src/experimental/features/__tests__/index.test.ts +19 -0
- package/src/experimental/features/index.ts +1 -0
- package/src/features/list/__tests__/index.test.ts +49 -0
- package/src/index.ts +28 -3
- package/src/transports/smooth/segment_loader.ts +4 -4
- package/src/typings/globals.d.ts +0 -42
- package/src/utils/request/fetch.ts +1 -1
- package/src/utils/request/xhr.ts +1 -1
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +3 -3
- package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
- package/dist/_esm5.processed/features/initialize_features.js +0 -108
- package/src/features/__tests__/initialize_features.test.ts +0 -657
- package/src/features/initialize_features.ts +0 -129
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,56 +14,46 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
import getMonotonicTimeStamp from "../../../../../../utils/monotonic_timestamp";
|
|
32
|
-
import clearTimelineFromPosition from "../../../../utils/clear_timeline_from_position";
|
|
33
|
-
import { checkDiscontinuity, fromIndexTime, getIndexSegmentEnd, toIndexTime, } from "../../../../utils/index_helpers";
|
|
34
|
-
import isSegmentStillAvailable from "../../../../utils/is_segment_still_available";
|
|
35
|
-
import updateSegmentTimeline from "../../../../utils/update_segment_timeline";
|
|
36
|
-
import getInitSegment from "../get_init_segment";
|
|
37
|
-
import getSegmentsFromTimeline from "../get_segments_from_timeline";
|
|
38
|
-
import { constructRepresentationUrl } from "../tokens";
|
|
39
|
-
import { getSegmentTimeRoundingError } from "../utils";
|
|
40
|
-
import constructTimelineFromElements from "./construct_timeline_from_elements";
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const config_1 = require("../../../../../../config");
|
|
19
|
+
const errors_1 = require("../../../../../../errors");
|
|
20
|
+
const log_1 = require("../../../../../../log");
|
|
21
|
+
const assert_1 = require("../../../../../../utils/assert");
|
|
22
|
+
const monotonic_timestamp_1 = require("../../../../../../utils/monotonic_timestamp");
|
|
23
|
+
const clear_timeline_from_position_1 = require("../../../../utils/clear_timeline_from_position");
|
|
24
|
+
const index_helpers_1 = require("../../../../utils/index_helpers");
|
|
25
|
+
const is_segment_still_available_1 = require("../../../../utils/is_segment_still_available");
|
|
26
|
+
const update_segment_timeline_1 = require("../../../../utils/update_segment_timeline");
|
|
27
|
+
const get_init_segment_1 = require("../get_init_segment");
|
|
28
|
+
const get_segments_from_timeline_1 = require("../get_segments_from_timeline");
|
|
29
|
+
const tokens_1 = require("../tokens");
|
|
30
|
+
const utils_1 = require("../utils");
|
|
31
|
+
const construct_timeline_from_elements_1 = require("./construct_timeline_from_elements");
|
|
41
32
|
// eslint-disable-next-line max-len
|
|
42
|
-
|
|
43
|
-
|
|
33
|
+
const construct_timeline_from_previous_timeline_1 = require("./construct_timeline_from_previous_timeline");
|
|
34
|
+
class TimelineRepresentationIndex {
|
|
44
35
|
/**
|
|
45
36
|
* @param {Object} index
|
|
46
37
|
* @param {Object} context
|
|
47
38
|
*/
|
|
48
|
-
|
|
39
|
+
constructor(index, context) {
|
|
49
40
|
var _a, _b, _c;
|
|
50
41
|
if (!TimelineRepresentationIndex.isTimelineIndexArgument(index)) {
|
|
51
42
|
throw new Error("The given index is not compatible with a " +
|
|
52
43
|
"TimelineRepresentationIndex.");
|
|
53
44
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
const { availabilityTimeComplete, manifestBoundsCalculator, isDynamic, isLastPeriod, representationId, representationBitrate, periodStart, periodEnd, isEMSGWhitelisted } = context;
|
|
46
|
+
const timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
47
|
+
const presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
57
48
|
index.presentationTimeOffset :
|
|
58
49
|
0;
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
const scaledStart = periodStart * timescale;
|
|
51
|
+
const indexTimeOffset = presentationTimeOffset - scaledStart;
|
|
61
52
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
62
53
|
this._isEMSGWhitelisted = isEMSGWhitelisted;
|
|
63
54
|
this._isLastPeriod = isLastPeriod;
|
|
64
55
|
this._lastUpdate = context.receivedTime == null ?
|
|
65
|
-
|
|
56
|
+
(0, monotonic_timestamp_1.default)() :
|
|
66
57
|
context.receivedTime;
|
|
67
58
|
this._unsafelyBaseOnPreviousIndex = null;
|
|
68
59
|
if (context.unsafelyBaseOnPreviousRepresentation !== null &&
|
|
@@ -76,98 +67,109 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
76
67
|
}
|
|
77
68
|
this._isDynamic = isDynamic;
|
|
78
69
|
this._parseTimeline = (_b = index.timelineParser) !== null && _b !== void 0 ? _b : null;
|
|
79
|
-
|
|
70
|
+
const initializationUrl = ((_c = index.initialization) === null || _c === void 0 ? void 0 : _c.media) === undefined ?
|
|
80
71
|
null :
|
|
81
|
-
constructRepresentationUrl(index.initialization.media, representationId, representationBitrate);
|
|
82
|
-
|
|
72
|
+
(0, tokens_1.constructRepresentationUrl)(index.initialization.media, representationId, representationBitrate);
|
|
73
|
+
const segmentUrlTemplate = index.media === undefined ?
|
|
83
74
|
null :
|
|
84
|
-
constructRepresentationUrl(index.media, representationId, representationBitrate);
|
|
85
|
-
this._index = { availabilityTimeComplete
|
|
75
|
+
(0, tokens_1.constructRepresentationUrl)(index.media, representationId, representationBitrate);
|
|
76
|
+
this._index = { availabilityTimeComplete,
|
|
77
|
+
indexRange: index.indexRange,
|
|
78
|
+
indexTimeOffset,
|
|
79
|
+
initialization: index.initialization == null ?
|
|
86
80
|
undefined :
|
|
87
81
|
{
|
|
88
82
|
url: initializationUrl,
|
|
89
83
|
range: index.initialization.range,
|
|
90
|
-
},
|
|
84
|
+
},
|
|
85
|
+
segmentUrlTemplate,
|
|
86
|
+
startNumber: index.startNumber,
|
|
91
87
|
endNumber: index.endNumber,
|
|
92
88
|
timeline: index.timeline === undefined ?
|
|
93
89
|
null :
|
|
94
|
-
updateTimelineFromEndNumber(index.timeline, index.startNumber, index.endNumber),
|
|
95
|
-
|
|
90
|
+
updateTimelineFromEndNumber(index.timeline, index.startNumber, index.endNumber),
|
|
91
|
+
timescale };
|
|
92
|
+
this._scaledPeriodStart = (0, index_helpers_1.toIndexTime)(periodStart, this._index);
|
|
96
93
|
this._scaledPeriodEnd = periodEnd === undefined ? undefined :
|
|
97
|
-
toIndexTime(periodEnd, this._index);
|
|
94
|
+
(0, index_helpers_1.toIndexTime)(periodEnd, this._index);
|
|
98
95
|
}
|
|
99
96
|
/**
|
|
100
97
|
* Construct init Segment.
|
|
101
98
|
* @returns {Object}
|
|
102
99
|
*/
|
|
103
|
-
|
|
104
|
-
return
|
|
105
|
-
}
|
|
100
|
+
getInitSegment() {
|
|
101
|
+
return (0, get_init_segment_1.default)(this._index, this._isEMSGWhitelisted);
|
|
102
|
+
}
|
|
106
103
|
/**
|
|
107
104
|
* Asks for segments to download for a given time range.
|
|
108
105
|
* @param {Number} from - Beginning of the time wanted, in seconds
|
|
109
106
|
* @param {Number} duration - duration wanted, in seconds
|
|
110
107
|
* @returns {Array.<Object>}
|
|
111
108
|
*/
|
|
112
|
-
|
|
109
|
+
getSegments(from, duration) {
|
|
113
110
|
this._refreshTimeline(); // clear timeline if needed
|
|
114
111
|
if (this._index.timeline === null) {
|
|
115
112
|
this._index.timeline = this._getTimeline();
|
|
116
113
|
}
|
|
117
114
|
// destructuring to please TypeScript
|
|
118
|
-
|
|
119
|
-
return
|
|
120
|
-
|
|
115
|
+
const { segmentUrlTemplate, startNumber, endNumber, timeline, timescale, indexTimeOffset } = this._index;
|
|
116
|
+
return (0, get_segments_from_timeline_1.default)({ segmentUrlTemplate,
|
|
117
|
+
startNumber,
|
|
118
|
+
endNumber,
|
|
119
|
+
timeline,
|
|
120
|
+
timescale,
|
|
121
|
+
indexTimeOffset }, from, duration, this._isEMSGWhitelisted, this._scaledPeriodEnd);
|
|
122
|
+
}
|
|
121
123
|
/**
|
|
122
124
|
* Returns true if the index should be refreshed.
|
|
123
125
|
* @returns {Boolean}
|
|
124
126
|
*/
|
|
125
|
-
|
|
127
|
+
shouldRefresh() {
|
|
126
128
|
// DASH Manifest based on a SegmentTimeline should have minimumUpdatePeriod
|
|
127
129
|
// attribute which should be sufficient to know when to refresh it.
|
|
128
130
|
return false;
|
|
129
|
-
}
|
|
131
|
+
}
|
|
130
132
|
/**
|
|
131
133
|
* Returns the starting time, in seconds, of the earliest segment currently
|
|
132
134
|
* available.
|
|
133
135
|
* Returns null if nothing is in the index
|
|
134
136
|
* @returns {Number|null}
|
|
135
137
|
*/
|
|
136
|
-
|
|
138
|
+
getFirstAvailablePosition() {
|
|
137
139
|
this._refreshTimeline();
|
|
138
140
|
if (this._index.timeline === null) {
|
|
139
141
|
this._index.timeline = this._getTimeline();
|
|
140
142
|
}
|
|
141
|
-
|
|
143
|
+
const timeline = this._index.timeline;
|
|
142
144
|
return timeline.length === 0 ? null :
|
|
143
|
-
fromIndexTime(Math.max(this._scaledPeriodStart, timeline[0].start), this._index);
|
|
144
|
-
}
|
|
145
|
+
(0, index_helpers_1.fromIndexTime)(Math.max(this._scaledPeriodStart, timeline[0].start), this._index);
|
|
146
|
+
}
|
|
145
147
|
/**
|
|
146
148
|
* Returns the ending time, in seconds, of the last segment currently
|
|
147
149
|
* available.
|
|
148
150
|
* Returns null if nothing is in the index
|
|
149
151
|
* @returns {Number|null}
|
|
150
152
|
*/
|
|
151
|
-
|
|
153
|
+
getLastAvailablePosition() {
|
|
152
154
|
this._refreshTimeline();
|
|
153
155
|
if (this._index.timeline === null) {
|
|
154
156
|
this._index.timeline = this._getTimeline();
|
|
155
157
|
}
|
|
156
|
-
|
|
158
|
+
const lastTime = TimelineRepresentationIndex.getIndexEnd(this._index.timeline, this._scaledPeriodEnd);
|
|
157
159
|
return lastTime === null ? null :
|
|
158
|
-
fromIndexTime(lastTime, this._index);
|
|
159
|
-
}
|
|
160
|
+
(0, index_helpers_1.fromIndexTime)(lastTime, this._index);
|
|
161
|
+
}
|
|
160
162
|
/**
|
|
161
163
|
* Returns the absolute end in seconds this RepresentationIndex can reach once
|
|
162
164
|
* all segments are available.
|
|
163
165
|
* @returns {number|null|undefined}
|
|
164
166
|
*/
|
|
165
|
-
|
|
167
|
+
getEnd() {
|
|
166
168
|
if (!this._isDynamic || !this._isLastPeriod) { // @see isFinished
|
|
167
169
|
return this.getLastAvailablePosition();
|
|
168
170
|
}
|
|
169
171
|
return undefined;
|
|
170
|
-
}
|
|
172
|
+
}
|
|
171
173
|
/**
|
|
172
174
|
* Returns:
|
|
173
175
|
* - `true` if in the given time interval, at least one new segment is
|
|
@@ -179,9 +181,9 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
179
181
|
* @param {number} end
|
|
180
182
|
* @returns {boolean|undefined}
|
|
181
183
|
*/
|
|
182
|
-
|
|
184
|
+
awaitSegmentBetween(start, end) {
|
|
183
185
|
var _a;
|
|
184
|
-
|
|
186
|
+
(0, assert_1.default)(start <= end);
|
|
185
187
|
if (!this._isDynamic || !this._isLastPeriod) {
|
|
186
188
|
return false;
|
|
187
189
|
}
|
|
@@ -189,13 +191,13 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
189
191
|
if (this._index.timeline === null) {
|
|
190
192
|
this._index.timeline = this._getTimeline();
|
|
191
193
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
194
|
+
const { timeline, timescale } = this._index;
|
|
195
|
+
const segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(timescale);
|
|
196
|
+
const scaledEnd = (0, index_helpers_1.toIndexTime)(end, this._index);
|
|
195
197
|
if (timeline.length > 0) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
198
|
+
const lastTimelineElement = timeline[timeline.length - 1];
|
|
199
|
+
const lastSegmentEnd = (0, index_helpers_1.getIndexSegmentEnd)(lastTimelineElement, null, this._scaledPeriodEnd);
|
|
200
|
+
const roundedEnd = lastSegmentEnd + segmentTimeRounding;
|
|
199
201
|
if (roundedEnd >= Math.min(scaledEnd, (_a = this._scaledPeriodEnd) !== null && _a !== void 0 ? _a : Infinity)) {
|
|
200
202
|
return false; // already loaded
|
|
201
203
|
}
|
|
@@ -204,10 +206,10 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
204
206
|
return (scaledEnd + segmentTimeRounding) > this._scaledPeriodStart ? undefined :
|
|
205
207
|
false;
|
|
206
208
|
}
|
|
207
|
-
|
|
209
|
+
const scaledStart = (0, index_helpers_1.toIndexTime)(start, this._index);
|
|
208
210
|
return (scaledStart - segmentTimeRounding) < this._scaledPeriodEnd &&
|
|
209
211
|
(scaledEnd + segmentTimeRounding) > this._scaledPeriodStart;
|
|
210
|
-
}
|
|
212
|
+
}
|
|
211
213
|
/**
|
|
212
214
|
* Returns true if a Segment returned by this index is still considered
|
|
213
215
|
* available.
|
|
@@ -216,7 +218,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
216
218
|
* @param {Object} segment
|
|
217
219
|
* @returns {Boolean|undefined}
|
|
218
220
|
*/
|
|
219
|
-
|
|
221
|
+
isSegmentStillAvailable(segment) {
|
|
220
222
|
if (segment.isInit) {
|
|
221
223
|
return true;
|
|
222
224
|
}
|
|
@@ -224,9 +226,9 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
224
226
|
if (this._index.timeline === null) {
|
|
225
227
|
this._index.timeline = this._getTimeline();
|
|
226
228
|
}
|
|
227
|
-
|
|
228
|
-
return
|
|
229
|
-
}
|
|
229
|
+
const { timeline, timescale, indexTimeOffset } = this._index;
|
|
230
|
+
return (0, is_segment_still_available_1.default)(segment, timeline, timescale, indexTimeOffset);
|
|
231
|
+
}
|
|
230
232
|
/**
|
|
231
233
|
* Checks if the time given is in a discontinuity. That is:
|
|
232
234
|
* - We're on the upper bound of the current range (end of the range - time
|
|
@@ -235,33 +237,34 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
235
237
|
* @param {Number} time
|
|
236
238
|
* @returns {Number|null}
|
|
237
239
|
*/
|
|
238
|
-
|
|
240
|
+
checkDiscontinuity(time) {
|
|
239
241
|
this._refreshTimeline();
|
|
240
|
-
|
|
242
|
+
let timeline = this._index.timeline;
|
|
241
243
|
if (timeline === null) {
|
|
242
244
|
timeline = this._getTimeline();
|
|
243
245
|
this._index.timeline = timeline;
|
|
244
246
|
}
|
|
245
|
-
return checkDiscontinuity({ timeline
|
|
247
|
+
return (0, index_helpers_1.checkDiscontinuity)({ timeline,
|
|
248
|
+
timescale: this._index.timescale,
|
|
246
249
|
indexTimeOffset: this._index.indexTimeOffset }, time, this._scaledPeriodEnd);
|
|
247
|
-
}
|
|
250
|
+
}
|
|
248
251
|
/**
|
|
249
252
|
* @param {Error} error
|
|
250
253
|
* @returns {Boolean}
|
|
251
254
|
*/
|
|
252
|
-
|
|
255
|
+
canBeOutOfSyncError(error) {
|
|
253
256
|
if (!this._isDynamic) {
|
|
254
257
|
return false;
|
|
255
258
|
}
|
|
256
|
-
return error instanceof NetworkError &&
|
|
259
|
+
return error instanceof errors_1.NetworkError &&
|
|
257
260
|
error.isHttpError(404);
|
|
258
|
-
}
|
|
261
|
+
}
|
|
259
262
|
/**
|
|
260
263
|
* Replace this RepresentationIndex with one from a new version of the
|
|
261
264
|
* Manifest.
|
|
262
265
|
* @param {Object} newIndex
|
|
263
266
|
*/
|
|
264
|
-
|
|
267
|
+
_replace(newIndex) {
|
|
265
268
|
this._parseTimeline = newIndex._parseTimeline;
|
|
266
269
|
this._index = newIndex._index;
|
|
267
270
|
this._isDynamic = newIndex._isDynamic;
|
|
@@ -270,20 +273,20 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
270
273
|
this._lastUpdate = newIndex._lastUpdate;
|
|
271
274
|
this._manifestBoundsCalculator = newIndex._manifestBoundsCalculator;
|
|
272
275
|
this._isLastPeriod = newIndex._isLastPeriod;
|
|
273
|
-
}
|
|
276
|
+
}
|
|
274
277
|
/**
|
|
275
278
|
* Update this RepresentationIndex with a shorter version of it coming from a
|
|
276
279
|
* new version of the MPD.
|
|
277
280
|
* @param {Object} newIndex
|
|
278
281
|
*/
|
|
279
|
-
|
|
282
|
+
_update(newIndex) {
|
|
280
283
|
if (this._index.timeline === null) {
|
|
281
284
|
this._index.timeline = this._getTimeline();
|
|
282
285
|
}
|
|
283
286
|
if (newIndex._index.timeline === null) {
|
|
284
287
|
newIndex._index.timeline = newIndex._getTimeline();
|
|
285
288
|
}
|
|
286
|
-
|
|
289
|
+
const hasReplaced = (0, update_segment_timeline_1.default)(this._index.timeline, newIndex._index.timeline);
|
|
287
290
|
if (hasReplaced) {
|
|
288
291
|
this._index.startNumber = newIndex._index.startNumber;
|
|
289
292
|
}
|
|
@@ -293,14 +296,14 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
293
296
|
this._scaledPeriodEnd = newIndex._scaledPeriodEnd;
|
|
294
297
|
this._lastUpdate = newIndex._lastUpdate;
|
|
295
298
|
this._isLastPeriod = newIndex._isLastPeriod;
|
|
296
|
-
}
|
|
299
|
+
}
|
|
297
300
|
/**
|
|
298
301
|
* Returns `true` if this RepresentationIndex currently contains its last
|
|
299
302
|
* segment.
|
|
300
303
|
* Returns `false` if it's still pending.
|
|
301
304
|
* @returns {Boolean}
|
|
302
305
|
*/
|
|
303
|
-
|
|
306
|
+
isFinished() {
|
|
304
307
|
if (!this._isDynamic || !this._isLastPeriod) {
|
|
305
308
|
// Either the content is not dynamic, in which case no new segment will
|
|
306
309
|
// be generated, either it is but this index is not linked to the current
|
|
@@ -313,67 +316,67 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
313
316
|
if (this._index.timeline === null) {
|
|
314
317
|
this._index.timeline = this._getTimeline();
|
|
315
318
|
}
|
|
316
|
-
|
|
319
|
+
const { timeline } = this._index;
|
|
317
320
|
if (this._scaledPeriodEnd === undefined || timeline.length === 0) {
|
|
318
321
|
return false;
|
|
319
322
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
+
const lastTimelineElement = timeline[timeline.length - 1];
|
|
324
|
+
const lastTime = (0, index_helpers_1.getIndexSegmentEnd)(lastTimelineElement, null, this._scaledPeriodEnd);
|
|
325
|
+
const segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(this._index.timescale);
|
|
323
326
|
return (lastTime + segmentTimeRounding) >= this._scaledPeriodEnd;
|
|
324
|
-
}
|
|
327
|
+
}
|
|
325
328
|
/**
|
|
326
329
|
* @returns {Boolean}
|
|
327
330
|
*/
|
|
328
|
-
|
|
331
|
+
isInitialized() {
|
|
329
332
|
return true;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
}
|
|
333
|
+
}
|
|
334
|
+
initialize() {
|
|
335
|
+
log_1.default.error("A `TimelineRepresentationIndex` does not need to be initialized");
|
|
336
|
+
}
|
|
337
|
+
addPredictedSegments() {
|
|
338
|
+
log_1.default.warn("Cannot add predicted segments to a `TimelineRepresentationIndex`");
|
|
339
|
+
}
|
|
337
340
|
/**
|
|
338
341
|
* Returns `true` if the given object can be used as an "index" argument to
|
|
339
342
|
* create a new `TimelineRepresentationIndex`.
|
|
340
343
|
* @param {Object} index
|
|
341
344
|
* @returns {boolean}
|
|
342
345
|
*/
|
|
343
|
-
|
|
346
|
+
static isTimelineIndexArgument(index) {
|
|
344
347
|
return typeof index.timelineParser === "function" ||
|
|
345
348
|
Array.isArray(index.timeline);
|
|
346
|
-
}
|
|
349
|
+
}
|
|
347
350
|
/**
|
|
348
351
|
* Clean-up timeline to remove segment information which should not be
|
|
349
352
|
* available due to timeshifting.
|
|
350
353
|
*/
|
|
351
|
-
|
|
354
|
+
_refreshTimeline() {
|
|
352
355
|
if (this._index.timeline === null) {
|
|
353
356
|
this._index.timeline = this._getTimeline();
|
|
354
357
|
}
|
|
355
358
|
if (!this._isDynamic) {
|
|
356
359
|
return;
|
|
357
360
|
}
|
|
358
|
-
|
|
361
|
+
const firstPosition = this._manifestBoundsCalculator.estimateMinimumBound();
|
|
359
362
|
if (firstPosition == null) {
|
|
360
363
|
return; // we don't know yet
|
|
361
364
|
}
|
|
362
|
-
|
|
363
|
-
|
|
365
|
+
const scaledFirstPosition = (0, index_helpers_1.toIndexTime)(firstPosition, this._index);
|
|
366
|
+
const nbEltsRemoved = (0, clear_timeline_from_position_1.default)(this._index.timeline, scaledFirstPosition);
|
|
364
367
|
if (this._index.startNumber !== undefined) {
|
|
365
368
|
this._index.startNumber += nbEltsRemoved;
|
|
366
369
|
}
|
|
367
370
|
else if (this._index.endNumber !== undefined) {
|
|
368
371
|
this._index.startNumber = nbEltsRemoved + 1;
|
|
369
372
|
}
|
|
370
|
-
}
|
|
371
|
-
|
|
373
|
+
}
|
|
374
|
+
static getIndexEnd(timeline, scaledPeriodEnd) {
|
|
372
375
|
if (timeline.length <= 0) {
|
|
373
376
|
return null;
|
|
374
377
|
}
|
|
375
|
-
return Math.min(getIndexSegmentEnd(timeline[timeline.length - 1], null, scaledPeriodEnd), scaledPeriodEnd !== null && scaledPeriodEnd !== void 0 ? scaledPeriodEnd : Infinity);
|
|
376
|
-
}
|
|
378
|
+
return Math.min((0, index_helpers_1.getIndexSegmentEnd)(timeline[timeline.length - 1], null, scaledPeriodEnd), scaledPeriodEnd !== null && scaledPeriodEnd !== void 0 ? scaledPeriodEnd : Infinity);
|
|
379
|
+
}
|
|
377
380
|
/**
|
|
378
381
|
* Allows to generate the "timeline" for this RepresentationIndex.
|
|
379
382
|
* Call this function when the timeline is unknown.
|
|
@@ -396,24 +399,24 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
396
399
|
* stream anymore.
|
|
397
400
|
* @returns {Array.<Object>}
|
|
398
401
|
*/
|
|
399
|
-
|
|
402
|
+
_getTimeline() {
|
|
400
403
|
if (this._parseTimeline === null) {
|
|
401
404
|
if (this._index.timeline !== null) {
|
|
402
405
|
return this._index.timeline;
|
|
403
406
|
}
|
|
404
|
-
|
|
407
|
+
log_1.default.error("DASH: Timeline already lazily parsed.");
|
|
405
408
|
return [];
|
|
406
409
|
}
|
|
407
|
-
|
|
410
|
+
const newElements = this._parseTimeline();
|
|
408
411
|
this._parseTimeline = null; // Free memory
|
|
409
|
-
|
|
412
|
+
const { MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY } = config_1.default.getCurrent();
|
|
410
413
|
if (this._unsafelyBaseOnPreviousIndex === null ||
|
|
411
414
|
newElements.length < MIN_DASH_S_ELEMENTS_TO_PARSE_UNSAFELY) {
|
|
412
415
|
// Just completely parse the current timeline
|
|
413
|
-
return updateTimelineFromEndNumber(
|
|
416
|
+
return updateTimelineFromEndNumber((0, construct_timeline_from_elements_1.default)(newElements), this._index.startNumber, this._index.endNumber);
|
|
414
417
|
}
|
|
415
418
|
// Construct previously parsed timeline if not already done
|
|
416
|
-
|
|
419
|
+
let prevTimeline;
|
|
417
420
|
if (this._unsafelyBaseOnPreviousIndex._index.timeline === null) {
|
|
418
421
|
prevTimeline = this._unsafelyBaseOnPreviousIndex._getTimeline();
|
|
419
422
|
this._unsafelyBaseOnPreviousIndex._index.timeline = prevTimeline;
|
|
@@ -422,11 +425,10 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
422
425
|
prevTimeline = this._unsafelyBaseOnPreviousIndex._index.timeline;
|
|
423
426
|
}
|
|
424
427
|
this._unsafelyBaseOnPreviousIndex = null; // Free memory
|
|
425
|
-
return updateTimelineFromEndNumber(
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
export default TimelineRepresentationIndex;
|
|
428
|
+
return updateTimelineFromEndNumber((0, construct_timeline_from_previous_timeline_1.default)(newElements, prevTimeline), this._index.startNumber, this._index.endNumber);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
exports.default = TimelineRepresentationIndex;
|
|
430
432
|
/**
|
|
431
433
|
* Take the original SegmentTimeline's parsed timeline and, if an `endNumber` is
|
|
432
434
|
* specified, filter segments which possess a number superior to that number.
|
|
@@ -443,18 +445,18 @@ function updateTimelineFromEndNumber(timeline, startNumber, endNumber) {
|
|
|
443
445
|
if (endNumber === undefined) {
|
|
444
446
|
return timeline;
|
|
445
447
|
}
|
|
446
|
-
|
|
447
|
-
for (
|
|
448
|
-
|
|
448
|
+
let currNumber = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
|
|
449
|
+
for (let idx = 0; idx < timeline.length; idx++) {
|
|
450
|
+
const seg = timeline[idx];
|
|
449
451
|
currNumber += seg.repeatCount + 1;
|
|
450
452
|
if (currNumber > endNumber) {
|
|
451
453
|
if (currNumber === endNumber + 1) {
|
|
452
454
|
return timeline.slice(0, idx + 1);
|
|
453
455
|
}
|
|
454
456
|
else {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
457
|
+
const newTimeline = timeline.slice(0, idx);
|
|
458
|
+
const lastElt = Object.assign({}, seg);
|
|
459
|
+
const beginningNumber = currNumber - seg.repeatCount - 1;
|
|
458
460
|
lastElt.repeatCount = Math.max(0, endNumber - beginningNumber);
|
|
459
461
|
newTimeline.push(lastElt);
|
|
460
462
|
return newTimeline;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,7 +14,9 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.createDashUrlDetokenizer = exports.replaceRepresentationDASHTokens = exports.constructRepresentationUrl = void 0;
|
|
19
|
+
const is_non_empty_string_1 = require("../../../../../utils/is_non_empty_string");
|
|
17
20
|
/**
|
|
18
21
|
* Pad with 0 in the left of the given n argument to reach l length
|
|
19
22
|
* @param {Number|string} n
|
|
@@ -21,11 +24,11 @@ import isNonEmptyString from "../../../../../utils/is_non_empty_string";
|
|
|
21
24
|
* @returns {string}
|
|
22
25
|
*/
|
|
23
26
|
function padLeftWithZeros(n, l) {
|
|
24
|
-
|
|
27
|
+
const nToString = n.toString();
|
|
25
28
|
if (nToString.length >= l) {
|
|
26
29
|
return nToString;
|
|
27
30
|
}
|
|
28
|
-
|
|
31
|
+
const arr = new Array(l + 1).join("0") + nToString;
|
|
29
32
|
return arr.slice(-l);
|
|
30
33
|
}
|
|
31
34
|
/**
|
|
@@ -33,8 +36,8 @@ function padLeftWithZeros(n, l) {
|
|
|
33
36
|
* @returns {Function}
|
|
34
37
|
*/
|
|
35
38
|
function processFormatedToken(replacer) {
|
|
36
|
-
return
|
|
37
|
-
|
|
39
|
+
return (_match, _format, widthStr) => {
|
|
40
|
+
const width = (0, is_non_empty_string_1.default)(widthStr) ? parseInt(widthStr, 10) :
|
|
38
41
|
1;
|
|
39
42
|
return padLeftWithZeros(String(replacer), width);
|
|
40
43
|
};
|
|
@@ -45,9 +48,10 @@ function processFormatedToken(replacer) {
|
|
|
45
48
|
* @param {number|undefined} bitrate
|
|
46
49
|
* @returns {string}
|
|
47
50
|
*/
|
|
48
|
-
|
|
51
|
+
function constructRepresentationUrl(urlTemplate, representationId, bitrate) {
|
|
49
52
|
return replaceRepresentationDASHTokens(urlTemplate, representationId, bitrate);
|
|
50
53
|
}
|
|
54
|
+
exports.constructRepresentationUrl = constructRepresentationUrl;
|
|
51
55
|
/**
|
|
52
56
|
* Replace "tokens" written in a given path (e.g. $RepresentationID$) by the corresponding
|
|
53
57
|
* infos, taken from the given segment.
|
|
@@ -56,7 +60,7 @@ export function constructRepresentationUrl(urlTemplate, representationId, bitrat
|
|
|
56
60
|
* @param {number|undefined} bitrate
|
|
57
61
|
* @returns {string}
|
|
58
62
|
*/
|
|
59
|
-
|
|
63
|
+
function replaceRepresentationDASHTokens(path, id, bitrate) {
|
|
60
64
|
if (path.indexOf("$") === -1) {
|
|
61
65
|
return path;
|
|
62
66
|
}
|
|
@@ -68,6 +72,7 @@ export function replaceRepresentationDASHTokens(path, id, bitrate) {
|
|
|
68
72
|
bitrate));
|
|
69
73
|
}
|
|
70
74
|
}
|
|
75
|
+
exports.replaceRepresentationDASHTokens = replaceRepresentationDASHTokens;
|
|
71
76
|
/**
|
|
72
77
|
* Create function allowing to replace "tokens" in a given DASH segment URL
|
|
73
78
|
* (e.g. $Time$, which has to be replaced by the segment's start time) by the
|
|
@@ -76,7 +81,7 @@ export function replaceRepresentationDASHTokens(path, id, bitrate) {
|
|
|
76
81
|
* @param {number|undefined} nb
|
|
77
82
|
* @returns {Function}
|
|
78
83
|
*/
|
|
79
|
-
|
|
84
|
+
function createDashUrlDetokenizer(time, nb) {
|
|
80
85
|
/**
|
|
81
86
|
* Replace the tokens in the given `url` by the segment information defined
|
|
82
87
|
* by the outer function.
|
|
@@ -92,13 +97,13 @@ export function createDashUrlDetokenizer(time, nb) {
|
|
|
92
97
|
else {
|
|
93
98
|
return url
|
|
94
99
|
.replace(/\$\$/g, "$")
|
|
95
|
-
.replace(/\$Number(\%0(\d+)d)?\$/g,
|
|
100
|
+
.replace(/\$Number(\%0(\d+)d)?\$/g, (_x, _y, widthStr) => {
|
|
96
101
|
if (nb === undefined) {
|
|
97
102
|
throw new Error("Segment number not defined in a $Number$ scheme");
|
|
98
103
|
}
|
|
99
104
|
return processFormatedToken(nb)(_x, _y, widthStr);
|
|
100
105
|
})
|
|
101
|
-
.replace(/\$Time(\%0(\d+)d)?\$/g,
|
|
106
|
+
.replace(/\$Time(\%0(\d+)d)?\$/g, (_x, _y, widthStr) => {
|
|
102
107
|
if (time === undefined) {
|
|
103
108
|
throw new Error("Segment time not defined in a $Time$ scheme");
|
|
104
109
|
}
|
|
@@ -107,3 +112,4 @@ export function createDashUrlDetokenizer(time, nb) {
|
|
|
107
112
|
}
|
|
108
113
|
};
|
|
109
114
|
}
|
|
115
|
+
exports.createDashUrlDetokenizer = createDashUrlDetokenizer;
|