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,318 +0,0 @@
|
|
|
1
|
-
import { MediaError } from "../../errors";
|
|
2
|
-
import assert from "../../utils/assert";
|
|
3
|
-
import isNullOrUndefined from "../../utils/is_null_or_undefined";
|
|
4
|
-
import { CancellationSignal } from "../../utils/task_canceller";
|
|
5
|
-
import { ICompatHTMLMediaElement } from "../browser_compatibility_types";
|
|
6
|
-
import { isIE11 } from "../browser_detection";
|
|
7
|
-
import { createCompatibleEventListener, IEventTargetLike } from "../event_listeners";
|
|
8
|
-
import isNode from "../is_node";
|
|
9
|
-
import shouldFavourCustomSafariEME from "../should_favour_custom_safari_EME";
|
|
10
|
-
import CustomMediaKeySystemAccess from "./custom_key_system_access";
|
|
11
|
-
import getIE11MediaKeysCallbacks, {
|
|
12
|
-
MSMediaKeysConstructor,
|
|
13
|
-
} from "./custom_media_keys/ie11_media_keys";
|
|
14
|
-
import getMozMediaKeysCallbacks, {
|
|
15
|
-
MozMediaKeysConstructor,
|
|
16
|
-
} from "./custom_media_keys/moz_media_keys_constructor";
|
|
17
|
-
import getOldKitWebKitMediaKeyCallbacks, {
|
|
18
|
-
isOldWebkitMediaElement,
|
|
19
|
-
} from "./custom_media_keys/old_webkit_media_keys";
|
|
20
|
-
import {
|
|
21
|
-
ICustomMediaKeys,
|
|
22
|
-
} from "./custom_media_keys/types";
|
|
23
|
-
import getWebKitMediaKeysCallbacks from "./custom_media_keys/webkit_media_keys";
|
|
24
|
-
import {
|
|
25
|
-
WebKitMediaKeysConstructor,
|
|
26
|
-
} from "./custom_media_keys/webkit_media_keys_constructor";
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Automatically detect and set which EME implementation should be used in the
|
|
30
|
-
* current platform.
|
|
31
|
-
*
|
|
32
|
-
* You can call `getEmeApiImplementation` for a different implementation.
|
|
33
|
-
*/
|
|
34
|
-
const defaultEmeImplementation = getEmeApiImplementation("auto");
|
|
35
|
-
|
|
36
|
-
export default defaultEmeImplementation;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Generic interface harmonizing the structure of the different EME API
|
|
40
|
-
* implementations the RxPlayer could use.
|
|
41
|
-
*/
|
|
42
|
-
export interface IEmeApiImplementation {
|
|
43
|
-
/**
|
|
44
|
-
* API implementing the `navigator.requestMediaKeySystemAccess` static method
|
|
45
|
-
* from EME.
|
|
46
|
-
* @param {string} keyType - Key system name, as a reverse domain name.
|
|
47
|
-
* @param {Array.<MediaKeySystemMediaCapability>} Wanted configurations, from
|
|
48
|
-
* the most wanted to the least.
|
|
49
|
-
* @returns {Promise}
|
|
50
|
-
*/
|
|
51
|
-
requestMediaKeySystemAccess : (
|
|
52
|
-
keyType : string,
|
|
53
|
-
config : MediaKeySystemConfiguration[]
|
|
54
|
-
) => Promise<MediaKeySystemAccess | CustomMediaKeySystemAccess>;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* API allowing to listen for `"encrypted"` events, presumably sent by the
|
|
58
|
-
* HTMLMediaElement on which encrypted content is pushed.
|
|
59
|
-
* @param {EventTarget} The element on which the event will be listened to.
|
|
60
|
-
* Generally it is the HTMLMediaElement.
|
|
61
|
-
* @param {Function} listener - The event listener on which that event's
|
|
62
|
-
* payload will be dispatched.
|
|
63
|
-
* @param {Object} cancelSignal - The event listener will be removed once that
|
|
64
|
-
* `CancellationSignal` emits.
|
|
65
|
-
*/
|
|
66
|
-
onEncrypted : (
|
|
67
|
-
target : IEventTargetLike,
|
|
68
|
-
listener : (evt : unknown) => void,
|
|
69
|
-
cancelSignal : CancellationSignal,
|
|
70
|
-
) => void;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* API allowing to attach a `MediaKeys` instance (or an `ICustomMediaKeys`) to
|
|
74
|
-
* the HTMLMediaElement so it can start decoding.
|
|
75
|
-
* @param {HTMLMediaElement} The HTMLMediaElement on which the content plays.
|
|
76
|
-
* @param {MediaKeys} mediaKeys - The MediaKeys instance to attach.
|
|
77
|
-
* @returns {Promise} - That promise resolves if the `MediaKeys` instance was
|
|
78
|
-
* attached to the `HTMLMediaElement` with success, or rejects on the opposite
|
|
79
|
-
* scenario.
|
|
80
|
-
*/
|
|
81
|
-
setMediaKeys : (
|
|
82
|
-
mediaElement: HTMLMediaElement,
|
|
83
|
-
mediaKeys: MediaKeys | ICustomMediaKeys | null
|
|
84
|
-
) => Promise<unknown>;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* String describing the currently used EME implementation:
|
|
88
|
-
*
|
|
89
|
-
* - "standard": regular EME implementation
|
|
90
|
-
*
|
|
91
|
-
* - "webkit": The webkit-prefixed variant of the EME API
|
|
92
|
-
*
|
|
93
|
-
* - "older-webkit": An even older webkit-prefixed variant of the EME API
|
|
94
|
-
*
|
|
95
|
-
* - "ms": The ms-prefixed variant of the EME API
|
|
96
|
-
*
|
|
97
|
-
* - "moz": The moz-prefixed variant of the EME API
|
|
98
|
-
*
|
|
99
|
-
* - "unknown": An unidentified variant of the EME API
|
|
100
|
-
*/
|
|
101
|
-
implementation : "standard" | "webkit" | "older-webkit" | "ms" | "moz" | "unknown";
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Union of all the different value the preferred EME API type can be set to:
|
|
106
|
-
*
|
|
107
|
-
* - "auto": The implementation will be chosen automatically based on what
|
|
108
|
-
* we've most confidence on on the current device.
|
|
109
|
-
*
|
|
110
|
-
* - "standard": If present, the standard EME API will be given precedence
|
|
111
|
-
* over custom and browser-specific ones.
|
|
112
|
-
*
|
|
113
|
-
* - "webkit": The webkit-prefixed variant of the EME API will be given
|
|
114
|
-
* precedence over any other one if present.
|
|
115
|
-
*
|
|
116
|
-
*/
|
|
117
|
-
export type IPreferredEmeApiType = "auto" | "standard" | "webkit";
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Returns the current EME implementation based on what's present on the device
|
|
121
|
-
* and the given preference.
|
|
122
|
-
* @param {string} preferredApiType - EME API preference
|
|
123
|
-
* (@see IPreferredEmeApiType).
|
|
124
|
-
* @returns {Object}
|
|
125
|
-
*/
|
|
126
|
-
function getEmeApiImplementation(
|
|
127
|
-
preferredApiType : IPreferredEmeApiType
|
|
128
|
-
) : IEmeApiImplementation {
|
|
129
|
-
let requestMediaKeySystemAccess : IEmeApiImplementation["requestMediaKeySystemAccess"];
|
|
130
|
-
let onEncrypted : IEmeApiImplementation["onEncrypted"];
|
|
131
|
-
let setMediaKeys : IEmeApiImplementation["setMediaKeys"] = defaultSetMediaKeys;
|
|
132
|
-
let implementation : IEmeApiImplementation["implementation"];
|
|
133
|
-
if (
|
|
134
|
-
(
|
|
135
|
-
preferredApiType === "standard" ||
|
|
136
|
-
(preferredApiType === "auto" && !shouldFavourCustomSafariEME())
|
|
137
|
-
) &&
|
|
138
|
-
(
|
|
139
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
140
|
-
isNode || !isNullOrUndefined(navigator.requestMediaKeySystemAccess)
|
|
141
|
-
)
|
|
142
|
-
) {
|
|
143
|
-
requestMediaKeySystemAccess = (...args) =>
|
|
144
|
-
navigator.requestMediaKeySystemAccess(...args);
|
|
145
|
-
onEncrypted = createCompatibleEventListener(["encrypted"]);
|
|
146
|
-
implementation = "standard";
|
|
147
|
-
} else {
|
|
148
|
-
let isTypeSupported: (keyType: string) => boolean;
|
|
149
|
-
let createCustomMediaKeys: (keyType: string) => ICustomMediaKeys;
|
|
150
|
-
|
|
151
|
-
if (preferredApiType === "webkit" && WebKitMediaKeysConstructor !== undefined) {
|
|
152
|
-
onEncrypted = createCompatibleEventListener(["needkey"]);
|
|
153
|
-
const callbacks = getWebKitMediaKeysCallbacks();
|
|
154
|
-
isTypeSupported = callbacks.isTypeSupported;
|
|
155
|
-
createCustomMediaKeys = callbacks.createCustomMediaKeys;
|
|
156
|
-
setMediaKeys = callbacks.setMediaKeys;
|
|
157
|
-
implementation = "webkit";
|
|
158
|
-
} else {
|
|
159
|
-
// This is for Chrome with unprefixed EME api
|
|
160
|
-
if (isOldWebkitMediaElement(HTMLVideoElement.prototype)) {
|
|
161
|
-
onEncrypted = createCompatibleEventListener(["needkey"]);
|
|
162
|
-
const callbacks = getOldKitWebKitMediaKeyCallbacks();
|
|
163
|
-
isTypeSupported = callbacks.isTypeSupported;
|
|
164
|
-
createCustomMediaKeys = callbacks.createCustomMediaKeys;
|
|
165
|
-
setMediaKeys = callbacks.setMediaKeys;
|
|
166
|
-
implementation = "older-webkit";
|
|
167
|
-
// This is for WebKit with prefixed EME api
|
|
168
|
-
} else if (WebKitMediaKeysConstructor !== undefined) {
|
|
169
|
-
onEncrypted = createCompatibleEventListener(["needkey"]);
|
|
170
|
-
const callbacks = getWebKitMediaKeysCallbacks();
|
|
171
|
-
isTypeSupported = callbacks.isTypeSupported;
|
|
172
|
-
createCustomMediaKeys = callbacks.createCustomMediaKeys;
|
|
173
|
-
setMediaKeys = callbacks.setMediaKeys;
|
|
174
|
-
implementation = "webkit";
|
|
175
|
-
} else if (isIE11 && MSMediaKeysConstructor !== undefined) {
|
|
176
|
-
onEncrypted = createCompatibleEventListener(["encrypted", "needkey"]);
|
|
177
|
-
const callbacks = getIE11MediaKeysCallbacks();
|
|
178
|
-
isTypeSupported = callbacks.isTypeSupported;
|
|
179
|
-
createCustomMediaKeys = callbacks.createCustomMediaKeys;
|
|
180
|
-
setMediaKeys = callbacks.setMediaKeys;
|
|
181
|
-
implementation = "ms";
|
|
182
|
-
} else if (MozMediaKeysConstructor !== undefined) {
|
|
183
|
-
onEncrypted = createCompatibleEventListener(["encrypted", "needkey"]);
|
|
184
|
-
const callbacks = getMozMediaKeysCallbacks();
|
|
185
|
-
isTypeSupported = callbacks.isTypeSupported;
|
|
186
|
-
createCustomMediaKeys = callbacks.createCustomMediaKeys;
|
|
187
|
-
setMediaKeys = callbacks.setMediaKeys;
|
|
188
|
-
implementation = "moz";
|
|
189
|
-
} else {
|
|
190
|
-
onEncrypted = createCompatibleEventListener(["encrypted", "needkey"]);
|
|
191
|
-
const MK = window.MediaKeys as unknown as typeof MediaKeys & {
|
|
192
|
-
isTypeSupported? : (keyType : string) => boolean;
|
|
193
|
-
new(keyType? : string) : ICustomMediaKeys;
|
|
194
|
-
};
|
|
195
|
-
const checkForStandardMediaKeys = () => {
|
|
196
|
-
if (MK === undefined) {
|
|
197
|
-
throw new MediaError("MEDIA_KEYS_NOT_SUPPORTED",
|
|
198
|
-
"No `MediaKeys` implementation found " +
|
|
199
|
-
"in the current browser.");
|
|
200
|
-
}
|
|
201
|
-
if (typeof MK.isTypeSupported === "undefined") {
|
|
202
|
-
const message = "This browser seems to be unable to play encrypted " +
|
|
203
|
-
"contents currently." +
|
|
204
|
-
"Note: Some browsers do not allow decryption " +
|
|
205
|
-
"in some situations, like when not using HTTPS.";
|
|
206
|
-
throw new Error(message);
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
isTypeSupported = (keyType: string): boolean => {
|
|
210
|
-
checkForStandardMediaKeys();
|
|
211
|
-
assert(typeof MK.isTypeSupported === "function");
|
|
212
|
-
return MK.isTypeSupported(keyType);
|
|
213
|
-
};
|
|
214
|
-
createCustomMediaKeys = (keyType: string) => {
|
|
215
|
-
checkForStandardMediaKeys();
|
|
216
|
-
return new MK(keyType);
|
|
217
|
-
};
|
|
218
|
-
implementation = "unknown";
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
requestMediaKeySystemAccess = function(
|
|
223
|
-
keyType : string,
|
|
224
|
-
keySystemConfigurations : MediaKeySystemConfiguration[]
|
|
225
|
-
) : Promise<MediaKeySystemAccess|CustomMediaKeySystemAccess> {
|
|
226
|
-
if (!isTypeSupported(keyType)) {
|
|
227
|
-
return Promise.reject(new Error("Unsupported key type"));
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
for (let i = 0; i < keySystemConfigurations.length; i++) {
|
|
231
|
-
const keySystemConfiguration = keySystemConfigurations[i];
|
|
232
|
-
const { videoCapabilities,
|
|
233
|
-
audioCapabilities,
|
|
234
|
-
initDataTypes,
|
|
235
|
-
distinctiveIdentifier } = keySystemConfiguration;
|
|
236
|
-
let supported = true;
|
|
237
|
-
supported = supported &&
|
|
238
|
-
(initDataTypes == null ||
|
|
239
|
-
initDataTypes.some((idt) => idt === "cenc"));
|
|
240
|
-
supported = supported && (distinctiveIdentifier !== "required");
|
|
241
|
-
|
|
242
|
-
if (supported) {
|
|
243
|
-
const keySystemConfigurationResponse : MediaKeySystemConfiguration = {
|
|
244
|
-
initDataTypes: ["cenc"],
|
|
245
|
-
distinctiveIdentifier: "not-allowed" as const,
|
|
246
|
-
persistentState: "required" as const,
|
|
247
|
-
sessionTypes: ["temporary", "persistent-license"],
|
|
248
|
-
};
|
|
249
|
-
if (videoCapabilities !== undefined) {
|
|
250
|
-
keySystemConfigurationResponse.videoCapabilities = videoCapabilities;
|
|
251
|
-
}
|
|
252
|
-
if (audioCapabilities !== undefined) {
|
|
253
|
-
keySystemConfigurationResponse.audioCapabilities = audioCapabilities;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
257
|
-
const customMediaKeys = createCustomMediaKeys(keyType);
|
|
258
|
-
return Promise.resolve(
|
|
259
|
-
new CustomMediaKeySystemAccess(keyType,
|
|
260
|
-
customMediaKeys,
|
|
261
|
-
keySystemConfigurationResponse)
|
|
262
|
-
);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return Promise.reject(new Error("Unsupported configuration"));
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
return { requestMediaKeySystemAccess,
|
|
270
|
-
onEncrypted,
|
|
271
|
-
setMediaKeys,
|
|
272
|
-
implementation };
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Set the given MediaKeys on the given HTMLMediaElement.
|
|
277
|
-
* Emits null when done then complete.
|
|
278
|
-
* @param {HTMLMediaElement} mediaElement
|
|
279
|
-
* @param {Object} mediaKeys
|
|
280
|
-
* @returns {Promise}
|
|
281
|
-
*/
|
|
282
|
-
function defaultSetMediaKeys(
|
|
283
|
-
mediaElement: HTMLMediaElement,
|
|
284
|
-
mediaKeys: MediaKeys | ICustomMediaKeys | null
|
|
285
|
-
): Promise<unknown> {
|
|
286
|
-
try {
|
|
287
|
-
let ret : unknown;
|
|
288
|
-
const elt : ICompatHTMLMediaElement = mediaElement;
|
|
289
|
-
/* eslint-disable @typescript-eslint/unbound-method */
|
|
290
|
-
if (typeof elt.setMediaKeys === "function") {
|
|
291
|
-
ret = elt.setMediaKeys(mediaKeys as MediaKeys);
|
|
292
|
-
}
|
|
293
|
-
/* eslint-enable @typescript-eslint/unbound-method */
|
|
294
|
-
|
|
295
|
-
// If we get in the following code, it means that no compat case has been
|
|
296
|
-
// found and no standard setMediaKeys API exists. This case is particulary
|
|
297
|
-
// rare. We will try to call each API with native media keys.
|
|
298
|
-
else if (typeof elt.webkitSetMediaKeys === "function") {
|
|
299
|
-
ret = elt.webkitSetMediaKeys(mediaKeys);
|
|
300
|
-
} else if (typeof elt.mozSetMediaKeys === "function") {
|
|
301
|
-
ret = elt.mozSetMediaKeys(mediaKeys);
|
|
302
|
-
} else if (typeof elt.msSetMediaKeys === "function" && mediaKeys !== null) {
|
|
303
|
-
ret = elt.msSetMediaKeys(mediaKeys);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
if (
|
|
307
|
-
typeof ret === "object" &&
|
|
308
|
-
ret !== null &&
|
|
309
|
-
typeof (ret as Promise<unknown>).then === "function"
|
|
310
|
-
) {
|
|
311
|
-
return ret as Promise<unknown>;
|
|
312
|
-
} else {
|
|
313
|
-
return Promise.resolve(ret);
|
|
314
|
-
}
|
|
315
|
-
} catch (err) {
|
|
316
|
-
return Promise.reject(err);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
@@ -1,162 +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 log from "../../log";
|
|
18
|
-
import { getNextBoxOffsets } from "../../parsers/containers/isobmff";
|
|
19
|
-
import {
|
|
20
|
-
be4toi,
|
|
21
|
-
concat,
|
|
22
|
-
} from "../../utils/byte_parsing";
|
|
23
|
-
import { PSSH_TO_INTEGER } from "./constants";
|
|
24
|
-
import { ICustomMediaKeySession } from "./custom_media_keys";
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Modify "initialization data" sent to a `generateKeyRequest` EME call to
|
|
28
|
-
* improve the player's browser compatibility:
|
|
29
|
-
*
|
|
30
|
-
* 1. some browsers/CDM have problems when the CENC PSSH box is the first
|
|
31
|
-
* encountered PSSH box in the initialization data (for the moment just
|
|
32
|
-
* Edge was noted with this behavior).
|
|
33
|
-
* We found however that it works on every browser when the CENC pssh
|
|
34
|
-
* box(es) is/are the last box(es) encountered.
|
|
35
|
-
*
|
|
36
|
-
* To that end, we move CENC pssh boxes at the end of the initialization
|
|
37
|
-
* data in this function.
|
|
38
|
-
*
|
|
39
|
-
* 2. Some poorly encoded/packaged contents communicate both a CENC with a
|
|
40
|
-
* pssh version of 0 and one with a version of 1. We found out that this is
|
|
41
|
-
* not always well handled on some devices/browsers (on Edge and some other
|
|
42
|
-
* embedded devices that shall remain nameless for now!).
|
|
43
|
-
*
|
|
44
|
-
* Here this function will filter out CENC pssh with a version different to
|
|
45
|
-
* 1 when one(s) with a version of 1 is/are already present.
|
|
46
|
-
*
|
|
47
|
-
* If the initData is unrecognized or if a CENC PSSH is not found, this function
|
|
48
|
-
* throws.
|
|
49
|
-
* @param {Uint8Array} initData - Initialization data you want to patch
|
|
50
|
-
* @returns {Uint8Array} - Initialization data, patched
|
|
51
|
-
*/
|
|
52
|
-
export function patchInitData(initData : Uint8Array) : Uint8Array {
|
|
53
|
-
log.info("Compat: Trying to move CENC PSSH from init data at the end of it.");
|
|
54
|
-
let foundCencV1 = false;
|
|
55
|
-
let concatenatedCencs = new Uint8Array();
|
|
56
|
-
let resInitData = new Uint8Array();
|
|
57
|
-
|
|
58
|
-
let offset = 0;
|
|
59
|
-
while (offset < initData.length) {
|
|
60
|
-
if (initData.length < offset + 8 ||
|
|
61
|
-
be4toi(initData, offset + 4) !== PSSH_TO_INTEGER
|
|
62
|
-
) {
|
|
63
|
-
log.warn("Compat: unrecognized initialization data. Cannot patch it.");
|
|
64
|
-
throw new Error("Compat: unrecognized initialization data. Cannot patch it.");
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const len = be4toi(new Uint8Array(initData), offset);
|
|
68
|
-
if (offset + len > initData.length) {
|
|
69
|
-
log.warn("Compat: unrecognized initialization data. Cannot patch it.");
|
|
70
|
-
throw new Error("Compat: unrecognized initialization data. Cannot patch it.");
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const currentPSSH = initData.subarray(offset, offset + len);
|
|
74
|
-
// yep
|
|
75
|
-
if (initData[offset + 12] === 0x10 &&
|
|
76
|
-
initData[offset + 13] === 0x77 &&
|
|
77
|
-
initData[offset + 14] === 0xEF &&
|
|
78
|
-
initData[offset + 15] === 0xEC &&
|
|
79
|
-
initData[offset + 16] === 0xC0 &&
|
|
80
|
-
initData[offset + 17] === 0xB2 &&
|
|
81
|
-
initData[offset + 18] === 0x4D &&
|
|
82
|
-
initData[offset + 19] === 0x02 &&
|
|
83
|
-
initData[offset + 20] === 0xAC &&
|
|
84
|
-
initData[offset + 21] === 0xE3 &&
|
|
85
|
-
initData[offset + 22] === 0x3C &&
|
|
86
|
-
initData[offset + 23] === 0x1E &&
|
|
87
|
-
initData[offset + 24] === 0x52 &&
|
|
88
|
-
initData[offset + 25] === 0xE2 &&
|
|
89
|
-
initData[offset + 26] === 0xFB &&
|
|
90
|
-
initData[offset + 27] === 0x4B
|
|
91
|
-
) {
|
|
92
|
-
const cencOffsets = getNextBoxOffsets(currentPSSH);
|
|
93
|
-
const version = cencOffsets === null ? undefined :
|
|
94
|
-
currentPSSH[cencOffsets[1]];
|
|
95
|
-
log.info("Compat: CENC PSSH found with version", version);
|
|
96
|
-
if (version === undefined) {
|
|
97
|
-
log.warn("Compat: could not read version of CENC PSSH");
|
|
98
|
-
} else if (foundCencV1 === (version === 1)) {
|
|
99
|
-
// Either `concatenatedCencs` only contains v1 or does not contain any
|
|
100
|
-
concatenatedCencs = concat(concatenatedCencs, currentPSSH);
|
|
101
|
-
} else if (version === 1) {
|
|
102
|
-
log.warn("Compat: cenc version 1 encountered, " +
|
|
103
|
-
"removing every other cenc pssh box.");
|
|
104
|
-
concatenatedCencs = currentPSSH;
|
|
105
|
-
foundCencV1 = true;
|
|
106
|
-
} else {
|
|
107
|
-
log.warn("Compat: filtering out cenc pssh box with wrong version",
|
|
108
|
-
version);
|
|
109
|
-
}
|
|
110
|
-
} else {
|
|
111
|
-
resInitData = concat(resInitData, currentPSSH);
|
|
112
|
-
}
|
|
113
|
-
offset += len;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (offset !== initData.length) {
|
|
117
|
-
log.warn("Compat: unrecognized initialization data. Cannot patch it.");
|
|
118
|
-
throw new Error("Compat: unrecognized initialization data. Cannot patch it.");
|
|
119
|
-
}
|
|
120
|
-
return concat(resInitData, concatenatedCencs);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Generate a request from session.
|
|
125
|
-
* @param {MediaKeySession} session - MediaKeySession on which the request will
|
|
126
|
-
* be done.
|
|
127
|
-
* @param {string} initializationDataType - Initialization data type given e.g.
|
|
128
|
-
* by the "encrypted" event for the corresponding request.
|
|
129
|
-
* @param {Uint8Array} initializationData - Initialization data given e.g. by
|
|
130
|
-
* the "encrypted" event for the corresponding request.
|
|
131
|
-
* @returns {Promise} - Emit when done. Errors if fails.
|
|
132
|
-
*/
|
|
133
|
-
export default function generateKeyRequest(
|
|
134
|
-
session: MediaKeySession|ICustomMediaKeySession,
|
|
135
|
-
initializationDataType : string | undefined,
|
|
136
|
-
initializationData : Uint8Array
|
|
137
|
-
) : Promise<unknown> {
|
|
138
|
-
log.debug("Compat: Calling generateRequest on the MediaKeySession");
|
|
139
|
-
let patchedInit : Uint8Array;
|
|
140
|
-
try {
|
|
141
|
-
patchedInit = patchInitData(initializationData);
|
|
142
|
-
} catch (_e) {
|
|
143
|
-
patchedInit = initializationData;
|
|
144
|
-
}
|
|
145
|
-
const initDataType = initializationDataType ?? "";
|
|
146
|
-
return session.generateRequest(initDataType, patchedInit)
|
|
147
|
-
.catch((error) => {
|
|
148
|
-
if (initDataType !== "" || !(error instanceof TypeError)) {
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// On newer EME versions of the specification, the initialization data
|
|
153
|
-
// type given to generateRequest cannot be an empty string (it returns
|
|
154
|
-
// a rejected promise with a TypeError in that case).
|
|
155
|
-
// Retry with a default "cenc" value for initialization data type if
|
|
156
|
-
// we're in that condition.
|
|
157
|
-
log.warn("Compat: error while calling `generateRequest` with an empty " +
|
|
158
|
-
"initialization data type. Retrying with a default \"cenc\" value.",
|
|
159
|
-
error);
|
|
160
|
-
return session.generateRequest("cenc", patchedInit);
|
|
161
|
-
});
|
|
162
|
-
}
|
|
@@ -1,159 +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 log from "../../log";
|
|
18
|
-
import { getPsshSystemID } from "../../parsers/containers/isobmff";
|
|
19
|
-
import areArraysOfNumbersEqual from "../../utils/are_arrays_of_numbers_equal";
|
|
20
|
-
import { be4toi } from "../../utils/byte_parsing";
|
|
21
|
-
import { PSSH_TO_INTEGER } from "./constants";
|
|
22
|
-
|
|
23
|
-
/** Data recuperated from parsing the payload of an `encrypted` event. */
|
|
24
|
-
export interface IEncryptedEventData {
|
|
25
|
-
/**
|
|
26
|
-
* Initialization data type.
|
|
27
|
-
* String describing the format of the initialization data sent through this
|
|
28
|
-
* event.
|
|
29
|
-
* https://www.w3.org/TR/eme-initdata-registry/
|
|
30
|
-
*
|
|
31
|
-
* `undefined` if not known.
|
|
32
|
-
*/
|
|
33
|
-
type : string | undefined;
|
|
34
|
-
/** Every initialization data for that type. */
|
|
35
|
-
values: Array<{
|
|
36
|
-
/**
|
|
37
|
-
* Hex encoded system id, which identifies the key system.
|
|
38
|
-
* https://dashif.org/identifiers/content_protection/
|
|
39
|
-
*
|
|
40
|
-
* If `undefined`, we don't know the system id for that initialization data.
|
|
41
|
-
* In that case, the initialization data might even be a concatenation of
|
|
42
|
-
* the initialization data from multiple system ids.
|
|
43
|
-
*/
|
|
44
|
-
systemId : string | undefined;
|
|
45
|
-
/**
|
|
46
|
-
* The initialization data itself for that type and systemId.
|
|
47
|
-
* For example, with ISOBMFF "cenc" initialization data, this will be the
|
|
48
|
-
* whole PSSH box.
|
|
49
|
-
*/
|
|
50
|
-
data: Uint8Array;
|
|
51
|
-
}>;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Take in input initialization data from an encrypted event and generate the
|
|
56
|
-
* corresponding array of initialization data values from it.
|
|
57
|
-
*
|
|
58
|
-
* At the moment, this function only handles initialization data which have the
|
|
59
|
-
* "cenc" initialization data type.
|
|
60
|
-
* It will just return a single value with an `undefined` `systemId` for all
|
|
61
|
-
* other types of data.
|
|
62
|
-
* @param {Uint8Array} initData - Raw initialization data
|
|
63
|
-
* @returns {Array.<Object>}
|
|
64
|
-
*/
|
|
65
|
-
function getInitializationDataValues(
|
|
66
|
-
initData : Uint8Array
|
|
67
|
-
) : Array<{ systemId : string | undefined; data : Uint8Array }> {
|
|
68
|
-
const result : Array<{ systemId : string | undefined; data : Uint8Array }> = [];
|
|
69
|
-
let offset = 0;
|
|
70
|
-
|
|
71
|
-
while (offset < initData.length) {
|
|
72
|
-
if (initData.length < offset + 8 ||
|
|
73
|
-
be4toi(initData, offset + 4) !== PSSH_TO_INTEGER
|
|
74
|
-
) {
|
|
75
|
-
log.warn("Compat: Unrecognized initialization data. Use as is.");
|
|
76
|
-
return [ { systemId: undefined,
|
|
77
|
-
data: initData } ];
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const len = be4toi(new Uint8Array(initData), offset);
|
|
81
|
-
if (offset + len > initData.length) {
|
|
82
|
-
log.warn("Compat: Unrecognized initialization data. Use as is.");
|
|
83
|
-
return [ { systemId: undefined,
|
|
84
|
-
data: initData } ];
|
|
85
|
-
}
|
|
86
|
-
const currentPSSH = initData.subarray(offset, offset + len);
|
|
87
|
-
const systemId = getPsshSystemID(currentPSSH, 8);
|
|
88
|
-
const currentItem = { systemId, data: currentPSSH };
|
|
89
|
-
if (isPSSHAlreadyEncountered(result, currentItem)) {
|
|
90
|
-
// As we observed on some browsers (IE and Edge), the initialization data on
|
|
91
|
-
// some segments have sometimes duplicated PSSH when sent through an encrypted
|
|
92
|
-
// event (but not when the corresponding segment has been pushed to the
|
|
93
|
-
// SourceBuffer).
|
|
94
|
-
// We prefer filtering them out, to avoid further issues.
|
|
95
|
-
log.warn("Compat: Duplicated PSSH found in initialization data, removing it.");
|
|
96
|
-
} else {
|
|
97
|
-
result.push(currentItem);
|
|
98
|
-
}
|
|
99
|
-
offset += len;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (offset !== initData.length) {
|
|
103
|
-
log.warn("Compat: Unrecognized initialization data. Use as is.");
|
|
104
|
-
return [ { systemId: undefined,
|
|
105
|
-
data: initData } ];
|
|
106
|
-
}
|
|
107
|
-
return result;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Returns `true` if the given PSSH has already been stored in the
|
|
112
|
-
* `encounteredPSSHs` cache given.
|
|
113
|
-
* Returns `false` otherwise.
|
|
114
|
-
* @param {Array.<Object>} encounteredPSSHs
|
|
115
|
-
* @param {Uint8Array} pssh
|
|
116
|
-
* @returns {boolean}
|
|
117
|
-
*/
|
|
118
|
-
function isPSSHAlreadyEncountered(
|
|
119
|
-
encounteredPSSHs : Array<{ systemId : string | undefined; data : Uint8Array }>,
|
|
120
|
-
pssh : { systemId : string | undefined; data : Uint8Array }
|
|
121
|
-
) : boolean {
|
|
122
|
-
for (let i = 0; i < encounteredPSSHs.length; i++) {
|
|
123
|
-
const item = encounteredPSSHs[i];
|
|
124
|
-
if (pssh.systemId === undefined ||
|
|
125
|
-
item.systemId === undefined ||
|
|
126
|
-
pssh.systemId === item.systemId)
|
|
127
|
-
{
|
|
128
|
-
if (areArraysOfNumbersEqual(pssh.data, item.data)) {
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Take out the two things we need on an encryptedEvent:
|
|
138
|
-
* - the initialization Data
|
|
139
|
-
* - the initialization Data type
|
|
140
|
-
*
|
|
141
|
-
* @param {MediaEncryptedEvent} encryptedEvent - Payload received with an
|
|
142
|
-
* "encrypted" event.
|
|
143
|
-
* @returns {Object} - Initialization data and Initialization data type.
|
|
144
|
-
* @throws {EncryptedMediaError} - Throws if no initialization data is
|
|
145
|
-
* encountered in the given event.
|
|
146
|
-
*/
|
|
147
|
-
export default function getInitData(
|
|
148
|
-
encryptedEvent : MediaEncryptedEvent
|
|
149
|
-
) : IEncryptedEventData | null {
|
|
150
|
-
const { initData, initDataType } = encryptedEvent;
|
|
151
|
-
if (initData == null) {
|
|
152
|
-
log.warn("Compat: No init data found on media encrypted event.");
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
const initDataBytes = new Uint8Array(initData);
|
|
157
|
-
const values = getInitializationDataValues(initDataBytes);
|
|
158
|
-
return { type: initDataType, values };
|
|
159
|
-
}
|
|
@@ -1,37 +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 { guidToUuid } from "../../utils/string_parsing";
|
|
18
|
-
import {
|
|
19
|
-
isEdgeChromium,
|
|
20
|
-
isIEOrEdge,
|
|
21
|
-
} from "../browser_detection";
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Get KID from MediaKeySession keyStatus, and convert it in usual big-endian kid
|
|
25
|
-
* if necessary. On EDGE, Microsoft Playready KID are presented into little-endian GUID.
|
|
26
|
-
* @param {String} keySystem
|
|
27
|
-
* @param {Uint8Array} baseKeyId
|
|
28
|
-
* @returns {Uint8Array}
|
|
29
|
-
*/
|
|
30
|
-
export default function getUUIDKIDFromKeyStatusKID(keySystem: string,
|
|
31
|
-
baseKeyId: Uint8Array): Uint8Array {
|
|
32
|
-
if (keySystem.indexOf("playready") !== -1 &&
|
|
33
|
-
(isIEOrEdge || isEdgeChromium)) {
|
|
34
|
-
return guidToUuid(baseKeyId);
|
|
35
|
-
}
|
|
36
|
-
return baseKeyId;
|
|
37
|
-
}
|