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,10 +14,11 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const config_1 = require("../../../../config");
|
|
19
|
+
const are_codecs_compatible_1 = require("../../../../utils/are_codecs_compatible");
|
|
20
|
+
const ranges_1 = require("../../../../utils/ranges");
|
|
21
|
+
const segment_buffers_1 = require("../../../segment_buffers");
|
|
20
22
|
/**
|
|
21
23
|
* Find out what to do when switching Adaptation, based on the current
|
|
22
24
|
* situation.
|
|
@@ -26,60 +28,60 @@ import { getFirstSegmentAfterPeriod, getLastSegmentBeforePeriod, } from "../../.
|
|
|
26
28
|
* @param {Object} playbackInfo
|
|
27
29
|
* @returns {Object}
|
|
28
30
|
*/
|
|
29
|
-
|
|
31
|
+
function getAdaptationSwitchStrategy(segmentBuffer, period, adaptation, switchingMode, playbackInfo, options) {
|
|
30
32
|
if (segmentBuffer.codec !== undefined &&
|
|
31
33
|
options.onCodecSwitch === "reload" &&
|
|
32
34
|
!hasCompatibleCodec(adaptation, segmentBuffer.codec)) {
|
|
33
35
|
return { type: "needs-reload", value: undefined };
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
const buffered = segmentBuffer.getBufferedRanges();
|
|
36
38
|
if (buffered.length === 0) {
|
|
37
39
|
return { type: "continue", value: undefined };
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const bufferedRanges = (0, ranges_1.convertToRanges)(buffered);
|
|
42
|
+
const start = period.start;
|
|
43
|
+
const end = period.end == null ? Infinity :
|
|
42
44
|
period.end;
|
|
43
|
-
|
|
45
|
+
const intersection = (0, ranges_1.keepRangeIntersection)(bufferedRanges, [{ start, end }]);
|
|
44
46
|
if (intersection.length === 0) {
|
|
45
47
|
return { type: "continue", value: undefined };
|
|
46
48
|
}
|
|
47
49
|
segmentBuffer.synchronizeInventory();
|
|
48
|
-
|
|
50
|
+
const inventory = segmentBuffer.getInventory();
|
|
49
51
|
// Continue if we have no other Adaptation buffered in the current Period
|
|
50
|
-
if (!inventory.some(
|
|
51
|
-
buf.infos.adaptation.id !== adaptation.id
|
|
52
|
+
if (!inventory.some(buf => buf.infos.period.id === period.id &&
|
|
53
|
+
buf.infos.adaptation.id !== adaptation.id)) {
|
|
52
54
|
return { type: "continue", value: undefined };
|
|
53
55
|
}
|
|
54
56
|
/** Data already in the right Adaptation */
|
|
55
|
-
|
|
57
|
+
const adaptationInBuffer = getBufferedRangesFromAdaptation(inventory, period, adaptation);
|
|
56
58
|
/**
|
|
57
59
|
* Data different from the wanted Adaptation in the Period's range.
|
|
58
60
|
* /!\ Could contain some data at the end of the previous Period or at the
|
|
59
61
|
* beginning of the next one.
|
|
60
62
|
*/
|
|
61
|
-
|
|
63
|
+
const unwantedRange = (0, ranges_1.excludeFromRanges)(intersection, adaptationInBuffer);
|
|
62
64
|
if (unwantedRange.length === 0) {
|
|
63
65
|
return { type: "continue", value: undefined };
|
|
64
66
|
}
|
|
65
|
-
|
|
67
|
+
const { currentTime } = playbackInfo;
|
|
66
68
|
if (switchingMode === "reload" &&
|
|
67
69
|
// We're playing the current Period
|
|
68
|
-
isTimeInRange({ start
|
|
70
|
+
(0, ranges_1.isTimeInRange)({ start, end }, currentTime) &&
|
|
69
71
|
// There is data for the current position or the codecs are differents
|
|
70
72
|
(playbackInfo.readyState > 1 || !adaptation.getPlayableRepresentations()
|
|
71
|
-
.some(
|
|
73
|
+
.some(rep => { var _a; return (0, are_codecs_compatible_1.default)(rep.getMimeTypeString(), (_a = segmentBuffer.codec) !== null && _a !== void 0 ? _a : ""); })) &&
|
|
72
74
|
// We're not playing the current wanted video Adaptation
|
|
73
|
-
!isTimeInRanges(adaptationInBuffer, currentTime)) {
|
|
75
|
+
!(0, ranges_1.isTimeInRanges)(adaptationInBuffer, currentTime)) {
|
|
74
76
|
return { type: "needs-reload", value: undefined };
|
|
75
77
|
}
|
|
76
78
|
// From here, clean-up data from the previous Adaptation, if one
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
const shouldCleanAll = switchingMode === "direct";
|
|
80
|
+
const rangesToExclude = [];
|
|
79
81
|
// First, we don't want to accidentally remove some segments from the previous
|
|
80
82
|
// Period (which overlap a little with this one)
|
|
81
83
|
/** Last segment before one for the current period. */
|
|
82
|
-
|
|
84
|
+
const lastSegmentBefore = (0, segment_buffers_1.getLastSegmentBeforePeriod)(inventory, period);
|
|
83
85
|
if (lastSegmentBefore !== null &&
|
|
84
86
|
(lastSegmentBefore.bufferedEnd === undefined ||
|
|
85
87
|
period.start - lastSegmentBefore.bufferedEnd < 1)) // Close to Period's start
|
|
@@ -90,14 +92,14 @@ export default function getAdaptationSwitchStrategy(segmentBuffer, period, adapt
|
|
|
90
92
|
end: period.start + 1 });
|
|
91
93
|
}
|
|
92
94
|
// Next, exclude data around current position to avoid decoding issues
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
const bufferType = adaptation.type;
|
|
96
|
+
const { ADAP_REP_SWITCH_BUFFER_PADDINGS } = config_1.default.getCurrent();
|
|
95
97
|
/** Ranges that won't be cleaned from the current buffer. */
|
|
96
|
-
|
|
98
|
+
let paddingBefore = ADAP_REP_SWITCH_BUFFER_PADDINGS[bufferType].before;
|
|
97
99
|
if (paddingBefore == null) {
|
|
98
100
|
paddingBefore = 0;
|
|
99
101
|
}
|
|
100
|
-
|
|
102
|
+
let paddingAfter = ADAP_REP_SWITCH_BUFFER_PADDINGS[bufferType].after;
|
|
101
103
|
if (paddingAfter == null) {
|
|
102
104
|
paddingAfter = 0;
|
|
103
105
|
}
|
|
@@ -109,7 +111,7 @@ export default function getAdaptationSwitchStrategy(segmentBuffer, period, adapt
|
|
|
109
111
|
// next Period
|
|
110
112
|
if (period.end !== undefined) {
|
|
111
113
|
/** first segment after for the current period. */
|
|
112
|
-
|
|
114
|
+
const firstSegmentAfter = (0, segment_buffers_1.getFirstSegmentAfterPeriod)(inventory, period);
|
|
113
115
|
if (firstSegmentAfter !== null &&
|
|
114
116
|
(firstSegmentAfter.bufferedStart === undefined ||
|
|
115
117
|
(firstSegmentAfter.bufferedStart - period.end) < 1)) // Close to Period's end
|
|
@@ -118,7 +120,7 @@ export default function getAdaptationSwitchStrategy(segmentBuffer, period, adapt
|
|
|
118
120
|
end: Number.MAX_VALUE });
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
|
-
|
|
123
|
+
const toRemove = (0, ranges_1.excludeFromRanges)(unwantedRange, rangesToExclude);
|
|
122
124
|
if (toRemove.length === 0) {
|
|
123
125
|
return { type: "continue", value: undefined };
|
|
124
126
|
}
|
|
@@ -126,6 +128,7 @@ export default function getAdaptationSwitchStrategy(segmentBuffer, period, adapt
|
|
|
126
128
|
{ type: "flush-buffer", value: toRemove } :
|
|
127
129
|
{ type: "clean-buffer", value: toRemove };
|
|
128
130
|
}
|
|
131
|
+
exports.default = getAdaptationSwitchStrategy;
|
|
129
132
|
/**
|
|
130
133
|
* Returns `true` if at least one codec of the Representations in the given
|
|
131
134
|
* Adaptation has a codec compatible with the given SegmentBuffer's codec.
|
|
@@ -134,9 +137,7 @@ export default function getAdaptationSwitchStrategy(segmentBuffer, period, adapt
|
|
|
134
137
|
* @returns {boolean}
|
|
135
138
|
*/
|
|
136
139
|
function hasCompatibleCodec(adaptation, segmentBufferCodec) {
|
|
137
|
-
return adaptation.getPlayableRepresentations().some(
|
|
138
|
-
return areCodecsCompatible(rep.getMimeTypeString(), segmentBufferCodec);
|
|
139
|
-
});
|
|
140
|
+
return adaptation.getPlayableRepresentations().some(rep => (0, are_codecs_compatible_1.default)(rep.getMimeTypeString(), segmentBufferCodec));
|
|
140
141
|
}
|
|
141
142
|
/**
|
|
142
143
|
* Returns buffered ranges of what we know correspond to the given `adaptation`
|
|
@@ -147,12 +148,12 @@ function hasCompatibleCodec(adaptation, segmentBufferCodec) {
|
|
|
147
148
|
* @returns {Array.<Object>}
|
|
148
149
|
*/
|
|
149
150
|
function getBufferedRangesFromAdaptation(inventory, period, adaptation) {
|
|
150
|
-
return inventory.reduce(
|
|
151
|
+
return inventory.reduce((acc, chunk) => {
|
|
151
152
|
if (chunk.infos.period.id !== period.id ||
|
|
152
153
|
chunk.infos.adaptation.id !== adaptation.id) {
|
|
153
154
|
return acc;
|
|
154
155
|
}
|
|
155
|
-
|
|
156
|
+
const { bufferedStart, bufferedEnd } = chunk;
|
|
156
157
|
if (bufferedStart === undefined || bufferedEnd === undefined) {
|
|
157
158
|
return acc;
|
|
158
159
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,6 +14,21 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
29
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
const representation_stream_1 = require("./representation_stream");
|
|
33
|
+
__exportStar(require("./types"), exports);
|
|
34
|
+
exports.default = representation_stream_1.default;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
18
|
/**
|
|
17
19
|
* This file allows to create RepresentationStreams.
|
|
18
20
|
*
|
|
@@ -21,16 +23,16 @@
|
|
|
21
23
|
* It chooses which segments should be downloaded according to the current
|
|
22
24
|
* position and what is currently buffered.
|
|
23
25
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
const config_1 = require("../../../config");
|
|
27
|
+
const log_1 = require("../../../log");
|
|
28
|
+
const object_assign_1 = require("../../../utils/object_assign");
|
|
29
|
+
const reference_1 = require("../../../utils/reference");
|
|
30
|
+
const task_canceller_1 = require("../../../utils/task_canceller");
|
|
31
|
+
const downloading_queue_1 = require("./utils/downloading_queue");
|
|
32
|
+
const get_buffer_status_1 = require("./utils/get_buffer_status");
|
|
33
|
+
const get_segment_priority_1 = require("./utils/get_segment_priority");
|
|
34
|
+
const push_init_segment_1 = require("./utils/push_init_segment");
|
|
35
|
+
const push_media_segment_1 = require("./utils/push_media_segment");
|
|
34
36
|
/**
|
|
35
37
|
* Perform the logic to load the right segments for the given Representation and
|
|
36
38
|
* push them to the given `SegmentBuffer`.
|
|
@@ -66,40 +68,39 @@ import pushMediaSegment from "./utils/push_media_segment";
|
|
|
66
68
|
* triggered, to immediately stop all operations the `RepresentationStream` is
|
|
67
69
|
* doing.
|
|
68
70
|
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
var bufferType = adaptation.type;
|
|
71
|
+
function RepresentationStream({ content, options, playbackObserver, segmentBuffer, segmentFetcher, terminate }, callbacks, parentCancelSignal) {
|
|
72
|
+
const { period, adaptation, representation } = content;
|
|
73
|
+
const { bufferGoal, maxBufferSize, drmSystemId, fastSwitchThreshold } = options;
|
|
74
|
+
const bufferType = adaptation.type;
|
|
74
75
|
/** `TaskCanceller` stopping ALL operations performed by the `RepresentationStream` */
|
|
75
|
-
|
|
76
|
+
const globalCanceller = new task_canceller_1.default();
|
|
76
77
|
globalCanceller.linkToSignal(parentCancelSignal);
|
|
77
78
|
/**
|
|
78
79
|
* `TaskCanceller` allowing to only stop segment loading and checking operations.
|
|
79
80
|
* This allows to stop only tasks linked to network resource usage, which is
|
|
80
81
|
* often a limited resource, while still letting buffer operations to finish.
|
|
81
82
|
*/
|
|
82
|
-
|
|
83
|
+
const segmentsLoadingCanceller = new task_canceller_1.default();
|
|
83
84
|
segmentsLoadingCanceller.linkToSignal(globalCanceller.signal);
|
|
84
85
|
/** Saved initialization segment state for this representation. */
|
|
85
|
-
|
|
86
|
+
const initSegmentState = {
|
|
86
87
|
segment: representation.index.getInitSegment(),
|
|
87
88
|
uniqueId: null,
|
|
88
89
|
isLoaded: false,
|
|
89
90
|
};
|
|
90
|
-
globalCanceller.signal.register(
|
|
91
|
+
globalCanceller.signal.register(() => {
|
|
91
92
|
// Free initialization segment if one has been declared
|
|
92
93
|
if (initSegmentState.uniqueId !== null) {
|
|
93
94
|
segmentBuffer.freeInitSegment(initSegmentState.uniqueId);
|
|
94
95
|
}
|
|
95
96
|
});
|
|
96
97
|
/** Emit the last scheduled downloading queue for segments. */
|
|
97
|
-
|
|
98
|
+
const lastSegmentQueue = new reference_1.default({
|
|
98
99
|
initSegment: null,
|
|
99
100
|
segmentQueue: [],
|
|
100
101
|
}, segmentsLoadingCanceller.signal);
|
|
101
102
|
/** If `true`, the current Representation has a linked initialization segment. */
|
|
102
|
-
|
|
103
|
+
const hasInitSegment = initSegmentState.segment !== null;
|
|
103
104
|
if (!hasInitSegment) {
|
|
104
105
|
initSegmentState.isLoaded = true;
|
|
105
106
|
}
|
|
@@ -108,25 +109,25 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
108
109
|
* constructed.
|
|
109
110
|
* Allows to avoid sending multiple times protection events.
|
|
110
111
|
*/
|
|
111
|
-
|
|
112
|
+
let hasSentEncryptionData = false;
|
|
112
113
|
// If the DRM system id is already known, and if we already have encryption data
|
|
113
114
|
// for it, we may not need to wait until the initialization segment is loaded to
|
|
114
115
|
// signal required protection data, thus performing License negotiations sooner
|
|
115
116
|
if (drmSystemId !== undefined) {
|
|
116
|
-
|
|
117
|
+
const encryptionData = representation.getEncryptionData(drmSystemId);
|
|
117
118
|
// If some key ids are not known yet, it may be safer to wait for this initialization
|
|
118
119
|
// segment to be loaded first
|
|
119
|
-
if (encryptionData.length > 0 && encryptionData.every(
|
|
120
|
+
if (encryptionData.length > 0 && encryptionData.every(e => e.keyIds !== undefined)) {
|
|
120
121
|
hasSentEncryptionData = true;
|
|
121
|
-
callbacks.encryptionDataEncountered(encryptionData.map(
|
|
122
|
+
callbacks.encryptionDataEncountered(encryptionData.map(d => (0, object_assign_1.default)({ content }, d)));
|
|
122
123
|
if (globalCanceller.isUsed()) {
|
|
123
124
|
return; // previous callback has stopped everything by side-effect
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
/** Will load every segments in `lastSegmentQueue` */
|
|
128
|
-
|
|
129
|
-
downloadingQueue.addEventListener("error",
|
|
129
|
+
const downloadingQueue = new downloading_queue_1.default(content, lastSegmentQueue, segmentFetcher, hasInitSegment);
|
|
130
|
+
downloadingQueue.addEventListener("error", (err) => {
|
|
130
131
|
if (segmentsLoadingCanceller.signal.isCancelled()) {
|
|
131
132
|
return; // ignore post requests-cancellation loading-related errors,
|
|
132
133
|
}
|
|
@@ -136,13 +137,13 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
136
137
|
downloadingQueue.addEventListener("parsedInitSegment", onParsedChunk);
|
|
137
138
|
downloadingQueue.addEventListener("parsedMediaSegment", onParsedChunk);
|
|
138
139
|
downloadingQueue.addEventListener("emptyQueue", checkStatus);
|
|
139
|
-
downloadingQueue.addEventListener("requestRetry",
|
|
140
|
+
downloadingQueue.addEventListener("requestRetry", (payload) => {
|
|
140
141
|
callbacks.warning(payload.error);
|
|
141
142
|
if (segmentsLoadingCanceller.signal.isCancelled()) {
|
|
142
143
|
return; // If the previous callback led to loading operations being stopped, skip
|
|
143
144
|
}
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
const retriedSegment = payload.segment;
|
|
146
|
+
const { index } = representation;
|
|
146
147
|
if (index.isSegmentStillAvailable(retriedSegment) === false) {
|
|
147
148
|
checkStatus();
|
|
148
149
|
}
|
|
@@ -150,12 +151,12 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
150
151
|
callbacks.manifestMightBeOufOfSync();
|
|
151
152
|
}
|
|
152
153
|
});
|
|
153
|
-
downloadingQueue.addEventListener("fullyLoadedSegment",
|
|
154
|
-
segmentBuffer.endOfSegment(
|
|
154
|
+
downloadingQueue.addEventListener("fullyLoadedSegment", (segment) => {
|
|
155
|
+
segmentBuffer.endOfSegment((0, object_assign_1.default)({ segment }, content), globalCanceller.signal)
|
|
155
156
|
.catch(onFatalBufferError);
|
|
156
157
|
});
|
|
157
158
|
downloadingQueue.start();
|
|
158
|
-
segmentsLoadingCanceller.signal.register(
|
|
159
|
+
segmentsLoadingCanceller.signal.register(() => {
|
|
159
160
|
downloadingQueue.removeEventListener();
|
|
160
161
|
downloadingQueue.stop();
|
|
161
162
|
});
|
|
@@ -188,40 +189,40 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
188
189
|
if (segmentsLoadingCanceller.isUsed()) {
|
|
189
190
|
return; // Stop all buffer status checking if load operations are stopped
|
|
190
191
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
192
|
+
const observation = playbackObserver.getReference().getValue();
|
|
193
|
+
const initialWantedTime = (_a = observation.position.pending) !== null && _a !== void 0 ? _a : observation.position.last;
|
|
194
|
+
const status = (0, get_buffer_status_1.default)(content, initialWantedTime, playbackObserver, fastSwitchThreshold.getValue(), bufferGoal.getValue(), maxBufferSize.getValue(), segmentBuffer);
|
|
195
|
+
const { neededSegments } = status;
|
|
196
|
+
let neededInitSegment = null;
|
|
196
197
|
// Add initialization segment if required
|
|
197
198
|
if (!representation.index.isInitialized()) {
|
|
198
199
|
if (initSegmentState.segment === null) {
|
|
199
|
-
|
|
200
|
+
log_1.default.warn("Stream: Uninitialized index without an initialization segment");
|
|
200
201
|
}
|
|
201
202
|
else if (initSegmentState.isLoaded) {
|
|
202
|
-
|
|
203
|
+
log_1.default.warn("Stream: Uninitialized index with an already loaded " +
|
|
203
204
|
"initialization segment");
|
|
204
205
|
}
|
|
205
206
|
else {
|
|
206
|
-
|
|
207
|
+
const wantedStart = (_b = observation.position.pending) !== null && _b !== void 0 ? _b : observation.position.last;
|
|
207
208
|
neededInitSegment = { segment: initSegmentState.segment,
|
|
208
|
-
priority:
|
|
209
|
+
priority: (0, get_segment_priority_1.default)(period.start, wantedStart) };
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
212
|
else if (neededSegments.length > 0 &&
|
|
212
213
|
!initSegmentState.isLoaded &&
|
|
213
214
|
initSegmentState.segment !== null) {
|
|
214
|
-
|
|
215
|
+
const initSegmentPriority = neededSegments[0].priority;
|
|
215
216
|
neededInitSegment = { segment: initSegmentState.segment,
|
|
216
217
|
priority: initSegmentPriority };
|
|
217
218
|
}
|
|
218
|
-
|
|
219
|
+
const terminateVal = terminate.getValue();
|
|
219
220
|
if (terminateVal === null) {
|
|
220
221
|
lastSegmentQueue.setValue({ initSegment: neededInitSegment,
|
|
221
222
|
segmentQueue: neededSegments });
|
|
222
223
|
}
|
|
223
224
|
else if (terminateVal.urgent) {
|
|
224
|
-
|
|
225
|
+
log_1.default.debug("Stream: Urgent switch, terminate now.", bufferType);
|
|
225
226
|
lastSegmentQueue.setValue({ initSegment: null, segmentQueue: [] });
|
|
226
227
|
lastSegmentQueue.finish();
|
|
227
228
|
segmentsLoadingCanceller.cancel();
|
|
@@ -233,36 +234,39 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
233
234
|
// End the download of the current media segment if pending and
|
|
234
235
|
// terminate once either that request is finished or another segment
|
|
235
236
|
// is wanted instead, whichever comes first.
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
237
|
+
const mostNeededSegment = neededSegments[0];
|
|
238
|
+
const initSegmentRequest = downloadingQueue.getRequestedInitSegment();
|
|
239
|
+
const currentSegmentRequest = downloadingQueue.getRequestedMediaSegment();
|
|
240
|
+
const nextQueue = currentSegmentRequest === null ||
|
|
240
241
|
mostNeededSegment === undefined ||
|
|
241
242
|
currentSegmentRequest.id !== mostNeededSegment.segment.id ?
|
|
242
243
|
[] :
|
|
243
244
|
[mostNeededSegment];
|
|
244
|
-
|
|
245
|
+
const nextInit = initSegmentRequest === null ? null :
|
|
245
246
|
neededInitSegment;
|
|
246
247
|
lastSegmentQueue.setValue({ initSegment: nextInit,
|
|
247
248
|
segmentQueue: nextQueue });
|
|
248
249
|
if (nextQueue.length === 0 && nextInit === null) {
|
|
249
|
-
|
|
250
|
+
log_1.default.debug("Stream: No request left, terminate", bufferType);
|
|
250
251
|
lastSegmentQueue.finish();
|
|
251
252
|
segmentsLoadingCanceller.cancel();
|
|
252
253
|
callbacks.terminating();
|
|
253
254
|
return;
|
|
254
255
|
}
|
|
255
256
|
}
|
|
256
|
-
callbacks.streamStatusUpdate({ period
|
|
257
|
+
callbacks.streamStatusUpdate({ period,
|
|
258
|
+
position: observation.position.last,
|
|
259
|
+
bufferType,
|
|
260
|
+
imminentDiscontinuity: status.imminentDiscontinuity,
|
|
257
261
|
isEmptyStream: false,
|
|
258
262
|
hasFinishedLoading: status.hasFinishedLoading,
|
|
259
263
|
neededSegments: status.neededSegments });
|
|
260
264
|
if (segmentsLoadingCanceller.signal.isCancelled()) {
|
|
261
265
|
return; // previous callback has stopped loading operations by side-effect
|
|
262
266
|
}
|
|
263
|
-
|
|
267
|
+
const { UPTO_CURRENT_POSITION_CLEANUP } = config_1.default.getCurrent();
|
|
264
268
|
if (status.isBufferFull) {
|
|
265
|
-
|
|
269
|
+
const gcedPosition = Math.max(0, initialWantedTime - UPTO_CURRENT_POSITION_CLEANUP);
|
|
266
270
|
if (gcedPosition > 0) {
|
|
267
271
|
segmentBuffer.removeBuffer(0, gcedPosition, globalCanceller.signal)
|
|
268
272
|
.catch(onFatalBufferError);
|
|
@@ -284,8 +288,7 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
284
288
|
return;
|
|
285
289
|
}
|
|
286
290
|
// Supplementary encryption information might have been parsed.
|
|
287
|
-
for (
|
|
288
|
-
var protInfo = _a[_i];
|
|
291
|
+
for (const protInfo of evt.protectionData) {
|
|
289
292
|
// TODO better handle use cases like key rotation by not always grouping
|
|
290
293
|
// every protection data together? To check.
|
|
291
294
|
representation.addProtectionData(protInfo.initDataType, protInfo.keyId, protInfo.initData);
|
|
@@ -294,9 +297,9 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
294
297
|
// included encryption information - take care of the encryption event
|
|
295
298
|
// if not already done.
|
|
296
299
|
if (!hasSentEncryptionData) {
|
|
297
|
-
|
|
300
|
+
const allEncryptionData = representation.getAllEncryptionData();
|
|
298
301
|
if (allEncryptionData.length > 0) {
|
|
299
|
-
callbacks.encryptionDataEncountered(allEncryptionData.map(
|
|
302
|
+
callbacks.encryptionDataEncountered(allEncryptionData.map(p => (0, object_assign_1.default)({ content }, p)));
|
|
300
303
|
hasSentEncryptionData = true;
|
|
301
304
|
// previous callback could have lead to cancellation
|
|
302
305
|
if (globalCanceller.isUsed()) {
|
|
@@ -311,12 +314,16 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
311
314
|
}
|
|
312
315
|
initSegmentState.isLoaded = true;
|
|
313
316
|
if (evt.initializationData !== null) {
|
|
314
|
-
|
|
317
|
+
const initSegmentUniqueId = representation.uniqueId;
|
|
315
318
|
initSegmentState.uniqueId = initSegmentUniqueId;
|
|
316
319
|
segmentBuffer.declareInitSegment(initSegmentUniqueId, evt.initializationData);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
+
(0, push_init_segment_1.default)({ playbackObserver,
|
|
321
|
+
content,
|
|
322
|
+
initSegmentUniqueId,
|
|
323
|
+
segment: evt.segment,
|
|
324
|
+
segmentData: evt.initializationData,
|
|
325
|
+
segmentBuffer }, globalCanceller.signal)
|
|
326
|
+
.then((result) => {
|
|
320
327
|
if (result !== null) {
|
|
321
328
|
callbacks.addedSegment(result);
|
|
322
329
|
}
|
|
@@ -329,7 +336,7 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
329
336
|
return;
|
|
330
337
|
}
|
|
331
338
|
else {
|
|
332
|
-
|
|
339
|
+
const { inbandEvents, predictedSegments, needsManifestRefresh } = evt;
|
|
333
340
|
if (predictedSegments !== undefined) {
|
|
334
341
|
representation.index.addPredictedSegments(predictedSegments, evt.segment);
|
|
335
342
|
}
|
|
@@ -345,10 +352,14 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
345
352
|
return; // previous callback has stopped everything by side-effect
|
|
346
353
|
}
|
|
347
354
|
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
355
|
+
const initSegmentUniqueId = initSegmentState.uniqueId;
|
|
356
|
+
(0, push_media_segment_1.default)({ playbackObserver,
|
|
357
|
+
content,
|
|
358
|
+
initSegmentUniqueId,
|
|
359
|
+
parsedSegment: evt,
|
|
360
|
+
segment: evt.segment,
|
|
361
|
+
segmentBuffer }, globalCanceller.signal)
|
|
362
|
+
.then((result) => {
|
|
352
363
|
if (result !== null) {
|
|
353
364
|
callbacks.addedSegment(result);
|
|
354
365
|
}
|
|
@@ -363,7 +374,7 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
363
374
|
* @param {*} err
|
|
364
375
|
*/
|
|
365
376
|
function onFatalBufferError(err) {
|
|
366
|
-
if (globalCanceller.isUsed() && err instanceof CancellationError) {
|
|
377
|
+
if (globalCanceller.isUsed() && err instanceof task_canceller_1.CancellationError) {
|
|
367
378
|
// The error is linked to cancellation AND we explicitely cancelled buffer
|
|
368
379
|
// operations.
|
|
369
380
|
// We can thus ignore it, it is very unlikely to lead to true buffer issues.
|
|
@@ -373,3 +384,4 @@ export default function RepresentationStream(_a, callbacks, parentCancelSignal)
|
|
|
373
384
|
callbacks.error(err);
|
|
374
385
|
}
|
|
375
386
|
}
|
|
387
|
+
exports.default = RepresentationStream;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|