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,646 +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 { MediaError } from "../../../errors";
|
|
18
|
-
import Manifest, {
|
|
19
|
-
Adaptation,
|
|
20
|
-
IRepresentationIndex,
|
|
21
|
-
Period,
|
|
22
|
-
} from "../../../manifest";
|
|
23
|
-
import { IPlayerError } from "../../../public_types";
|
|
24
|
-
import EventEmitter from "../../../utils/event_emitter";
|
|
25
|
-
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
26
|
-
import SortedList from "../../../utils/sorted_list";
|
|
27
|
-
import TaskCanceller from "../../../utils/task_canceller";
|
|
28
|
-
import { IReadOnlyPlaybackObserver } from "../../api";
|
|
29
|
-
import { IBufferType } from "../../segment_buffers";
|
|
30
|
-
import { IStreamOrchestratorPlaybackObservation } from "../../stream";
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Observes what's being played and take care of media events relating to time
|
|
34
|
-
* boundaries:
|
|
35
|
-
* - Emits a `endingPositionChange` when the known maximum playable position
|
|
36
|
-
* of the current content is known and every time it changes.
|
|
37
|
-
* - Emits `endOfStream` API once segments have been pushed until the end and
|
|
38
|
-
* `resumeStream` if downloads starts back.
|
|
39
|
-
* - Emits a `periodChange` event when the currently-playing Period seemed to
|
|
40
|
-
* have changed.
|
|
41
|
-
* - emit "warning" events when what is being played is outside of the
|
|
42
|
-
* Manifest range.
|
|
43
|
-
* @class ContentTimeBoundariesObserver
|
|
44
|
-
*/
|
|
45
|
-
export default class ContentTimeBoundariesObserver
|
|
46
|
-
extends EventEmitter<IContentTimeBoundariesObserverEvent> {
|
|
47
|
-
|
|
48
|
-
/** Allows to interrupt everything the `ContentTimeBoundariesObserver` is doing. */
|
|
49
|
-
private _canceller : TaskCanceller;
|
|
50
|
-
|
|
51
|
-
/** Store information on every created "Streams". */
|
|
52
|
-
private _activeStreams : Map<IBufferType, IActiveStreamsInfo>;
|
|
53
|
-
|
|
54
|
-
/** The `Manifest` object linked to the current content. */
|
|
55
|
-
private _manifest : Manifest;
|
|
56
|
-
|
|
57
|
-
/** Allows to calculate at any time maximum positions of the content */
|
|
58
|
-
private _maximumPositionCalculator : MaximumPositionCalculator;
|
|
59
|
-
|
|
60
|
-
/** Enumerate all possible buffer types in the current content. */
|
|
61
|
-
private _allBufferTypes : IBufferType[];
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Stores the `id` property of the last Period for which a `periodChange`
|
|
65
|
-
* event has been sent.
|
|
66
|
-
* Allows to avoid multiple times in a row `periodChange` for the same
|
|
67
|
-
* Period.
|
|
68
|
-
*/
|
|
69
|
-
private _lastCurrentPeriodId : string | null;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* @param {Object} manifest
|
|
73
|
-
* @param {Object} playbackObserver
|
|
74
|
-
*/
|
|
75
|
-
constructor(
|
|
76
|
-
manifest : Manifest,
|
|
77
|
-
playbackObserver : IReadOnlyPlaybackObserver<IStreamOrchestratorPlaybackObservation>,
|
|
78
|
-
bufferTypes : IBufferType[]
|
|
79
|
-
) {
|
|
80
|
-
super();
|
|
81
|
-
|
|
82
|
-
this._canceller = new TaskCanceller();
|
|
83
|
-
this._manifest = manifest;
|
|
84
|
-
this._activeStreams = new Map();
|
|
85
|
-
this._allBufferTypes = bufferTypes;
|
|
86
|
-
this._lastCurrentPeriodId = null;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Allows to calculate the minimum and maximum playable position on the
|
|
90
|
-
* whole content.
|
|
91
|
-
*/
|
|
92
|
-
const maximumPositionCalculator = new MaximumPositionCalculator(manifest);
|
|
93
|
-
this._maximumPositionCalculator = maximumPositionCalculator;
|
|
94
|
-
|
|
95
|
-
const cancelSignal = this._canceller.signal;
|
|
96
|
-
playbackObserver.listen(({ position }) => {
|
|
97
|
-
const wantedPosition = position.pending ?? position.last;
|
|
98
|
-
if (wantedPosition < manifest.getMinimumSafePosition()) {
|
|
99
|
-
const warning = new MediaError("MEDIA_TIME_BEFORE_MANIFEST",
|
|
100
|
-
"The current position is behind the " +
|
|
101
|
-
"earliest time announced in the Manifest.");
|
|
102
|
-
this.trigger("warning", warning);
|
|
103
|
-
} else if (
|
|
104
|
-
wantedPosition > maximumPositionCalculator.getMaximumAvailablePosition()
|
|
105
|
-
) {
|
|
106
|
-
const warning = new MediaError("MEDIA_TIME_AFTER_MANIFEST",
|
|
107
|
-
"The current position is after the latest " +
|
|
108
|
-
"time announced in the Manifest.");
|
|
109
|
-
this.trigger("warning", warning);
|
|
110
|
-
}
|
|
111
|
-
}, { includeLastObservation: true, clearSignal: cancelSignal });
|
|
112
|
-
|
|
113
|
-
manifest.addEventListener("manifestUpdate", () => {
|
|
114
|
-
this.trigger("endingPositionChange", this._getManifestEndTime());
|
|
115
|
-
if (cancelSignal.isCancelled()) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
this._checkEndOfStream();
|
|
119
|
-
}, cancelSignal);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Returns an estimate of the current last position which may be played in
|
|
124
|
-
* the content at the moment.
|
|
125
|
-
* @returns {Object}
|
|
126
|
-
*/
|
|
127
|
-
public getCurrentEndingTime() : IEndingPositionInformation {
|
|
128
|
-
return this._getManifestEndTime();
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Method to call any time an Adaptation has been selected.
|
|
133
|
-
*
|
|
134
|
-
* That Adaptation switch will be considered as active until the
|
|
135
|
-
* `onPeriodCleared` method has been called for the same `bufferType` and
|
|
136
|
-
* `Period`, or until `dispose` is called.
|
|
137
|
-
* @param {string} bufferType - The type of buffer concerned by the Adaptation
|
|
138
|
-
* switch
|
|
139
|
-
* @param {Object} period - The Period concerned by the Adaptation switch
|
|
140
|
-
* @param {Object|null} adaptation - The Adaptation selected. `null` if the
|
|
141
|
-
* absence of `Adaptation` has been explicitely selected for this Period and
|
|
142
|
-
* buffer type (e.g. no video).
|
|
143
|
-
*/
|
|
144
|
-
public onAdaptationChange(
|
|
145
|
-
bufferType : IBufferType,
|
|
146
|
-
period : Period,
|
|
147
|
-
adaptation : Adaptation | null
|
|
148
|
-
) : void {
|
|
149
|
-
if (this._manifest.isLastPeriodKnown) {
|
|
150
|
-
const lastPeriod = this._manifest.periods[this._manifest.periods.length - 1];
|
|
151
|
-
if (period.id === lastPeriod?.id) {
|
|
152
|
-
if (bufferType === "audio" || bufferType === "video") {
|
|
153
|
-
if (bufferType === "audio") {
|
|
154
|
-
this._maximumPositionCalculator
|
|
155
|
-
.updateLastAudioAdaptation(adaptation);
|
|
156
|
-
} else {
|
|
157
|
-
this._maximumPositionCalculator
|
|
158
|
-
.updateLastVideoAdaptation(adaptation);
|
|
159
|
-
}
|
|
160
|
-
const endingPosition = this._maximumPositionCalculator.getEndingPosition();
|
|
161
|
-
const newEndingPosition = endingPosition !== undefined ?
|
|
162
|
-
{ isEnd: true,
|
|
163
|
-
endingPosition } :
|
|
164
|
-
{ isEnd: false,
|
|
165
|
-
endingPosition: this._maximumPositionCalculator
|
|
166
|
-
.getMaximumAvailablePosition() };
|
|
167
|
-
this.trigger("endingPositionChange", newEndingPosition);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (this._canceller.isUsed()) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
if (adaptation === null) {
|
|
175
|
-
this._addActivelyLoadedPeriod(period, bufferType);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Method to call any time a Representation has been selected.
|
|
181
|
-
*
|
|
182
|
-
* That Representation switch will be considered as active until the
|
|
183
|
-
* `onPeriodCleared` method has been called for the same `bufferType` and
|
|
184
|
-
* `Period`, or until `dispose` is called.
|
|
185
|
-
* @param {string} bufferType - The type of buffer concerned by the
|
|
186
|
-
* Representation switch
|
|
187
|
-
* @param {Object} period - The Period concerned by the Representation switch
|
|
188
|
-
*/
|
|
189
|
-
public onRepresentationChange(
|
|
190
|
-
bufferType : IBufferType,
|
|
191
|
-
period : Period
|
|
192
|
-
) : void {
|
|
193
|
-
this._addActivelyLoadedPeriod(period, bufferType);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Method to call any time a Period and type combination is not considered
|
|
198
|
-
* anymore.
|
|
199
|
-
*
|
|
200
|
-
* Calling this method allows to signal that a previous Adaptation and/or
|
|
201
|
-
* Representation change respectively indicated by an `onAdaptationChange` and
|
|
202
|
-
* an `onRepresentationChange` call, are not active anymore.
|
|
203
|
-
* @param {string} bufferType - The type of buffer concerned
|
|
204
|
-
* @param {Object} period - The Period concerned
|
|
205
|
-
*/
|
|
206
|
-
public onPeriodCleared(
|
|
207
|
-
bufferType : IBufferType,
|
|
208
|
-
period : Period
|
|
209
|
-
) : void {
|
|
210
|
-
this._removeActivelyLoadedPeriod(period, bufferType);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* Method to call when the last chronological segment for a given buffer type
|
|
215
|
-
* is known to have been loaded and is either pushed or in the process of
|
|
216
|
-
* being pushed to the corresponding MSE `SourceBuffer` or equivalent.
|
|
217
|
-
*
|
|
218
|
-
* This method can even be called multiple times in a row as long as the
|
|
219
|
-
* aforementioned condition is true, if it simplify your code's management.
|
|
220
|
-
* @param {string} bufferType
|
|
221
|
-
*/
|
|
222
|
-
public onLastSegmentFinishedLoading(
|
|
223
|
-
bufferType : IBufferType
|
|
224
|
-
) : void {
|
|
225
|
-
const streamInfo = this._lazilyCreateActiveStreamInfo(bufferType);
|
|
226
|
-
if (!streamInfo.hasFinishedLoadingLastPeriod) {
|
|
227
|
-
streamInfo.hasFinishedLoadingLastPeriod = true;
|
|
228
|
-
this._checkEndOfStream();
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Method to call to "cancel" a previous call to
|
|
234
|
-
* `onLastSegmentFinishedLoading`.
|
|
235
|
-
*
|
|
236
|
-
* That is, calling this method indicates that the last chronological segment
|
|
237
|
-
* of a given buffer type is now either not loaded or it is not known.
|
|
238
|
-
*
|
|
239
|
-
* This method can even be called multiple times in a row as long as the
|
|
240
|
-
* aforementioned condition is true, if it simplify your code's management.
|
|
241
|
-
* @param {string} bufferType
|
|
242
|
-
*/
|
|
243
|
-
public onLastSegmentLoadingResume(bufferType : IBufferType) : void {
|
|
244
|
-
const streamInfo = this._lazilyCreateActiveStreamInfo(bufferType);
|
|
245
|
-
if (streamInfo.hasFinishedLoadingLastPeriod) {
|
|
246
|
-
streamInfo.hasFinishedLoadingLastPeriod = false;
|
|
247
|
-
this._checkEndOfStream();
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Free all resources used by the `ContentTimeBoundariesObserver` and cancels
|
|
253
|
-
* all recurring processes it performs.
|
|
254
|
-
*/
|
|
255
|
-
public dispose() {
|
|
256
|
-
this.removeEventListener();
|
|
257
|
-
this._canceller.cancel();
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
private _addActivelyLoadedPeriod(period : Period, bufferType : IBufferType) : void {
|
|
261
|
-
const streamInfo = this._lazilyCreateActiveStreamInfo(bufferType);
|
|
262
|
-
if (!streamInfo.activePeriods.has(period)) {
|
|
263
|
-
streamInfo.activePeriods.add(period);
|
|
264
|
-
this._checkCurrentPeriod();
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
private _removeActivelyLoadedPeriod(
|
|
269
|
-
period : Period,
|
|
270
|
-
bufferType : IBufferType
|
|
271
|
-
) : void {
|
|
272
|
-
const streamInfo = this._activeStreams.get(bufferType);
|
|
273
|
-
if (streamInfo === undefined) {
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
if (streamInfo.activePeriods.has(period)) {
|
|
277
|
-
streamInfo.activePeriods.removeElement(period);
|
|
278
|
-
this._checkCurrentPeriod();
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
private _checkCurrentPeriod() : void {
|
|
283
|
-
if (this._allBufferTypes.length === 0) {
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
const streamInfo = this._activeStreams.get(this._allBufferTypes[0]);
|
|
288
|
-
if (streamInfo === undefined) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
for (const period of streamInfo.activePeriods.toArray()) {
|
|
292
|
-
let wasFoundInAllTypes = true;
|
|
293
|
-
for (let i = 1; i < this._allBufferTypes.length; i++) {
|
|
294
|
-
const streamInfo2 = this._activeStreams.get(this._allBufferTypes[i]);
|
|
295
|
-
if (streamInfo2 === undefined) {
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const activePeriods = streamInfo2.activePeriods.toArray();
|
|
300
|
-
const hasPeriod = activePeriods.some((p) => p.id === period.id);
|
|
301
|
-
if (!hasPeriod) {
|
|
302
|
-
wasFoundInAllTypes = false;
|
|
303
|
-
break;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
if (wasFoundInAllTypes) {
|
|
307
|
-
if (this._lastCurrentPeriodId !== period.id) {
|
|
308
|
-
this._lastCurrentPeriodId = period.id;
|
|
309
|
-
this.trigger("periodChange", period);
|
|
310
|
-
}
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
private _getManifestEndTime() : IEndingPositionInformation {
|
|
317
|
-
const endingPosition = this._maximumPositionCalculator.getEndingPosition();
|
|
318
|
-
return endingPosition !== undefined ?
|
|
319
|
-
{ isEnd: true,
|
|
320
|
-
endingPosition } :
|
|
321
|
-
{ isEnd: false,
|
|
322
|
-
endingPosition: this._maximumPositionCalculator.getMaximumAvailablePosition() };
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
private _lazilyCreateActiveStreamInfo(bufferType : IBufferType) : IActiveStreamsInfo {
|
|
326
|
-
let streamInfo = this._activeStreams.get(bufferType);
|
|
327
|
-
if (streamInfo === undefined) {
|
|
328
|
-
streamInfo = {
|
|
329
|
-
activePeriods: new SortedList((a, b) => a.start - b.start),
|
|
330
|
-
hasFinishedLoadingLastPeriod: false,
|
|
331
|
-
};
|
|
332
|
-
this._activeStreams.set(bufferType, streamInfo);
|
|
333
|
-
}
|
|
334
|
-
return streamInfo;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
private _checkEndOfStream() : void {
|
|
338
|
-
if (!this._manifest.isLastPeriodKnown) {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
const everyBufferTypeLoaded = this._allBufferTypes.every((bt) => {
|
|
342
|
-
const streamInfo = this._activeStreams.get(bt);
|
|
343
|
-
return streamInfo !== undefined && streamInfo.hasFinishedLoadingLastPeriod;
|
|
344
|
-
});
|
|
345
|
-
if (everyBufferTypeLoaded) {
|
|
346
|
-
this.trigger("endOfStream", null);
|
|
347
|
-
} else {
|
|
348
|
-
this.trigger("resumeStream", null);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
export interface IEndingPositionInformation {
|
|
354
|
-
/**
|
|
355
|
-
* The new maximum known position (note that this is the ending position
|
|
356
|
-
* currently known of the current content, it might be superior to the last
|
|
357
|
-
* position at which segments are available and it might also evolve over
|
|
358
|
-
* time), in seconds.
|
|
359
|
-
*/
|
|
360
|
-
endingPosition : number;
|
|
361
|
-
/**
|
|
362
|
-
* If `true`, the communicated `endingPosition` is the actual end of the content.
|
|
363
|
-
* It may still be updated due to a track change or to add precision, but it
|
|
364
|
-
* is still a (rough) estimate of the maximum position that content should
|
|
365
|
-
* have.
|
|
366
|
-
*
|
|
367
|
-
* If `false`, this is the currently known maximum position associated to
|
|
368
|
-
* the content, but the content is still evolving (typically, new media
|
|
369
|
-
* segments are still being generated) and as such it can still have a
|
|
370
|
-
* longer `endingPosition` in the future.
|
|
371
|
-
*/
|
|
372
|
-
isEnd : boolean;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Events triggered by a `ContentTimeBoundariesObserver` where the keys are the
|
|
377
|
-
* event names and the value is the payload of those events.
|
|
378
|
-
*/
|
|
379
|
-
export interface IContentTimeBoundariesObserverEvent {
|
|
380
|
-
/** Triggered when a minor error is encountered. */
|
|
381
|
-
warning : IPlayerError;
|
|
382
|
-
/** Triggered when a new `Period` is currently playing. */
|
|
383
|
-
periodChange : Period;
|
|
384
|
-
/**
|
|
385
|
-
* Triggered when the ending position of the currently-playing content became
|
|
386
|
-
* known or changed.
|
|
387
|
-
*/
|
|
388
|
-
endingPositionChange : IEndingPositionInformation;
|
|
389
|
-
/**
|
|
390
|
-
* Triggered when the last possible chronological segment for all types of
|
|
391
|
-
* buffers has either been pushed or is being pushed to the corresponding
|
|
392
|
-
* MSE `SourceBuffer` or equivalent.
|
|
393
|
-
* As such, the `endOfStream` MSE API might from now be able to be called.
|
|
394
|
-
*
|
|
395
|
-
* Note that it is possible to receive this event even if `endOfStream` has
|
|
396
|
-
* already been called and even if an "endOfStream" event has already been
|
|
397
|
-
* triggered.
|
|
398
|
-
*/
|
|
399
|
-
endOfStream : null;
|
|
400
|
-
/**
|
|
401
|
-
* Triggered when the last possible chronological segment for all types of
|
|
402
|
-
* buffers have NOT been pushed, or if it is not known whether is has been
|
|
403
|
-
* pushed, and as such any potential pending `endOfStream` MSE API call
|
|
404
|
-
* need to be cancelled.
|
|
405
|
-
*
|
|
406
|
-
* Note that it is possible to receive this event even if `endOfStream` has
|
|
407
|
-
* not been called and even if an "resumeStream" event has already been
|
|
408
|
-
* triggered.
|
|
409
|
-
*/
|
|
410
|
-
resumeStream : null;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
/**
|
|
414
|
-
* Calculate the last position from the last chosen audio and video Adaptations
|
|
415
|
-
* for the last Period (or a default one, if no Adaptations has been chosen).
|
|
416
|
-
* @class MaximumPositionCalculator
|
|
417
|
-
*/
|
|
418
|
-
class MaximumPositionCalculator {
|
|
419
|
-
private _manifest : Manifest;
|
|
420
|
-
|
|
421
|
-
// TODO replicate for the minimum position ?
|
|
422
|
-
private _lastAudioAdaptation : Adaptation | undefined | null;
|
|
423
|
-
private _lastVideoAdaptation : Adaptation | undefined | null;
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* @param {Object} manifest
|
|
427
|
-
*/
|
|
428
|
-
constructor(manifest : Manifest) {
|
|
429
|
-
this._manifest = manifest;
|
|
430
|
-
this._lastAudioAdaptation = undefined;
|
|
431
|
-
this._lastVideoAdaptation = undefined;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Update the last known audio Adaptation for the last Period.
|
|
436
|
-
* If no Adaptation has been set, it should be set to `null`.
|
|
437
|
-
*
|
|
438
|
-
* Allows to calculate the maximum position more precizely in
|
|
439
|
-
* `getMaximumAvailablePosition` and `getEndingPosition`.
|
|
440
|
-
* @param {Object|null} adaptation
|
|
441
|
-
*/
|
|
442
|
-
public updateLastAudioAdaptation(adaptation : Adaptation | null) : void {
|
|
443
|
-
this._lastAudioAdaptation = adaptation;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
/**
|
|
447
|
-
* Update the last known video Adaptation for the last Period.
|
|
448
|
-
* If no Adaptation has been set, it should be set to `null`.
|
|
449
|
-
*
|
|
450
|
-
* Allows to calculate the maximum position more precizely in
|
|
451
|
-
* `getMaximumAvailablePosition` and `getEndingPosition`.
|
|
452
|
-
* @param {Object|null} adaptation
|
|
453
|
-
*/
|
|
454
|
-
public updateLastVideoAdaptation(adaptation : Adaptation | null) : void {
|
|
455
|
-
this._lastVideoAdaptation = adaptation;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
/**
|
|
459
|
-
* Returns an estimate of the maximum position currently reachable (i.e.
|
|
460
|
-
* segments are available) under the current circumstances.
|
|
461
|
-
* @returns {number}
|
|
462
|
-
*/
|
|
463
|
-
public getMaximumAvailablePosition() : number {
|
|
464
|
-
if (this._manifest.isDynamic) {
|
|
465
|
-
return this._manifest.getMaximumSafePosition();
|
|
466
|
-
}
|
|
467
|
-
if (this._lastVideoAdaptation === undefined ||
|
|
468
|
-
this._lastAudioAdaptation === undefined)
|
|
469
|
-
{
|
|
470
|
-
return this._manifest.getMaximumSafePosition();
|
|
471
|
-
} else if (this._lastAudioAdaptation === null) {
|
|
472
|
-
if (this._lastVideoAdaptation === null) {
|
|
473
|
-
return this._manifest.getMaximumSafePosition();
|
|
474
|
-
} else {
|
|
475
|
-
const lastVideoPosition =
|
|
476
|
-
getLastAvailablePositionFromAdaptation(this._lastVideoAdaptation);
|
|
477
|
-
if (typeof lastVideoPosition !== "number") {
|
|
478
|
-
return this._manifest.getMaximumSafePosition();
|
|
479
|
-
}
|
|
480
|
-
return lastVideoPosition;
|
|
481
|
-
}
|
|
482
|
-
} else if (this._lastVideoAdaptation === null) {
|
|
483
|
-
const lastAudioPosition =
|
|
484
|
-
getLastAvailablePositionFromAdaptation(this._lastAudioAdaptation);
|
|
485
|
-
if (typeof lastAudioPosition !== "number") {
|
|
486
|
-
return this._manifest.getMaximumSafePosition();
|
|
487
|
-
}
|
|
488
|
-
return lastAudioPosition;
|
|
489
|
-
} else {
|
|
490
|
-
const lastAudioPosition = getLastAvailablePositionFromAdaptation(
|
|
491
|
-
this._lastAudioAdaptation
|
|
492
|
-
);
|
|
493
|
-
const lastVideoPosition = getLastAvailablePositionFromAdaptation(
|
|
494
|
-
this._lastVideoAdaptation
|
|
495
|
-
);
|
|
496
|
-
if (typeof lastAudioPosition !== "number" ||
|
|
497
|
-
typeof lastVideoPosition !== "number")
|
|
498
|
-
{
|
|
499
|
-
return this._manifest.getMaximumSafePosition();
|
|
500
|
-
} else {
|
|
501
|
-
return Math.min(lastAudioPosition, lastVideoPosition);
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/**
|
|
507
|
-
* Returns an estimate of the actual ending position once
|
|
508
|
-
* the full content is available.
|
|
509
|
-
* Returns `undefined` if that could not be determined, for various reasons.
|
|
510
|
-
* @returns {number|undefined}
|
|
511
|
-
*/
|
|
512
|
-
public getEndingPosition() : number | undefined {
|
|
513
|
-
if (!this._manifest.isDynamic) {
|
|
514
|
-
return this.getMaximumAvailablePosition();
|
|
515
|
-
}
|
|
516
|
-
if (this._lastVideoAdaptation === undefined ||
|
|
517
|
-
this._lastAudioAdaptation === undefined)
|
|
518
|
-
{
|
|
519
|
-
return undefined;
|
|
520
|
-
} else if (this._lastAudioAdaptation === null) {
|
|
521
|
-
if (this._lastVideoAdaptation === null) {
|
|
522
|
-
return undefined;
|
|
523
|
-
} else {
|
|
524
|
-
return getEndingPositionFromAdaptation(this._lastVideoAdaptation) ??
|
|
525
|
-
undefined;
|
|
526
|
-
}
|
|
527
|
-
} else if (this._lastVideoAdaptation === null) {
|
|
528
|
-
return getEndingPositionFromAdaptation(this._lastAudioAdaptation) ??
|
|
529
|
-
undefined;
|
|
530
|
-
} else {
|
|
531
|
-
const lastAudioPosition =
|
|
532
|
-
getEndingPositionFromAdaptation(this._lastAudioAdaptation);
|
|
533
|
-
const lastVideoPosition =
|
|
534
|
-
getEndingPositionFromAdaptation(this._lastVideoAdaptation);
|
|
535
|
-
if (typeof lastAudioPosition !== "number" ||
|
|
536
|
-
typeof lastVideoPosition !== "number")
|
|
537
|
-
{
|
|
538
|
-
return undefined;
|
|
539
|
-
} else {
|
|
540
|
-
return Math.min(lastAudioPosition, lastVideoPosition);
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
/**
|
|
547
|
-
* Returns last currently available position from the Adaptation given.
|
|
548
|
-
* `undefined` if a time could not be found.
|
|
549
|
-
* `null` if the Adaptation has no segments (it could be that it didn't started or
|
|
550
|
-
* that it already finished for example).
|
|
551
|
-
*
|
|
552
|
-
* We consider the earliest last available position from every Representation
|
|
553
|
-
* in the given Adaptation.
|
|
554
|
-
* @param {Object} adaptation
|
|
555
|
-
* @returns {Number|undefined|null}
|
|
556
|
-
*/
|
|
557
|
-
function getLastAvailablePositionFromAdaptation(
|
|
558
|
-
adaptation: Adaptation
|
|
559
|
-
) : number | undefined | null {
|
|
560
|
-
const { representations } = adaptation;
|
|
561
|
-
let min : null | number = null;
|
|
562
|
-
|
|
563
|
-
/**
|
|
564
|
-
* Some Manifest parsers use the exact same `IRepresentationIndex` reference
|
|
565
|
-
* for each Representation of a given Adaptation, because in the actual source
|
|
566
|
-
* Manifest file, indexing data is often defined at Adaptation-level.
|
|
567
|
-
* This variable allows to optimize the logic here when this is the case.
|
|
568
|
-
*/
|
|
569
|
-
let lastIndex : IRepresentationIndex | undefined;
|
|
570
|
-
for (let i = 0; i < representations.length; i++) {
|
|
571
|
-
if (representations[i].index !== lastIndex) {
|
|
572
|
-
lastIndex = representations[i].index;
|
|
573
|
-
const lastPosition = representations[i].index.getLastAvailablePosition();
|
|
574
|
-
if (lastPosition === undefined) { // we cannot tell
|
|
575
|
-
return undefined;
|
|
576
|
-
}
|
|
577
|
-
if (lastPosition !== null) {
|
|
578
|
-
min = isNullOrUndefined(min) ? lastPosition :
|
|
579
|
-
Math.min(min, lastPosition);
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
return min;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
/**
|
|
587
|
-
* Returns ending time from the Adaptation given, once all its segments are
|
|
588
|
-
* available.
|
|
589
|
-
* `undefined` if a time could not be found.
|
|
590
|
-
* `null` if the Adaptation has no segments (it could be that it already
|
|
591
|
-
* finished for example).
|
|
592
|
-
*
|
|
593
|
-
* We consider the earliest ending time from every Representation in the given
|
|
594
|
-
* Adaptation.
|
|
595
|
-
* @param {Object} adaptation
|
|
596
|
-
* @returns {Number|undefined|null}
|
|
597
|
-
*/
|
|
598
|
-
function getEndingPositionFromAdaptation(
|
|
599
|
-
adaptation: Adaptation
|
|
600
|
-
) : number | undefined | null {
|
|
601
|
-
const { representations } = adaptation;
|
|
602
|
-
let min : null | number = null;
|
|
603
|
-
|
|
604
|
-
/**
|
|
605
|
-
* Some Manifest parsers use the exact same `IRepresentationIndex` reference
|
|
606
|
-
* for each Representation of a given Adaptation, because in the actual source
|
|
607
|
-
* Manifest file, indexing data is often defined at Adaptation-level.
|
|
608
|
-
* This variable allows to optimize the logic here when this is the case.
|
|
609
|
-
*/
|
|
610
|
-
let lastIndex : IRepresentationIndex | undefined;
|
|
611
|
-
for (let i = 0; i < representations.length; i++) {
|
|
612
|
-
if (representations[i].index !== lastIndex) {
|
|
613
|
-
lastIndex = representations[i].index;
|
|
614
|
-
const lastPosition = representations[i].index.getEnd();
|
|
615
|
-
if (lastPosition === undefined) { // we cannot tell
|
|
616
|
-
return undefined;
|
|
617
|
-
}
|
|
618
|
-
if (lastPosition !== null) {
|
|
619
|
-
min = isNullOrUndefined(min) ? lastPosition :
|
|
620
|
-
Math.min(min, lastPosition);
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
return min;
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
interface IActiveStreamsInfo {
|
|
628
|
-
/**
|
|
629
|
-
* Active Periods being currently actively loaded by the "Streams".
|
|
630
|
-
* That is: either this Period's corresponding `Representation` has been
|
|
631
|
-
* selected or we didn't chose any `Adaptation` for that type), in
|
|
632
|
-
* chronological order.
|
|
633
|
-
*
|
|
634
|
-
* The first chronological Period in that list is the active one for
|
|
635
|
-
* the current type.
|
|
636
|
-
*/
|
|
637
|
-
activePeriods : SortedList<Period>;
|
|
638
|
-
/**
|
|
639
|
-
* If `true` the last segment for the last currently known Period has been
|
|
640
|
-
* pushed for the current Adaptation and Representation choice.
|
|
641
|
-
*/
|
|
642
|
-
hasFinishedLoadingLastPeriod : boolean;
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
export type IContentTimeObserverPlaybackObservation =
|
|
646
|
-
Pick<IStreamOrchestratorPlaybackObservation, "position">;
|