rx-player 3.33.0 → 3.33.2
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,916 +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 log from "../../log";
|
|
19
|
-
import Manifest, {
|
|
20
|
-
Adaptation,
|
|
21
|
-
ISegment,
|
|
22
|
-
Period,
|
|
23
|
-
Representation,
|
|
24
|
-
} from "../../manifest";
|
|
25
|
-
import noop from "../../utils/noop";
|
|
26
|
-
import { getLeftSizeOfRange } from "../../utils/ranges";
|
|
27
|
-
import SharedReference, {
|
|
28
|
-
IReadOnlySharedReference,
|
|
29
|
-
} from "../../utils/reference";
|
|
30
|
-
import TaskCanceller, {
|
|
31
|
-
CancellationSignal,
|
|
32
|
-
} from "../../utils/task_canceller";
|
|
33
|
-
import { IReadOnlyPlaybackObserver } from "../api";
|
|
34
|
-
import { IBufferType } from "../segment_buffers";
|
|
35
|
-
import BufferBasedChooser from "./buffer_based_chooser";
|
|
36
|
-
import GuessBasedChooser from "./guess_based_chooser";
|
|
37
|
-
import NetworkAnalyzer from "./network_analyzer";
|
|
38
|
-
import BandwidthEstimator from "./utils/bandwidth_estimator";
|
|
39
|
-
import filterByBitrate from "./utils/filter_by_bitrate";
|
|
40
|
-
import filterByWidth from "./utils/filter_by_width";
|
|
41
|
-
import LastEstimateStorage, {
|
|
42
|
-
ABRAlgorithmType,
|
|
43
|
-
} from "./utils/last_estimate_storage";
|
|
44
|
-
import PendingRequestsStore, {
|
|
45
|
-
IPendingRequestStoreBegin,
|
|
46
|
-
IPendingRequestStoreProgress,
|
|
47
|
-
} from "./utils/pending_requests_store";
|
|
48
|
-
import RepresentationScoreCalculator from "./utils/representation_score_calculator";
|
|
49
|
-
import selectOptimalRepresentation from "./utils/select_optimal_representation";
|
|
50
|
-
|
|
51
|
-
// Create default shared references
|
|
52
|
-
|
|
53
|
-
const manualBitrateDefaultRef = new SharedReference(-1);
|
|
54
|
-
manualBitrateDefaultRef.finish();
|
|
55
|
-
|
|
56
|
-
const minAutoBitrateDefaultRef = new SharedReference(0);
|
|
57
|
-
minAutoBitrateDefaultRef.finish();
|
|
58
|
-
|
|
59
|
-
const maxAutoBitrateDefaultRef = new SharedReference(Infinity);
|
|
60
|
-
maxAutoBitrateDefaultRef.finish();
|
|
61
|
-
|
|
62
|
-
const limitWidthDefaultRef = new SharedReference(undefined);
|
|
63
|
-
limitWidthDefaultRef.finish();
|
|
64
|
-
|
|
65
|
-
const throttleBitrateDefaultRef = new SharedReference(Infinity);
|
|
66
|
-
throttleBitrateDefaultRef.finish();
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Select the most adapted Representation according to the network and buffer
|
|
70
|
-
* metrics it receives.
|
|
71
|
-
*
|
|
72
|
-
* @param {Object} options - Initial configuration (see type definition)
|
|
73
|
-
* @returns {Object} - Interface allowing to select a Representation.
|
|
74
|
-
* @see IRepresentationEstimator
|
|
75
|
-
*/
|
|
76
|
-
export default function createAdaptiveRepresentationSelector(
|
|
77
|
-
options : IAdaptiveRepresentationSelectorArguments
|
|
78
|
-
) : IRepresentationEstimator {
|
|
79
|
-
/**
|
|
80
|
-
* Allows to estimate the current network bandwidth.
|
|
81
|
-
* One per active media type.
|
|
82
|
-
*/
|
|
83
|
-
const bandwidthEstimators : Partial<Record<IBufferType, BandwidthEstimator>> = {};
|
|
84
|
-
const { manualBitrates,
|
|
85
|
-
minAutoBitrates,
|
|
86
|
-
maxAutoBitrates,
|
|
87
|
-
initialBitrates,
|
|
88
|
-
throttlers,
|
|
89
|
-
lowLatencyMode } = options;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Returns Object emitting Representation estimates as well as callbacks
|
|
93
|
-
* allowing to helping it produce them.
|
|
94
|
-
*
|
|
95
|
-
* @see IRepresentationEstimator
|
|
96
|
-
* @param {Object} context
|
|
97
|
-
* @param {Object} currentRepresentation
|
|
98
|
-
* @param {Object} representations
|
|
99
|
-
* @param {Object} playbackObserver
|
|
100
|
-
* @param {Object} stopAllEstimates
|
|
101
|
-
* @returns {Array.<Object>}
|
|
102
|
-
*/
|
|
103
|
-
return function getEstimates(
|
|
104
|
-
context : { manifest : Manifest;
|
|
105
|
-
period : Period;
|
|
106
|
-
adaptation : Adaptation; },
|
|
107
|
-
currentRepresentation : IReadOnlySharedReference<Representation | null>,
|
|
108
|
-
representations : IReadOnlySharedReference<Representation[]>,
|
|
109
|
-
playbackObserver : IReadOnlyPlaybackObserver<
|
|
110
|
-
IRepresentationEstimatorPlaybackObservation
|
|
111
|
-
>,
|
|
112
|
-
stopAllEstimates : CancellationSignal
|
|
113
|
-
) : IRepresentationEstimatorResponse {
|
|
114
|
-
const { type } = context.adaptation;
|
|
115
|
-
const bandwidthEstimator = _getBandwidthEstimator(type);
|
|
116
|
-
const manualBitrate = manualBitrates[type] ?? manualBitrateDefaultRef;
|
|
117
|
-
const minAutoBitrate = minAutoBitrates[type] ?? minAutoBitrateDefaultRef;
|
|
118
|
-
const maxAutoBitrate = maxAutoBitrates[type] ?? maxAutoBitrateDefaultRef;
|
|
119
|
-
const initialBitrate = initialBitrates[type] ?? 0;
|
|
120
|
-
const filters = {
|
|
121
|
-
limitWidth: throttlers.limitWidth[type] ?? limitWidthDefaultRef,
|
|
122
|
-
throttleBitrate: throttlers.throttleBitrate[type] ??
|
|
123
|
-
throttlers.throttle[type] ??
|
|
124
|
-
throttleBitrateDefaultRef,
|
|
125
|
-
};
|
|
126
|
-
return getEstimateReference({ bandwidthEstimator,
|
|
127
|
-
context,
|
|
128
|
-
currentRepresentation,
|
|
129
|
-
filters,
|
|
130
|
-
initialBitrate,
|
|
131
|
-
manualBitrate,
|
|
132
|
-
minAutoBitrate,
|
|
133
|
-
maxAutoBitrate,
|
|
134
|
-
playbackObserver,
|
|
135
|
-
representations,
|
|
136
|
-
lowLatencyMode },
|
|
137
|
-
stopAllEstimates);
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Returns interface allowing to estimate network throughtput for a given type.
|
|
142
|
-
* @param {string} bufferType
|
|
143
|
-
* @returns {Object}
|
|
144
|
-
*/
|
|
145
|
-
function _getBandwidthEstimator(bufferType : IBufferType) : BandwidthEstimator {
|
|
146
|
-
const originalBandwidthEstimator = bandwidthEstimators[bufferType];
|
|
147
|
-
if (originalBandwidthEstimator == null) {
|
|
148
|
-
log.debug("ABR: Creating new BandwidthEstimator for ", bufferType);
|
|
149
|
-
const bandwidthEstimator = new BandwidthEstimator();
|
|
150
|
-
bandwidthEstimators[bufferType] = bandwidthEstimator;
|
|
151
|
-
return bandwidthEstimator;
|
|
152
|
-
}
|
|
153
|
-
return originalBandwidthEstimator;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Estimate regularly the current network bandwidth and the best Representation
|
|
159
|
-
* that can be played according to the current network and playback conditions.
|
|
160
|
-
*
|
|
161
|
-
* `getEstimateReference` only does estimations for a given type (e.g.
|
|
162
|
-
* "audio", "video" etc.) and Period.
|
|
163
|
-
*
|
|
164
|
-
* If estimates for multiple types and/or Periods are needed, you should
|
|
165
|
-
* call `getEstimateReference` as many times.
|
|
166
|
-
*
|
|
167
|
-
* This function returns a tuple:
|
|
168
|
-
* - the first element being the object through which estimates will be produced
|
|
169
|
-
* - the second element being callbacks that have to be triggered at various
|
|
170
|
-
* events to help it doing those estimates.
|
|
171
|
-
*
|
|
172
|
-
* @param {Object} args
|
|
173
|
-
* @param {Object} stopAllEstimates
|
|
174
|
-
* @returns {Array.<Object>}
|
|
175
|
-
*/
|
|
176
|
-
function getEstimateReference(
|
|
177
|
-
{ bandwidthEstimator,
|
|
178
|
-
context,
|
|
179
|
-
currentRepresentation,
|
|
180
|
-
filters,
|
|
181
|
-
initialBitrate,
|
|
182
|
-
lowLatencyMode,
|
|
183
|
-
manualBitrate,
|
|
184
|
-
maxAutoBitrate,
|
|
185
|
-
minAutoBitrate,
|
|
186
|
-
playbackObserver,
|
|
187
|
-
representations : representationsRef } : IRepresentationEstimatorArguments,
|
|
188
|
-
stopAllEstimates : CancellationSignal
|
|
189
|
-
) : IRepresentationEstimatorResponse {
|
|
190
|
-
const scoreCalculator = new RepresentationScoreCalculator();
|
|
191
|
-
const networkAnalyzer = new NetworkAnalyzer(initialBitrate ?? 0, lowLatencyMode);
|
|
192
|
-
const requestsStore = new PendingRequestsStore();
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Callback called each time a new segment is pushed, with the information on the
|
|
196
|
-
* new pushed segment.
|
|
197
|
-
*/
|
|
198
|
-
let onAddedSegment : (val : IAddedSegmentCallbackPayload) => void = noop;
|
|
199
|
-
|
|
200
|
-
const callbacks : IRepresentationEstimatorCallbacks = {
|
|
201
|
-
metrics: onMetric,
|
|
202
|
-
requestBegin: onRequestBegin,
|
|
203
|
-
requestProgress: onRequestProgress,
|
|
204
|
-
requestEnd: onRequestEnd,
|
|
205
|
-
addedSegment(val) { onAddedSegment(val); },
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* `TaskCanceller` allowing to stop producing estimate.
|
|
210
|
-
* This TaskCanceller is used both for restarting estimates with a new
|
|
211
|
-
* configuration and to cancel them altogether.
|
|
212
|
-
*/
|
|
213
|
-
let currentEstimatesCanceller = new TaskCanceller();
|
|
214
|
-
currentEstimatesCanceller.linkToSignal(stopAllEstimates);
|
|
215
|
-
|
|
216
|
-
// Create `SharedReference` on which estimates will be emitted.
|
|
217
|
-
const estimateRef = createEstimateReference(representationsRef.getValue(),
|
|
218
|
-
currentEstimatesCanceller.signal);
|
|
219
|
-
representationsRef.onUpdate(restartEstimatesProductionFromCurrentConditions,
|
|
220
|
-
{ clearSignal: stopAllEstimates });
|
|
221
|
-
|
|
222
|
-
return { estimates: estimateRef, callbacks };
|
|
223
|
-
|
|
224
|
-
function createEstimateReference(
|
|
225
|
-
representations : Representation[],
|
|
226
|
-
innerCancellationSignal : CancellationSignal
|
|
227
|
-
) : SharedReference<IABREstimate> {
|
|
228
|
-
if (representations.length === 0) {
|
|
229
|
-
// No Representation given, return `null` as documented
|
|
230
|
-
return new SharedReference<IABREstimate>({
|
|
231
|
-
representation: null,
|
|
232
|
-
bitrate: undefined,
|
|
233
|
-
knownStableBitrate: undefined,
|
|
234
|
-
manual: false,
|
|
235
|
-
urgent: true,
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
if (representations.length === 1) {
|
|
239
|
-
// There's only a single Representation. Just choose it.
|
|
240
|
-
return new SharedReference<IABREstimate>({ bitrate: undefined,
|
|
241
|
-
representation: representations[0],
|
|
242
|
-
manual: false,
|
|
243
|
-
urgent: true,
|
|
244
|
-
knownStableBitrate: undefined });
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/** If true, Representation estimates based on the buffer health might be used. */
|
|
248
|
-
let allowBufferBasedEstimates = false;
|
|
249
|
-
|
|
250
|
-
/**
|
|
251
|
-
* Module calculating the optimal Representation based on the current
|
|
252
|
-
* buffer's health (i.e. whether enough data is buffered, history of
|
|
253
|
-
* buffer size etc.).
|
|
254
|
-
*/
|
|
255
|
-
const bufferBasedChooser = new BufferBasedChooser(
|
|
256
|
-
representations.map(r => r.bitrate)
|
|
257
|
-
);
|
|
258
|
-
|
|
259
|
-
/** Store the previous estimate made here. */
|
|
260
|
-
const prevEstimate = new LastEstimateStorage();
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Module calculating the optimal Representation by "guessing it" with a
|
|
264
|
-
* step-by-step algorithm.
|
|
265
|
-
* Only used in very specific scenarios.
|
|
266
|
-
*/
|
|
267
|
-
const guessBasedChooser = new GuessBasedChooser(scoreCalculator, prevEstimate);
|
|
268
|
-
|
|
269
|
-
// get initial observation for initial estimate
|
|
270
|
-
let lastPlaybackObservation = playbackObserver.getReference().getValue();
|
|
271
|
-
|
|
272
|
-
/** Reference through which estimates are emitted. */
|
|
273
|
-
const innerEstimateRef = new SharedReference<IABREstimate>(getCurrentEstimate());
|
|
274
|
-
|
|
275
|
-
// Listen to playback observations
|
|
276
|
-
playbackObserver.listen((obs) => {
|
|
277
|
-
lastPlaybackObservation = obs;
|
|
278
|
-
updateEstimate();
|
|
279
|
-
}, { includeLastObservation: false, clearSignal: innerCancellationSignal });
|
|
280
|
-
|
|
281
|
-
onAddedSegment = function (val : IAddedSegmentCallbackPayload) {
|
|
282
|
-
if (lastPlaybackObservation === null) {
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
const { position, speed } = lastPlaybackObservation;
|
|
286
|
-
const timeRanges = val.buffered;
|
|
287
|
-
const bufferGap = getLeftSizeOfRange(timeRanges, position.last);
|
|
288
|
-
const { representation } = val.content;
|
|
289
|
-
const currentScore = scoreCalculator.getEstimate(representation);
|
|
290
|
-
const currentBitrate = representation.bitrate;
|
|
291
|
-
const observation = { bufferGap, currentBitrate, currentScore, speed };
|
|
292
|
-
bufferBasedChooser.onAddedSegment(observation);
|
|
293
|
-
updateEstimate();
|
|
294
|
-
};
|
|
295
|
-
innerCancellationSignal.register(() => {
|
|
296
|
-
onAddedSegment = noop;
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
manualBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
300
|
-
minAutoBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
301
|
-
maxAutoBitrate.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
302
|
-
filters.limitWidth.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
303
|
-
filters.limitWidth.onUpdate(updateEstimate, { clearSignal: innerCancellationSignal });
|
|
304
|
-
|
|
305
|
-
return innerEstimateRef;
|
|
306
|
-
|
|
307
|
-
function updateEstimate() : void {
|
|
308
|
-
innerEstimateRef.setValue(getCurrentEstimate());
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/** Returns the actual estimate based on all methods and algorithm available. */
|
|
312
|
-
function getCurrentEstimate(): IABREstimate {
|
|
313
|
-
const manualBitrateVal = manualBitrate.getValue();
|
|
314
|
-
if (manualBitrateVal >= 0) {
|
|
315
|
-
// A manual bitrate has been set. Just choose Representation according to it.
|
|
316
|
-
const manualRepresentation = selectOptimalRepresentation(representations,
|
|
317
|
-
manualBitrateVal,
|
|
318
|
-
0,
|
|
319
|
-
Infinity);
|
|
320
|
-
return {
|
|
321
|
-
representation: manualRepresentation,
|
|
322
|
-
bitrate: undefined, // Bitrate estimation is deactivated here
|
|
323
|
-
knownStableBitrate: undefined,
|
|
324
|
-
manual: true,
|
|
325
|
-
urgent: true, // a manual bitrate switch should happen immediately
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
const { bufferGap, position, maximumPosition } = lastPlaybackObservation;
|
|
330
|
-
const widthLimit = filters.limitWidth.getValue();
|
|
331
|
-
const bitrateThrottle = filters.throttleBitrate.getValue();
|
|
332
|
-
const currentRepresentationVal = currentRepresentation.getValue();
|
|
333
|
-
const minAutoBitrateVal = minAutoBitrate.getValue();
|
|
334
|
-
const maxAutoBitrateVal = maxAutoBitrate.getValue();
|
|
335
|
-
|
|
336
|
-
const filteredReps = getFilteredRepresentations(representations,
|
|
337
|
-
widthLimit,
|
|
338
|
-
bitrateThrottle);
|
|
339
|
-
const requests = requestsStore.getRequests();
|
|
340
|
-
const { bandwidthEstimate, bitrateChosen } = networkAnalyzer
|
|
341
|
-
.getBandwidthEstimate(lastPlaybackObservation,
|
|
342
|
-
bandwidthEstimator,
|
|
343
|
-
currentRepresentationVal,
|
|
344
|
-
requests,
|
|
345
|
-
prevEstimate.bandwidth);
|
|
346
|
-
|
|
347
|
-
const stableRepresentation = scoreCalculator.getLastStableRepresentation();
|
|
348
|
-
const knownStableBitrate = stableRepresentation === null ?
|
|
349
|
-
undefined :
|
|
350
|
-
stableRepresentation.bitrate / (lastPlaybackObservation.speed > 0 ?
|
|
351
|
-
lastPlaybackObservation.speed :
|
|
352
|
-
1);
|
|
353
|
-
|
|
354
|
-
const { ABR_ENTER_BUFFER_BASED_ALGO,
|
|
355
|
-
ABR_EXIT_BUFFER_BASED_ALGO } = config.getCurrent();
|
|
356
|
-
|
|
357
|
-
if (allowBufferBasedEstimates && bufferGap <= ABR_EXIT_BUFFER_BASED_ALGO) {
|
|
358
|
-
allowBufferBasedEstimates = false;
|
|
359
|
-
} else if (!allowBufferBasedEstimates &&
|
|
360
|
-
isFinite(bufferGap) &&
|
|
361
|
-
bufferGap >= ABR_ENTER_BUFFER_BASED_ALGO)
|
|
362
|
-
{
|
|
363
|
-
allowBufferBasedEstimates = true;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Representation chosen when considering only [pessimist] bandwidth
|
|
368
|
-
* calculation.
|
|
369
|
-
* This is a safe enough choice but might be lower than what the user
|
|
370
|
-
* could actually profit from.
|
|
371
|
-
*/
|
|
372
|
-
const chosenRepFromBandwidth = selectOptimalRepresentation(filteredReps,
|
|
373
|
-
bitrateChosen,
|
|
374
|
-
minAutoBitrateVal,
|
|
375
|
-
maxAutoBitrateVal);
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* Current optimal Representation's bandwidth choosen by a buffer-based
|
|
379
|
-
* adaptive algorithm.
|
|
380
|
-
*/
|
|
381
|
-
const currentBufferBasedEstimate = bufferBasedChooser.getLastEstimate();
|
|
382
|
-
|
|
383
|
-
let currentBestBitrate = chosenRepFromBandwidth.bitrate;
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
* Representation chosen when considering the current buffer size.
|
|
387
|
-
* If defined, takes precedence over `chosenRepFromBandwidth`.
|
|
388
|
-
*
|
|
389
|
-
* This is a very safe choice, yet it is very slow and might not be
|
|
390
|
-
* adapted to cases where a buffer cannot be build, such as live contents.
|
|
391
|
-
*
|
|
392
|
-
* `null` if this buffer size mode is not enabled or if we don't have a
|
|
393
|
-
* choice from it yet.
|
|
394
|
-
*/
|
|
395
|
-
let chosenRepFromBufferSize : Representation | null = null;
|
|
396
|
-
if (allowBufferBasedEstimates &&
|
|
397
|
-
currentBufferBasedEstimate !== undefined &&
|
|
398
|
-
currentBufferBasedEstimate > currentBestBitrate)
|
|
399
|
-
{
|
|
400
|
-
|
|
401
|
-
chosenRepFromBufferSize = selectOptimalRepresentation(filteredReps,
|
|
402
|
-
currentBufferBasedEstimate,
|
|
403
|
-
minAutoBitrateVal,
|
|
404
|
-
maxAutoBitrateVal);
|
|
405
|
-
currentBestBitrate = chosenRepFromBufferSize.bitrate;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* Representation chosen by the more adventurous `GuessBasedChooser`,
|
|
410
|
-
* which iterates through Representations one by one until finding one
|
|
411
|
-
* that cannot be "maintained".
|
|
412
|
-
*
|
|
413
|
-
* If defined, takes precedence over both `chosenRepFromBandwidth` and
|
|
414
|
-
* `chosenRepFromBufferSize`.
|
|
415
|
-
*
|
|
416
|
-
* This is the riskiest choice (in terms of rebuffering chances) but is
|
|
417
|
-
* only enabled when no other solution is adapted (for now, this just
|
|
418
|
-
* applies for low-latency contents when playing close to the live
|
|
419
|
-
* edge).
|
|
420
|
-
*
|
|
421
|
-
* `null` if not enabled or if there's currently no guess.
|
|
422
|
-
*/
|
|
423
|
-
let chosenRepFromGuessMode : Representation | null = null;
|
|
424
|
-
if (lowLatencyMode &&
|
|
425
|
-
currentRepresentationVal !== null &&
|
|
426
|
-
context.manifest.isDynamic &&
|
|
427
|
-
maximumPosition - position.last < 40)
|
|
428
|
-
{
|
|
429
|
-
chosenRepFromGuessMode = guessBasedChooser
|
|
430
|
-
.getGuess(representations,
|
|
431
|
-
lastPlaybackObservation,
|
|
432
|
-
currentRepresentationVal,
|
|
433
|
-
currentBestBitrate,
|
|
434
|
-
requests);
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
if (chosenRepFromGuessMode !== null &&
|
|
438
|
-
chosenRepFromGuessMode.bitrate > currentBestBitrate) {
|
|
439
|
-
log.debug("ABR: Choosing representation with guess-based estimation.",
|
|
440
|
-
chosenRepFromGuessMode.bitrate,
|
|
441
|
-
chosenRepFromGuessMode.id);
|
|
442
|
-
prevEstimate.update(chosenRepFromGuessMode,
|
|
443
|
-
bandwidthEstimate,
|
|
444
|
-
ABRAlgorithmType.GuessBased);
|
|
445
|
-
return { bitrate: bandwidthEstimate,
|
|
446
|
-
representation: chosenRepFromGuessMode,
|
|
447
|
-
urgent: currentRepresentationVal === null ||
|
|
448
|
-
chosenRepFromGuessMode.bitrate < currentRepresentationVal.bitrate,
|
|
449
|
-
manual: false,
|
|
450
|
-
knownStableBitrate };
|
|
451
|
-
} else if (chosenRepFromBufferSize !== null) {
|
|
452
|
-
log.debug("ABR: Choosing representation with buffer-based estimation.",
|
|
453
|
-
chosenRepFromBufferSize.bitrate,
|
|
454
|
-
chosenRepFromBufferSize.id);
|
|
455
|
-
prevEstimate.update(chosenRepFromBufferSize,
|
|
456
|
-
bandwidthEstimate,
|
|
457
|
-
ABRAlgorithmType.BufferBased);
|
|
458
|
-
return { bitrate: bandwidthEstimate,
|
|
459
|
-
representation: chosenRepFromBufferSize,
|
|
460
|
-
urgent: networkAnalyzer.isUrgent(chosenRepFromBufferSize.bitrate,
|
|
461
|
-
currentRepresentationVal,
|
|
462
|
-
requests,
|
|
463
|
-
lastPlaybackObservation),
|
|
464
|
-
manual: false,
|
|
465
|
-
knownStableBitrate };
|
|
466
|
-
} else {
|
|
467
|
-
log.debug("ABR: Choosing representation with bandwidth estimation.",
|
|
468
|
-
chosenRepFromBandwidth.bitrate,
|
|
469
|
-
chosenRepFromBandwidth.id);
|
|
470
|
-
prevEstimate.update(chosenRepFromBandwidth,
|
|
471
|
-
bandwidthEstimate,
|
|
472
|
-
ABRAlgorithmType.BandwidthBased);
|
|
473
|
-
return { bitrate: bandwidthEstimate,
|
|
474
|
-
representation: chosenRepFromBandwidth,
|
|
475
|
-
urgent: networkAnalyzer.isUrgent(chosenRepFromBandwidth.bitrate,
|
|
476
|
-
currentRepresentationVal,
|
|
477
|
-
requests,
|
|
478
|
-
lastPlaybackObservation),
|
|
479
|
-
manual: false,
|
|
480
|
-
knownStableBitrate };
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* Stop previous estimate production (if one) and restart it considering new
|
|
487
|
-
* conditions (such as a manual bitrate and/or a new list of Representations).
|
|
488
|
-
*/
|
|
489
|
-
function restartEstimatesProductionFromCurrentConditions() : void {
|
|
490
|
-
const representations = representationsRef.getValue();
|
|
491
|
-
currentEstimatesCanceller.cancel();
|
|
492
|
-
currentEstimatesCanceller = new TaskCanceller();
|
|
493
|
-
currentEstimatesCanceller.linkToSignal(stopAllEstimates);
|
|
494
|
-
const newRef = createEstimateReference(
|
|
495
|
-
representations,
|
|
496
|
-
currentEstimatesCanceller.signal
|
|
497
|
-
);
|
|
498
|
-
|
|
499
|
-
newRef.onUpdate(function onNewEstimate(newEstimate : IABREstimate) : void {
|
|
500
|
-
estimateRef.setValue(newEstimate);
|
|
501
|
-
}, { clearSignal: currentEstimatesCanceller.signal,
|
|
502
|
-
emitCurrentValue: true });
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/**
|
|
506
|
-
* Callback to call when new metrics are available
|
|
507
|
-
* @param {Object} value
|
|
508
|
-
*/
|
|
509
|
-
function onMetric(value : IMetricsCallbackPayload) : void {
|
|
510
|
-
const { requestDuration, segmentDuration, size, content } = value;
|
|
511
|
-
|
|
512
|
-
// calculate bandwidth
|
|
513
|
-
bandwidthEstimator.addSample(requestDuration, size);
|
|
514
|
-
|
|
515
|
-
if (!content.segment.isInit) {
|
|
516
|
-
// calculate "maintainability score"
|
|
517
|
-
const { segment, representation } = content;
|
|
518
|
-
if (segmentDuration === undefined && !segment.complete) {
|
|
519
|
-
// We cannot know the real duration of the segment
|
|
520
|
-
return;
|
|
521
|
-
}
|
|
522
|
-
const segDur = segmentDuration ?? segment.duration;
|
|
523
|
-
scoreCalculator.addSample(representation, requestDuration / 1000, segDur);
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
/** Callback called when a new request begins. */
|
|
528
|
-
function onRequestBegin(val : IRequestBeginCallbackPayload) : void {
|
|
529
|
-
requestsStore.add(val);
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
/** Callback called when progress information is known on a pending request. */
|
|
533
|
-
function onRequestProgress(val : IRequestProgressCallbackPayload) : void {
|
|
534
|
-
requestsStore.addProgress(val);
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
/** Callback called when a pending request ends. */
|
|
538
|
-
function onRequestEnd(val : IRequestEndCallbackPayload) : void {
|
|
539
|
-
requestsStore.remove(val.id);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
/**
|
|
544
|
-
* Filter representations given through filters options.
|
|
545
|
-
* @param {Array.<Representation>} representations
|
|
546
|
-
* @param {number | undefined} widthLimit - Filter Object.
|
|
547
|
-
* @returns {Array.<Representation>}
|
|
548
|
-
*/
|
|
549
|
-
function getFilteredRepresentations(
|
|
550
|
-
representations : Representation[],
|
|
551
|
-
widthLimit : number | undefined,
|
|
552
|
-
bitrateThrottle : number
|
|
553
|
-
) : Representation[] {
|
|
554
|
-
let filteredReps = representations;
|
|
555
|
-
|
|
556
|
-
if (bitrateThrottle < Infinity) {
|
|
557
|
-
filteredReps = filterByBitrate(filteredReps, bitrateThrottle);
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
if (widthLimit !== undefined) {
|
|
561
|
-
filteredReps = filterByWidth(filteredReps, widthLimit);
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
return filteredReps;
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
/**
|
|
568
|
-
* Adaptive BitRate estimate object.
|
|
569
|
-
*
|
|
570
|
-
* Helps the player to choose a Representation (i.e. a quality) by frequently
|
|
571
|
-
* measuring the current network and playback conditions.
|
|
572
|
-
*
|
|
573
|
-
* At regular intervals, an `IABREstimate` will be sent to that end.
|
|
574
|
-
*/
|
|
575
|
-
export interface IABREstimate {
|
|
576
|
-
/**
|
|
577
|
-
* If defined, the last calculated available bitrate for that type of
|
|
578
|
-
* content (e.g. "video, "audio"...).
|
|
579
|
-
* Note that it can be very different from the "real" user's bandwidth.
|
|
580
|
-
*
|
|
581
|
-
* If `undefined`, we do not currently know the bitrate for the current type.
|
|
582
|
-
*/
|
|
583
|
-
bitrate: undefined | number;
|
|
584
|
-
/**
|
|
585
|
-
* If `true`, the `representation` chosen in the current estimate object is
|
|
586
|
-
* linked to a choice chosen manually by the user.
|
|
587
|
-
*
|
|
588
|
-
* If `false`, this estimate is just due to the adaptative logic.
|
|
589
|
-
*/
|
|
590
|
-
manual: boolean;
|
|
591
|
-
/**
|
|
592
|
-
* The Representation considered as the most adapted to the current network
|
|
593
|
-
* and playback conditions.
|
|
594
|
-
* `null` in the rare occurence where there is no `Representation` to choose
|
|
595
|
-
* from.
|
|
596
|
-
*/
|
|
597
|
-
representation: Representation | null;
|
|
598
|
-
/**
|
|
599
|
-
* If `true`, the current `representation` suggested should be switched to as
|
|
600
|
-
* soon as possible. For example, you might want to interrupt all pending
|
|
601
|
-
* downloads for the current representation and replace it immediately by this
|
|
602
|
-
* one.
|
|
603
|
-
*
|
|
604
|
-
* If `false`, the suggested `representation` can be switched to less
|
|
605
|
-
* urgently. For example, pending segment requests for the current
|
|
606
|
-
* Representation can be finished before switching to that new Representation.
|
|
607
|
-
*/
|
|
608
|
-
urgent : boolean;
|
|
609
|
-
/**
|
|
610
|
-
* Last bitrate which was known to be "maintainable".
|
|
611
|
-
*
|
|
612
|
-
* The estimates provided though `IABREstimate` objects sometimes indicate
|
|
613
|
-
* that you should switch to a Representation with a much higher bitrate than
|
|
614
|
-
* what the network bandwidth can sustain.
|
|
615
|
-
* Such Representation are said to not be "maintainable": at a regular
|
|
616
|
-
* playback speed, we cannot maintain this Representation without buffering
|
|
617
|
-
* after some time.
|
|
618
|
-
*
|
|
619
|
-
* `knownStableBitrate` communicates the bitrate of the last Representation
|
|
620
|
-
* that was known to be maintaninable: it could reliably be played continually
|
|
621
|
-
* without interruption.
|
|
622
|
-
*
|
|
623
|
-
* This can be for example useful in some optimizations such as
|
|
624
|
-
* "fast-switching", where the player will load segments of higher quality to
|
|
625
|
-
* replace segments of low quality.
|
|
626
|
-
* Because in that case you're pushing segment on top of buffer you already
|
|
627
|
-
* have, you will most likely only want to do it when the Representation is
|
|
628
|
-
* known to be maintaninable.
|
|
629
|
-
*/
|
|
630
|
-
knownStableBitrate?: number | undefined;
|
|
631
|
-
}
|
|
632
|
-
|
|
633
|
-
/** Media properties `getEstimateReference` will need to keep track of. */
|
|
634
|
-
export interface IRepresentationEstimatorPlaybackObservation {
|
|
635
|
-
/**
|
|
636
|
-
* For the concerned media buffer, difference in seconds between the next
|
|
637
|
-
* position where no segment data is available and the current position.
|
|
638
|
-
*/
|
|
639
|
-
bufferGap : number;
|
|
640
|
-
/**
|
|
641
|
-
* Information on the current media position in seconds at the time of a
|
|
642
|
-
* Playback Observation.
|
|
643
|
-
*/
|
|
644
|
-
position : {
|
|
645
|
-
/**
|
|
646
|
-
* Known position at the time the Observation was emitted, in seconds.
|
|
647
|
-
*
|
|
648
|
-
* Note that it might have changed since. If you want truly precize
|
|
649
|
-
* information, you should recuperate it from the HTMLMediaElement directly
|
|
650
|
-
* through another mean.
|
|
651
|
-
*/
|
|
652
|
-
last : number;
|
|
653
|
-
/**
|
|
654
|
-
* Actually wanted position in seconds that is not yet reached.
|
|
655
|
-
*
|
|
656
|
-
* This might for example be set to the initial position when the content is
|
|
657
|
-
* loading (and thus potentially at a `0` position) but which will be seeked
|
|
658
|
-
* to a given position once possible.
|
|
659
|
-
*/
|
|
660
|
-
pending : number | undefined;
|
|
661
|
-
};
|
|
662
|
-
/**
|
|
663
|
-
* Last "playback rate" set by the user. This is the ideal "playback rate" at
|
|
664
|
-
* which the media should play.
|
|
665
|
-
*/
|
|
666
|
-
speed : number;
|
|
667
|
-
/** `duration` property of the HTMLMediaElement on which the content plays. */
|
|
668
|
-
duration : number;
|
|
669
|
-
/** Theoretical maximum position on the content that can currently be played. */
|
|
670
|
-
maximumPosition : number;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
/** Content of the `IABRMetricsEvent` event's payload. */
|
|
674
|
-
export interface IMetricsCallbackPayload {
|
|
675
|
-
/** Time the request took to perform the request, in milliseconds. */
|
|
676
|
-
requestDuration: number;
|
|
677
|
-
/** Amount of bytes downloaded with this request. */
|
|
678
|
-
size: number;
|
|
679
|
-
/** Duration of the loaded segment, in seconds. */
|
|
680
|
-
segmentDuration: number | undefined;
|
|
681
|
-
/** Context about the segment downloaded. */
|
|
682
|
-
content: { representation: Representation;
|
|
683
|
-
adaptation: Adaptation;
|
|
684
|
-
segment: ISegment; };
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
export type IRequestBeginCallbackPayload = IPendingRequestStoreBegin;
|
|
688
|
-
export type IRequestProgressCallbackPayload = IPendingRequestStoreProgress;
|
|
689
|
-
export interface IRequestEndCallbackPayload {
|
|
690
|
-
/**
|
|
691
|
-
* Same `id` value used to identify that request at the time the corresponding
|
|
692
|
-
* callback was called.
|
|
693
|
-
*/
|
|
694
|
-
id: string;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
/** Object allowing to filter some Representations out based on different attributes. */
|
|
698
|
-
export interface IABRFiltersObject {
|
|
699
|
-
/**
|
|
700
|
-
* Filters out all Representations with a bitrate higher than this value.
|
|
701
|
-
* If all Representations have a bitrate higher than this value, still
|
|
702
|
-
* consider the Representation with the lowest bitrate.
|
|
703
|
-
*/
|
|
704
|
-
bitrate?: number;
|
|
705
|
-
/**
|
|
706
|
-
* Consider only Representations with a width either unknown or lower or equal
|
|
707
|
-
* to that value.
|
|
708
|
-
*
|
|
709
|
-
* As a special case, if no Representation has a width exactly equal to that
|
|
710
|
-
* value, the Representation(s) with the `width` immediately higher will also
|
|
711
|
-
* be considered.
|
|
712
|
-
*
|
|
713
|
-
* _This is usually used to filter out Representations for which the width
|
|
714
|
-
* is much higher than the maximum width of the screen. In such cases, there
|
|
715
|
-
* would be no difference between those higher-quality Representations._
|
|
716
|
-
*/
|
|
717
|
-
width?: number;
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
/** Callbacks returned by `getEstimateReference`. */
|
|
721
|
-
export interface IRepresentationEstimatorCallbacks {
|
|
722
|
-
/** Callback to call when a segment has been completely pushed to the buffer. */
|
|
723
|
-
addedSegment(val : IAddedSegmentCallbackPayload) : void;
|
|
724
|
-
/** Callback to call when network metrics are available. */
|
|
725
|
-
metrics(val : IMetricsCallbackPayload) : void;
|
|
726
|
-
/** Callback to call when an HTTP(S) request begins. */
|
|
727
|
-
requestBegin(val : IRequestBeginCallbackPayload) : void;
|
|
728
|
-
/**
|
|
729
|
-
* Callback to call when an HTTP(S) request ends.
|
|
730
|
-
* Important: `requestEnd` should only be called for requests for which the
|
|
731
|
-
* `requestBegin` callback has been called. It should be called at most once.
|
|
732
|
-
*/
|
|
733
|
-
requestEnd(val : IRequestEndCallbackPayload) : void;
|
|
734
|
-
/**
|
|
735
|
-
* Callback to call when progress information is available on a pending
|
|
736
|
-
* request.
|
|
737
|
-
* Important: `requestProgress` should only be called for requests for which
|
|
738
|
-
* the `requestBegin` callback has been called but the `requestEnd` method has
|
|
739
|
-
* not yet been called.
|
|
740
|
-
*/
|
|
741
|
-
requestProgress(val : IRequestProgressCallbackPayload) : void;
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
export interface IAddedSegmentCallbackPayload {
|
|
745
|
-
/**
|
|
746
|
-
* The buffered ranges of the related media buffer after that segment has
|
|
747
|
-
* been pushed.
|
|
748
|
-
*/
|
|
749
|
-
buffered : TimeRanges;
|
|
750
|
-
/** The context for the segment that has been pushed. */
|
|
751
|
-
content : { representation : Representation };
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
/** Arguments to give to `getEstimateReference`. */
|
|
755
|
-
export interface IRepresentationEstimatorArguments {
|
|
756
|
-
/** Class allowing to estimate the current network bandwidth. */
|
|
757
|
-
bandwidthEstimator : BandwidthEstimator;
|
|
758
|
-
/** Emit regular playback information. */
|
|
759
|
-
playbackObserver : IReadOnlyPlaybackObserver<
|
|
760
|
-
IRepresentationEstimatorPlaybackObservation
|
|
761
|
-
>;
|
|
762
|
-
/**
|
|
763
|
-
* The Representation currently loaded.
|
|
764
|
-
* `null` if no Representation is currently loaded.
|
|
765
|
-
*/
|
|
766
|
-
currentRepresentation : IReadOnlySharedReference<Representation | null>;
|
|
767
|
-
/** Throttle Representation pool according to filters. */
|
|
768
|
-
filters: {
|
|
769
|
-
limitWidth : IReadOnlySharedReference<number | undefined>;
|
|
770
|
-
throttleBitrate : IReadOnlySharedReference<number>;
|
|
771
|
-
};
|
|
772
|
-
/**
|
|
773
|
-
* The initial bitrate you want to start with.
|
|
774
|
-
*
|
|
775
|
-
* The highest-quality Representation with a bitrate lower-or-equal to that
|
|
776
|
-
* value will be chosen.
|
|
777
|
-
* If no Representation has bitrate lower or equal to that value, the
|
|
778
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
779
|
-
*/
|
|
780
|
-
initialBitrate?: number;
|
|
781
|
-
/**
|
|
782
|
-
* If `true` the content is a "low-latency" content.
|
|
783
|
-
* Such contents have specific settings.
|
|
784
|
-
*/
|
|
785
|
-
lowLatencyMode: boolean;
|
|
786
|
-
/**
|
|
787
|
-
* Reference allowing to set manually choose a Representation:
|
|
788
|
-
*
|
|
789
|
-
* The highest-quality Representation with a bitrate lower-or-equal to that
|
|
790
|
-
* value will be chosen.
|
|
791
|
-
* If no Representation has bitrate lower or equal to that value, the
|
|
792
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
793
|
-
*
|
|
794
|
-
* If no Representation has a bitrate lower or equal to that value, the
|
|
795
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
796
|
-
*
|
|
797
|
-
* Set it to a negative value to enable "adaptative mode" instead:
|
|
798
|
-
* `getEstimateReference` will choose the best Representation based on the
|
|
799
|
-
* current network and playback conditions.
|
|
800
|
-
*/
|
|
801
|
-
manualBitrate : IReadOnlySharedReference<number>;
|
|
802
|
-
/**
|
|
803
|
-
* Set a bitrate floor (the minimum reachable bitrate) for adaptative
|
|
804
|
-
* streaming.
|
|
805
|
-
*
|
|
806
|
-
* When `getEstimateReference` is choosing a `Representation` in
|
|
807
|
-
* adaptive mode (e.g. no Representation has been manually chosen through
|
|
808
|
-
* the `manualBitrate` reference), it will never choose a Representation
|
|
809
|
-
* having a bitrate inferior to that value, with a notable exception:
|
|
810
|
-
* If no Representation has a bitrate superior or equal to that value, the
|
|
811
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
812
|
-
*
|
|
813
|
-
* You can set it to `0` to disable any effect of that option.
|
|
814
|
-
*/
|
|
815
|
-
minAutoBitrate : IReadOnlySharedReference<number>;
|
|
816
|
-
/**
|
|
817
|
-
* Set a bitrate ceil (the maximum reachable bitrate) for adaptative
|
|
818
|
-
* streaming.
|
|
819
|
-
*
|
|
820
|
-
* When `getEstimateReference` is choosing a `Representation` in
|
|
821
|
-
* adaptive mode (e.g. no Representation has been manually chosen through
|
|
822
|
-
* the `manualBitrate` reference), it will never choose a Representation
|
|
823
|
-
* having a bitrate superior to that value, with a notable exception:
|
|
824
|
-
* If no Representation has a bitrate lower or equal to that value, the
|
|
825
|
-
* Representation with the lowest bitrate will be chosen instead.
|
|
826
|
-
*
|
|
827
|
-
* You can set it to `Infinity` to disable any effect of that option.
|
|
828
|
-
*/
|
|
829
|
-
maxAutoBitrate : IReadOnlySharedReference<number>;
|
|
830
|
-
/** The list of Representations `getEstimateReference` can choose from. */
|
|
831
|
-
representations : IReadOnlySharedReference<Representation[]>;
|
|
832
|
-
/** Context for the list of Representations to choose. */
|
|
833
|
-
context : {
|
|
834
|
-
/** In which Manifest the Representations are. */
|
|
835
|
-
manifest : Manifest;
|
|
836
|
-
/** In which Period the Representations are. */
|
|
837
|
-
period : Period;
|
|
838
|
-
/** In which Adaptation the Representations are. */
|
|
839
|
-
adaptation : Adaptation;
|
|
840
|
-
};
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
/**
|
|
844
|
-
* Type of the function returned by `createAdaptiveRepresentationSelector`,
|
|
845
|
-
* allowing to estimate the most adapted `Representation`.
|
|
846
|
-
*/
|
|
847
|
-
export type IRepresentationEstimator = (
|
|
848
|
-
/** Information on the content for which a Representation will be chosen */
|
|
849
|
-
context : { manifest : Manifest;
|
|
850
|
-
period : Period;
|
|
851
|
-
adaptation : Adaptation; },
|
|
852
|
-
/** Reference emitting the Representation currently loaded. */
|
|
853
|
-
currentRepresentation : IReadOnlySharedReference<Representation | null>,
|
|
854
|
-
/** Reference emitting the list of available Representations to choose from. */
|
|
855
|
-
representations : IReadOnlySharedReference<Representation[]>,
|
|
856
|
-
/** Regularly emits playback conditions */
|
|
857
|
-
playbackObserver : IReadOnlyPlaybackObserver<
|
|
858
|
-
IRepresentationEstimatorPlaybackObservation
|
|
859
|
-
>,
|
|
860
|
-
/**
|
|
861
|
-
* After this `CancellationSignal` emits, resources will be disposed and
|
|
862
|
-
* estimates will stop to be emitted.
|
|
863
|
-
*/
|
|
864
|
-
stopAllEstimates : CancellationSignal
|
|
865
|
-
) => IRepresentationEstimatorResponse;
|
|
866
|
-
|
|
867
|
-
/** Value returned by an `IRepresentationEstimator` */
|
|
868
|
-
export interface IRepresentationEstimatorResponse {
|
|
869
|
-
/**
|
|
870
|
-
* Regularly produces estimates of the best Representation to play (from the
|
|
871
|
-
* list given).
|
|
872
|
-
*/
|
|
873
|
-
estimates: IReadOnlySharedReference<IABREstimate>;
|
|
874
|
-
/**
|
|
875
|
-
* Callback which need to be called as soon as the corresponding events to
|
|
876
|
-
* obtain accurate Representation estimates.
|
|
877
|
-
*/
|
|
878
|
-
callbacks: IRepresentationEstimatorCallbacks;
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
/** Arguments received by `createAdaptiveRepresentationSelector`. */
|
|
882
|
-
export interface IAdaptiveRepresentationSelectorArguments {
|
|
883
|
-
/** Initial bitrate chosen, per type (minimum if not set) */
|
|
884
|
-
initialBitrates: Partial<Record<IBufferType, number>>;
|
|
885
|
-
|
|
886
|
-
/**
|
|
887
|
-
* Some settings can depend on wether you're playing a low-latency content.
|
|
888
|
-
* Set it to `true` if you're playing such content.
|
|
889
|
-
*/
|
|
890
|
-
lowLatencyMode: boolean;
|
|
891
|
-
|
|
892
|
-
/** Minimum bitrate chosen when in adaptive mode, per type (0 by default) */
|
|
893
|
-
minAutoBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
894
|
-
|
|
895
|
-
/** Maximum bitrate chosen when in adaptive mode, per type (0 by default) */
|
|
896
|
-
maxAutoBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
897
|
-
|
|
898
|
-
/** Manually forced bitrate set for a given type (`-1` for adaptive mode) */
|
|
899
|
-
manualBitrates: Partial<Record<IBufferType, IReadOnlySharedReference<number>>>;
|
|
900
|
-
|
|
901
|
-
/** Allows to filter which Representations can be choosen. */
|
|
902
|
-
throttlers: IRepresentationEstimatorThrottlers;
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
/**
|
|
906
|
-
* Throttlers are interfaces allowing to limit the pool of Representations
|
|
907
|
-
* to choose from.
|
|
908
|
-
*/
|
|
909
|
-
export interface IRepresentationEstimatorThrottlers {
|
|
910
|
-
limitWidth : Partial<Record<IBufferType,
|
|
911
|
-
IReadOnlySharedReference<number>>>;
|
|
912
|
-
throttle : Partial<Record<IBufferType,
|
|
913
|
-
IReadOnlySharedReference<number>>>;
|
|
914
|
-
throttleBitrate : Partial<Record<IBufferType,
|
|
915
|
-
IReadOnlySharedReference<number>>>;
|
|
916
|
-
}
|