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,48 +14,55 @@
|
|
|
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
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const config_1 = require("../../../../../config");
|
|
19
|
+
const log_1 = require("../../../../../log");
|
|
20
|
+
const assert_1 = require("../../../../../utils/assert");
|
|
21
|
+
const is_null_or_undefined_1 = require("../../../../../utils/is_null_or_undefined");
|
|
22
|
+
const get_init_segment_1 = require("./get_init_segment");
|
|
23
|
+
const tokens_1 = require("./tokens");
|
|
24
|
+
const utils_1 = require("./utils");
|
|
23
25
|
/**
|
|
24
26
|
* IRepresentationIndex implementation for DASH' SegmentTemplate without a
|
|
25
27
|
* SegmentTimeline.
|
|
26
28
|
* @class TemplateRepresentationIndex
|
|
27
29
|
*/
|
|
28
|
-
|
|
30
|
+
class TemplateRepresentationIndex {
|
|
29
31
|
/**
|
|
30
32
|
* @param {Object} index
|
|
31
33
|
* @param {Object} context
|
|
32
34
|
*/
|
|
33
|
-
|
|
35
|
+
constructor(index, context) {
|
|
34
36
|
var _a, _b;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
const { availabilityTimeOffset, manifestBoundsCalculator, isDynamic, periodEnd, periodStart, representationId, representationBitrate, isEMSGWhitelisted } = context;
|
|
38
|
+
const timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
37
39
|
this._availabilityTimeOffset = availabilityTimeOffset;
|
|
38
40
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
39
|
-
|
|
41
|
+
const presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
40
42
|
index.presentationTimeOffset :
|
|
41
43
|
0;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
const scaledStart = periodStart * timescale;
|
|
45
|
+
const indexTimeOffset = presentationTimeOffset - scaledStart;
|
|
44
46
|
if (index.duration === undefined) {
|
|
45
47
|
throw new Error("Invalid SegmentTemplate: no duration");
|
|
46
48
|
}
|
|
47
|
-
|
|
49
|
+
const initializationUrl = ((_b = index.initialization) === null || _b === void 0 ? void 0 : _b.media) === undefined ?
|
|
48
50
|
null :
|
|
49
|
-
constructRepresentationUrl(index.initialization.media, representationId, representationBitrate);
|
|
50
|
-
|
|
51
|
+
(0, tokens_1.constructRepresentationUrl)(index.initialization.media, representationId, representationBitrate);
|
|
52
|
+
const segmentUrlTemplate = index.media === undefined ?
|
|
51
53
|
null :
|
|
52
|
-
constructRepresentationUrl(index.media, representationId, representationBitrate);
|
|
53
|
-
this._index = { duration: index.duration,
|
|
54
|
+
(0, tokens_1.constructRepresentationUrl)(index.media, representationId, representationBitrate);
|
|
55
|
+
this._index = { duration: index.duration,
|
|
56
|
+
timescale,
|
|
57
|
+
indexRange: index.indexRange,
|
|
58
|
+
indexTimeOffset,
|
|
59
|
+
initialization: index.initialization == null ?
|
|
54
60
|
undefined :
|
|
55
61
|
{ url: initializationUrl,
|
|
56
62
|
range: index.initialization.range },
|
|
57
|
-
url: segmentUrlTemplate,
|
|
63
|
+
url: segmentUrlTemplate,
|
|
64
|
+
presentationTimeOffset,
|
|
65
|
+
startNumber: index.startNumber,
|
|
58
66
|
endNumber: index.endNumber };
|
|
59
67
|
this._isDynamic = isDynamic;
|
|
60
68
|
this._periodStart = periodStart;
|
|
@@ -67,55 +75,55 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
67
75
|
* Construct init Segment.
|
|
68
76
|
* @returns {Object}
|
|
69
77
|
*/
|
|
70
|
-
|
|
71
|
-
return
|
|
72
|
-
}
|
|
78
|
+
getInitSegment() {
|
|
79
|
+
return (0, get_init_segment_1.default)(this._index, this._isEMSGWhitelisted);
|
|
80
|
+
}
|
|
73
81
|
/**
|
|
74
82
|
* @param {Number} fromTime
|
|
75
83
|
* @param {Number} dur
|
|
76
84
|
* @returns {Array.<Object>}
|
|
77
85
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
getSegments(fromTime, dur) {
|
|
87
|
+
const index = this._index;
|
|
88
|
+
const { duration, startNumber, endNumber, timescale, url } = index;
|
|
89
|
+
const scaledStart = this._periodStart * timescale;
|
|
90
|
+
const scaledEnd = this._scaledRelativePeriodEnd;
|
|
83
91
|
// Convert the asked position to the right timescales, and consider them
|
|
84
92
|
// relatively to the Period's start.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
const upFromPeriodStart = fromTime * timescale - scaledStart;
|
|
94
|
+
const toFromPeriodStart = (fromTime + dur) * timescale - scaledStart;
|
|
95
|
+
const firstSegmentStart = this._getFirstSegmentStart();
|
|
96
|
+
const lastSegmentStart = this._getLastSegmentStart();
|
|
89
97
|
if (firstSegmentStart == null || lastSegmentStart == null) {
|
|
90
98
|
return [];
|
|
91
99
|
}
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
const startPosition = Math.max(firstSegmentStart, upFromPeriodStart);
|
|
101
|
+
const lastWantedStartPosition = Math.min(lastSegmentStart, toFromPeriodStart);
|
|
94
102
|
if ((lastWantedStartPosition + duration) <= startPosition) {
|
|
95
103
|
return [];
|
|
96
104
|
}
|
|
97
|
-
|
|
105
|
+
const segments = [];
|
|
98
106
|
// number corresponding to the Period's start
|
|
99
|
-
|
|
107
|
+
const numberOffset = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
|
|
100
108
|
// calcul initial time from Period start, where the first segment would have
|
|
101
109
|
// the `0` number
|
|
102
|
-
|
|
103
|
-
for (
|
|
110
|
+
let numberIndexedToZero = Math.floor(startPosition / duration);
|
|
111
|
+
for (let timeFromPeriodStart = numberIndexedToZero * duration; timeFromPeriodStart <= lastWantedStartPosition; timeFromPeriodStart += duration) {
|
|
104
112
|
// To obtain the real number, adds the real number from the Period's start
|
|
105
|
-
|
|
113
|
+
const realNumber = numberIndexedToZero + numberOffset;
|
|
106
114
|
if (endNumber !== undefined && realNumber > endNumber) {
|
|
107
115
|
return segments;
|
|
108
116
|
}
|
|
109
|
-
|
|
117
|
+
const realDuration = scaledEnd != null &&
|
|
110
118
|
timeFromPeriodStart + duration > scaledEnd ?
|
|
111
119
|
scaledEnd - timeFromPeriodStart :
|
|
112
120
|
duration;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
121
|
+
const realTime = timeFromPeriodStart + scaledStart;
|
|
122
|
+
const manifestTime = timeFromPeriodStart + this._index.presentationTimeOffset;
|
|
123
|
+
const detokenizedURL = url === null ?
|
|
116
124
|
null :
|
|
117
|
-
createDashUrlDetokenizer(manifestTime, realNumber)(url);
|
|
118
|
-
|
|
125
|
+
(0, tokens_1.createDashUrlDetokenizer)(manifestTime, realNumber)(url);
|
|
126
|
+
const args = { id: String(realNumber),
|
|
119
127
|
number: realNumber,
|
|
120
128
|
time: realTime / timescale,
|
|
121
129
|
end: (realTime + realDuration) / timescale,
|
|
@@ -133,52 +141,52 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
133
141
|
numberIndexedToZero++;
|
|
134
142
|
}
|
|
135
143
|
return segments;
|
|
136
|
-
}
|
|
144
|
+
}
|
|
137
145
|
/**
|
|
138
146
|
* Returns first possible position in the index, in seconds.
|
|
139
147
|
* @returns {number|null|undefined}
|
|
140
148
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
149
|
+
getFirstAvailablePosition() {
|
|
150
|
+
const firstSegmentStart = this._getFirstSegmentStart();
|
|
143
151
|
if (firstSegmentStart == null) {
|
|
144
152
|
return firstSegmentStart; // return undefined or null
|
|
145
153
|
}
|
|
146
154
|
return (firstSegmentStart / this._index.timescale) + this._periodStart;
|
|
147
|
-
}
|
|
155
|
+
}
|
|
148
156
|
/**
|
|
149
157
|
* Returns last possible position in the index, in seconds.
|
|
150
158
|
* @returns {number|null}
|
|
151
159
|
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (
|
|
160
|
+
getLastAvailablePosition() {
|
|
161
|
+
const lastSegmentStart = this._getLastSegmentStart();
|
|
162
|
+
if ((0, is_null_or_undefined_1.default)(lastSegmentStart)) {
|
|
155
163
|
// In that case (null or undefined), getLastAvailablePosition should reflect
|
|
156
164
|
// the result of getLastSegmentStart, as the meaning is the same for
|
|
157
165
|
// the two functions. So, we return the result of the latter.
|
|
158
166
|
return lastSegmentStart;
|
|
159
167
|
}
|
|
160
|
-
|
|
161
|
-
|
|
168
|
+
const scaledRelativeIndexEnd = this._estimateRelativeScaledEnd();
|
|
169
|
+
const lastSegmentEnd = Math.min(lastSegmentStart + this._index.duration, scaledRelativeIndexEnd !== null && scaledRelativeIndexEnd !== void 0 ? scaledRelativeIndexEnd : Infinity);
|
|
162
170
|
return (lastSegmentEnd / this._index.timescale) + this._periodStart;
|
|
163
|
-
}
|
|
171
|
+
}
|
|
164
172
|
/**
|
|
165
173
|
* Returns the absolute end in seconds this RepresentationIndex can reach once
|
|
166
174
|
* all segments are available.
|
|
167
175
|
* @returns {number|null|undefined}
|
|
168
176
|
*/
|
|
169
|
-
|
|
177
|
+
getEnd() {
|
|
170
178
|
if (!this._isDynamic) {
|
|
171
179
|
return this.getLastAvailablePosition();
|
|
172
180
|
}
|
|
173
|
-
|
|
181
|
+
const scaledRelativeIndexEnd = this._estimateRelativeScaledEnd();
|
|
174
182
|
if (scaledRelativeIndexEnd === undefined) {
|
|
175
183
|
return undefined;
|
|
176
184
|
}
|
|
177
|
-
|
|
178
|
-
|
|
185
|
+
const { timescale } = this._index;
|
|
186
|
+
const absoluteScaledIndexEnd = (scaledRelativeIndexEnd +
|
|
179
187
|
this._periodStart * timescale);
|
|
180
188
|
return absoluteScaledIndexEnd / timescale;
|
|
181
|
-
}
|
|
189
|
+
}
|
|
182
190
|
/**
|
|
183
191
|
* Returns:
|
|
184
192
|
* - `true` if in the given time interval, at least one new segment is
|
|
@@ -191,37 +199,37 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
191
199
|
* be directly available.
|
|
192
200
|
* @returns {boolean}
|
|
193
201
|
*/
|
|
194
|
-
|
|
195
|
-
|
|
202
|
+
awaitSegmentBetween(start, end) {
|
|
203
|
+
(0, assert_1.default)(start <= end);
|
|
196
204
|
if (!this._isDynamic) {
|
|
197
205
|
return false;
|
|
198
206
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
207
|
+
const { timescale } = this._index;
|
|
208
|
+
const segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(timescale);
|
|
209
|
+
const scaledPeriodStart = this._periodStart * timescale;
|
|
210
|
+
const scaledRelativeEnd = end * timescale - scaledPeriodStart;
|
|
211
|
+
const relativeScaledIndexEnd = this._estimateRelativeScaledEnd();
|
|
204
212
|
if (relativeScaledIndexEnd === undefined) {
|
|
205
213
|
return (scaledRelativeEnd + segmentTimeRounding) >= 0;
|
|
206
214
|
}
|
|
207
|
-
|
|
215
|
+
const scaledRelativeStart = start * timescale - scaledPeriodStart;
|
|
208
216
|
return (scaledRelativeStart - segmentTimeRounding) < relativeScaledIndexEnd;
|
|
209
|
-
}
|
|
217
|
+
}
|
|
210
218
|
/**
|
|
211
219
|
* Returns true if, based on the arguments, the index should be refreshed.
|
|
212
220
|
* We never have to refresh a SegmentTemplate-based manifest.
|
|
213
221
|
* @returns {Boolean}
|
|
214
222
|
*/
|
|
215
|
-
|
|
223
|
+
shouldRefresh() {
|
|
216
224
|
return false;
|
|
217
|
-
}
|
|
225
|
+
}
|
|
218
226
|
/**
|
|
219
227
|
* We cannot check for discontinuity in SegmentTemplate-based indexes.
|
|
220
228
|
* @returns {null}
|
|
221
229
|
*/
|
|
222
|
-
|
|
230
|
+
checkDiscontinuity() {
|
|
223
231
|
return null;
|
|
224
|
-
}
|
|
232
|
+
}
|
|
225
233
|
/**
|
|
226
234
|
* Returns `true` if the given segment should still be available as of now
|
|
227
235
|
* (not removed since and still request-able).
|
|
@@ -230,25 +238,25 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
230
238
|
* @param {Object} segment
|
|
231
239
|
* @returns {boolean|undefined}
|
|
232
240
|
*/
|
|
233
|
-
|
|
241
|
+
isSegmentStillAvailable(segment) {
|
|
234
242
|
if (segment.isInit) {
|
|
235
243
|
return true;
|
|
236
244
|
}
|
|
237
|
-
|
|
245
|
+
const segmentsForTime = this.getSegments(segment.time, 0.1);
|
|
238
246
|
if (segmentsForTime.length === 0) {
|
|
239
247
|
return false;
|
|
240
248
|
}
|
|
241
249
|
return segmentsForTime[0].time === segment.time &&
|
|
242
250
|
segmentsForTime[0].end === segment.end &&
|
|
243
251
|
segmentsForTime[0].number === segment.number;
|
|
244
|
-
}
|
|
252
|
+
}
|
|
245
253
|
/**
|
|
246
254
|
* SegmentTemplate without a SegmentTimeline should not be updated.
|
|
247
255
|
* @returns {Boolean}
|
|
248
256
|
*/
|
|
249
|
-
|
|
257
|
+
canBeOutOfSyncError() {
|
|
250
258
|
return false;
|
|
251
|
-
}
|
|
259
|
+
}
|
|
252
260
|
/**
|
|
253
261
|
* Returns `true` if the last segments in this index have already been
|
|
254
262
|
* generated so that we can freely go to the next period.
|
|
@@ -256,61 +264,61 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
256
264
|
* generated.
|
|
257
265
|
* @returns {Boolean}
|
|
258
266
|
*/
|
|
259
|
-
|
|
267
|
+
isFinished() {
|
|
260
268
|
if (!this._isDynamic) {
|
|
261
269
|
return true;
|
|
262
270
|
}
|
|
263
|
-
|
|
271
|
+
const scaledRelativeIndexEnd = this._estimateRelativeScaledEnd();
|
|
264
272
|
if (scaledRelativeIndexEnd === undefined) {
|
|
265
273
|
return false;
|
|
266
274
|
}
|
|
267
|
-
|
|
268
|
-
|
|
275
|
+
const { timescale } = this._index;
|
|
276
|
+
const lastSegmentStart = this._getLastSegmentStart();
|
|
269
277
|
// As last segment start is null if live time is before
|
|
270
278
|
// current period, consider the index not to be finished.
|
|
271
|
-
if (
|
|
279
|
+
if ((0, is_null_or_undefined_1.default)(lastSegmentStart)) {
|
|
272
280
|
return false;
|
|
273
281
|
}
|
|
274
|
-
|
|
275
|
-
|
|
282
|
+
const lastSegmentEnd = lastSegmentStart + this._index.duration;
|
|
283
|
+
const segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(timescale);
|
|
276
284
|
return (lastSegmentEnd + segmentTimeRounding) >= scaledRelativeIndexEnd;
|
|
277
|
-
}
|
|
285
|
+
}
|
|
278
286
|
/**
|
|
279
287
|
* @returns {Boolean}
|
|
280
288
|
*/
|
|
281
|
-
|
|
289
|
+
isInitialized() {
|
|
282
290
|
return true;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
}
|
|
291
|
+
}
|
|
292
|
+
initialize() {
|
|
293
|
+
log_1.default.error("A `TemplateRepresentationIndex` does not need to be initialized");
|
|
294
|
+
}
|
|
295
|
+
addPredictedSegments() {
|
|
296
|
+
log_1.default.warn("Cannot add predicted segments to a `TemplateRepresentationIndex`");
|
|
297
|
+
}
|
|
290
298
|
/**
|
|
291
299
|
* @param {Object} newIndex
|
|
292
300
|
*/
|
|
293
|
-
|
|
301
|
+
_replace(newIndex) {
|
|
294
302
|
this._index = newIndex._index;
|
|
295
303
|
this._isDynamic = newIndex._isDynamic;
|
|
296
304
|
this._periodStart = newIndex._periodStart;
|
|
297
305
|
this._scaledRelativePeriodEnd = newIndex._scaledRelativePeriodEnd;
|
|
298
306
|
this._manifestBoundsCalculator = newIndex._manifestBoundsCalculator;
|
|
299
|
-
}
|
|
307
|
+
}
|
|
300
308
|
/**
|
|
301
309
|
* @param {Object} newIndex
|
|
302
310
|
*/
|
|
303
|
-
|
|
311
|
+
_update(newIndex) {
|
|
304
312
|
// As segments are not declared individually, as long as this Representation
|
|
305
313
|
// is present, we have every information we need
|
|
306
314
|
this._replace(newIndex);
|
|
307
|
-
}
|
|
315
|
+
}
|
|
308
316
|
/**
|
|
309
317
|
* Returns the timescaled start of the first segment that should be available,
|
|
310
318
|
* relatively to the start of the Period.
|
|
311
319
|
* @returns {number | null | undefined}
|
|
312
320
|
*/
|
|
313
|
-
|
|
321
|
+
_getFirstSegmentStart() {
|
|
314
322
|
if (!this._isDynamic) {
|
|
315
323
|
return 0; // it is the start of the Period
|
|
316
324
|
}
|
|
@@ -320,42 +328,42 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
320
328
|
// /!\ The scaled max position augments continuously and might not
|
|
321
329
|
// reflect exactly the real server-side value. As segments are
|
|
322
330
|
// generated discretely.
|
|
323
|
-
|
|
331
|
+
const maximumBound = this._manifestBoundsCalculator.estimateMaximumBound();
|
|
324
332
|
if (maximumBound !== undefined && maximumBound < this._periodStart) {
|
|
325
333
|
// Maximum position is before this period.
|
|
326
334
|
// No segment is yet available here
|
|
327
335
|
return null;
|
|
328
336
|
}
|
|
329
337
|
}
|
|
330
|
-
|
|
331
|
-
|
|
338
|
+
const { duration, timescale } = this._index;
|
|
339
|
+
const firstPosition = this._manifestBoundsCalculator.estimateMinimumBound();
|
|
332
340
|
if (firstPosition === undefined) {
|
|
333
341
|
return undefined;
|
|
334
342
|
}
|
|
335
|
-
|
|
343
|
+
const segmentTime = firstPosition > this._periodStart ?
|
|
336
344
|
(firstPosition - this._periodStart) * timescale :
|
|
337
345
|
0;
|
|
338
|
-
|
|
346
|
+
const numberIndexedToZero = Math.floor(segmentTime / duration);
|
|
339
347
|
return numberIndexedToZero * duration;
|
|
340
|
-
}
|
|
348
|
+
}
|
|
341
349
|
/**
|
|
342
350
|
* Returns the timescaled start of the last segment that should be available,
|
|
343
351
|
* relatively to the start of the Period.
|
|
344
352
|
* Returns null if live time is before current period.
|
|
345
353
|
* @returns {number|null|undefined}
|
|
346
354
|
*/
|
|
347
|
-
|
|
355
|
+
_getLastSegmentStart() {
|
|
348
356
|
var _a;
|
|
349
|
-
|
|
357
|
+
const { duration, timescale, endNumber, startNumber = 1 } = this._index;
|
|
350
358
|
if (this._isDynamic) {
|
|
351
|
-
|
|
359
|
+
const lastPos = this._manifestBoundsCalculator.estimateMaximumBound();
|
|
352
360
|
if (lastPos === undefined) {
|
|
353
361
|
return undefined;
|
|
354
362
|
}
|
|
355
363
|
if (this._scaledRelativePeriodEnd !== undefined &&
|
|
356
364
|
this._scaledRelativePeriodEnd <
|
|
357
365
|
(lastPos - this._periodStart) * this._index.timescale) {
|
|
358
|
-
|
|
366
|
+
let numberOfSegments = Math.ceil(this._scaledRelativePeriodEnd / duration);
|
|
359
367
|
if (endNumber !== undefined && (endNumber - startNumber + 1) < numberOfSegments) {
|
|
360
368
|
numberOfSegments = endNumber - startNumber + 1;
|
|
361
369
|
}
|
|
@@ -364,15 +372,15 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
364
372
|
// /!\ The scaled last position augments continuously and might not
|
|
365
373
|
// reflect exactly the real server-side value. As segments are
|
|
366
374
|
// generated discretely.
|
|
367
|
-
|
|
375
|
+
const scaledLastPosition = (lastPos - this._periodStart) * timescale;
|
|
368
376
|
// Maximum position is before this period.
|
|
369
377
|
// No segment is yet available here
|
|
370
378
|
if (scaledLastPosition < 0) {
|
|
371
379
|
return null;
|
|
372
380
|
}
|
|
373
|
-
|
|
381
|
+
const availabilityTimeOffset = ((this._availabilityTimeOffset !== undefined ? this._availabilityTimeOffset : 0))
|
|
374
382
|
* timescale;
|
|
375
|
-
|
|
383
|
+
let numberOfSegmentsAvailable = Math.floor((scaledLastPosition + availabilityTimeOffset) / duration);
|
|
376
384
|
if (endNumber !== undefined &&
|
|
377
385
|
(endNumber - startNumber + 1) < numberOfSegmentsAvailable) {
|
|
378
386
|
numberOfSegmentsAvailable = endNumber - startNumber + 1;
|
|
@@ -382,17 +390,17 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
382
390
|
(numberOfSegmentsAvailable - 1) * duration;
|
|
383
391
|
}
|
|
384
392
|
else {
|
|
385
|
-
|
|
386
|
-
|
|
393
|
+
const maximumTime = (_a = this._scaledRelativePeriodEnd) !== null && _a !== void 0 ? _a : 0;
|
|
394
|
+
let numberOfSegments = Math.ceil(maximumTime / duration);
|
|
387
395
|
if (endNumber !== undefined && (endNumber - startNumber + 1) < numberOfSegments) {
|
|
388
396
|
numberOfSegments = endNumber - startNumber + 1;
|
|
389
397
|
}
|
|
390
|
-
|
|
398
|
+
const regularLastSegmentStart = (numberOfSegments - 1) * duration;
|
|
391
399
|
// In some SegmentTemplate, we could think that there is one more
|
|
392
400
|
// segment that there actually is due to a very little difference between
|
|
393
401
|
// the period's duration and a multiple of a segment's duration.
|
|
394
402
|
// Check that we're within a good margin
|
|
395
|
-
|
|
403
|
+
const minimumDuration = config_1.default.getCurrent().MINIMUM_SEGMENT_SIZE * timescale;
|
|
396
404
|
if (endNumber !== undefined ||
|
|
397
405
|
maximumTime - regularLastSegmentStart > minimumDuration ||
|
|
398
406
|
numberOfSegments < 2) {
|
|
@@ -400,7 +408,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
400
408
|
}
|
|
401
409
|
return (numberOfSegments - 2) * duration;
|
|
402
410
|
}
|
|
403
|
-
}
|
|
411
|
+
}
|
|
404
412
|
/**
|
|
405
413
|
* Returns an estimate of the last available position in this
|
|
406
414
|
* `RepresentationIndex` based on attributes such as the Period's end and
|
|
@@ -409,17 +417,16 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
409
417
|
* generated and its end is yet unknown), returns `undefined`.
|
|
410
418
|
* @returns {number|undefined}
|
|
411
419
|
*/
|
|
412
|
-
|
|
420
|
+
_estimateRelativeScaledEnd() {
|
|
413
421
|
var _a, _b;
|
|
414
422
|
if (this._index.endNumber !== undefined) {
|
|
415
|
-
|
|
423
|
+
const numberOfSegments = this._index.endNumber - ((_a = this._index.startNumber) !== null && _a !== void 0 ? _a : 1) + 1;
|
|
416
424
|
return Math.max(Math.min(numberOfSegments * this._index.duration, (_b = this._scaledRelativePeriodEnd) !== null && _b !== void 0 ? _b : Infinity), 0);
|
|
417
425
|
}
|
|
418
426
|
if (this._scaledRelativePeriodEnd === undefined) {
|
|
419
427
|
return undefined;
|
|
420
428
|
}
|
|
421
429
|
return Math.max(this._scaledRelativePeriodEnd, 0);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
export default TemplateRepresentationIndex;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
exports.default = TemplateRepresentationIndex;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,8 +14,9 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const convert_element_to_index_segment_1 = require("./convert_element_to_index_segment");
|
|
19
|
+
const parse_s_element_1 = require("./parse_s_element");
|
|
18
20
|
/**
|
|
19
21
|
* Allows to generate the "timeline" for the "Timeline" RepresentationIndex.
|
|
20
22
|
* Call this function when the timeline is unknown.
|
|
@@ -24,24 +26,25 @@ import parseSElement from "./parse_s_element";
|
|
|
24
26
|
* SegmentTimeline node.
|
|
25
27
|
* @returns {Array.<Object>}
|
|
26
28
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
for (
|
|
30
|
-
initialTimeline.push(
|
|
29
|
+
function constructTimelineFromElements(elements) {
|
|
30
|
+
const initialTimeline = [];
|
|
31
|
+
for (let i = 0; i < elements.length; i++) {
|
|
32
|
+
initialTimeline.push((0, parse_s_element_1.default)(elements[i]));
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
for (
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
const timeline = [];
|
|
35
|
+
for (let i = 0; i < initialTimeline.length; i++) {
|
|
36
|
+
const item = initialTimeline[i];
|
|
37
|
+
const previousItem = timeline[timeline.length - 1] === undefined ?
|
|
36
38
|
null :
|
|
37
39
|
timeline[timeline.length - 1];
|
|
38
|
-
|
|
40
|
+
const nextItem = initialTimeline[i + 1] === undefined ?
|
|
39
41
|
null :
|
|
40
42
|
initialTimeline[i + 1];
|
|
41
|
-
|
|
43
|
+
const timelineElement = (0, convert_element_to_index_segment_1.default)(item, previousItem, nextItem);
|
|
42
44
|
if (timelineElement !== null) {
|
|
43
45
|
timeline.push(timelineElement);
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
return timeline;
|
|
47
49
|
}
|
|
50
|
+
exports.default = constructTimelineFromElements;
|