rx-player 3.33.0 → 3.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/public_api.js +2 -2
- package/dist/_esm5.processed/manifest/manifest.js +1 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -1
- package/dist/rx-player.js +24 -9
- package/dist/rx-player.min.d.ts +1 -1
- package/dist/rx-player.min.js +1 -1
- package/package.json +6 -6
- package/.editorconfig +0 -22
- package/.eslintrc.js +0 -406
- package/.github/workflows/checks.yml +0 -101
- package/.github/workflows/perfs.yml +0 -22
- package/.github/workflows/sonarcloud_analysis.yml +0 -20
- package/CONTRIBUTING.md +0 -272
- package/FILES.md +0 -283
- package/jest.config.js +0 -73
- package/manifest.mpd +0 -149
- package/scripts/README.md +0 -11
- package/scripts/build/constants.d.ts +0 -53
- package/scripts/build/generate_build.js +0 -190
- package/scripts/build/templates/experimental/features/index.d.ts +0 -16
- package/scripts/build/templates/experimental/features/index.js +0 -16
- package/scripts/build/templates/experimental/index.d.ts +0 -16
- package/scripts/build/templates/experimental/index.js +0 -16
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
- package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
- package/scripts/build/templates/experimental/tools/index.js +0 -16
- package/scripts/build/templates/features/index.d.ts +0 -16
- package/scripts/build/templates/features/index.js +0 -16
- package/scripts/build/templates/logger/index.d.ts +0 -17
- package/scripts/build/templates/logger/index.js +0 -17
- package/scripts/build/templates/minimal/index.d.ts +0 -17
- package/scripts/build/templates/minimal/index.js +0 -17
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
- package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
- package/scripts/build/templates/tools/index.d.ts +0 -16
- package/scripts/build/templates/tools/index.js +0 -16
- package/scripts/build/templates/tools/string-utils.d.ts +0 -18
- package/scripts/build/templates/tools/string-utils.js +0 -18
- package/scripts/build/templates/types/index.d.ts +0 -16
- package/scripts/build/templates/types/index.js +0 -15
- package/scripts/canal-release.patch +0 -316
- package/scripts/check_nodejs_import_compatibility.js +0 -60
- package/scripts/deploy_new_demo +0 -123
- package/scripts/fast_demo_build.js +0 -129
- package/scripts/generate_certificate +0 -19
- package/scripts/generate_demo_list.js +0 -105
- package/scripts/generate_documentation_list.js +0 -109
- package/scripts/generate_full_demo.js +0 -201
- package/scripts/generate_standalone_demo.js +0 -82
- package/scripts/launch_static_server.js +0 -163
- package/scripts/list-npm-scripts.js +0 -207
- package/scripts/make-dev-releases +0 -90
- package/scripts/report_build_sizes +0 -96
- package/scripts/run_standalone_demo.js +0 -27
- package/scripts/start_demo_web_server.js +0 -44
- package/scripts/update-version +0 -48
- package/scripts/update_gh-pages_demo +0 -132
- package/scripts/update_gh-pages_doc +0 -106
- package/scripts/utils/display_webpack_errors.js +0 -33
- package/scripts/utils/get_human_readable_hours.js +0 -14
- package/scripts/wasm-strip.js +0 -359
- package/sonar-project.properties +0 -7
- package/src/README.md +0 -136
- package/src/compat/README.md +0 -29
- package/src/compat/__tests__/add_text_track.test.ts +0 -176
- package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
- package/src/compat/__tests__/browser_version.test.ts +0 -84
- package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
- package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
- package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
- package/src/compat/__tests__/clear_element_src.test.ts +0 -252
- package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
- package/src/compat/__tests__/fullscreen.test.ts +0 -286
- package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
- package/src/compat/__tests__/is_offline.test.ts +0 -65
- package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
- package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
- package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
- package/src/compat/__tests__/remove_cue.test.ts +0 -229
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
- package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
- package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
- package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
- package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
- package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
- package/src/compat/add_class_name.ts +0 -41
- package/src/compat/add_text_track.ts +0 -58
- package/src/compat/browser_compatibility_types.ts +0 -222
- package/src/compat/browser_detection.ts +0 -172
- package/src/compat/browser_version.ts +0 -44
- package/src/compat/can_patch_isobmff.ts +0 -30
- package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
- package/src/compat/can_reuse_media_keys.ts +0 -20
- package/src/compat/change_source_buffer_type.ts +0 -66
- package/src/compat/clear_element_src.ts +0 -55
- package/src/compat/eme/close_session.ts +0 -111
- package/src/compat/eme/constants.ts +0 -21
- package/src/compat/eme/custom_key_system_access.ts +0 -67
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
- package/src/compat/eme/custom_media_keys/index.ts +0 -28
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
- package/src/compat/eme/custom_media_keys/types.ts +0 -67
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
- package/src/compat/eme/eme-api-implementation.ts +0 -318
- package/src/compat/eme/generate_key_request.ts +0 -162
- package/src/compat/eme/get_init_data.ts +0 -159
- package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
- package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
- package/src/compat/eme/index.ts +0 -47
- package/src/compat/eme/load_session.ts +0 -67
- package/src/compat/enable_audio_track.ts +0 -33
- package/src/compat/event_listeners.ts +0 -566
- package/src/compat/fullscreen.ts +0 -87
- package/src/compat/get_start_date.ts +0 -48
- package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
- package/src/compat/index.ts +0 -87
- package/src/compat/is_codec_supported.ts +0 -40
- package/src/compat/is_debug_mode_enabled.ts +0 -12
- package/src/compat/is_node.ts +0 -18
- package/src/compat/is_offline.ts +0 -44
- package/src/compat/is_seeking_approximate.ts +0 -32
- package/src/compat/is_vtt_cue.ts +0 -30
- package/src/compat/make_vtt_cue.ts +0 -51
- package/src/compat/on_height_width_change.ts +0 -119
- package/src/compat/patch_webkit_source_buffer.ts +0 -89
- package/src/compat/remove_cue.ts +0 -64
- package/src/compat/should_favour_custom_safari_EME.ts +0 -34
- package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
- package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
- package/src/compat/should_renew_media_key_system_access.ts +0 -26
- package/src/compat/should_unset_media_keys.ts +0 -27
- package/src/compat/should_validate_metadata.ts +0 -27
- package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
- package/src/compat/should_wait_for_have_enough_data.ts +0 -17
- package/src/config.ts +0 -32
- package/src/core/README.md +0 -56
- package/src/core/adaptive/README.md +0 -147
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
- package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
- package/src/core/adaptive/buffer_based_chooser.ts +0 -264
- package/src/core/adaptive/guess_based_chooser.ts +0 -309
- package/src/core/adaptive/index.ts +0 -45
- package/src/core/adaptive/network_analyzer.ts +0 -419
- package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
- package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
- package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
- package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
- package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
- package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
- package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
- package/src/core/adaptive/utils/ewma.ts +0 -59
- package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
- package/src/core/adaptive/utils/filter_by_width.ts +0 -49
- package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
- package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
- package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
- package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
- package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
- package/src/core/api/README.md +0 -36
- package/src/core/api/__tests__/option_utils.test.ts +0 -1668
- package/src/core/api/__tests__/public_api.test.ts +0 -857
- package/src/core/api/__tests__/utils.test.ts +0 -195
- package/src/core/api/debug/buffer_graph.ts +0 -244
- package/src/core/api/debug/buffer_size_graph.ts +0 -130
- package/src/core/api/debug/constants.ts +0 -2
- package/src/core/api/debug/index.ts +0 -3
- package/src/core/api/debug/modules/general_info.ts +0 -213
- package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
- package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
- package/src/core/api/debug/render.ts +0 -40
- package/src/core/api/debug/utils.ts +0 -103
- package/src/core/api/index.ts +0 -27
- package/src/core/api/option_utils.ts +0 -700
- package/src/core/api/playback_observer.ts +0 -994
- package/src/core/api/public_api.ts +0 -3247
- package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
- package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
- package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
- package/src/core/api/utils.ts +0 -216
- package/src/core/decrypt/README.md +0 -22
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
- package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
- package/src/core/decrypt/attach_media_keys.ts +0 -121
- package/src/core/decrypt/clear_on_stop.ts +0 -47
- package/src/core/decrypt/content_decryptor.ts +0 -1246
- package/src/core/decrypt/create_or_load_session.ts +0 -133
- package/src/core/decrypt/create_session.ts +0 -214
- package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
- package/src/core/decrypt/find_key_system.ts +0 -376
- package/src/core/decrypt/get_key_system_configuration.ts +0 -51
- package/src/core/decrypt/get_media_keys.ts +0 -147
- package/src/core/decrypt/index.ts +0 -36
- package/src/core/decrypt/init_media_keys.ts +0 -60
- package/src/core/decrypt/session_events_listener.ts +0 -386
- package/src/core/decrypt/set_server_certificate.ts +0 -105
- package/src/core/decrypt/types.ts +0 -404
- package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
- package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
- package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
- package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
- package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
- package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
- package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
- package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
- package/src/core/decrypt/utils/is_session_usable.ts +0 -62
- package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
- package/src/core/decrypt/utils/key_session_record.ts +0 -174
- package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
- package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
- package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
- package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
- package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
- package/src/core/fetchers/README.md +0 -84
- package/src/core/fetchers/cdn_prioritizer.ts +0 -207
- package/src/core/fetchers/index.ts +0 -38
- package/src/core/fetchers/manifest/index.ts +0 -28
- package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
- package/src/core/fetchers/segment/index.ts +0 -28
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
- package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
- package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
- package/src/core/fetchers/utils/error_selector.ts +0 -38
- package/src/core/fetchers/utils/schedule_request.ts +0 -493
- package/src/core/init/README.md +0 -81
- package/src/core/init/directfile_content_initializer.ts +0 -310
- package/src/core/init/index.ts +0 -22
- package/src/core/init/media_source_content_initializer.ts +0 -878
- package/src/core/init/types.ts +0 -266
- package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
- package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
- package/src/core/init/utils/create_media_source.ts +0 -139
- package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
- package/src/core/init/utils/end_of_stream.ts +0 -108
- package/src/core/init/utils/get_initial_time.ts +0 -165
- package/src/core/init/utils/get_loaded_reference.ts +0 -82
- package/src/core/init/utils/initial_seek_and_play.ts +0 -237
- package/src/core/init/utils/initialize_content_decryption.ts +0 -172
- package/src/core/init/utils/media_source_duration_updater.ts +0 -349
- package/src/core/init/utils/rebuffering_controller.ts +0 -642
- package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
- package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
- package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
- package/src/core/init/utils/throw_on_media_error.ts +0 -74
- package/src/core/segment_buffers/README.md +0 -219
- package/src/core/segment_buffers/garbage_collector.ts +0 -177
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
- package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
- package/src/core/segment_buffers/implementations/image/index.ts +0 -18
- package/src/core/segment_buffers/implementations/index.ts +0 -20
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
- package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
- package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
- package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
- package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
- package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
- package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
- package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
- package/src/core/segment_buffers/implementations/types.ts +0 -386
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
- package/src/core/segment_buffers/index.ts +0 -67
- package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
- package/src/core/segment_buffers/inventory/index.ts +0 -30
- package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
- package/src/core/segment_buffers/inventory/types.ts +0 -35
- package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
- package/src/core/stream/README.md +0 -59
- package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
- package/src/core/stream/adaptation/index.ts +0 -20
- package/src/core/stream/adaptation/types.ts +0 -199
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/index.ts +0 -38
- package/src/core/stream/orchestrator/README.md +0 -349
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
- package/src/core/stream/orchestrator/index.ts +0 -30
- package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
- package/src/core/stream/period/index.ts +0 -20
- package/src/core/stream/period/period_stream.ts +0 -469
- package/src/core/stream/period/types.ts +0 -132
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
- package/src/core/stream/representation/README.md +0 -16
- package/src/core/stream/representation/index.ts +0 -20
- package/src/core/stream/representation/representation_stream.ts +0 -474
- package/src/core/stream/representation/types.ts +0 -292
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
- package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
- package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
- package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
- package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
- package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
- package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
- package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
- package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
- package/src/default_config.ts +0 -1293
- package/src/errors/README.md +0 -6
- package/src/errors/__tests__/assertion_error.test.ts +0 -26
- package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
- package/src/errors/__tests__/error_message.test.ts +0 -23
- package/src/errors/__tests__/format_error.test.ts +0 -62
- package/src/errors/__tests__/is_known_error.test.ts +0 -65
- package/src/errors/__tests__/media_error.test.ts +0 -55
- package/src/errors/__tests__/network_error.test.ts +0 -84
- package/src/errors/__tests__/other_error.test.ts +0 -53
- package/src/errors/__tests__/request_error.test.ts +0 -45
- package/src/errors/assertion_error.ts +0 -40
- package/src/errors/custom_loader_error.ts +0 -57
- package/src/errors/encrypted_media_error.ts +0 -71
- package/src/errors/error_codes.ts +0 -149
- package/src/errors/error_message.ts +0 -30
- package/src/errors/format_error.ts +0 -39
- package/src/errors/index.ts +0 -52
- package/src/errors/is_known_error.ts +0 -35
- package/src/errors/media_error.ts +0 -118
- package/src/errors/network_error.ts +0 -74
- package/src/errors/other_error.ts +0 -50
- package/src/errors/request_error.ts +0 -76
- package/src/experimental/README.md +0 -16
- package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
- package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
- package/src/experimental/features/__tests__/index.test.ts +0 -19
- package/src/experimental/features/__tests__/local.test.ts +0 -35
- package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
- package/src/experimental/features/dash_wasm.ts +0 -41
- package/src/experimental/features/debug_element.ts +0 -13
- package/src/experimental/features/index.ts +0 -20
- package/src/experimental/features/local.ts +0 -28
- package/src/experimental/features/metaplaylist.ts +0 -28
- package/src/experimental/index.ts +0 -5
- package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
- package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
- package/src/experimental/tools/index.ts +0 -27
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
- package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
- package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
- package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
- package/src/features/README.md +0 -11
- package/src/features/__tests__/add_features.test.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -674
- package/src/features/add_features.ts +0 -37
- package/src/features/features_object.ts +0 -37
- package/src/features/index.ts +0 -40
- package/src/features/initialize_features.ts +0 -136
- package/src/features/list/__tests__/bif_parser.test.ts +0 -30
- package/src/features/list/__tests__/dash.test.ts +0 -41
- package/src/features/list/__tests__/directfile.test.ts +0 -35
- package/src/features/list/__tests__/eme.test.ts +0 -28
- package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/image_buffer.test.ts +0 -28
- package/src/features/list/__tests__/index.test.ts +0 -55
- package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/smooth.test.ts +0 -36
- package/src/features/list/bif_parser.ts +0 -31
- package/src/features/list/dash.ts +0 -36
- package/src/features/list/directfile.ts +0 -35
- package/src/features/list/eme.ts +0 -29
- package/src/features/list/html_sami_parser.ts +0 -31
- package/src/features/list/html_srt_parser.ts +0 -31
- package/src/features/list/html_text_buffer.ts +0 -29
- package/src/features/list/html_ttml_parser.ts +0 -31
- package/src/features/list/html_vtt_parser.ts +0 -31
- package/src/features/list/image_buffer.ts +0 -29
- package/src/features/list/index.ts +0 -32
- package/src/features/list/native_sami_parser.ts +0 -32
- package/src/features/list/native_srt_parser.ts +0 -32
- package/src/features/list/native_text_buffer.ts +0 -30
- package/src/features/list/native_ttml_parser.ts +0 -32
- package/src/features/list/native_vtt_parser.ts +0 -32
- package/src/features/list/smooth.ts +0 -32
- package/src/features/types.ts +0 -183
- package/src/index.ts +0 -38
- package/src/log.ts +0 -22
- package/src/manifest/README.md +0 -55
- package/src/manifest/__tests__/adaptation.test.ts +0 -485
- package/src/manifest/__tests__/manifest.test.ts +0 -428
- package/src/manifest/__tests__/period.test.ts +0 -769
- package/src/manifest/__tests__/representation.test.ts +0 -297
- package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
- package/src/manifest/__tests__/update_periods.test.ts +0 -845
- package/src/manifest/adaptation.ts +0 -294
- package/src/manifest/index.ts +0 -67
- package/src/manifest/manifest.ts +0 -811
- package/src/manifest/period.ts +0 -211
- package/src/manifest/representation.ts +0 -451
- package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
- package/src/manifest/representation_index/index.ts +0 -31
- package/src/manifest/representation_index/static.ts +0 -158
- package/src/manifest/representation_index/types.ts +0 -433
- package/src/manifest/types.ts +0 -33
- package/src/manifest/update_period_in_place.ts +0 -142
- package/src/manifest/update_periods.ts +0 -201
- package/src/manifest/utils.ts +0 -60
- package/src/minimal.ts +0 -34
- package/src/parsers/README.md +0 -12
- package/src/parsers/containers/isobmff/constants.ts +0 -24
- package/src/parsers/containers/isobmff/create_box.ts +0 -81
- package/src/parsers/containers/isobmff/drm/index.ts +0 -17
- package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
- package/src/parsers/containers/isobmff/get_box.ts +0 -278
- package/src/parsers/containers/isobmff/index.ts +0 -51
- package/src/parsers/containers/isobmff/read.ts +0 -105
- package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
- package/src/parsers/containers/isobmff/utils.ts +0 -555
- package/src/parsers/containers/matroska/index.ts +0 -21
- package/src/parsers/containers/matroska/utils.ts +0 -313
- package/src/parsers/images/bif.ts +0 -128
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
- package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
- package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
- package/src/parsers/manifest/dash/common/index.ts +0 -40
- package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
- package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
- package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
- package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
- package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
- package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
- package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
- package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
- package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
- package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
- package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
- package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
- package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
- package/src/parsers/manifest/dash/index.ts +0 -22
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
- package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
- package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
- package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
- package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
- package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
- package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
- package/src/parsers/manifest/dash/parsers_types.ts +0 -91
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
- package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
- package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
- package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
- package/src/parsers/manifest/index.ts +0 -17
- package/src/parsers/manifest/local/index.ts +0 -25
- package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
- package/src/parsers/manifest/local/representation_index.ts +0 -246
- package/src/parsers/manifest/local/types.ts +0 -291
- package/src/parsers/manifest/metaplaylist/index.ts +0 -28
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
- package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
- package/src/parsers/manifest/smooth/create_parser.ts +0 -699
- package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
- package/src/parsers/manifest/smooth/index.ts +0 -26
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
- package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
- package/src/parsers/manifest/smooth/representation_index.ts +0 -704
- package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
- package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
- package/src/parsers/manifest/types.ts +0 -395
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
- package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
- package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
- package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
- package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
- package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
- package/src/parsers/manifest/utils/index_helpers.ts +0 -204
- package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
- package/src/parsers/texttracks/index.ts +0 -21
- package/src/parsers/texttracks/sami/html.ts +0 -219
- package/src/parsers/texttracks/sami/native.ts +0 -192
- package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
- package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
- package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
- package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
- package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
- package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
- package/src/parsers/texttracks/srt/html.ts +0 -182
- package/src/parsers/texttracks/srt/native.ts +0 -74
- package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
- package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
- package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
- package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
- package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
- package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
- package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
- package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
- package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
- package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
- package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
- package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
- package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
- package/src/parsers/texttracks/ttml/html/index.ts +0 -23
- package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
- package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
- package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
- package/src/parsers/texttracks/ttml/native/index.ts +0 -23
- package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
- package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
- package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
- package/src/parsers/texttracks/ttml/regexps.ts +0 -65
- package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
- package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
- package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
- package/src/parsers/texttracks/types.ts +0 -34
- package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
- package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
- package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
- package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
- package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
- package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
- package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
- package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
- package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
- package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
- package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
- package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
- package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
- package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
- package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
- package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
- package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
- package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
- package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
- package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
- package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
- package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
- package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
- package/src/parsers/texttracks/webvtt/utils.ts +0 -135
- package/src/public_types.ts +0 -846
- package/src/tools/README.md +0 -4
- package/src/tools/TextTrackRenderer/index.ts +0 -28
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
- package/src/tools/index.ts +0 -20
- package/src/tools/string_utils.ts +0 -24
- package/src/transports/README.md +0 -276
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
- package/src/transports/dash/construct_segment_url.ts +0 -28
- package/src/transports/dash/extract_complete_chunks.ts +0 -66
- package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
- package/src/transports/dash/image_pipelines.ts +0 -122
- package/src/transports/dash/index.ts +0 -23
- package/src/transports/dash/init_segment_loader.ts +0 -114
- package/src/transports/dash/low_latency_segment_loader.ts +0 -87
- package/src/transports/dash/manifest_parser.ts +0 -325
- package/src/transports/dash/pipelines.ts +0 -72
- package/src/transports/dash/segment_loader.ts +0 -249
- package/src/transports/dash/segment_parser.ts +0 -194
- package/src/transports/dash/text_loader.ts +0 -120
- package/src/transports/dash/text_parser.ts +0 -234
- package/src/transports/index.ts +0 -17
- package/src/transports/local/index.ts +0 -18
- package/src/transports/local/pipelines.ts +0 -100
- package/src/transports/local/segment_loader.ts +0 -198
- package/src/transports/local/segment_parser.ts +0 -101
- package/src/transports/local/text_parser.ts +0 -185
- package/src/transports/metaplaylist/README.md +0 -94
- package/src/transports/metaplaylist/index.ts +0 -23
- package/src/transports/metaplaylist/manifest_loader.ts +0 -62
- package/src/transports/metaplaylist/pipelines.ts +0 -425
- package/src/transports/smooth/extract_timings_infos.ts +0 -142
- package/src/transports/smooth/index.ts +0 -23
- package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
- package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
- package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
- package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
- package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
- package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
- package/src/transports/smooth/isobmff/index.ts +0 -32
- package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
- package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
- package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
- package/src/transports/smooth/pipelines.ts +0 -533
- package/src/transports/smooth/segment_loader.ts +0 -288
- package/src/transports/smooth/utils.ts +0 -106
- package/src/transports/types.ts +0 -809
- package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
- package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
- package/src/transports/utils/byte_range.ts +0 -25
- package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
- package/src/transports/utils/check_isobmff_integrity.ts +0 -50
- package/src/transports/utils/find_complete_box.ts +0 -63
- package/src/transports/utils/generate_manifest_loader.ts +0 -97
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
- package/src/transports/utils/infer_segment_container.ts +0 -56
- package/src/transports/utils/parse_text_track.ts +0 -176
- package/src/typings/README.md +0 -7
- package/src/typings/globals.d.ts +0 -83
- package/src/typings/next-tick.d.ts +0 -23
- package/src/utils/README.md +0 -5
- package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
- package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
- package/src/utils/__tests__/array_find.test.ts +0 -113
- package/src/utils/__tests__/array_find_index.test.ts +0 -113
- package/src/utils/__tests__/array_includes.test.ts +0 -151
- package/src/utils/__tests__/assert.test.ts +0 -237
- package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
- package/src/utils/__tests__/base64.test.ts +0 -147
- package/src/utils/__tests__/byte_parsing.test.ts +0 -267
- package/src/utils/__tests__/deep_merge.test.ts +0 -48
- package/src/utils/__tests__/event_emitter.test.ts +0 -579
- package/src/utils/__tests__/flat_map.test.ts +0 -71
- package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
- package/src/utils/__tests__/hash_buffer.test.ts +0 -105
- package/src/utils/__tests__/id_generator.test.ts +0 -80
- package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
- package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
- package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
- package/src/utils/__tests__/list_to_map.test.ts +0 -46
- package/src/utils/__tests__/logger.test.ts +0 -214
- package/src/utils/__tests__/noop.test.ts +0 -23
- package/src/utils/__tests__/object_assign.test.ts +0 -56
- package/src/utils/__tests__/object_values.test.ts +0 -26
- package/src/utils/__tests__/ranges.test.ts +0 -907
- package/src/utils/__tests__/resolve_url.test.ts +0 -100
- package/src/utils/__tests__/simple_set.test.ts +0 -57
- package/src/utils/__tests__/sorted_list.test.ts +0 -335
- package/src/utils/__tests__/starts_with.test.ts +0 -65
- package/src/utils/__tests__/string_parsing.test.ts +0 -267
- package/src/utils/__tests__/uniq.test.ts +0 -134
- package/src/utils/__tests__/warn_once.test.ts +0 -38
- package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
- package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
- package/src/utils/are_codecs_compatible.ts +0 -51
- package/src/utils/array_find.ts +0 -55
- package/src/utils/array_find_index.ts +0 -54
- package/src/utils/array_includes.ts +0 -93
- package/src/utils/assert.ts +0 -65
- package/src/utils/assert_unreachable.ts +0 -45
- package/src/utils/base64.ts +0 -153
- package/src/utils/byte_parsing.ts +0 -256
- package/src/utils/cancellable_sleep.ts +0 -41
- package/src/utils/create_cancellable_promise.ts +0 -69
- package/src/utils/deep_merge.ts +0 -49
- package/src/utils/event_emitter.ts +0 -147
- package/src/utils/flat_map.ts +0 -50
- package/src/utils/get_fuzzed_delay.ts +0 -27
- package/src/utils/hash_buffer.ts +0 -42
- package/src/utils/id_generator.ts +0 -35
- package/src/utils/initialization_segment_cache.ts +0 -68
- package/src/utils/is_non_empty_string.ts +0 -23
- package/src/utils/is_null_or_undefined.ts +0 -27
- package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
- package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
- package/src/utils/languages/__tests__/normalize.test.ts +0 -290
- package/src/utils/languages/index.ts +0 -29
- package/src/utils/languages/normalize.ts +0 -152
- package/src/utils/list_to_map.ts +0 -32
- package/src/utils/logger.ts +0 -100
- package/src/utils/noop.ts +0 -26
- package/src/utils/object_assign.ts +0 -60
- package/src/utils/object_values.ts +0 -31
- package/src/utils/ranges.ts +0 -499
- package/src/utils/reference.ts +0 -390
- package/src/utils/request/fetch.ts +0 -250
- package/src/utils/request/index.ts +0 -38
- package/src/utils/request/xhr.ts +0 -287
- package/src/utils/resolve_url.ts +0 -126
- package/src/utils/retry_promise_with_backoff.ts +0 -95
- package/src/utils/simple_set.ts +0 -67
- package/src/utils/sleep.ts +0 -14
- package/src/utils/slice_uint8array.ts +0 -53
- package/src/utils/sorted_list.ts +0 -240
- package/src/utils/starts_with.ts +0 -42
- package/src/utils/string_parsing.ts +0 -414
- package/src/utils/task_canceller.ts +0 -367
- package/src/utils/uniq.ts +0 -49
- package/src/utils/warn_once.ts +0 -34
- package/src/utils/weak_map_memory.ts +0 -89
- package/src/utils/wrapInPromise.ts +0 -24
- package/tsconfig.json +0 -28
- package/tsconfig.modules.json +0 -36
|
@@ -1,378 +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 nextTick from "next-tick";
|
|
18
|
-
import config from "../../../config";
|
|
19
|
-
import { formatError } from "../../../errors";
|
|
20
|
-
import log from "../../../log";
|
|
21
|
-
import { Representation } from "../../../manifest";
|
|
22
|
-
import cancellableSleep from "../../../utils/cancellable_sleep";
|
|
23
|
-
import noop from "../../../utils/noop";
|
|
24
|
-
import objectAssign from "../../../utils/object_assign";
|
|
25
|
-
import SharedReference, {
|
|
26
|
-
createMappedReference,
|
|
27
|
-
IReadOnlySharedReference,
|
|
28
|
-
} from "../../../utils/reference";
|
|
29
|
-
import TaskCanceller, {
|
|
30
|
-
CancellationSignal,
|
|
31
|
-
} from "../../../utils/task_canceller";
|
|
32
|
-
import RepresentationStream, {
|
|
33
|
-
IRepresentationStreamCallbacks,
|
|
34
|
-
ITerminationOrder,
|
|
35
|
-
} from "../representation";
|
|
36
|
-
import {
|
|
37
|
-
IAdaptationStreamArguments,
|
|
38
|
-
IAdaptationStreamCallbacks,
|
|
39
|
-
} from "./types";
|
|
40
|
-
import createRepresentationEstimator from "./utils/create_representation_estimator";
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Create new `AdaptationStream` whose task will be to download the media data
|
|
44
|
-
* for a given Adaptation (i.e. "track").
|
|
45
|
-
*
|
|
46
|
-
* It will rely on the IRepresentationEstimator to choose at any time the
|
|
47
|
-
* best Representation for this Adaptation and then run the logic to download
|
|
48
|
-
* and push the corresponding segments in the SegmentBuffer.
|
|
49
|
-
*
|
|
50
|
-
* @param {Object} args - Various arguments allowing the `AdaptationStream` to
|
|
51
|
-
* determine which Representation to choose and which segments to load from it.
|
|
52
|
-
* You can check the corresponding type for more information.
|
|
53
|
-
* @param {Object} callbacks - The `AdaptationStream` relies on a system of
|
|
54
|
-
* callbacks that it will call on various events.
|
|
55
|
-
*
|
|
56
|
-
* Depending on the event, the caller may be supposed to perform actions to
|
|
57
|
-
* react upon some of them.
|
|
58
|
-
*
|
|
59
|
-
* This approach is taken instead of a more classical EventEmitter pattern to:
|
|
60
|
-
* - Allow callbacks to be called synchronously after the
|
|
61
|
-
* `AdaptationStream` is called.
|
|
62
|
-
* - Simplify bubbling events up, by just passing through callbacks
|
|
63
|
-
* - Force the caller to explicitely handle or not the different events.
|
|
64
|
-
*
|
|
65
|
-
* Callbacks may start being called immediately after the `AdaptationStream`
|
|
66
|
-
* call and may be called until either the `parentCancelSignal` argument is
|
|
67
|
-
* triggered, or until the `error` callback is called, whichever comes first.
|
|
68
|
-
* @param {Object} parentCancelSignal - `CancellationSignal` allowing, when
|
|
69
|
-
* triggered, to immediately stop all operations the `AdaptationStream` is
|
|
70
|
-
* doing.
|
|
71
|
-
*/
|
|
72
|
-
export default function AdaptationStream<T>(
|
|
73
|
-
{ playbackObserver,
|
|
74
|
-
content,
|
|
75
|
-
options,
|
|
76
|
-
representationEstimator,
|
|
77
|
-
segmentBuffer,
|
|
78
|
-
segmentFetcherCreator,
|
|
79
|
-
wantedBufferAhead,
|
|
80
|
-
maxVideoBufferSize } : IAdaptationStreamArguments,
|
|
81
|
-
callbacks : IAdaptationStreamCallbacks<T>,
|
|
82
|
-
parentCancelSignal : CancellationSignal
|
|
83
|
-
) : void {
|
|
84
|
-
const directManualBitrateSwitching = options.manualBitrateSwitchingMode === "direct";
|
|
85
|
-
const { manifest, period, adaptation } = content;
|
|
86
|
-
|
|
87
|
-
/** Allows to cancel everything the `AdaptationStream` is doing. */
|
|
88
|
-
const adapStreamCanceller = new TaskCanceller();
|
|
89
|
-
adapStreamCanceller.linkToSignal(parentCancelSignal);
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* The buffer goal ratio base itself on the value given by `wantedBufferAhead`
|
|
93
|
-
* to determine a more dynamic buffer goal for a given Representation.
|
|
94
|
-
*
|
|
95
|
-
* It can help in cases such as : the current browser has issues with
|
|
96
|
-
* buffering and tells us that we should try to bufferize less data :
|
|
97
|
-
* https://developers.google.com/web/updates/2017/10/quotaexceedederror
|
|
98
|
-
*/
|
|
99
|
-
const bufferGoalRatioMap: Map<string, number> = new Map();
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Emit the currently chosen `Representation`.
|
|
103
|
-
* `null` if no Representation is chosen for now.
|
|
104
|
-
*/
|
|
105
|
-
const currentRepresentation = new SharedReference<Representation | null>(
|
|
106
|
-
null,
|
|
107
|
-
adapStreamCanceller.signal
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
const { estimateRef, abrCallbacks } = createRepresentationEstimator(
|
|
111
|
-
content,
|
|
112
|
-
representationEstimator,
|
|
113
|
-
currentRepresentation,
|
|
114
|
-
playbackObserver,
|
|
115
|
-
(err) => {
|
|
116
|
-
adapStreamCanceller.cancel();
|
|
117
|
-
callbacks.error(err);
|
|
118
|
-
},
|
|
119
|
-
adapStreamCanceller.signal
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
/** Allows the `RepresentationStream` to easily fetch media segments. */
|
|
123
|
-
const segmentFetcher = segmentFetcherCreator
|
|
124
|
-
.createSegmentFetcher(adaptation.type,
|
|
125
|
-
/* eslint-disable @typescript-eslint/unbound-method */
|
|
126
|
-
{ onRequestBegin: abrCallbacks.requestBegin,
|
|
127
|
-
onRequestEnd: abrCallbacks.requestEnd,
|
|
128
|
-
onProgress: abrCallbacks.requestProgress,
|
|
129
|
-
onMetrics: abrCallbacks.metrics });
|
|
130
|
-
/* eslint-enable @typescript-eslint/unbound-method */
|
|
131
|
-
|
|
132
|
-
/** Stores the last emitted bitrate. */
|
|
133
|
-
let previousBitrate : number | undefined;
|
|
134
|
-
|
|
135
|
-
/** Emit at each bitrate estimate done by the IRepresentationEstimator. */
|
|
136
|
-
estimateRef.onUpdate(({ bitrate }) => {
|
|
137
|
-
if (bitrate === undefined) {
|
|
138
|
-
return ;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (bitrate === previousBitrate) {
|
|
142
|
-
return ;
|
|
143
|
-
}
|
|
144
|
-
previousBitrate = bitrate;
|
|
145
|
-
log.debug(`Stream: new ${adaptation.type} bitrate estimate`, bitrate);
|
|
146
|
-
callbacks.bitrateEstimationChange({ type: adaptation.type, bitrate });
|
|
147
|
-
}, { emitCurrentValue: true, clearSignal: adapStreamCanceller.signal });
|
|
148
|
-
|
|
149
|
-
recursivelyCreateRepresentationStreams(true);
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Create `RepresentationStream`s starting with the Representation of the last
|
|
153
|
-
* estimate performed.
|
|
154
|
-
* Each time a new estimate is made, this function will create a new
|
|
155
|
-
* `RepresentationStream` corresponding to that new estimate.
|
|
156
|
-
* @param {boolean} isFirstEstimate - Whether this is the first time we're
|
|
157
|
-
* creating a `RepresentationStream` in the corresponding `AdaptationStream`.
|
|
158
|
-
* This is important because manual quality switches might need a full reload
|
|
159
|
-
* of the MediaSource _except_ if we are talking about the first quality chosen.
|
|
160
|
-
*/
|
|
161
|
-
function recursivelyCreateRepresentationStreams(isFirstEstimate : boolean) : void {
|
|
162
|
-
/**
|
|
163
|
-
* `TaskCanceller` triggered when the current `RepresentationStream` is
|
|
164
|
-
* terminating and as such the next one might be immediately created
|
|
165
|
-
* recursively.
|
|
166
|
-
*/
|
|
167
|
-
const repStreamTerminatingCanceller = new TaskCanceller();
|
|
168
|
-
repStreamTerminatingCanceller.linkToSignal(adapStreamCanceller.signal);
|
|
169
|
-
const { representation, manual } = estimateRef.getValue();
|
|
170
|
-
if (representation === null) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// A manual bitrate switch might need an immediate feedback.
|
|
175
|
-
// To do that properly, we need to reload the MediaSource
|
|
176
|
-
if (directManualBitrateSwitching && manual && !isFirstEstimate) {
|
|
177
|
-
const { DELTA_POSITION_AFTER_RELOAD } = config.getCurrent();
|
|
178
|
-
|
|
179
|
-
// We begin by scheduling a micro-task to reduce the possibility of race
|
|
180
|
-
// conditions where the inner logic would be called synchronously before
|
|
181
|
-
// the next observation (which may reflect very different playback conditions)
|
|
182
|
-
// is actually received.
|
|
183
|
-
return nextTick(() => {
|
|
184
|
-
if (repStreamTerminatingCanceller.isUsed()) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
const { manual: newManual } = estimateRef.getValue();
|
|
188
|
-
if (!newManual) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const timeOffset = DELTA_POSITION_AFTER_RELOAD.bitrateSwitch;
|
|
192
|
-
return callbacks.waitingMediaSourceReload({ bufferType: adaptation.type,
|
|
193
|
-
period,
|
|
194
|
-
timeOffset,
|
|
195
|
-
stayInPeriod: true });
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Emit when the current RepresentationStream should be terminated to make
|
|
201
|
-
* place for a new one (e.g. when switching quality).
|
|
202
|
-
*/
|
|
203
|
-
const terminateCurrentStream = new SharedReference<ITerminationOrder | null>(
|
|
204
|
-
null,
|
|
205
|
-
repStreamTerminatingCanceller.signal
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
/** Allows to stop listening to estimateRef on the following line. */
|
|
209
|
-
estimateRef.onUpdate((estimate) => {
|
|
210
|
-
if (estimate.representation === null ||
|
|
211
|
-
estimate.representation.id === representation.id)
|
|
212
|
-
{
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
if (estimate.urgent) {
|
|
216
|
-
log.info("Stream: urgent Representation switch", adaptation.type);
|
|
217
|
-
return terminateCurrentStream.setValue({ urgent: true });
|
|
218
|
-
} else {
|
|
219
|
-
log.info("Stream: slow Representation switch", adaptation.type);
|
|
220
|
-
return terminateCurrentStream.setValue({ urgent: false });
|
|
221
|
-
}
|
|
222
|
-
}, { clearSignal: repStreamTerminatingCanceller.signal, emitCurrentValue: true });
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* "Fast-switching" is a behavior allowing to replace low-quality segments
|
|
226
|
-
* (i.e. with a low bitrate) with higher-quality segments (higher bitrate) in
|
|
227
|
-
* the buffer.
|
|
228
|
-
* This threshold defines a bitrate from which "fast-switching" is disabled.
|
|
229
|
-
* For example with a fastSwitchThreshold set to `100`, segments with a
|
|
230
|
-
* bitrate of `90` can be replaced. But segments with a bitrate of `100`
|
|
231
|
-
* onward won't be replaced by higher quality segments.
|
|
232
|
-
* Set to `undefined` to indicate that there's no threshold (anything can be
|
|
233
|
-
* replaced by higher-quality segments).
|
|
234
|
-
*/
|
|
235
|
-
const fastSwitchThreshold = new SharedReference<number | undefined>(0);
|
|
236
|
-
if (options.enableFastSwitching) {
|
|
237
|
-
estimateRef.onUpdate((estimate) => {
|
|
238
|
-
fastSwitchThreshold.setValueIfChanged(estimate?.knownStableBitrate);
|
|
239
|
-
}, { clearSignal: repStreamTerminatingCanceller.signal, emitCurrentValue: true });
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const repInfo = { type: adaptation.type, period, representation };
|
|
243
|
-
currentRepresentation.setValue(representation);
|
|
244
|
-
if (adapStreamCanceller.isUsed()) {
|
|
245
|
-
return ; // previous callback has stopped everything by side-effect
|
|
246
|
-
}
|
|
247
|
-
callbacks.representationChange(repInfo);
|
|
248
|
-
if (adapStreamCanceller.isUsed()) {
|
|
249
|
-
return ; // previous callback has stopped everything by side-effect
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
const representationStreamCallbacks : IRepresentationStreamCallbacks<T> = {
|
|
253
|
-
streamStatusUpdate: callbacks.streamStatusUpdate,
|
|
254
|
-
encryptionDataEncountered: callbacks.encryptionDataEncountered,
|
|
255
|
-
manifestMightBeOufOfSync: callbacks.manifestMightBeOufOfSync,
|
|
256
|
-
needsManifestRefresh: callbacks.needsManifestRefresh,
|
|
257
|
-
inbandEvent: callbacks.inbandEvent,
|
|
258
|
-
warning: callbacks.warning,
|
|
259
|
-
error(err : unknown) {
|
|
260
|
-
adapStreamCanceller.cancel();
|
|
261
|
-
callbacks.error(err);
|
|
262
|
-
},
|
|
263
|
-
addedSegment(segmentInfo) {
|
|
264
|
-
abrCallbacks.addedSegment(segmentInfo);
|
|
265
|
-
if (adapStreamCanceller.isUsed()) {
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
callbacks.addedSegment(segmentInfo);
|
|
269
|
-
},
|
|
270
|
-
terminating() {
|
|
271
|
-
if (repStreamTerminatingCanceller.isUsed()) {
|
|
272
|
-
return; // Already handled
|
|
273
|
-
}
|
|
274
|
-
repStreamTerminatingCanceller.cancel();
|
|
275
|
-
return recursivelyCreateRepresentationStreams(false);
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
createRepresentationStream(representation,
|
|
280
|
-
terminateCurrentStream,
|
|
281
|
-
fastSwitchThreshold,
|
|
282
|
-
representationStreamCallbacks);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
/**
|
|
286
|
-
* Create and returns a new `RepresentationStream`, linked to the
|
|
287
|
-
* given Representation.
|
|
288
|
-
* @param {Object} representation
|
|
289
|
-
* @param {Object} terminateCurrentStream
|
|
290
|
-
* @param {Object} fastSwitchThreshold
|
|
291
|
-
* @param {Object} representationStreamCallbacks
|
|
292
|
-
*/
|
|
293
|
-
function createRepresentationStream(
|
|
294
|
-
representation : Representation,
|
|
295
|
-
terminateCurrentStream : IReadOnlySharedReference<ITerminationOrder | null>,
|
|
296
|
-
fastSwitchThreshold : IReadOnlySharedReference<number | undefined>,
|
|
297
|
-
representationStreamCallbacks : IRepresentationStreamCallbacks<T>
|
|
298
|
-
) : void {
|
|
299
|
-
/**
|
|
300
|
-
* `TaskCanceller` triggered when the `RepresentationStream` calls its
|
|
301
|
-
* `terminating` callback.
|
|
302
|
-
*/
|
|
303
|
-
const terminatingRepStreamCanceller = new TaskCanceller();
|
|
304
|
-
terminatingRepStreamCanceller.linkToSignal(adapStreamCanceller.signal);
|
|
305
|
-
const bufferGoal = createMappedReference(wantedBufferAhead, prev => {
|
|
306
|
-
return prev * getBufferGoalRatio(representation);
|
|
307
|
-
}, terminatingRepStreamCanceller.signal);
|
|
308
|
-
const maxBufferSize = adaptation.type === "video" ?
|
|
309
|
-
maxVideoBufferSize :
|
|
310
|
-
new SharedReference(Infinity);
|
|
311
|
-
|
|
312
|
-
log.info("Stream: changing representation",
|
|
313
|
-
adaptation.type,
|
|
314
|
-
representation.id,
|
|
315
|
-
representation.bitrate);
|
|
316
|
-
const updatedCallbacks = objectAssign({}, representationStreamCallbacks, {
|
|
317
|
-
error(err : unknown) {
|
|
318
|
-
const formattedError = formatError(err, {
|
|
319
|
-
defaultCode: "NONE",
|
|
320
|
-
defaultReason: "Unknown `RepresentationStream` error",
|
|
321
|
-
});
|
|
322
|
-
if (formattedError.code !== "BUFFER_FULL_ERROR") {
|
|
323
|
-
representationStreamCallbacks.error(err);
|
|
324
|
-
} else {
|
|
325
|
-
const wba = wantedBufferAhead.getValue();
|
|
326
|
-
const lastBufferGoalRatio = bufferGoalRatioMap.get(representation.id) ?? 1;
|
|
327
|
-
// 70%, 49%, 34.3%, 24%, 16.81%, 11.76%, 8.24% and 5.76%
|
|
328
|
-
const newBufferGoalRatio = lastBufferGoalRatio * 0.7;
|
|
329
|
-
if (newBufferGoalRatio <= 0.05 || wba * newBufferGoalRatio <= 2) {
|
|
330
|
-
throw formattedError;
|
|
331
|
-
}
|
|
332
|
-
bufferGoalRatioMap.set(representation.id, newBufferGoalRatio);
|
|
333
|
-
|
|
334
|
-
// We wait 4 seconds to let the situation evolve by itself before
|
|
335
|
-
// retrying loading segments with a lower buffer goal
|
|
336
|
-
cancellableSleep(4000, adapStreamCanceller.signal).then(() => {
|
|
337
|
-
return createRepresentationStream(representation,
|
|
338
|
-
terminateCurrentStream,
|
|
339
|
-
fastSwitchThreshold,
|
|
340
|
-
representationStreamCallbacks);
|
|
341
|
-
}).catch(noop);
|
|
342
|
-
}
|
|
343
|
-
},
|
|
344
|
-
terminating() {
|
|
345
|
-
terminatingRepStreamCanceller.cancel();
|
|
346
|
-
representationStreamCallbacks.terminating();
|
|
347
|
-
},
|
|
348
|
-
});
|
|
349
|
-
RepresentationStream({ playbackObserver,
|
|
350
|
-
content: { representation,
|
|
351
|
-
adaptation,
|
|
352
|
-
period,
|
|
353
|
-
manifest },
|
|
354
|
-
segmentBuffer,
|
|
355
|
-
segmentFetcher,
|
|
356
|
-
terminate: terminateCurrentStream,
|
|
357
|
-
options: { bufferGoal,
|
|
358
|
-
maxBufferSize,
|
|
359
|
-
drmSystemId: options.drmSystemId,
|
|
360
|
-
fastSwitchThreshold } },
|
|
361
|
-
updatedCallbacks,
|
|
362
|
-
adapStreamCanceller.signal);
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* @param {Object} representation
|
|
367
|
-
* @returns {number}
|
|
368
|
-
*/
|
|
369
|
-
function getBufferGoalRatio(representation : Representation) : number {
|
|
370
|
-
const oldBufferGoalRatio = bufferGoalRatioMap.get(representation.id);
|
|
371
|
-
const bufferGoalRatio = oldBufferGoalRatio !== undefined ? oldBufferGoalRatio :
|
|
372
|
-
1;
|
|
373
|
-
if (oldBufferGoalRatio === undefined) {
|
|
374
|
-
bufferGoalRatioMap.set(representation.id, bufferGoalRatio);
|
|
375
|
-
}
|
|
376
|
-
return bufferGoalRatio;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
@@ -1,20 +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 AdaptationStream from "./adaptation_stream";
|
|
18
|
-
export * from "./types";
|
|
19
|
-
|
|
20
|
-
export default AdaptationStream;
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import Manifest, {
|
|
2
|
-
Adaptation,
|
|
3
|
-
Period,
|
|
4
|
-
Representation,
|
|
5
|
-
} from "../../../manifest";
|
|
6
|
-
import { IReadOnlySharedReference } from "../../../utils/reference";
|
|
7
|
-
import { IRepresentationEstimator } from "../../adaptive";
|
|
8
|
-
import { IReadOnlyPlaybackObserver } from "../../api";
|
|
9
|
-
import { SegmentFetcherCreator } from "../../fetchers";
|
|
10
|
-
import {
|
|
11
|
-
IBufferType,
|
|
12
|
-
SegmentBuffer,
|
|
13
|
-
} from "../../segment_buffers";
|
|
14
|
-
import {
|
|
15
|
-
IRepresentationStreamCallbacks,
|
|
16
|
-
IRepresentationStreamPlaybackObservation,
|
|
17
|
-
} from "../representation";
|
|
18
|
-
|
|
19
|
-
/** Callbacks called by the `AdaptationStream` on various events. */
|
|
20
|
-
export interface IAdaptationStreamCallbacks<T>
|
|
21
|
-
extends Omit<IRepresentationStreamCallbacks<T>, "terminating">
|
|
22
|
-
{
|
|
23
|
-
/** Called as new bitrate estimates are done. */
|
|
24
|
-
bitrateEstimationChange(payload : IBitrateEstimationChangePayload) : void;
|
|
25
|
-
/**
|
|
26
|
-
* Called when a new `RepresentationStream` is created to load segments from a
|
|
27
|
-
* `Representation`.
|
|
28
|
-
*/
|
|
29
|
-
representationChange(payload : IRepresentationChangePayload) : void;
|
|
30
|
-
/**
|
|
31
|
-
* Callback called when a stream cannot go forward loading segments because it
|
|
32
|
-
* needs the `MediaSource` to be reloaded first.
|
|
33
|
-
*/
|
|
34
|
-
waitingMediaSourceReload(payload : IWaitingMediaSourceReloadPayload) : void;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/** Payload for the `bitrateEstimationChange` callback. */
|
|
38
|
-
export interface IBitrateEstimationChangePayload {
|
|
39
|
-
/** The type of buffer for which the estimation is done. */
|
|
40
|
-
type : IBufferType;
|
|
41
|
-
/**
|
|
42
|
-
* The bitrate estimate, in bits per seconds. `undefined` when no bitrate
|
|
43
|
-
* estimate is currently available.
|
|
44
|
-
*/
|
|
45
|
-
bitrate : number|undefined;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/** Payload for the `representationChange` callback. */
|
|
49
|
-
export interface IRepresentationChangePayload {
|
|
50
|
-
/** The type of buffer linked to that `RepresentationStream`. */
|
|
51
|
-
type : IBufferType;
|
|
52
|
-
/** The `Period` linked to the `RepresentationStream` we're creating. */
|
|
53
|
-
period : Period;
|
|
54
|
-
/**
|
|
55
|
-
* The `Representation` linked to the `RepresentationStream` we're creating.
|
|
56
|
-
* `null` when we're choosing no Representation at all.
|
|
57
|
-
*/
|
|
58
|
-
representation : Representation |
|
|
59
|
-
null;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** Payload for the `waitingMediaSourceReload` callback. */
|
|
63
|
-
export interface IWaitingMediaSourceReloadPayload {
|
|
64
|
-
/** Period concerned. */
|
|
65
|
-
period : Period;
|
|
66
|
-
/** Buffer type concerned. */
|
|
67
|
-
bufferType : IBufferType;
|
|
68
|
-
/**
|
|
69
|
-
* Relative position, compared to the current position, at which we should
|
|
70
|
-
* restart playback after reloading. For example `-2` will reload 2 seconds
|
|
71
|
-
* before the current position.
|
|
72
|
-
*/
|
|
73
|
-
timeOffset : number;
|
|
74
|
-
/**
|
|
75
|
-
* If `true`, we will control that the position we reload at, after applying
|
|
76
|
-
* `timeOffset`, is still part of the Period `period`.
|
|
77
|
-
*
|
|
78
|
-
* If it isn't we will re-calculate that reloaded position to be:
|
|
79
|
-
* - either the Period's start if the calculated position is before the
|
|
80
|
-
* Period's start.
|
|
81
|
-
* - either the Period'end start if the calculated position is after the
|
|
82
|
-
* Period's end.
|
|
83
|
-
*/
|
|
84
|
-
stayInPeriod : boolean;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/** Regular playback information needed by the AdaptationStream. */
|
|
88
|
-
export interface IAdaptationStreamPlaybackObservation extends
|
|
89
|
-
IRepresentationStreamPlaybackObservation {
|
|
90
|
-
/**
|
|
91
|
-
* For the current SegmentBuffer, difference in seconds between the next position
|
|
92
|
-
* where no segment data is available and the current position.
|
|
93
|
-
*/
|
|
94
|
-
bufferGap : number;
|
|
95
|
-
/** `duration` property of the HTMLMediaElement on which the content plays. */
|
|
96
|
-
duration : number;
|
|
97
|
-
/**
|
|
98
|
-
* Information on whether the media element was paused at the time of the
|
|
99
|
-
* Observation.
|
|
100
|
-
*/
|
|
101
|
-
paused : IPausedPlaybackObservation;
|
|
102
|
-
/** Last "playback rate" asked by the user. */
|
|
103
|
-
speed : number;
|
|
104
|
-
/** Theoretical maximum position on the content that can currently be played. */
|
|
105
|
-
maximumPosition : number;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/** Pause-related information linked to an emitted Playback observation. */
|
|
109
|
-
export interface IPausedPlaybackObservation {
|
|
110
|
-
/**
|
|
111
|
-
* Known paused state at the time the Observation was emitted.
|
|
112
|
-
*
|
|
113
|
-
* `true` indicating that the HTMLMediaElement was in a paused state.
|
|
114
|
-
*
|
|
115
|
-
* Note that it might have changed since. If you want truly precize
|
|
116
|
-
* information, you should recuperate it from the HTMLMediaElement directly
|
|
117
|
-
* through another mean.
|
|
118
|
-
*/
|
|
119
|
-
last : boolean;
|
|
120
|
-
/**
|
|
121
|
-
* Actually wanted paused state not yet reached.
|
|
122
|
-
* This might for example be set to `false` when the content is currently
|
|
123
|
-
* loading (and thus paused) but with autoPlay enabled.
|
|
124
|
-
*/
|
|
125
|
-
pending : boolean | undefined;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/** Arguments given when creating a new `AdaptationStream`. */
|
|
129
|
-
export interface IAdaptationStreamArguments {
|
|
130
|
-
/** Regularly emit playback conditions. */
|
|
131
|
-
playbackObserver : IReadOnlyPlaybackObserver<IAdaptationStreamPlaybackObservation>;
|
|
132
|
-
/** Content you want to create this Stream for. */
|
|
133
|
-
content : { manifest : Manifest;
|
|
134
|
-
period : Period;
|
|
135
|
-
adaptation : Adaptation; };
|
|
136
|
-
options: IAdaptationStreamOptions;
|
|
137
|
-
/** Estimate the right Representation to play. */
|
|
138
|
-
representationEstimator : IRepresentationEstimator;
|
|
139
|
-
/** SourceBuffer wrapper - needed to push media segments. */
|
|
140
|
-
segmentBuffer : SegmentBuffer;
|
|
141
|
-
/** Module used to fetch the wanted media segments. */
|
|
142
|
-
segmentFetcherCreator : SegmentFetcherCreator;
|
|
143
|
-
/**
|
|
144
|
-
* "Buffer goal" wanted, or the ideal amount of time ahead of the current
|
|
145
|
-
* position in the current SegmentBuffer. When this amount has been reached
|
|
146
|
-
* this AdaptationStream won't try to download new segments.
|
|
147
|
-
*/
|
|
148
|
-
wantedBufferAhead : IReadOnlySharedReference<number>;
|
|
149
|
-
/**
|
|
150
|
-
* The buffer size limit in memory that we can reach for the video buffer.
|
|
151
|
-
*
|
|
152
|
-
* Once reached, no segments will be loaded until it goes below that size
|
|
153
|
-
* again
|
|
154
|
-
*/
|
|
155
|
-
maxVideoBufferSize : IReadOnlySharedReference<number>;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Various specific stream "options" which tweak the behavior of the
|
|
160
|
-
* AdaptationStream.
|
|
161
|
-
*/
|
|
162
|
-
export interface IAdaptationStreamOptions {
|
|
163
|
-
/**
|
|
164
|
-
* Hex-encoded DRM "system ID" as found in:
|
|
165
|
-
* https://dashif.org/identifiers/content_protection/
|
|
166
|
-
*
|
|
167
|
-
* Allows to identify which DRM system is currently used, to allow potential
|
|
168
|
-
* optimizations.
|
|
169
|
-
*
|
|
170
|
-
* Set to `undefined` in two cases:
|
|
171
|
-
* - no DRM system is used (e.g. the content is unencrypted).
|
|
172
|
-
* - We don't know which DRM system is currently used.
|
|
173
|
-
*/
|
|
174
|
-
drmSystemId : string | undefined;
|
|
175
|
-
/**
|
|
176
|
-
* Strategy taken when the user switch manually the current Representation:
|
|
177
|
-
* - "seamless": the switch will happen smoothly, with the Representation
|
|
178
|
-
* with the new bitrate progressively being pushed alongside the old
|
|
179
|
-
* Representation.
|
|
180
|
-
* - "direct": hard switch. The Representation switch will be directly
|
|
181
|
-
* visible but may necessitate the current MediaSource to be reloaded.
|
|
182
|
-
*/
|
|
183
|
-
manualBitrateSwitchingMode : "seamless" | "direct";
|
|
184
|
-
/**
|
|
185
|
-
* If `true`, the AdaptationStream might replace segments of a lower-quality
|
|
186
|
-
* (with a lower bitrate) with segments of a higher quality (with a higher
|
|
187
|
-
* bitrate). This allows to have a fast transition when network conditions
|
|
188
|
-
* improve.
|
|
189
|
-
* If `false`, this strategy will be disabled: segments of a lower-quality
|
|
190
|
-
* will not be replaced.
|
|
191
|
-
*
|
|
192
|
-
* Some targeted devices support poorly segment replacement in a
|
|
193
|
-
* SourceBuffer.
|
|
194
|
-
* As such, this option can be used to disable that unnecessary behavior on
|
|
195
|
-
* those devices.
|
|
196
|
-
*/
|
|
197
|
-
enableFastSwitching : boolean;
|
|
198
|
-
}
|
|
199
|
-
|