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
package/jest.config.js
CHANGED
|
@@ -27,7 +27,7 @@ module.exports = {
|
|
|
27
27
|
strictPropertyInitialization: true,
|
|
28
28
|
noUnusedParameters: true,
|
|
29
29
|
noUnusedLocals: true,
|
|
30
|
-
types: ["
|
|
30
|
+
types: ["jest"],
|
|
31
31
|
module: "es2015",
|
|
32
32
|
moduleResolution: "node",
|
|
33
33
|
esModuleInterop: true,
|
|
@@ -40,27 +40,6 @@ module.exports = {
|
|
|
40
40
|
],
|
|
41
41
|
},
|
|
42
42
|
globals: {
|
|
43
|
-
__FEATURES__: {
|
|
44
|
-
IS_DISABLED: 0,
|
|
45
|
-
IS_ENABLED: 1,
|
|
46
|
-
|
|
47
|
-
BIF_PARSER: 1,
|
|
48
|
-
DASH: 1,
|
|
49
|
-
DIRECTFILE: 1,
|
|
50
|
-
EME: 1,
|
|
51
|
-
HTML_SAMI: 1,
|
|
52
|
-
HTML_SRT: 1,
|
|
53
|
-
HTML_TTML: 1,
|
|
54
|
-
HTML_VTT: 1,
|
|
55
|
-
LOCAL_MANIFEST: 1,
|
|
56
|
-
METAPLAYLIST: 1,
|
|
57
|
-
DEBUG_ELEMENT: 1,
|
|
58
|
-
NATIVE_SAMI: 1,
|
|
59
|
-
NATIVE_SRT: 1,
|
|
60
|
-
NATIVE_TTML: 1,
|
|
61
|
-
NATIVE_VTT: 1,
|
|
62
|
-
SMOOTH: 1,
|
|
63
|
-
},
|
|
64
43
|
__ENVIRONMENT__: {
|
|
65
44
|
PRODUCTION: 0,
|
|
66
45
|
DEV: 1,
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rx-player",
|
|
3
3
|
"author": "Canal+",
|
|
4
|
-
"version": "4.0.0-dev.
|
|
4
|
+
"version": "4.0.0-dev.2023102700",
|
|
5
5
|
"description": "Canal+ HTML5 Video Player",
|
|
6
|
-
"main": "./dist/
|
|
6
|
+
"main": "./dist/_esm5.processed/index.js",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"dash",
|
|
9
9
|
"eme",
|
|
@@ -17,23 +17,23 @@
|
|
|
17
17
|
"typescript",
|
|
18
18
|
"video"
|
|
19
19
|
],
|
|
20
|
-
"browser": "./dist/
|
|
20
|
+
"browser": "./dist/_esm5.processed/index.js",
|
|
21
21
|
"homepage": "https://github.com/canalplus/rx-player",
|
|
22
22
|
"bugs": "https://github.com/canalplus/rx-player/issues",
|
|
23
23
|
"license": "Apache-2.0",
|
|
24
24
|
"sideEffects": false,
|
|
25
25
|
"scripts": {
|
|
26
|
-
"build": "
|
|
26
|
+
"build": "./scripts/build/generate_build.js",
|
|
27
27
|
"build:all": "npm run build:rxp:all && npm run build:wasm:release",
|
|
28
|
-
"build:
|
|
29
|
-
"build:min:report": "webpack --progress --config webpack.config.js --env minify --env production --env reportSize",
|
|
30
|
-
"build:modular": "./scripts/build/generate_build.js",
|
|
31
|
-
"build:report": "webpack --progress --config webpack.config.js --env production --env reportSize",
|
|
32
|
-
"build:rxp:all": "npm run build && npm run build:min && npm run build:modular",
|
|
33
|
-
"build:watch": "webpack --progress --config webpack.config.js -w --env production",
|
|
34
|
-
"build:min:watch": "webpack --progress --config webpack.config.js -w --env production --env minify",
|
|
28
|
+
"build:rxp:all": "npm run bundle && npm run bundle:min && npm run build",
|
|
35
29
|
"build:wasm:debug": "cd ./src/parsers/manifest/dash/wasm-parser && cargo build --target wasm32-unknown-unknown && cp target/wasm32-unknown-unknown/debug/mpd_node_parser.wasm ../../../../../dist/mpd-parser.wasm",
|
|
36
30
|
"build:wasm:release": "cd ./src/parsers/manifest/dash/wasm-parser && cargo build --target wasm32-unknown-unknown --release && wasm-opt -O3 -o ../../../../../dist/mpd-parser.wasm target/wasm32-unknown-unknown/release/mpd_node_parser.wasm && cd ../../../../../ && npm run wasm-strip",
|
|
31
|
+
"bundle": "webpack --progress --config webpack.config.js --env production",
|
|
32
|
+
"bundle:min": "webpack --progress --config webpack.config.js --env minify --env production",
|
|
33
|
+
"bundle:min:report": "webpack --progress --config webpack.config.js --env minify --env production --env reportSize",
|
|
34
|
+
"bundle:min:watch": "webpack --progress --config webpack.config.js -w --env production --env minify",
|
|
35
|
+
"bundle:report": "webpack --progress --config webpack.config.js --env production --env reportSize",
|
|
36
|
+
"bundle:watch": "webpack --progress --config webpack.config.js -w --env production",
|
|
37
37
|
"certificate": "./scripts/generate_certificate",
|
|
38
38
|
"check": "npm run check:types && npm run lint",
|
|
39
39
|
"check:all": "npm run check:types && npm run lint && npm run lint:demo && npm run lint:tests && npm run test:unit && npm run test:integration && npm run test:memory && node -r esm ./scripts/check_nodejs_import_compatibility.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"lint:demo": "eslint -c demo/full/.eslintrc.js demo/full/scripts",
|
|
51
51
|
"lint:tests": "eslint tests/**/*.js --ignore-pattern '/tests/performance/bundle*'",
|
|
52
52
|
"list": "node scripts/list-npm-scripts.js",
|
|
53
|
-
"prepublishOnly": "npm run build:
|
|
53
|
+
"prepublishOnly": "npm run build:all",
|
|
54
54
|
"standalone": "node ./scripts/run_standalone_demo.js",
|
|
55
55
|
"start": "node ./scripts/start_demo_web_server.js",
|
|
56
56
|
"start:wasm": "node ./scripts/start_demo_web_server.js --include-wasm",
|
|
@@ -87,7 +87,6 @@
|
|
|
87
87
|
"@types/chai": "4.3.6",
|
|
88
88
|
"@types/jest": "29.5.5",
|
|
89
89
|
"@types/mocha": "10.0.1",
|
|
90
|
-
"@types/node": "20.7.0",
|
|
91
90
|
"@types/react": "18.2.23",
|
|
92
91
|
"@types/react-dom": "18.2.7",
|
|
93
92
|
"@types/sinon": "10.0.17",
|
|
@@ -177,23 +176,23 @@
|
|
|
177
176
|
}
|
|
178
177
|
},
|
|
179
178
|
"Build the player or one of its sub-parts": {
|
|
180
|
-
"
|
|
181
|
-
"build
|
|
179
|
+
"Regular builds (used by JS bundlers)": {
|
|
180
|
+
"build": "Build the rx-player and create corresponding files and directories."
|
|
182
181
|
},
|
|
183
|
-
"Legacy builds (bundles)": {
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
182
|
+
"Legacy bundle builds (single-file bundles exporting to window.RxPlayer)": {
|
|
183
|
+
"bundle": "Build the player in dist/rx-player.js",
|
|
184
|
+
"bundle:min": "Build the player and minify it in dist/rx-player.min.js",
|
|
185
|
+
"bundle:min:report": "Build the player then minify it in dist/rx-player.min.js and display a report on its size",
|
|
186
|
+
"bundle:min:watch": "Build the player in dist/rx-player.js each times the files update",
|
|
187
|
+
"bundle:report": "Build the player in dist/rx-player.js and display a report on its size",
|
|
188
|
+
"bundle:watch": "Build the player as a minified version in dist/rx-player.min.js each times the files update"
|
|
190
189
|
},
|
|
191
190
|
"WebAssembly MPD parser builds (needs Rust, Cargo and binaryen)": {
|
|
192
191
|
"build:wasm:debug": "Build the DASH MPD parser written in rust as WebAssembly into debug mode, and output the result as dist/mpd-parser.wasm",
|
|
193
192
|
"build:wasm:release": "Build the DASH MPD parser written in rust as WebAssembly into release mode, and output the result as dist/mpd-parser.wasm"
|
|
194
193
|
},
|
|
195
194
|
"Combinations of multiple builds": {
|
|
196
|
-
"build:all": "Perform all possible builds of the player (regular RxPlayer builds and the WebAssembly DASH MPD parser release build).",
|
|
195
|
+
"build:all": "Perform all possible builds of the player (regular RxPlayer builds, legacy bundles and the WebAssembly DASH MPD parser release build).",
|
|
197
196
|
"build:rxp:all": "Perform all possible builds of the RxPlayer main code (that is, excluding the WebAssembly DASH MPD parser build)."
|
|
198
197
|
}
|
|
199
198
|
},
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
18
18
|
|
|
19
|
-
// Define build-time constants corresponding to the
|
|
19
|
+
// Define build-time constants corresponding to the regular build.
|
|
20
20
|
|
|
21
21
|
declare const enum __LOGGER_LEVEL__ {
|
|
22
22
|
CURRENT_LEVEL = "NONE",
|
|
@@ -28,26 +28,4 @@ declare const enum __ENVIRONMENT__ {
|
|
|
28
28
|
CURRENT_ENV = PRODUCTION,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
declare const enum __FEATURES__ {
|
|
32
|
-
IS_DISABLED = 0,
|
|
33
|
-
IS_ENABLED = 1,
|
|
34
|
-
|
|
35
|
-
BIF_PARSER = IS_DISABLED,
|
|
36
|
-
DASH = IS_DISABLED,
|
|
37
|
-
DIRECTFILE = IS_DISABLED,
|
|
38
|
-
EME = IS_DISABLED,
|
|
39
|
-
HTML_SAMI = IS_DISABLED,
|
|
40
|
-
HTML_SRT = IS_DISABLED,
|
|
41
|
-
HTML_TTML = IS_DISABLED,
|
|
42
|
-
HTML_VTT = IS_DISABLED,
|
|
43
|
-
LOCAL_MANIFEST = IS_DISABLED,
|
|
44
|
-
METAPLAYLIST = IS_DISABLED,
|
|
45
|
-
DEBUG_ELEMENT = IS_DISABLED,
|
|
46
|
-
NATIVE_SAMI = IS_DISABLED,
|
|
47
|
-
NATIVE_SRT = IS_DISABLED,
|
|
48
|
-
NATIVE_TTML = IS_DISABLED,
|
|
49
|
-
NATIVE_VTT = IS_DISABLED,
|
|
50
|
-
SMOOTH = IS_DISABLED,
|
|
51
|
-
}
|
|
52
|
-
|
|
53
31
|
declare const __RX_PLAYER_DEBUG_MODE__ : boolean | undefined;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
* To be able to run this script:
|
|
14
14
|
*
|
|
15
|
-
* 1. You need first to produce the
|
|
15
|
+
* 1. You need first to produce build the RxPlayer through the usual scripts
|
|
16
16
|
*
|
|
17
17
|
* 2. You need to make sure that `import` statements can be used in the
|
|
18
18
|
* node.js runtime you've ran. This possibility might depends on the
|
package/scripts/update-version
CHANGED
|
@@ -29,10 +29,7 @@ sed -i.bak -e "s/sonar\.projectVersion= *.*/sonar.projectVersion=${version}/g" s
|
|
|
29
29
|
echo $version > VERSION
|
|
30
30
|
|
|
31
31
|
npm install
|
|
32
|
-
npm run build
|
|
33
|
-
npm run build:min
|
|
34
|
-
npm run build:wasm:release
|
|
35
|
-
npm run build:modular
|
|
32
|
+
npm run build:all
|
|
36
33
|
|
|
37
34
|
echo "creating types for legacy code bases..."
|
|
38
35
|
rm -f dist/rx-player.d.ts rx-player.min.d.ts
|
package/sonar-project.properties
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
sonar.projectKey=rx-player
|
|
2
2
|
sonar.organization=rx-player
|
|
3
3
|
sonar.projectName=rx-player
|
|
4
|
-
sonar.projectVersion=4.0.0-dev.
|
|
4
|
+
sonar.projectVersion=4.0.0-dev.2023102700
|
|
5
5
|
sonar.sources=./src,./demo,./tests
|
|
6
6
|
sonar.exclusions=demo/full/bundle.js,demo/standalone/lib.js,demo/bundle.js
|
|
7
7
|
sonar.host.url=https://sonarcloud.io
|
|
@@ -188,26 +188,26 @@ function getDocumentVisibilityRef(
|
|
|
188
188
|
let prefix : string|undefined;
|
|
189
189
|
|
|
190
190
|
const doc = document as ICompatDocument;
|
|
191
|
-
if (doc.hidden
|
|
191
|
+
if (!isNullOrUndefined(doc.hidden)) {
|
|
192
192
|
prefix = "";
|
|
193
|
-
} else if (doc.mozHidden
|
|
193
|
+
} else if (!isNullOrUndefined(doc.mozHidden)) {
|
|
194
194
|
prefix = "moz";
|
|
195
|
-
} else if (doc.msHidden
|
|
195
|
+
} else if (!isNullOrUndefined(doc.msHidden)) {
|
|
196
196
|
prefix = "ms";
|
|
197
|
-
} else if (doc.webkitHidden
|
|
197
|
+
} else if (!isNullOrUndefined(doc.webkitHidden)) {
|
|
198
198
|
prefix = "webkit";
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
const hidden = isNonEmptyString(prefix) ? prefix + "Hidden" :
|
|
201
|
+
const hidden = isNonEmptyString(prefix) ? (prefix + "Hidden" as "hidden") :
|
|
202
202
|
"hidden";
|
|
203
203
|
const visibilityChangeEvent = isNonEmptyString(prefix) ? prefix + "visibilitychange" :
|
|
204
204
|
"visibilitychange";
|
|
205
205
|
|
|
206
|
-
const isHidden = document[hidden
|
|
206
|
+
const isHidden = document[hidden];
|
|
207
207
|
const ref = new SharedReference(!isHidden, stopListening);
|
|
208
208
|
|
|
209
209
|
addEventListener(document, visibilityChangeEvent, () => {
|
|
210
|
-
const isVisible = !(document[hidden
|
|
210
|
+
const isVisible = !(document[hidden]);
|
|
211
211
|
ref.setValueIfChanged(isVisible);
|
|
212
212
|
}, stopListening);
|
|
213
213
|
|
|
@@ -287,7 +287,7 @@ function getVideoVisibilityRef(
|
|
|
287
287
|
stopListening : CancellationSignal
|
|
288
288
|
) : IReadOnlySharedReference<boolean> {
|
|
289
289
|
const isDocVisibleRef = getDocumentVisibilityRef(stopListening);
|
|
290
|
-
let currentTimeout : number |
|
|
290
|
+
let currentTimeout : number | undefined;
|
|
291
291
|
const ref = new SharedReference(true, stopListening);
|
|
292
292
|
stopListening.register(() => {
|
|
293
293
|
clearTimeout(currentTimeout);
|
|
@@ -92,7 +92,7 @@ describe("BufferBasedChooser", () => {
|
|
|
92
92
|
/* eslint-disable max-len */
|
|
93
93
|
it("should log an error and return the first bitrate if the given bitrate does not exist", () => {
|
|
94
94
|
/* eslint-enable max-len */
|
|
95
|
-
const logger = { debug: jest.fn(),
|
|
95
|
+
const logger = { debug: jest.fn(), info: jest.fn() };
|
|
96
96
|
jest.mock("../../../log", () => ({ __esModule: true as const,
|
|
97
97
|
default: logger }));
|
|
98
98
|
const BufferBasedChooser = jest.requireActual("../buffer_based_chooser").default;
|
|
@@ -105,8 +105,8 @@ describe("BufferBasedChooser", () => {
|
|
|
105
105
|
currentScore: undefined,
|
|
106
106
|
});
|
|
107
107
|
expect(bbc.getLastEstimate()).toEqual(10);
|
|
108
|
-
expect(logger.
|
|
109
|
-
expect(logger.
|
|
108
|
+
expect(logger.info).toHaveBeenCalledTimes(1);
|
|
109
|
+
expect(logger.info)
|
|
110
110
|
.toHaveBeenCalledWith("ABR: Current Bitrate not found in the calculated levels");
|
|
111
111
|
});
|
|
112
112
|
|
|
@@ -200,28 +200,46 @@ function getEstimateReference(
|
|
|
200
200
|
|
|
201
201
|
return { estimates: estimateRef, callbacks };
|
|
202
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Emit the ABR estimates on various events through the returned
|
|
205
|
+
* `SharedReference`.
|
|
206
|
+
* @param {Array.<Object>} unsortedRepresentations - All `Representation` that
|
|
207
|
+
* the ABR logic can choose from.
|
|
208
|
+
* @param {Object} innerCancellationSignal - When this `CancellationSignal`
|
|
209
|
+
* emits, all events registered to to emit new estimates will be unregistered.
|
|
210
|
+
* Note that the returned reference may still be used to produce new estimates
|
|
211
|
+
* in the future if you want to even after this signal emits.
|
|
212
|
+
* @returns {Object} - `SharedReference` through which ABR estimates will be
|
|
213
|
+
* produced.
|
|
214
|
+
*/
|
|
203
215
|
function createEstimateReference(
|
|
204
|
-
|
|
216
|
+
unsortedRepresentations : Representation[],
|
|
205
217
|
innerCancellationSignal : CancellationSignal
|
|
206
218
|
) : SharedReference<IABREstimate> {
|
|
207
|
-
if (
|
|
219
|
+
if (unsortedRepresentations.length <= 1) {
|
|
208
220
|
// There's only a single Representation. Just choose it.
|
|
209
|
-
return new SharedReference<IABREstimate>({
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
221
|
+
return new SharedReference<IABREstimate>({
|
|
222
|
+
bitrate: undefined,
|
|
223
|
+
representation: unsortedRepresentations[0],
|
|
224
|
+
urgent: true,
|
|
225
|
+
knownStableBitrate: undefined,
|
|
226
|
+
});
|
|
213
227
|
}
|
|
214
228
|
|
|
215
229
|
/** If true, Representation estimates based on the buffer health might be used. */
|
|
216
230
|
let allowBufferBasedEstimates = false;
|
|
217
231
|
|
|
232
|
+
/** Ensure `Representation` objects are sorted by bitrates and only rely on this. */
|
|
233
|
+
const sortedRepresentations = unsortedRepresentations
|
|
234
|
+
.sort((ra, rb) => ra.bitrate - rb.bitrate);
|
|
235
|
+
|
|
218
236
|
/**
|
|
219
237
|
* Module calculating the optimal Representation based on the current
|
|
220
238
|
* buffer's health (i.e. whether enough data is buffered, history of
|
|
221
239
|
* buffer size etc.).
|
|
222
240
|
*/
|
|
223
241
|
const bufferBasedChooser = new BufferBasedChooser(
|
|
224
|
-
|
|
242
|
+
sortedRepresentations.map(r => r.bitrate)
|
|
225
243
|
);
|
|
226
244
|
|
|
227
245
|
/** Store the previous estimate made here. */
|
|
@@ -282,7 +300,7 @@ function getEstimateReference(
|
|
|
282
300
|
const bitrateThrottle = filters.throttleBitrate.getValue();
|
|
283
301
|
const currentRepresentationVal = currentRepresentation.getValue();
|
|
284
302
|
|
|
285
|
-
const filteredReps = getFilteredRepresentations(
|
|
303
|
+
const filteredReps = getFilteredRepresentations(sortedRepresentations,
|
|
286
304
|
resolutionLimit,
|
|
287
305
|
bitrateThrottle);
|
|
288
306
|
const requests = requestsStore.getRequests();
|
|
@@ -372,7 +390,7 @@ function getEstimateReference(
|
|
|
372
390
|
maximumPosition - position.last < 40)
|
|
373
391
|
{
|
|
374
392
|
chosenRepFromGuessMode = guessBasedChooser
|
|
375
|
-
.getGuess(
|
|
393
|
+
.getGuess(sortedRepresentations,
|
|
376
394
|
lastPlaybackObservation,
|
|
377
395
|
currentRepresentationVal,
|
|
378
396
|
currentBestBitrate,
|
|
@@ -153,7 +153,7 @@ export default class BufferBasedChooser {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
if (currentBitrateIndex < 0 || bitrates.length !== bufferLevels.length) {
|
|
156
|
-
log.
|
|
156
|
+
log.info("ABR: Current Bitrate not found in the calculated levels");
|
|
157
157
|
this._currentEstimate = bitrates[0];
|
|
158
158
|
return ;
|
|
159
159
|
}
|
|
@@ -18,6 +18,7 @@ import config from "../../config";
|
|
|
18
18
|
import log from "../../log";
|
|
19
19
|
import { Representation } from "../../manifest";
|
|
20
20
|
import arrayFind from "../../utils/array_find";
|
|
21
|
+
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
21
22
|
import getMonotonicTimeStamp from "../../utils/monotonic_timestamp";
|
|
22
23
|
import {
|
|
23
24
|
IRepresentationEstimatorPlaybackObservation,
|
|
@@ -359,10 +360,10 @@ export default class NetworkAnalyzer {
|
|
|
359
360
|
this._lowLatencyMode,
|
|
360
361
|
lastEstimatedBitrate);
|
|
361
362
|
|
|
362
|
-
if (bandwidthEstimate
|
|
363
|
+
if (bandwidthEstimate !== undefined) {
|
|
363
364
|
log.info("ABR: starvation mode emergency estimate:", bandwidthEstimate);
|
|
364
365
|
bandwidthEstimator.reset();
|
|
365
|
-
newBitrateCeil = currentRepresentation
|
|
366
|
+
newBitrateCeil = isNullOrUndefined(currentRepresentation) ?
|
|
366
367
|
bandwidthEstimate :
|
|
367
368
|
Math.min(bandwidthEstimate, currentRepresentation.bitrate);
|
|
368
369
|
}
|
|
@@ -372,11 +373,11 @@ export default class NetworkAnalyzer {
|
|
|
372
373
|
if (newBitrateCeil == null) {
|
|
373
374
|
bandwidthEstimate = bandwidthEstimator.getEstimate();
|
|
374
375
|
|
|
375
|
-
if (bandwidthEstimate
|
|
376
|
+
if (bandwidthEstimate !== undefined) {
|
|
376
377
|
newBitrateCeil = bandwidthEstimate *
|
|
377
378
|
(this._inStarvationMode ? localConf.starvationBitrateFactor :
|
|
378
379
|
localConf.regularBitrateFactor);
|
|
379
|
-
} else if (lastEstimatedBitrate
|
|
380
|
+
} else if (lastEstimatedBitrate !== undefined) {
|
|
380
381
|
newBitrateCeil = lastEstimatedBitrate *
|
|
381
382
|
(this._inStarvationMode ? localConf.starvationBitrateFactor :
|
|
382
383
|
localConf.regularBitrateFactor);
|
|
@@ -345,7 +345,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
345
345
|
// See: https://bugzilla.mozilla.org/show_bug.cgi?id=1194624
|
|
346
346
|
videoElement.preload = "auto";
|
|
347
347
|
|
|
348
|
-
this.version = /* PLAYER_VERSION */"4.0.0-dev.
|
|
348
|
+
this.version = /* PLAYER_VERSION */"4.0.0-dev.2023102700";
|
|
349
349
|
this.log = log;
|
|
350
350
|
this.state = "STOPPED";
|
|
351
351
|
this.videoElement = videoElement;
|
|
@@ -2772,7 +2772,7 @@ class Player extends EventEmitter<IPublicAPIEvent> {
|
|
|
2772
2772
|
}
|
|
2773
2773
|
}
|
|
2774
2774
|
}
|
|
2775
|
-
Player.version = /* PLAYER_VERSION */"4.0.0-dev.
|
|
2775
|
+
Player.version = /* PLAYER_VERSION */"4.0.0-dev.2023102700";
|
|
2776
2776
|
|
|
2777
2777
|
/** Every events sent by the RxPlayer's public API. */
|
|
2778
2778
|
interface IPublicAPIEvent {
|
|
@@ -209,7 +209,8 @@ export default class TrackDispatcher extends EventEmitter<ITrackDispatcherEvent>
|
|
|
209
209
|
|
|
210
210
|
// Check if Locked Representations have changed
|
|
211
211
|
const oldRef = reference.getValue();
|
|
212
|
-
const sortedReps = playableRepresentations.slice()
|
|
212
|
+
const sortedReps = playableRepresentations.slice()
|
|
213
|
+
.sort((ra, rb) => ra.bitrate - rb.bitrate);
|
|
213
214
|
if (sortedReps.length !== oldRef.representations.length) {
|
|
214
215
|
reference.setValue({ representations: sortedReps, switchingMode });
|
|
215
216
|
return;
|
|
@@ -132,7 +132,7 @@ describe("core - decrypt - global tests - server certificate", () => {
|
|
|
132
132
|
expect(mockSetServerCertificate).toHaveBeenCalledTimes(1);
|
|
133
133
|
expect(mockCreateSession).toHaveBeenCalledTimes(1);
|
|
134
134
|
done();
|
|
135
|
-
},
|
|
135
|
+
}, 100);
|
|
136
136
|
});
|
|
137
137
|
|
|
138
138
|
/* eslint-disable max-len */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DASH_WASM as FEATURE_DASH_WASM } from "../dash_wasm";
|
|
2
|
+
import { DEBUG_ELEMENT as FEATURE_DEBUG_ELEMENT } from "../debug_element";
|
|
3
|
+
import {
|
|
4
|
+
DASH_WASM,
|
|
5
|
+
DEBUG_ELEMENT,
|
|
6
|
+
METAPLAYLIST,
|
|
7
|
+
LOCAL_MANIFEST,
|
|
8
|
+
} from "../index";
|
|
9
|
+
import { LOCAL_MANIFEST as FEATURE_LOCAL_MANIFEST } from "../local";
|
|
10
|
+
import { METAPLAYLIST as FEATURE_METAPLAYLIST } from "../metaplaylist";
|
|
11
|
+
|
|
12
|
+
describe("Experimental Features", () => {
|
|
13
|
+
it("should export all experimental features", () => {
|
|
14
|
+
expect(DASH_WASM).toBe(FEATURE_DASH_WASM);
|
|
15
|
+
expect(DEBUG_ELEMENT).toBe(FEATURE_DEBUG_ELEMENT);
|
|
16
|
+
expect(METAPLAYLIST).toBe(FEATURE_METAPLAYLIST);
|
|
17
|
+
expect(LOCAL_MANIFEST).toBe(FEATURE_LOCAL_MANIFEST);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DASH as DASH_FEATURE } from "../dash";
|
|
2
|
+
import { DIRECTFILE as DIRECTFILE_FEATURE } from "../directfile";
|
|
3
|
+
import { EME as EME_FEATURE } from "../eme";
|
|
4
|
+
import { HTML_SAMI_PARSER as HTML_SAMI_PARSER_FEATURE } from "../html_sami_parser";
|
|
5
|
+
import { HTML_SRT_PARSER as HTML_SRT_PARSER_FEATURE } from "../html_srt_parser";
|
|
6
|
+
import { HTML_TEXT_BUFFER as HTML_TEXT_BUFFER_FEATURE } from "../html_text_buffer";
|
|
7
|
+
import { HTML_TTML_PARSER as HTML_TTML_PARSER_FEATURE } from "../html_ttml_parser";
|
|
8
|
+
import { HTML_VTT_PARSER as HTML_VTT_PARSER_FEATURE } from "../html_vtt_parser";
|
|
9
|
+
import {
|
|
10
|
+
DASH,
|
|
11
|
+
DIRECTFILE,
|
|
12
|
+
EME,
|
|
13
|
+
HTML_SAMI_PARSER,
|
|
14
|
+
HTML_SRT_PARSER,
|
|
15
|
+
HTML_TEXT_BUFFER,
|
|
16
|
+
HTML_TTML_PARSER,
|
|
17
|
+
HTML_VTT_PARSER,
|
|
18
|
+
NATIVE_SAMI_PARSER,
|
|
19
|
+
NATIVE_SRT_PARSER,
|
|
20
|
+
NATIVE_TEXT_BUFFER,
|
|
21
|
+
NATIVE_TTML_PARSER,
|
|
22
|
+
NATIVE_VTT_PARSER,
|
|
23
|
+
SMOOTH,
|
|
24
|
+
} from "../index";
|
|
25
|
+
import { NATIVE_SAMI_PARSER as NATIVE_SAMI_PARSER_FEATURE } from "../native_sami_parser";
|
|
26
|
+
import { NATIVE_SRT_PARSER as NATIVE_SRT_PARSER_FEATURE } from "../native_srt_parser";
|
|
27
|
+
import { NATIVE_TEXT_BUFFER as NATIVE_TEXT_BUFFER_FEATURE } from "../native_text_buffer";
|
|
28
|
+
import { NATIVE_TTML_PARSER as NATIVE_TTML_PARSER_FEATURE } from "../native_ttml_parser";
|
|
29
|
+
import { NATIVE_VTT_PARSER as NATIVE_VTT_PARSER_FEATURE } from "../native_vtt_parser";
|
|
30
|
+
import { SMOOTH as SMOOTH_FEATURE } from "../smooth";
|
|
31
|
+
|
|
32
|
+
describe("Features list", () => {
|
|
33
|
+
it("should export all stable features", () => {
|
|
34
|
+
expect(DASH).toBe(DASH_FEATURE);
|
|
35
|
+
expect(DIRECTFILE).toBe(DIRECTFILE_FEATURE);
|
|
36
|
+
expect(EME).toBe(EME_FEATURE);
|
|
37
|
+
expect(HTML_SAMI_PARSER).toBe(HTML_SAMI_PARSER_FEATURE);
|
|
38
|
+
expect(HTML_SRT_PARSER).toBe(HTML_SRT_PARSER_FEATURE);
|
|
39
|
+
expect(HTML_TEXT_BUFFER).toBe(HTML_TEXT_BUFFER_FEATURE);
|
|
40
|
+
expect(HTML_TTML_PARSER).toBe(HTML_TTML_PARSER_FEATURE);
|
|
41
|
+
expect(HTML_VTT_PARSER).toBe(HTML_VTT_PARSER_FEATURE);
|
|
42
|
+
expect(NATIVE_SAMI_PARSER).toBe(NATIVE_SAMI_PARSER_FEATURE);
|
|
43
|
+
expect(NATIVE_SRT_PARSER).toBe(NATIVE_SRT_PARSER_FEATURE);
|
|
44
|
+
expect(NATIVE_TEXT_BUFFER).toBe(NATIVE_TEXT_BUFFER_FEATURE);
|
|
45
|
+
expect(NATIVE_TTML_PARSER).toBe(NATIVE_TTML_PARSER_FEATURE);
|
|
46
|
+
expect(NATIVE_VTT_PARSER).toBe(NATIVE_VTT_PARSER_FEATURE);
|
|
47
|
+
expect(SMOOTH).toBe(SMOOTH_FEATURE);
|
|
48
|
+
});
|
|
49
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -21,11 +21,36 @@
|
|
|
21
21
|
|
|
22
22
|
import isDebugModeEnabled from "./compat/is_debug_mode_enabled";
|
|
23
23
|
import Player from "./core/api";
|
|
24
|
-
import
|
|
24
|
+
import {
|
|
25
|
+
DASH,
|
|
26
|
+
DIRECTFILE,
|
|
27
|
+
EME,
|
|
28
|
+
HTML_SAMI_PARSER,
|
|
29
|
+
HTML_SRT_PARSER,
|
|
30
|
+
HTML_TTML_PARSER,
|
|
31
|
+
HTML_VTT_PARSER,
|
|
32
|
+
NATIVE_SAMI_PARSER,
|
|
33
|
+
NATIVE_SRT_PARSER,
|
|
34
|
+
NATIVE_TTML_PARSER,
|
|
35
|
+
NATIVE_VTT_PARSER,
|
|
36
|
+
SMOOTH,
|
|
37
|
+
} from "./features/list";
|
|
25
38
|
import logger from "./log";
|
|
26
39
|
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
Player.addFeatures([
|
|
41
|
+
SMOOTH,
|
|
42
|
+
DASH,
|
|
43
|
+
DIRECTFILE,
|
|
44
|
+
EME,
|
|
45
|
+
NATIVE_TTML_PARSER,
|
|
46
|
+
NATIVE_SAMI_PARSER,
|
|
47
|
+
NATIVE_VTT_PARSER,
|
|
48
|
+
NATIVE_SRT_PARSER,
|
|
49
|
+
HTML_TTML_PARSER,
|
|
50
|
+
HTML_SAMI_PARSER,
|
|
51
|
+
HTML_VTT_PARSER,
|
|
52
|
+
HTML_SRT_PARSER,
|
|
53
|
+
]);
|
|
29
54
|
if (isDebugModeEnabled()) {
|
|
30
55
|
logger.setLevel("DEBUG");
|
|
31
56
|
} else if (__ENVIRONMENT__.CURRENT_ENV as number === __ENVIRONMENT__.DEV as number) {
|
|
@@ -86,10 +86,10 @@ function regularSegmentLoader(
|
|
|
86
86
|
*/
|
|
87
87
|
const generateSegmentLoader = ({
|
|
88
88
|
checkMediaSegmentIntegrity,
|
|
89
|
-
|
|
89
|
+
segmentLoader,
|
|
90
90
|
} : {
|
|
91
91
|
checkMediaSegmentIntegrity? : boolean | undefined;
|
|
92
|
-
|
|
92
|
+
segmentLoader? : ICustomSegmentLoader | undefined;
|
|
93
93
|
}) => (
|
|
94
94
|
url : string | null,
|
|
95
95
|
context : ISegmentContext,
|
|
@@ -154,7 +154,7 @@ const generateSegmentLoader = ({
|
|
|
154
154
|
return Promise.resolve({ resultType: "segment-created" as const,
|
|
155
155
|
resultData: null });
|
|
156
156
|
} else {
|
|
157
|
-
if (typeof
|
|
157
|
+
if (typeof segmentLoader !== "function") {
|
|
158
158
|
return regularSegmentLoader(url,
|
|
159
159
|
context,
|
|
160
160
|
callbacks,
|
|
@@ -266,7 +266,7 @@ const generateSegmentLoader = ({
|
|
|
266
266
|
byteRanges,
|
|
267
267
|
trackType: context.type,
|
|
268
268
|
url };
|
|
269
|
-
const abort =
|
|
269
|
+
const abort = segmentLoader(args, customCallbacks);
|
|
270
270
|
|
|
271
271
|
cancelSignal.register(abortCustomLoader);
|
|
272
272
|
|
package/src/typings/globals.d.ts
CHANGED
|
@@ -19,48 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
21
21
|
|
|
22
|
-
declare const __FEATURES__ : {
|
|
23
|
-
IS_DISABLED : 0;
|
|
24
|
-
IS_ENABLED : 1;
|
|
25
|
-
|
|
26
|
-
DASH : 0 | 1;
|
|
27
|
-
DIRECTFILE : 0 | 1;
|
|
28
|
-
EME : 0 | 1;
|
|
29
|
-
HTML_SAMI : 0 | 1;
|
|
30
|
-
HTML_SRT : 0 | 1;
|
|
31
|
-
HTML_TTML : 0 | 1;
|
|
32
|
-
HTML_VTT : 0 | 1;
|
|
33
|
-
LOCAL_MANIFEST : 0 | 1;
|
|
34
|
-
METAPLAYLIST : 0 | 1;
|
|
35
|
-
DEBUG_ELEMENT : 0 | 1;
|
|
36
|
-
NATIVE_SAMI : 0 | 1;
|
|
37
|
-
NATIVE_SRT : 0 | 1;
|
|
38
|
-
NATIVE_TTML : 0 | 1;
|
|
39
|
-
NATIVE_VTT : 0 | 1;
|
|
40
|
-
SMOOTH : 0 | 1;
|
|
41
|
-
} | typeof FEATURES_ENUM;
|
|
42
|
-
|
|
43
|
-
declare const enum FEATURES_ENUM {
|
|
44
|
-
IS_DISABLED,
|
|
45
|
-
IS_ENABLED,
|
|
46
|
-
|
|
47
|
-
DASH,
|
|
48
|
-
DIRECTFILE,
|
|
49
|
-
EME,
|
|
50
|
-
HTML_SAMI,
|
|
51
|
-
HTML_SRT,
|
|
52
|
-
HTML_TTML,
|
|
53
|
-
HTML_VTT,
|
|
54
|
-
LOCAL_MANIFEST,
|
|
55
|
-
METAPLAYLIST,
|
|
56
|
-
DEBUG_ELEMENT,
|
|
57
|
-
NATIVE_SAMI,
|
|
58
|
-
NATIVE_SRT,
|
|
59
|
-
NATIVE_TTML,
|
|
60
|
-
NATIVE_VTT,
|
|
61
|
-
SMOOTH,
|
|
62
|
-
}
|
|
63
|
-
|
|
64
22
|
declare const __ENVIRONMENT__ : {
|
|
65
23
|
CURRENT_ENV : 0 | 1;
|
|
66
24
|
DEV : 0;
|