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,664 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import nextTick from "next-tick";
|
|
18
|
-
import config from "../../../config";
|
|
19
|
-
import { MediaError } from "../../../errors";
|
|
20
|
-
import log from "../../../log";
|
|
21
|
-
import Manifest, {
|
|
22
|
-
IDecipherabilityUpdateElement,
|
|
23
|
-
Period,
|
|
24
|
-
} from "../../../manifest";
|
|
25
|
-
import {
|
|
26
|
-
createMappedReference,
|
|
27
|
-
IReadOnlySharedReference,
|
|
28
|
-
} from "../../../utils/reference";
|
|
29
|
-
import SortedList from "../../../utils/sorted_list";
|
|
30
|
-
import TaskCanceller, {
|
|
31
|
-
CancellationSignal,
|
|
32
|
-
} from "../../../utils/task_canceller";
|
|
33
|
-
import WeakMapMemory from "../../../utils/weak_map_memory";
|
|
34
|
-
import { IRepresentationEstimator } from "../../adaptive";
|
|
35
|
-
import type { IReadOnlyPlaybackObserver } from "../../api";
|
|
36
|
-
import { SegmentFetcherCreator } from "../../fetchers";
|
|
37
|
-
import SegmentBuffersStore, {
|
|
38
|
-
BufferGarbageCollector,
|
|
39
|
-
IBufferType,
|
|
40
|
-
SegmentBuffer,
|
|
41
|
-
} from "../../segment_buffers";
|
|
42
|
-
import { IWaitingMediaSourceReloadPayload } from "../adaptation";
|
|
43
|
-
import PeriodStream, {
|
|
44
|
-
IPeriodStreamCallbacks,
|
|
45
|
-
IPeriodStreamOptions,
|
|
46
|
-
IPeriodStreamPlaybackObservation,
|
|
47
|
-
IPeriodStreamReadyPayload,
|
|
48
|
-
} from "../period";
|
|
49
|
-
import { IStreamStatusPayload } from "../representation";
|
|
50
|
-
import getTimeRangesForContent from "./get_time_ranges_for_content";
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Create and manage the various "Streams" needed for the content to
|
|
54
|
-
* play:
|
|
55
|
-
*
|
|
56
|
-
* - Create or dispose SegmentBuffers depending on the chosen Adaptations.
|
|
57
|
-
*
|
|
58
|
-
* - Push the right segments to those SegmentBuffers depending on the user's
|
|
59
|
-
* preferences, the current position, the bandwidth, the decryption
|
|
60
|
-
* conditions...
|
|
61
|
-
*
|
|
62
|
-
* - Concatenate Streams for adaptation from separate Periods at the right
|
|
63
|
-
* time, to allow smooth transitions between periods.
|
|
64
|
-
*
|
|
65
|
-
* - Call various callbacks to notify of its health and issues
|
|
66
|
-
*
|
|
67
|
-
* @param {Object} content
|
|
68
|
-
* @param {Object} playbackObserver - Emit position information
|
|
69
|
-
* @param {Object} representationEstimator - Emit bitrate estimates and best
|
|
70
|
-
* Representation to play.
|
|
71
|
-
* @param {Object} segmentBuffersStore - Will be used to lazily create
|
|
72
|
-
* SegmentBuffer instances associated with the current content.
|
|
73
|
-
* @param {Object} segmentFetcherCreator - Allow to download segments.
|
|
74
|
-
* @param {Object} options
|
|
75
|
-
* @param {Object} callbacks - The `StreamOrchestrator` relies on a system of
|
|
76
|
-
* callbacks that it will call on various events.
|
|
77
|
-
*
|
|
78
|
-
* Depending on the event, the caller may be supposed to perform actions to
|
|
79
|
-
* react upon some of them.
|
|
80
|
-
*
|
|
81
|
-
* This approach is taken instead of a more classical EventEmitter pattern to:
|
|
82
|
-
* - Allow callbacks to be called synchronously after the
|
|
83
|
-
* `StreamOrchestrator` is called.
|
|
84
|
-
* - Simplify bubbling events up, by just passing through callbacks
|
|
85
|
-
* - Force the caller to explicitely handle or not the different events.
|
|
86
|
-
*
|
|
87
|
-
* Callbacks may start being called immediately after the `StreamOrchestrator`
|
|
88
|
-
* call and may be called until either the `parentCancelSignal` argument is
|
|
89
|
-
* triggered, or until the `error` callback is called, whichever comes first.
|
|
90
|
-
* @param {Object} orchestratorCancelSignal - `CancellationSignal` allowing,
|
|
91
|
-
* when triggered, to immediately stop all operations the `PeriodStream` is
|
|
92
|
-
* doing.
|
|
93
|
-
*/
|
|
94
|
-
export default function StreamOrchestrator(
|
|
95
|
-
content : { manifest : Manifest;
|
|
96
|
-
initialPeriod : Period; },
|
|
97
|
-
playbackObserver : IReadOnlyPlaybackObserver<IStreamOrchestratorPlaybackObservation>,
|
|
98
|
-
representationEstimator : IRepresentationEstimator,
|
|
99
|
-
segmentBuffersStore : SegmentBuffersStore,
|
|
100
|
-
segmentFetcherCreator : SegmentFetcherCreator,
|
|
101
|
-
options : IStreamOrchestratorOptions,
|
|
102
|
-
callbacks : IStreamOrchestratorCallbacks,
|
|
103
|
-
orchestratorCancelSignal : CancellationSignal
|
|
104
|
-
) : void {
|
|
105
|
-
const { manifest, initialPeriod } = content;
|
|
106
|
-
const { maxBufferAhead,
|
|
107
|
-
maxBufferBehind,
|
|
108
|
-
wantedBufferAhead,
|
|
109
|
-
maxVideoBufferSize } = options;
|
|
110
|
-
|
|
111
|
-
const { MINIMUM_MAX_BUFFER_AHEAD,
|
|
112
|
-
MAXIMUM_MAX_BUFFER_AHEAD,
|
|
113
|
-
MAXIMUM_MAX_BUFFER_BEHIND } = config.getCurrent();
|
|
114
|
-
|
|
115
|
-
// Keep track of a unique BufferGarbageCollector created per
|
|
116
|
-
// SegmentBuffer.
|
|
117
|
-
const garbageCollectors =
|
|
118
|
-
new WeakMapMemory((segmentBuffer : SegmentBuffer) => {
|
|
119
|
-
const { bufferType } = segmentBuffer;
|
|
120
|
-
const defaultMaxBehind = MAXIMUM_MAX_BUFFER_BEHIND[bufferType] ?? Infinity;
|
|
121
|
-
const maxAheadHigherBound = MAXIMUM_MAX_BUFFER_AHEAD[bufferType] ?? Infinity;
|
|
122
|
-
return (gcCancelSignal : CancellationSignal) => {
|
|
123
|
-
BufferGarbageCollector(
|
|
124
|
-
{ segmentBuffer,
|
|
125
|
-
playbackObserver,
|
|
126
|
-
maxBufferBehind: createMappedReference(maxBufferBehind,
|
|
127
|
-
(val) =>
|
|
128
|
-
Math.min(val, defaultMaxBehind),
|
|
129
|
-
gcCancelSignal),
|
|
130
|
-
maxBufferAhead: createMappedReference(maxBufferAhead, (val) => {
|
|
131
|
-
const lowerBound = Math.max(val,
|
|
132
|
-
MINIMUM_MAX_BUFFER_AHEAD[bufferType] ?? 0);
|
|
133
|
-
return Math.min(lowerBound, maxAheadHigherBound);
|
|
134
|
-
}, gcCancelSignal) },
|
|
135
|
-
gcCancelSignal
|
|
136
|
-
);
|
|
137
|
-
};
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
// Create automatically the right `PeriodStream` for every possible types
|
|
141
|
-
for (const bufferType of segmentBuffersStore.getBufferTypes()) {
|
|
142
|
-
manageEveryStreams(bufferType, initialPeriod);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Manage creation and removal of Streams for every Periods for a given type.
|
|
147
|
-
*
|
|
148
|
-
* Works by creating consecutive Streams through the
|
|
149
|
-
* `manageConsecutivePeriodStreams` function, and restarting it when the
|
|
150
|
-
* current position goes out of the bounds of these Streams.
|
|
151
|
-
* @param {string} bufferType - e.g. "audio" or "video"
|
|
152
|
-
* @param {Period} basePeriod - Initial Period downloaded.
|
|
153
|
-
*/
|
|
154
|
-
function manageEveryStreams(bufferType : IBufferType, basePeriod : Period) : void {
|
|
155
|
-
/** Each Period for which there is currently a Stream, chronologically */
|
|
156
|
-
const periodList = new SortedList<Period>((a, b) => a.start - b.start);
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* When set to `true`, all the currently active PeriodStream will be destroyed
|
|
160
|
-
* and re-created from the new current position if we detect it to be out of
|
|
161
|
-
* their bounds.
|
|
162
|
-
* This is set to false when we're in the process of creating the first
|
|
163
|
-
* PeriodStream, to avoid interferences while no PeriodStream is available.
|
|
164
|
-
*/
|
|
165
|
-
let enableOutOfBoundsCheck = false;
|
|
166
|
-
|
|
167
|
-
/** Cancels currently created `PeriodStream`s. */
|
|
168
|
-
let currentCanceller = new TaskCanceller();
|
|
169
|
-
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
170
|
-
|
|
171
|
-
// Restart the current Stream when the wanted time is in another period
|
|
172
|
-
// than the ones already considered
|
|
173
|
-
playbackObserver.listen(({ position }) => {
|
|
174
|
-
const time = position.pending ?? position.last;
|
|
175
|
-
if (!enableOutOfBoundsCheck || !isOutOfPeriodList(time)) {
|
|
176
|
-
return ;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
log.info("Stream: Destroying all PeriodStreams due to out of bounds situation",
|
|
180
|
-
bufferType, time);
|
|
181
|
-
enableOutOfBoundsCheck = false;
|
|
182
|
-
while (periodList.length() > 0) {
|
|
183
|
-
const period = periodList.get(periodList.length() - 1);
|
|
184
|
-
periodList.removeElement(period);
|
|
185
|
-
callbacks.periodStreamCleared({ type: bufferType, period });
|
|
186
|
-
}
|
|
187
|
-
currentCanceller.cancel();
|
|
188
|
-
currentCanceller = new TaskCanceller();
|
|
189
|
-
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
190
|
-
|
|
191
|
-
const nextPeriod = manifest.getPeriodForTime(time) ??
|
|
192
|
-
manifest.getNextPeriod(time);
|
|
193
|
-
if (nextPeriod === undefined) {
|
|
194
|
-
log.warn("Stream: The wanted position is not found in the Manifest.");
|
|
195
|
-
enableOutOfBoundsCheck = true;
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
launchConsecutiveStreamsForPeriod(nextPeriod);
|
|
199
|
-
}, { clearSignal: orchestratorCancelSignal, includeLastObservation: true });
|
|
200
|
-
|
|
201
|
-
manifest.addEventListener("decipherabilityUpdate", (evt) => {
|
|
202
|
-
onDecipherabilityUpdates(evt).catch(err => {
|
|
203
|
-
currentCanceller.cancel();
|
|
204
|
-
callbacks.error(err);
|
|
205
|
-
});
|
|
206
|
-
}, orchestratorCancelSignal);
|
|
207
|
-
|
|
208
|
-
return launchConsecutiveStreamsForPeriod(basePeriod);
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* @param {Object} period
|
|
212
|
-
*/
|
|
213
|
-
function launchConsecutiveStreamsForPeriod(period : Period) : void {
|
|
214
|
-
const consecutivePeriodStreamCb = {
|
|
215
|
-
...callbacks,
|
|
216
|
-
waitingMediaSourceReload(payload : IWaitingMediaSourceReloadPayload) : void {
|
|
217
|
-
// Only reload the MediaSource when the more immediately required
|
|
218
|
-
// Period is the one asking for it
|
|
219
|
-
const firstPeriod = periodList.head();
|
|
220
|
-
if (firstPeriod === undefined ||
|
|
221
|
-
firstPeriod.id !== payload.period.id)
|
|
222
|
-
{
|
|
223
|
-
callbacks.lockedStream({ bufferType: payload.bufferType,
|
|
224
|
-
period: payload.period });
|
|
225
|
-
} else {
|
|
226
|
-
callbacks.needsMediaSourceReload({
|
|
227
|
-
timeOffset: payload.timeOffset,
|
|
228
|
-
minimumPosition: payload.stayInPeriod ? payload.period.start : undefined,
|
|
229
|
-
maximumPosition: payload.stayInPeriod ? payload.period.end : undefined,
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
},
|
|
233
|
-
periodStreamReady(payload : IPeriodStreamReadyPayload) : void {
|
|
234
|
-
enableOutOfBoundsCheck = true;
|
|
235
|
-
periodList.add(payload.period);
|
|
236
|
-
callbacks.periodStreamReady(payload);
|
|
237
|
-
},
|
|
238
|
-
periodStreamCleared(payload : IPeriodStreamClearedPayload) : void {
|
|
239
|
-
periodList.removeElement(payload.period);
|
|
240
|
-
callbacks.periodStreamCleared(payload);
|
|
241
|
-
},
|
|
242
|
-
error(err : unknown) : void {
|
|
243
|
-
currentCanceller.cancel();
|
|
244
|
-
callbacks.error(err);
|
|
245
|
-
},
|
|
246
|
-
};
|
|
247
|
-
manageConsecutivePeriodStreams(bufferType,
|
|
248
|
-
period,
|
|
249
|
-
consecutivePeriodStreamCb,
|
|
250
|
-
currentCanceller.signal);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Returns true if the given time is either:
|
|
255
|
-
* - less than the start of the chronologically first Period
|
|
256
|
-
* - more than the end of the chronologically last Period
|
|
257
|
-
* @param {number} time
|
|
258
|
-
* @returns {boolean}
|
|
259
|
-
*/
|
|
260
|
-
function isOutOfPeriodList(time : number) : boolean {
|
|
261
|
-
const head = periodList.head();
|
|
262
|
-
const last = periodList.last();
|
|
263
|
-
if (head == null || last == null) { // if no period
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
return head.start > time ||
|
|
267
|
-
(last.end == null ? Infinity :
|
|
268
|
-
last.end) < time;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* React to a Manifest's decipherability updates.
|
|
273
|
-
* @param {Array.<Object>} updates
|
|
274
|
-
* @returns {Promise}
|
|
275
|
-
*/
|
|
276
|
-
async function onDecipherabilityUpdates(
|
|
277
|
-
updates : IDecipherabilityUpdateElement[]
|
|
278
|
-
) : Promise<void> {
|
|
279
|
-
const segmentBufferStatus = segmentBuffersStore.getStatus(bufferType);
|
|
280
|
-
const ofCurrentType = updates
|
|
281
|
-
.filter(update => update.adaptation.type === bufferType);
|
|
282
|
-
if (
|
|
283
|
-
// No update concerns the current type of data
|
|
284
|
-
ofCurrentType.length === 0 ||
|
|
285
|
-
segmentBufferStatus.type !== "initialized" ||
|
|
286
|
-
// The update only notifies of now-decipherable streams
|
|
287
|
-
ofCurrentType.every(x => x.representation.decipherable === true)
|
|
288
|
-
) {
|
|
289
|
-
// Data won't have to be removed from the buffers, no need to stop the
|
|
290
|
-
// current Streams.
|
|
291
|
-
return ;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
const segmentBuffer = segmentBufferStatus.value;
|
|
295
|
-
const resettedContent = ofCurrentType.filter(update =>
|
|
296
|
-
update.representation.decipherable === undefined);
|
|
297
|
-
const undecipherableContent = ofCurrentType.filter(update =>
|
|
298
|
-
update.representation.decipherable === false);
|
|
299
|
-
|
|
300
|
-
/**
|
|
301
|
-
* Time ranges now containing undecipherable content.
|
|
302
|
-
* Those should first be removed and, depending on the platform, may
|
|
303
|
-
* need Supplementary actions as playback issues may remain even after
|
|
304
|
-
* removal.
|
|
305
|
-
*/
|
|
306
|
-
const undecipherableRanges = getTimeRangesForContent(segmentBuffer,
|
|
307
|
-
undecipherableContent);
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Time ranges now containing content whose decipherability status came
|
|
311
|
-
* back to being unknown.
|
|
312
|
-
* To simplify its handling, those are just removed from the buffer.
|
|
313
|
-
* Less considerations have to be taken than for the `undecipherableRanges`.
|
|
314
|
-
*/
|
|
315
|
-
const rangesToRemove = getTimeRangesForContent(segmentBuffer,
|
|
316
|
-
resettedContent);
|
|
317
|
-
|
|
318
|
-
// First close all Stream currently active so they don't continue to
|
|
319
|
-
// load and push segments.
|
|
320
|
-
enableOutOfBoundsCheck = false;
|
|
321
|
-
|
|
322
|
-
log.info("Stream: Destroying all PeriodStreams for decipherability matters",
|
|
323
|
-
bufferType);
|
|
324
|
-
while (periodList.length() > 0) {
|
|
325
|
-
const period = periodList.get(periodList.length() - 1);
|
|
326
|
-
periodList.removeElement(period);
|
|
327
|
-
callbacks.periodStreamCleared({ type: bufferType, period });
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
currentCanceller.cancel();
|
|
331
|
-
currentCanceller = new TaskCanceller();
|
|
332
|
-
currentCanceller.linkToSignal(orchestratorCancelSignal);
|
|
333
|
-
|
|
334
|
-
/** Remove from the `SegmentBuffer` all the concerned time ranges. */
|
|
335
|
-
for (const { start, end } of [...undecipherableRanges, ...rangesToRemove]) {
|
|
336
|
-
if (start < end) {
|
|
337
|
-
if (orchestratorCancelSignal.isCancelled()) {
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
await segmentBuffer.removeBuffer(start, end, orchestratorCancelSignal);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// Schedule micro task before checking the last playback observation
|
|
345
|
-
// to reduce the risk of race conditions where the next observation
|
|
346
|
-
// was going to be emitted synchronously.
|
|
347
|
-
nextTick(() => {
|
|
348
|
-
if (orchestratorCancelSignal.isCancelled()) {
|
|
349
|
-
return ;
|
|
350
|
-
}
|
|
351
|
-
const observation = playbackObserver.getReference().getValue();
|
|
352
|
-
if (needsFlushingAfterClean(observation, undecipherableRanges)) {
|
|
353
|
-
|
|
354
|
-
// Bind to Period start and end
|
|
355
|
-
callbacks.needsDecipherabilityFlush();
|
|
356
|
-
if (orchestratorCancelSignal.isCancelled()) {
|
|
357
|
-
return ;
|
|
358
|
-
}
|
|
359
|
-
} else if (needsFlushingAfterClean(observation, rangesToRemove)) {
|
|
360
|
-
callbacks.needsBufferFlush();
|
|
361
|
-
if (orchestratorCancelSignal.isCancelled()) {
|
|
362
|
-
return ;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
const lastPosition = observation.position.pending ??
|
|
367
|
-
observation.position.last;
|
|
368
|
-
const newInitialPeriod = manifest.getPeriodForTime(lastPosition);
|
|
369
|
-
if (newInitialPeriod == null) {
|
|
370
|
-
callbacks.error(
|
|
371
|
-
new MediaError("MEDIA_TIME_NOT_FOUND",
|
|
372
|
-
"The wanted position is not found in the Manifest.")
|
|
373
|
-
);
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
launchConsecutiveStreamsForPeriod(newInitialPeriod);
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Create lazily consecutive PeriodStreams:
|
|
383
|
-
*
|
|
384
|
-
* It first creates the `PeriodStream` for `basePeriod` and - once it becomes
|
|
385
|
-
* full - automatically creates the next chronological one.
|
|
386
|
-
* This process repeats until the `PeriodStream` linked to the last Period is
|
|
387
|
-
* full.
|
|
388
|
-
*
|
|
389
|
-
* If an "old" `PeriodStream` becomes active again, it destroys all
|
|
390
|
-
* `PeriodStream` coming after it (from the last chronological one to the
|
|
391
|
-
* first).
|
|
392
|
-
*
|
|
393
|
-
* To clean-up PeriodStreams, each one of them are also automatically
|
|
394
|
-
* destroyed once the current position is superior or equal to the end of
|
|
395
|
-
* the concerned Period.
|
|
396
|
-
*
|
|
397
|
-
* The "periodStreamReady" callback is alled each times a new `PeriodStream`
|
|
398
|
-
* is created.
|
|
399
|
-
*
|
|
400
|
-
* The "periodStreamCleared" callback is called each times a PeriodStream is
|
|
401
|
-
* destroyed (this callback is though not called if it was destroyed due to
|
|
402
|
-
* the given `cancelSignal` emitting or due to a fatal error).
|
|
403
|
-
* @param {string} bufferType - e.g. "audio" or "video"
|
|
404
|
-
* @param {Period} basePeriod - Initial Period downloaded.
|
|
405
|
-
* @param {Object} consecutivePeriodStreamCb - Callbacks called on various
|
|
406
|
-
* events. See type for more information.
|
|
407
|
-
* @param {Object} cancelSignal - `CancellationSignal` allowing to stop
|
|
408
|
-
* everything that this function was doing. Callbacks in
|
|
409
|
-
* `consecutivePeriodStreamCb` might still be sent as a consequence of this
|
|
410
|
-
* signal emitting.
|
|
411
|
-
*/
|
|
412
|
-
function manageConsecutivePeriodStreams(
|
|
413
|
-
bufferType : IBufferType,
|
|
414
|
-
basePeriod : Period,
|
|
415
|
-
consecutivePeriodStreamCb : IPeriodStreamCallbacks & {
|
|
416
|
-
periodStreamCleared(payload : IPeriodStreamClearedPayload) : void;
|
|
417
|
-
},
|
|
418
|
-
cancelSignal : CancellationSignal
|
|
419
|
-
) : void {
|
|
420
|
-
log.info("Stream: Creating new Stream for", bufferType, basePeriod.start);
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* Contains properties linnked to the next chronological `PeriodStream` that
|
|
424
|
-
* may be created here.
|
|
425
|
-
*/
|
|
426
|
-
let nextStreamInfo : {
|
|
427
|
-
/** Emits when the `PeriodStreamfor should be destroyed, if created. */
|
|
428
|
-
canceller : TaskCanceller;
|
|
429
|
-
/** The `Period` concerned. */
|
|
430
|
-
period : Period;
|
|
431
|
-
} | null = null;
|
|
432
|
-
|
|
433
|
-
/** Emits when the `PeriodStream` linked to `basePeriod` should be destroyed. */
|
|
434
|
-
const currentStreamCanceller = new TaskCanceller();
|
|
435
|
-
currentStreamCanceller.linkToSignal(cancelSignal);
|
|
436
|
-
|
|
437
|
-
// Stop current PeriodStream when the current position goes over the end of
|
|
438
|
-
// that Period.
|
|
439
|
-
playbackObserver.listen(({ position }, stopListeningObservations) => {
|
|
440
|
-
const wantedPosition = position.pending ?? position.last;
|
|
441
|
-
if (basePeriod.end !== undefined && wantedPosition >= basePeriod.end) {
|
|
442
|
-
const nextPeriod = manifest.getPeriodAfter(basePeriod);
|
|
443
|
-
|
|
444
|
-
// Handle special wantedPosition === basePeriod.end cases
|
|
445
|
-
if (basePeriod.containsTime(wantedPosition, nextPeriod)) {
|
|
446
|
-
return;
|
|
447
|
-
}
|
|
448
|
-
log.info("Stream: Destroying PeriodStream as the current playhead moved above it",
|
|
449
|
-
bufferType,
|
|
450
|
-
basePeriod.start,
|
|
451
|
-
position.pending ?? position.last,
|
|
452
|
-
basePeriod.end);
|
|
453
|
-
stopListeningObservations();
|
|
454
|
-
consecutivePeriodStreamCb.periodStreamCleared({ type: bufferType,
|
|
455
|
-
period: basePeriod });
|
|
456
|
-
currentStreamCanceller.cancel();
|
|
457
|
-
}
|
|
458
|
-
}, { clearSignal: cancelSignal, includeLastObservation: true });
|
|
459
|
-
|
|
460
|
-
const periodStreamArgs = { bufferType,
|
|
461
|
-
content: { manifest, period: basePeriod },
|
|
462
|
-
garbageCollectors,
|
|
463
|
-
maxVideoBufferSize,
|
|
464
|
-
segmentFetcherCreator,
|
|
465
|
-
segmentBuffersStore,
|
|
466
|
-
options,
|
|
467
|
-
playbackObserver,
|
|
468
|
-
representationEstimator,
|
|
469
|
-
wantedBufferAhead };
|
|
470
|
-
const periodStreamCallbacks : IPeriodStreamCallbacks = {
|
|
471
|
-
...consecutivePeriodStreamCb,
|
|
472
|
-
streamStatusUpdate(value : IStreamStatusPayload) : void {
|
|
473
|
-
if (value.hasFinishedLoading) {
|
|
474
|
-
const nextPeriod = manifest.getPeriodAfter(basePeriod);
|
|
475
|
-
if (nextPeriod !== null) {
|
|
476
|
-
// current Stream is full, create the next one if not
|
|
477
|
-
checkOrCreateNextPeriodStream(nextPeriod);
|
|
478
|
-
}
|
|
479
|
-
} else if (nextStreamInfo !== null) {
|
|
480
|
-
// current Stream is active, destroy next Stream if created
|
|
481
|
-
log.info("Stream: Destroying next PeriodStream due to current one being active",
|
|
482
|
-
bufferType, nextStreamInfo.period.start);
|
|
483
|
-
consecutivePeriodStreamCb
|
|
484
|
-
.periodStreamCleared({ type: bufferType, period: nextStreamInfo.period });
|
|
485
|
-
nextStreamInfo.canceller.cancel();
|
|
486
|
-
nextStreamInfo = null;
|
|
487
|
-
}
|
|
488
|
-
consecutivePeriodStreamCb.streamStatusUpdate(value);
|
|
489
|
-
},
|
|
490
|
-
error(err : unknown) : void {
|
|
491
|
-
if (nextStreamInfo !== null) {
|
|
492
|
-
nextStreamInfo.canceller.cancel();
|
|
493
|
-
nextStreamInfo = null;
|
|
494
|
-
}
|
|
495
|
-
currentStreamCanceller.cancel();
|
|
496
|
-
consecutivePeriodStreamCb.error(err);
|
|
497
|
-
},
|
|
498
|
-
};
|
|
499
|
-
|
|
500
|
-
PeriodStream(periodStreamArgs, periodStreamCallbacks, currentStreamCanceller.signal);
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Create `PeriodStream` for the next Period, specified under `nextPeriod`.
|
|
504
|
-
* @param {Object} nextPeriod
|
|
505
|
-
*/
|
|
506
|
-
function checkOrCreateNextPeriodStream(nextPeriod : Period) : void {
|
|
507
|
-
if (nextStreamInfo !== null) {
|
|
508
|
-
if (nextStreamInfo.period.id === nextPeriod.id) {
|
|
509
|
-
return;
|
|
510
|
-
}
|
|
511
|
-
log.warn("Stream: Creating next `PeriodStream` while one was already created.",
|
|
512
|
-
bufferType, nextPeriod.id, nextStreamInfo.period.id);
|
|
513
|
-
consecutivePeriodStreamCb.periodStreamCleared({ type: bufferType,
|
|
514
|
-
period: nextStreamInfo.period });
|
|
515
|
-
nextStreamInfo.canceller.cancel();
|
|
516
|
-
}
|
|
517
|
-
const nextStreamCanceller = new TaskCanceller();
|
|
518
|
-
nextStreamCanceller.linkToSignal(cancelSignal);
|
|
519
|
-
nextStreamInfo = { canceller: nextStreamCanceller,
|
|
520
|
-
period: nextPeriod };
|
|
521
|
-
manageConsecutivePeriodStreams(bufferType,
|
|
522
|
-
nextPeriod,
|
|
523
|
-
consecutivePeriodStreamCb,
|
|
524
|
-
nextStreamInfo.canceller.signal);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
export type IStreamOrchestratorPlaybackObservation = IPeriodStreamPlaybackObservation;
|
|
530
|
-
|
|
531
|
-
/** Options tweaking the behavior of the StreamOrchestrator. */
|
|
532
|
-
export type IStreamOrchestratorOptions =
|
|
533
|
-
IPeriodStreamOptions &
|
|
534
|
-
{ wantedBufferAhead : IReadOnlySharedReference<number>;
|
|
535
|
-
maxVideoBufferSize : IReadOnlySharedReference<number>;
|
|
536
|
-
maxBufferAhead : IReadOnlySharedReference<number>;
|
|
537
|
-
maxBufferBehind : IReadOnlySharedReference<number>; };
|
|
538
|
-
|
|
539
|
-
/** Callbacks called by the `StreamOrchestrator` on various events. */
|
|
540
|
-
export interface IStreamOrchestratorCallbacks
|
|
541
|
-
extends Omit<IPeriodStreamCallbacks, "waitingMediaSourceReload">
|
|
542
|
-
{
|
|
543
|
-
/**
|
|
544
|
-
* Called when a `PeriodStream` has been removed.
|
|
545
|
-
* This event can be used for clean-up purposes. For example, you are free to
|
|
546
|
-
* remove from scope the object used to choose a track for that
|
|
547
|
-
* `PeriodStream`.
|
|
548
|
-
*
|
|
549
|
-
* This callback might not be called when a `PeriodStream` is cleared due to
|
|
550
|
-
* an `error` callback or to the `StreamOrchestrator` being cancellated as
|
|
551
|
-
* both already indicate implicitly that all `PeriodStream` have been cleared.
|
|
552
|
-
*/
|
|
553
|
-
periodStreamCleared(payload : IPeriodStreamClearedPayload) : void;
|
|
554
|
-
/**
|
|
555
|
-
* Called when a situation needs the MediaSource to be reloaded.
|
|
556
|
-
*
|
|
557
|
-
* Once the MediaSource is reloaded, the `StreamOrchestrator` need to be
|
|
558
|
-
* restarted from scratch.
|
|
559
|
-
*/
|
|
560
|
-
needsMediaSourceReload(payload : INeedsMediaSourceReloadPayload) : void;
|
|
561
|
-
/**
|
|
562
|
-
* Called when the stream is unable to load segments for a particular Period
|
|
563
|
-
* and buffer type until that Period becomes the currently-played Period.
|
|
564
|
-
*
|
|
565
|
-
* This might be the case for example when a track change happened for an
|
|
566
|
-
* upcoming Period, which necessitates the reloading of the media source
|
|
567
|
-
* once the Period is the current one.
|
|
568
|
-
* Here, the stream might stay in a locked mode for segments linked to that
|
|
569
|
-
* Period and buffer type, meaning it will not load any such segment until that
|
|
570
|
-
* next Period becomes the current one (in which case it will probably ask to
|
|
571
|
-
* reload through the proper callback, `needsMediaSourceReload`).
|
|
572
|
-
*
|
|
573
|
-
* This callback can be useful when investigating rebuffering situation: one
|
|
574
|
-
* might be due to the next Period not loading segment of a certain type
|
|
575
|
-
* because of a locked stream. In that case, playing until or seeking at the
|
|
576
|
-
* start of the corresponding Period should be enough to "unlock" the stream.
|
|
577
|
-
*/
|
|
578
|
-
lockedStream(payload : ILockedStreamPayload) : void;
|
|
579
|
-
/**
|
|
580
|
-
* Called after the SegmentBuffer have been "cleaned" to remove from it
|
|
581
|
-
* every non-decipherable segments - usually following an update of the
|
|
582
|
-
* decipherability status of some `Representation`(s).
|
|
583
|
-
*
|
|
584
|
-
* When that event is emitted, the current HTMLMediaElement's buffer might need
|
|
585
|
-
* to be "flushed" to continue (e.g. through a little seek operation) or in
|
|
586
|
-
* worst cases completely removed and re-created through the "reload" mechanism,
|
|
587
|
-
* depending on the platform.
|
|
588
|
-
*/
|
|
589
|
-
needsDecipherabilityFlush() : void;
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
/** Payload for the `periodStreamCleared` callback. */
|
|
593
|
-
export interface IPeriodStreamClearedPayload {
|
|
594
|
-
/**
|
|
595
|
-
* The type of buffer linked to the `PeriodStream` we just removed.
|
|
596
|
-
*
|
|
597
|
-
* The combination of this and `Period` should give you enough information
|
|
598
|
-
* about which `PeriodStream` has been removed.
|
|
599
|
-
*/
|
|
600
|
-
type : IBufferType;
|
|
601
|
-
/**
|
|
602
|
-
* The `Period` linked to the `PeriodStream` we just removed.
|
|
603
|
-
*
|
|
604
|
-
* The combination of this and `Period` should give you enough information
|
|
605
|
-
* about which `PeriodStream` has been removed.
|
|
606
|
-
*/
|
|
607
|
-
period : Period;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
/** Payload for the `needsMediaSourceReload` callback. */
|
|
611
|
-
export interface INeedsMediaSourceReloadPayload {
|
|
612
|
-
/**
|
|
613
|
-
* Relative position, compared to the current one, at which we should
|
|
614
|
-
* restart playback after reloading. For example `-2` will reload 2 seconds
|
|
615
|
-
* before the current position.
|
|
616
|
-
*/
|
|
617
|
-
timeOffset : number;
|
|
618
|
-
/**
|
|
619
|
-
* If defined and if the new position obtained after relying on
|
|
620
|
-
* `timeOffset` is before `minimumPosition`, then we will reload at
|
|
621
|
-
* `minimumPosition` instead.
|
|
622
|
-
*/
|
|
623
|
-
minimumPosition : number | undefined;
|
|
624
|
-
/**
|
|
625
|
-
* If defined and if the new position obtained after relying on
|
|
626
|
-
* `timeOffset` is after `maximumPosition`, then we will reload at
|
|
627
|
-
* `maximumPosition` instead.
|
|
628
|
-
*/
|
|
629
|
-
maximumPosition : number | undefined;
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
/** Payload for the `lockedStream` callback. */
|
|
633
|
-
export interface ILockedStreamPayload {
|
|
634
|
-
/** Period concerned. */
|
|
635
|
-
period : Period;
|
|
636
|
-
/** Buffer type concerned. */
|
|
637
|
-
bufferType : IBufferType;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
/**
|
|
641
|
-
* Returns `true` if low-level buffers have to be "flushed" after the given
|
|
642
|
-
* `cleanedRanges` time ranges have been removed from an audio or video
|
|
643
|
-
* SourceBuffer, to prevent playback issues.
|
|
644
|
-
* @param {Object} observation
|
|
645
|
-
* @param {Array.<Object>} cleanedRanges
|
|
646
|
-
* @returns {boolean}
|
|
647
|
-
*/
|
|
648
|
-
function needsFlushingAfterClean(
|
|
649
|
-
observation : IStreamOrchestratorPlaybackObservation,
|
|
650
|
-
cleanedRanges : Array<{ start: number; end: number }>
|
|
651
|
-
) : boolean {
|
|
652
|
-
if (cleanedRanges.length === 0) {
|
|
653
|
-
return false;
|
|
654
|
-
}
|
|
655
|
-
const curPos = observation.position.last;
|
|
656
|
-
|
|
657
|
-
// Based on the playback direction, we just check whether we may encounter
|
|
658
|
-
// the corresponding ranges, without seeking or re-switching playback
|
|
659
|
-
// direction which is expected to lead to a low-level flush anyway.
|
|
660
|
-
// There's a 5 seconds security, just to be sure.
|
|
661
|
-
return observation.speed >= 0 ?
|
|
662
|
-
cleanedRanges[cleanedRanges.length - 1] .end >= curPos - 5 :
|
|
663
|
-
cleanedRanges[0].start <= curPos + 5;
|
|
664
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright 2015 CANAL+ Group
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import PeriodStream from "./period_stream";
|
|
18
|
-
export * from "./types";
|
|
19
|
-
|
|
20
|
-
export default PeriodStream;
|