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,34 +14,20 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
26
|
-
extendStatics(d, b);
|
|
27
|
-
function __() { this.constructor = d; }
|
|
28
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
|
-
};
|
|
30
|
-
})();
|
|
31
|
-
import isSeekingApproximate from "../../../compat/is_seeking_approximate";
|
|
32
|
-
import config from "../../../config";
|
|
33
|
-
import { MediaError } from "../../../errors";
|
|
34
|
-
import log from "../../../log";
|
|
35
|
-
import EventEmitter from "../../../utils/event_emitter";
|
|
36
|
-
import getMonotonicTimeStamp from "../../../utils/monotonic_timestamp";
|
|
37
|
-
import { getNextBufferedTimeRangeGap } from "../../../utils/ranges";
|
|
38
|
-
import TaskCanceller from "../../../utils/task_canceller";
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const is_seeking_approximate_1 = require("../../../compat/is_seeking_approximate");
|
|
19
|
+
const config_1 = require("../../../config");
|
|
20
|
+
const errors_1 = require("../../../errors");
|
|
21
|
+
const log_1 = require("../../../log");
|
|
22
|
+
const event_emitter_1 = require("../../../utils/event_emitter");
|
|
23
|
+
const monotonic_timestamp_1 = require("../../../utils/monotonic_timestamp");
|
|
24
|
+
const ranges_1 = require("../../../utils/ranges");
|
|
25
|
+
const task_canceller_1 = require("../../../utils/task_canceller");
|
|
39
26
|
/**
|
|
40
27
|
* Work-around rounding errors with floating points by setting an acceptable,
|
|
41
28
|
* very short, deviation when checking equalities.
|
|
42
29
|
*/
|
|
43
|
-
|
|
30
|
+
const EPSILON = 1 / 60;
|
|
44
31
|
/**
|
|
45
32
|
* Monitor playback, trying to avoid stalling situation.
|
|
46
33
|
* If stopping the player to build buffer is needed, temporarily set the
|
|
@@ -49,27 +36,24 @@ var EPSILON = 1 / 60;
|
|
|
49
36
|
* Emit "stalled" then "unstalled" respectively when an unavoidable stall is
|
|
50
37
|
* encountered and exited.
|
|
51
38
|
*/
|
|
52
|
-
|
|
53
|
-
__extends(RebufferingController, _super);
|
|
39
|
+
class RebufferingController extends event_emitter_1.default {
|
|
54
40
|
/**
|
|
55
41
|
* @param {object} playbackObserver - emit the current playback conditions.
|
|
56
42
|
* @param {Object} manifest - The Manifest of the currently-played content.
|
|
57
43
|
* @param {Object} speed - The last speed set by the user
|
|
58
44
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return _this;
|
|
45
|
+
constructor(playbackObserver, manifest, segmentBuffersStore, speed) {
|
|
46
|
+
super();
|
|
47
|
+
this._playbackObserver = playbackObserver;
|
|
48
|
+
this._manifest = manifest;
|
|
49
|
+
this._segmentBuffersStore = segmentBuffersStore;
|
|
50
|
+
this._speed = speed;
|
|
51
|
+
this._discontinuitiesStore = [];
|
|
52
|
+
this._isStarted = false;
|
|
53
|
+
this._canceller = new task_canceller_1.default();
|
|
54
|
+
this._currentFreezeTimestamp = null;
|
|
70
55
|
}
|
|
71
|
-
|
|
72
|
-
var _this = this;
|
|
56
|
+
start() {
|
|
73
57
|
if (this._isStarted) {
|
|
74
58
|
return;
|
|
75
59
|
}
|
|
@@ -88,7 +72,7 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
88
72
|
* seek after that). When browsers seek back to a position behind a
|
|
89
73
|
* discontinuity, they are usually able to skip them without our help.
|
|
90
74
|
*/
|
|
91
|
-
|
|
75
|
+
let lastSeekingPosition;
|
|
92
76
|
/**
|
|
93
77
|
* In some conditions (see `lastSeekingPosition`), we might want to not
|
|
94
78
|
* automatically seek over discontinuities because the browser might do it
|
|
@@ -98,39 +82,39 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
98
82
|
* This variable allows to store the timestamp at which a discontinuity began
|
|
99
83
|
* to be ignored.
|
|
100
84
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this._canceller.signal.register(
|
|
85
|
+
let ignoredStallTimeStamp = null;
|
|
86
|
+
const playbackRateUpdater = new PlaybackRateUpdater(this._playbackObserver, this._speed);
|
|
87
|
+
this._canceller.signal.register(() => {
|
|
104
88
|
playbackRateUpdater.dispose();
|
|
105
89
|
});
|
|
106
|
-
|
|
107
|
-
this._playbackObserver.listen(
|
|
90
|
+
let prevFreezingState = null;
|
|
91
|
+
this._playbackObserver.listen((observation) => {
|
|
108
92
|
var _a;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
93
|
+
const discontinuitiesStore = this._discontinuitiesStore;
|
|
94
|
+
const { buffered, position, readyState, rebuffering, freezing } = observation;
|
|
95
|
+
const { BUFFER_DISCONTINUITY_THRESHOLD, FORCE_DISCONTINUITY_SEEK_DELAY, FREEZING_STALLED_DELAY, UNFREEZING_SEEK_DELAY, UNFREEZING_DELTA_POSITION } = config_1.default.getCurrent();
|
|
112
96
|
if (!observation.seeking &&
|
|
113
|
-
|
|
97
|
+
is_seeking_approximate_1.default &&
|
|
114
98
|
ignoredStallTimeStamp === null &&
|
|
115
99
|
lastSeekingPosition !== null && observation.position < lastSeekingPosition) {
|
|
116
|
-
|
|
117
|
-
|
|
100
|
+
log_1.default.debug("Init: the device appeared to have seeked back by itself.");
|
|
101
|
+
const now = (0, monotonic_timestamp_1.default)();
|
|
118
102
|
ignoredStallTimeStamp = now;
|
|
119
103
|
}
|
|
120
104
|
lastSeekingPosition = observation.seeking ?
|
|
121
105
|
Math.max((_a = observation.pendingInternalSeek) !== null && _a !== void 0 ? _a : 0, observation.position) :
|
|
122
106
|
null;
|
|
123
|
-
if (
|
|
107
|
+
if (this._checkDecipherabilityFreeze(observation)) {
|
|
124
108
|
return;
|
|
125
109
|
}
|
|
126
110
|
if (freezing !== null) {
|
|
127
|
-
|
|
128
|
-
|
|
111
|
+
const now = (0, monotonic_timestamp_1.default)();
|
|
112
|
+
const referenceTimestamp = prevFreezingState === null ?
|
|
129
113
|
freezing.timestamp :
|
|
130
114
|
prevFreezingState.attemptTimestamp;
|
|
131
115
|
if (now - referenceTimestamp > UNFREEZING_SEEK_DELAY) {
|
|
132
|
-
|
|
133
|
-
|
|
116
|
+
log_1.default.warn("Init: trying to seek to un-freeze player");
|
|
117
|
+
this._playbackObserver.setCurrentTime(this._playbackObserver.getCurrentTime() + UNFREEZING_DELTA_POSITION);
|
|
134
118
|
prevFreezingState = { attemptTimestamp: now };
|
|
135
119
|
}
|
|
136
120
|
if (now - freezing.timestamp > FREEZING_STALLED_DELAY) {
|
|
@@ -140,7 +124,7 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
140
124
|
else {
|
|
141
125
|
playbackRateUpdater.startRebuffering();
|
|
142
126
|
}
|
|
143
|
-
|
|
127
|
+
this.trigger("stalled", "freezing");
|
|
144
128
|
return;
|
|
145
129
|
}
|
|
146
130
|
}
|
|
@@ -152,7 +136,7 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
152
136
|
if (readyState === 1) {
|
|
153
137
|
// With a readyState set to 1, we should still not be able to play:
|
|
154
138
|
// Return that we're stalled
|
|
155
|
-
|
|
139
|
+
let reason;
|
|
156
140
|
if (observation.seeking) {
|
|
157
141
|
reason = observation.pendingInternalSeek !== null ? "internal-seek" :
|
|
158
142
|
"seeking";
|
|
@@ -160,56 +144,56 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
160
144
|
else {
|
|
161
145
|
reason = "not-ready";
|
|
162
146
|
}
|
|
163
|
-
|
|
147
|
+
this.trigger("stalled", reason);
|
|
164
148
|
return;
|
|
165
149
|
}
|
|
166
|
-
|
|
150
|
+
this.trigger("unstalled", null);
|
|
167
151
|
return;
|
|
168
152
|
}
|
|
169
153
|
// We want to separate a stall situation when a seek is due to a seek done
|
|
170
154
|
// internally by the player to when its due to a regular user seek.
|
|
171
|
-
|
|
155
|
+
const stalledReason = rebuffering.reason === "seeking" &&
|
|
172
156
|
observation.pendingInternalSeek !== null ?
|
|
173
157
|
"internal-seek" :
|
|
174
158
|
rebuffering.reason;
|
|
175
159
|
if (ignoredStallTimeStamp !== null) {
|
|
176
|
-
|
|
160
|
+
const now = (0, monotonic_timestamp_1.default)();
|
|
177
161
|
if (now - ignoredStallTimeStamp < FORCE_DISCONTINUITY_SEEK_DELAY) {
|
|
178
162
|
playbackRateUpdater.stopRebuffering();
|
|
179
|
-
|
|
180
|
-
|
|
163
|
+
log_1.default.debug("Init: letting the device get out of a stall by itself");
|
|
164
|
+
this.trigger("stalled", stalledReason);
|
|
181
165
|
return;
|
|
182
166
|
}
|
|
183
167
|
else {
|
|
184
|
-
|
|
168
|
+
log_1.default.warn("Init: ignored stall for too long, considering it", now - ignoredStallTimeStamp);
|
|
185
169
|
}
|
|
186
170
|
}
|
|
187
171
|
ignoredStallTimeStamp = null;
|
|
188
172
|
playbackRateUpdater.startRebuffering();
|
|
189
|
-
if (
|
|
190
|
-
|
|
173
|
+
if (this._manifest === null) {
|
|
174
|
+
this.trigger("stalled", stalledReason);
|
|
191
175
|
return;
|
|
192
176
|
}
|
|
193
177
|
/** Position at which data is awaited. */
|
|
194
|
-
|
|
178
|
+
const { position: stalledPosition } = rebuffering;
|
|
195
179
|
if (stalledPosition !== null &&
|
|
196
180
|
stalledPosition !== undefined &&
|
|
197
|
-
|
|
198
|
-
|
|
181
|
+
this._speed.getValue() > 0) {
|
|
182
|
+
const skippableDiscontinuity = findSeekableDiscontinuity(discontinuitiesStore, this._manifest, stalledPosition);
|
|
199
183
|
if (skippableDiscontinuity !== null) {
|
|
200
|
-
|
|
201
|
-
if (realSeekTime <=
|
|
202
|
-
|
|
184
|
+
const realSeekTime = skippableDiscontinuity + 0.001;
|
|
185
|
+
if (realSeekTime <= this._playbackObserver.getCurrentTime()) {
|
|
186
|
+
log_1.default.info("Init: position to seek already reached, no seeking", this._playbackObserver.getCurrentTime(), realSeekTime);
|
|
203
187
|
}
|
|
204
188
|
else {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
189
|
+
log_1.default.warn("SA: skippable discontinuity found in the stream", position, realSeekTime);
|
|
190
|
+
this._playbackObserver.setCurrentTime(realSeekTime);
|
|
191
|
+
this.trigger("warning", generateDiscontinuityError(stalledPosition, realSeekTime));
|
|
208
192
|
return;
|
|
209
193
|
}
|
|
210
194
|
}
|
|
211
195
|
}
|
|
212
|
-
|
|
196
|
+
const freezePosition = stalledPosition !== null && stalledPosition !== void 0 ? stalledPosition : position;
|
|
213
197
|
// Is it a very short discontinuity in buffer ? -> Seek at the beginning of the
|
|
214
198
|
// next range
|
|
215
199
|
//
|
|
@@ -217,49 +201,49 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
217
201
|
// calculate a stalled state. This is useful for some
|
|
218
202
|
// implementation that might drop an injected segment, or in
|
|
219
203
|
// case of small discontinuity in the content.
|
|
220
|
-
|
|
221
|
-
if (
|
|
204
|
+
const nextBufferRangeGap = (0, ranges_1.getNextBufferedTimeRangeGap)(buffered, freezePosition);
|
|
205
|
+
if (this._speed.getValue() > 0 &&
|
|
222
206
|
nextBufferRangeGap < BUFFER_DISCONTINUITY_THRESHOLD) {
|
|
223
|
-
|
|
224
|
-
if (
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
207
|
+
const seekTo = (freezePosition + nextBufferRangeGap + EPSILON);
|
|
208
|
+
if (this._playbackObserver.getCurrentTime() < seekTo) {
|
|
209
|
+
log_1.default.warn("Init: discontinuity encountered inferior to the threshold", freezePosition, seekTo, BUFFER_DISCONTINUITY_THRESHOLD);
|
|
210
|
+
this._playbackObserver.setCurrentTime(seekTo);
|
|
211
|
+
this.trigger("warning", generateDiscontinuityError(freezePosition, seekTo));
|
|
228
212
|
return;
|
|
229
213
|
}
|
|
230
214
|
}
|
|
231
215
|
// Are we in a discontinuity between periods ? -> Seek at the beginning of the
|
|
232
216
|
// next period
|
|
233
|
-
for (
|
|
234
|
-
|
|
217
|
+
for (let i = this._manifest.periods.length - 2; i >= 0; i--) {
|
|
218
|
+
const period = this._manifest.periods[i];
|
|
235
219
|
if (period.end !== undefined && period.end <= freezePosition) {
|
|
236
|
-
if (
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
220
|
+
if (this._manifest.periods[i + 1].start > freezePosition &&
|
|
221
|
+
this._manifest.periods[i + 1].start >
|
|
222
|
+
this._playbackObserver.getCurrentTime()) {
|
|
223
|
+
const nextPeriod = this._manifest.periods[i + 1];
|
|
224
|
+
this._playbackObserver.setCurrentTime(nextPeriod.start);
|
|
225
|
+
this.trigger("warning", generateDiscontinuityError(freezePosition, nextPeriod.start));
|
|
242
226
|
return;
|
|
243
227
|
}
|
|
244
228
|
break;
|
|
245
229
|
}
|
|
246
230
|
}
|
|
247
|
-
|
|
231
|
+
this.trigger("stalled", stalledReason);
|
|
248
232
|
}, { includeLastObservation: true, clearSignal: this._canceller.signal });
|
|
249
|
-
}
|
|
233
|
+
}
|
|
250
234
|
/**
|
|
251
235
|
* Update information on an upcoming discontinuity for a given buffer type and
|
|
252
236
|
* Period.
|
|
253
237
|
* Each new update for the same Period and type overwrites the previous one.
|
|
254
238
|
* @param {Object} evt
|
|
255
239
|
*/
|
|
256
|
-
|
|
240
|
+
updateDiscontinuityInfo(evt) {
|
|
257
241
|
if (!this._isStarted) {
|
|
258
242
|
this.start();
|
|
259
243
|
}
|
|
260
|
-
|
|
244
|
+
const lastObservation = this._playbackObserver.getReference().getValue();
|
|
261
245
|
updateDiscontinuitiesStore(this._discontinuitiesStore, evt, lastObservation);
|
|
262
|
-
}
|
|
246
|
+
}
|
|
263
247
|
/**
|
|
264
248
|
* Function to call when a Stream is currently locked, i.e. we cannot load
|
|
265
249
|
* segments for the corresponding Period and buffer type until it is seeked
|
|
@@ -268,35 +252,35 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
268
252
|
* currently load.
|
|
269
253
|
* @param {Object} period - Period for which no segment will currently load.
|
|
270
254
|
*/
|
|
271
|
-
|
|
255
|
+
onLockedStream(bufferType, period) {
|
|
272
256
|
var _a;
|
|
273
257
|
if (!this._isStarted) {
|
|
274
258
|
this.start();
|
|
275
259
|
}
|
|
276
|
-
|
|
260
|
+
const observation = this._playbackObserver.getReference().getValue();
|
|
277
261
|
if (!observation.rebuffering ||
|
|
278
262
|
observation.paused ||
|
|
279
263
|
this._speed.getValue() <= 0 || (bufferType !== "audio" &&
|
|
280
264
|
bufferType !== "video")) {
|
|
281
265
|
return;
|
|
282
266
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
267
|
+
const currPos = observation.position;
|
|
268
|
+
const rebufferingPos = (_a = observation.rebuffering.position) !== null && _a !== void 0 ? _a : currPos;
|
|
269
|
+
const lockedPeriodStart = period.start;
|
|
286
270
|
if (currPos < lockedPeriodStart &&
|
|
287
271
|
Math.abs(rebufferingPos - lockedPeriodStart) < 1) {
|
|
288
|
-
|
|
272
|
+
log_1.default.warn("Init: rebuffering because of a future locked stream.\n" +
|
|
289
273
|
"Trying to unlock by seeking to the next Period");
|
|
290
274
|
this._playbackObserver.setCurrentTime(lockedPeriodStart + 0.001);
|
|
291
275
|
}
|
|
292
|
-
}
|
|
276
|
+
}
|
|
293
277
|
/**
|
|
294
278
|
* Stops the `RebufferingController` from montoring stalling situations,
|
|
295
279
|
* forever.
|
|
296
280
|
*/
|
|
297
|
-
|
|
281
|
+
destroy() {
|
|
298
282
|
this._canceller.cancel();
|
|
299
|
-
}
|
|
283
|
+
}
|
|
300
284
|
/**
|
|
301
285
|
* Support of contents with DRM on all the platforms out there is a pain in
|
|
302
286
|
* the *ss considering all the DRM-related bugs there are.
|
|
@@ -317,10 +301,10 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
317
301
|
* decipherability freeze, in which case this method already performed the
|
|
318
302
|
* right handling steps.
|
|
319
303
|
*/
|
|
320
|
-
|
|
304
|
+
_checkDecipherabilityFreeze(observation) {
|
|
321
305
|
// XXX TODO allow this in in-worker configuration
|
|
322
|
-
|
|
323
|
-
|
|
306
|
+
const { readyState, rebuffering, freezing } = observation;
|
|
307
|
+
const bufferGap = observation.bufferGap !== undefined &&
|
|
324
308
|
isFinite(observation.bufferGap) ? observation.bufferGap :
|
|
325
309
|
0;
|
|
326
310
|
if (this._segmentBuffersStore === null ||
|
|
@@ -330,26 +314,24 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
330
314
|
this._currentFreezeTimestamp = null;
|
|
331
315
|
return false;
|
|
332
316
|
}
|
|
333
|
-
|
|
317
|
+
const now = (0, monotonic_timestamp_1.default)();
|
|
334
318
|
if (this._currentFreezeTimestamp === null) {
|
|
335
319
|
this._currentFreezeTimestamp = now;
|
|
336
320
|
}
|
|
337
|
-
|
|
338
|
-
|
|
321
|
+
const rebufferingForTooLong = rebuffering !== null && now - rebuffering.timestamp > 4000;
|
|
322
|
+
const frozenForTooLong = freezing !== null && now - freezing.timestamp > 4000;
|
|
339
323
|
if ((rebufferingForTooLong || frozenForTooLong) &&
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
for (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
var segment = _c[_b];
|
|
350
|
-
var representation = segment.infos.representation;
|
|
324
|
+
(0, monotonic_timestamp_1.default)() - this._currentFreezeTimestamp > 4000) {
|
|
325
|
+
const statusAudio = this._segmentBuffersStore.getStatus("audio");
|
|
326
|
+
const statusVideo = this._segmentBuffersStore.getStatus("video");
|
|
327
|
+
let hasOnlyDecipherableSegments = true;
|
|
328
|
+
let isClear = true;
|
|
329
|
+
for (const status of [statusAudio, statusVideo]) {
|
|
330
|
+
if (status.type === "initialized") {
|
|
331
|
+
for (const segment of status.value.getInventory()) {
|
|
332
|
+
const { representation } = segment.infos;
|
|
351
333
|
if (representation.decipherable === false) {
|
|
352
|
-
|
|
334
|
+
log_1.default.warn("Init: we have undecipherable segments left in the buffer, reloading");
|
|
353
335
|
this._currentFreezeTimestamp = null;
|
|
354
336
|
this.trigger("needsReload", null);
|
|
355
337
|
return true;
|
|
@@ -364,7 +346,7 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
364
346
|
}
|
|
365
347
|
}
|
|
366
348
|
if (!isClear && hasOnlyDecipherableSegments) {
|
|
367
|
-
|
|
349
|
+
log_1.default.warn("Init: we are frozen despite only having decipherable " +
|
|
368
350
|
"segments left in the buffer, reloading");
|
|
369
351
|
this._currentFreezeTimestamp = null;
|
|
370
352
|
this.trigger("needsReload", null);
|
|
@@ -372,10 +354,9 @@ var RebufferingController = /** @class */ (function (_super) {
|
|
|
372
354
|
}
|
|
373
355
|
}
|
|
374
356
|
return false;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
export default RebufferingController;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
exports.default = RebufferingController;
|
|
379
360
|
/**
|
|
380
361
|
* @param {Array.<Object>} discontinuitiesStore
|
|
381
362
|
* @param {Object} manifest
|
|
@@ -386,25 +367,25 @@ function findSeekableDiscontinuity(discontinuitiesStore, manifest, stalledPositi
|
|
|
386
367
|
if (discontinuitiesStore.length === 0) {
|
|
387
368
|
return null;
|
|
388
369
|
}
|
|
389
|
-
|
|
390
|
-
for (
|
|
391
|
-
|
|
370
|
+
let maxDiscontinuityEnd = null;
|
|
371
|
+
for (let i = 0; i < discontinuitiesStore.length; i++) {
|
|
372
|
+
const { period } = discontinuitiesStore[i];
|
|
392
373
|
if (period.start > stalledPosition) {
|
|
393
374
|
return maxDiscontinuityEnd;
|
|
394
375
|
}
|
|
395
|
-
|
|
376
|
+
let discontinuityEnd;
|
|
396
377
|
if (period.end === undefined || period.end > stalledPosition) {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
378
|
+
const { discontinuity, position } = discontinuitiesStore[i];
|
|
379
|
+
const { start, end } = discontinuity;
|
|
380
|
+
const discontinuityLowerLimit = start !== null && start !== void 0 ? start : position;
|
|
400
381
|
if (stalledPosition >= (discontinuityLowerLimit - EPSILON)) {
|
|
401
382
|
if (end === null) {
|
|
402
|
-
|
|
383
|
+
const nextPeriod = manifest.getPeriodAfter(period);
|
|
403
384
|
if (nextPeriod !== null) {
|
|
404
385
|
discontinuityEnd = nextPeriod.start + EPSILON;
|
|
405
386
|
}
|
|
406
387
|
else {
|
|
407
|
-
|
|
388
|
+
log_1.default.warn("Init: discontinuity at Period's end but no next Period");
|
|
408
389
|
}
|
|
409
390
|
}
|
|
410
391
|
else if (stalledPosition < (end + EPSILON)) {
|
|
@@ -412,7 +393,7 @@ function findSeekableDiscontinuity(discontinuitiesStore, manifest, stalledPositi
|
|
|
412
393
|
}
|
|
413
394
|
}
|
|
414
395
|
if (discontinuityEnd !== undefined) {
|
|
415
|
-
|
|
396
|
+
log_1.default.info("Init: discontinuity found", stalledPosition, discontinuityEnd);
|
|
416
397
|
maxDiscontinuityEnd =
|
|
417
398
|
maxDiscontinuityEnd !== null &&
|
|
418
399
|
maxDiscontinuityEnd > discontinuityEnd ? maxDiscontinuityEnd :
|
|
@@ -452,11 +433,11 @@ function updateDiscontinuitiesStore(discontinuitiesStore, evt, observation) {
|
|
|
452
433
|
discontinuitiesStore[0].period.end + 10 < observation.position) {
|
|
453
434
|
discontinuitiesStore.shift();
|
|
454
435
|
}
|
|
455
|
-
|
|
436
|
+
const { period, bufferType } = evt;
|
|
456
437
|
if (bufferType !== "audio" && bufferType !== "video") {
|
|
457
438
|
return;
|
|
458
439
|
}
|
|
459
|
-
for (
|
|
440
|
+
for (let i = 0; i < discontinuitiesStore.length; i++) {
|
|
460
441
|
if (discontinuitiesStore[i].period.id === period.id) {
|
|
461
442
|
if (discontinuitiesStore[i].bufferType === bufferType) {
|
|
462
443
|
if (!eventContainsDiscontinuity(evt)) {
|
|
@@ -487,7 +468,7 @@ function updateDiscontinuitiesStore(discontinuitiesStore, evt, observation) {
|
|
|
487
468
|
* @returns {Error}
|
|
488
469
|
*/
|
|
489
470
|
function generateDiscontinuityError(stalledPosition, seekTo) {
|
|
490
|
-
return new MediaError("DISCONTINUITY_ENCOUNTERED", "A discontinuity has been encountered at position " +
|
|
471
|
+
return new errors_1.MediaError("DISCONTINUITY_ENCOUNTERED", "A discontinuity has been encountered at position " +
|
|
491
472
|
String(stalledPosition) + ", seeked at position " +
|
|
492
473
|
String(seekTo));
|
|
493
474
|
}
|
|
@@ -501,14 +482,14 @@ function generateDiscontinuityError(stalledPosition, seekTo) {
|
|
|
501
482
|
* anymore.
|
|
502
483
|
* @class PlaybackRateUpdater
|
|
503
484
|
*/
|
|
504
|
-
|
|
485
|
+
class PlaybackRateUpdater {
|
|
505
486
|
/**
|
|
506
487
|
* Create a new `PlaybackRateUpdater`.
|
|
507
488
|
* @param {Object} playbackObserver
|
|
508
489
|
* @param {Object} speed
|
|
509
490
|
*/
|
|
510
|
-
|
|
511
|
-
this._speedUpdateCanceller = new
|
|
491
|
+
constructor(playbackObserver, speed) {
|
|
492
|
+
this._speedUpdateCanceller = new task_canceller_1.default();
|
|
512
493
|
this._isRebuffering = false;
|
|
513
494
|
this._playbackObserver = playbackObserver;
|
|
514
495
|
this._isDisposed = false;
|
|
@@ -520,29 +501,29 @@ var PlaybackRateUpdater = /** @class */ (function () {
|
|
|
520
501
|
*
|
|
521
502
|
* You can call `stopRebuffering` when you want the rebuffering phase to end.
|
|
522
503
|
*/
|
|
523
|
-
|
|
504
|
+
startRebuffering() {
|
|
524
505
|
if (this._isRebuffering || this._isDisposed) {
|
|
525
506
|
return;
|
|
526
507
|
}
|
|
527
508
|
this._isRebuffering = true;
|
|
528
509
|
this._speedUpdateCanceller.cancel();
|
|
529
|
-
|
|
510
|
+
log_1.default.info("Init: Pause playback to build buffer");
|
|
530
511
|
this._playbackObserver.setPlaybackRate(0);
|
|
531
|
-
}
|
|
512
|
+
}
|
|
532
513
|
/**
|
|
533
514
|
* If in a rebuffering phase (during which the playback rate is forced to
|
|
534
515
|
* `0`), exit that phase to apply the wanted playback rate instead.
|
|
535
516
|
*
|
|
536
517
|
* Do nothing if not in a rebuffering phase.
|
|
537
518
|
*/
|
|
538
|
-
|
|
519
|
+
stopRebuffering() {
|
|
539
520
|
if (!this._isRebuffering || this._isDisposed) {
|
|
540
521
|
return;
|
|
541
522
|
}
|
|
542
523
|
this._isRebuffering = false;
|
|
543
|
-
this._speedUpdateCanceller = new
|
|
524
|
+
this._speedUpdateCanceller = new task_canceller_1.default();
|
|
544
525
|
this._updateSpeed();
|
|
545
|
-
}
|
|
526
|
+
}
|
|
546
527
|
/**
|
|
547
528
|
* The `PlaybackRateUpdater` allocate resources to for example listen to
|
|
548
529
|
* wanted speed changes and react to it.
|
|
@@ -550,16 +531,14 @@ var PlaybackRateUpdater = /** @class */ (function () {
|
|
|
550
531
|
* Consequently, you should call the `dispose` method, when you don't want the
|
|
551
532
|
* `PlaybackRateUpdater` to have an effect anymore.
|
|
552
533
|
*/
|
|
553
|
-
|
|
534
|
+
dispose() {
|
|
554
535
|
this._speedUpdateCanceller.cancel();
|
|
555
536
|
this._isDisposed = true;
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
_this._playbackObserver.setPlaybackRate(lastSpeed);
|
|
537
|
+
}
|
|
538
|
+
_updateSpeed() {
|
|
539
|
+
this._speed.onUpdate((lastSpeed) => {
|
|
540
|
+
log_1.default.info("Init: Resume playback speed", lastSpeed);
|
|
541
|
+
this._playbackObserver.setPlaybackRate(lastSpeed);
|
|
562
542
|
}, { clearSignal: this._speedUpdateCanceller.signal, emitCurrentValue: true });
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
}());
|
|
543
|
+
}
|
|
544
|
+
}
|
package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js
CHANGED
|
@@ -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
|
* Compare 2 events.
|
|
18
20
|
* As the payload of two events may be the same, but the JS objects may not
|
|
@@ -32,4 +34,4 @@ function areSameStreamEvents(evt1, evt2) {
|
|
|
32
34
|
evt1.start === evt2.start &&
|
|
33
35
|
evt1.end === evt2.end;
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
exports.default = areSameStreamEvents;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,5 +14,6 @@
|
|
|
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 stream_events_emitter_1 = require("./stream_events_emitter");
|
|
19
|
+
exports.default = stream_events_emitter_1.default;
|