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,267 +0,0 @@
|
|
|
1
|
-
# DASH-WASM MPD parser #########################################################
|
|
2
|
-
|
|
3
|
-
This directory exposes a WebAssembly-based MPD parser, whose intent is to be
|
|
4
|
-
faster than the default JS-based one, especially on very large (multiple
|
|
5
|
-
megabytes) MPDs.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## What is this ################################################################
|
|
10
|
-
|
|
11
|
-
### How Manifest parsing works in the RxPlayer #################################
|
|
12
|
-
|
|
13
|
-
In the RxPlayer every Manifest parser output the same final Manifest format
|
|
14
|
-
which follow the same structure regardless of the transport protocol used (e.g.
|
|
15
|
-
DASH, Smooth etc.).
|
|
16
|
-
|
|
17
|
-
For the MPD (DASH's Manifest format), this transformation (from an XML to that
|
|
18
|
-
final Manifest format) happens in two steps:
|
|
19
|
-
1. first from the XML to a JS object very close that representation (same
|
|
20
|
-
hierarchy, same elements and attributes names).
|
|
21
|
-
|
|
22
|
-
This is what we call the "intermediate representation" (kind of a cheeky
|
|
23
|
-
name, because that expression is usually used for more complex compiler
|
|
24
|
-
mid-compilation structures, but we found the name to be a fit also in our
|
|
25
|
-
case).
|
|
26
|
-
|
|
27
|
-
2. Then from this "intermediate representation" to the final Manifest.
|
|
28
|
-
|
|
29
|
-
The idea is that the "intermediate representation" is much easier to manipulate
|
|
30
|
-
than the XML format in JavaScript.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
### Problems with the JavaScript parser ########################################
|
|
35
|
-
|
|
36
|
-
Before the DASH-WASM parser, we only had the JavaScript parser, which relied on
|
|
37
|
-
the browser's DOM APIs (e.g. `DOMParser`).
|
|
38
|
-
|
|
39
|
-
This parser works fine but we found that its performance was really poor when
|
|
40
|
-
encoutering huge MPDs (several MBs), that we're dealing with at Canal+ on a
|
|
41
|
-
regular basis.
|
|
42
|
-
Usually those problematic MPDs have several gigantic `<SegmentTimeline>`
|
|
43
|
-
elements that takes a lot of time to parse.
|
|
44
|
-
|
|
45
|
-
After multiple tests, profiling and improvements, it appeared that the issue had
|
|
46
|
-
to do with XML parsing and the DOM APIs (regarding the speed of the parsing
|
|
47
|
-
operation, but also some stability issues most likely related to garbage
|
|
48
|
-
collection pressure).
|
|
49
|
-
|
|
50
|
-
Moreover, on some embedded devices, this operation could take several seconds.
|
|
51
|
-
This leaded us to try to implement a parser running in a WebWorker (to avoid
|
|
52
|
-
blocking the main thread, which is also handling the user interface).
|
|
53
|
-
|
|
54
|
-
As no DOM API are available in a WebWorker, we had to re-define the XML parsing
|
|
55
|
-
APIs. We first opted for a JavaScript library, yet found performance in our
|
|
56
|
-
initial tests to be subpar.
|
|
57
|
-
We ended up trying with WebAssembly instead.
|
|
58
|
-
|
|
59
|
-
I chose to start a proof-of-concept in Rust because I already had some
|
|
60
|
-
experience with it. After the first results, which were exceeding our
|
|
61
|
-
expectations, it became clear that this strategy could be the way to go.
|
|
62
|
-
|
|
63
|
-
Even if initially, this parser was written to run in a WebWorker, this is not
|
|
64
|
-
(yet?) the case. This is because:
|
|
65
|
-
|
|
66
|
-
1. we found that the performance of the parser rewrote in WebAssembly to be
|
|
67
|
-
more than acceptable, even in the main thread
|
|
68
|
-
|
|
69
|
-
2. after some initial tests, we noticed that adding a worker into the mix
|
|
70
|
-
could add some non-negligible time penalties.
|
|
71
|
-
This could potentially be avoidable but we did not take the time to work on
|
|
72
|
-
that for now.
|
|
73
|
-
|
|
74
|
-
3. we see a lot of improvements which could make running in a main thread less
|
|
75
|
-
of a problem, most notably parsing at the same time than the MPD request is
|
|
76
|
-
pending, small MPD chunk by small MPD chunk.
|
|
77
|
-
|
|
78
|
-
Due to this, we decided to only develop and integrate the WebAssembly part at
|
|
79
|
-
first, which will run in the main thread. We may add WebWorker-related logic in
|
|
80
|
-
future releases.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### What is WebAssembly ########################################################
|
|
85
|
-
|
|
86
|
-
WebAssembly is a binary format for executables that can be executed - among
|
|
87
|
-
other platforms - in modern browsers.
|
|
88
|
-
It is generally compiled from code written in other languages (even if a
|
|
89
|
-
WebAssembly text format does exist).
|
|
90
|
-
|
|
91
|
-
The initial idea was both to provide a possibly-faster language than JavaScript
|
|
92
|
-
in the browser and to allow programs written in other languages than JavaScript
|
|
93
|
-
to run in the browser with few efforts.
|
|
94
|
-
|
|
95
|
-
In the context of the RxPlayer, we only use it for optimization reasons, when
|
|
96
|
-
we noticed that switching the DASH MPD parser to WebAssembly has a high impact
|
|
97
|
-
in terms of performance when compared to the equivalent JavaScript code.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
### Where does the DASH-WASM parser fits into this #############################
|
|
101
|
-
|
|
102
|
-
The DASH-WASM MPD parser only does the first step of transforming the initial
|
|
103
|
-
XML format into the "intermediate representation", by using WebAssembly.
|
|
104
|
-
|
|
105
|
-
We could resume by writing it this way. The DASH-WASM parser's code only does
|
|
106
|
-
the following things:
|
|
107
|
-
1. It browses the XML
|
|
108
|
-
2. It converts each of its attributes to the wanted format (e.g. floats,
|
|
109
|
-
JS strings, integers, booleans...)
|
|
110
|
-
3. From those, it constructs the "intermediate representation" of the MPD
|
|
111
|
-
|
|
112
|
-
After those steps, the rest of the transformation into the final Manifest is
|
|
113
|
-
done by a common code (common with the JS parser) written in JavaScript.
|
|
114
|
-
|
|
115
|
-
This logic was written as such because:
|
|
116
|
-
|
|
117
|
-
- when we profiled the performance of our JS parser, we noticed that the
|
|
118
|
-
performance issue was overwhelmingly linked to the APIs related to XML
|
|
119
|
-
parsing
|
|
120
|
-
|
|
121
|
-
- as we were introducing another language into the RxPlayer, we wanted its
|
|
122
|
-
maintenance cost to be as small as possible, thus keeping the not-so
|
|
123
|
-
problematic steps in JavaScript.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
## How this parser is written ##################################################
|
|
128
|
-
|
|
129
|
-
### Directories ################################################################
|
|
130
|
-
|
|
131
|
-
The DASH-WASM parser comes into part:
|
|
132
|
-
|
|
133
|
-
- the Rust part, written in the `rs` directory, that browses the XML and
|
|
134
|
-
convert values to the right format.
|
|
135
|
-
|
|
136
|
-
- the TypeScript part, written in the `ts` directory that constructs the
|
|
137
|
-
"intermediate representation" JS object from what is parsed by the Rust
|
|
138
|
-
part.
|
|
139
|
-
|
|
140
|
-
The parser's entry point is also written in TypeScript and can be found in the
|
|
141
|
-
`ts` directory.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
### How Rust and TypeScript interact ###########################################
|
|
145
|
-
|
|
146
|
-
#### Architecture
|
|
147
|
-
|
|
148
|
-
Currently, the DASH-WASM parser parses in one go the XML.
|
|
149
|
-
|
|
150
|
-
1. The XML data is continuously fed to the WebAssembly, which just sees it as
|
|
151
|
-
an array of bytes, it then goes through the quick-xml dependency - a Rust
|
|
152
|
-
"crate" (equivalent to a node module).
|
|
153
|
-
|
|
154
|
-
2. As quick-xml encounters new XML elements (it uses an event-driven SAX
|
|
155
|
-
parser approach which continuously parses the MPD, not a DOM one reading
|
|
156
|
-
it fully in advance), quick-xml will notify our WebAssembly code that this
|
|
157
|
-
is the case.
|
|
158
|
-
|
|
159
|
-
3. The WebAssembly code assigns to each recognized element a number (defined
|
|
160
|
-
as a Rust and TypeScript enum).
|
|
161
|
-
|
|
162
|
-
If the XML element encountered is recognized, it will call a JavaScript
|
|
163
|
-
callback with the right number, to signal that this element has been
|
|
164
|
-
encountered.
|
|
165
|
-
|
|
166
|
-
4. This callback, registered by the TypeScript code, begin to create the
|
|
167
|
-
object corresponding to that element and update some callbacks called
|
|
168
|
-
by Rust so that new elements and attributes are considered as part of
|
|
169
|
-
this element.
|
|
170
|
-
|
|
171
|
-
5. The WebAssembly then iterates through each of that element's attribute.
|
|
172
|
-
|
|
173
|
-
When it recognizes one for a given element (e.g. Period@start):
|
|
174
|
-
- it converts it to the right format (integer, float, UTF-8 string).
|
|
175
|
-
- it assigns a number to this attribute (like for elements, but with a
|
|
176
|
-
different enum).
|
|
177
|
-
- it calls a JavaScript callback signaling that that attribute has been
|
|
178
|
-
encountered with its value (in some cases, a pointer and potential
|
|
179
|
-
length of the value).
|
|
180
|
-
|
|
181
|
-
6. The attribute is received by the TypeScript code. It will generally do a
|
|
182
|
-
small conversion again to the right type (e.g. UTF-8 to JS String, floats
|
|
183
|
-
and integers to JS numbers and so on) and then add it to the object
|
|
184
|
-
created previously for that element.
|
|
185
|
-
|
|
186
|
-
7. The WebAssembly code continues to parse elements and attributes inside
|
|
187
|
-
that signaled element and continue to call the corresponding JavaScript
|
|
188
|
-
callbacks as it does so.
|
|
189
|
-
|
|
190
|
-
Once it encounters a closing element, it checks if the element is
|
|
191
|
-
recognized (is part of the element enum). If that's the case, it calls
|
|
192
|
-
another JavaScript callback with that element's number signaling that its
|
|
193
|
-
closing tag was encountered.
|
|
194
|
-
|
|
195
|
-
8. The callback, defined in the TypeScript code, handles the closing tag
|
|
196
|
-
event mainly by re-updating other callbacks (so new elements and
|
|
197
|
-
attributes are not considered part of this closed element anymore).
|
|
198
|
-
|
|
199
|
-
9. The same logic is continued until the end of the MPD.
|
|
200
|
-
|
|
201
|
-
There's also another JavaScript callback not introduced here to simplify. This
|
|
202
|
-
is a callback to let the WebAssembly code signal when minor errors have been
|
|
203
|
-
encountered when parsing the MPD (e.g. invalid attributes' data).
|
|
204
|
-
|
|
205
|
-
This current architecture has initially been designed for simplicity, seeing
|
|
206
|
-
that its results were more than suitable, we stood with it.
|
|
207
|
-
If you think another approach would be preferable for any reason, don't hesitate
|
|
208
|
-
to propose a change (through an issue first)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
### Details on FFI #############################################################
|
|
212
|
-
|
|
213
|
-
Technically, some data and function calls needs to cross the language boundaries
|
|
214
|
-
between the compiled JavaScript and WebAssembly code.
|
|
215
|
-
|
|
216
|
-
On the JavaScript/TypeScript-side, everything stays relatively simple, with few
|
|
217
|
-
considerations to have. TypeScript functions are defined, which take `number`
|
|
218
|
-
arguments, and are communicated when instantiating a new WebAssembly module.
|
|
219
|
-
|
|
220
|
-
On Rust-side, we exploit multiple FFI features:
|
|
221
|
-
|
|
222
|
-
- compiling Rust with the `"cdylib"` `crate-type` (as indicated in the
|
|
223
|
-
`Cargo.toml` file). This has for effect to create a "system" dynamic
|
|
224
|
-
library, which will follow the stable C ABI.
|
|
225
|
-
|
|
226
|
-
- marking function defined in JavaScript with an `extern "C" {` block, to
|
|
227
|
-
indicate that they follow the C ABI.
|
|
228
|
-
|
|
229
|
-
- marking function defined in Rust but callable in JavaScript both with `pub`
|
|
230
|
-
and `extern "C"` indicating that they are public function using the C ABI.
|
|
231
|
-
|
|
232
|
-
Also those functions have the `#[no_mangle]` attribute, disabling name
|
|
233
|
-
mangling for these so they can be easily called from JavaScript by using the
|
|
234
|
-
same name.
|
|
235
|
-
|
|
236
|
-
- data other than integers are usually exchanged through a duo of a pointer
|
|
237
|
-
and a length.
|
|
238
|
-
JavaScript has access to the full WebAssembly's memory, meaning that large
|
|
239
|
-
chunk of data can just be exchanged by reading from and writing to this
|
|
240
|
-
memory with only a pointer and a length given.
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
## How to build the Rust code ##################################################
|
|
245
|
-
|
|
246
|
-
The Rust code is compiled through npm scripts, just like all other building
|
|
247
|
-
logic in the RxPlayer.
|
|
248
|
-
|
|
249
|
-
To be able to call the corresponding npm script [1], you will need to:
|
|
250
|
-
|
|
251
|
-
1. Install [cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html),
|
|
252
|
-
which is roughly Rust's npm.
|
|
253
|
-
|
|
254
|
-
2. Install [binaryen](https://github.com/WebAssembly/binaryen), which is a
|
|
255
|
-
WebAssembly toolbox we're using to optimize the built wasm file.
|
|
256
|
-
|
|
257
|
-
If you see error messages while building related to a "wasm32-unknown-unknown"
|
|
258
|
-
target not being installed, you should install it.
|
|
259
|
-
|
|
260
|
-
If you use `rustup` this can be done for example by writing:
|
|
261
|
-
```sh
|
|
262
|
-
rustup target add wasm32-unknown-unknown
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
[1] The name of those scripts are not repeated in this document because of the
|
|
266
|
-
fear that they may change in the future, in which case this documentation could
|
|
267
|
-
easily be outdated.
|
|
@@ -1,21 +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 DashWasmParser, {
|
|
18
|
-
IDashWasmParserOptions,
|
|
19
|
-
} from "./ts/dash-wasm-parser";
|
|
20
|
-
export { IDashWasmParserOptions };
|
|
21
|
-
export default DashWasmParser;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
use crate::events::CustomEventType;
|
|
2
|
-
use crate::onCustomEvent;
|
|
3
|
-
|
|
4
|
-
pub type Result<T> = std::result::Result<T, ParsingError>;
|
|
5
|
-
|
|
6
|
-
/// Very simple error type, only used to generate a String description of a
|
|
7
|
-
/// parsing error, to then be reported on the JS-side.
|
|
8
|
-
#[derive(Debug, Clone)]
|
|
9
|
-
pub struct ParsingError(pub String);
|
|
10
|
-
|
|
11
|
-
impl ParsingError {
|
|
12
|
-
/// Call JS-side callback with this ParsingError in argument to report an
|
|
13
|
-
/// error.
|
|
14
|
-
pub fn report_err(&self) {
|
|
15
|
-
let len = self.0.len();
|
|
16
|
-
// UNSAFE: We're using FFI, so we don't know how the pointer is used.
|
|
17
|
-
// Hopefully, the JavaScript-side should clone that value synchronously.
|
|
18
|
-
unsafe {
|
|
19
|
-
onCustomEvent(CustomEventType::Error, (*self.0).as_ptr(), len);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
impl<T: std::error::Error> From<T> for ParsingError {
|
|
25
|
-
fn from(err: T) -> ParsingError {
|
|
26
|
-
ParsingError(err.to_string())
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
use crate::{onTagClose, onTagOpen, ParsingError};
|
|
2
|
-
|
|
3
|
-
#[derive(Clone, Copy)]
|
|
4
|
-
#[repr(C)]
|
|
5
|
-
pub enum CustomEventType {
|
|
6
|
-
/// Variant that can be used to log various information on the RxPlayer's
|
|
7
|
-
/// logger.
|
|
8
|
-
///
|
|
9
|
-
/// Useful for debugging, for example.
|
|
10
|
-
#[allow(dead_code)]
|
|
11
|
-
Log = 0,
|
|
12
|
-
|
|
13
|
-
/// Variant used to report parsing errors to the RxPlayer.
|
|
14
|
-
Error = 1,
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/// `TagName` enumerates parsed XML elements in an MPD.
|
|
18
|
-
///
|
|
19
|
-
/// Note that not all parsed elements have an entry in `TagName`, the simpler
|
|
20
|
-
/// ones might actually have an entry in `AttributeName` instead to simplify
|
|
21
|
-
/// the parser's implementation.
|
|
22
|
-
#[derive(PartialEq, Clone, Copy)]
|
|
23
|
-
#[repr(C)]
|
|
24
|
-
#[allow(clippy::upper_case_acronyms)]
|
|
25
|
-
pub enum TagName {
|
|
26
|
-
/// Indicate an <MPD> node
|
|
27
|
-
/// These nodes are usually contained at the root of an MPD.
|
|
28
|
-
MPD = 1,
|
|
29
|
-
|
|
30
|
-
// -- Inside an <MPD> --
|
|
31
|
-
/// Indicate a <Period> node
|
|
32
|
-
Period = 2,
|
|
33
|
-
|
|
34
|
-
/// Indicate a <UTCTiming> node
|
|
35
|
-
UtcTiming = 3,
|
|
36
|
-
|
|
37
|
-
// -- Inside a <Period> --
|
|
38
|
-
/// Indicate an <AdaptationSet> node
|
|
39
|
-
AdaptationSet = 4,
|
|
40
|
-
|
|
41
|
-
/// Indicate an <EventStream> node
|
|
42
|
-
EventStream = 5,
|
|
43
|
-
|
|
44
|
-
/// Indicate an <Event> node.
|
|
45
|
-
/// These nodes are usually contained in <EventStream> elements.
|
|
46
|
-
EventStreamElt = 6,
|
|
47
|
-
|
|
48
|
-
// -- Inside an <AdaptationSet> --
|
|
49
|
-
/// Indicate a <Representation> node
|
|
50
|
-
Representation = 7,
|
|
51
|
-
|
|
52
|
-
/// Indicate an <Accessibility> node
|
|
53
|
-
Accessibility = 8,
|
|
54
|
-
|
|
55
|
-
/// Indicate a <ContentComponent> node
|
|
56
|
-
ContentComponent = 9,
|
|
57
|
-
|
|
58
|
-
/// Indicate a <ContentProtection> node
|
|
59
|
-
ContentProtection = 10,
|
|
60
|
-
|
|
61
|
-
/// Indicate an <EssentialProperty> node
|
|
62
|
-
EssentialProperty = 11,
|
|
63
|
-
|
|
64
|
-
/// Indicate a <Role> node
|
|
65
|
-
Role = 12,
|
|
66
|
-
|
|
67
|
-
/// Indicate a <SupplementalProperty> node
|
|
68
|
-
SupplementalProperty = 13,
|
|
69
|
-
|
|
70
|
-
// -- Inside various elements --
|
|
71
|
-
/// Indicate a <BaseURL> node
|
|
72
|
-
BaseURL = 15,
|
|
73
|
-
|
|
74
|
-
/// Indicate a <SegmentTemplate> node
|
|
75
|
-
SegmentTemplate = 16,
|
|
76
|
-
|
|
77
|
-
/// Indicate a <SegmentBase> node
|
|
78
|
-
SegmentBase = 17,
|
|
79
|
-
|
|
80
|
-
/// Indicate a <SegmentList> node
|
|
81
|
-
SegmentList = 18,
|
|
82
|
-
|
|
83
|
-
/// Indicate an <InbandEventStream> node
|
|
84
|
-
InbandEventStream = 19,
|
|
85
|
-
|
|
86
|
-
// -- Inside a <SegmentList> --
|
|
87
|
-
/// Indicate a <SegmentURL> node
|
|
88
|
-
SegmentUrl = 20,
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
#[derive(PartialEq, Clone, Copy)]
|
|
92
|
-
#[repr(C)]
|
|
93
|
-
pub enum AttributeName {
|
|
94
|
-
/// Describes the "id" attribute that can be found in many, many elements.
|
|
95
|
-
///
|
|
96
|
-
/// It is reported as an UTF-8 sequence of bytes (through a pointer into
|
|
97
|
-
/// WebAssembly's memory and length).
|
|
98
|
-
///
|
|
99
|
-
/// Among the elements concerned:
|
|
100
|
-
/// - <MPD>
|
|
101
|
-
/// - <Period>
|
|
102
|
-
/// - <AdaptationSet>
|
|
103
|
-
/// - <Representation>
|
|
104
|
-
/// - <ContentComponent>
|
|
105
|
-
/// - <Event> (from <EventStream> elements)
|
|
106
|
-
Id = 0,
|
|
107
|
-
|
|
108
|
-
/// Describes the "duration" attribute that can be found in multiple MPD
|
|
109
|
-
/// elements.
|
|
110
|
-
///
|
|
111
|
-
/// It is reported as an f64, for easier JS manipulation.
|
|
112
|
-
///
|
|
113
|
-
/// The Duration attribute can be found in:
|
|
114
|
-
/// - <Period> elements. In that case this value will be reported as a
|
|
115
|
-
/// number of seconds.
|
|
116
|
-
/// - <SegmentTemplate> elements
|
|
117
|
-
/// - <SegmentBase> elements
|
|
118
|
-
/// - <Event> elements (from <EventStream> elements)
|
|
119
|
-
Duration = 1,
|
|
120
|
-
|
|
121
|
-
/// Describes the "profiles" attribute, found in `<MPD>` elements.
|
|
122
|
-
///
|
|
123
|
-
/// It is reported as an UTF-8 sequence of bytes (through a pointer and
|
|
124
|
-
/// length into WebAssembly's memory).
|
|
125
|
-
Profiles = 2,
|
|
126
|
-
|
|
127
|
-
// AdaptationSet + Representation
|
|
128
|
-
AudioSamplingRate = 3,
|
|
129
|
-
Codecs = 4, // String
|
|
130
|
-
CodingDependency = 5,
|
|
131
|
-
FrameRate = 6,
|
|
132
|
-
Height = 7, // f64
|
|
133
|
-
Width = 8, // f64
|
|
134
|
-
MaxPlayoutRate = 9,
|
|
135
|
-
MaxSAPPeriod = 10,
|
|
136
|
-
MimeType = 11, // f64
|
|
137
|
-
SegmentProfiles = 12,
|
|
138
|
-
|
|
139
|
-
// ContentProtection
|
|
140
|
-
ContentProtectionValue = 13, // String
|
|
141
|
-
ContentProtectionKeyId = 14, // ArrayBuffer
|
|
142
|
-
ContentProtectionCencPSSH = 15, // ArrayBuffer
|
|
143
|
-
|
|
144
|
-
// Various schemes (Accessibility) + EventStream + ContentProtection
|
|
145
|
-
SchemeIdUri = 16, // String
|
|
146
|
-
|
|
147
|
-
// Various schemes (Accessibility)
|
|
148
|
-
SchemeValue = 17, // String
|
|
149
|
-
|
|
150
|
-
// SegmentURL
|
|
151
|
-
MediaRange = 18, // [f64, f64]
|
|
152
|
-
|
|
153
|
-
// SegmentTimeline
|
|
154
|
-
SegmentTimeline = 19, // Vec<SElement>
|
|
155
|
-
|
|
156
|
-
// SegmentTemplate
|
|
157
|
-
StartNumber = 20, // f64
|
|
158
|
-
|
|
159
|
-
// SegmentTemplate + SegmentBase
|
|
160
|
-
AvailabilityTimeComplete = 22, // u8 (bool)
|
|
161
|
-
IndexRangeExact = 23, // u8 (bool)
|
|
162
|
-
PresentationTimeOffset = 24, // f64
|
|
163
|
-
|
|
164
|
-
// EventStream
|
|
165
|
-
EventPresentationTime = 25, // f64
|
|
166
|
-
|
|
167
|
-
// SegmentTemplate + SegmentBase + EventStream + EventStreamElt
|
|
168
|
-
TimeScale = 27, // f64
|
|
169
|
-
|
|
170
|
-
// SegmentURL + SegmentTemplate
|
|
171
|
-
Index = 28, // String
|
|
172
|
-
|
|
173
|
-
// Initialization
|
|
174
|
-
InitializationRange = 29, // [f64, f64]
|
|
175
|
-
|
|
176
|
-
// SegmentURL + SegmentTemplate + SegmentBase + Initialization
|
|
177
|
-
Media = 30, // String
|
|
178
|
-
IndexRange = 31, // [f64, f64]
|
|
179
|
-
|
|
180
|
-
// Period + AdaptationSet + SegmentTemplate
|
|
181
|
-
BitstreamSwitching = 32, // u8 (bool)
|
|
182
|
-
|
|
183
|
-
// MPD
|
|
184
|
-
Type = 33, // String
|
|
185
|
-
AvailabilityStartTime = 34, // f64
|
|
186
|
-
AvailabilityEndTime = 35, // f64
|
|
187
|
-
PublishTime = 36, // f64
|
|
188
|
-
MinimumUpdatePeriod = 37, // f64
|
|
189
|
-
MinBufferTime = 38, // f64
|
|
190
|
-
TimeShiftBufferDepth = 39, // f64
|
|
191
|
-
SuggestedPresentationDelay = 40, // f64
|
|
192
|
-
MaxSegmentDuration = 41, // f64
|
|
193
|
-
MaxSubsegmentDuration = 42, // f64
|
|
194
|
-
|
|
195
|
-
// BaseURL + SegmentTemplate
|
|
196
|
-
AvailabilityTimeOffset = 43, // f64
|
|
197
|
-
|
|
198
|
-
// Period
|
|
199
|
-
Start = 45, // f64
|
|
200
|
-
XLinkHref = 46, // String
|
|
201
|
-
XLinkActuate = 47, // String
|
|
202
|
-
|
|
203
|
-
// AdaptationSet
|
|
204
|
-
Group = 48,
|
|
205
|
-
MaxBandwidth = 49, // f64
|
|
206
|
-
MaxFrameRate = 50, // f64
|
|
207
|
-
MaxHeight = 51, // f64
|
|
208
|
-
MaxWidth = 52, // f64
|
|
209
|
-
MinBandwidth = 53, // f64
|
|
210
|
-
MinFrameRate = 54, // f64
|
|
211
|
-
MinHeight = 55, // f64
|
|
212
|
-
MinWidth = 56, // f64
|
|
213
|
-
SelectionPriority = 57,
|
|
214
|
-
SegmentAlignment = 58,
|
|
215
|
-
SubsegmentAlignment = 59,
|
|
216
|
-
|
|
217
|
-
// AdaptationSet + ContentComponent
|
|
218
|
-
Language = 60, // String
|
|
219
|
-
ContentType = 61, // String
|
|
220
|
-
Par = 62,
|
|
221
|
-
|
|
222
|
-
// Representation
|
|
223
|
-
Bitrate = 63, // f64
|
|
224
|
-
|
|
225
|
-
Text = 64,
|
|
226
|
-
QualityRanking = 65,
|
|
227
|
-
Location = 66,
|
|
228
|
-
|
|
229
|
-
InitializationMedia = 67,
|
|
230
|
-
|
|
231
|
-
/// Describes an encountered "mediaPresentationDuration" attribute, as found
|
|
232
|
-
/// in `<MPD>` elements.
|
|
233
|
-
///
|
|
234
|
-
/// This value has been converted into seconds, as an f64.
|
|
235
|
-
MediaPresentationDuration = 68,
|
|
236
|
-
|
|
237
|
-
/// Describes the byte range (end not included) of an encountered `<Event>`
|
|
238
|
-
/// element in the whole MPD.
|
|
239
|
-
///
|
|
240
|
-
/// This can be useful to re-construct the whole element on the JS-sid.
|
|
241
|
-
///
|
|
242
|
-
/// It is reported as an array of two f64 values.
|
|
243
|
-
/// The first number indicating the starting range (included).
|
|
244
|
-
/// The second indicating the ending range (non-included).
|
|
245
|
-
EventStreamEltRange = 69,
|
|
246
|
-
|
|
247
|
-
/// Describes an XML namespace coming from either a `<MPD>` element, a
|
|
248
|
-
/// `<Period> element or a `<EventStream>` elements, as those are the three
|
|
249
|
-
/// parent tags of potential `<Event>` elements.
|
|
250
|
-
///
|
|
251
|
-
/// It is reported as the concatenation of four values:
|
|
252
|
-
///
|
|
253
|
-
/// - In the four first bytes: The length of the namespace's name (the
|
|
254
|
-
/// part in the XML attribute just after "xmlns:"), as a big endian
|
|
255
|
-
/// unsigned 32 bit integer
|
|
256
|
-
///
|
|
257
|
-
/// - The namespace's name (the part coming after "xmlns:" in the
|
|
258
|
-
/// attribute's name), as an UTF-8 encoded string.
|
|
259
|
-
/// The length of this attribute is indicated by the preceding four
|
|
260
|
-
/// bytes.
|
|
261
|
-
///
|
|
262
|
-
/// - As the next four bytes: The length of the namespace's value (the
|
|
263
|
-
/// corresponding XML attribute's value), as a big endian
|
|
264
|
-
/// unsigned 32 bit integer
|
|
265
|
-
///
|
|
266
|
-
/// - The namespace's value (the value of the corresponding XML
|
|
267
|
-
/// attribute), as an UTF-8 encoded string.
|
|
268
|
-
/// The length of this attribute is indicated by the preceding four
|
|
269
|
-
/// bytes.
|
|
270
|
-
///
|
|
271
|
-
/// This special Attribute was needed because we need those namespaces to be
|
|
272
|
-
/// able to communicate `<Event>` property under a JavaScript's Element
|
|
273
|
-
/// format: the browser's `DOMParser` API needs to know all potential
|
|
274
|
-
/// namespaces that will appear in it.
|
|
275
|
-
Namespace = 70,
|
|
276
|
-
|
|
277
|
-
Label = 71, // String
|
|
278
|
-
|
|
279
|
-
ServiceLocation = 72, // String
|
|
280
|
-
|
|
281
|
-
// SegmentTemplate
|
|
282
|
-
EndNumber = 76, // f64
|
|
283
|
-
|
|
284
|
-
SupplementalCodecs = 77 // string
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
impl TagName {
|
|
288
|
-
/// Signal a new tag opening to the application
|
|
289
|
-
pub fn report_tag_open(self) {
|
|
290
|
-
debug_assert!(self as u64 <= u8::MAX as u64);
|
|
291
|
-
|
|
292
|
-
// UNSAFE: We're using FFI, but there should be no risk at all here
|
|
293
|
-
unsafe { onTagOpen(self) };
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/// Signal that a previously-open tag closed to the application
|
|
297
|
-
pub fn report_tag_close(self) {
|
|
298
|
-
debug_assert!(self as u64 <= u8::MAX as u64);
|
|
299
|
-
|
|
300
|
-
// UNSAFE: We're using FFI, but there should be no risk at all here
|
|
301
|
-
unsafe { onTagClose(self) };
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
use crate::reportable::ReportableAttribute;
|
|
306
|
-
use crate::utils;
|
|
307
|
-
|
|
308
|
-
impl AttributeName {
|
|
309
|
-
#[inline(always)]
|
|
310
|
-
pub fn report<T: ReportableAttribute>(self, val: T) {
|
|
311
|
-
val.report_as_attr(self)
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
pub fn try_report_as_string(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
315
|
-
match attr.unescape_value() {
|
|
316
|
-
Ok(val) => self.report(val),
|
|
317
|
-
Err(_) => ParsingError("Could not escape original value".to_owned()).report_err(),
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
pub fn try_report_as_f64(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
322
|
-
match utils::parse_f64(&attr.value) {
|
|
323
|
-
Ok(val) => self.report(val),
|
|
324
|
-
Err(error) => error.report_err(),
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
pub fn try_report_as_iso_8601_duration(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
329
|
-
match utils::parse_iso_8601_duration(&attr.value) {
|
|
330
|
-
Ok(val) => self.report(val),
|
|
331
|
-
Err(error) => error.report_err(),
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
pub fn try_report_as_u64(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
336
|
-
match utils::parse_u64(&attr.value) {
|
|
337
|
-
Ok(val) => self.report(val as f64),
|
|
338
|
-
Err(error) => error.report_err(),
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
pub fn try_report_as_u64_or_bool(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
343
|
-
match utils::parse_u64_or_bool(&attr.value) {
|
|
344
|
-
Ok(val) => self.report(val),
|
|
345
|
-
Err(error) => error.report_err(),
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
pub fn try_report_as_bool(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
350
|
-
match utils::parse_bool(&attr.value) {
|
|
351
|
-
Ok(val) => self.report(val),
|
|
352
|
-
Err(error) => error.report_err(),
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
pub fn try_report_as_range(self, attr: &quick_xml::events::attributes::Attribute) {
|
|
357
|
-
match utils::parse_byte_range(&attr.value) {
|
|
358
|
-
Ok(val) => self.report(val),
|
|
359
|
-
Err(error) => error.report_err(),
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
pub fn try_report_as_key_value(
|
|
364
|
-
self,
|
|
365
|
-
key: &[u8],
|
|
366
|
-
value: &quick_xml::events::attributes::Attribute,
|
|
367
|
-
) {
|
|
368
|
-
match value.unescape_value() {
|
|
369
|
-
Ok(val) => self.report((key, val)),
|
|
370
|
-
Err(_) => ParsingError("Could not escape original value".to_owned()).report_err(),
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
}
|