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,617 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import config from "../../../../config";
|
|
18
|
-
import log from "../../../../log";
|
|
19
|
-
import Manifest, {
|
|
20
|
-
Adaptation,
|
|
21
|
-
areSameContent,
|
|
22
|
-
ISegment,
|
|
23
|
-
Period,
|
|
24
|
-
Representation,
|
|
25
|
-
} from "../../../../manifest";
|
|
26
|
-
import objectAssign from "../../../../utils/object_assign";
|
|
27
|
-
import { IBufferedChunk, IEndOfSegmentInfos } from "../../../segment_buffers";
|
|
28
|
-
import {
|
|
29
|
-
IBufferedHistoryEntry,
|
|
30
|
-
IChunkContext,
|
|
31
|
-
} from "../../../segment_buffers/inventory";
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
interface IContentContext {
|
|
35
|
-
adaptation: Adaptation;
|
|
36
|
-
manifest: Manifest;
|
|
37
|
-
period: Period;
|
|
38
|
-
representation: Representation;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
/** Arguments for `getNeededSegments`. */
|
|
43
|
-
export interface IGetNeededSegmentsArguments {
|
|
44
|
-
/** The content we want to load segments for */
|
|
45
|
-
content: IContentContext;
|
|
46
|
-
/**
|
|
47
|
-
* The current playing position.
|
|
48
|
-
* Important to avoid asking for segments on the same exact position, which
|
|
49
|
-
* can be problematic in some browsers.
|
|
50
|
-
*/
|
|
51
|
-
currentPlaybackTime: number;
|
|
52
|
-
/**
|
|
53
|
-
* This threshold defines a bitrate from which "fast-switching" is disabled.
|
|
54
|
-
* For example with a fastSwitchThreshold set to `100`, segments with a
|
|
55
|
-
* bitrate of `90` can be replaced. But segments with a bitrate of `100`
|
|
56
|
-
* onward won't be replaced by higher quality segments.
|
|
57
|
-
* Set to `undefined` to indicate that there's no threshold (anything can be
|
|
58
|
-
* replaced by higher-quality segments).
|
|
59
|
-
*/
|
|
60
|
-
fastSwitchThreshold : number | undefined;
|
|
61
|
-
/** The range we want to fill with segments. */
|
|
62
|
-
neededRange : { start: number; end: number };
|
|
63
|
-
/** The list of segments that are already in the process of being pushed. */
|
|
64
|
-
segmentsBeingPushed : IEndOfSegmentInfos[];
|
|
65
|
-
/**
|
|
66
|
-
* Information on the segments already in the buffer, in chronological order.
|
|
67
|
-
*
|
|
68
|
-
* The data for the whole buffer is not necessary, as only data around the
|
|
69
|
-
* current range will be looked at.
|
|
70
|
-
* It is important to include segments close to - though not in - that range
|
|
71
|
-
* (let's say around 5 seconds) however to avoid some segments being
|
|
72
|
-
* re-requested.
|
|
73
|
-
*/
|
|
74
|
-
bufferedSegments : IBufferedChunk[];
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* maxBufferSize is the maximum memory in kilobytes that the buffer should take
|
|
78
|
-
*/
|
|
79
|
-
maxBufferSize: number;
|
|
80
|
-
|
|
81
|
-
getBufferedHistory : (context : IChunkContext) => IBufferedHistoryEntry[];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
interface INeededSegments {
|
|
86
|
-
/** Segments that should be loaded right now, by chronological order. */
|
|
87
|
-
segmentsToLoad: ISegment[];
|
|
88
|
-
/**
|
|
89
|
-
* Segments that should be loaded, but not right now, due to some other
|
|
90
|
-
* constraints, such as memory limitations.
|
|
91
|
-
*/
|
|
92
|
-
segmentsOnHold : ISegment[];
|
|
93
|
-
/**
|
|
94
|
-
* If `true` the buffer is currently full according to the given limits.
|
|
95
|
-
* Memory should be freed if possible, for example by cleaning the buffers.
|
|
96
|
-
*/
|
|
97
|
-
isBufferFull: boolean;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Return the list of segments that can currently be downloaded to fill holes
|
|
101
|
-
* in the buffer in the given range, including already-pushed segments currently
|
|
102
|
-
* incomplete in the buffer.
|
|
103
|
-
* This list might also include already-loaded segments in a higher bitrate,
|
|
104
|
-
* according to the given configuration.
|
|
105
|
-
* Excludes segment that are already being pushed.
|
|
106
|
-
* @param {Object} args
|
|
107
|
-
* @returns {Array.<Object>}
|
|
108
|
-
*/
|
|
109
|
-
export default function getNeededSegments({
|
|
110
|
-
bufferedSegments,
|
|
111
|
-
content,
|
|
112
|
-
currentPlaybackTime,
|
|
113
|
-
fastSwitchThreshold,
|
|
114
|
-
getBufferedHistory,
|
|
115
|
-
neededRange,
|
|
116
|
-
segmentsBeingPushed,
|
|
117
|
-
maxBufferSize,
|
|
118
|
-
} : IGetNeededSegmentsArguments) : INeededSegments {
|
|
119
|
-
const { adaptation, representation } = content;
|
|
120
|
-
let availableBufferSize = getAvailableBufferSize(bufferedSegments,
|
|
121
|
-
segmentsBeingPushed,
|
|
122
|
-
maxBufferSize);
|
|
123
|
-
|
|
124
|
-
const availableSegmentsForRange = representation.index
|
|
125
|
-
.getSegments(neededRange.start, neededRange.end - neededRange.start);
|
|
126
|
-
|
|
127
|
-
// Remove from `bufferedSegments` any segments we would prefer to replace:
|
|
128
|
-
// - segments in the wrong track / bad quality
|
|
129
|
-
// - garbage-collected segments
|
|
130
|
-
const segmentsToKeep = bufferedSegments
|
|
131
|
-
.filter((bufferedSegment) => !shouldContentBeReplaced(bufferedSegment.infos,
|
|
132
|
-
content,
|
|
133
|
-
currentPlaybackTime,
|
|
134
|
-
fastSwitchThreshold))
|
|
135
|
-
.filter((currentSeg, i, consideredSegments) => {
|
|
136
|
-
const prevSeg = i === 0 ? null :
|
|
137
|
-
consideredSegments[i - 1];
|
|
138
|
-
const nextSeg = i >= consideredSegments.length - 1 ? null :
|
|
139
|
-
consideredSegments[i + 1];
|
|
140
|
-
|
|
141
|
-
let lazySegmentHistory : IBufferedHistoryEntry[] | null = null;
|
|
142
|
-
if (doesStartSeemGarbageCollected(currentSeg, prevSeg, neededRange.start)) {
|
|
143
|
-
lazySegmentHistory = getBufferedHistory(currentSeg.infos);
|
|
144
|
-
if (shouldReloadSegmentGCedAtTheStart(lazySegmentHistory,
|
|
145
|
-
currentSeg.bufferedStart)) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
log.debug("Stream: skipping segment gc-ed at the start",
|
|
149
|
-
currentSeg.start,
|
|
150
|
-
currentSeg.bufferedStart);
|
|
151
|
-
}
|
|
152
|
-
if (doesEndSeemGarbageCollected(currentSeg, nextSeg, neededRange.end)) {
|
|
153
|
-
lazySegmentHistory = lazySegmentHistory ?? getBufferedHistory(currentSeg.infos);
|
|
154
|
-
if (shouldReloadSegmentGCedAtTheEnd(lazySegmentHistory,
|
|
155
|
-
currentSeg.bufferedEnd)) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
log.debug("Stream: skipping segment gc-ed at the end",
|
|
159
|
-
currentSeg.end,
|
|
160
|
-
currentSeg.bufferedEnd);
|
|
161
|
-
}
|
|
162
|
-
return true;
|
|
163
|
-
});
|
|
164
|
-
const { MINIMUM_SEGMENT_SIZE,
|
|
165
|
-
MIN_BUFFER_AHEAD } = config.getCurrent();
|
|
166
|
-
let shouldStopLoadingSegments = false;
|
|
167
|
-
/**
|
|
168
|
-
* Epsilon compensating for rounding errors when comparing the start and end
|
|
169
|
-
* time of multiple segments.
|
|
170
|
-
*/
|
|
171
|
-
const ROUNDING_ERROR = Math.min(1 / 60, MINIMUM_SEGMENT_SIZE);
|
|
172
|
-
let isBufferFull = false;
|
|
173
|
-
const segmentsOnHold : ISegment[] = [];
|
|
174
|
-
const segmentsToLoad = availableSegmentsForRange.filter(segment => {
|
|
175
|
-
const contentObject = objectAssign({ segment }, content);
|
|
176
|
-
|
|
177
|
-
// First, check that the segment is not already being pushed
|
|
178
|
-
if (segmentsBeingPushed.length > 0) {
|
|
179
|
-
const isAlreadyBeingPushed = segmentsBeingPushed
|
|
180
|
-
.some((pendingSegment) => areSameContent(contentObject, pendingSegment));
|
|
181
|
-
if (isAlreadyBeingPushed) {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
const { duration, time, end } = segment;
|
|
187
|
-
if (segment.isInit) {
|
|
188
|
-
return true; // never skip initialization segments
|
|
189
|
-
}
|
|
190
|
-
if (shouldStopLoadingSegments) {
|
|
191
|
-
segmentsOnHold.push(segment);
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
if (segment.complete && duration < MINIMUM_SEGMENT_SIZE) {
|
|
195
|
-
return false; // too small, don't download
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Check if the same segment from another Representation is not already
|
|
199
|
-
// being pushed.
|
|
200
|
-
if (segmentsBeingPushed.length > 0) {
|
|
201
|
-
const waitForPushedSegment = segmentsBeingPushed.some((pendingSegment) => {
|
|
202
|
-
if (pendingSegment.period.id !== content.period.id ||
|
|
203
|
-
pendingSegment.adaptation.id !== content.adaptation.id)
|
|
204
|
-
{
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
const { segment: oldSegment } = pendingSegment;
|
|
208
|
-
if ((oldSegment.time - ROUNDING_ERROR) > time) {
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
if ((oldSegment.end + ROUNDING_ERROR) < end) {
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
return !shouldContentBeReplaced(pendingSegment,
|
|
215
|
-
contentObject,
|
|
216
|
-
currentPlaybackTime,
|
|
217
|
-
fastSwitchThreshold);
|
|
218
|
-
});
|
|
219
|
-
if (waitForPushedSegment) {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// check if the segment is already downloaded
|
|
225
|
-
for (let i = 0; i < segmentsToKeep.length; i++) {
|
|
226
|
-
const completeSeg = segmentsToKeep[i];
|
|
227
|
-
const areFromSamePeriod = completeSeg.infos.period.id === content.period.id;
|
|
228
|
-
// Check if content are from same period, as there can't be overlapping
|
|
229
|
-
// periods, we should consider a segment as already downloaded if
|
|
230
|
-
// it is from same period (but can be from different adaptation or
|
|
231
|
-
// representation)
|
|
232
|
-
if (areFromSamePeriod) {
|
|
233
|
-
const completeSegInfos = completeSeg.infos.segment;
|
|
234
|
-
if (time - completeSegInfos.time > -ROUNDING_ERROR &&
|
|
235
|
-
completeSegInfos.end - end > -ROUNDING_ERROR)
|
|
236
|
-
{
|
|
237
|
-
return false; // already downloaded
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const estimatedSegmentSize = (duration * content.representation.bitrate); // in bits
|
|
243
|
-
if (availableBufferSize - estimatedSegmentSize < 0) {
|
|
244
|
-
isBufferFull = true;
|
|
245
|
-
if (time > neededRange.start + MIN_BUFFER_AHEAD) {
|
|
246
|
-
shouldStopLoadingSegments = true;
|
|
247
|
-
segmentsOnHold.push(segment);
|
|
248
|
-
return false;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// check if the browser is not just garbage collecting it
|
|
253
|
-
const segmentHistory = getBufferedHistory(contentObject);
|
|
254
|
-
if (segmentHistory.length > 1) {
|
|
255
|
-
const lastTimeItWasPushed = segmentHistory[segmentHistory.length - 1];
|
|
256
|
-
const beforeLastTimeItWasPushed = segmentHistory[segmentHistory.length - 2];
|
|
257
|
-
if (lastTimeItWasPushed.buffered === null &&
|
|
258
|
-
beforeLastTimeItWasPushed.buffered === null
|
|
259
|
-
) {
|
|
260
|
-
log.warn("Stream: Segment GCed multiple times in a row, ignoring it.",
|
|
261
|
-
"If this happens a lot and lead to unpleasant experience, please " +
|
|
262
|
-
" check your device's available memory. If it's low when this message " +
|
|
263
|
-
"is emitted, you might want to update the RxPlayer's settings (" +
|
|
264
|
-
"`maxBufferAhead`, `maxVideoBufferSize` etc.) so less memory is used " +
|
|
265
|
-
"by regular media data buffering." +
|
|
266
|
-
adaptation.type,
|
|
267
|
-
representation.id,
|
|
268
|
-
segment.time);
|
|
269
|
-
return false;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// check if there is an hole in place of the segment currently
|
|
274
|
-
for (let i = 0; i < segmentsToKeep.length; i++) {
|
|
275
|
-
const completeSeg = segmentsToKeep[i];
|
|
276
|
-
|
|
277
|
-
// For the first already-loaded segment, take the first one ending after
|
|
278
|
-
// this one' s start
|
|
279
|
-
if ((completeSeg.end + ROUNDING_ERROR) > time) {
|
|
280
|
-
const shouldLoad = completeSeg.start > time + ROUNDING_ERROR ||
|
|
281
|
-
getLastContiguousSegment(segmentsToKeep, i).end <
|
|
282
|
-
end - ROUNDING_ERROR;
|
|
283
|
-
if (shouldLoad) {
|
|
284
|
-
availableBufferSize -= estimatedSegmentSize;
|
|
285
|
-
}
|
|
286
|
-
return shouldLoad;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
availableBufferSize -= estimatedSegmentSize;
|
|
290
|
-
return true;
|
|
291
|
-
});
|
|
292
|
-
return { segmentsToLoad, segmentsOnHold, isBufferFull };
|
|
293
|
-
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Compute the estimated available buffer size in memory in kilobytes
|
|
297
|
-
* @param bufferedSegments
|
|
298
|
-
* @param segmentsBeingPushed
|
|
299
|
-
* @param maxVideoBufferSize
|
|
300
|
-
* @returns availableBufferSize in bits
|
|
301
|
-
*/
|
|
302
|
-
function getAvailableBufferSize(
|
|
303
|
-
bufferedSegments: IBufferedChunk[],
|
|
304
|
-
segmentsBeingPushed: IEndOfSegmentInfos[],
|
|
305
|
-
maxVideoBufferSize: number
|
|
306
|
-
) : number {
|
|
307
|
-
let availableBufferSize = maxVideoBufferSize * 8000; // in bits
|
|
308
|
-
availableBufferSize -= segmentsBeingPushed.reduce((size, segment) => {
|
|
309
|
-
const { bitrate } = segment.representation;
|
|
310
|
-
// Not taking into account the fact that the segment
|
|
311
|
-
// can still be generated and the duration not fully exact
|
|
312
|
-
const { duration } = segment.segment;
|
|
313
|
-
return size + (bitrate * duration);
|
|
314
|
-
}, 0);
|
|
315
|
-
return bufferedSegments.reduce((size, chunk) => {
|
|
316
|
-
if (chunk.chunkSize !== undefined) {
|
|
317
|
-
return size - (chunk.chunkSize * 8); // in bits
|
|
318
|
-
} else {
|
|
319
|
-
return size;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
} , availableBufferSize);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* From the given array of buffered chunks (`bufferedSegments`) returns the last
|
|
327
|
-
* buffered chunk contiguous with the one at the `startIndex` index given.
|
|
328
|
-
* @param {Array.<Object>}
|
|
329
|
-
* @param {number} startIndex
|
|
330
|
-
* @returns {Object}
|
|
331
|
-
*/
|
|
332
|
-
function getLastContiguousSegment(
|
|
333
|
-
bufferedSegments : IBufferedChunk[],
|
|
334
|
-
startIndex : number
|
|
335
|
-
) : IBufferedChunk {
|
|
336
|
-
let j = startIndex + 1;
|
|
337
|
-
const { MINIMUM_SEGMENT_SIZE } = config.getCurrent();
|
|
338
|
-
/**
|
|
339
|
-
* Epsilon compensating for rounding errors when comparing the start and end
|
|
340
|
-
* time of multiple segments.
|
|
341
|
-
*/
|
|
342
|
-
const ROUNDING_ERROR = Math.min(1 / 60, MINIMUM_SEGMENT_SIZE);
|
|
343
|
-
// go through all contiguous segments and take the last one
|
|
344
|
-
while (j < bufferedSegments.length - 1 &&
|
|
345
|
-
(bufferedSegments[j - 1].end + ROUNDING_ERROR) >
|
|
346
|
-
bufferedSegments[j].start)
|
|
347
|
-
{
|
|
348
|
-
j++;
|
|
349
|
-
}
|
|
350
|
-
j--; // index of last contiguous segment
|
|
351
|
-
return bufferedSegments[j];
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* Returns `true` if segments linked to the given `oldContent` currently present
|
|
357
|
-
* in the buffer should be replaced by segments coming from `currentContent`.
|
|
358
|
-
* @param {Object} oldContent
|
|
359
|
-
* @param {Object} currentContent
|
|
360
|
-
* @param {number} currentPlaybackTime
|
|
361
|
-
* @param {number} [fastSwitchThreshold]
|
|
362
|
-
* @returns {boolean}
|
|
363
|
-
*/
|
|
364
|
-
function shouldContentBeReplaced(
|
|
365
|
-
oldContent : IEndOfSegmentInfos,
|
|
366
|
-
currentContent : { adaptation : Adaptation;
|
|
367
|
-
period : Period;
|
|
368
|
-
representation : Representation; },
|
|
369
|
-
currentPlaybackTime: number,
|
|
370
|
-
fastSwitchThreshold? : number
|
|
371
|
-
) : boolean {
|
|
372
|
-
const { CONTENT_REPLACEMENT_PADDING } = config.getCurrent();
|
|
373
|
-
if (oldContent.period.id !== currentContent.period.id) {
|
|
374
|
-
return false; // keep segments from another Period by default.
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
const { segment } = oldContent;
|
|
378
|
-
if (segment.time < (currentPlaybackTime + CONTENT_REPLACEMENT_PADDING)) {
|
|
379
|
-
return false;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
if (oldContent.adaptation.id !== currentContent.adaptation.id) {
|
|
383
|
-
return true; // replace segments from another Adaptation
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return canFastSwitch(oldContent.representation,
|
|
387
|
-
currentContent.representation,
|
|
388
|
-
fastSwitchThreshold);
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
/**
|
|
392
|
-
* Returns `true` if segments from the new Representation can replace
|
|
393
|
-
* previously-loaded segments from the old Representation given.
|
|
394
|
-
*
|
|
395
|
-
* This behavior is called "fast-switching".
|
|
396
|
-
* @param {Object} oldSegmentRepresentation
|
|
397
|
-
* @param {Object} newSegmentRepresentation
|
|
398
|
-
* @param {number|undefined} fastSwitchThreshold
|
|
399
|
-
* @returns {boolean}
|
|
400
|
-
*/
|
|
401
|
-
function canFastSwitch(
|
|
402
|
-
oldSegmentRepresentation : Representation,
|
|
403
|
-
newSegmentRepresentation : Representation,
|
|
404
|
-
fastSwitchThreshold : number | undefined
|
|
405
|
-
) : boolean {
|
|
406
|
-
const oldContentBitrate = oldSegmentRepresentation.bitrate;
|
|
407
|
-
const { BITRATE_REBUFFERING_RATIO } = config.getCurrent();
|
|
408
|
-
if (fastSwitchThreshold === undefined) {
|
|
409
|
-
// only re-load comparatively-poor bitrates for the same Adaptation.
|
|
410
|
-
const bitrateCeil = oldContentBitrate * BITRATE_REBUFFERING_RATIO;
|
|
411
|
-
return newSegmentRepresentation.bitrate > bitrateCeil;
|
|
412
|
-
}
|
|
413
|
-
return oldContentBitrate < fastSwitchThreshold &&
|
|
414
|
-
newSegmentRepresentation.bitrate > oldContentBitrate;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
/**
|
|
418
|
-
* From buffered segment information, return `true` if the given `currentSeg`
|
|
419
|
-
* might have been garbage collected at the start.
|
|
420
|
-
* Return `false` if the segment is complete at least from `maximumStartTime`.
|
|
421
|
-
* @param {Object} currentSeg - The segment information for the segment in
|
|
422
|
-
* question.
|
|
423
|
-
* @param {Object|null} prevSeg - The segment information for the previous
|
|
424
|
-
* buffered segment, if one (`null` if none).
|
|
425
|
-
* @param {number} maximumStartTime - Only consider the data after that time.
|
|
426
|
-
* If `currentSeg` has only been garbage collected for some data which is before
|
|
427
|
-
* that time, we will return `false`.
|
|
428
|
-
*/
|
|
429
|
-
function doesStartSeemGarbageCollected(
|
|
430
|
-
currentSeg : IBufferedChunk,
|
|
431
|
-
prevSeg : IBufferedChunk | null,
|
|
432
|
-
maximumStartTime : number
|
|
433
|
-
) {
|
|
434
|
-
const { MAX_TIME_MISSING_FROM_COMPLETE_SEGMENT } = config.getCurrent();
|
|
435
|
-
if (currentSeg.bufferedStart === undefined) {
|
|
436
|
-
log.warn("Stream: Start of a segment unknown. " +
|
|
437
|
-
"Assuming it is garbage collected by default.",
|
|
438
|
-
currentSeg.start);
|
|
439
|
-
return true;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
if (prevSeg !== null && prevSeg.bufferedEnd !== undefined &&
|
|
443
|
-
(currentSeg.bufferedStart - prevSeg.bufferedEnd < 0.1))
|
|
444
|
-
{
|
|
445
|
-
return false;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
if (maximumStartTime < currentSeg.bufferedStart &&
|
|
449
|
-
currentSeg.bufferedStart - currentSeg.start >
|
|
450
|
-
MAX_TIME_MISSING_FROM_COMPLETE_SEGMENT)
|
|
451
|
-
{
|
|
452
|
-
log.info("Stream: The start of the wanted segment has been garbage collected",
|
|
453
|
-
currentSeg.start,
|
|
454
|
-
currentSeg.bufferedStart);
|
|
455
|
-
return true;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
return false;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* From buffered segment information, return `true` if the given `currentSeg`
|
|
463
|
-
* might have been garbage collected at the end.
|
|
464
|
-
* Return `false` if the segment is complete at least until `minimumEndTime`.
|
|
465
|
-
* @param {Object} currentSeg - The segment information for the segment in
|
|
466
|
-
* question.
|
|
467
|
-
* @param {Object|null} nextSeg - The segment information for the next buffered
|
|
468
|
-
* segment, if one (`null` if none).
|
|
469
|
-
* @param {number} minimumEndTime - Only consider the data before that time.
|
|
470
|
-
* If `currentSeg` has only been garbage collected for some data which is after
|
|
471
|
-
* that time, we will return `false`.
|
|
472
|
-
*/
|
|
473
|
-
function doesEndSeemGarbageCollected(
|
|
474
|
-
currentSeg : IBufferedChunk,
|
|
475
|
-
nextSeg : IBufferedChunk | null,
|
|
476
|
-
minimumEndTime : number
|
|
477
|
-
) {
|
|
478
|
-
const { MAX_TIME_MISSING_FROM_COMPLETE_SEGMENT } = config.getCurrent();
|
|
479
|
-
if (currentSeg.bufferedEnd === undefined) {
|
|
480
|
-
log.warn("Stream: End of a segment unknown. " +
|
|
481
|
-
"Assuming it is garbage collected by default.",
|
|
482
|
-
currentSeg.end);
|
|
483
|
-
return true;
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
if (nextSeg !== null && nextSeg.bufferedStart !== undefined &&
|
|
487
|
-
(nextSeg.bufferedStart - currentSeg.bufferedEnd < 0.1))
|
|
488
|
-
{
|
|
489
|
-
return false;
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
if (minimumEndTime > currentSeg.bufferedEnd &&
|
|
493
|
-
currentSeg.end - currentSeg.bufferedEnd > MAX_TIME_MISSING_FROM_COMPLETE_SEGMENT)
|
|
494
|
-
{
|
|
495
|
-
log.info("Stream: The end of the wanted segment has been garbage collected",
|
|
496
|
-
currentSeg.end,
|
|
497
|
-
currentSeg.bufferedEnd);
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
return false;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
/**
|
|
505
|
-
* Returns `true` if a segment that has been garbage-collected at the start
|
|
506
|
-
* might profit from being re-loaded.
|
|
507
|
-
*
|
|
508
|
-
* Returns `false` if we have a high chance of staying in the same situation
|
|
509
|
-
* after re-loading the segment.
|
|
510
|
-
*
|
|
511
|
-
* This function takes in argument the entries of a SegmentBuffer's history
|
|
512
|
-
* related to the corresponding segment and check if the segment appeared
|
|
513
|
-
* garbage-collected at the start directly after the last few times it was
|
|
514
|
-
* pushed, indicating that the issue might be sourced at a browser issue instead
|
|
515
|
-
* of classical garbage collection.
|
|
516
|
-
*
|
|
517
|
-
* @param {Array.<Object>} segmentEntries
|
|
518
|
-
* @param {number|undefined} currentBufferedStart
|
|
519
|
-
* @returns {boolean}
|
|
520
|
-
*/
|
|
521
|
-
function shouldReloadSegmentGCedAtTheStart(
|
|
522
|
-
segmentEntries : IBufferedHistoryEntry[],
|
|
523
|
-
currentBufferedStart : number | undefined
|
|
524
|
-
) : boolean {
|
|
525
|
-
if (segmentEntries.length < 2) {
|
|
526
|
-
return true;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
const lastEntry = segmentEntries[segmentEntries.length - 1];
|
|
530
|
-
const lastBufferedStart = lastEntry.buffered?.start;
|
|
531
|
-
|
|
532
|
-
// If the current segment's buffered start is much higher than what it
|
|
533
|
-
// initially was when we pushed it, the segment has a very high chance of
|
|
534
|
-
// having been truly garbage-collected.
|
|
535
|
-
if (currentBufferedStart !== undefined &&
|
|
536
|
-
lastBufferedStart !== undefined &&
|
|
537
|
-
currentBufferedStart - lastBufferedStart > 0.05)
|
|
538
|
-
{
|
|
539
|
-
return true;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
const prevEntry = segmentEntries[segmentEntries.length - 2];
|
|
543
|
-
const prevBufferedStart = prevEntry.buffered?.start;
|
|
544
|
-
|
|
545
|
-
if (prevBufferedStart === undefined || lastBufferedStart === undefined) {
|
|
546
|
-
return true;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
// Compare `bufferedStart` from the last time this segment was pushed
|
|
550
|
-
// (`entry.bufferedStart`) to the previous time it was pushed
|
|
551
|
-
// (`prevSegEntry.bufferedStart`).
|
|
552
|
-
//
|
|
553
|
-
// If in both cases, we notice that their initial `bufferedStart` are close,
|
|
554
|
-
// it means that in recent history the same segment has been accused to be
|
|
555
|
-
// garbage collected two times at roughly the same positions just after being
|
|
556
|
-
// pushed.
|
|
557
|
-
// This is very unlikely and might be linked to either a content or browser
|
|
558
|
-
// issue. In that case, don't try to reload.
|
|
559
|
-
return Math.abs(prevBufferedStart - lastBufferedStart) > 0.01;
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* Returns `true` if a segment that has been garbage-collected at the end
|
|
564
|
-
* might profit from being re-loaded.
|
|
565
|
-
*
|
|
566
|
-
* Returns `false` if we have a high chance of staying in the same situation
|
|
567
|
-
* after re-loading the segment.
|
|
568
|
-
*
|
|
569
|
-
* This function takes in argument the entries of a SegmentBuffer's history
|
|
570
|
-
* related to the corresponding segment and check if the segment appeared
|
|
571
|
-
* garbage-collected at the end directly after the last few times it was
|
|
572
|
-
* pushed, indicating that the issue might be sourced at a browser issue instead
|
|
573
|
-
* of classical garbage collection.
|
|
574
|
-
*
|
|
575
|
-
* @param {Array.<Object>} segmentEntries
|
|
576
|
-
* @param {number|undefined} currentBufferedEnd
|
|
577
|
-
* @returns {boolean}
|
|
578
|
-
*/
|
|
579
|
-
function shouldReloadSegmentGCedAtTheEnd(
|
|
580
|
-
segmentEntries : IBufferedHistoryEntry[],
|
|
581
|
-
currentBufferedEnd : number | undefined
|
|
582
|
-
) : boolean {
|
|
583
|
-
if (segmentEntries.length < 2) {
|
|
584
|
-
return true;
|
|
585
|
-
}
|
|
586
|
-
const lastEntry = segmentEntries[segmentEntries.length - 1];
|
|
587
|
-
const lastBufferedEnd = lastEntry.buffered?.end;
|
|
588
|
-
|
|
589
|
-
// If the current segment's buffered end is much lower than what it
|
|
590
|
-
// initially was when we pushed it, the segment has a very high chance of
|
|
591
|
-
// having been truly garbage-collected.
|
|
592
|
-
if (currentBufferedEnd !== undefined &&
|
|
593
|
-
lastBufferedEnd !== undefined &&
|
|
594
|
-
lastBufferedEnd - currentBufferedEnd > 0.05)
|
|
595
|
-
{
|
|
596
|
-
return true;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
const prevEntry = segmentEntries[segmentEntries.length - 2];
|
|
600
|
-
const prevBufferedEnd = prevEntry.buffered?.end;
|
|
601
|
-
|
|
602
|
-
if (prevBufferedEnd === undefined || lastBufferedEnd === undefined) {
|
|
603
|
-
return true;
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
// Compare `bufferedEnd` from the last time this segment was pushed
|
|
607
|
-
// (`entry.bufferedEnd`) to the previous time it was pushed
|
|
608
|
-
// (`prevSegEntry.bufferedEnd`).
|
|
609
|
-
//
|
|
610
|
-
// If in both cases, we notice that their initial `bufferedEnd` are close,
|
|
611
|
-
// it means that in recent history the same segment has been accused to be
|
|
612
|
-
// garbage collected two times at roughly the same positions just after being
|
|
613
|
-
// pushed.
|
|
614
|
-
// This is very unlikely and might be linked to either a content or browser
|
|
615
|
-
// issue. In that case, don't try to reload.
|
|
616
|
-
return Math.abs(prevBufferedEnd - lastBufferedEnd) > 0.01;
|
|
617
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import config from "../../../../config";
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Calculate the priority number for a given segment start time, in function of
|
|
21
|
-
* the distance with the wanted starting timestamp.
|
|
22
|
-
*
|
|
23
|
-
* The lower is this number, the higher should be the priority of the request.
|
|
24
|
-
*
|
|
25
|
-
* Note that a `segmentTime` given behind the current time will always have the
|
|
26
|
-
* highest priority.
|
|
27
|
-
* @param {number} segmentTime
|
|
28
|
-
* @param {Object} wantedStartTimestamp
|
|
29
|
-
* @returns {number}
|
|
30
|
-
*/
|
|
31
|
-
export default function getSegmentPriority(
|
|
32
|
-
segmentTime : number,
|
|
33
|
-
wantedStartTimestamp : number
|
|
34
|
-
) : number {
|
|
35
|
-
const distance = segmentTime - wantedStartTimestamp;
|
|
36
|
-
const { SEGMENT_PRIORITIES_STEPS } = config.getCurrent();
|
|
37
|
-
for (let priority = 0; priority < SEGMENT_PRIORITIES_STEPS.length; priority++) {
|
|
38
|
-
if (distance < SEGMENT_PRIORITIES_STEPS[priority]) {
|
|
39
|
-
return priority;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return SEGMENT_PRIORITIES_STEPS.length;
|
|
43
|
-
}
|