rx-player 3.33.0 → 3.33.1
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 +13 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/public_api.js +2 -2
- package/dist/_esm5.processed/manifest/manifest.js +1 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -1
- package/dist/rx-player.js +24 -9
- package/dist/rx-player.min.d.ts +1 -1
- package/dist/rx-player.min.js +1 -1
- package/package.json +6 -6
- package/.editorconfig +0 -22
- package/.eslintrc.js +0 -406
- package/.github/workflows/checks.yml +0 -101
- package/.github/workflows/perfs.yml +0 -22
- package/.github/workflows/sonarcloud_analysis.yml +0 -20
- package/CONTRIBUTING.md +0 -272
- package/FILES.md +0 -283
- package/jest.config.js +0 -73
- package/manifest.mpd +0 -149
- package/scripts/README.md +0 -11
- package/scripts/build/constants.d.ts +0 -53
- package/scripts/build/generate_build.js +0 -190
- package/scripts/build/templates/experimental/features/index.d.ts +0 -16
- package/scripts/build/templates/experimental/features/index.js +0 -16
- package/scripts/build/templates/experimental/index.d.ts +0 -16
- package/scripts/build/templates/experimental/index.js +0 -16
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
- package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
- package/scripts/build/templates/experimental/tools/index.js +0 -16
- package/scripts/build/templates/features/index.d.ts +0 -16
- package/scripts/build/templates/features/index.js +0 -16
- package/scripts/build/templates/logger/index.d.ts +0 -17
- package/scripts/build/templates/logger/index.js +0 -17
- package/scripts/build/templates/minimal/index.d.ts +0 -17
- package/scripts/build/templates/minimal/index.js +0 -17
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
- package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
- package/scripts/build/templates/tools/index.d.ts +0 -16
- package/scripts/build/templates/tools/index.js +0 -16
- package/scripts/build/templates/tools/string-utils.d.ts +0 -18
- package/scripts/build/templates/tools/string-utils.js +0 -18
- package/scripts/build/templates/types/index.d.ts +0 -16
- package/scripts/build/templates/types/index.js +0 -15
- package/scripts/canal-release.patch +0 -316
- package/scripts/check_nodejs_import_compatibility.js +0 -60
- package/scripts/deploy_new_demo +0 -123
- package/scripts/fast_demo_build.js +0 -129
- package/scripts/generate_certificate +0 -19
- package/scripts/generate_demo_list.js +0 -105
- package/scripts/generate_documentation_list.js +0 -109
- package/scripts/generate_full_demo.js +0 -201
- package/scripts/generate_standalone_demo.js +0 -82
- package/scripts/launch_static_server.js +0 -163
- package/scripts/list-npm-scripts.js +0 -207
- package/scripts/make-dev-releases +0 -90
- package/scripts/report_build_sizes +0 -96
- package/scripts/run_standalone_demo.js +0 -27
- package/scripts/start_demo_web_server.js +0 -44
- package/scripts/update-version +0 -48
- package/scripts/update_gh-pages_demo +0 -132
- package/scripts/update_gh-pages_doc +0 -106
- package/scripts/utils/display_webpack_errors.js +0 -33
- package/scripts/utils/get_human_readable_hours.js +0 -14
- package/scripts/wasm-strip.js +0 -359
- package/sonar-project.properties +0 -7
- package/src/README.md +0 -136
- package/src/compat/README.md +0 -29
- package/src/compat/__tests__/add_text_track.test.ts +0 -176
- package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
- package/src/compat/__tests__/browser_version.test.ts +0 -84
- package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
- package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
- package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
- package/src/compat/__tests__/clear_element_src.test.ts +0 -252
- package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
- package/src/compat/__tests__/fullscreen.test.ts +0 -286
- package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
- package/src/compat/__tests__/is_offline.test.ts +0 -65
- package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
- package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
- package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
- package/src/compat/__tests__/remove_cue.test.ts +0 -229
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
- package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
- package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
- package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
- package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
- package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
- package/src/compat/add_class_name.ts +0 -41
- package/src/compat/add_text_track.ts +0 -58
- package/src/compat/browser_compatibility_types.ts +0 -222
- package/src/compat/browser_detection.ts +0 -172
- package/src/compat/browser_version.ts +0 -44
- package/src/compat/can_patch_isobmff.ts +0 -30
- package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
- package/src/compat/can_reuse_media_keys.ts +0 -20
- package/src/compat/change_source_buffer_type.ts +0 -66
- package/src/compat/clear_element_src.ts +0 -55
- package/src/compat/eme/close_session.ts +0 -111
- package/src/compat/eme/constants.ts +0 -21
- package/src/compat/eme/custom_key_system_access.ts +0 -67
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
- package/src/compat/eme/custom_media_keys/index.ts +0 -28
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
- package/src/compat/eme/custom_media_keys/types.ts +0 -67
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
- package/src/compat/eme/eme-api-implementation.ts +0 -318
- package/src/compat/eme/generate_key_request.ts +0 -162
- package/src/compat/eme/get_init_data.ts +0 -159
- package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
- package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
- package/src/compat/eme/index.ts +0 -47
- package/src/compat/eme/load_session.ts +0 -67
- package/src/compat/enable_audio_track.ts +0 -33
- package/src/compat/event_listeners.ts +0 -566
- package/src/compat/fullscreen.ts +0 -87
- package/src/compat/get_start_date.ts +0 -48
- package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
- package/src/compat/index.ts +0 -87
- package/src/compat/is_codec_supported.ts +0 -40
- package/src/compat/is_debug_mode_enabled.ts +0 -12
- package/src/compat/is_node.ts +0 -18
- package/src/compat/is_offline.ts +0 -44
- package/src/compat/is_seeking_approximate.ts +0 -32
- package/src/compat/is_vtt_cue.ts +0 -30
- package/src/compat/make_vtt_cue.ts +0 -51
- package/src/compat/on_height_width_change.ts +0 -119
- package/src/compat/patch_webkit_source_buffer.ts +0 -89
- package/src/compat/remove_cue.ts +0 -64
- package/src/compat/should_favour_custom_safari_EME.ts +0 -34
- package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
- package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
- package/src/compat/should_renew_media_key_system_access.ts +0 -26
- package/src/compat/should_unset_media_keys.ts +0 -27
- package/src/compat/should_validate_metadata.ts +0 -27
- package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
- package/src/compat/should_wait_for_have_enough_data.ts +0 -17
- package/src/config.ts +0 -32
- package/src/core/README.md +0 -56
- package/src/core/adaptive/README.md +0 -147
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
- package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
- package/src/core/adaptive/buffer_based_chooser.ts +0 -264
- package/src/core/adaptive/guess_based_chooser.ts +0 -309
- package/src/core/adaptive/index.ts +0 -45
- package/src/core/adaptive/network_analyzer.ts +0 -419
- package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
- package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
- package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
- package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
- package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
- package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
- package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
- package/src/core/adaptive/utils/ewma.ts +0 -59
- package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
- package/src/core/adaptive/utils/filter_by_width.ts +0 -49
- package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
- package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
- package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
- package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
- package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
- package/src/core/api/README.md +0 -36
- package/src/core/api/__tests__/option_utils.test.ts +0 -1668
- package/src/core/api/__tests__/public_api.test.ts +0 -857
- package/src/core/api/__tests__/utils.test.ts +0 -195
- package/src/core/api/debug/buffer_graph.ts +0 -244
- package/src/core/api/debug/buffer_size_graph.ts +0 -130
- package/src/core/api/debug/constants.ts +0 -2
- package/src/core/api/debug/index.ts +0 -3
- package/src/core/api/debug/modules/general_info.ts +0 -213
- package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
- package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
- package/src/core/api/debug/render.ts +0 -40
- package/src/core/api/debug/utils.ts +0 -103
- package/src/core/api/index.ts +0 -27
- package/src/core/api/option_utils.ts +0 -700
- package/src/core/api/playback_observer.ts +0 -994
- package/src/core/api/public_api.ts +0 -3247
- package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
- package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
- package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
- package/src/core/api/utils.ts +0 -216
- package/src/core/decrypt/README.md +0 -22
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
- package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
- package/src/core/decrypt/attach_media_keys.ts +0 -121
- package/src/core/decrypt/clear_on_stop.ts +0 -47
- package/src/core/decrypt/content_decryptor.ts +0 -1246
- package/src/core/decrypt/create_or_load_session.ts +0 -133
- package/src/core/decrypt/create_session.ts +0 -214
- package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
- package/src/core/decrypt/find_key_system.ts +0 -376
- package/src/core/decrypt/get_key_system_configuration.ts +0 -51
- package/src/core/decrypt/get_media_keys.ts +0 -147
- package/src/core/decrypt/index.ts +0 -36
- package/src/core/decrypt/init_media_keys.ts +0 -60
- package/src/core/decrypt/session_events_listener.ts +0 -386
- package/src/core/decrypt/set_server_certificate.ts +0 -105
- package/src/core/decrypt/types.ts +0 -404
- package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
- package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
- package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
- package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
- package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
- package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
- package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
- package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
- package/src/core/decrypt/utils/is_session_usable.ts +0 -62
- package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
- package/src/core/decrypt/utils/key_session_record.ts +0 -174
- package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
- package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
- package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
- package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
- package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
- package/src/core/fetchers/README.md +0 -84
- package/src/core/fetchers/cdn_prioritizer.ts +0 -207
- package/src/core/fetchers/index.ts +0 -38
- package/src/core/fetchers/manifest/index.ts +0 -28
- package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
- package/src/core/fetchers/segment/index.ts +0 -28
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
- package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
- package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
- package/src/core/fetchers/utils/error_selector.ts +0 -38
- package/src/core/fetchers/utils/schedule_request.ts +0 -493
- package/src/core/init/README.md +0 -81
- package/src/core/init/directfile_content_initializer.ts +0 -310
- package/src/core/init/index.ts +0 -22
- package/src/core/init/media_source_content_initializer.ts +0 -878
- package/src/core/init/types.ts +0 -266
- package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
- package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
- package/src/core/init/utils/create_media_source.ts +0 -139
- package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
- package/src/core/init/utils/end_of_stream.ts +0 -108
- package/src/core/init/utils/get_initial_time.ts +0 -165
- package/src/core/init/utils/get_loaded_reference.ts +0 -82
- package/src/core/init/utils/initial_seek_and_play.ts +0 -237
- package/src/core/init/utils/initialize_content_decryption.ts +0 -172
- package/src/core/init/utils/media_source_duration_updater.ts +0 -349
- package/src/core/init/utils/rebuffering_controller.ts +0 -642
- package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
- package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
- package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
- package/src/core/init/utils/throw_on_media_error.ts +0 -74
- package/src/core/segment_buffers/README.md +0 -219
- package/src/core/segment_buffers/garbage_collector.ts +0 -177
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
- package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
- package/src/core/segment_buffers/implementations/image/index.ts +0 -18
- package/src/core/segment_buffers/implementations/index.ts +0 -20
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
- package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
- package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
- package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
- package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
- package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
- package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
- package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
- package/src/core/segment_buffers/implementations/types.ts +0 -386
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
- package/src/core/segment_buffers/index.ts +0 -67
- package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
- package/src/core/segment_buffers/inventory/index.ts +0 -30
- package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
- package/src/core/segment_buffers/inventory/types.ts +0 -35
- package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
- package/src/core/stream/README.md +0 -59
- package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
- package/src/core/stream/adaptation/index.ts +0 -20
- package/src/core/stream/adaptation/types.ts +0 -199
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/index.ts +0 -38
- package/src/core/stream/orchestrator/README.md +0 -349
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
- package/src/core/stream/orchestrator/index.ts +0 -30
- package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
- package/src/core/stream/period/index.ts +0 -20
- package/src/core/stream/period/period_stream.ts +0 -469
- package/src/core/stream/period/types.ts +0 -132
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
- package/src/core/stream/representation/README.md +0 -16
- package/src/core/stream/representation/index.ts +0 -20
- package/src/core/stream/representation/representation_stream.ts +0 -474
- package/src/core/stream/representation/types.ts +0 -292
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
- package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
- package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
- package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
- package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
- package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
- package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
- package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
- package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
- package/src/default_config.ts +0 -1293
- package/src/errors/README.md +0 -6
- package/src/errors/__tests__/assertion_error.test.ts +0 -26
- package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
- package/src/errors/__tests__/error_message.test.ts +0 -23
- package/src/errors/__tests__/format_error.test.ts +0 -62
- package/src/errors/__tests__/is_known_error.test.ts +0 -65
- package/src/errors/__tests__/media_error.test.ts +0 -55
- package/src/errors/__tests__/network_error.test.ts +0 -84
- package/src/errors/__tests__/other_error.test.ts +0 -53
- package/src/errors/__tests__/request_error.test.ts +0 -45
- package/src/errors/assertion_error.ts +0 -40
- package/src/errors/custom_loader_error.ts +0 -57
- package/src/errors/encrypted_media_error.ts +0 -71
- package/src/errors/error_codes.ts +0 -149
- package/src/errors/error_message.ts +0 -30
- package/src/errors/format_error.ts +0 -39
- package/src/errors/index.ts +0 -52
- package/src/errors/is_known_error.ts +0 -35
- package/src/errors/media_error.ts +0 -118
- package/src/errors/network_error.ts +0 -74
- package/src/errors/other_error.ts +0 -50
- package/src/errors/request_error.ts +0 -76
- package/src/experimental/README.md +0 -16
- package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
- package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
- package/src/experimental/features/__tests__/index.test.ts +0 -19
- package/src/experimental/features/__tests__/local.test.ts +0 -35
- package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
- package/src/experimental/features/dash_wasm.ts +0 -41
- package/src/experimental/features/debug_element.ts +0 -13
- package/src/experimental/features/index.ts +0 -20
- package/src/experimental/features/local.ts +0 -28
- package/src/experimental/features/metaplaylist.ts +0 -28
- package/src/experimental/index.ts +0 -5
- package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
- package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
- package/src/experimental/tools/index.ts +0 -27
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
- package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
- package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
- package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
- package/src/features/README.md +0 -11
- package/src/features/__tests__/add_features.test.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -674
- package/src/features/add_features.ts +0 -37
- package/src/features/features_object.ts +0 -37
- package/src/features/index.ts +0 -40
- package/src/features/initialize_features.ts +0 -136
- package/src/features/list/__tests__/bif_parser.test.ts +0 -30
- package/src/features/list/__tests__/dash.test.ts +0 -41
- package/src/features/list/__tests__/directfile.test.ts +0 -35
- package/src/features/list/__tests__/eme.test.ts +0 -28
- package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/image_buffer.test.ts +0 -28
- package/src/features/list/__tests__/index.test.ts +0 -55
- package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/smooth.test.ts +0 -36
- package/src/features/list/bif_parser.ts +0 -31
- package/src/features/list/dash.ts +0 -36
- package/src/features/list/directfile.ts +0 -35
- package/src/features/list/eme.ts +0 -29
- package/src/features/list/html_sami_parser.ts +0 -31
- package/src/features/list/html_srt_parser.ts +0 -31
- package/src/features/list/html_text_buffer.ts +0 -29
- package/src/features/list/html_ttml_parser.ts +0 -31
- package/src/features/list/html_vtt_parser.ts +0 -31
- package/src/features/list/image_buffer.ts +0 -29
- package/src/features/list/index.ts +0 -32
- package/src/features/list/native_sami_parser.ts +0 -32
- package/src/features/list/native_srt_parser.ts +0 -32
- package/src/features/list/native_text_buffer.ts +0 -30
- package/src/features/list/native_ttml_parser.ts +0 -32
- package/src/features/list/native_vtt_parser.ts +0 -32
- package/src/features/list/smooth.ts +0 -32
- package/src/features/types.ts +0 -183
- package/src/index.ts +0 -38
- package/src/log.ts +0 -22
- package/src/manifest/README.md +0 -55
- package/src/manifest/__tests__/adaptation.test.ts +0 -485
- package/src/manifest/__tests__/manifest.test.ts +0 -428
- package/src/manifest/__tests__/period.test.ts +0 -769
- package/src/manifest/__tests__/representation.test.ts +0 -297
- package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
- package/src/manifest/__tests__/update_periods.test.ts +0 -845
- package/src/manifest/adaptation.ts +0 -294
- package/src/manifest/index.ts +0 -67
- package/src/manifest/manifest.ts +0 -811
- package/src/manifest/period.ts +0 -211
- package/src/manifest/representation.ts +0 -451
- package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
- package/src/manifest/representation_index/index.ts +0 -31
- package/src/manifest/representation_index/static.ts +0 -158
- package/src/manifest/representation_index/types.ts +0 -433
- package/src/manifest/types.ts +0 -33
- package/src/manifest/update_period_in_place.ts +0 -142
- package/src/manifest/update_periods.ts +0 -201
- package/src/manifest/utils.ts +0 -60
- package/src/minimal.ts +0 -34
- package/src/parsers/README.md +0 -12
- package/src/parsers/containers/isobmff/constants.ts +0 -24
- package/src/parsers/containers/isobmff/create_box.ts +0 -81
- package/src/parsers/containers/isobmff/drm/index.ts +0 -17
- package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
- package/src/parsers/containers/isobmff/get_box.ts +0 -278
- package/src/parsers/containers/isobmff/index.ts +0 -51
- package/src/parsers/containers/isobmff/read.ts +0 -105
- package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
- package/src/parsers/containers/isobmff/utils.ts +0 -555
- package/src/parsers/containers/matroska/index.ts +0 -21
- package/src/parsers/containers/matroska/utils.ts +0 -313
- package/src/parsers/images/bif.ts +0 -128
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
- package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
- package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
- package/src/parsers/manifest/dash/common/index.ts +0 -40
- package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
- package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
- package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
- package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
- package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
- package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
- package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
- package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
- package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
- package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
- package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
- package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
- package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
- package/src/parsers/manifest/dash/index.ts +0 -22
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
- package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
- package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
- package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
- package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
- package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
- package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
- package/src/parsers/manifest/dash/parsers_types.ts +0 -91
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
- package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
- package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
- package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
- package/src/parsers/manifest/index.ts +0 -17
- package/src/parsers/manifest/local/index.ts +0 -25
- package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
- package/src/parsers/manifest/local/representation_index.ts +0 -246
- package/src/parsers/manifest/local/types.ts +0 -291
- package/src/parsers/manifest/metaplaylist/index.ts +0 -28
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
- package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
- package/src/parsers/manifest/smooth/create_parser.ts +0 -699
- package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
- package/src/parsers/manifest/smooth/index.ts +0 -26
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
- package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
- package/src/parsers/manifest/smooth/representation_index.ts +0 -704
- package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
- package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
- package/src/parsers/manifest/types.ts +0 -395
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
- package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
- package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
- package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
- package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
- package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
- package/src/parsers/manifest/utils/index_helpers.ts +0 -204
- package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
- package/src/parsers/texttracks/index.ts +0 -21
- package/src/parsers/texttracks/sami/html.ts +0 -219
- package/src/parsers/texttracks/sami/native.ts +0 -192
- package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
- package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
- package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
- package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
- package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
- package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
- package/src/parsers/texttracks/srt/html.ts +0 -182
- package/src/parsers/texttracks/srt/native.ts +0 -74
- package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
- package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
- package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
- package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
- package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
- package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
- package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
- package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
- package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
- package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
- package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
- package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
- package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
- package/src/parsers/texttracks/ttml/html/index.ts +0 -23
- package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
- package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
- package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
- package/src/parsers/texttracks/ttml/native/index.ts +0 -23
- package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
- package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
- package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
- package/src/parsers/texttracks/ttml/regexps.ts +0 -65
- package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
- package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
- package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
- package/src/parsers/texttracks/types.ts +0 -34
- package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
- package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
- package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
- package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
- package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
- package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
- package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
- package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
- package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
- package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
- package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
- package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
- package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
- package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
- package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
- package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
- package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
- package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
- package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
- package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
- package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
- package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
- package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
- package/src/parsers/texttracks/webvtt/utils.ts +0 -135
- package/src/public_types.ts +0 -846
- package/src/tools/README.md +0 -4
- package/src/tools/TextTrackRenderer/index.ts +0 -28
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
- package/src/tools/index.ts +0 -20
- package/src/tools/string_utils.ts +0 -24
- package/src/transports/README.md +0 -276
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
- package/src/transports/dash/construct_segment_url.ts +0 -28
- package/src/transports/dash/extract_complete_chunks.ts +0 -66
- package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
- package/src/transports/dash/image_pipelines.ts +0 -122
- package/src/transports/dash/index.ts +0 -23
- package/src/transports/dash/init_segment_loader.ts +0 -114
- package/src/transports/dash/low_latency_segment_loader.ts +0 -87
- package/src/transports/dash/manifest_parser.ts +0 -325
- package/src/transports/dash/pipelines.ts +0 -72
- package/src/transports/dash/segment_loader.ts +0 -249
- package/src/transports/dash/segment_parser.ts +0 -194
- package/src/transports/dash/text_loader.ts +0 -120
- package/src/transports/dash/text_parser.ts +0 -234
- package/src/transports/index.ts +0 -17
- package/src/transports/local/index.ts +0 -18
- package/src/transports/local/pipelines.ts +0 -100
- package/src/transports/local/segment_loader.ts +0 -198
- package/src/transports/local/segment_parser.ts +0 -101
- package/src/transports/local/text_parser.ts +0 -185
- package/src/transports/metaplaylist/README.md +0 -94
- package/src/transports/metaplaylist/index.ts +0 -23
- package/src/transports/metaplaylist/manifest_loader.ts +0 -62
- package/src/transports/metaplaylist/pipelines.ts +0 -425
- package/src/transports/smooth/extract_timings_infos.ts +0 -142
- package/src/transports/smooth/index.ts +0 -23
- package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
- package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
- package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
- package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
- package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
- package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
- package/src/transports/smooth/isobmff/index.ts +0 -32
- package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
- package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
- package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
- package/src/transports/smooth/pipelines.ts +0 -533
- package/src/transports/smooth/segment_loader.ts +0 -288
- package/src/transports/smooth/utils.ts +0 -106
- package/src/transports/types.ts +0 -809
- package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
- package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
- package/src/transports/utils/byte_range.ts +0 -25
- package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
- package/src/transports/utils/check_isobmff_integrity.ts +0 -50
- package/src/transports/utils/find_complete_box.ts +0 -63
- package/src/transports/utils/generate_manifest_loader.ts +0 -97
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
- package/src/transports/utils/infer_segment_container.ts +0 -56
- package/src/transports/utils/parse_text_track.ts +0 -176
- package/src/typings/README.md +0 -7
- package/src/typings/globals.d.ts +0 -83
- package/src/typings/next-tick.d.ts +0 -23
- package/src/utils/README.md +0 -5
- package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
- package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
- package/src/utils/__tests__/array_find.test.ts +0 -113
- package/src/utils/__tests__/array_find_index.test.ts +0 -113
- package/src/utils/__tests__/array_includes.test.ts +0 -151
- package/src/utils/__tests__/assert.test.ts +0 -237
- package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
- package/src/utils/__tests__/base64.test.ts +0 -147
- package/src/utils/__tests__/byte_parsing.test.ts +0 -267
- package/src/utils/__tests__/deep_merge.test.ts +0 -48
- package/src/utils/__tests__/event_emitter.test.ts +0 -579
- package/src/utils/__tests__/flat_map.test.ts +0 -71
- package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
- package/src/utils/__tests__/hash_buffer.test.ts +0 -105
- package/src/utils/__tests__/id_generator.test.ts +0 -80
- package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
- package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
- package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
- package/src/utils/__tests__/list_to_map.test.ts +0 -46
- package/src/utils/__tests__/logger.test.ts +0 -214
- package/src/utils/__tests__/noop.test.ts +0 -23
- package/src/utils/__tests__/object_assign.test.ts +0 -56
- package/src/utils/__tests__/object_values.test.ts +0 -26
- package/src/utils/__tests__/ranges.test.ts +0 -907
- package/src/utils/__tests__/resolve_url.test.ts +0 -100
- package/src/utils/__tests__/simple_set.test.ts +0 -57
- package/src/utils/__tests__/sorted_list.test.ts +0 -335
- package/src/utils/__tests__/starts_with.test.ts +0 -65
- package/src/utils/__tests__/string_parsing.test.ts +0 -267
- package/src/utils/__tests__/uniq.test.ts +0 -134
- package/src/utils/__tests__/warn_once.test.ts +0 -38
- package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
- package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
- package/src/utils/are_codecs_compatible.ts +0 -51
- package/src/utils/array_find.ts +0 -55
- package/src/utils/array_find_index.ts +0 -54
- package/src/utils/array_includes.ts +0 -93
- package/src/utils/assert.ts +0 -65
- package/src/utils/assert_unreachable.ts +0 -45
- package/src/utils/base64.ts +0 -153
- package/src/utils/byte_parsing.ts +0 -256
- package/src/utils/cancellable_sleep.ts +0 -41
- package/src/utils/create_cancellable_promise.ts +0 -69
- package/src/utils/deep_merge.ts +0 -49
- package/src/utils/event_emitter.ts +0 -147
- package/src/utils/flat_map.ts +0 -50
- package/src/utils/get_fuzzed_delay.ts +0 -27
- package/src/utils/hash_buffer.ts +0 -42
- package/src/utils/id_generator.ts +0 -35
- package/src/utils/initialization_segment_cache.ts +0 -68
- package/src/utils/is_non_empty_string.ts +0 -23
- package/src/utils/is_null_or_undefined.ts +0 -27
- package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
- package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
- package/src/utils/languages/__tests__/normalize.test.ts +0 -290
- package/src/utils/languages/index.ts +0 -29
- package/src/utils/languages/normalize.ts +0 -152
- package/src/utils/list_to_map.ts +0 -32
- package/src/utils/logger.ts +0 -100
- package/src/utils/noop.ts +0 -26
- package/src/utils/object_assign.ts +0 -60
- package/src/utils/object_values.ts +0 -31
- package/src/utils/ranges.ts +0 -499
- package/src/utils/reference.ts +0 -390
- package/src/utils/request/fetch.ts +0 -250
- package/src/utils/request/index.ts +0 -38
- package/src/utils/request/xhr.ts +0 -287
- package/src/utils/resolve_url.ts +0 -126
- package/src/utils/retry_promise_with_backoff.ts +0 -95
- package/src/utils/simple_set.ts +0 -67
- package/src/utils/sleep.ts +0 -14
- package/src/utils/slice_uint8array.ts +0 -53
- package/src/utils/sorted_list.ts +0 -240
- package/src/utils/starts_with.ts +0 -42
- package/src/utils/string_parsing.ts +0 -414
- package/src/utils/task_canceller.ts +0 -367
- package/src/utils/uniq.ts +0 -49
- package/src/utils/warn_once.ts +0 -34
- package/src/utils/weak_map_memory.ts +0 -89
- package/src/utils/wrapInPromise.ts +0 -24
- package/tsconfig.json +0 -28
- package/tsconfig.modules.json +0 -36
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import config from "../../../config";
|
|
18
|
-
import {
|
|
19
|
-
ISegmentPipeline,
|
|
20
|
-
ITransportPipelines,
|
|
21
|
-
} from "../../../transports";
|
|
22
|
-
import { CancellationSignal } from "../../../utils/task_canceller";
|
|
23
|
-
import { IBufferType } from "../../segment_buffers";
|
|
24
|
-
import CdnPrioritizer from "../cdn_prioritizer";
|
|
25
|
-
import applyPrioritizerToSegmentFetcher, {
|
|
26
|
-
IPrioritizedSegmentFetcher,
|
|
27
|
-
} from "./prioritized_segment_fetcher";
|
|
28
|
-
import createSegmentFetcher, {
|
|
29
|
-
getSegmentFetcherOptions,
|
|
30
|
-
ISegmentFetcherLifecycleCallbacks,
|
|
31
|
-
} from "./segment_fetcher";
|
|
32
|
-
import TaskPrioritizer from "./task_prioritizer";
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Interact with the transport pipelines to download segments with the right
|
|
37
|
-
* priority.
|
|
38
|
-
*
|
|
39
|
-
* @class SegmentFetcherCreator
|
|
40
|
-
*/
|
|
41
|
-
export default class SegmentFetcherCreator {
|
|
42
|
-
/**
|
|
43
|
-
* Transport pipelines of the currently choosen streaming protocol (e.g. DASH,
|
|
44
|
-
* Smooth etc.).
|
|
45
|
-
*/
|
|
46
|
-
private readonly _transport : ITransportPipelines;
|
|
47
|
-
/**
|
|
48
|
-
* `TaskPrioritizer` linked to this SegmentFetcherCreator.
|
|
49
|
-
*
|
|
50
|
-
* Note: this is typed as `any` because segment loaders / parsers can use
|
|
51
|
-
* different types depending on the type of buffer. We could maybe be smarter
|
|
52
|
-
* about it, but typing as any just in select places, like here, looks like
|
|
53
|
-
* a good compromise.
|
|
54
|
-
*/
|
|
55
|
-
private readonly _prioritizer : TaskPrioritizer<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Options used by the SegmentFetcherCreator, e.g. to allow configuration on
|
|
58
|
-
* segment retries (number of retries maximum, default delay and so on).
|
|
59
|
-
*/
|
|
60
|
-
private readonly _backoffOptions : ISegmentFetcherCreatorBackoffOptions;
|
|
61
|
-
|
|
62
|
-
private readonly _cdnPrioritizer : CdnPrioritizer;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* @param {Object} transport
|
|
66
|
-
*/
|
|
67
|
-
constructor(
|
|
68
|
-
transport : ITransportPipelines,
|
|
69
|
-
options : ISegmentFetcherCreatorBackoffOptions,
|
|
70
|
-
cancelSignal : CancellationSignal
|
|
71
|
-
) {
|
|
72
|
-
const cdnPrioritizer = new CdnPrioritizer(cancelSignal);
|
|
73
|
-
|
|
74
|
-
const { MIN_CANCELABLE_PRIORITY,
|
|
75
|
-
MAX_HIGH_PRIORITY_LEVEL } = config.getCurrent();
|
|
76
|
-
this._transport = transport;
|
|
77
|
-
this._prioritizer = new TaskPrioritizer({
|
|
78
|
-
prioritySteps: { high: MAX_HIGH_PRIORITY_LEVEL,
|
|
79
|
-
low: MIN_CANCELABLE_PRIORITY },
|
|
80
|
-
});
|
|
81
|
-
this._cdnPrioritizer = cdnPrioritizer;
|
|
82
|
-
this._backoffOptions = options;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Create a segment fetcher, allowing to easily perform segment requests.
|
|
87
|
-
* @param {string} bufferType - The type of buffer concerned (e.g. "audio",
|
|
88
|
-
* "video", etc.)
|
|
89
|
-
* @param {Object} callbacks
|
|
90
|
-
* @returns {Object}
|
|
91
|
-
*/
|
|
92
|
-
createSegmentFetcher(
|
|
93
|
-
bufferType : IBufferType,
|
|
94
|
-
callbacks : ISegmentFetcherLifecycleCallbacks
|
|
95
|
-
) : IPrioritizedSegmentFetcher<unknown> {
|
|
96
|
-
const backoffOptions = getSegmentFetcherOptions(bufferType, this._backoffOptions);
|
|
97
|
-
const pipelines = this._transport[bufferType];
|
|
98
|
-
|
|
99
|
-
// Types are very complicated here as they are per-type of buffer.
|
|
100
|
-
const segmentFetcher = createSegmentFetcher<unknown, unknown>(
|
|
101
|
-
bufferType,
|
|
102
|
-
pipelines as ISegmentPipeline<unknown, unknown>,
|
|
103
|
-
this._cdnPrioritizer,
|
|
104
|
-
callbacks,
|
|
105
|
-
backoffOptions
|
|
106
|
-
);
|
|
107
|
-
return applyPrioritizerToSegmentFetcher(this._prioritizer, segmentFetcher);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/** Options used by the `SegmentFetcherCreator`. */
|
|
112
|
-
export interface ISegmentFetcherCreatorBackoffOptions {
|
|
113
|
-
/**
|
|
114
|
-
* Whether the content is played in a low-latency mode.
|
|
115
|
-
* This has an impact on default backoff delays.
|
|
116
|
-
*/
|
|
117
|
-
lowLatencyMode : boolean;
|
|
118
|
-
/** Maximum number of time a request on error will be retried. */
|
|
119
|
-
maxRetryRegular : number | undefined;
|
|
120
|
-
/** Maximum number of time a request be retried when the user is offline. */
|
|
121
|
-
maxRetryOffline : number | undefined;
|
|
122
|
-
/**
|
|
123
|
-
* Timeout after which request are aborted and, depending on other options,
|
|
124
|
-
* retried.
|
|
125
|
-
* To set to `-1` for no timeout.
|
|
126
|
-
* `undefined` will lead to a default, large, timeout being used.
|
|
127
|
-
*/
|
|
128
|
-
requestTimeout : number | undefined;
|
|
129
|
-
}
|
|
@@ -1,455 +0,0 @@
|
|
|
1
|
-
import log from "../../../log";
|
|
2
|
-
import arrayFindIndex from "../../../utils/array_find_index";
|
|
3
|
-
import createCancellablePromise from "../../../utils/create_cancellable_promise";
|
|
4
|
-
import TaskCanceller, {
|
|
5
|
-
CancellationError,
|
|
6
|
-
CancellationSignal,
|
|
7
|
-
} from "../../../utils/task_canceller";
|
|
8
|
-
|
|
9
|
-
export default class TaskPrioritizer<T> {
|
|
10
|
-
/**
|
|
11
|
-
* Priority of the most prioritary task currently running.
|
|
12
|
-
* `null` if no task is currently running.
|
|
13
|
-
*/
|
|
14
|
-
private _minPendingPriority : number | null;
|
|
15
|
-
/** Queue of tasks currently waiting for more prioritary ones to finish. */
|
|
16
|
-
private _waitingQueue: Array<IPrioritizerTask<T>>;
|
|
17
|
-
/** Tasks currently pending. */
|
|
18
|
-
private _pendingTasks: Array<IPrioritizerTask<T>>;
|
|
19
|
-
/** @see IPrioritizerPrioritySteps */
|
|
20
|
-
private _prioritySteps: IPrioritizerPrioritySteps;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @param {Options} prioritizerOptions
|
|
24
|
-
*/
|
|
25
|
-
constructor({ prioritySteps }: IPrioritizerOptions) {
|
|
26
|
-
this._minPendingPriority = null;
|
|
27
|
-
this._waitingQueue = [];
|
|
28
|
-
this._pendingTasks = [];
|
|
29
|
-
this._prioritySteps = prioritySteps;
|
|
30
|
-
|
|
31
|
-
if (this._prioritySteps.high >= this._prioritySteps.low) {
|
|
32
|
-
throw new Error(
|
|
33
|
-
"TP: the max high level priority should be given a lower" +
|
|
34
|
-
"priority number than the min low priority."
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Create a priorized Promise from a base task.
|
|
41
|
-
*
|
|
42
|
-
* This task will immediately have its priority compared to all the
|
|
43
|
-
* already-running ones created from this class.
|
|
44
|
-
*
|
|
45
|
-
* Only if this number is inferior or equal to the priority of the
|
|
46
|
-
* minimum priority number of all currently-running tasks will it be
|
|
47
|
-
* immediately started.
|
|
48
|
-
* In the opposite case, we will wait for higher-priority tasks to
|
|
49
|
-
* finish before starting it.
|
|
50
|
-
*
|
|
51
|
-
* Note that while this task is waiting for its turn, it is possible
|
|
52
|
-
* to update its property through the updatePriority method, by providing
|
|
53
|
-
* the task again and its new priority number.
|
|
54
|
-
*
|
|
55
|
-
* @param {Function} taskFn
|
|
56
|
-
* @param {number} priority
|
|
57
|
-
* @param {Object} callbacks
|
|
58
|
-
* @param {Object} cancelSignal
|
|
59
|
-
* @returns {Promise}
|
|
60
|
-
*/
|
|
61
|
-
public create(
|
|
62
|
-
taskFn: ITaskFn<T>,
|
|
63
|
-
priority: number,
|
|
64
|
-
callbacks: ITaskPrioritizerCallbacks,
|
|
65
|
-
cancelSignal: CancellationSignal
|
|
66
|
-
): Promise<T> {
|
|
67
|
-
let newTask: IPrioritizerTask<T>;
|
|
68
|
-
return createCancellablePromise<T>(cancelSignal, (resolve, reject) => {
|
|
69
|
-
/** Function allowing to start the underlying Promise. */
|
|
70
|
-
const trigger = () => {
|
|
71
|
-
if (newTask.hasEnded) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const finishTask = () => {
|
|
75
|
-
unlinkInterrupter();
|
|
76
|
-
this._endTask(newTask);
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const onResolve = (value: T) => {
|
|
80
|
-
callbacks.beforeEnded();
|
|
81
|
-
finishTask();
|
|
82
|
-
resolve(value);
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
const onReject = (err: unknown) => {
|
|
86
|
-
finishTask();
|
|
87
|
-
reject(err);
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
const interrupter = new TaskCanceller();
|
|
91
|
-
const unlinkInterrupter = interrupter.linkToSignal(cancelSignal);
|
|
92
|
-
newTask.interrupter = interrupter;
|
|
93
|
-
interrupter.signal.register(() => {
|
|
94
|
-
newTask.interrupter = null;
|
|
95
|
-
if (!cancelSignal.isCancelled()) {
|
|
96
|
-
callbacks.beforeInterrupted();
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
this._minPendingPriority = this._minPendingPriority === null ?
|
|
101
|
-
newTask.priority :
|
|
102
|
-
Math.min(this._minPendingPriority, newTask.priority);
|
|
103
|
-
this._pendingTasks.push(newTask);
|
|
104
|
-
|
|
105
|
-
newTask.taskFn(interrupter.signal)
|
|
106
|
-
.then(onResolve)
|
|
107
|
-
.catch((err) => {
|
|
108
|
-
if (!cancelSignal.isCancelled() &&
|
|
109
|
-
interrupter.isUsed() &&
|
|
110
|
-
err instanceof CancellationError)
|
|
111
|
-
{
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
onReject(err);
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
newTask = {
|
|
119
|
-
hasEnded: false,
|
|
120
|
-
priority,
|
|
121
|
-
trigger,
|
|
122
|
-
taskFn,
|
|
123
|
-
interrupter: null,
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
if (!this._canBeStartedNow(newTask)) {
|
|
127
|
-
this._waitingQueue.push(newTask);
|
|
128
|
-
} else {
|
|
129
|
-
// We can start the task right away
|
|
130
|
-
newTask.trigger();
|
|
131
|
-
if (this._isRunningHighPriorityTasks()) {
|
|
132
|
-
// Note: we want to begin interrupting low-priority tasks just
|
|
133
|
-
// after starting the current one because the interrupting
|
|
134
|
-
// logic can call external code.
|
|
135
|
-
// This would mean re-entrancy, itself meaning that some weird
|
|
136
|
-
// half-state could be reached unless we're very careful.
|
|
137
|
-
// To be sure no harm is done, we put that code at the last
|
|
138
|
-
// possible position.
|
|
139
|
-
this._interruptCancellableTasks();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return () => this._endTask(newTask);
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
private _endTask(task: IPrioritizerTask<T>): void {
|
|
148
|
-
task.hasEnded = true;
|
|
149
|
-
const waitingQueueIndex = _findTaskIndex(task.taskFn, this._waitingQueue);
|
|
150
|
-
if (waitingQueueIndex >= 0) {
|
|
151
|
-
// If it was still waiting for its turn
|
|
152
|
-
this._waitingQueue.splice(waitingQueueIndex, 1);
|
|
153
|
-
} else {
|
|
154
|
-
// remove it from pending queue if in it
|
|
155
|
-
const pendingTasksIndex = _findTaskIndex(task.taskFn, this._pendingTasks);
|
|
156
|
-
if (pendingTasksIndex < 0) {
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
this._pendingTasks.splice(pendingTasksIndex, 1);
|
|
160
|
-
|
|
161
|
-
if (this._pendingTasks.length > 0) {
|
|
162
|
-
if (this._minPendingPriority === task.priority) {
|
|
163
|
-
this._minPendingPriority = Math.min(...this._pendingTasks.map(t => t.priority));
|
|
164
|
-
}
|
|
165
|
-
} else {
|
|
166
|
-
this._minPendingPriority = null;
|
|
167
|
-
}
|
|
168
|
-
this._loopThroughWaitingQueue();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Update the priority of a promise given to the TaskPrioritizer.
|
|
174
|
-
* @param {Object} promise
|
|
175
|
-
* @param {number} priority
|
|
176
|
-
*/
|
|
177
|
-
public updatePriority(promise: ITaskFn<T>, priority: number): void {
|
|
178
|
-
const waitingQueueIndex = _findTaskIndex(promise, this._waitingQueue);
|
|
179
|
-
|
|
180
|
-
if (waitingQueueIndex >= 0) { // If it was still waiting for its turn
|
|
181
|
-
const waitingQueueElt = this._waitingQueue[waitingQueueIndex];
|
|
182
|
-
if (waitingQueueElt.priority === priority) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
waitingQueueElt.priority = priority;
|
|
187
|
-
|
|
188
|
-
if (!this._canBeStartedNow(waitingQueueElt)) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
this._findAndRunWaitingQueueTask(waitingQueueIndex);
|
|
193
|
-
|
|
194
|
-
if (this._isRunningHighPriorityTasks()) {
|
|
195
|
-
// Re-check to cancel every "cancellable" pending task
|
|
196
|
-
//
|
|
197
|
-
// Note: We start the task before interrupting cancellable tasks on
|
|
198
|
-
// purpose.
|
|
199
|
-
// Because both `_findAndRunWaitingQueueTask` and
|
|
200
|
-
// `_interruptCancellableTasks` can emit events and thus call external
|
|
201
|
-
// code, we could retrieve ourselves in a very weird state at this point
|
|
202
|
-
//
|
|
203
|
-
// By starting the task first, we ensure that this is manageable:
|
|
204
|
-
// `_getMinPendingPriority()` has already been updated to the right value at
|
|
205
|
-
// the time we reached external code, the priority of the current
|
|
206
|
-
// Task has just been updated, and `_interruptCancellableTasks`
|
|
207
|
-
// will ensure that we're basing ourselves on the last `priority` value
|
|
208
|
-
// each time.
|
|
209
|
-
// Doing it in the reverse order is an order of magnitude more difficult
|
|
210
|
-
// to write and to reason about.
|
|
211
|
-
this._interruptCancellableTasks();
|
|
212
|
-
}
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
const pendingTasksIndex = _findTaskIndex(promise, this._pendingTasks);
|
|
216
|
-
if (pendingTasksIndex < 0) {
|
|
217
|
-
log.warn("TP: request to update the priority of a non-existent task");
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const task = this._pendingTasks[pendingTasksIndex];
|
|
222
|
-
if (task.priority === priority) {
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
const prevPriority = task.priority;
|
|
227
|
-
task.priority = priority;
|
|
228
|
-
|
|
229
|
-
if (this._minPendingPriority === null || priority < this._minPendingPriority) {
|
|
230
|
-
this._minPendingPriority = priority;
|
|
231
|
-
} else if (this._minPendingPriority === prevPriority) { // was highest priority
|
|
232
|
-
if (this._pendingTasks.length === 1) {
|
|
233
|
-
this._minPendingPriority = priority;
|
|
234
|
-
} else {
|
|
235
|
-
this._minPendingPriority = Math.min(...this._pendingTasks.map(t => t.priority));
|
|
236
|
-
}
|
|
237
|
-
this._loopThroughWaitingQueue();
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if (this._isRunningHighPriorityTasks()) {
|
|
241
|
-
// Always interrupt cancellable tasks after all other side-effects, to
|
|
242
|
-
// avoid re-entrancy issues
|
|
243
|
-
this._interruptCancellableTasks();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Browse the current waiting queue and start all task in it that needs to be
|
|
249
|
-
* started: start the ones with the lowest priority value below
|
|
250
|
-
* `_minPendingPriority`.
|
|
251
|
-
*
|
|
252
|
-
* Private properties, such as `_minPendingPriority` are updated accordingly
|
|
253
|
-
* while this method is called.
|
|
254
|
-
*/
|
|
255
|
-
private _loopThroughWaitingQueue(): void {
|
|
256
|
-
const minWaitingPriority = this._waitingQueue.reduce((acc : number | null, elt) => {
|
|
257
|
-
return acc === null || acc > elt.priority ? elt.priority :
|
|
258
|
-
acc;
|
|
259
|
-
}, null);
|
|
260
|
-
if (minWaitingPriority === null ||
|
|
261
|
-
(this._minPendingPriority !== null &&
|
|
262
|
-
this._minPendingPriority < minWaitingPriority))
|
|
263
|
-
{
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
for (let i = 0; i < this._waitingQueue.length; i++) {
|
|
267
|
-
const priorityToCheck = this._minPendingPriority === null ?
|
|
268
|
-
minWaitingPriority :
|
|
269
|
-
Math.min(this._minPendingPriority, minWaitingPriority);
|
|
270
|
-
const elt = this._waitingQueue[i];
|
|
271
|
-
if (elt.priority <= priorityToCheck) {
|
|
272
|
-
this._findAndRunWaitingQueueTask(i);
|
|
273
|
-
i--; // previous operation should have removed that element from the
|
|
274
|
-
// the waiting queue
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* Interrupt and move back to the waiting queue all pending tasks that are
|
|
281
|
-
* low priority (having a higher priority number than
|
|
282
|
-
* `this._prioritySteps.low`).
|
|
283
|
-
*/
|
|
284
|
-
private _interruptCancellableTasks(): void {
|
|
285
|
-
for (let i = 0; i < this._pendingTasks.length; i++) {
|
|
286
|
-
const pendingObj = this._pendingTasks[i];
|
|
287
|
-
if (pendingObj.priority >= this._prioritySteps.low) {
|
|
288
|
-
this._interruptPendingTask(pendingObj);
|
|
289
|
-
|
|
290
|
-
// The previous call could have a lot of potential side-effects.
|
|
291
|
-
// It is safer to re-start the function to not miss any pending
|
|
292
|
-
// task that needs to be cancelled.
|
|
293
|
-
return this._interruptCancellableTasks();
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Start task which is at the given index in the waiting queue.
|
|
300
|
-
* The task will be removed from the waiting queue in the process.
|
|
301
|
-
* @param {number} index
|
|
302
|
-
*/
|
|
303
|
-
private _findAndRunWaitingQueueTask(index: number): boolean {
|
|
304
|
-
if (index >= this._waitingQueue.length || index < 0) {
|
|
305
|
-
log.warn("TP : Tried to start a non existing task");
|
|
306
|
-
return false;
|
|
307
|
-
}
|
|
308
|
-
const task = this._waitingQueue.splice(index, 1)[0];
|
|
309
|
-
task.trigger();
|
|
310
|
-
return true;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Move back pending task to the waiting queue and interrupt it.
|
|
315
|
-
* @param {object} task
|
|
316
|
-
*/
|
|
317
|
-
private _interruptPendingTask(task: IPrioritizerTask<T>): void {
|
|
318
|
-
const pendingTasksIndex = _findTaskIndex(task.taskFn, this._pendingTasks);
|
|
319
|
-
if (pendingTasksIndex < 0) {
|
|
320
|
-
log.warn("TP: Interrupting a non-existent pending task. Aborting...");
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// Stop task and put it back in the waiting queue
|
|
325
|
-
this._pendingTasks.splice(pendingTasksIndex, 1);
|
|
326
|
-
this._waitingQueue.push(task);
|
|
327
|
-
if (this._pendingTasks.length === 0) {
|
|
328
|
-
this._minPendingPriority = null;
|
|
329
|
-
} else if (this._minPendingPriority === task.priority) {
|
|
330
|
-
this._minPendingPriority = Math.min(...this._pendingTasks.map(t => t.priority));
|
|
331
|
-
}
|
|
332
|
-
task.interrupter?.cancel(); // Interrupt at last step because it calls external code
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
/**
|
|
336
|
-
* Return `true` if the given task can be started immediately based on its
|
|
337
|
-
* priority.
|
|
338
|
-
* @param {Object} task
|
|
339
|
-
* @returns {boolean}
|
|
340
|
-
*/
|
|
341
|
-
private _canBeStartedNow(task: IPrioritizerTask<T>): boolean {
|
|
342
|
-
return this._minPendingPriority === null ||
|
|
343
|
-
task.priority <= this._minPendingPriority;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
/**
|
|
347
|
-
* Returns `true` if any running task is considered "high priority".
|
|
348
|
-
* returns `false` otherwise.
|
|
349
|
-
* @returns {boolean}
|
|
350
|
-
*/
|
|
351
|
-
private _isRunningHighPriorityTasks() : boolean {
|
|
352
|
-
return this._minPendingPriority !== null &&
|
|
353
|
-
this._minPendingPriority <= this._prioritySteps.high;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
/**
|
|
358
|
-
* Simple utils function allowing to find a given task function in the given
|
|
359
|
-
* `queue`.
|
|
360
|
-
*
|
|
361
|
-
* Returns `-1` if `taskFn` is not found.
|
|
362
|
-
* @param {Function} taskFn
|
|
363
|
-
* @param {Array.<Object>} queue
|
|
364
|
-
* @returns {number}
|
|
365
|
-
*/
|
|
366
|
-
function _findTaskIndex<T>(
|
|
367
|
-
taskFn: ITaskFn<T>,
|
|
368
|
-
queue: Array<IPrioritizerTask<T>>
|
|
369
|
-
): number {
|
|
370
|
-
return arrayFindIndex(queue, (elt) => elt.taskFn === taskFn);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Task function as given to the TaskPrioritizer.
|
|
375
|
-
* The `CancellationSignal` given as argument should be used to directly
|
|
376
|
-
* interrupt the task.
|
|
377
|
-
*
|
|
378
|
-
* A same task might be re-run multiple times.
|
|
379
|
-
*/
|
|
380
|
-
export type ITaskFn<T> = (cancellationSignal: CancellationSignal) => Promise<T>;
|
|
381
|
-
|
|
382
|
-
/** Stored object representing a single task. */
|
|
383
|
-
interface IPrioritizerTask<T> {
|
|
384
|
-
/**
|
|
385
|
-
* Actual task called by the TaskPrioritizer, as well as the object used as an
|
|
386
|
-
* identifier to update its priority.
|
|
387
|
-
* This is the same task than the one the TaskPrioritizer is asked to run.
|
|
388
|
-
*/
|
|
389
|
-
taskFn: ITaskFn<T>;
|
|
390
|
-
/** Function allowing to start the task. */
|
|
391
|
-
trigger: () => void;
|
|
392
|
-
/** Priority of the task. Lower that number is, higher is the priority. */
|
|
393
|
-
priority: number;
|
|
394
|
-
/** `true` if the underlying wrapped promise is either errored or completed. */
|
|
395
|
-
hasEnded: boolean;
|
|
396
|
-
/**
|
|
397
|
-
* Allows to temporarily cancel the task, for example due to changing
|
|
398
|
-
* priorities.
|
|
399
|
-
* It will then be possible to restart the task by calling `trigger` again.
|
|
400
|
-
*/
|
|
401
|
-
interrupter: TaskCanceller | null;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
/** Options to give to the `TaskPrioritizer`. */
|
|
405
|
-
export interface IPrioritizerOptions {
|
|
406
|
-
/** @see IPrioritizerPrioritySteps */
|
|
407
|
-
prioritySteps: IPrioritizerPrioritySteps;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
/**
|
|
411
|
-
* Define both the `low` and `high` priority steps:
|
|
412
|
-
*
|
|
413
|
-
* - Any task with a priority number that is lower or equal to the
|
|
414
|
-
* `high` value will be a task with high priority.
|
|
415
|
-
*
|
|
416
|
-
* When tasks with high priorities are scheduled, they immediately
|
|
417
|
-
* abort pending tasks with low priorities (which will have then to
|
|
418
|
-
* wait until all higher-priority task have ended before re-starting).
|
|
419
|
-
*
|
|
420
|
-
* - Any task with a priority number that is higher or equal to the
|
|
421
|
-
* `low` value will be a task with low priority.
|
|
422
|
-
*
|
|
423
|
-
* Pending tasks with low priorities have the added particularity*
|
|
424
|
-
* of being aborted as soon as a high priority task is scheduled.
|
|
425
|
-
*
|
|
426
|
-
* * Other pending tasks are not aborted when a higher-priority
|
|
427
|
-
* task is scheduled, as their priorities only affect them before
|
|
428
|
-
* they are started (to know when to start them).
|
|
429
|
-
*/
|
|
430
|
-
export interface IPrioritizerPrioritySteps {
|
|
431
|
-
low: number;
|
|
432
|
-
high: number;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Callbacks called by the `TaskPrioritizer` on various events associated to a
|
|
437
|
-
* single task.
|
|
438
|
-
*/
|
|
439
|
-
export interface ITaskPrioritizerCallbacks {
|
|
440
|
-
/**
|
|
441
|
-
* Callback called just before the `TaskPrioritizer` temporarily cancels
|
|
442
|
-
* a task, to prioritize higher-priority tasks.
|
|
443
|
-
*
|
|
444
|
-
* Interrupted tasks are restarted from scratch at a later time.
|
|
445
|
-
*/
|
|
446
|
-
beforeInterrupted(): void;
|
|
447
|
-
/**
|
|
448
|
-
* Callback called when the task ended just before the `TaskPrioritizer`
|
|
449
|
-
* chooses the next task(s) to run.
|
|
450
|
-
*
|
|
451
|
-
* You can use this callback to add yet other tasks just in time before the
|
|
452
|
-
* `TaskPrioritizer` chooses the next one.
|
|
453
|
-
*/
|
|
454
|
-
beforeEnded(): void;
|
|
455
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
formatError,
|
|
19
|
-
NetworkError,
|
|
20
|
-
RequestError,
|
|
21
|
-
} from "../../../errors";
|
|
22
|
-
import { IPlayerError } from "../../../public_types";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Generate a new error from the infos given.
|
|
26
|
-
* @param {string} code
|
|
27
|
-
* @param {Error} error
|
|
28
|
-
* @returns {Error}
|
|
29
|
-
*/
|
|
30
|
-
export default function errorSelector(error : unknown) : IPlayerError {
|
|
31
|
-
if (error instanceof RequestError) {
|
|
32
|
-
return new NetworkError("PIPELINE_LOAD_ERROR", error);
|
|
33
|
-
}
|
|
34
|
-
return formatError(error, {
|
|
35
|
-
defaultCode: "PIPELINE_LOAD_ERROR",
|
|
36
|
-
defaultReason: "Unknown error when fetching the Manifest",
|
|
37
|
-
});
|
|
38
|
-
}
|