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,642 +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 isSeekingApproximate from "../../../compat/is_seeking_approximate";
|
|
18
|
-
import config from "../../../config";
|
|
19
|
-
import { MediaError } from "../../../errors";
|
|
20
|
-
import log from "../../../log";
|
|
21
|
-
import Manifest, {
|
|
22
|
-
Period,
|
|
23
|
-
} from "../../../manifest";
|
|
24
|
-
import { IPlayerError } from "../../../public_types";
|
|
25
|
-
import EventEmitter from "../../../utils/event_emitter";
|
|
26
|
-
import { getNextRangeGap } from "../../../utils/ranges";
|
|
27
|
-
import { IReadOnlySharedReference } from "../../../utils/reference";
|
|
28
|
-
import TaskCanceller from "../../../utils/task_canceller";
|
|
29
|
-
import {
|
|
30
|
-
IPlaybackObservation,
|
|
31
|
-
PlaybackObserver,
|
|
32
|
-
} from "../../api";
|
|
33
|
-
import { IBufferType } from "../../segment_buffers";
|
|
34
|
-
import { IStallingSituation } from "../types";
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Work-around rounding errors with floating points by setting an acceptable,
|
|
39
|
-
* very short, deviation when checking equalities.
|
|
40
|
-
*/
|
|
41
|
-
const EPSILON = 1 / 60;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Monitor playback, trying to avoid stalling situation.
|
|
45
|
-
* If stopping the player to build buffer is needed, temporarily set the
|
|
46
|
-
* playback rate (i.e. speed) at `0` until enough buffer is available again.
|
|
47
|
-
*
|
|
48
|
-
* Emit "stalled" then "unstalled" respectively when an unavoidable stall is
|
|
49
|
-
* encountered and exited.
|
|
50
|
-
*/
|
|
51
|
-
export default class RebufferingController
|
|
52
|
-
extends EventEmitter<IRebufferingControllerEvent> {
|
|
53
|
-
|
|
54
|
-
/** Emit the current playback conditions */
|
|
55
|
-
private _playbackObserver : PlaybackObserver;
|
|
56
|
-
private _manifest : Manifest | null;
|
|
57
|
-
private _speed : IReadOnlySharedReference<number>;
|
|
58
|
-
private _isStarted : boolean;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Every known audio and video buffer discontinuities in chronological
|
|
62
|
-
* order (first ordered by Period's start, then by bufferType in any order.
|
|
63
|
-
*/
|
|
64
|
-
private _discontinuitiesStore : IDiscontinuityStoredInfo[];
|
|
65
|
-
|
|
66
|
-
private _canceller : TaskCanceller;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* @param {object} playbackObserver - emit the current playback conditions.
|
|
70
|
-
* @param {Object} manifest - The Manifest of the currently-played content.
|
|
71
|
-
* @param {Object} speed - The last speed set by the user
|
|
72
|
-
*/
|
|
73
|
-
constructor(
|
|
74
|
-
playbackObserver : PlaybackObserver,
|
|
75
|
-
manifest: Manifest | null,
|
|
76
|
-
speed : IReadOnlySharedReference<number>
|
|
77
|
-
) {
|
|
78
|
-
super();
|
|
79
|
-
this._playbackObserver = playbackObserver;
|
|
80
|
-
this._manifest = manifest;
|
|
81
|
-
this._speed = speed;
|
|
82
|
-
this._discontinuitiesStore = [];
|
|
83
|
-
this._isStarted = false;
|
|
84
|
-
this._canceller = new TaskCanceller();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public start() : void {
|
|
88
|
-
if (this._isStarted) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
this._isStarted = true;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* On some devices (right now only seen on Tizen), seeking through the
|
|
95
|
-
* `currentTime` property can lead to the browser re-seeking once the
|
|
96
|
-
* segments have been loaded to improve seeking performances (for
|
|
97
|
-
* example, by seeking right to an intra video frame).
|
|
98
|
-
* In that case, we risk being in a conflict with that behavior: if for
|
|
99
|
-
* example we encounter a small discontinuity at the position the browser
|
|
100
|
-
* seeks to, we will seek over it, the browser would seek back and so on.
|
|
101
|
-
*
|
|
102
|
-
* This variable allows to store the last known position we were seeking to
|
|
103
|
-
* so we can detect when the browser seeked back (to avoid performing another
|
|
104
|
-
* seek after that). When browsers seek back to a position behind a
|
|
105
|
-
* discontinuity, they are usually able to skip them without our help.
|
|
106
|
-
*/
|
|
107
|
-
let lastSeekingPosition : number | null;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* In some conditions (see `lastSeekingPosition`), we might want to not
|
|
111
|
-
* automatically seek over discontinuities because the browser might do it
|
|
112
|
-
* itself instead.
|
|
113
|
-
* In that case, we still want to perform the seek ourselves if the browser
|
|
114
|
-
* doesn't do it after sufficient time.
|
|
115
|
-
* This variable allows to store the timestamp at which a discontinuity began
|
|
116
|
-
* to be ignored.
|
|
117
|
-
*/
|
|
118
|
-
let ignoredStallTimeStamp : number | null = null;
|
|
119
|
-
|
|
120
|
-
const playbackRateUpdater = new PlaybackRateUpdater(this._playbackObserver,
|
|
121
|
-
this._speed);
|
|
122
|
-
this._canceller.signal.register(() => {
|
|
123
|
-
playbackRateUpdater.dispose();
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
let prevFreezingState : { attemptTimestamp : number } | null = null;
|
|
127
|
-
|
|
128
|
-
this._playbackObserver.listen((observation) => {
|
|
129
|
-
const discontinuitiesStore = this._discontinuitiesStore;
|
|
130
|
-
const { buffered,
|
|
131
|
-
position,
|
|
132
|
-
readyState,
|
|
133
|
-
rebuffering,
|
|
134
|
-
freezing } = observation;
|
|
135
|
-
|
|
136
|
-
const { BUFFER_DISCONTINUITY_THRESHOLD,
|
|
137
|
-
FORCE_DISCONTINUITY_SEEK_DELAY,
|
|
138
|
-
FREEZING_STALLED_DELAY,
|
|
139
|
-
UNFREEZING_SEEK_DELAY,
|
|
140
|
-
UNFREEZING_DELTA_POSITION } = config.getCurrent();
|
|
141
|
-
|
|
142
|
-
if (
|
|
143
|
-
!observation.seeking &&
|
|
144
|
-
isSeekingApproximate &&
|
|
145
|
-
ignoredStallTimeStamp === null &&
|
|
146
|
-
lastSeekingPosition !== null && observation.position < lastSeekingPosition)
|
|
147
|
-
{
|
|
148
|
-
log.debug("Init: the device appeared to have seeked back by itself.");
|
|
149
|
-
const now = performance.now();
|
|
150
|
-
ignoredStallTimeStamp = now;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
lastSeekingPosition = observation.seeking ?
|
|
154
|
-
Math.max(observation.pendingInternalSeek ?? 0, observation.position) :
|
|
155
|
-
null;
|
|
156
|
-
|
|
157
|
-
if (freezing !== null) {
|
|
158
|
-
const now = performance.now();
|
|
159
|
-
|
|
160
|
-
const referenceTimestamp = prevFreezingState === null ?
|
|
161
|
-
freezing.timestamp :
|
|
162
|
-
prevFreezingState.attemptTimestamp;
|
|
163
|
-
|
|
164
|
-
if (now - referenceTimestamp > UNFREEZING_SEEK_DELAY) {
|
|
165
|
-
log.warn("Init: trying to seek to un-freeze player");
|
|
166
|
-
this._playbackObserver.setCurrentTime(
|
|
167
|
-
this._playbackObserver.getCurrentTime() + UNFREEZING_DELTA_POSITION);
|
|
168
|
-
prevFreezingState = { attemptTimestamp: now };
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
if (now - freezing.timestamp > FREEZING_STALLED_DELAY) {
|
|
172
|
-
if (rebuffering === null || ignoredStallTimeStamp !== null) {
|
|
173
|
-
playbackRateUpdater.stopRebuffering();
|
|
174
|
-
} else {
|
|
175
|
-
playbackRateUpdater.startRebuffering();
|
|
176
|
-
}
|
|
177
|
-
this.trigger("stalled", "freezing");
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
} else {
|
|
181
|
-
prevFreezingState = null;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (rebuffering === null) {
|
|
185
|
-
playbackRateUpdater.stopRebuffering();
|
|
186
|
-
if (readyState === 1) {
|
|
187
|
-
// With a readyState set to 1, we should still not be able to play:
|
|
188
|
-
// Return that we're stalled
|
|
189
|
-
let reason : IStallingSituation;
|
|
190
|
-
if (observation.seeking) {
|
|
191
|
-
reason = observation.pendingInternalSeek !== null ? "internal-seek" :
|
|
192
|
-
"seeking";
|
|
193
|
-
} else {
|
|
194
|
-
reason = "not-ready";
|
|
195
|
-
}
|
|
196
|
-
this.trigger("stalled", reason);
|
|
197
|
-
return ;
|
|
198
|
-
}
|
|
199
|
-
this.trigger("unstalled", null);
|
|
200
|
-
return ;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// We want to separate a stall situation when a seek is due to a seek done
|
|
204
|
-
// internally by the player to when its due to a regular user seek.
|
|
205
|
-
const stalledReason = rebuffering.reason === "seeking" &&
|
|
206
|
-
observation.pendingInternalSeek !== null ?
|
|
207
|
-
"internal-seek" as const :
|
|
208
|
-
rebuffering.reason;
|
|
209
|
-
|
|
210
|
-
if (ignoredStallTimeStamp !== null) {
|
|
211
|
-
const now = performance.now();
|
|
212
|
-
if (now - ignoredStallTimeStamp < FORCE_DISCONTINUITY_SEEK_DELAY) {
|
|
213
|
-
playbackRateUpdater.stopRebuffering();
|
|
214
|
-
log.debug("Init: letting the device get out of a stall by itself");
|
|
215
|
-
this.trigger("stalled", stalledReason);
|
|
216
|
-
return ;
|
|
217
|
-
} else {
|
|
218
|
-
log.warn("Init: ignored stall for too long, checking discontinuity",
|
|
219
|
-
now - ignoredStallTimeStamp);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
ignoredStallTimeStamp = null;
|
|
224
|
-
playbackRateUpdater.startRebuffering();
|
|
225
|
-
|
|
226
|
-
if (this._manifest === null) {
|
|
227
|
-
this.trigger("stalled", stalledReason);
|
|
228
|
-
return ;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/** Position at which data is awaited. */
|
|
232
|
-
const { position: stalledPosition } = rebuffering;
|
|
233
|
-
|
|
234
|
-
if (stalledPosition !== null &&
|
|
235
|
-
stalledPosition !== undefined &&
|
|
236
|
-
this._speed.getValue() > 0)
|
|
237
|
-
{
|
|
238
|
-
const skippableDiscontinuity = findSeekableDiscontinuity(discontinuitiesStore,
|
|
239
|
-
this._manifest,
|
|
240
|
-
stalledPosition);
|
|
241
|
-
if (skippableDiscontinuity !== null) {
|
|
242
|
-
const realSeekTime = skippableDiscontinuity + 0.001;
|
|
243
|
-
if (realSeekTime <= this._playbackObserver.getCurrentTime()) {
|
|
244
|
-
log.info("Init: position to seek already reached, no seeking",
|
|
245
|
-
this._playbackObserver.getCurrentTime(), realSeekTime);
|
|
246
|
-
} else {
|
|
247
|
-
log.warn("SA: skippable discontinuity found in the stream",
|
|
248
|
-
position, realSeekTime);
|
|
249
|
-
this._playbackObserver.setCurrentTime(realSeekTime);
|
|
250
|
-
this.trigger("warning", generateDiscontinuityError(stalledPosition,
|
|
251
|
-
realSeekTime));
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
const freezePosition = stalledPosition ?? position;
|
|
258
|
-
|
|
259
|
-
// Is it a very short discontinuity in buffer ? -> Seek at the beginning of the
|
|
260
|
-
// next range
|
|
261
|
-
//
|
|
262
|
-
// Discontinuity check in case we are close a buffered range but still
|
|
263
|
-
// calculate a stalled state. This is useful for some
|
|
264
|
-
// implementation that might drop an injected segment, or in
|
|
265
|
-
// case of small discontinuity in the content.
|
|
266
|
-
const nextBufferRangeGap = getNextRangeGap(buffered, freezePosition);
|
|
267
|
-
if (
|
|
268
|
-
this._speed.getValue() > 0 &&
|
|
269
|
-
nextBufferRangeGap < BUFFER_DISCONTINUITY_THRESHOLD
|
|
270
|
-
) {
|
|
271
|
-
const seekTo = (freezePosition + nextBufferRangeGap + EPSILON);
|
|
272
|
-
if (this._playbackObserver.getCurrentTime() < seekTo) {
|
|
273
|
-
log.warn("Init: discontinuity encountered inferior to the threshold",
|
|
274
|
-
freezePosition, seekTo, BUFFER_DISCONTINUITY_THRESHOLD);
|
|
275
|
-
this._playbackObserver.setCurrentTime(seekTo);
|
|
276
|
-
this.trigger("warning", generateDiscontinuityError(freezePosition, seekTo));
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
// Are we in a discontinuity between periods ? -> Seek at the beginning of the
|
|
282
|
-
// next period
|
|
283
|
-
for (let i = this._manifest.periods.length - 2; i >= 0; i--) {
|
|
284
|
-
const period = this._manifest.periods[i];
|
|
285
|
-
if (period.end !== undefined && period.end <= freezePosition) {
|
|
286
|
-
if (this._manifest.periods[i + 1].start > freezePosition &&
|
|
287
|
-
this._manifest.periods[i + 1].start >
|
|
288
|
-
this._playbackObserver.getCurrentTime())
|
|
289
|
-
{
|
|
290
|
-
const nextPeriod = this._manifest.periods[i + 1];
|
|
291
|
-
this._playbackObserver.setCurrentTime(nextPeriod.start);
|
|
292
|
-
this.trigger("warning", generateDiscontinuityError(freezePosition,
|
|
293
|
-
nextPeriod.start));
|
|
294
|
-
return;
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
break;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
this.trigger("stalled", stalledReason);
|
|
302
|
-
}, { includeLastObservation: true, clearSignal: this._canceller.signal });
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Update information on an upcoming discontinuity for a given buffer type and
|
|
307
|
-
* Period.
|
|
308
|
-
* Each new update for the same Period and type overwrites the previous one.
|
|
309
|
-
* @param {Object} evt
|
|
310
|
-
*/
|
|
311
|
-
public updateDiscontinuityInfo(evt: IDiscontinuityEvent) : void {
|
|
312
|
-
if (!this._isStarted) {
|
|
313
|
-
this.start();
|
|
314
|
-
}
|
|
315
|
-
const lastObservation = this._playbackObserver.getReference().getValue();
|
|
316
|
-
updateDiscontinuitiesStore(this._discontinuitiesStore, evt, lastObservation);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Function to call when a Stream is currently locked, i.e. we cannot load
|
|
321
|
-
* segments for the corresponding Period and buffer type until it is seeked
|
|
322
|
-
* to.
|
|
323
|
-
* @param {string} bufferType - Buffer type for which no segment will
|
|
324
|
-
* currently load.
|
|
325
|
-
* @param {Object} period - Period for which no segment will currently load.
|
|
326
|
-
*/
|
|
327
|
-
public onLockedStream(bufferType : IBufferType, period : Period) : void {
|
|
328
|
-
if (!this._isStarted) {
|
|
329
|
-
this.start();
|
|
330
|
-
}
|
|
331
|
-
const observation = this._playbackObserver.getReference().getValue();
|
|
332
|
-
if (
|
|
333
|
-
!observation.rebuffering ||
|
|
334
|
-
observation.paused ||
|
|
335
|
-
this._speed.getValue() <= 0 || (
|
|
336
|
-
bufferType !== "audio" &&
|
|
337
|
-
bufferType !== "video"
|
|
338
|
-
)
|
|
339
|
-
) {
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
const currPos = observation.position;
|
|
343
|
-
const rebufferingPos = observation.rebuffering.position ?? currPos;
|
|
344
|
-
const lockedPeriodStart = period.start;
|
|
345
|
-
if (currPos < lockedPeriodStart &&
|
|
346
|
-
Math.abs(rebufferingPos - lockedPeriodStart) < 1)
|
|
347
|
-
{
|
|
348
|
-
log.warn("Init: rebuffering because of a future locked stream.\n" +
|
|
349
|
-
"Trying to unlock by seeking to the next Period");
|
|
350
|
-
this._playbackObserver.setCurrentTime(lockedPeriodStart + 0.001);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* Stops the `RebufferingController` from montoring stalling situations,
|
|
356
|
-
* forever.
|
|
357
|
-
*/
|
|
358
|
-
public destroy() : void {
|
|
359
|
-
this._canceller.cancel();
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* @param {Array.<Object>} discontinuitiesStore
|
|
365
|
-
* @param {Object} manifest
|
|
366
|
-
* @param {number} stalledPosition
|
|
367
|
-
* @returns {number|null}
|
|
368
|
-
*/
|
|
369
|
-
function findSeekableDiscontinuity(
|
|
370
|
-
discontinuitiesStore : IDiscontinuityStoredInfo[],
|
|
371
|
-
manifest : Manifest,
|
|
372
|
-
stalledPosition : number
|
|
373
|
-
) : number | null {
|
|
374
|
-
if (discontinuitiesStore.length === 0) {
|
|
375
|
-
return null;
|
|
376
|
-
}
|
|
377
|
-
let maxDiscontinuityEnd : number | null = null;
|
|
378
|
-
for (let i = 0; i < discontinuitiesStore.length; i++) {
|
|
379
|
-
const { period } = discontinuitiesStore[i];
|
|
380
|
-
if (period.start > stalledPosition) {
|
|
381
|
-
return maxDiscontinuityEnd;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
let discontinuityEnd : number | undefined;
|
|
385
|
-
|
|
386
|
-
if (period.end === undefined || period.end > stalledPosition) {
|
|
387
|
-
const { discontinuity, position } = discontinuitiesStore[i];
|
|
388
|
-
const { start, end } = discontinuity;
|
|
389
|
-
const discontinuityLowerLimit = start ?? position;
|
|
390
|
-
if (stalledPosition >= (discontinuityLowerLimit - EPSILON)) {
|
|
391
|
-
if (end === null) {
|
|
392
|
-
const nextPeriod = manifest.getPeriodAfter(period);
|
|
393
|
-
if (nextPeriod !== null) {
|
|
394
|
-
discontinuityEnd = nextPeriod.start + EPSILON;
|
|
395
|
-
} else {
|
|
396
|
-
log.warn("Init: discontinuity at Period's end but no next Period");
|
|
397
|
-
}
|
|
398
|
-
} else if (stalledPosition < (end + EPSILON)) {
|
|
399
|
-
discontinuityEnd = end + EPSILON;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
if (discontinuityEnd !== undefined) {
|
|
403
|
-
log.info("Init: discontinuity found", stalledPosition, discontinuityEnd);
|
|
404
|
-
maxDiscontinuityEnd =
|
|
405
|
-
maxDiscontinuityEnd !== null &&
|
|
406
|
-
maxDiscontinuityEnd > discontinuityEnd ? maxDiscontinuityEnd :
|
|
407
|
-
discontinuityEnd;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
return maxDiscontinuityEnd;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Return `true` if the given event indicates that a discontinuity is present.
|
|
416
|
-
* @param {Object} evt
|
|
417
|
-
* @returns {Array.<Object>}
|
|
418
|
-
*/
|
|
419
|
-
function eventContainsDiscontinuity(
|
|
420
|
-
evt : IDiscontinuityEvent
|
|
421
|
-
) : evt is IDiscontinuityStoredInfo {
|
|
422
|
-
return evt.discontinuity !== null;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* Update the `discontinuitiesStore` Object with the given event information:
|
|
427
|
-
*
|
|
428
|
-
* - If that event indicates than no discontinuity is found for a Period
|
|
429
|
-
* and buffer type, remove a possible existing discontinuity for that
|
|
430
|
-
* combination.
|
|
431
|
-
*
|
|
432
|
-
* - If that event indicates that a discontinuity can be found for a Period
|
|
433
|
-
* and buffer type, replace previous occurences for that combination and
|
|
434
|
-
* store it in Period's chronological order in the Array.
|
|
435
|
-
* @param {Array.<Object>} discontinuitiesStore
|
|
436
|
-
* @param {Object} evt
|
|
437
|
-
* @param {Object} observation
|
|
438
|
-
* @returns {Array.<Object>}
|
|
439
|
-
*/
|
|
440
|
-
function updateDiscontinuitiesStore(
|
|
441
|
-
discontinuitiesStore : IDiscontinuityStoredInfo[],
|
|
442
|
-
evt : IDiscontinuityEvent,
|
|
443
|
-
observation : IPlaybackObservation
|
|
444
|
-
) : void {
|
|
445
|
-
// First, perform clean-up of old discontinuities
|
|
446
|
-
while (discontinuitiesStore.length > 0 &&
|
|
447
|
-
discontinuitiesStore[0].period.end !== undefined &&
|
|
448
|
-
discontinuitiesStore[0].period.end + 10 < observation.position)
|
|
449
|
-
{
|
|
450
|
-
discontinuitiesStore.shift();
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
const { period, bufferType } = evt;
|
|
454
|
-
if (bufferType !== "audio" && bufferType !== "video") {
|
|
455
|
-
return ;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
for (let i = 0; i < discontinuitiesStore.length; i++) {
|
|
459
|
-
if (discontinuitiesStore[i].period.id === period.id) {
|
|
460
|
-
if (discontinuitiesStore[i].bufferType === bufferType) {
|
|
461
|
-
if (!eventContainsDiscontinuity(evt)) {
|
|
462
|
-
discontinuitiesStore.splice(i, 1);
|
|
463
|
-
} else {
|
|
464
|
-
discontinuitiesStore[i] = evt;
|
|
465
|
-
}
|
|
466
|
-
return ;
|
|
467
|
-
}
|
|
468
|
-
} else if (discontinuitiesStore[i].period.start > period.start) {
|
|
469
|
-
if (eventContainsDiscontinuity(evt)) {
|
|
470
|
-
discontinuitiesStore.splice(i, 0, evt);
|
|
471
|
-
}
|
|
472
|
-
return ;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
if (eventContainsDiscontinuity(evt)) {
|
|
476
|
-
discontinuitiesStore.push(evt);
|
|
477
|
-
}
|
|
478
|
-
return ;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
/**
|
|
482
|
-
* Generate error emitted when a discontinuity has been encountered.
|
|
483
|
-
* @param {number} stalledPosition
|
|
484
|
-
* @param {number} seekTo
|
|
485
|
-
* @returns {Error}
|
|
486
|
-
*/
|
|
487
|
-
function generateDiscontinuityError(
|
|
488
|
-
stalledPosition : number,
|
|
489
|
-
seekTo : number
|
|
490
|
-
) : MediaError {
|
|
491
|
-
return new MediaError("DISCONTINUITY_ENCOUNTERED",
|
|
492
|
-
"A discontinuity has been encountered at position " +
|
|
493
|
-
String(stalledPosition) + ", seeked at position " +
|
|
494
|
-
String(seekTo));
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
/**
|
|
498
|
-
* Manage playback speed, allowing to force a playback rate of `0` when
|
|
499
|
-
* rebuffering is wanted.
|
|
500
|
-
*
|
|
501
|
-
* Only one `PlaybackRateUpdater` should be created per HTMLMediaElement.
|
|
502
|
-
* Note that the `PlaybackRateUpdater` reacts to playback event and wanted
|
|
503
|
-
* speed change. You should call its `dispose` method once you don't need it
|
|
504
|
-
* anymore.
|
|
505
|
-
* @class PlaybackRateUpdater
|
|
506
|
-
*/
|
|
507
|
-
class PlaybackRateUpdater {
|
|
508
|
-
private _playbackObserver : PlaybackObserver;
|
|
509
|
-
private _speed : IReadOnlySharedReference<number>;
|
|
510
|
-
private _speedUpdateCanceller : TaskCanceller;
|
|
511
|
-
private _isRebuffering : boolean;
|
|
512
|
-
private _isDisposed : boolean;
|
|
513
|
-
|
|
514
|
-
/**
|
|
515
|
-
* Create a new `PlaybackRateUpdater`.
|
|
516
|
-
* @param {Object} playbackObserver
|
|
517
|
-
* @param {Object} speed
|
|
518
|
-
*/
|
|
519
|
-
constructor(
|
|
520
|
-
playbackObserver : PlaybackObserver,
|
|
521
|
-
speed : IReadOnlySharedReference<number>
|
|
522
|
-
) {
|
|
523
|
-
this._speedUpdateCanceller = new TaskCanceller();
|
|
524
|
-
this._isRebuffering = false;
|
|
525
|
-
this._playbackObserver = playbackObserver;
|
|
526
|
-
this._isDisposed = false;
|
|
527
|
-
this._speed = speed;
|
|
528
|
-
this._updateSpeed();
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* Force the playback rate to `0`, to start a rebuffering phase.
|
|
533
|
-
*
|
|
534
|
-
* You can call `stopRebuffering` when you want the rebuffering phase to end.
|
|
535
|
-
*/
|
|
536
|
-
public startRebuffering() : void {
|
|
537
|
-
if (this._isRebuffering || this._isDisposed) {
|
|
538
|
-
return;
|
|
539
|
-
}
|
|
540
|
-
this._isRebuffering = true;
|
|
541
|
-
this._speedUpdateCanceller.cancel();
|
|
542
|
-
log.info("Init: Pause playback to build buffer");
|
|
543
|
-
this._playbackObserver.setPlaybackRate(0);
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
/**
|
|
547
|
-
* If in a rebuffering phase (during which the playback rate is forced to
|
|
548
|
-
* `0`), exit that phase to apply the wanted playback rate instead.
|
|
549
|
-
*
|
|
550
|
-
* Do nothing if not in a rebuffering phase.
|
|
551
|
-
*/
|
|
552
|
-
public stopRebuffering() {
|
|
553
|
-
if (!this._isRebuffering || this._isDisposed) {
|
|
554
|
-
return;
|
|
555
|
-
}
|
|
556
|
-
this._isRebuffering = false;
|
|
557
|
-
this._speedUpdateCanceller = new TaskCanceller();
|
|
558
|
-
this._updateSpeed();
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
/**
|
|
562
|
-
* The `PlaybackRateUpdater` allocate resources to for example listen to
|
|
563
|
-
* wanted speed changes and react to it.
|
|
564
|
-
*
|
|
565
|
-
* Consequently, you should call the `dispose` method, when you don't want the
|
|
566
|
-
* `PlaybackRateUpdater` to have an effect anymore.
|
|
567
|
-
*/
|
|
568
|
-
public dispose() {
|
|
569
|
-
this._speedUpdateCanceller.cancel();
|
|
570
|
-
this._isDisposed = true;
|
|
571
|
-
}
|
|
572
|
-
|
|
573
|
-
private _updateSpeed() {
|
|
574
|
-
this._speed.onUpdate((lastSpeed) => {
|
|
575
|
-
log.info("Init: Resume playback speed", lastSpeed);
|
|
576
|
-
this._playbackObserver.setPlaybackRate(lastSpeed);
|
|
577
|
-
}, { clearSignal: this._speedUpdateCanceller.signal, emitCurrentValue: true });
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
export interface IRebufferingControllerEvent {
|
|
582
|
-
stalled : IStallingSituation;
|
|
583
|
-
unstalled : null;
|
|
584
|
-
warning : IPlayerError;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
/**
|
|
588
|
-
* Event indicating that a discontinuity has been found.
|
|
589
|
-
* Each event for a `bufferType` and `period` combination replaces the previous
|
|
590
|
-
* one.
|
|
591
|
-
*/
|
|
592
|
-
export interface IDiscontinuityEvent {
|
|
593
|
-
/** Buffer type concerned by the discontinuity. */
|
|
594
|
-
bufferType : IBufferType;
|
|
595
|
-
/** Period concerned by the discontinuity. */
|
|
596
|
-
period : Period;
|
|
597
|
-
/**
|
|
598
|
-
* Close discontinuity time information.
|
|
599
|
-
* `null` if no discontinuity has been detected currently for that buffer
|
|
600
|
-
* type and Period.
|
|
601
|
-
*/
|
|
602
|
-
discontinuity : IDiscontinuityTimeInfo | null;
|
|
603
|
-
/**
|
|
604
|
-
* Position at which the discontinuity was found.
|
|
605
|
-
* Can be important for when a current discontinuity's start is unknown.
|
|
606
|
-
*/
|
|
607
|
-
position : number;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
/** Information on a found discontinuity. */
|
|
611
|
-
export interface IDiscontinuityTimeInfo {
|
|
612
|
-
/**
|
|
613
|
-
* Start time of the discontinuity.
|
|
614
|
-
* `undefined` for when the start is unknown but the discontinuity was
|
|
615
|
-
* currently encountered at the position we were in when this event was
|
|
616
|
-
* created.
|
|
617
|
-
*/
|
|
618
|
-
start : number | undefined;
|
|
619
|
-
/**
|
|
620
|
-
* End time of the discontinuity, in seconds.
|
|
621
|
-
* If `null`, no further segment can be loaded for the corresponding Period.
|
|
622
|
-
*/
|
|
623
|
-
end : number | null;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
/**
|
|
627
|
-
* Internally stored information about a known discontinuity in the audio or
|
|
628
|
-
* video buffer.
|
|
629
|
-
*/
|
|
630
|
-
interface IDiscontinuityStoredInfo {
|
|
631
|
-
/** Buffer type concerned by the discontinuity. */
|
|
632
|
-
bufferType : IBufferType;
|
|
633
|
-
/** Period concerned by the discontinuity. */
|
|
634
|
-
period : Period;
|
|
635
|
-
/** Discontinuity time information. */
|
|
636
|
-
discontinuity : IDiscontinuityTimeInfo;
|
|
637
|
-
/**
|
|
638
|
-
* Position at which the discontinuity was found.
|
|
639
|
-
* Can be important for when a current discontinuity's start is unknown.
|
|
640
|
-
*/
|
|
641
|
-
position : number;
|
|
642
|
-
}
|
|
@@ -1,42 +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
|
-
/**
|
|
18
|
-
* Compare 2 events.
|
|
19
|
-
* As the payload of two events may be the same, but the JS objects may not
|
|
20
|
-
* have the same references, it may be difficult to compare them.
|
|
21
|
-
* If two events start and end at the same moment, and possess the same id,
|
|
22
|
-
* we consider the two to be the same.
|
|
23
|
-
* /!\ However, the DASH-if spec does not say that the event payload
|
|
24
|
-
* may be the same if these conditions are met. Thus, there are high chances
|
|
25
|
-
* that it may be the case.
|
|
26
|
-
* TODO See if we can compare payloads
|
|
27
|
-
* @param {Object} evt1
|
|
28
|
-
* @param {Object} evt2
|
|
29
|
-
* @returns {Boolean}
|
|
30
|
-
*/
|
|
31
|
-
function areSameStreamEvents(evt1: { id?: string | undefined;
|
|
32
|
-
start: number;
|
|
33
|
-
end?: number | undefined; },
|
|
34
|
-
evt2: { id?: string | undefined;
|
|
35
|
-
start: number;
|
|
36
|
-
end?: number | undefined; }): boolean {
|
|
37
|
-
return evt1.id === evt2.id &&
|
|
38
|
-
evt1.start === evt2.start &&
|
|
39
|
-
evt1.end === evt2.end;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export default areSameStreamEvents;
|
|
@@ -1,22 +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 streamEventsEmitter from "./stream_events_emitter";
|
|
18
|
-
export {
|
|
19
|
-
IPublicNonFiniteStreamEvent,
|
|
20
|
-
IPublicStreamEvent,
|
|
21
|
-
} from "./types";
|
|
22
|
-
export default streamEventsEmitter;
|