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,603 +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 log from "../../../../log";
|
|
18
|
-
import Manifest, {
|
|
19
|
-
Adaptation,
|
|
20
|
-
ISegment,
|
|
21
|
-
Period,
|
|
22
|
-
Representation,
|
|
23
|
-
} from "../../../../manifest";
|
|
24
|
-
import { IPlayerError } from "../../../../public_types";
|
|
25
|
-
import {
|
|
26
|
-
ISegmentParserParsedInitChunk,
|
|
27
|
-
ISegmentParserParsedMediaChunk,
|
|
28
|
-
} from "../../../../transports";
|
|
29
|
-
import assert from "../../../../utils/assert";
|
|
30
|
-
import EventEmitter from "../../../../utils/event_emitter";
|
|
31
|
-
import noop from "../../../../utils/noop";
|
|
32
|
-
import objectAssign from "../../../../utils/object_assign";
|
|
33
|
-
import SharedReference, {
|
|
34
|
-
IReadOnlySharedReference,
|
|
35
|
-
} from "../../../../utils/reference";
|
|
36
|
-
import TaskCanceller from "../../../../utils/task_canceller";
|
|
37
|
-
import { IPrioritizedSegmentFetcher } from "../../../fetchers";
|
|
38
|
-
import { IQueuedSegment } from "../types";
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Class scheduling segment downloads for a single Representation.
|
|
42
|
-
*
|
|
43
|
-
* TODO The request scheduling abstractions might be simplified by integrating
|
|
44
|
-
* the `DownloadingQueue` in the segment fetchers code, instead of having it as
|
|
45
|
-
* an utilis of the `RepresentationStream` like here.
|
|
46
|
-
* @class DownloadingQueue
|
|
47
|
-
*/
|
|
48
|
-
export default class DownloadingQueue<T>
|
|
49
|
-
extends EventEmitter<IDownloadingQueueEvent<T>>
|
|
50
|
-
{
|
|
51
|
-
/** Context of the Representation that will be loaded through this DownloadingQueue. */
|
|
52
|
-
private _content : IDownloadingQueueContext;
|
|
53
|
-
/**
|
|
54
|
-
* Current queue of segments scheduled for download.
|
|
55
|
-
*
|
|
56
|
-
* Segments whose request are still pending are still in that queue. Segments
|
|
57
|
-
* are only removed from it once their request has succeeded.
|
|
58
|
-
*/
|
|
59
|
-
private _downloadQueue : IReadOnlySharedReference<IDownloadQueueItem>;
|
|
60
|
-
/**
|
|
61
|
-
* Allows to stop listening to queue updates and stop performing requests.
|
|
62
|
-
* Set to `null` if the DownloadingQueue is not started right now.
|
|
63
|
-
*/
|
|
64
|
-
private _currentCanceller : TaskCanceller | null;
|
|
65
|
-
/**
|
|
66
|
-
* Pending request for the initialization segment.
|
|
67
|
-
* `null` if no request is pending for it.
|
|
68
|
-
*/
|
|
69
|
-
private _initSegmentRequest : ISegmentRequestObject|null;
|
|
70
|
-
/**
|
|
71
|
-
* Pending request for a media (i.e. non-initialization) segment.
|
|
72
|
-
* `null` if no request is pending for it.
|
|
73
|
-
*/
|
|
74
|
-
private _mediaSegmentRequest : ISegmentRequestObject|null;
|
|
75
|
-
/** Interface used to load segments. */
|
|
76
|
-
private _segmentFetcher : IPrioritizedSegmentFetcher<T>;
|
|
77
|
-
/**
|
|
78
|
-
* Emit the timescale anounced in the initialization segment once parsed.
|
|
79
|
-
* `undefined` when this is not yet known.
|
|
80
|
-
* `null` when no initialization segment or timescale exists.
|
|
81
|
-
*/
|
|
82
|
-
private _initSegmentInfoRef : SharedReference<number | undefined | null>;
|
|
83
|
-
/**
|
|
84
|
-
* Some media segment might have been loaded and are only awaiting for the
|
|
85
|
-
* initialization segment to be parsed before being parsed themselves.
|
|
86
|
-
* This string will contain the `id` property of that segment if one exist or
|
|
87
|
-
* `null` if no segment is awaiting an init segment.
|
|
88
|
-
*/
|
|
89
|
-
private _mediaSegmentAwaitingInitMetadata : string | null;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Create a new `DownloadingQueue`.
|
|
93
|
-
*
|
|
94
|
-
* @param {Object} content - The context of the Representation you want to
|
|
95
|
-
* load segments for.
|
|
96
|
-
* @param {Object} downloadQueue - Queue of segments you want to load.
|
|
97
|
-
* @param {Object} segmentFetcher - Interface to facilitate the download of
|
|
98
|
-
* segments.
|
|
99
|
-
* @param {boolean} hasInitSegment - Declare that an initialization segment
|
|
100
|
-
* will need to be downloaded.
|
|
101
|
-
*
|
|
102
|
-
* A `DownloadingQueue` ALWAYS wait for the initialization segment to be
|
|
103
|
-
* loaded and parsed before parsing a media segment.
|
|
104
|
-
*
|
|
105
|
-
* In cases where no initialization segment exist, this would lead to the
|
|
106
|
-
* `DownloadingQueue` waiting indefinitely for it.
|
|
107
|
-
*
|
|
108
|
-
* By setting that value to `false`, you anounce to the `DownloadingQueue`
|
|
109
|
-
* that it should not wait for an initialization segment before parsing a
|
|
110
|
-
* media segment.
|
|
111
|
-
*/
|
|
112
|
-
constructor(
|
|
113
|
-
content: IDownloadingQueueContext,
|
|
114
|
-
downloadQueue : IReadOnlySharedReference<IDownloadQueueItem>,
|
|
115
|
-
segmentFetcher : IPrioritizedSegmentFetcher<T>,
|
|
116
|
-
hasInitSegment : boolean
|
|
117
|
-
) {
|
|
118
|
-
super();
|
|
119
|
-
this._content = content;
|
|
120
|
-
this._currentCanceller = null;
|
|
121
|
-
this._downloadQueue = downloadQueue;
|
|
122
|
-
this._initSegmentRequest = null;
|
|
123
|
-
this._mediaSegmentRequest = null;
|
|
124
|
-
this._segmentFetcher = segmentFetcher;
|
|
125
|
-
this._initSegmentInfoRef = new SharedReference<number | undefined | null>(undefined);
|
|
126
|
-
this._mediaSegmentAwaitingInitMetadata = null;
|
|
127
|
-
if (!hasInitSegment) {
|
|
128
|
-
this._initSegmentInfoRef.setValue(null);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Returns the initialization segment currently being requested.
|
|
134
|
-
* Returns `null` if no initialization segment request is pending.
|
|
135
|
-
* @returns {Object | null}
|
|
136
|
-
*/
|
|
137
|
-
public getRequestedInitSegment() : ISegment | null {
|
|
138
|
-
return this._initSegmentRequest === null ? null :
|
|
139
|
-
this._initSegmentRequest.segment;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Returns the media segment currently being requested.
|
|
144
|
-
* Returns `null` if no media segment request is pending.
|
|
145
|
-
* @returns {Object | null}
|
|
146
|
-
*/
|
|
147
|
-
public getRequestedMediaSegment() : ISegment | null {
|
|
148
|
-
return this._mediaSegmentRequest === null ? null :
|
|
149
|
-
this._mediaSegmentRequest.segment;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Start the current downloading queue, emitting events as it loads and parses
|
|
154
|
-
* initialization and media segments.
|
|
155
|
-
*/
|
|
156
|
-
public start() : void {
|
|
157
|
-
if (this._currentCanceller !== null) {
|
|
158
|
-
return ;
|
|
159
|
-
}
|
|
160
|
-
this._currentCanceller = new TaskCanceller();
|
|
161
|
-
|
|
162
|
-
// Listen for asked media segments
|
|
163
|
-
this._downloadQueue.onUpdate((queue) => {
|
|
164
|
-
const { segmentQueue } = queue;
|
|
165
|
-
|
|
166
|
-
if (segmentQueue.length > 0 &&
|
|
167
|
-
segmentQueue[0].segment.id === this._mediaSegmentAwaitingInitMetadata)
|
|
168
|
-
{
|
|
169
|
-
// The most needed segment is still the same one, and there's no need to
|
|
170
|
-
// update its priority as the request already ended, just quit.
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const currentSegmentRequest = this._mediaSegmentRequest;
|
|
175
|
-
if (segmentQueue.length === 0) {
|
|
176
|
-
if (currentSegmentRequest === null) {
|
|
177
|
-
// There's nothing to load but there's already no request pending.
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
log.debug("Stream: no more media segment to request. Cancelling queue.",
|
|
181
|
-
this._content.adaptation.type);
|
|
182
|
-
this._restartMediaSegmentDownloadingQueue();
|
|
183
|
-
return;
|
|
184
|
-
} else if (currentSegmentRequest === null) {
|
|
185
|
-
// There's no request although there are needed segments: start requests
|
|
186
|
-
log.debug("Stream: Media segments now need to be requested. Starting queue.",
|
|
187
|
-
this._content.adaptation.type, segmentQueue.length);
|
|
188
|
-
this._restartMediaSegmentDownloadingQueue();
|
|
189
|
-
return;
|
|
190
|
-
} else {
|
|
191
|
-
const nextItem = segmentQueue[0];
|
|
192
|
-
if (currentSegmentRequest.segment.id !== nextItem.segment.id) {
|
|
193
|
-
// The most important request if for another segment, request it
|
|
194
|
-
log.debug("Stream: Next media segment changed, cancelling previous",
|
|
195
|
-
this._content.adaptation.type);
|
|
196
|
-
this._restartMediaSegmentDownloadingQueue();
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
if (currentSegmentRequest.priority !== nextItem.priority) {
|
|
200
|
-
// The priority of the most important request has changed, update it
|
|
201
|
-
log.debug("Stream: Priority of next media segment changed, updating",
|
|
202
|
-
this._content.adaptation.type,
|
|
203
|
-
currentSegmentRequest.priority,
|
|
204
|
-
nextItem.priority);
|
|
205
|
-
this._segmentFetcher.updatePriority(currentSegmentRequest.request,
|
|
206
|
-
nextItem.priority);
|
|
207
|
-
}
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
}, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
|
|
211
|
-
|
|
212
|
-
// Listen for asked init segment
|
|
213
|
-
this._downloadQueue.onUpdate((next) => {
|
|
214
|
-
const initSegmentRequest = this._initSegmentRequest;
|
|
215
|
-
if (next.initSegment !== null && initSegmentRequest !== null) {
|
|
216
|
-
if (next.initSegment.priority !== initSegmentRequest.priority) {
|
|
217
|
-
this._segmentFetcher.updatePriority(initSegmentRequest.request,
|
|
218
|
-
next.initSegment.priority);
|
|
219
|
-
}
|
|
220
|
-
return;
|
|
221
|
-
} else if (next.initSegment?.segment.id === initSegmentRequest?.segment.id) {
|
|
222
|
-
return ;
|
|
223
|
-
}
|
|
224
|
-
if (next.initSegment === null) {
|
|
225
|
-
log.debug("Stream: no more init segment to request. Cancelling queue.",
|
|
226
|
-
this._content.adaptation.type);
|
|
227
|
-
}
|
|
228
|
-
this._restartInitSegmentDownloadingQueue(next.initSegment);
|
|
229
|
-
}, { emitCurrentValue: true, clearSignal: this._currentCanceller.signal });
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
public stop() {
|
|
233
|
-
this._currentCanceller?.cancel();
|
|
234
|
-
this._currentCanceller = null;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Internal logic performing media segment requests.
|
|
239
|
-
*/
|
|
240
|
-
private _restartMediaSegmentDownloadingQueue() : void {
|
|
241
|
-
if (this._mediaSegmentRequest !== null) {
|
|
242
|
-
this._mediaSegmentRequest.canceller.cancel();
|
|
243
|
-
}
|
|
244
|
-
const { segmentQueue } = this._downloadQueue.getValue();
|
|
245
|
-
const currentNeededSegment = segmentQueue[0];
|
|
246
|
-
const recursivelyRequestSegments = (
|
|
247
|
-
startingSegment : IQueuedSegment | undefined
|
|
248
|
-
) : void => {
|
|
249
|
-
if (this._currentCanceller !== null && this._currentCanceller.isUsed()) {
|
|
250
|
-
this._mediaSegmentRequest = null;
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
if (startingSegment === undefined) {
|
|
254
|
-
this._mediaSegmentRequest = null;
|
|
255
|
-
this.trigger("emptyQueue", null);
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
const canceller = new TaskCanceller();
|
|
259
|
-
const unlinkCanceller = this._currentCanceller === null ?
|
|
260
|
-
noop :
|
|
261
|
-
canceller.linkToSignal(this._currentCanceller.signal);
|
|
262
|
-
|
|
263
|
-
const { segment, priority } = startingSegment;
|
|
264
|
-
const context = objectAssign({ segment }, this._content);
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* If `true` , the current task has either errored, finished, or was
|
|
268
|
-
* cancelled.
|
|
269
|
-
*/
|
|
270
|
-
let isComplete = false;
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* If true, we're currently waiting for the initialization segment to be
|
|
274
|
-
* parsed before parsing a received chunk.
|
|
275
|
-
*/
|
|
276
|
-
let isWaitingOnInitSegment = false;
|
|
277
|
-
|
|
278
|
-
canceller.signal.register(() => {
|
|
279
|
-
this._mediaSegmentRequest = null;
|
|
280
|
-
if (isComplete) {
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
if (this._mediaSegmentAwaitingInitMetadata === segment.id) {
|
|
284
|
-
this._mediaSegmentAwaitingInitMetadata = null;
|
|
285
|
-
}
|
|
286
|
-
isComplete = true;
|
|
287
|
-
isWaitingOnInitSegment = false;
|
|
288
|
-
});
|
|
289
|
-
const emitChunk = (
|
|
290
|
-
parsed : ISegmentParserParsedInitChunk<T> |
|
|
291
|
-
ISegmentParserParsedMediaChunk<T>
|
|
292
|
-
) : void => {
|
|
293
|
-
assert(parsed.segmentType === "media", "Should have loaded a media segment.");
|
|
294
|
-
this.trigger("parsedMediaSegment", objectAssign({}, parsed, { segment }));
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
const continueToNextSegment = () : void => {
|
|
299
|
-
const lastQueue = this._downloadQueue.getValue().segmentQueue;
|
|
300
|
-
if (lastQueue.length === 0) {
|
|
301
|
-
isComplete = true;
|
|
302
|
-
this.trigger("emptyQueue", null);
|
|
303
|
-
return;
|
|
304
|
-
} else if (lastQueue[0].segment.id === segment.id) {
|
|
305
|
-
lastQueue.shift();
|
|
306
|
-
}
|
|
307
|
-
isComplete = true;
|
|
308
|
-
recursivelyRequestSegments(lastQueue[0]);
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
/** Scheduled actual segment request. */
|
|
312
|
-
const request = this._segmentFetcher.createRequest(context, priority, {
|
|
313
|
-
/**
|
|
314
|
-
* Callback called when the request has to be retried.
|
|
315
|
-
* @param {Error} error
|
|
316
|
-
*/
|
|
317
|
-
onRetry: (error : IPlayerError) : void => {
|
|
318
|
-
this.trigger("requestRetry", { segment, error });
|
|
319
|
-
},
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Callback called when the request has to be interrupted and
|
|
323
|
-
* restarted later.
|
|
324
|
-
*/
|
|
325
|
-
beforeInterrupted() {
|
|
326
|
-
log.info("Stream: segment request interrupted temporarly.",
|
|
327
|
-
segment.id,
|
|
328
|
-
segment.time);
|
|
329
|
-
},
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Callback called when a decodable chunk of the segment is available.
|
|
333
|
-
* @param {Function} parse - Function allowing to parse the segment.
|
|
334
|
-
*/
|
|
335
|
-
onChunk: (
|
|
336
|
-
parse : (
|
|
337
|
-
initTimescale : number | undefined
|
|
338
|
-
) => ISegmentParserParsedInitChunk<T> | ISegmentParserParsedMediaChunk<T>
|
|
339
|
-
) : void => {
|
|
340
|
-
const initTimescale = this._initSegmentInfoRef.getValue();
|
|
341
|
-
if (initTimescale !== undefined) {
|
|
342
|
-
emitChunk(parse(initTimescale ?? undefined));
|
|
343
|
-
} else {
|
|
344
|
-
isWaitingOnInitSegment = true;
|
|
345
|
-
|
|
346
|
-
// We could also technically call `waitUntilDefined` in both cases,
|
|
347
|
-
// but I found it globally clearer to segregate the two cases,
|
|
348
|
-
// especially to always have a meaningful `isWaitingOnInitSegment`
|
|
349
|
-
// boolean which is a very important variable.
|
|
350
|
-
this._initSegmentInfoRef.waitUntilDefined((actualTimescale) => {
|
|
351
|
-
emitChunk(parse(actualTimescale ?? undefined));
|
|
352
|
-
}, { clearSignal: canceller.signal });
|
|
353
|
-
}
|
|
354
|
-
},
|
|
355
|
-
|
|
356
|
-
/** Callback called after all chunks have been sent. */
|
|
357
|
-
onAllChunksReceived: () : void => {
|
|
358
|
-
if (!isWaitingOnInitSegment) {
|
|
359
|
-
this.trigger("fullyLoadedSegment", segment);
|
|
360
|
-
} else {
|
|
361
|
-
this._mediaSegmentAwaitingInitMetadata = segment.id;
|
|
362
|
-
this._initSegmentInfoRef.waitUntilDefined(() => {
|
|
363
|
-
this._mediaSegmentAwaitingInitMetadata = null;
|
|
364
|
-
isWaitingOnInitSegment = false;
|
|
365
|
-
this.trigger("fullyLoadedSegment", segment);
|
|
366
|
-
}, { clearSignal: canceller.signal });
|
|
367
|
-
}
|
|
368
|
-
},
|
|
369
|
-
|
|
370
|
-
/**
|
|
371
|
-
* Callback called right after the request ended but before the next
|
|
372
|
-
* requests are scheduled. It is used to schedule the next segment.
|
|
373
|
-
*/
|
|
374
|
-
beforeEnded: () : void => {
|
|
375
|
-
unlinkCanceller();
|
|
376
|
-
this._mediaSegmentRequest = null;
|
|
377
|
-
|
|
378
|
-
if (isWaitingOnInitSegment) {
|
|
379
|
-
this._initSegmentInfoRef.waitUntilDefined(continueToNextSegment,
|
|
380
|
-
{ clearSignal: canceller.signal });
|
|
381
|
-
} else {
|
|
382
|
-
continueToNextSegment();
|
|
383
|
-
}
|
|
384
|
-
},
|
|
385
|
-
|
|
386
|
-
}, canceller.signal);
|
|
387
|
-
|
|
388
|
-
request.catch((error : unknown) => {
|
|
389
|
-
unlinkCanceller();
|
|
390
|
-
if (!isComplete) {
|
|
391
|
-
isComplete = true;
|
|
392
|
-
this.stop();
|
|
393
|
-
this.trigger("error", error);
|
|
394
|
-
}
|
|
395
|
-
});
|
|
396
|
-
|
|
397
|
-
this._mediaSegmentRequest = { segment, priority, request, canceller };
|
|
398
|
-
};
|
|
399
|
-
recursivelyRequestSegments(currentNeededSegment);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
/**
|
|
403
|
-
* Internal logic performing initialization segment requests.
|
|
404
|
-
* @param {Object} queuedInitSegment
|
|
405
|
-
*/
|
|
406
|
-
private _restartInitSegmentDownloadingQueue(
|
|
407
|
-
queuedInitSegment : IQueuedSegment | null
|
|
408
|
-
) : void {
|
|
409
|
-
if (this._currentCanceller !== null && this._currentCanceller.isUsed()) {
|
|
410
|
-
return;
|
|
411
|
-
}
|
|
412
|
-
if (this._initSegmentRequest !== null) {
|
|
413
|
-
this._initSegmentRequest.canceller.cancel();
|
|
414
|
-
}
|
|
415
|
-
if (queuedInitSegment === null) {
|
|
416
|
-
return ;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
const canceller = new TaskCanceller();
|
|
420
|
-
const unlinkCanceller = this._currentCanceller === null ?
|
|
421
|
-
noop :
|
|
422
|
-
canceller.linkToSignal(this._currentCanceller.signal);
|
|
423
|
-
const { segment, priority } = queuedInitSegment;
|
|
424
|
-
const context = objectAssign({ segment }, this._content);
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* If `true` , the current task has either errored, finished, or was
|
|
428
|
-
* cancelled.
|
|
429
|
-
*/
|
|
430
|
-
let isComplete = false;
|
|
431
|
-
|
|
432
|
-
const request = this._segmentFetcher.createRequest(context, priority, {
|
|
433
|
-
onRetry: (err : IPlayerError) : void => {
|
|
434
|
-
this.trigger("requestRetry", { segment, error: err });
|
|
435
|
-
},
|
|
436
|
-
beforeInterrupted: () => {
|
|
437
|
-
log.info("Stream: init segment request interrupted temporarly.", segment.id);
|
|
438
|
-
},
|
|
439
|
-
beforeEnded: () => {
|
|
440
|
-
unlinkCanceller();
|
|
441
|
-
this._initSegmentRequest = null;
|
|
442
|
-
isComplete = true;
|
|
443
|
-
},
|
|
444
|
-
onChunk: (parse : (x : undefined) => ISegmentParserParsedInitChunk<T> |
|
|
445
|
-
ISegmentParserParsedMediaChunk<T>) : void => {
|
|
446
|
-
const parsed = parse(undefined);
|
|
447
|
-
assert(parsed.segmentType === "init", "Should have loaded an init segment.");
|
|
448
|
-
this.trigger("parsedInitSegment", objectAssign({}, parsed, { segment }));
|
|
449
|
-
if (parsed.segmentType === "init") {
|
|
450
|
-
this._initSegmentInfoRef.setValue(parsed.initTimescale ?? null);
|
|
451
|
-
}
|
|
452
|
-
},
|
|
453
|
-
onAllChunksReceived: () : void => {
|
|
454
|
-
this.trigger("fullyLoadedSegment", segment);
|
|
455
|
-
},
|
|
456
|
-
}, canceller.signal);
|
|
457
|
-
|
|
458
|
-
request.catch((error : unknown) => {
|
|
459
|
-
unlinkCanceller();
|
|
460
|
-
if (!isComplete) {
|
|
461
|
-
isComplete = true;
|
|
462
|
-
this.stop();
|
|
463
|
-
this.trigger("error", error);
|
|
464
|
-
}
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
canceller.signal.register(() => {
|
|
468
|
-
this._initSegmentRequest = null;
|
|
469
|
-
if (isComplete) {
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
isComplete = true;
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
this._initSegmentRequest = { segment, priority, request, canceller };
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
/**
|
|
480
|
-
* Events sent by the `DownloadingQueue`.
|
|
481
|
-
*
|
|
482
|
-
* The key is the event's name and the value the format of the corresponding
|
|
483
|
-
* event's payload.
|
|
484
|
-
*/
|
|
485
|
-
export interface IDownloadingQueueEvent<T> {
|
|
486
|
-
/**
|
|
487
|
-
* Notify that the initialization segment has been fully loaded and parsed.
|
|
488
|
-
*
|
|
489
|
-
* You can now push that segment to its corresponding buffer and use its parsed
|
|
490
|
-
* metadata.
|
|
491
|
-
*
|
|
492
|
-
* Only sent if an initialization segment exists (when the `DownloadingQueue`'s
|
|
493
|
-
* `hasInitSegment` constructor option has been set to `true`).
|
|
494
|
-
* In that case, an `IParsedInitSegmentEvent` will always be sent before any
|
|
495
|
-
* `IParsedSegmentEvent` event is sent.
|
|
496
|
-
*/
|
|
497
|
-
parsedInitSegment : IParsedInitSegmentPayload<T>;
|
|
498
|
-
/**
|
|
499
|
-
* Notify that a media chunk (decodable sub-part of a media segment) has been
|
|
500
|
-
* loaded and parsed.
|
|
501
|
-
*
|
|
502
|
-
* If an initialization segment exists (when the `DownloadingQueue`'s
|
|
503
|
-
* `hasInitSegment` constructor option has been set to `true`), an
|
|
504
|
-
* `IParsedSegmentEvent` will always be sent AFTER the `IParsedInitSegmentEvent`
|
|
505
|
-
* event.
|
|
506
|
-
*
|
|
507
|
-
* It can now be pushed to its corresponding buffer. Note that there might be
|
|
508
|
-
* multiple `IParsedSegmentEvent` for a single segment, if that segment is
|
|
509
|
-
* divided into multiple decodable chunks.
|
|
510
|
-
* You will know that all `IParsedSegmentEvent` have been loaded for a given
|
|
511
|
-
* segment once you received the corresponding event.
|
|
512
|
-
*/
|
|
513
|
-
parsedMediaSegment : IParsedSegmentPayload<T>;
|
|
514
|
-
/** Notify that a media or initialization segment has been fully-loaded. */
|
|
515
|
-
fullyLoadedSegment : ISegment;
|
|
516
|
-
/**
|
|
517
|
-
* Notify that a media or initialization segment request is retried.
|
|
518
|
-
* This happened most likely because of an HTTP error.
|
|
519
|
-
*/
|
|
520
|
-
requestRetry : IRequestRetryPayload;
|
|
521
|
-
/**
|
|
522
|
-
* Notify that the media segment queue is now empty.
|
|
523
|
-
* This can be used to re-check if any segment are now needed.
|
|
524
|
-
*/
|
|
525
|
-
emptyQueue : null;
|
|
526
|
-
/**
|
|
527
|
-
* Notify that a fatal error happened (such as request failures), which has
|
|
528
|
-
* completely stopped the downloading queue.
|
|
529
|
-
*
|
|
530
|
-
* You may still restart the queue after receiving this event.
|
|
531
|
-
*/
|
|
532
|
-
error : unknown;
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
/** Payload for a `parsedInitSegment` event. */
|
|
536
|
-
export type IParsedInitSegmentPayload<T> = ISegmentParserParsedInitChunk<T> &
|
|
537
|
-
{ segment : ISegment };
|
|
538
|
-
/** Payload for a `parsedMediaSegment` event. */
|
|
539
|
-
export type IParsedSegmentPayload<T> = ISegmentParserParsedMediaChunk<T> &
|
|
540
|
-
{ segment : ISegment };
|
|
541
|
-
/** Payload for a `requestRetry` event. */
|
|
542
|
-
export interface IRequestRetryPayload {
|
|
543
|
-
segment : ISegment;
|
|
544
|
-
error : IPlayerError;
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/**
|
|
548
|
-
* Structure of the object that has to be emitted through the `downloadQueue`
|
|
549
|
-
* shared reference, to signal which segments are currently needed.
|
|
550
|
-
*/
|
|
551
|
-
export interface IDownloadQueueItem {
|
|
552
|
-
/**
|
|
553
|
-
* A potential initialization segment that needs to be loaded and parsed.
|
|
554
|
-
* It will generally be requested in parralel of the first media segments.
|
|
555
|
-
*
|
|
556
|
-
* Can be set to `null` if you don't need to load the initialization segment
|
|
557
|
-
* for now.
|
|
558
|
-
*
|
|
559
|
-
* If the `DownloadingQueue`'s `hasInitSegment` constructor option has been
|
|
560
|
-
* set to `true`, no media segment will be parsed before the initialization
|
|
561
|
-
* segment has been loaded and parsed.
|
|
562
|
-
*/
|
|
563
|
-
initSegment : IQueuedSegment | null;
|
|
564
|
-
|
|
565
|
-
/**
|
|
566
|
-
* The queue of media segments currently needed for download.
|
|
567
|
-
*
|
|
568
|
-
* Those will be loaded from the first element in that queue to the last
|
|
569
|
-
* element in it.
|
|
570
|
-
*
|
|
571
|
-
* Note that any media segments in the segment queue will only be parsed once
|
|
572
|
-
* either of these is true:
|
|
573
|
-
* - An initialization segment has been loaded and parsed by this
|
|
574
|
-
* `DownloadingQueue` instance.
|
|
575
|
-
* - The `DownloadingQueue`'s `hasInitSegment` constructor option has been
|
|
576
|
-
* set to `false`.
|
|
577
|
-
*/
|
|
578
|
-
segmentQueue : IQueuedSegment[];
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/** Object describing a pending Segment request. */
|
|
582
|
-
interface ISegmentRequestObject {
|
|
583
|
-
/** The segment the request is for. */
|
|
584
|
-
segment : ISegment;
|
|
585
|
-
/** The request itself. Can be used to update its priority. */
|
|
586
|
-
request: Promise<void>;
|
|
587
|
-
/** Last set priority of the segment request (lower number = higher priority). */
|
|
588
|
-
priority : number;
|
|
589
|
-
/** Allows to cancel that segment from being requested. */
|
|
590
|
-
canceller : TaskCanceller;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
/** Context for segments downloaded through the DownloadingQueue. */
|
|
594
|
-
export interface IDownloadingQueueContext {
|
|
595
|
-
/** Adaptation linked to the segments you want to load. */
|
|
596
|
-
adaptation : Adaptation;
|
|
597
|
-
/** Manifest linked to the segments you want to load. */
|
|
598
|
-
manifest : Manifest;
|
|
599
|
-
/** Period linked to the segments you want to load. */
|
|
600
|
-
period : Period;
|
|
601
|
-
/** Representation linked to the segments you want to load. */
|
|
602
|
-
representation : Representation;
|
|
603
|
-
}
|