rx-player 3.33.0 → 3.33.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/public_api.js +2 -2
- package/dist/_esm5.processed/manifest/manifest.js +1 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.d.ts +11 -0
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +18 -4
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -1
- package/dist/rx-player.js +24 -9
- package/dist/rx-player.min.d.ts +1 -1
- package/dist/rx-player.min.js +1 -1
- package/package.json +6 -6
- package/.editorconfig +0 -22
- package/.eslintrc.js +0 -406
- package/.github/workflows/checks.yml +0 -101
- package/.github/workflows/perfs.yml +0 -22
- package/.github/workflows/sonarcloud_analysis.yml +0 -20
- package/CONTRIBUTING.md +0 -272
- package/FILES.md +0 -283
- package/jest.config.js +0 -73
- package/manifest.mpd +0 -149
- package/scripts/README.md +0 -11
- package/scripts/build/constants.d.ts +0 -53
- package/scripts/build/generate_build.js +0 -190
- package/scripts/build/templates/experimental/features/index.d.ts +0 -16
- package/scripts/build/templates/experimental/features/index.js +0 -16
- package/scripts/build/templates/experimental/index.d.ts +0 -16
- package/scripts/build/templates/experimental/index.js +0 -16
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.d.ts +0 -18
- package/scripts/build/templates/experimental/tools/VideoThumbnailLoader/index.js +0 -18
- package/scripts/build/templates/experimental/tools/index.d.ts +0 -16
- package/scripts/build/templates/experimental/tools/index.js +0 -16
- package/scripts/build/templates/features/index.d.ts +0 -16
- package/scripts/build/templates/features/index.js +0 -16
- package/scripts/build/templates/logger/index.d.ts +0 -17
- package/scripts/build/templates/logger/index.js +0 -17
- package/scripts/build/templates/minimal/index.d.ts +0 -17
- package/scripts/build/templates/minimal/index.js +0 -17
- package/scripts/build/templates/tools/TextTrackRenderer.d.ts +0 -18
- package/scripts/build/templates/tools/TextTrackRenderer.js +0 -18
- package/scripts/build/templates/tools/index.d.ts +0 -16
- package/scripts/build/templates/tools/index.js +0 -16
- package/scripts/build/templates/tools/string-utils.d.ts +0 -18
- package/scripts/build/templates/tools/string-utils.js +0 -18
- package/scripts/build/templates/types/index.d.ts +0 -16
- package/scripts/build/templates/types/index.js +0 -15
- package/scripts/canal-release.patch +0 -316
- package/scripts/check_nodejs_import_compatibility.js +0 -60
- package/scripts/deploy_new_demo +0 -123
- package/scripts/fast_demo_build.js +0 -129
- package/scripts/generate_certificate +0 -19
- package/scripts/generate_demo_list.js +0 -105
- package/scripts/generate_documentation_list.js +0 -109
- package/scripts/generate_full_demo.js +0 -201
- package/scripts/generate_standalone_demo.js +0 -82
- package/scripts/launch_static_server.js +0 -163
- package/scripts/list-npm-scripts.js +0 -207
- package/scripts/make-dev-releases +0 -90
- package/scripts/report_build_sizes +0 -96
- package/scripts/run_standalone_demo.js +0 -27
- package/scripts/start_demo_web_server.js +0 -44
- package/scripts/update-version +0 -48
- package/scripts/update_gh-pages_demo +0 -132
- package/scripts/update_gh-pages_doc +0 -106
- package/scripts/utils/display_webpack_errors.js +0 -33
- package/scripts/utils/get_human_readable_hours.js +0 -14
- package/scripts/wasm-strip.js +0 -359
- package/sonar-project.properties +0 -7
- package/src/README.md +0 -136
- package/src/compat/README.md +0 -29
- package/src/compat/__tests__/add_text_track.test.ts +0 -176
- package/src/compat/__tests__/browser_compatibility_types.test.ts +0 -152
- package/src/compat/__tests__/browser_version.test.ts +0 -84
- package/src/compat/__tests__/can_patch_isobmff.test.ts +0 -50
- package/src/compat/__tests__/can_rely_on_video_visibility_and_size.test.ts +0 -78
- package/src/compat/__tests__/can_reuse_media_keys.test.ts +0 -31
- package/src/compat/__tests__/change_source_buffer_type.test.ts +0 -60
- package/src/compat/__tests__/clear_element_src.test.ts +0 -252
- package/src/compat/__tests__/enable_audio_track.test.ts +0 -341
- package/src/compat/__tests__/fullscreen.test.ts +0 -286
- package/src/compat/__tests__/is_codec_supported.test.ts +0 -78
- package/src/compat/__tests__/is_offline.test.ts +0 -65
- package/src/compat/__tests__/is_seeking_approximate.test.ts +0 -48
- package/src/compat/__tests__/is_vtt_cue.test.ts +0 -71
- package/src/compat/__tests__/make_vtt_cue.test.ts +0 -97
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +0 -144
- package/src/compat/__tests__/remove_cue.test.ts +0 -229
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +0 -128
- package/src/compat/__tests__/should_reload_media_source_on_decipherability_update.test.ts +0 -50
- package/src/compat/__tests__/should_renew_media_key_system_access.test.ts +0 -55
- package/src/compat/__tests__/should_unset_media_keys.test.ts +0 -53
- package/src/compat/__tests__/should_validate_metadata.test.ts +0 -53
- package/src/compat/__tests__/should_wait_for_data_before_loaded.test.ts +0 -121
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +0 -36
- package/src/compat/add_class_name.ts +0 -41
- package/src/compat/add_text_track.ts +0 -58
- package/src/compat/browser_compatibility_types.ts +0 -222
- package/src/compat/browser_detection.ts +0 -172
- package/src/compat/browser_version.ts +0 -44
- package/src/compat/can_patch_isobmff.ts +0 -30
- package/src/compat/can_rely_on_video_visibility_and_size.ts +0 -52
- package/src/compat/can_reuse_media_keys.ts +0 -20
- package/src/compat/change_source_buffer_type.ts +0 -66
- package/src/compat/clear_element_src.ts +0 -55
- package/src/compat/eme/close_session.ts +0 -111
- package/src/compat/eme/constants.ts +0 -21
- package/src/compat/eme/custom_key_system_access.ts +0 -67
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +0 -186
- package/src/compat/eme/custom_media_keys/index.ts +0 -28
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +0 -88
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +0 -69
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +0 -235
- package/src/compat/eme/custom_media_keys/types.ts +0 -67
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +0 -308
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +0 -50
- package/src/compat/eme/eme-api-implementation.ts +0 -318
- package/src/compat/eme/generate_key_request.ts +0 -162
- package/src/compat/eme/get_init_data.ts +0 -159
- package/src/compat/eme/get_uuid_kid_from_keystatus_kid.ts +0 -37
- package/src/compat/eme/get_webkit_fairplay_initdata.ts +0 -75
- package/src/compat/eme/index.ts +0 -47
- package/src/compat/eme/load_session.ts +0 -67
- package/src/compat/enable_audio_track.ts +0 -33
- package/src/compat/event_listeners.ts +0 -566
- package/src/compat/fullscreen.ts +0 -87
- package/src/compat/get_start_date.ts +0 -48
- package/src/compat/has_issues_with_high_media_source_duration.ts +0 -27
- package/src/compat/index.ts +0 -87
- package/src/compat/is_codec_supported.ts +0 -40
- package/src/compat/is_debug_mode_enabled.ts +0 -12
- package/src/compat/is_node.ts +0 -18
- package/src/compat/is_offline.ts +0 -44
- package/src/compat/is_seeking_approximate.ts +0 -32
- package/src/compat/is_vtt_cue.ts +0 -30
- package/src/compat/make_vtt_cue.ts +0 -51
- package/src/compat/on_height_width_change.ts +0 -119
- package/src/compat/patch_webkit_source_buffer.ts +0 -89
- package/src/compat/remove_cue.ts +0 -64
- package/src/compat/should_favour_custom_safari_EME.ts +0 -34
- package/src/compat/should_prevent_seeking_at_0_initially.ts +0 -19
- package/src/compat/should_reload_media_source_on_decipherability_update.ts +0 -32
- package/src/compat/should_renew_media_key_system_access.ts +0 -26
- package/src/compat/should_unset_media_keys.ts +0 -27
- package/src/compat/should_validate_metadata.ts +0 -27
- package/src/compat/should_wait_for_data_before_loaded.ts +0 -35
- package/src/compat/should_wait_for_have_enough_data.ts +0 -17
- package/src/config.ts +0 -32
- package/src/core/README.md +0 -56
- package/src/core/adaptive/README.md +0 -147
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +0 -548
- package/src/core/adaptive/adaptive_representation_selector.ts +0 -916
- package/src/core/adaptive/buffer_based_chooser.ts +0 -264
- package/src/core/adaptive/guess_based_chooser.ts +0 -309
- package/src/core/adaptive/index.ts +0 -45
- package/src/core/adaptive/network_analyzer.ts +0 -419
- package/src/core/adaptive/utils/__tests__/bandwith_estimator.test.ts +0 -134
- package/src/core/adaptive/utils/__tests__/ewma.test.ts +0 -79
- package/src/core/adaptive/utils/__tests__/filter_by_bitrate.test.ts +0 -56
- package/src/core/adaptive/utils/__tests__/filter_by_width.test.ts +0 -60
- package/src/core/adaptive/utils/__tests__/get_buffer_levels.test.ts +0 -48
- package/src/core/adaptive/utils/__tests__/select_optimal_representation.test.ts +0 -243
- package/src/core/adaptive/utils/bandwidth_estimator.ts +0 -88
- package/src/core/adaptive/utils/ewma.ts +0 -59
- package/src/core/adaptive/utils/filter_by_bitrate.ts +0 -46
- package/src/core/adaptive/utils/filter_by_width.ts +0 -49
- package/src/core/adaptive/utils/get_buffer_levels.ts +0 -50
- package/src/core/adaptive/utils/last_estimate_storage.ts +0 -79
- package/src/core/adaptive/utils/pending_requests_store.ts +0 -147
- package/src/core/adaptive/utils/representation_score_calculator.ts +0 -168
- package/src/core/adaptive/utils/select_optimal_representation.ts +0 -54
- package/src/core/api/README.md +0 -36
- package/src/core/api/__tests__/option_utils.test.ts +0 -1668
- package/src/core/api/__tests__/public_api.test.ts +0 -857
- package/src/core/api/__tests__/utils.test.ts +0 -195
- package/src/core/api/debug/buffer_graph.ts +0 -244
- package/src/core/api/debug/buffer_size_graph.ts +0 -130
- package/src/core/api/debug/constants.ts +0 -2
- package/src/core/api/debug/index.ts +0 -3
- package/src/core/api/debug/modules/general_info.ts +0 -213
- package/src/core/api/debug/modules/segment_buffer_content.ts +0 -155
- package/src/core/api/debug/modules/segment_buffer_size.ts +0 -48
- package/src/core/api/debug/render.ts +0 -40
- package/src/core/api/debug/utils.ts +0 -103
- package/src/core/api/index.ts +0 -27
- package/src/core/api/option_utils.ts +0 -700
- package/src/core/api/playback_observer.ts +0 -994
- package/src/core/api/public_api.ts +0 -3247
- package/src/core/api/tracks_management/__tests__/media_element_track_choice_manager.test.ts +0 -184
- package/src/core/api/tracks_management/media_element_track_choice_manager.ts +0 -975
- package/src/core/api/tracks_management/track_choice_manager.ts +0 -1280
- package/src/core/api/utils.ts +0 -216
- package/src/core/decrypt/README.md +0 -22
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +0 -422
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +0 -677
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +0 -528
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +0 -343
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +0 -264
- package/src/core/decrypt/__tests__/__global__/utils.ts +0 -491
- package/src/core/decrypt/attach_media_keys.ts +0 -121
- package/src/core/decrypt/clear_on_stop.ts +0 -47
- package/src/core/decrypt/content_decryptor.ts +0 -1246
- package/src/core/decrypt/create_or_load_session.ts +0 -133
- package/src/core/decrypt/create_session.ts +0 -214
- package/src/core/decrypt/dispose_decryption_resources.ts +0 -54
- package/src/core/decrypt/find_key_system.ts +0 -376
- package/src/core/decrypt/get_key_system_configuration.ts +0 -51
- package/src/core/decrypt/get_media_keys.ts +0 -147
- package/src/core/decrypt/index.ts +0 -36
- package/src/core/decrypt/init_media_keys.ts +0 -60
- package/src/core/decrypt/session_events_listener.ts +0 -386
- package/src/core/decrypt/set_server_certificate.ts +0 -105
- package/src/core/decrypt/types.ts +0 -404
- package/src/core/decrypt/utils/__tests__/are_init_values_compatible.test.ts +0 -261
- package/src/core/decrypt/utils/__tests__/clean_old_loaded_sessions.test.ts +0 -158
- package/src/core/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +0 -133
- package/src/core/decrypt/utils/are_init_values_compatible.ts +0 -140
- package/src/core/decrypt/utils/check_key_statuses.ts +0 -193
- package/src/core/decrypt/utils/clean_old_loaded_sessions.ts +0 -45
- package/src/core/decrypt/utils/clean_old_stored_persistent_info.ts +0 -48
- package/src/core/decrypt/utils/get_drm_system_id.ts +0 -42
- package/src/core/decrypt/utils/init_data_values_container.ts +0 -119
- package/src/core/decrypt/utils/is_session_usable.ts +0 -62
- package/src/core/decrypt/utils/key_id_comparison.ts +0 -57
- package/src/core/decrypt/utils/key_session_record.ts +0 -174
- package/src/core/decrypt/utils/loaded_sessions_store.ts +0 -505
- package/src/core/decrypt/utils/media_keys_infos_store.ts +0 -85
- package/src/core/decrypt/utils/persistent_sessions_store.ts +0 -358
- package/src/core/decrypt/utils/serializable_bytes.ts +0 -59
- package/src/core/decrypt/utils/server_certificate_store.ts +0 -133
- package/src/core/fetchers/README.md +0 -84
- package/src/core/fetchers/cdn_prioritizer.ts +0 -207
- package/src/core/fetchers/index.ts +0 -38
- package/src/core/fetchers/manifest/index.ts +0 -28
- package/src/core/fetchers/manifest/manifest_fetcher.ts +0 -798
- package/src/core/fetchers/segment/__tests__/task_prioritizer.test.ts +0 -763
- package/src/core/fetchers/segment/index.ts +0 -28
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +0 -113
- package/src/core/fetchers/segment/segment_fetcher.ts +0 -482
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +0 -129
- package/src/core/fetchers/segment/task_prioritizer.ts +0 -455
- package/src/core/fetchers/utils/error_selector.ts +0 -38
- package/src/core/fetchers/utils/schedule_request.ts +0 -493
- package/src/core/init/README.md +0 -81
- package/src/core/init/directfile_content_initializer.ts +0 -310
- package/src/core/init/index.ts +0 -22
- package/src/core/init/media_source_content_initializer.ts +0 -878
- package/src/core/init/types.ts +0 -266
- package/src/core/init/utils/__tests__/are_same_stream_events.test.ts +0 -84
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +0 -94
- package/src/core/init/utils/content_time_boundaries_observer.ts +0 -646
- package/src/core/init/utils/create_media_source.ts +0 -139
- package/src/core/init/utils/create_stream_playback_observer.ts +0 -132
- package/src/core/init/utils/end_of_stream.ts +0 -108
- package/src/core/init/utils/get_initial_time.ts +0 -165
- package/src/core/init/utils/get_loaded_reference.ts +0 -82
- package/src/core/init/utils/initial_seek_and_play.ts +0 -237
- package/src/core/init/utils/initialize_content_decryption.ts +0 -172
- package/src/core/init/utils/media_source_duration_updater.ts +0 -349
- package/src/core/init/utils/rebuffering_controller.ts +0 -642
- package/src/core/init/utils/stream_events_emitter/are_same_stream_events.ts +0 -42
- package/src/core/init/utils/stream_events_emitter/index.ts +0 -22
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +0 -74
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +0 -252
- package/src/core/init/utils/stream_events_emitter/types.ts +0 -46
- package/src/core/init/utils/throw_on_media_error.ts +0 -74
- package/src/core/segment_buffers/README.md +0 -219
- package/src/core/segment_buffers/garbage_collector.ts +0 -177
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +0 -650
- package/src/core/segment_buffers/implementations/audio_video/index.ts +0 -18
- package/src/core/segment_buffers/implementations/image/image_segment_buffer.ts +0 -152
- package/src/core/segment_buffers/implementations/image/index.ts +0 -18
- package/src/core/segment_buffers/implementations/index.ts +0 -20
- package/src/core/segment_buffers/implementations/text/html/__tests__/utils.test.ts +0 -343
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +0 -527
- package/src/core/segment_buffers/implementations/text/html/index.ts +0 -24
- package/src/core/segment_buffers/implementations/text/html/parsers.ts +0 -49
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +0 -391
- package/src/core/segment_buffers/implementations/text/html/types.ts +0 -23
- package/src/core/segment_buffers/implementations/text/html/update_proportional_elements.ts +0 -93
- package/src/core/segment_buffers/implementations/text/html/utils.ts +0 -139
- package/src/core/segment_buffers/implementations/text/native/index.ts +0 -19
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +0 -340
- package/src/core/segment_buffers/implementations/text/native/parsers.ts +0 -47
- package/src/core/segment_buffers/implementations/types.ts +0 -386
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +0 -80
- package/src/core/segment_buffers/index.ts +0 -67
- package/src/core/segment_buffers/inventory/buffered_history.ts +0 -131
- package/src/core/segment_buffers/inventory/index.ts +0 -30
- package/src/core/segment_buffers/inventory/segment_inventory.ts +0 -1111
- package/src/core/segment_buffers/inventory/types.ts +0 -35
- package/src/core/segment_buffers/segment_buffers_store.ts +0 -383
- package/src/core/stream/README.md +0 -59
- package/src/core/stream/adaptation/adaptation_stream.ts +0 -378
- package/src/core/stream/adaptation/index.ts +0 -20
- package/src/core/stream/adaptation/types.ts +0 -199
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/index.ts +0 -38
- package/src/core/stream/orchestrator/README.md +0 -349
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +0 -70
- package/src/core/stream/orchestrator/index.ts +0 -30
- package/src/core/stream/orchestrator/stream_orchestrator.ts +0 -664
- package/src/core/stream/period/index.ts +0 -20
- package/src/core/stream/period/period_stream.ts +0 -469
- package/src/core/stream/period/types.ts +0 -132
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +0 -287
- package/src/core/stream/representation/README.md +0 -16
- package/src/core/stream/representation/index.ts +0 -20
- package/src/core/stream/representation/representation_stream.ts +0 -474
- package/src/core/stream/representation/types.ts +0 -292
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +0 -77
- package/src/core/stream/representation/utils/check_for_discontinuity.ts +0 -305
- package/src/core/stream/representation/utils/downloading_queue.ts +0 -603
- package/src/core/stream/representation/utils/force_garbage_collection.ts +0 -113
- package/src/core/stream/representation/utils/get_buffer_status.ts +0 -322
- package/src/core/stream/representation/utils/get_needed_segments.ts +0 -617
- package/src/core/stream/representation/utils/get_segment_priority.ts +0 -43
- package/src/core/stream/representation/utils/push_init_segment.ts +0 -85
- package/src/core/stream/representation/utils/push_media_segment.ts +0 -113
- package/src/default_config.ts +0 -1293
- package/src/errors/README.md +0 -6
- package/src/errors/__tests__/assertion_error.test.ts +0 -26
- package/src/errors/__tests__/encrypted_media_error.test.ts +0 -45
- package/src/errors/__tests__/error_message.test.ts +0 -23
- package/src/errors/__tests__/format_error.test.ts +0 -62
- package/src/errors/__tests__/is_known_error.test.ts +0 -65
- package/src/errors/__tests__/media_error.test.ts +0 -55
- package/src/errors/__tests__/network_error.test.ts +0 -84
- package/src/errors/__tests__/other_error.test.ts +0 -53
- package/src/errors/__tests__/request_error.test.ts +0 -45
- package/src/errors/assertion_error.ts +0 -40
- package/src/errors/custom_loader_error.ts +0 -57
- package/src/errors/encrypted_media_error.ts +0 -71
- package/src/errors/error_codes.ts +0 -149
- package/src/errors/error_message.ts +0 -30
- package/src/errors/format_error.ts +0 -39
- package/src/errors/index.ts +0 -52
- package/src/errors/is_known_error.ts +0 -35
- package/src/errors/media_error.ts +0 -118
- package/src/errors/network_error.ts +0 -74
- package/src/errors/other_error.ts +0 -50
- package/src/errors/request_error.ts +0 -76
- package/src/experimental/README.md +0 -16
- package/src/experimental/features/__tests__/dash_wasm.test.ts +0 -44
- package/src/experimental/features/__tests__/debug_element.test.ts +0 -12
- package/src/experimental/features/__tests__/index.test.ts +0 -19
- package/src/experimental/features/__tests__/local.test.ts +0 -35
- package/src/experimental/features/__tests__/metaplaylist.test.ts +0 -35
- package/src/experimental/features/dash_wasm.ts +0 -41
- package/src/experimental/features/debug_element.ts +0 -13
- package/src/experimental/features/index.ts +0 -20
- package/src/experimental/features/local.ts +0 -28
- package/src/experimental/features/metaplaylist.ts +0 -28
- package/src/experimental/index.ts +0 -5
- package/src/experimental/tools/VideoThumbnailLoader/features/dash.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/features/metaplaylist.ts +0 -23
- package/src/experimental/tools/VideoThumbnailLoader/index.ts +0 -25
- package/src/experimental/tools/VideoThumbnailLoader/load_and_push_segment.ts +0 -77
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +0 -75
- package/src/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.ts +0 -54
- package/src/experimental/tools/VideoThumbnailLoader/types.ts +0 -39
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +0 -423
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.ts +0 -34
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +0 -141
- package/src/experimental/tools/createMetaplaylist/index.ts +0 -72
- package/src/experimental/tools/index.ts +0 -27
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/capabilities.test.ts +0 -37
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +0 -140
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +0 -153
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/decodingInfos.test.ts +0 -405
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/defaultCodecFinder.test.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaContentType.test.ts +0 -294
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +0 -189
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/utils.test.ts +0 -361
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +0 -184
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +0 -136
- package/src/experimental/tools/mediaCapabilitiesProber/capabilities.ts +0 -169
- package/src/experimental/tools/mediaCapabilitiesProber/index.ts +0 -18
- package/src/experimental/tools/mediaCapabilitiesProber/log.ts +0 -21
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +0 -67
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +0 -89
- package/src/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/index.ts +0 -44
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +0 -66
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.ts +0 -100
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +0 -105
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +0 -54
- package/src/experimental/tools/mediaCapabilitiesProber/types.ts +0 -75
- package/src/experimental/tools/mediaCapabilitiesProber/utils.ts +0 -107
- package/src/experimental/tools/parseBIFThumbnails.ts +0 -39
- package/src/features/README.md +0 -11
- package/src/features/__tests__/add_features.test.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -674
- package/src/features/add_features.ts +0 -37
- package/src/features/features_object.ts +0 -37
- package/src/features/index.ts +0 -40
- package/src/features/initialize_features.ts +0 -136
- package/src/features/list/__tests__/bif_parser.test.ts +0 -30
- package/src/features/list/__tests__/dash.test.ts +0 -41
- package/src/features/list/__tests__/directfile.test.ts +0 -35
- package/src/features/list/__tests__/eme.test.ts +0 -28
- package/src/features/list/__tests__/html_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/html_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/html_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/image_buffer.test.ts +0 -28
- package/src/features/list/__tests__/index.test.ts +0 -55
- package/src/features/list/__tests__/native_sami_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_srt_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_text_buffer.test.ts +0 -29
- package/src/features/list/__tests__/native_ttml_parser.test.ts +0 -33
- package/src/features/list/__tests__/native_vtt_parser.test.ts +0 -33
- package/src/features/list/__tests__/smooth.test.ts +0 -36
- package/src/features/list/bif_parser.ts +0 -31
- package/src/features/list/dash.ts +0 -36
- package/src/features/list/directfile.ts +0 -35
- package/src/features/list/eme.ts +0 -29
- package/src/features/list/html_sami_parser.ts +0 -31
- package/src/features/list/html_srt_parser.ts +0 -31
- package/src/features/list/html_text_buffer.ts +0 -29
- package/src/features/list/html_ttml_parser.ts +0 -31
- package/src/features/list/html_vtt_parser.ts +0 -31
- package/src/features/list/image_buffer.ts +0 -29
- package/src/features/list/index.ts +0 -32
- package/src/features/list/native_sami_parser.ts +0 -32
- package/src/features/list/native_srt_parser.ts +0 -32
- package/src/features/list/native_text_buffer.ts +0 -30
- package/src/features/list/native_ttml_parser.ts +0 -32
- package/src/features/list/native_vtt_parser.ts +0 -32
- package/src/features/list/smooth.ts +0 -32
- package/src/features/types.ts +0 -183
- package/src/index.ts +0 -38
- package/src/log.ts +0 -22
- package/src/manifest/README.md +0 -55
- package/src/manifest/__tests__/adaptation.test.ts +0 -485
- package/src/manifest/__tests__/manifest.test.ts +0 -428
- package/src/manifest/__tests__/period.test.ts +0 -769
- package/src/manifest/__tests__/representation.test.ts +0 -297
- package/src/manifest/__tests__/update_period_in_place.test.ts +0 -1074
- package/src/manifest/__tests__/update_periods.test.ts +0 -845
- package/src/manifest/adaptation.ts +0 -294
- package/src/manifest/index.ts +0 -67
- package/src/manifest/manifest.ts +0 -811
- package/src/manifest/period.ts +0 -211
- package/src/manifest/representation.ts +0 -451
- package/src/manifest/representation_index/__tests__/static.test.ts +0 -74
- package/src/manifest/representation_index/index.ts +0 -31
- package/src/manifest/representation_index/static.ts +0 -158
- package/src/manifest/representation_index/types.ts +0 -433
- package/src/manifest/types.ts +0 -33
- package/src/manifest/update_period_in_place.ts +0 -142
- package/src/manifest/update_periods.ts +0 -201
- package/src/manifest/utils.ts +0 -60
- package/src/minimal.ts +0 -34
- package/src/parsers/README.md +0 -12
- package/src/parsers/containers/isobmff/constants.ts +0 -24
- package/src/parsers/containers/isobmff/create_box.ts +0 -81
- package/src/parsers/containers/isobmff/drm/index.ts +0 -17
- package/src/parsers/containers/isobmff/drm/playready.ts +0 -45
- package/src/parsers/containers/isobmff/get_box.ts +0 -278
- package/src/parsers/containers/isobmff/index.ts +0 -51
- package/src/parsers/containers/isobmff/read.ts +0 -105
- package/src/parsers/containers/isobmff/take_pssh_out.ts +0 -101
- package/src/parsers/containers/isobmff/utils.ts +0 -555
- package/src/parsers/containers/matroska/index.ts +0 -21
- package/src/parsers/containers/matroska/utils.ts +0 -313
- package/src/parsers/images/bif.ts +0 -128
- package/src/parsers/manifest/dash/common/__tests__/attach_trickmode_track.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/convert_supplemental_codecs.test.ts +0 -37
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +0 -162
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +0 -65
- package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +0 -165
- package/src/parsers/manifest/dash/common/__tests__/get_periods_time_infos.test.ts +0 -118
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +0 -290
- package/src/parsers/manifest/dash/common/__tests__/parse_availability_start_time.test.ts +0 -63
- package/src/parsers/manifest/dash/common/attach_trickmode_track.ts +0 -55
- package/src/parsers/manifest/dash/common/convert_supplemental_codecs.ts +0 -32
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +0 -87
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +0 -41
- package/src/parsers/manifest/dash/common/get_hdr_information.ts +0 -94
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +0 -46
- package/src/parsers/manifest/dash/common/get_minimum_and_maximum_positions.ts +0 -39
- package/src/parsers/manifest/dash/common/get_periods_time_infos.ts +0 -91
- package/src/parsers/manifest/dash/common/index.ts +0 -40
- package/src/parsers/manifest/dash/common/indexes/__tests__/tokens.test.ts +0 -60
- package/src/parsers/manifest/dash/common/indexes/base.ts +0 -444
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +0 -55
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +0 -148
- package/src/parsers/manifest/dash/common/indexes/index.ts +0 -39
- package/src/parsers/manifest/dash/common/indexes/list.ts +0 -338
- package/src/parsers/manifest/dash/common/indexes/template.ts +0 -652
- package/src/parsers/manifest/dash/common/indexes/timeline/__tests__/parse_s_element.test.ts +0 -115
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.ts +0 -54
- package/src/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.ts +0 -102
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +0 -66
- package/src/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.ts +0 -153
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +0 -21
- package/src/parsers/manifest/dash/common/indexes/timeline/parse_s_element.ts +0 -72
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +0 -1049
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +0 -127
- package/src/parsers/manifest/dash/common/indexes/utils.ts +0 -32
- package/src/parsers/manifest/dash/common/infer_adaptation_type.ts +0 -142
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +0 -165
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +0 -569
- package/src/parsers/manifest/dash/common/parse_availability_start_time.ts +0 -35
- package/src/parsers/manifest/dash/common/parse_mpd.ts +0 -399
- package/src/parsers/manifest/dash/common/parse_periods.ts +0 -363
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +0 -199
- package/src/parsers/manifest/dash/common/parse_representations.ts +0 -352
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +0 -58
- package/src/parsers/manifest/dash/index.ts +0 -22
- package/src/parsers/manifest/dash/js-parser/__tests__/parse_from_document.test.ts +0 -45
- package/src/parsers/manifest/dash/js-parser/index.ts +0 -18
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +0 -381
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.ts +0 -49
- package/src/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.ts +0 -94
- package/src/parsers/manifest/dash/js-parser/node_parsers/EventStream.ts +0 -117
- package/src/parsers/manifest/dash/js-parser/node_parsers/Initialization.ts +0 -48
- package/src/parsers/manifest/dash/js-parser/node_parsers/MPD.ts +0 -180
- package/src/parsers/manifest/dash/js-parser/node_parsers/Period.ts +0 -152
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +0 -234
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.ts +0 -112
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentList.ts +0 -50
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +0 -98
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.ts +0 -35
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.ts +0 -63
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/AdaptationSet.test.ts +0 -407
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentComponent.test.ts +0 -67
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +0 -223
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +0 -139
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentTimeline.test.ts +0 -119
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +0 -205
- package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/utils.test.ts +0 -218
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +0 -384
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +0 -129
- package/src/parsers/manifest/dash/node_parser_types.ts +0 -431
- package/src/parsers/manifest/dash/parsers_types.ts +0 -91
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +0 -25
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +0 -16
- package/src/parsers/manifest/dash/wasm-parser/README.md +0 -267
- package/src/parsers/manifest/dash/wasm-parser/index.ts +0 -21
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +0 -28
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +0 -373
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +0 -85
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +0 -414
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +0 -472
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +0 -72
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +0 -17
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +0 -147
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +0 -217
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +0 -477
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +0 -343
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +0 -38
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.ts +0 -53
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.ts +0 -62
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +0 -144
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +0 -183
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +0 -180
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +0 -215
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.ts +0 -44
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.ts +0 -115
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +0 -61
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.ts +0 -133
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.ts +0 -70
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/index.ts +0 -17
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +0 -66
- package/src/parsers/manifest/dash/wasm-parser/ts/parsers_stack.ts +0 -80
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +0 -298
- package/src/parsers/manifest/dash/wasm-parser/ts/utils.ts +0 -47
- package/src/parsers/manifest/index.ts +0 -17
- package/src/parsers/manifest/local/index.ts +0 -25
- package/src/parsers/manifest/local/parse_local_manifest.ts +0 -164
- package/src/parsers/manifest/local/representation_index.ts +0 -246
- package/src/parsers/manifest/local/types.ts +0 -291
- package/src/parsers/manifest/metaplaylist/index.ts +0 -28
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +0 -335
- package/src/parsers/manifest/metaplaylist/representation_index.ts +0 -251
- package/src/parsers/manifest/smooth/create_parser.ts +0 -699
- package/src/parsers/manifest/smooth/get_codecs.ts +0 -55
- package/src/parsers/manifest/smooth/index.ts +0 -26
- package/src/parsers/manifest/smooth/parse_C_nodes.ts +0 -69
- package/src/parsers/manifest/smooth/parse_protection_node.ts +0 -72
- package/src/parsers/manifest/smooth/representation_index.ts +0 -704
- package/src/parsers/manifest/smooth/utils/add_segment_infos.ts +0 -77
- package/src/parsers/manifest/smooth/utils/parseBoolean.ts +0 -31
- package/src/parsers/manifest/smooth/utils/reduceChildren.ts +0 -36
- package/src/parsers/manifest/smooth/utils/tokens.ts +0 -46
- package/src/parsers/manifest/types.ts +0 -395
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +0 -161
- package/src/parsers/manifest/utils/__tests__/index_helpers.test.ts +0 -55
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +0 -546
- package/src/parsers/manifest/utils/check_manifest_ids.ts +0 -83
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +0 -74
- package/src/parsers/manifest/utils/get_first_time_from_adaptation.ts +0 -48
- package/src/parsers/manifest/utils/get_last_time_from_adaptation.ts +0 -50
- package/src/parsers/manifest/utils/get_maximum_positions.ts +0 -87
- package/src/parsers/manifest/utils/get_minimum_position.ts +0 -80
- package/src/parsers/manifest/utils/index_helpers.ts +0 -204
- package/src/parsers/manifest/utils/update_segment_timeline.ts +0 -141
- package/src/parsers/texttracks/index.ts +0 -21
- package/src/parsers/texttracks/sami/html.ts +0 -219
- package/src/parsers/texttracks/sami/native.ts +0 -192
- package/src/parsers/texttracks/srt/__tests__/find_end_of_cue_block.test.ts +0 -99
- package/src/parsers/texttracks/srt/__tests__/get_cue_blocks.test.ts +0 -119
- package/src/parsers/texttracks/srt/__tests__/parse_cue.test.ts +0 -123
- package/src/parsers/texttracks/srt/__tests__/parse_timestamp.test.ts +0 -36
- package/src/parsers/texttracks/srt/find_end_of_cue_block.ts +0 -46
- package/src/parsers/texttracks/srt/get_cue_blocks.ts +0 -49
- package/src/parsers/texttracks/srt/html.ts +0 -182
- package/src/parsers/texttracks/srt/native.ts +0 -74
- package/src/parsers/texttracks/srt/parse_cue.ts +0 -76
- package/src/parsers/texttracks/srt/parse_timestamp.ts +0 -37
- package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +0 -248
- package/src/parsers/texttracks/ttml/get_parameters.ts +0 -106
- package/src/parsers/texttracks/ttml/get_styling.ts +0 -146
- package/src/parsers/texttracks/ttml/get_time_delimiters.ts +0 -49
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +0 -190
- package/src/parsers/texttracks/ttml/html/__tests__/generate_css_test_outline.test.ts +0 -32
- package/src/parsers/texttracks/ttml/html/__tests__/ttml_color_to_css_color.test.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.ts +0 -67
- package/src/parsers/texttracks/ttml/html/apply_extent.ts +0 -65
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +0 -62
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +0 -50
- package/src/parsers/texttracks/ttml/html/apply_origin.ts +0 -64
- package/src/parsers/texttracks/ttml/html/apply_padding.ts +0 -141
- package/src/parsers/texttracks/ttml/html/create_element.ts +0 -549
- package/src/parsers/texttracks/ttml/html/generate_css_test_outline.ts +0 -46
- package/src/parsers/texttracks/ttml/html/index.ts +0 -23
- package/src/parsers/texttracks/ttml/html/parse_cue.ts +0 -65
- package/src/parsers/texttracks/ttml/html/parse_ttml_to_div.ts +0 -58
- package/src/parsers/texttracks/ttml/html/ttml_color_to_css_color.ts +0 -68
- package/src/parsers/texttracks/ttml/native/index.ts +0 -23
- package/src/parsers/texttracks/ttml/native/parse_cue.ts +0 -245
- package/src/parsers/texttracks/ttml/native/parse_ttml_to_vtt.ts +0 -39
- package/src/parsers/texttracks/ttml/parse_ttml.ts +0 -206
- package/src/parsers/texttracks/ttml/regexps.ts +0 -65
- package/src/parsers/texttracks/ttml/resolve_styles_inheritance.ts +0 -84
- package/src/parsers/texttracks/ttml/time_parsing.ts +0 -156
- package/src/parsers/texttracks/ttml/xml_utils.ts +0 -166
- package/src/parsers/texttracks/types.ts +0 -34
- package/src/parsers/texttracks/webvtt/__tests__/get_cue_blocks.test.ts +0 -218
- package/src/parsers/texttracks/webvtt/__tests__/get_style_blocks.test.ts +0 -65
- package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +0 -249
- package/src/parsers/texttracks/webvtt/__tests__/parse_timestamp.test.ts +0 -39
- package/src/parsers/texttracks/webvtt/__tests__/utils.test.ts +0 -401
- package/src/parsers/texttracks/webvtt/get_cue_blocks.ts +0 -51
- package/src/parsers/texttracks/webvtt/get_style_blocks.ts +0 -56
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +0 -106
- package/src/parsers/texttracks/webvtt/html/__tests__/create_default_style_elements.test.ts +0 -44
- package/src/parsers/texttracks/webvtt/html/__tests__/create_style_attribute.test.ts +0 -139
- package/src/parsers/texttracks/webvtt/html/__tests__/create_styled_element.test.ts +0 -140
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_style_block.test.ts +0 -345
- package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +0 -181
- package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +0 -234
- package/src/parsers/texttracks/webvtt/html/convert_payload_to_html.ts +0 -46
- package/src/parsers/texttracks/webvtt/html/create_default_style_elements.ts +0 -26
- package/src/parsers/texttracks/webvtt/html/create_style_attribute.ts +0 -222
- package/src/parsers/texttracks/webvtt/html/create_styled_element.ts +0 -95
- package/src/parsers/texttracks/webvtt/html/index.ts +0 -25
- package/src/parsers/texttracks/webvtt/html/parse_style_block.ts +0 -76
- package/src/parsers/texttracks/webvtt/html/parse_webvtt_to_div.ts +0 -67
- package/src/parsers/texttracks/webvtt/html/to_html.ts +0 -96
- package/src/parsers/texttracks/webvtt/native/index.ts +0 -23
- package/src/parsers/texttracks/webvtt/native/parse_vtt_to_cues.ts +0 -70
- package/src/parsers/texttracks/webvtt/native/set_settings_on_cue.ts +0 -95
- package/src/parsers/texttracks/webvtt/native/to_native_cue.ts +0 -34
- package/src/parsers/texttracks/webvtt/parse_cue_block.ts +0 -128
- package/src/parsers/texttracks/webvtt/parse_timestamp.ts +0 -40
- package/src/parsers/texttracks/webvtt/utils.ts +0 -135
- package/src/public_types.ts +0 -846
- package/src/tools/README.md +0 -4
- package/src/tools/TextTrackRenderer/index.ts +0 -28
- package/src/tools/TextTrackRenderer/text_track_renderer.ts +0 -107
- package/src/tools/index.ts +0 -20
- package/src/tools/string_utils.ts +0 -24
- package/src/transports/README.md +0 -276
- package/src/transports/dash/add_segment_integrity_checks_to_loader.ts +0 -98
- package/src/transports/dash/construct_segment_url.ts +0 -28
- package/src/transports/dash/extract_complete_chunks.ts +0 -66
- package/src/transports/dash/get_events_out_of_emsgs.ts +0 -105
- package/src/transports/dash/image_pipelines.ts +0 -122
- package/src/transports/dash/index.ts +0 -23
- package/src/transports/dash/init_segment_loader.ts +0 -114
- package/src/transports/dash/low_latency_segment_loader.ts +0 -87
- package/src/transports/dash/manifest_parser.ts +0 -325
- package/src/transports/dash/pipelines.ts +0 -72
- package/src/transports/dash/segment_loader.ts +0 -249
- package/src/transports/dash/segment_parser.ts +0 -194
- package/src/transports/dash/text_loader.ts +0 -120
- package/src/transports/dash/text_parser.ts +0 -234
- package/src/transports/index.ts +0 -17
- package/src/transports/local/index.ts +0 -18
- package/src/transports/local/pipelines.ts +0 -100
- package/src/transports/local/segment_loader.ts +0 -198
- package/src/transports/local/segment_parser.ts +0 -101
- package/src/transports/local/text_parser.ts +0 -185
- package/src/transports/metaplaylist/README.md +0 -94
- package/src/transports/metaplaylist/index.ts +0 -23
- package/src/transports/metaplaylist/manifest_loader.ts +0 -62
- package/src/transports/metaplaylist/pipelines.ts +0 -425
- package/src/transports/smooth/extract_timings_infos.ts +0 -142
- package/src/transports/smooth/index.ts +0 -23
- package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +0 -231
- package/src/transports/smooth/isobmff/create_audio_init_segment.ts +0 -84
- package/src/transports/smooth/isobmff/create_boxes.ts +0 -481
- package/src/transports/smooth/isobmff/create_init_segment.ts +0 -100
- package/src/transports/smooth/isobmff/create_traf_box.ts +0 -40
- package/src/transports/smooth/isobmff/create_video_init_segment.ts +0 -78
- package/src/transports/smooth/isobmff/get_aaces_header.ts +0 -62
- package/src/transports/smooth/isobmff/index.ts +0 -32
- package/src/transports/smooth/isobmff/parse_tfrf.ts +0 -57
- package/src/transports/smooth/isobmff/parse_tfxd.ts +0 -38
- package/src/transports/smooth/isobmff/patch_segment.ts +0 -171
- package/src/transports/smooth/pipelines.ts +0 -533
- package/src/transports/smooth/segment_loader.ts +0 -288
- package/src/transports/smooth/utils.ts +0 -106
- package/src/transports/types.ts +0 -809
- package/src/transports/utils/__tests__/byte_range.test.ts +0 -35
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +0 -148
- package/src/transports/utils/__tests__/find_complete_box.test.ts +0 -138
- package/src/transports/utils/__tests__/infer_segment_container.test.ts +0 -227
- package/src/transports/utils/byte_range.ts +0 -25
- package/src/transports/utils/call_custom_manifest_loader.ts +0 -147
- package/src/transports/utils/check_isobmff_integrity.ts +0 -50
- package/src/transports/utils/find_complete_box.ts +0 -63
- package/src/transports/utils/generate_manifest_loader.ts +0 -97
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -86
- package/src/transports/utils/infer_segment_container.ts +0 -56
- package/src/transports/utils/parse_text_track.ts +0 -176
- package/src/typings/README.md +0 -7
- package/src/typings/globals.d.ts +0 -83
- package/src/typings/next-tick.d.ts +0 -23
- package/src/utils/README.md +0 -5
- package/src/utils/__tests__/are_arrays_of_numbers_equal.test.ts +0 -86
- package/src/utils/__tests__/are_codecs_compatible.test.ts +0 -88
- package/src/utils/__tests__/array_find.test.ts +0 -113
- package/src/utils/__tests__/array_find_index.test.ts +0 -113
- package/src/utils/__tests__/array_includes.test.ts +0 -151
- package/src/utils/__tests__/assert.test.ts +0 -237
- package/src/utils/__tests__/assert_unreachable.test.ts +0 -40
- package/src/utils/__tests__/base64.test.ts +0 -147
- package/src/utils/__tests__/byte_parsing.test.ts +0 -267
- package/src/utils/__tests__/deep_merge.test.ts +0 -48
- package/src/utils/__tests__/event_emitter.test.ts +0 -579
- package/src/utils/__tests__/flat_map.test.ts +0 -71
- package/src/utils/__tests__/get_fuzzed_delay.test.ts +0 -32
- package/src/utils/__tests__/hash_buffer.test.ts +0 -105
- package/src/utils/__tests__/id_generator.test.ts +0 -80
- package/src/utils/__tests__/initialization_segment_cache.test.ts +0 -245
- package/src/utils/__tests__/is_non_empty_string.test.ts +0 -41
- package/src/utils/__tests__/is_null_or_undefined.test.ts +0 -33
- package/src/utils/__tests__/list_to_map.test.ts +0 -46
- package/src/utils/__tests__/logger.test.ts +0 -214
- package/src/utils/__tests__/noop.test.ts +0 -23
- package/src/utils/__tests__/object_assign.test.ts +0 -56
- package/src/utils/__tests__/object_values.test.ts +0 -26
- package/src/utils/__tests__/ranges.test.ts +0 -907
- package/src/utils/__tests__/resolve_url.test.ts +0 -100
- package/src/utils/__tests__/simple_set.test.ts +0 -57
- package/src/utils/__tests__/sorted_list.test.ts +0 -335
- package/src/utils/__tests__/starts_with.test.ts +0 -65
- package/src/utils/__tests__/string_parsing.test.ts +0 -267
- package/src/utils/__tests__/uniq.test.ts +0 -134
- package/src/utils/__tests__/warn_once.test.ts +0 -38
- package/src/utils/__tests__/weak_map_memory.test.ts +0 -188
- package/src/utils/are_arrays_of_numbers_equal.ts +0 -39
- package/src/utils/are_codecs_compatible.ts +0 -51
- package/src/utils/array_find.ts +0 -55
- package/src/utils/array_find_index.ts +0 -54
- package/src/utils/array_includes.ts +0 -93
- package/src/utils/assert.ts +0 -65
- package/src/utils/assert_unreachable.ts +0 -45
- package/src/utils/base64.ts +0 -153
- package/src/utils/byte_parsing.ts +0 -256
- package/src/utils/cancellable_sleep.ts +0 -41
- package/src/utils/create_cancellable_promise.ts +0 -69
- package/src/utils/deep_merge.ts +0 -49
- package/src/utils/event_emitter.ts +0 -147
- package/src/utils/flat_map.ts +0 -50
- package/src/utils/get_fuzzed_delay.ts +0 -27
- package/src/utils/hash_buffer.ts +0 -42
- package/src/utils/id_generator.ts +0 -35
- package/src/utils/initialization_segment_cache.ts +0 -68
- package/src/utils/is_non_empty_string.ts +0 -23
- package/src/utils/is_null_or_undefined.ts +0 -27
- package/src/utils/languages/ISO_639-1_to_ISO_639-3.ts +0 -207
- package/src/utils/languages/ISO_639-2_to_ISO_639-3.ts +0 -43
- package/src/utils/languages/__tests__/normalize.test.ts +0 -290
- package/src/utils/languages/index.ts +0 -29
- package/src/utils/languages/normalize.ts +0 -152
- package/src/utils/list_to_map.ts +0 -32
- package/src/utils/logger.ts +0 -100
- package/src/utils/noop.ts +0 -26
- package/src/utils/object_assign.ts +0 -60
- package/src/utils/object_values.ts +0 -31
- package/src/utils/ranges.ts +0 -499
- package/src/utils/reference.ts +0 -390
- package/src/utils/request/fetch.ts +0 -250
- package/src/utils/request/index.ts +0 -38
- package/src/utils/request/xhr.ts +0 -287
- package/src/utils/resolve_url.ts +0 -126
- package/src/utils/retry_promise_with_backoff.ts +0 -95
- package/src/utils/simple_set.ts +0 -67
- package/src/utils/sleep.ts +0 -14
- package/src/utils/slice_uint8array.ts +0 -53
- package/src/utils/sorted_list.ts +0 -240
- package/src/utils/starts_with.ts +0 -42
- package/src/utils/string_parsing.ts +0 -414
- package/src/utils/task_canceller.ts +0 -367
- package/src/utils/uniq.ts +0 -49
- package/src/utils/warn_once.ts +0 -34
- package/src/utils/weak_map_memory.ts +0 -89
- package/src/utils/wrapInPromise.ts +0 -24
- package/tsconfig.json +0 -28
- package/tsconfig.modules.json +0 -36
package/src/manifest/manifest.ts
DELETED
|
@@ -1,811 +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 log from "../log";
|
|
19
|
-
import { IParsedManifest } from "../parsers/manifest";
|
|
20
|
-
import {
|
|
21
|
-
IPlayerError,
|
|
22
|
-
IRepresentationFilter,
|
|
23
|
-
} from "../public_types";
|
|
24
|
-
import arrayFind from "../utils/array_find";
|
|
25
|
-
import EventEmitter from "../utils/event_emitter";
|
|
26
|
-
import idGenerator from "../utils/id_generator";
|
|
27
|
-
import { getFilenameIndexInUrl } from "../utils/resolve_url";
|
|
28
|
-
import warnOnce from "../utils/warn_once";
|
|
29
|
-
import Adaptation from "./adaptation";
|
|
30
|
-
import Period, {
|
|
31
|
-
IManifestAdaptations,
|
|
32
|
-
} from "./period";
|
|
33
|
-
import Representation from "./representation";
|
|
34
|
-
import { StaticRepresentationIndex } from "./representation_index";
|
|
35
|
-
import {
|
|
36
|
-
IAdaptationType,
|
|
37
|
-
MANIFEST_UPDATE_TYPE,
|
|
38
|
-
} from "./types";
|
|
39
|
-
import {
|
|
40
|
-
IPeriodsUpdateResult,
|
|
41
|
-
replacePeriods,
|
|
42
|
-
updatePeriods,
|
|
43
|
-
} from "./update_periods";
|
|
44
|
-
|
|
45
|
-
const generateSupplementaryTrackID = idGenerator();
|
|
46
|
-
const generateNewManifestId = idGenerator();
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Interface a manually-added supplementary image track should respect.
|
|
50
|
-
* @deprecated
|
|
51
|
-
*/
|
|
52
|
-
interface ISupplementaryImageTrack {
|
|
53
|
-
/** mime-type identifying the type of container for the track. */
|
|
54
|
-
mimeType : string;
|
|
55
|
-
/** URL to the thumbnails file */
|
|
56
|
-
url : string;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Interface a manually-added supplementary text track should respect.
|
|
61
|
-
* @deprecated
|
|
62
|
-
*/
|
|
63
|
-
interface ISupplementaryTextTrack {
|
|
64
|
-
/** mime-type identifying the type of container for the track. */
|
|
65
|
-
mimeType : string;
|
|
66
|
-
/** codecs in the container (mimeType can be enough) */
|
|
67
|
-
codecs? : string;
|
|
68
|
-
/** URL to the text track file */
|
|
69
|
-
url : string;
|
|
70
|
-
/** ISO639-{1,2,3} code for the language of the track */
|
|
71
|
-
language? : string;
|
|
72
|
-
/**
|
|
73
|
-
* Same as `language`, but in an Array.
|
|
74
|
-
* Kept for compatibility with old API.
|
|
75
|
-
* @deprecated
|
|
76
|
-
*/
|
|
77
|
-
languages? : string[];
|
|
78
|
-
/** If true, the track are closed captions. */
|
|
79
|
-
closedCaption : boolean;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/** Options given to the `Manifest` constructor. */
|
|
83
|
-
interface IManifestParsingOptions {
|
|
84
|
-
/* eslint-disable import/no-deprecated */
|
|
85
|
-
/** Text tracks to add manually to the Manifest instance. */
|
|
86
|
-
supplementaryTextTracks? : ISupplementaryTextTrack[] | undefined;
|
|
87
|
-
/** Image tracks to add manually to the Manifest instance. */
|
|
88
|
-
supplementaryImageTracks? : ISupplementaryImageTrack[] | undefined;
|
|
89
|
-
/* eslint-enable import/no-deprecated */
|
|
90
|
-
/** External callback peforming an automatic filtering of wanted Representations. */
|
|
91
|
-
representationFilter? : IRepresentationFilter | undefined;
|
|
92
|
-
/** Optional URL that points to a shorter version of the Manifest used
|
|
93
|
-
* for updates only. When using this URL for refresh, the manifest will be
|
|
94
|
-
* updated with the partial update type. If this URL is undefined, then the
|
|
95
|
-
* manifest will be updated fully when it needs to be refreshed, and it will
|
|
96
|
-
* fetched through the original URL. */
|
|
97
|
-
manifestUpdateUrl? : string | undefined;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/** Representation affected by a `decipherabilityUpdate` event. */
|
|
101
|
-
export interface IDecipherabilityUpdateElement { manifest : Manifest;
|
|
102
|
-
period : Period;
|
|
103
|
-
adaptation : Adaptation;
|
|
104
|
-
representation : Representation; }
|
|
105
|
-
|
|
106
|
-
/** Events emitted by a `Manifest` instance */
|
|
107
|
-
export interface IManifestEvents {
|
|
108
|
-
/** The Manifest has been updated */
|
|
109
|
-
manifestUpdate : IPeriodsUpdateResult;
|
|
110
|
-
/** Some Representation's decipherability status has been updated */
|
|
111
|
-
decipherabilityUpdate : IDecipherabilityUpdateElement[];
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Normalized Manifest structure.
|
|
116
|
-
*
|
|
117
|
-
* Details the current content being played:
|
|
118
|
-
* - the duration of the content
|
|
119
|
-
* - the available tracks
|
|
120
|
-
* - the available qualities
|
|
121
|
-
* - the segments defined in those qualities
|
|
122
|
-
* - ...
|
|
123
|
-
* while staying agnostic of the transport protocol used (Smooth, DASH etc.).
|
|
124
|
-
*
|
|
125
|
-
* The Manifest and its contained information can evolve over time (like when
|
|
126
|
-
* updating a dynamic manifest or when right management forbid some tracks from
|
|
127
|
-
* being played).
|
|
128
|
-
* To perform actions on those changes, any module using this Manifest can
|
|
129
|
-
* listen to its sent events and react accordingly.
|
|
130
|
-
*
|
|
131
|
-
* @class Manifest
|
|
132
|
-
*/
|
|
133
|
-
export default class Manifest extends EventEmitter<IManifestEvents> {
|
|
134
|
-
/**
|
|
135
|
-
* ID uniquely identifying this Manifest.
|
|
136
|
-
* No two Manifests should have this ID.
|
|
137
|
-
* This ID is automatically calculated each time a `Manifest` instance is
|
|
138
|
-
* created.
|
|
139
|
-
*/
|
|
140
|
-
public readonly id : string;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Type of transport used by this Manifest (e.g. `"dash"` or `"smooth"`).
|
|
144
|
-
*
|
|
145
|
-
* TODO This should never be needed as this structure is transport-agnostic.
|
|
146
|
-
* But it is specified in the Manifest API. Deprecate?
|
|
147
|
-
*/
|
|
148
|
-
public transport : string;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* List every Period in that Manifest chronologically (from start to end).
|
|
152
|
-
* A Period contains information about the content available for a specific
|
|
153
|
-
* period of time.
|
|
154
|
-
*/
|
|
155
|
-
public readonly periods : Period[];
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* When that promise resolves, the whole Manifest needs to be requested again
|
|
159
|
-
* so it can be refreshed.
|
|
160
|
-
*/
|
|
161
|
-
public expired : Promise<void> | null;
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Deprecated. Equivalent to `manifest.periods[0].adaptations`.
|
|
165
|
-
* @deprecated
|
|
166
|
-
*/
|
|
167
|
-
public adaptations : IManifestAdaptations;
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* If true, the Manifest can evolve over time:
|
|
171
|
-
* New segments can become available in the future, properties of the manifest
|
|
172
|
-
* can change...
|
|
173
|
-
*/
|
|
174
|
-
public isDynamic : boolean;
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* If true, this Manifest describes a live content.
|
|
178
|
-
* A live content is a specific kind of content where you want to play very
|
|
179
|
-
* close to the maximum position (here called the "live edge").
|
|
180
|
-
* E.g., a TV channel is a live content.
|
|
181
|
-
*/
|
|
182
|
-
public isLive : boolean;
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* If `true`, no more periods will be added after the current last manifest's
|
|
186
|
-
* Period.
|
|
187
|
-
* `false` if we know that more Period is coming or if we don't know.
|
|
188
|
-
*/
|
|
189
|
-
public isLastPeriodKnown : boolean;
|
|
190
|
-
|
|
191
|
-
/*
|
|
192
|
-
* Every URI linking to that Manifest.
|
|
193
|
-
* They can be used for refreshing the Manifest.
|
|
194
|
-
* Listed from the most important to the least important.
|
|
195
|
-
*/
|
|
196
|
-
public uris : string[];
|
|
197
|
-
|
|
198
|
-
/** Optional URL that points to a shorter version of the Manifest used
|
|
199
|
-
* for updates only. */
|
|
200
|
-
public updateUrl : string | undefined;
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Suggested delay from the "live edge" (i.e. the position corresponding to
|
|
204
|
-
* the current broadcast for a live content) the content is suggested to start
|
|
205
|
-
* from.
|
|
206
|
-
* This only applies to live contents.
|
|
207
|
-
*/
|
|
208
|
-
public suggestedPresentationDelay : number | undefined;
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Amount of time, in seconds, this Manifest is valid from the time when it
|
|
212
|
-
* has been fetched.
|
|
213
|
-
* If no lifetime is set, this Manifest does not become invalid after an
|
|
214
|
-
* amount of time.
|
|
215
|
-
*/
|
|
216
|
-
public lifetime : number | undefined;
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Minimum time, in seconds, at which a segment defined in the Manifest
|
|
220
|
-
* can begin.
|
|
221
|
-
* This is also used as an offset for live content to apply to a segment's
|
|
222
|
-
* time.
|
|
223
|
-
*/
|
|
224
|
-
public availabilityStartTime : number | undefined;
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* It specifies the wall-clock time when the manifest was generated and published
|
|
228
|
-
* at the origin server. It is present in order to identify different versions
|
|
229
|
-
* of manifest instances.
|
|
230
|
-
*/
|
|
231
|
-
public publishTime: number | undefined;
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Array containing every minor errors that happened when the Manifest has
|
|
235
|
-
* been created, in the order they have happened.
|
|
236
|
-
*/
|
|
237
|
-
public contentWarnings : IPlayerError[];
|
|
238
|
-
|
|
239
|
-
/*
|
|
240
|
-
* Difference between the server's clock in milliseconds and the return of the
|
|
241
|
-
* JS function `performance.now`.
|
|
242
|
-
* This property allows to calculate the server time at any moment.
|
|
243
|
-
* `undefined` if we did not obtain the server's time
|
|
244
|
-
*/
|
|
245
|
-
public clockOffset : number | undefined;
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Data allowing to calculate the minimum and maximum seekable positions at
|
|
249
|
-
* any given time.
|
|
250
|
-
*/
|
|
251
|
-
private _timeBounds : {
|
|
252
|
-
/**
|
|
253
|
-
* This is the theoretical minimum playable position on the content
|
|
254
|
-
* regardless of the current Adaptation chosen, as estimated at parsing
|
|
255
|
-
* time.
|
|
256
|
-
* `undefined` if unknown.
|
|
257
|
-
*
|
|
258
|
-
* More technically, the `minimumSafePosition` is the maximum between all
|
|
259
|
-
* the minimum positions reachable in any of the audio and video Adaptation.
|
|
260
|
-
*
|
|
261
|
-
* Together with `timeshiftDepth` and the `maximumTimeData` object, this
|
|
262
|
-
* value allows to compute at any time the minimum seekable time:
|
|
263
|
-
*
|
|
264
|
-
* - if `timeshiftDepth` is not set, the minimum seekable time is a
|
|
265
|
-
* constant that corresponds to this value.
|
|
266
|
-
*
|
|
267
|
-
* - if `timeshiftDepth` is set, `minimumSafePosition` will act as the
|
|
268
|
-
* absolute minimum seekable time we can never seek below, even when
|
|
269
|
-
* `timeshiftDepth` indicates a possible lower position.
|
|
270
|
-
* This becomes useful for example when playing live contents which -
|
|
271
|
-
* despite having a large window depth - just begun and as such only
|
|
272
|
-
* have a few segment available for now.
|
|
273
|
-
* Here, `minimumSafePosition` would be the start time of the initial
|
|
274
|
-
* segment, and `timeshiftDepth` would be the whole depth that will
|
|
275
|
-
* become available once enough segments have been generated.
|
|
276
|
-
*/
|
|
277
|
-
minimumSafePosition? : number | undefined;
|
|
278
|
-
/**
|
|
279
|
-
* Some dynamic contents have the concept of a "window depth" (or "buffer
|
|
280
|
-
* depth") which allows to set a minimum position for all reachable
|
|
281
|
-
* segments, in function of the maximum reachable position.
|
|
282
|
-
*
|
|
283
|
-
* This is justified by the fact that a server might want to remove older
|
|
284
|
-
* segments when new ones become available, to free storage size.
|
|
285
|
-
*
|
|
286
|
-
* If this value is set to a number, it is the amount of time in seconds
|
|
287
|
-
* that needs to be substracted from the current maximum seekable position,
|
|
288
|
-
* to obtain the minimum seekable position.
|
|
289
|
-
* As such, this value evolves at the same rate than the maximum position
|
|
290
|
-
* does (if it does at all).
|
|
291
|
-
*
|
|
292
|
-
* If set to `null`, this content has no concept of a "window depth".
|
|
293
|
-
*/
|
|
294
|
-
timeshiftDepth : number | null;
|
|
295
|
-
/** Data allowing to calculate the maximum playable position at any given time. */
|
|
296
|
-
maximumTimeData : {
|
|
297
|
-
/**
|
|
298
|
-
* Current position representing live content.
|
|
299
|
-
* Only makes sense for un-ended live contents.
|
|
300
|
-
*
|
|
301
|
-
* `undefined` if unknown or if it doesn't make sense in the current context.
|
|
302
|
-
*/
|
|
303
|
-
livePosition : number | undefined;
|
|
304
|
-
/**
|
|
305
|
-
* Whether the maximum positions should evolve linearly over time.
|
|
306
|
-
*
|
|
307
|
-
* If set to `true`, the maximum seekable position continuously increase at
|
|
308
|
-
* the same rate than the time since `time` does.
|
|
309
|
-
*/
|
|
310
|
-
isLinear: boolean;
|
|
311
|
-
/**
|
|
312
|
-
* This is the theoretical maximum playable position on the content,
|
|
313
|
-
* regardless of the current Adaptation chosen, as estimated at parsing
|
|
314
|
-
* time.
|
|
315
|
-
*
|
|
316
|
-
* More technically, the `maximumSafePosition` is the minimum between all
|
|
317
|
-
* attributes indicating the duration of the content in the Manifest.
|
|
318
|
-
*
|
|
319
|
-
* That is the minimum between:
|
|
320
|
-
* - The Manifest original attributes relative to its duration
|
|
321
|
-
* - The minimum between all known maximum audio positions
|
|
322
|
-
* - The minimum between all known maximum video positions
|
|
323
|
-
*
|
|
324
|
-
* This can for example be understood as the safe maximum playable
|
|
325
|
-
* position through all possible tacks.
|
|
326
|
-
*/
|
|
327
|
-
maximumSafePosition : number;
|
|
328
|
-
/**
|
|
329
|
-
* `Performance.now()` output at the time both `maximumSafePosition` and
|
|
330
|
-
* `livePosition` were calculated.
|
|
331
|
-
* This can be used to retrieve a new maximum position from them when they
|
|
332
|
-
* linearly evolves over time (see `isLinear` property).
|
|
333
|
-
*/
|
|
334
|
-
time : number;
|
|
335
|
-
};
|
|
336
|
-
};
|
|
337
|
-
|
|
338
|
-
/**
|
|
339
|
-
* Construct a Manifest instance from a parsed Manifest object (as returned by
|
|
340
|
-
* Manifest parsers) and options.
|
|
341
|
-
*
|
|
342
|
-
* Some minor errors can arise during that construction. `this.contentWarnings`
|
|
343
|
-
* will contain all such errors, in the order they have been encountered.
|
|
344
|
-
* @param {Object} parsedManifest
|
|
345
|
-
* @param {Object} options
|
|
346
|
-
*/
|
|
347
|
-
constructor(parsedManifest : IParsedManifest, options : IManifestParsingOptions) {
|
|
348
|
-
super();
|
|
349
|
-
const { supplementaryTextTracks = [],
|
|
350
|
-
supplementaryImageTracks = [],
|
|
351
|
-
representationFilter,
|
|
352
|
-
manifestUpdateUrl } = options;
|
|
353
|
-
this.contentWarnings = [];
|
|
354
|
-
this.id = generateNewManifestId();
|
|
355
|
-
this.expired = parsedManifest.expired ?? null;
|
|
356
|
-
this.transport = parsedManifest.transportType;
|
|
357
|
-
this.clockOffset = parsedManifest.clockOffset;
|
|
358
|
-
|
|
359
|
-
this.periods = parsedManifest.periods.map((parsedPeriod) => {
|
|
360
|
-
const period = new Period(parsedPeriod, representationFilter);
|
|
361
|
-
this.contentWarnings.push(...period.contentWarnings);
|
|
362
|
-
return period;
|
|
363
|
-
}).sort((a, b) => a.start - b.start);
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* @deprecated It is here to ensure compatibility with the way the
|
|
367
|
-
* v3.x.x manages adaptations at the Manifest level
|
|
368
|
-
*/
|
|
369
|
-
/* eslint-disable import/no-deprecated */
|
|
370
|
-
this.adaptations = this.periods[0] === undefined ? {} :
|
|
371
|
-
this.periods[0].adaptations;
|
|
372
|
-
/* eslint-enable import/no-deprecated */
|
|
373
|
-
|
|
374
|
-
this._timeBounds = parsedManifest.timeBounds;
|
|
375
|
-
this.isDynamic = parsedManifest.isDynamic;
|
|
376
|
-
this.isLive = parsedManifest.isLive;
|
|
377
|
-
this.isLastPeriodKnown = parsedManifest.isLastPeriodKnown;
|
|
378
|
-
this.uris = parsedManifest.uris === undefined ? [] :
|
|
379
|
-
parsedManifest.uris;
|
|
380
|
-
|
|
381
|
-
this.updateUrl = manifestUpdateUrl;
|
|
382
|
-
this.lifetime = parsedManifest.lifetime;
|
|
383
|
-
this.suggestedPresentationDelay = parsedManifest.suggestedPresentationDelay;
|
|
384
|
-
this.availabilityStartTime = parsedManifest.availabilityStartTime;
|
|
385
|
-
this.publishTime = parsedManifest.publishTime;
|
|
386
|
-
if (supplementaryImageTracks.length > 0) {
|
|
387
|
-
this._addSupplementaryImageAdaptations(supplementaryImageTracks);
|
|
388
|
-
}
|
|
389
|
-
if (supplementaryTextTracks.length > 0) {
|
|
390
|
-
this._addSupplementaryTextAdaptations(supplementaryTextTracks);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* Returns the Period corresponding to the given `id`.
|
|
396
|
-
* Returns `undefined` if there is none.
|
|
397
|
-
* @param {string} id
|
|
398
|
-
* @returns {Object|undefined}
|
|
399
|
-
*/
|
|
400
|
-
public getPeriod(id : string) : Period | undefined {
|
|
401
|
-
return arrayFind(this.periods, (period) => {
|
|
402
|
-
return id === period.id;
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Returns the Period encountered at the given time.
|
|
408
|
-
* Returns `undefined` if there is no Period exactly at the given time.
|
|
409
|
-
* @param {number} time
|
|
410
|
-
* @returns {Object|undefined}
|
|
411
|
-
*/
|
|
412
|
-
public getPeriodForTime(time : number) : Period | undefined {
|
|
413
|
-
let nextPeriod = null;
|
|
414
|
-
for (let i = this.periods.length - 1; i >= 0; i--) {
|
|
415
|
-
const period = this.periods[i];
|
|
416
|
-
if (period.containsTime(time, nextPeriod)) {
|
|
417
|
-
return period;
|
|
418
|
-
}
|
|
419
|
-
nextPeriod = period;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
/**
|
|
424
|
-
* Returns the first Period starting strictly after the given time.
|
|
425
|
-
* Returns `undefined` if there is no Period starting after that time.
|
|
426
|
-
* @param {number} time
|
|
427
|
-
* @returns {Object|undefined}
|
|
428
|
-
*/
|
|
429
|
-
public getNextPeriod(time : number) : Period | undefined {
|
|
430
|
-
return arrayFind(this.periods, (period) => {
|
|
431
|
-
return period.start > time;
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Returns the Period coming chronologically just after another given Period.
|
|
437
|
-
* Returns `undefined` if not found.
|
|
438
|
-
* @param {Object} period
|
|
439
|
-
* @returns {Object|null}
|
|
440
|
-
*/
|
|
441
|
-
public getPeriodAfter(
|
|
442
|
-
period : Period
|
|
443
|
-
) : Period | null {
|
|
444
|
-
const endOfPeriod = period.end;
|
|
445
|
-
if (endOfPeriod === undefined) {
|
|
446
|
-
return null;
|
|
447
|
-
}
|
|
448
|
-
const nextPeriod = arrayFind(this.periods, (_period) => {
|
|
449
|
-
return _period.end === undefined || endOfPeriod < _period.end;
|
|
450
|
-
});
|
|
451
|
-
return nextPeriod === undefined ? null :
|
|
452
|
-
nextPeriod;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/**
|
|
456
|
-
* Returns the most important URL from which the Manifest can be refreshed.
|
|
457
|
-
* `undefined` if no URL is found.
|
|
458
|
-
* @returns {string|undefined}
|
|
459
|
-
*/
|
|
460
|
-
public getUrl() : string|undefined {
|
|
461
|
-
return this.uris[0];
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
/**
|
|
465
|
-
* Update the current Manifest properties by giving a new updated version.
|
|
466
|
-
* This instance will be updated with the new information coming from it.
|
|
467
|
-
* @param {Object} newManifest
|
|
468
|
-
*/
|
|
469
|
-
public replace(newManifest : Manifest) : void {
|
|
470
|
-
this._performUpdate(newManifest, MANIFEST_UPDATE_TYPE.Full);
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Update the current Manifest properties by giving a new but shorter version
|
|
475
|
-
* of it.
|
|
476
|
-
* This instance will add the new information coming from it and will
|
|
477
|
-
* automatically clean old Periods that shouldn't be available anymore.
|
|
478
|
-
*
|
|
479
|
-
* /!\ Throws if the given Manifest cannot be used or is not sufficient to
|
|
480
|
-
* update the Manifest.
|
|
481
|
-
* @param {Object} newManifest
|
|
482
|
-
*/
|
|
483
|
-
public update(newManifest : Manifest) : void {
|
|
484
|
-
this._performUpdate(newManifest, MANIFEST_UPDATE_TYPE.Partial);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
/**
|
|
488
|
-
* Returns the theoretical minimum playable position on the content
|
|
489
|
-
* regardless of the current Adaptation chosen, as estimated at parsing
|
|
490
|
-
* time.
|
|
491
|
-
* @returns {number}
|
|
492
|
-
*/
|
|
493
|
-
public getMinimumSafePosition() : number {
|
|
494
|
-
const windowData = this._timeBounds;
|
|
495
|
-
if (windowData.timeshiftDepth === null) {
|
|
496
|
-
return windowData.minimumSafePosition ?? 0;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
const { maximumTimeData } = windowData;
|
|
500
|
-
let maximumTime : number;
|
|
501
|
-
if (!windowData.maximumTimeData.isLinear) {
|
|
502
|
-
maximumTime = maximumTimeData.maximumSafePosition;
|
|
503
|
-
} else {
|
|
504
|
-
const timeDiff = performance.now() - maximumTimeData.time;
|
|
505
|
-
maximumTime = maximumTimeData.maximumSafePosition + timeDiff / 1000;
|
|
506
|
-
}
|
|
507
|
-
const theoricalMinimum = maximumTime - windowData.timeshiftDepth;
|
|
508
|
-
return Math.max(windowData.minimumSafePosition ?? 0, theoricalMinimum);
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* Get the position of the live edge - that is, the position of what is
|
|
513
|
-
* currently being broadcasted, in seconds.
|
|
514
|
-
* @returns {number|undefined}
|
|
515
|
-
*/
|
|
516
|
-
public getLivePosition() : number | undefined {
|
|
517
|
-
const { maximumTimeData } = this._timeBounds;
|
|
518
|
-
if (!this.isLive || maximumTimeData.livePosition === undefined) {
|
|
519
|
-
return undefined;
|
|
520
|
-
}
|
|
521
|
-
if (!maximumTimeData.isLinear) {
|
|
522
|
-
return maximumTimeData.livePosition;
|
|
523
|
-
}
|
|
524
|
-
const timeDiff = performance.now() - maximumTimeData.time;
|
|
525
|
-
return maximumTimeData.livePosition + timeDiff / 1000;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
/**
|
|
529
|
-
* Returns the theoretical maximum playable position on the content
|
|
530
|
-
* regardless of the current Adaptation chosen, as estimated at parsing
|
|
531
|
-
* time.
|
|
532
|
-
*/
|
|
533
|
-
public getMaximumSafePosition() : number {
|
|
534
|
-
const { maximumTimeData } = this._timeBounds;
|
|
535
|
-
if (!maximumTimeData.isLinear) {
|
|
536
|
-
return maximumTimeData.maximumSafePosition;
|
|
537
|
-
}
|
|
538
|
-
const timeDiff = performance.now() - maximumTimeData.time;
|
|
539
|
-
return maximumTimeData.maximumSafePosition + timeDiff / 1000;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* Look in the Manifest for Representations linked to the given key ID,
|
|
544
|
-
* and mark them as being impossible to decrypt.
|
|
545
|
-
* Then trigger a "decipherabilityUpdate" event to notify everyone of the
|
|
546
|
-
* changes performed.
|
|
547
|
-
* @param {Function} isDecipherableCb
|
|
548
|
-
*/
|
|
549
|
-
public updateRepresentationsDeciperability(
|
|
550
|
-
isDecipherableCb : (rep : Representation) => boolean | undefined
|
|
551
|
-
) : void {
|
|
552
|
-
const updates = updateDeciperability(this, isDecipherableCb);
|
|
553
|
-
if (updates.length > 0) {
|
|
554
|
-
this.trigger("decipherabilityUpdate", updates);
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* @deprecated only returns adaptations for the first period
|
|
560
|
-
* @returns {Array.<Object>}
|
|
561
|
-
*/
|
|
562
|
-
public getAdaptations() : Adaptation[] {
|
|
563
|
-
warnOnce("manifest.getAdaptations() is deprecated." +
|
|
564
|
-
" Please use manifest.period[].getAdaptations() instead");
|
|
565
|
-
const firstPeriod = this.periods[0];
|
|
566
|
-
if (firstPeriod === undefined) {
|
|
567
|
-
return [];
|
|
568
|
-
}
|
|
569
|
-
const adaptationsByType = firstPeriod.adaptations;
|
|
570
|
-
const adaptationsList : Adaptation[] = [];
|
|
571
|
-
for (const adaptationType in adaptationsByType) {
|
|
572
|
-
if (adaptationsByType.hasOwnProperty(adaptationType)) {
|
|
573
|
-
const adaptations =
|
|
574
|
-
adaptationsByType[adaptationType as IAdaptationType] as Adaptation[];
|
|
575
|
-
adaptationsList.push(...adaptations);
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
return adaptationsList;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* @deprecated only returns adaptations for the first period
|
|
583
|
-
* @returns {Array.<Object>}
|
|
584
|
-
*/
|
|
585
|
-
public getAdaptationsForType(adaptationType : IAdaptationType) : Adaptation[] {
|
|
586
|
-
warnOnce("manifest.getAdaptationsForType(type) is deprecated." +
|
|
587
|
-
" Please use manifest.period[].getAdaptationsForType(type) instead");
|
|
588
|
-
const firstPeriod = this.periods[0];
|
|
589
|
-
if (firstPeriod === undefined) {
|
|
590
|
-
return [];
|
|
591
|
-
}
|
|
592
|
-
const adaptationsForType = firstPeriod.adaptations[adaptationType];
|
|
593
|
-
return adaptationsForType === undefined ? [] :
|
|
594
|
-
adaptationsForType;
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* @deprecated only returns adaptations for the first period
|
|
599
|
-
* @returns {Array.<Object>}
|
|
600
|
-
*/
|
|
601
|
-
public getAdaptation(wantedId : number|string) : Adaptation|undefined {
|
|
602
|
-
warnOnce("manifest.getAdaptation(id) is deprecated." +
|
|
603
|
-
" Please use manifest.period[].getAdaptation(id) instead");
|
|
604
|
-
/* eslint-disable import/no-deprecated */
|
|
605
|
-
return arrayFind(this.getAdaptations(), ({ id }) => wantedId === id);
|
|
606
|
-
/* eslint-enable import/no-deprecated */
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
/**
|
|
610
|
-
* Add supplementary image Adaptation(s) to the manifest.
|
|
611
|
-
* @private
|
|
612
|
-
* @param {Object|Array.<Object>} imageTracks
|
|
613
|
-
*/
|
|
614
|
-
private _addSupplementaryImageAdaptations(
|
|
615
|
-
/* eslint-disable import/no-deprecated */
|
|
616
|
-
imageTracks : ISupplementaryImageTrack | ISupplementaryImageTrack[]
|
|
617
|
-
) : void {
|
|
618
|
-
const _imageTracks = Array.isArray(imageTracks) ? imageTracks : [imageTracks];
|
|
619
|
-
const newImageTracks = _imageTracks.map(({ mimeType, url }) => {
|
|
620
|
-
const adaptationID = "gen-image-ada-" + generateSupplementaryTrackID();
|
|
621
|
-
const representationID = "gen-image-rep-" + generateSupplementaryTrackID();
|
|
622
|
-
const indexOfFilename = getFilenameIndexInUrl(url);
|
|
623
|
-
const cdnUrl = url.substring(0, indexOfFilename);
|
|
624
|
-
const filename = url.substring(indexOfFilename);
|
|
625
|
-
const newAdaptation = new Adaptation({ id: adaptationID,
|
|
626
|
-
type: "image",
|
|
627
|
-
representations: [{
|
|
628
|
-
bitrate: 0,
|
|
629
|
-
cdnMetadata: [ { baseUrl: cdnUrl } ],
|
|
630
|
-
id: representationID,
|
|
631
|
-
mimeType,
|
|
632
|
-
index: new StaticRepresentationIndex({
|
|
633
|
-
media: filename,
|
|
634
|
-
}) }] },
|
|
635
|
-
{ isManuallyAdded: true });
|
|
636
|
-
if (newAdaptation.representations.length > 0 && !newAdaptation.isSupported) {
|
|
637
|
-
const error =
|
|
638
|
-
new MediaError("MANIFEST_INCOMPATIBLE_CODECS_ERROR",
|
|
639
|
-
"An Adaptation contains only incompatible codecs.",
|
|
640
|
-
{ adaptation: newAdaptation });
|
|
641
|
-
this.contentWarnings.push(error);
|
|
642
|
-
}
|
|
643
|
-
return newAdaptation;
|
|
644
|
-
});
|
|
645
|
-
|
|
646
|
-
if (newImageTracks.length > 0 && this.periods.length > 0) {
|
|
647
|
-
const { adaptations } = this.periods[0];
|
|
648
|
-
adaptations.image =
|
|
649
|
-
adaptations.image != null ? adaptations.image.concat(newImageTracks) :
|
|
650
|
-
newImageTracks;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
/**
|
|
655
|
-
* Add supplementary text Adaptation(s) to the manifest.
|
|
656
|
-
* @private
|
|
657
|
-
* @param {Object|Array.<Object>} textTracks
|
|
658
|
-
*/
|
|
659
|
-
private _addSupplementaryTextAdaptations(
|
|
660
|
-
/* eslint-disable import/no-deprecated */
|
|
661
|
-
textTracks : ISupplementaryTextTrack|ISupplementaryTextTrack[]
|
|
662
|
-
/* eslint-enable import/no-deprecated */
|
|
663
|
-
) : void {
|
|
664
|
-
const _textTracks = Array.isArray(textTracks) ? textTracks : [textTracks];
|
|
665
|
-
const newTextAdaptations = _textTracks.reduce((allSubs : Adaptation[], {
|
|
666
|
-
mimeType,
|
|
667
|
-
codecs,
|
|
668
|
-
url,
|
|
669
|
-
language,
|
|
670
|
-
/* eslint-disable import/no-deprecated */
|
|
671
|
-
languages,
|
|
672
|
-
/* eslint-enable import/no-deprecated */
|
|
673
|
-
closedCaption,
|
|
674
|
-
}) => {
|
|
675
|
-
const langsToMapOn : string[] = language != null ? [language] :
|
|
676
|
-
languages != null ? languages :
|
|
677
|
-
[];
|
|
678
|
-
|
|
679
|
-
const indexOfFilename = getFilenameIndexInUrl(url);
|
|
680
|
-
const cdnUrl = url.substring(0, indexOfFilename);
|
|
681
|
-
const filename = url.substring(indexOfFilename);
|
|
682
|
-
return allSubs.concat(langsToMapOn.map((_language) => {
|
|
683
|
-
const adaptationID = "gen-text-ada-" + generateSupplementaryTrackID();
|
|
684
|
-
const representationID = "gen-text-rep-" + generateSupplementaryTrackID();
|
|
685
|
-
const newAdaptation = new Adaptation({ id: adaptationID,
|
|
686
|
-
type: "text",
|
|
687
|
-
language: _language,
|
|
688
|
-
closedCaption,
|
|
689
|
-
representations: [{
|
|
690
|
-
bitrate: 0,
|
|
691
|
-
cdnMetadata: [{ baseUrl: cdnUrl }],
|
|
692
|
-
id: representationID,
|
|
693
|
-
mimeType,
|
|
694
|
-
codecs,
|
|
695
|
-
index: new StaticRepresentationIndex({
|
|
696
|
-
media: filename,
|
|
697
|
-
}) }] },
|
|
698
|
-
{ isManuallyAdded: true });
|
|
699
|
-
if (newAdaptation.representations.length > 0 && !newAdaptation.isSupported) {
|
|
700
|
-
const error =
|
|
701
|
-
new MediaError("MANIFEST_INCOMPATIBLE_CODECS_ERROR",
|
|
702
|
-
"An Adaptation contains only incompatible codecs.",
|
|
703
|
-
{ adaptation: newAdaptation });
|
|
704
|
-
this.contentWarnings.push(error);
|
|
705
|
-
}
|
|
706
|
-
return newAdaptation;
|
|
707
|
-
}));
|
|
708
|
-
}, []);
|
|
709
|
-
|
|
710
|
-
if (newTextAdaptations.length > 0 && this.periods.length > 0) {
|
|
711
|
-
const { adaptations } = this.periods[0];
|
|
712
|
-
adaptations.text =
|
|
713
|
-
adaptations.text != null ? adaptations.text.concat(newTextAdaptations) :
|
|
714
|
-
newTextAdaptations;
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
/**
|
|
719
|
-
* @param {Object} newManifest
|
|
720
|
-
* @param {number} updateType
|
|
721
|
-
*/
|
|
722
|
-
private _performUpdate(
|
|
723
|
-
newManifest : Manifest,
|
|
724
|
-
updateType : MANIFEST_UPDATE_TYPE
|
|
725
|
-
) : void {
|
|
726
|
-
this.availabilityStartTime = newManifest.availabilityStartTime;
|
|
727
|
-
this.expired = newManifest.expired;
|
|
728
|
-
this.isDynamic = newManifest.isDynamic;
|
|
729
|
-
this.isLive = newManifest.isLive;
|
|
730
|
-
this.isLastPeriodKnown = newManifest.isLastPeriodKnown;
|
|
731
|
-
this.lifetime = newManifest.lifetime;
|
|
732
|
-
this.contentWarnings = newManifest.contentWarnings;
|
|
733
|
-
this.suggestedPresentationDelay = newManifest.suggestedPresentationDelay;
|
|
734
|
-
this.transport = newManifest.transport;
|
|
735
|
-
this.publishTime = newManifest.publishTime;
|
|
736
|
-
|
|
737
|
-
let updatedPeriodsResult;
|
|
738
|
-
if (updateType === MANIFEST_UPDATE_TYPE.Full) {
|
|
739
|
-
this._timeBounds = newManifest._timeBounds;
|
|
740
|
-
this.uris = newManifest.uris;
|
|
741
|
-
updatedPeriodsResult = replacePeriods(this.periods, newManifest.periods);
|
|
742
|
-
} else {
|
|
743
|
-
this._timeBounds.maximumTimeData = newManifest._timeBounds.maximumTimeData;
|
|
744
|
-
this.updateUrl = newManifest.uris[0];
|
|
745
|
-
updatedPeriodsResult = updatePeriods(this.periods, newManifest.periods);
|
|
746
|
-
|
|
747
|
-
// Partial updates do not remove old Periods.
|
|
748
|
-
// This can become a memory problem when playing a content long enough.
|
|
749
|
-
// Let's clean manually Periods behind the minimum possible position.
|
|
750
|
-
const min = this.getMinimumSafePosition();
|
|
751
|
-
while (this.periods.length > 0) {
|
|
752
|
-
const period = this.periods[0];
|
|
753
|
-
if (period.end === undefined || period.end > min) {
|
|
754
|
-
break;
|
|
755
|
-
}
|
|
756
|
-
this.periods.shift();
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
// Re-set this.adaptations for retro-compatibility in v3.x.x
|
|
761
|
-
/* eslint-disable import/no-deprecated */
|
|
762
|
-
this.adaptations = this.periods[0] === undefined ?
|
|
763
|
-
{} :
|
|
764
|
-
this.periods[0].adaptations;
|
|
765
|
-
/* eslint-enable import/no-deprecated */
|
|
766
|
-
|
|
767
|
-
// Let's trigger events at the end, as those can trigger side-effects.
|
|
768
|
-
// We do not want the current Manifest object to be incomplete when those
|
|
769
|
-
// happen.
|
|
770
|
-
this.trigger("manifestUpdate", updatedPeriodsResult);
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
/**
|
|
775
|
-
* Update `decipherable` property of every `Representation` found in the
|
|
776
|
-
* Manifest based on the result of a `isDecipherable` callback:
|
|
777
|
-
* - When that callback returns `true`, update `decipherable` to `true`
|
|
778
|
-
* - When that callback returns `false`, update `decipherable` to `false`
|
|
779
|
-
* - When that callback returns `undefined`, update `decipherable` to
|
|
780
|
-
* `undefined`
|
|
781
|
-
* @param {Manifest} manifest
|
|
782
|
-
* @param {Function} isDecipherable
|
|
783
|
-
* @returns {Array.<Object>}
|
|
784
|
-
*/
|
|
785
|
-
function updateDeciperability(
|
|
786
|
-
manifest : Manifest,
|
|
787
|
-
isDecipherable : (rep : Representation) => boolean | undefined
|
|
788
|
-
) : IDecipherabilityUpdateElement[] {
|
|
789
|
-
const updates : IDecipherabilityUpdateElement[] = [];
|
|
790
|
-
for (const period of manifest.periods) {
|
|
791
|
-
for (const adaptation of period.getAdaptations()) {
|
|
792
|
-
for (const representation of adaptation.representations) {
|
|
793
|
-
const result = isDecipherable(representation);
|
|
794
|
-
if (result !== representation.decipherable) {
|
|
795
|
-
updates.push({ manifest, period, adaptation, representation });
|
|
796
|
-
representation.decipherable = result;
|
|
797
|
-
log.debug(`Decipherability changed for "${representation.id}"`,
|
|
798
|
-
`(${representation.bitrate})`,
|
|
799
|
-
String(representation.decipherable));
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
return updates;
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
export {
|
|
808
|
-
IManifestParsingOptions,
|
|
809
|
-
ISupplementaryImageTrack,
|
|
810
|
-
ISupplementaryTextTrack,
|
|
811
|
-
};
|