rx-player 4.0.0-beta.2 → 4.0.0-beta.3
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/.eslintrc.js +9 -0
- package/CHANGELOG.md +173 -63
- package/CONTRIBUTING.md +27 -13
- package/FILES.md +0 -4
- package/README.md +0 -25
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/add_class_name.js +6 -3
- package/dist/_esm5.processed/compat/add_text_track.js +11 -8
- package/dist/_esm5.processed/compat/browser_compatibility_types.d.ts +0 -1
- package/dist/_esm5.processed/compat/browser_compatibility_types.js +16 -11
- package/dist/_esm5.processed/compat/browser_detection.js +49 -33
- package/dist/_esm5.processed/compat/browser_version.js +11 -8
- package/dist/_esm5.processed/compat/can_patch_isobmff.js +6 -3
- package/dist/_esm5.processed/compat/can_rely_on_video_visibility_and_size.js +9 -6
- package/dist/_esm5.processed/compat/can_reuse_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/change_source_buffer_type.js +6 -3
- package/dist/_esm5.processed/compat/clear_element_src.js +12 -9
- package/dist/_esm5.processed/compat/eme/close_session.js +45 -106
- package/dist/_esm5.processed/compat/eme/constants.js +6 -3
- package/dist/_esm5.processed/compat/eme/custom_key_system_access.js +18 -22
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +81 -101
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +6 -27
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -159
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +31 -26
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +14 -14
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +75 -89
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.d.ts +1 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/types.js +2 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.d.ts +2 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +97 -119
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +14 -16
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.d.ts +78 -0
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +198 -0
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +36 -31
- package/dist/_esm5.processed/compat/eme/get_init_data.js +28 -25
- package/dist/_esm5.processed/compat/eme/get_uuid_kid_from_keystatus_kid.js +8 -5
- package/dist/_esm5.processed/compat/eme/get_webkit_fairplay_initdata.js +17 -14
- package/dist/_esm5.processed/compat/eme/index.d.ts +5 -3
- package/dist/_esm5.processed/compat/eme/index.js +13 -7
- package/dist/_esm5.processed/compat/eme/load_session.js +26 -69
- package/dist/_esm5.processed/compat/enable_audio_track.js +7 -4
- package/dist/_esm5.processed/compat/event_listeners.d.ts +13 -5
- package/dist/_esm5.processed/compat/event_listeners.js +132 -108
- package/dist/_esm5.processed/compat/get_start_date.js +7 -4
- package/dist/_esm5.processed/compat/global_scope.d.ts +9 -0
- package/dist/_esm5.processed/compat/global_scope.js +15 -0
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
- package/dist/_esm5.processed/compat/index.d.ts +2 -3
- package/dist/_esm5.processed/compat/index.js +47 -25
- package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.d.ts +7 -0
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +12 -0
- package/dist/_esm5.processed/compat/is_node.d.ts +1 -0
- package/dist/_esm5.processed/compat/is_node.js +6 -2
- package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
- package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -2
- package/dist/_esm5.processed/compat/is_worker.d.ts +5 -0
- package/dist/_esm5.processed/compat/is_worker.js +7 -0
- package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -6
- package/dist/_esm5.processed/compat/on_height_width_change.js +25 -27
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -16
- package/dist/_esm5.processed/compat/remove_cue.js +12 -9
- package/dist/_esm5.processed/compat/should_favour_custom_safari_EME.js +7 -4
- package/dist/_esm5.processed/compat/should_reload_media_source_on_decipherability_update.js +4 -1
- package/dist/_esm5.processed/compat/should_renew_media_key_system_access.js +6 -3
- package/dist/_esm5.processed/compat/should_unset_media_keys.js +6 -3
- package/dist/_esm5.processed/compat/should_validate_metadata.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_data_before_loaded.js +6 -3
- package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.d.ts +13 -0
- package/dist/_esm5.processed/compat/should_wait_for_have_enough_data.js +19 -0
- package/dist/_esm5.processed/config.js +15 -14
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +136 -104
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.d.ts +19 -3
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +66 -46
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -43
- package/dist/_esm5.processed/core/adaptive/index.js +4 -2
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -73
- package/dist/_esm5.processed/core/adaptive/utils/bandwidth_estimator.js +24 -23
- package/dist/_esm5.processed/core/adaptive/utils/ewma.js +13 -12
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_bitrate.js +9 -6
- package/dist/_esm5.processed/core/adaptive/utils/filter_by_resolution.js +18 -19
- package/dist/_esm5.processed/core/adaptive/utils/get_buffer_levels.js +10 -7
- package/dist/_esm5.processed/core/adaptive/utils/last_estimate_storage.js +8 -7
- package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.d.ts +13 -3
- package/dist/_esm5.processed/core/adaptive/utils/pending_requests_store.js +26 -23
- package/dist/_esm5.processed/core/adaptive/utils/representation_score_calculator.js +25 -23
- package/dist/_esm5.processed/core/adaptive/utils/select_optimal_representation.js +6 -3
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +41 -40
- package/dist/_esm5.processed/core/api/debug/buffer_size_graph.js +31 -29
- package/dist/_esm5.processed/core/api/debug/constants.js +4 -1
- package/dist/_esm5.processed/core/api/debug/index.js +4 -2
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +64 -72
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_content.js +49 -46
- package/dist/_esm5.processed/core/api/debug/modules/segment_buffer_size.js +15 -12
- package/dist/_esm5.processed/core/api/debug/render.js +16 -13
- package/dist/_esm5.processed/core/api/debug/utils.js +18 -13
- package/dist/_esm5.processed/core/api/index.js +7 -4
- package/dist/_esm5.processed/core/api/option_utils.d.ts +1 -1
- package/dist/_esm5.processed/core/api/option_utils.js +86 -59
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +8 -2
- package/dist/_esm5.processed/core/api/playback_observer.js +135 -123
- package/dist/_esm5.processed/core/api/public_api.d.ts +6 -0
- package/dist/_esm5.processed/core/api/public_api.js +614 -676
- package/dist/_esm5.processed/core/api/track_management/index.js +19 -3
- package/dist/_esm5.processed/core/api/track_management/media_element_tracks_store.js +233 -248
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.d.ts +2 -2
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +47 -58
- package/dist/_esm5.processed/core/api/track_management/tracks_store.d.ts +50 -29
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +325 -351
- package/dist/_esm5.processed/core/api/utils.js +32 -24
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.d.ts +3 -3
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +167 -190
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.d.ts +8 -2
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +44 -72
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
- package/dist/_esm5.processed/core/decrypt/content_decryptor.d.ts +9 -67
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +400 -542
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
- package/dist/_esm5.processed/core/decrypt/create_session.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -60
- package/dist/_esm5.processed/core/decrypt/find_key_system.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +104 -162
- package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
- package/dist/_esm5.processed/core/decrypt/get_media_keys.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
- package/dist/_esm5.processed/core/decrypt/index.d.ts +2 -2
- package/dist/_esm5.processed/core/decrypt/index.js +26 -7
- package/dist/_esm5.processed/core/decrypt/init_media_keys.js +17 -59
- package/dist/_esm5.processed/core/decrypt/session_events_listener.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/session_events_listener.js +84 -155
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
- package/dist/_esm5.processed/core/decrypt/types.d.ts +61 -0
- package/dist/_esm5.processed/core/decrypt/types.js +43 -1
- package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/check_key_statuses.js +40 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_loaded_sessions.js +17 -61
- package/dist/_esm5.processed/core/decrypt/utils/clean_old_stored_persistent_info.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/get_drm_system_id.js +8 -5
- package/dist/_esm5.processed/core/decrypt/utils/init_data_values_container.js +23 -23
- package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/is_session_usable.js +15 -12
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.d.ts +0 -13
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -38
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -26
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.d.ts +2 -1
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -103
- package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
- package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.d.ts +1 -1
- package/dist/_esm5.processed/core/decrypt/utils/server_certificate_store.js +18 -16
- package/dist/_esm5.processed/core/fetchers/cdn_prioritizer.js +37 -56
- package/dist/_esm5.processed/core/fetchers/index.js +7 -3
- package/dist/_esm5.processed/core/fetchers/manifest/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +233 -312
- package/dist/_esm5.processed/core/fetchers/segment/index.js +4 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +12 -9
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +218 -233
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +20 -19
- package/dist/_esm5.processed/core/fetchers/segment/task_prioritizer.js +73 -74
- package/dist/_esm5.processed/core/fetchers/utils/error_selector.js +8 -5
- package/dist/_esm5.processed/core/fetchers/utils/schedule_request.js +210 -260
- package/dist/_esm5.processed/core/init/directfile_content_initializer.d.ts +60 -1
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +122 -105
- package/dist/_esm5.processed/core/init/index.d.ts +1 -4
- package/dist/_esm5.processed/core/init/index.js +5 -3
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +269 -307
- package/dist/_esm5.processed/core/init/types.d.ts +3 -17
- package/dist/_esm5.processed/core/init/types.js +7 -24
- package/dist/_esm5.processed/core/init/utils/content_time_boundaries_observer.js +109 -135
- package/dist/_esm5.processed/core/init/utils/create_media_source.js +35 -27
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.d.ts +9 -4
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +22 -14
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -25
- package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -37
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +15 -10
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +31 -28
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.d.ts +3 -3
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +48 -53
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +61 -58
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +3 -3
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +141 -160
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/are_same_stream_events.js +3 -1
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/index.js +4 -2
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.js +28 -14
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.d.ts +31 -9
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +103 -79
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/types.js +2 -1
- package/dist/_esm5.processed/core/init/utils/throw_on_media_error.js +16 -13
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +75 -126
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +131 -140
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/index.js +20 -3
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +109 -128
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +48 -47
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/update_proportional_elements.js +18 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/utils.js +22 -15
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/index.js +4 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +65 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/parsers.js +11 -8
- package/dist/_esm5.processed/core/segment_buffers/implementations/types.js +19 -17
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +23 -22
- package/dist/_esm5.processed/core/segment_buffers/index.js +13 -6
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +25 -22
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +152 -150
- package/dist/_esm5.processed/core/segment_buffers/inventory/types.js +2 -1
- package/dist/_esm5.processed/core/segment_buffers/inventory/utils.js +9 -4
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +82 -89
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +130 -171
- package/dist/_esm5.processed/core/stream/adaptation/get_representations_switch_strategy.js +31 -28
- package/dist/_esm5.processed/core/stream/adaptation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/adaptation/types.d.ts +14 -8
- package/dist/_esm5.processed/core/stream/adaptation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -21
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +15 -29
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +193 -235
- package/dist/_esm5.processed/core/stream/period/index.js +19 -3
- package/dist/_esm5.processed/core/stream/period/period_stream.js +204 -228
- package/dist/_esm5.processed/core/stream/period/types.d.ts +3 -3
- package/dist/_esm5.processed/core/stream/period/types.js +2 -1
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +18 -4
- package/dist/_esm5.processed/core/stream/period/utils/get_adaptation_switch_strategy.js +34 -33
- package/dist/_esm5.processed/core/stream/representation/index.js +19 -3
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +81 -68
- package/dist/_esm5.processed/core/stream/representation/types.d.ts +3 -4
- package/dist/_esm5.processed/core/stream/representation/types.js +2 -1
- package/dist/_esm5.processed/core/stream/representation/utils/append_segment_to_buffer.js +33 -84
- package/dist/_esm5.processed/core/stream/representation/utils/check_for_discontinuity.js +32 -29
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/downloading_queue.js +126 -145
- package/dist/_esm5.processed/core/stream/representation/utils/force_garbage_collection.js +32 -88
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +61 -47
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +71 -69
- package/dist/_esm5.processed/core/stream/representation/utils/get_segment_priority.js +8 -5
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/utils/push_init_segment.js +22 -63
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.d.ts +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/push_media_segment.js +49 -86
- package/dist/_esm5.processed/default_config.js +4 -2
- package/dist/_esm5.processed/errors/assertion_error.js +10 -26
- package/dist/_esm5.processed/errors/custom_loader_error.js +12 -28
- package/dist/_esm5.processed/errors/encrypted_media_error.js +16 -32
- package/dist/_esm5.processed/errors/error_codes.js +9 -4
- package/dist/_esm5.processed/errors/error_message.d.ts +1 -2
- package/dist/_esm5.processed/errors/error_message.js +5 -3
- package/dist/_esm5.processed/errors/format_error.js +9 -7
- package/dist/_esm5.processed/errors/index.js +25 -11
- package/dist/_esm5.processed/errors/is_known_error.js +14 -11
- package/dist/_esm5.processed/errors/media_error.d.ts +2 -2
- package/dist/_esm5.processed/errors/media_error.js +34 -47
- package/dist/_esm5.processed/errors/network_error.js +21 -37
- package/dist/_esm5.processed/errors/other_error.js +15 -31
- package/dist/_esm5.processed/errors/request_error.js +27 -29
- package/dist/_esm5.processed/experimental/features/dash_wasm.js +15 -9
- package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
- package/dist/_esm5.processed/experimental/features/index.d.ts +0 -1
- package/dist/_esm5.processed/experimental/features/index.js +9 -4
- package/dist/_esm5.processed/experimental/features/local.js +10 -4
- package/dist/_esm5.processed/experimental/features/metaplaylist.js +10 -4
- package/dist/_esm5.processed/experimental/index.js +5 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/dash.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/features/metaplaylist.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/index.js +7 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_and_push_segment.js +22 -16
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +22 -19
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/remove_buffer_around_time.js +6 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/types.js +2 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +125 -186
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader_error.js +11 -27
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +76 -119
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +24 -15
- package/dist/_esm5.processed/experimental/tools/index.js +11 -5
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/index.js +39 -44
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +34 -36
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/capabilities.js +21 -18
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/index.js +4 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/log.js +5 -3
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.d.ts +1 -1
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.js +21 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/decodingInfo.js +13 -10
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +16 -13
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/index.js +16 -14
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/format.js +14 -11
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.js +19 -15
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -7
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/types.js +5 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/utils.js +25 -22
- package/dist/_esm5.processed/experimental/tools/parseBIFThumbnails.js +7 -4
- package/dist/_esm5.processed/features/add_features.js +11 -8
- package/dist/_esm5.processed/features/features_object.js +6 -3
- package/dist/_esm5.processed/features/index.js +7 -4
- package/dist/_esm5.processed/features/list/dash.js +12 -6
- package/dist/_esm5.processed/features/list/directfile.js +9 -5
- package/dist/_esm5.processed/features/list/eme.js +7 -4
- package/dist/_esm5.processed/features/list/html_sami_parser.js +9 -4
- package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -4
- package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -4
- package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -4
- package/dist/_esm5.processed/features/list/index.js +31 -14
- package/dist/_esm5.processed/features/list/native_sami_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_srt_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_text_buffer.js +8 -4
- package/dist/_esm5.processed/features/list/native_ttml_parser.js +10 -4
- package/dist/_esm5.processed/features/list/native_vtt_parser.js +10 -4
- package/dist/_esm5.processed/features/list/smooth.js +10 -4
- package/dist/_esm5.processed/features/types.d.ts +84 -7
- package/dist/_esm5.processed/features/types.js +2 -1
- package/dist/_esm5.processed/index.d.ts +0 -4
- package/dist/_esm5.processed/index.js +24 -8
- package/dist/_esm5.processed/log.js +5 -3
- package/dist/_esm5.processed/manifest/adaptation.js +52 -55
- package/dist/_esm5.processed/manifest/index.js +32 -13
- package/dist/_esm5.processed/manifest/manifest.d.ts +4 -7
- package/dist/_esm5.processed/manifest/manifest.js +117 -135
- package/dist/_esm5.processed/manifest/period.d.ts +2 -7
- package/dist/_esm5.processed/manifest/period.js +39 -46
- package/dist/_esm5.processed/manifest/representation.d.ts +12 -0
- package/dist/_esm5.processed/manifest/representation.js +81 -63
- package/dist/_esm5.processed/manifest/representation_index/index.js +5 -2
- package/dist/_esm5.processed/manifest/representation_index/static.js +43 -42
- package/dist/_esm5.processed/manifest/representation_index/types.js +2 -1
- package/dist/_esm5.processed/manifest/types.js +5 -2
- package/dist/_esm5.processed/manifest/update_period_in_place.js +38 -48
- package/dist/_esm5.processed/manifest/update_periods.js +59 -69
- package/dist/_esm5.processed/manifest/utils.js +14 -9
- package/dist/_esm5.processed/minimal.d.ts +1 -17
- package/dist/_esm5.processed/minimal.js +9 -39
- package/dist/_esm5.processed/parsers/containers/isobmff/constants.js +4 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/create_box.js +14 -10
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/index.js +5 -1
- package/dist/_esm5.processed/parsers/containers/isobmff/drm/playready.js +15 -11
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +48 -40
- package/dist/_esm5.processed/parsers/containers/isobmff/index.js +27 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +20 -14
- package/dist/_esm5.processed/parsers/containers/isobmff/take_pssh_out.js +25 -20
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +130 -112
- package/dist/_esm5.processed/parsers/containers/matroska/index.js +6 -1
- package/dist/_esm5.processed/parsers/containers/matroska/utils.js +67 -63
- package/dist/_esm5.processed/parsers/images/bif.js +40 -29
- package/dist/_esm5.processed/parsers/manifest/dash/common/attach_trickmode_track.js +10 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_clock_offset.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_hdr_information.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +7 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_minimum_and_maximum_positions.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_periods_time_infos.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/index.js +10 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +73 -67
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +9 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +32 -25
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/index.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +81 -70
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +130 -123
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_elements.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/construct_timeline_from_previous_timeline.js +35 -32
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +14 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/find_first_common_start_time.js +30 -22
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +14 -11
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +5 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +131 -128
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +16 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/utils.js +7 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/infer_adaptation_type.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +8 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/manifest_bounds_calculator.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -108
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_availability_start_time.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +86 -84
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +4 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +101 -84
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +39 -37
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +64 -65
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/index.js +8 -1
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +66 -62
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentComponent.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/ContentProtection.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/EventStream.js +22 -19
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Initialization.js +11 -8
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/MPD.js +38 -34
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Period.js +34 -30
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +50 -38
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentBase.js +24 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentList.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +21 -18
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTimeline.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentURL.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +60 -64
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +33 -27
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +192 -237
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +67 -62
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +8 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentComponent.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/ContentProtection.js +17 -13
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +29 -24
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +38 -33
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +37 -32
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +50 -35
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Scheme.js +9 -5
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentBase.js +16 -12
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentTemplate.js +20 -16
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentUrl.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +11 -7
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/index.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +10 -6
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/parsers_stack.js +22 -20
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/utils.js +6 -2
- package/dist/_esm5.processed/parsers/manifest/index.js +17 -1
- package/dist/_esm5.processed/parsers/manifest/local/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +31 -26
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
- package/dist/_esm5.processed/parsers/manifest/local/types.d.ts +2 -0
- package/dist/_esm5.processed/parsers/manifest/local/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/metaplaylist_parser.js +76 -71
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -175
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +13 -8
- package/dist/_esm5.processed/parsers/manifest/smooth/index.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_C_nodes.js +17 -14
- package/dist/_esm5.processed/parsers/manifest/smooth/parse_protection_node.js +17 -15
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +102 -97
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.d.ts +3 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -47
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/add_segment_infos.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/parseBoolean.js +4 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/reduceChildren.js +6 -3
- package/dist/_esm5.processed/parsers/manifest/smooth/utils/tokens.js +5 -1
- package/dist/_esm5.processed/parsers/manifest/types.d.ts +6 -4
- package/dist/_esm5.processed/parsers/manifest/types.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +27 -24
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +10 -7
- package/dist/_esm5.processed/parsers/manifest/utils/get_first_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_last_time_from_adaptation.js +8 -5
- package/dist/_esm5.processed/parsers/manifest/utils/get_maximum_positions.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/get_minimum_position.js +15 -12
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +31 -22
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +9 -6
- package/dist/_esm5.processed/parsers/manifest/utils/update_segment_timeline.js +38 -45
- package/dist/_esm5.processed/parsers/texttracks/index.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +45 -43
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +41 -39
- package/dist/_esm5.processed/parsers/texttracks/srt/find_end_of_cue_block.js +7 -4
- package/dist/_esm5.processed/parsers/texttracks/srt/get_cue_blocks.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/srt/html.js +32 -29
- package/dist/_esm5.processed/parsers/texttracks/srt/native.js +16 -13
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_cue.js +21 -18
- package/dist/_esm5.processed/parsers/texttracks/srt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_parameters.js +37 -30
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_styling.js +48 -48
- package/dist/_esm5.processed/parsers/texttracks/ttml/get_time_delimiters.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_default_ttml_paragraph_style.js +7 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +15 -12
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_padding.js +25 -22
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/create_element.js +117 -124
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_cue.js +12 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/parse_ttml_to_div.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/ttml_color_to_css_color.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_cue.js +38 -35
- package/dist/_esm5.processed/parsers/texttracks/ttml/native/parse_ttml_to_vtt.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/parse_ttml.js +58 -58
- package/dist/_esm5.processed/parsers/texttracks/ttml/regexps.js +27 -13
- package/dist/_esm5.processed/parsers/texttracks/ttml/resolve_styles_inheritance.js +18 -18
- package/dist/_esm5.processed/parsers/texttracks/ttml/time_parsing.js +28 -26
- package/dist/_esm5.processed/parsers/texttracks/ttml/xml_utils.js +37 -25
- package/dist/_esm5.processed/parsers/texttracks/types.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_cue_blocks.js +12 -9
- package/dist/_esm5.processed/parsers/texttracks/webvtt/get_style_blocks.js +14 -11
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/convert_payload_to_html.js +11 -8
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +60 -60
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_styled_element.js +30 -27
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_style_block.js +23 -26
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/parse_webvtt_to_div.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/to_html.js +23 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/index.js +4 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/parse_vtt_to_cues.js +19 -16
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/set_settings_on_cue.js +20 -17
- package/dist/_esm5.processed/parsers/texttracks/webvtt/native/to_native_cue.js +8 -5
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_cue_block.js +26 -18
- package/dist/_esm5.processed/parsers/texttracks/webvtt/parse_timestamp.js +10 -7
- package/dist/_esm5.processed/parsers/texttracks/webvtt/utils.js +15 -7
- package/dist/_esm5.processed/public_types.d.ts +6 -8
- package/dist/_esm5.processed/public_types.js +2 -1
- package/dist/_esm5.processed/tools/TextTrackRenderer/index.js +13 -6
- package/dist/_esm5.processed/tools/TextTrackRenderer/text_track_renderer.js +26 -24
- package/dist/_esm5.processed/tools/index.js +6 -4
- package/dist/_esm5.processed/tools/string_utils.js +10 -1
- package/dist/_esm5.processed/transports/dash/add_segment_integrity_checks_to_loader.js +16 -24
- package/dist/_esm5.processed/transports/dash/construct_segment_url.js +6 -3
- package/dist/_esm5.processed/transports/dash/extract_complete_chunks.js +17 -14
- package/dist/_esm5.processed/transports/dash/get_events_out_of_emsgs.js +19 -16
- package/dist/_esm5.processed/transports/dash/index.js +4 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +47 -27
- package/dist/_esm5.processed/transports/dash/low_latency_segment_loader.js +23 -16
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +68 -59
- package/dist/_esm5.processed/transports/dash/pipelines.js +20 -17
- package/dist/_esm5.processed/transports/dash/segment_loader.js +49 -39
- package/dist/_esm5.processed/transports/dash/segment_parser.js +58 -39
- package/dist/_esm5.processed/transports/dash/text_loader.js +36 -30
- package/dist/_esm5.processed/transports/dash/text_parser.js +39 -29
- package/dist/_esm5.processed/transports/index.js +17 -1
- package/dist/_esm5.processed/transports/local/index.js +4 -2
- package/dist/_esm5.processed/transports/local/pipelines.js +26 -22
- package/dist/_esm5.processed/transports/local/segment_loader.js +26 -23
- package/dist/_esm5.processed/transports/local/segment_parser.js +36 -25
- package/dist/_esm5.processed/transports/local/text_parser.js +42 -27
- package/dist/_esm5.processed/transports/metaplaylist/index.js +4 -2
- package/dist/_esm5.processed/transports/metaplaylist/manifest_loader.js +11 -7
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +92 -96
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +26 -20
- package/dist/_esm5.processed/transports/smooth/index.js +4 -2
- package/dist/_esm5.processed/transports/smooth/is_mp4_embedded_track.js +4 -1
- package/dist/_esm5.processed/transports/smooth/isobmff/create_audio_init_segment.js +22 -19
- package/dist/_esm5.processed/transports/smooth/isobmff/create_boxes.js +92 -67
- package/dist/_esm5.processed/transports/smooth/isobmff/create_init_segment.js +29 -26
- package/dist/_esm5.processed/transports/smooth/isobmff/create_traf_box.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/create_video_init_segment.js +23 -20
- package/dist/_esm5.processed/transports/smooth/isobmff/get_aaces_header.js +10 -7
- package/dist/_esm5.processed/transports/smooth/isobmff/index.js +13 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfrf.js +19 -16
- package/dist/_esm5.processed/transports/smooth/isobmff/parse_tfxd.js +9 -6
- package/dist/_esm5.processed/transports/smooth/isobmff/patch_segment.js +41 -38
- package/dist/_esm5.processed/transports/smooth/pipelines.js +107 -96
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +149 -153
- package/dist/_esm5.processed/transports/smooth/utils.js +7 -3
- package/dist/_esm5.processed/transports/types.d.ts +17 -8
- package/dist/_esm5.processed/transports/types.js +2 -1
- package/dist/_esm5.processed/transports/utils/byte_range.js +6 -4
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +23 -17
- package/dist/_esm5.processed/transports/utils/check_isobmff_integrity.js +14 -11
- package/dist/_esm5.processed/transports/utils/find_complete_box.js +11 -8
- package/dist/_esm5.processed/transports/utils/generate_manifest_loader.js +22 -14
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.d.ts +0 -3
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +13 -13
- package/dist/_esm5.processed/transports/utils/infer_segment_container.js +4 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +40 -26
- package/dist/_esm5.processed/utils/are_arrays_of_numbers_equal.js +8 -2
- package/dist/_esm5.processed/utils/are_codecs_compatible.js +11 -9
- package/dist/_esm5.processed/utils/array_find.js +7 -4
- package/dist/_esm5.processed/utils/array_find_index.js +6 -3
- package/dist/_esm5.processed/utils/array_includes.js +12 -11
- package/dist/_esm5.processed/utils/assert.js +15 -10
- package/dist/_esm5.processed/utils/assert_unreachable.js +6 -3
- package/dist/_esm5.processed/utils/base64.js +23 -18
- package/dist/_esm5.processed/utils/byte_parsing.js +30 -17
- package/dist/_esm5.processed/utils/cancellable_sleep.js +8 -5
- package/dist/_esm5.processed/utils/create_cancellable_promise.js +7 -4
- package/dist/_esm5.processed/utils/deep_merge.d.ts +2 -5
- package/dist/_esm5.processed/utils/deep_merge.js +10 -21
- package/dist/_esm5.processed/utils/event_emitter.js +24 -24
- package/dist/_esm5.processed/utils/flat_map.js +7 -4
- package/dist/_esm5.processed/utils/get_fuzzed_delay.js +6 -3
- package/dist/_esm5.processed/utils/hash_buffer.js +7 -4
- package/dist/_esm5.processed/utils/id_generator.js +6 -3
- package/dist/_esm5.processed/utils/initialization_segment_cache.js +11 -12
- package/dist/_esm5.processed/utils/is_non_empty_string.js +4 -1
- package/dist/_esm5.processed/utils/is_null_or_undefined.js +4 -1
- package/dist/_esm5.processed/utils/languages/ISO_639-1_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/ISO_639-2_to_ISO_639-3.js +4 -2
- package/dist/_esm5.processed/utils/languages/index.js +7 -3
- package/dist/_esm5.processed/utils/languages/normalize.js +26 -20
- package/dist/_esm5.processed/utils/logger.js +24 -23
- package/dist/_esm5.processed/utils/monotonic_timestamp.d.ts +9 -0
- package/dist/_esm5.processed/utils/monotonic_timestamp.js +15 -0
- package/dist/_esm5.processed/utils/noop.js +4 -1
- package/dist/_esm5.processed/utils/object_assign.js +8 -10
- package/dist/_esm5.processed/utils/object_values.js +6 -3
- package/dist/_esm5.processed/utils/ranges.d.ts +50 -8
- package/dist/_esm5.processed/utils/ranges.js +163 -64
- package/dist/_esm5.processed/utils/reference.d.ts +78 -37
- package/dist/_esm5.processed/utils/reference.js +235 -155
- package/dist/_esm5.processed/utils/request/fetch.d.ts +4 -4
- package/dist/_esm5.processed/utils/request/fetch.js +79 -107
- package/dist/_esm5.processed/utils/request/index.js +9 -4
- package/dist/_esm5.processed/utils/request/xhr.js +49 -36
- package/dist/_esm5.processed/utils/resolve_url.js +18 -18
- package/dist/_esm5.processed/utils/retry_promise_with_backoff.js +34 -81
- package/dist/_esm5.processed/utils/sleep.js +5 -2
- package/dist/_esm5.processed/utils/slice_uint8array.js +3 -1
- package/dist/_esm5.processed/utils/sorted_list.js +37 -40
- package/dist/_esm5.processed/utils/starts_with.js +5 -2
- package/dist/_esm5.processed/utils/string_parsing.js +84 -72
- package/dist/_esm5.processed/utils/take_first_set.js +9 -10
- package/dist/_esm5.processed/utils/task_canceller.js +51 -71
- package/dist/_esm5.processed/utils/warn_once.js +7 -4
- package/dist/_esm5.processed/utils/weak_map_memory.js +12 -11
- package/dist/_esm5.processed/utils/wrapInPromise.d.ts +7 -0
- package/dist/_esm5.processed/utils/wrapInPromise.js +25 -0
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +42885 -44008
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -22
- package/package.json +56 -57
- package/scripts/build/constants.d.ts +1 -23
- package/scripts/build/generate_build.js +1 -1
- package/scripts/check_nodejs_import_compatibility.js +1 -1
- package/scripts/list-npm-scripts.js +146 -38
- package/scripts/update-version +1 -4
- package/sonar-project.properties +1 -1
- package/src/compat/__tests__/browser_compatibility_types.test.ts +51 -72
- package/src/compat/__tests__/is_vtt_cue.test.ts +20 -16
- package/src/compat/__tests__/make_vtt_cue.test.ts +11 -9
- package/src/compat/__tests__/patch_webkit_source_buffer.test.ts +26 -25
- package/src/compat/__tests__/should_favour_custom_safari_EME.test.ts +11 -9
- package/src/compat/__tests__/should_wait_for_have_enough_data.test.ts +36 -0
- package/src/compat/browser_compatibility_types.ts +9 -16
- package/src/compat/browser_detection.ts +11 -8
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +11 -8
- package/src/compat/eme/custom_media_keys/index.ts +8 -184
- package/src/compat/eme/custom_media_keys/moz_media_keys_constructor.ts +26 -22
- package/src/compat/eme/custom_media_keys/ms_media_keys_constructor.ts +13 -15
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +11 -8
- package/src/compat/eme/custom_media_keys/types.ts +1 -1
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +15 -11
- package/src/compat/eme/custom_media_keys/webkit_media_keys_constructor.ts +14 -16
- package/src/compat/eme/eme-api-implementation.ts +319 -0
- package/src/compat/eme/index.ts +8 -6
- package/src/compat/event_listeners.ts +32 -39
- package/src/compat/global_scope.ts +18 -0
- package/src/compat/index.ts +2 -24
- package/src/compat/is_debug_mode_enabled.ts +12 -0
- package/src/compat/is_node.ts +4 -1
- package/src/compat/is_vtt_cue.ts +2 -1
- package/src/compat/is_worker.ts +9 -0
- package/src/compat/make_vtt_cue.ts +3 -2
- package/src/compat/on_height_width_change.ts +4 -9
- package/src/compat/patch_webkit_source_buffer.ts +4 -3
- package/src/compat/should_wait_for_have_enough_data.ts +17 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +245 -102
- package/src/core/adaptive/adaptive_representation_selector.ts +52 -35
- package/src/core/adaptive/buffer_based_chooser.ts +41 -13
- package/src/core/adaptive/guess_based_chooser.ts +4 -3
- package/src/core/adaptive/network_analyzer.ts +8 -6
- package/src/core/adaptive/utils/pending_requests_store.ts +15 -5
- package/src/core/api/debug/buffer_size_graph.ts +3 -1
- package/src/core/api/option_utils.ts +2 -2
- package/src/core/api/playback_observer.ts +16 -9
- package/src/core/api/public_api.ts +47 -31
- package/src/core/api/track_management/track_dispatcher.ts +9 -6
- package/src/core/api/track_management/tracks_store.ts +112 -90
- package/src/core/api/utils.ts +3 -3
- package/src/core/decrypt/__tests__/__global__/get_license.test.ts +3 -3
- package/src/core/decrypt/__tests__/__global__/init_data.test.ts +24 -14
- package/src/core/decrypt/__tests__/__global__/media_key_system_access.test.ts +74 -48
- package/src/core/decrypt/__tests__/__global__/media_keys.test.ts +21 -15
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +16 -13
- package/src/core/decrypt/__tests__/__global__/utils.ts +39 -24
- package/src/core/decrypt/attach_media_keys.ts +33 -8
- package/src/core/decrypt/clear_on_stop.ts +1 -1
- package/src/core/decrypt/content_decryptor.ts +213 -262
- package/src/core/decrypt/create_or_load_session.ts +1 -1
- package/src/core/decrypt/create_session.ts +1 -1
- package/src/core/decrypt/dispose_decryption_resources.ts +19 -4
- package/src/core/decrypt/find_key_system.ts +24 -19
- package/src/core/decrypt/get_media_keys.ts +2 -2
- package/src/core/decrypt/index.ts +1 -6
- package/src/core/decrypt/session_events_listener.ts +3 -4
- package/src/core/decrypt/set_server_certificate.ts +1 -1
- package/src/core/decrypt/types.ts +69 -0
- package/src/core/decrypt/utils/check_key_statuses.ts +1 -1
- package/src/core/decrypt/utils/is_session_usable.ts +1 -1
- package/src/core/decrypt/utils/key_id_comparison.ts +2 -27
- package/src/core/decrypt/utils/key_session_record.ts +3 -5
- package/src/core/decrypt/utils/loaded_sessions_store.ts +2 -2
- package/src/core/decrypt/utils/media_keys_infos_store.ts +4 -1
- package/src/core/decrypt/utils/persistent_sessions_store.ts +2 -5
- package/src/core/decrypt/utils/server_certificate_store.ts +1 -1
- package/src/core/fetchers/cdn_prioritizer.ts +1 -1
- package/src/core/fetchers/manifest/manifest_fetcher.ts +22 -18
- package/src/core/fetchers/segment/segment_fetcher.ts +3 -2
- package/src/core/fetchers/utils/schedule_request.ts +6 -5
- package/src/core/init/directfile_content_initializer.ts +85 -21
- package/src/core/init/index.ts +6 -7
- package/src/core/init/media_source_content_initializer.ts +56 -26
- package/src/core/init/types.ts +2 -16
- package/src/core/init/utils/__tests__/refresh_scheduled_events_list.test.ts +22 -8
- package/src/core/init/utils/create_media_source.ts +4 -1
- package/src/core/init/utils/create_stream_playback_observer.ts +24 -14
- package/src/core/init/utils/end_of_stream.ts +1 -0
- package/src/core/init/utils/get_initial_time.ts +3 -1
- package/src/core/init/utils/get_loaded_reference.ts +6 -3
- package/src/core/init/utils/initial_seek_and_play.ts +7 -7
- package/src/core/init/utils/initialize_content_decryption.ts +32 -39
- package/src/core/init/utils/media_source_duration_updater.ts +13 -9
- package/src/core/init/utils/rebuffering_controller.ts +13 -10
- package/src/core/init/utils/stream_events_emitter/refresh_scheduled_events_list.ts +7 -4
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +113 -73
- package/src/core/segment_buffers/garbage_collector.ts +3 -3
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +17 -17
- package/src/core/segment_buffers/implementations/text/html/text_track_cues_store.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +2 -2
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/inventory/buffered_history.ts +4 -3
- package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -0
- package/src/core/stream/adaptation/adaptation_stream.ts +43 -28
- package/src/core/stream/adaptation/types.ts +15 -9
- package/src/core/stream/index.ts +2 -0
- package/src/core/stream/orchestrator/get_time_ranges_for_content.ts +1 -6
- package/src/core/stream/orchestrator/index.ts +2 -0
- package/src/core/stream/orchestrator/stream_orchestrator.ts +38 -42
- package/src/core/stream/period/period_stream.ts +62 -23
- package/src/core/stream/period/types.ts +5 -3
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +10 -0
- package/src/core/stream/representation/representation_stream.ts +6 -3
- package/src/core/stream/representation/types.ts +5 -5
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +2 -2
- package/src/core/stream/representation/utils/downloading_queue.ts +4 -5
- package/src/core/stream/representation/utils/force_garbage_collection.ts +3 -3
- package/src/core/stream/representation/utils/get_buffer_status.ts +2 -1
- package/src/core/stream/representation/utils/push_init_segment.ts +2 -3
- package/src/core/stream/representation/utils/push_media_segment.ts +2 -2
- package/src/errors/__tests__/encrypted_media_error.test.ts +2 -2
- package/src/errors/__tests__/error_message.test.ts +1 -1
- package/src/errors/__tests__/format_error.test.ts +2 -2
- package/src/errors/__tests__/media_error.test.ts +3 -3
- package/src/errors/__tests__/network_error.test.ts +10 -9
- package/src/errors/__tests__/other_error.test.ts +3 -3
- package/src/errors/__tests__/request_error.test.ts +4 -4
- package/src/errors/custom_loader_error.ts +0 -1
- package/src/errors/encrypted_media_error.ts +4 -2
- package/src/errors/error_message.ts +2 -7
- package/src/errors/media_error.ts +26 -20
- package/src/errors/network_error.ts +1 -1
- package/src/errors/other_error.ts +1 -1
- package/src/errors/request_error.ts +16 -1
- package/src/experimental/features/__tests__/dash_wasm.test.ts +4 -12
- package/src/experimental/features/__tests__/debug_element.test.ts +7 -21
- package/src/experimental/features/__tests__/local.test.ts +14 -23
- package/src/experimental/features/__tests__/metaplaylist.test.ts +14 -21
- package/src/experimental/features/dash_wasm.ts +3 -0
- package/src/experimental/features/index.ts +0 -1
- package/src/experimental/features/local.ts +3 -0
- package/src/experimental/features/metaplaylist.ts +3 -0
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +10 -9
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/HDCPPolicy.test.ts +26 -18
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +24 -23
- package/src/experimental/tools/mediaCapabilitiesProber/api/index.ts +2 -4
- package/src/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.ts +7 -4
- package/src/experimental/tools/mediaCapabilitiesProber/probers/DRMInfos.ts +5 -4
- package/src/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.ts +4 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentTypeWithFeatures/index.ts +4 -3
- package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.ts +3 -2
- package/src/features/features_object.ts +2 -1
- package/src/features/list/__tests__/dash.test.ts +15 -15
- package/src/features/list/__tests__/directfile.test.ts +4 -13
- package/src/features/list/__tests__/eme.test.ts +4 -12
- package/src/features/list/__tests__/html_sami_parser.test.ts +9 -14
- package/src/features/list/__tests__/html_srt_parser.test.ts +5 -10
- package/src/features/list/__tests__/html_text_buffer.test.ts +10 -19
- package/src/features/list/__tests__/html_ttml_parser.test.ts +5 -10
- package/src/features/list/__tests__/html_vtt_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_sami_parser.test.ts +9 -14
- package/src/features/list/__tests__/native_srt_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_text_buffer.test.ts +5 -13
- package/src/features/list/__tests__/native_ttml_parser.test.ts +5 -10
- package/src/features/list/__tests__/native_vtt_parser.test.ts +5 -10
- package/src/features/list/__tests__/smooth.test.ts +10 -10
- package/src/features/list/dash.ts +3 -0
- package/src/features/list/eme.ts +1 -1
- package/src/features/list/html_sami_parser.ts +2 -0
- package/src/features/list/html_srt_parser.ts +2 -0
- package/src/features/list/html_text_buffer.ts +2 -2
- package/src/features/list/html_ttml_parser.ts +2 -0
- package/src/features/list/html_vtt_parser.ts +2 -0
- package/src/features/list/native_sami_parser.ts +3 -0
- package/src/features/list/native_srt_parser.ts +3 -0
- package/src/features/list/native_text_buffer.ts +3 -2
- package/src/features/list/native_ttml_parser.ts +3 -0
- package/src/features/list/native_vtt_parser.ts +3 -0
- package/src/features/list/smooth.ts +3 -0
- package/src/features/types.ts +89 -18
- package/src/index.ts +31 -5
- package/src/manifest/__tests__/manifest.test.ts +134 -75
- package/src/manifest/__tests__/period.test.ts +82 -55
- package/src/manifest/__tests__/update_periods.test.ts +4 -4
- package/src/manifest/manifest.ts +30 -20
- package/src/manifest/period.ts +3 -14
- package/src/manifest/representation.ts +21 -3
- package/src/minimal.ts +4 -18
- package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +2 -1
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +5 -4
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +7 -4
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +11 -5
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +1 -0
- package/src/parsers/manifest/dash/common/parse_mpd.ts +9 -5
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -6
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +2 -2
- package/src/parsers/manifest/dash/common/parse_representations.ts +10 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +7 -0
- package/src/parsers/manifest/dash/node_parser_types.ts +1 -0
- package/src/parsers/manifest/dash/parsers_types.ts +4 -4
- package/src/parsers/manifest/dash/wasm-parser/Cargo.lock +2 -2
- package/src/parsers/manifest/dash/wasm-parser/Cargo.toml +1 -1
- package/src/parsers/manifest/dash/wasm-parser/rs/errors.rs +3 -3
- package/src/parsers/manifest/dash/wasm-parser/rs/events.rs +37 -67
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +7 -7
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +94 -105
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +119 -109
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/s_element.rs +24 -26
- package/src/parsers/manifest/dash/wasm-parser/rs/reader.rs +2 -2
- package/src/parsers/manifest/dash/wasm-parser/rs/reportable.rs +42 -18
- package/src/parsers/manifest/dash/wasm-parser/rs/utils.rs +29 -29
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +2 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +1 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +12 -0
- package/src/parsers/manifest/local/parse_local_manifest.ts +3 -1
- package/src/parsers/manifest/local/types.ts +2 -0
- package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +3 -1
- package/src/parsers/manifest/smooth/create_parser.ts +4 -3
- package/src/parsers/manifest/smooth/representation_index.ts +6 -5
- package/src/parsers/manifest/smooth/shared_smooth_segment_timeline.ts +6 -5
- package/src/parsers/manifest/types.ts +6 -4
- package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +1 -2
- package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.test.ts +2 -1
- package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +9 -7
- package/src/public_types.ts +11 -9
- package/src/transports/dash/manifest_parser.ts +8 -5
- package/src/transports/local/pipelines.ts +4 -3
- package/src/transports/metaplaylist/pipelines.ts +5 -3
- package/src/transports/smooth/pipelines.ts +4 -2
- package/src/transports/smooth/segment_loader.ts +1 -1
- package/src/transports/types.ts +17 -7
- package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +8 -8
- package/src/transports/utils/call_custom_manifest_loader.ts +2 -1
- package/src/transports/utils/get_isobmff_timing_infos.ts +0 -3
- package/src/typings/globals.d.ts +0 -44
- package/src/utils/__tests__/base64.test.ts +4 -2
- package/src/utils/__tests__/id_generator.test.ts +7 -4
- package/src/utils/__tests__/ranges.test.ts +354 -47
- package/src/utils/are_arrays_of_numbers_equal.ts +5 -1
- package/src/utils/assert.ts +4 -1
- package/src/utils/deep_merge.ts +2 -2
- package/src/utils/monotonic_timestamp.ts +12 -0
- package/src/utils/ranges.ts +110 -14
- package/src/utils/reference.ts +235 -237
- package/src/utils/request/fetch.ts +11 -9
- package/src/utils/request/xhr.ts +6 -5
- package/src/utils/string_parsing.ts +5 -4
- package/src/utils/wrapInPromise.ts +24 -0
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +3 -3
- package/appveyor.yml +0 -24
- package/dist/_esm5.processed/compat/has_eme_apis.d.ts +0 -21
- package/dist/_esm5.processed/compat/has_eme_apis.js +0 -24
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.d.ts +0 -47
- package/dist/_esm5.processed/core/stream/adaptation/utils/create_representation_estimator.js +0 -70
- package/dist/_esm5.processed/core/stream/utils/create_reload_request.d.ts +0 -32
- package/dist/_esm5.processed/core/stream/utils/create_reload_request.js +0 -54
- package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
- package/dist/_esm5.processed/features/initialize_features.js +0 -100
- package/dist/rx-player.d.ts +0 -3
- package/dist/rx-player.min.d.ts +0 -3
- package/src/compat/__tests__/has_eme_apis.test.ts +0 -56
- package/src/compat/has_eme_apis.ts +0 -26
- package/src/core/stream/adaptation/utils/create_representation_estimator.ts +0 -114
- package/src/core/stream/utils/create_reload_request.ts +0 -69
- package/src/features/__tests__/initialize_features.test.ts +0 -477
- package/src/features/initialize_features.ts +0 -120
|
@@ -14,12 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
18
|
-
events,
|
|
17
|
+
import eme, {
|
|
19
18
|
getInitData,
|
|
20
19
|
ICustomMediaKeys,
|
|
21
20
|
ICustomMediaKeySystemAccess,
|
|
22
|
-
} from "../../compat/";
|
|
21
|
+
} from "../../compat/eme";
|
|
23
22
|
import config from "../../config";
|
|
24
23
|
import {
|
|
25
24
|
EncryptedMediaError,
|
|
@@ -53,6 +52,8 @@ import {
|
|
|
53
52
|
IMediaKeySessionStores,
|
|
54
53
|
MediaKeySessionLoadingType,
|
|
55
54
|
IProcessedProtectionData,
|
|
55
|
+
ContentDecryptorState,
|
|
56
|
+
IContentDecryptorEvent,
|
|
56
57
|
} from "./types";
|
|
57
58
|
import { DecommissionedSessionError } from "./utils/check_key_statuses";
|
|
58
59
|
import cleanOldStoredPersistentInfo from "./utils/clean_old_stored_persistent_info";
|
|
@@ -60,14 +61,10 @@ import getDrmSystemId from "./utils/get_drm_system_id";
|
|
|
60
61
|
import InitDataValuesContainer from "./utils/init_data_values_container";
|
|
61
62
|
import {
|
|
62
63
|
areAllKeyIdsContainedIn,
|
|
63
|
-
areKeyIdsEqual,
|
|
64
64
|
areSomeKeyIdsContainedIn,
|
|
65
|
-
isKeyIdContainedIn,
|
|
66
65
|
} from "./utils/key_id_comparison";
|
|
67
66
|
import KeySessionRecord from "./utils/key_session_record";
|
|
68
67
|
|
|
69
|
-
const { onEncrypted } = events;
|
|
70
|
-
|
|
71
68
|
/**
|
|
72
69
|
* Module communicating with the Content Decryption Module (or CDM) to be able
|
|
73
70
|
* to decrypt contents.
|
|
@@ -126,12 +123,6 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
126
123
|
*/
|
|
127
124
|
private _canceller : TaskCanceller;
|
|
128
125
|
|
|
129
|
-
/**
|
|
130
|
-
* `true` once the `attach` method has been called`.
|
|
131
|
-
* Allows to avoid calling multiple times that function.
|
|
132
|
-
*/
|
|
133
|
-
private _wasAttachCalled : boolean;
|
|
134
|
-
|
|
135
126
|
/**
|
|
136
127
|
* This queue stores initialization data which hasn't been processed yet,
|
|
137
128
|
* probably because the "queue is locked" for now. (@see _stateData private
|
|
@@ -142,6 +133,16 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
142
133
|
*/
|
|
143
134
|
private _initDataQueue : IProtectionData[];
|
|
144
135
|
|
|
136
|
+
/**
|
|
137
|
+
* `true` if the EME API are available on the current platform according to
|
|
138
|
+
* the default EME implementation used.
|
|
139
|
+
* `false` otherwise.
|
|
140
|
+
* @returns {boolean}
|
|
141
|
+
*/
|
|
142
|
+
public static hasEmeApis() : boolean {
|
|
143
|
+
return !isNullOrUndefined(eme.requestMediaKeySystemAccess);
|
|
144
|
+
}
|
|
145
|
+
|
|
145
146
|
/**
|
|
146
147
|
* Create a new `ContentDecryptor`, and initialize its decryption capabilities
|
|
147
148
|
* right away.
|
|
@@ -156,7 +157,7 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
156
157
|
* configurations. It will choose the appropriate one depending on user
|
|
157
158
|
* settings and browser support.
|
|
158
159
|
*/
|
|
159
|
-
constructor(mediaElement : HTMLMediaElement, ksOptions: IKeySystemOption[]) {
|
|
160
|
+
constructor(mediaElement : HTMLMediaElement, ksOptions : IKeySystemOption[]) {
|
|
160
161
|
super();
|
|
161
162
|
|
|
162
163
|
log.debug("DRM: Starting ContentDecryptor logic.");
|
|
@@ -164,15 +165,14 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
164
165
|
const canceller = new TaskCanceller();
|
|
165
166
|
this._currentSessions = [];
|
|
166
167
|
this._canceller = canceller;
|
|
167
|
-
this._wasAttachCalled = false;
|
|
168
168
|
this._initDataQueue = [];
|
|
169
169
|
this._stateData = { state: ContentDecryptorState.Initializing,
|
|
170
|
-
isMediaKeysAttached:
|
|
170
|
+
isMediaKeysAttached: MediaKeyAttachmentStatus.NotAttached,
|
|
171
171
|
isInitDataQueueLocked: true,
|
|
172
172
|
data: null };
|
|
173
173
|
this.error = null;
|
|
174
174
|
|
|
175
|
-
onEncrypted(mediaElement, evt => {
|
|
175
|
+
eme.onEncrypted(mediaElement, evt => {
|
|
176
176
|
log.debug("DRM: Encrypted event received from media element.");
|
|
177
177
|
const initData = getInitData(evt as MediaEncryptedEvent);
|
|
178
178
|
if (initData !== null) {
|
|
@@ -204,7 +204,7 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
204
204
|
if (this._stateData.state === ContentDecryptorState.Initializing) {
|
|
205
205
|
this._stateData = { state: ContentDecryptorState.WaitingForAttachment,
|
|
206
206
|
isInitDataQueueLocked: true,
|
|
207
|
-
isMediaKeysAttached:
|
|
207
|
+
isMediaKeysAttached: MediaKeyAttachmentStatus.NotAttached,
|
|
208
208
|
data: { mediaKeysInfo,
|
|
209
209
|
mediaElement } };
|
|
210
210
|
|
|
@@ -239,36 +239,43 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
239
239
|
if (this._stateData.state !== ContentDecryptorState.WaitingForAttachment) {
|
|
240
240
|
throw new Error("`attach` should only be called when " +
|
|
241
241
|
"in the WaitingForAttachment state");
|
|
242
|
-
} else if (
|
|
242
|
+
} else if (
|
|
243
|
+
this._stateData.isMediaKeysAttached !== MediaKeyAttachmentStatus.NotAttached
|
|
244
|
+
) {
|
|
243
245
|
log.warn("DRM: ContentDecryptor's `attach` method called more than once.");
|
|
244
246
|
return;
|
|
245
247
|
}
|
|
246
|
-
this._wasAttachCalled = true;
|
|
247
248
|
|
|
248
249
|
const { mediaElement, mediaKeysInfo } = this._stateData.data;
|
|
249
250
|
const { options, mediaKeys, mediaKeySystemAccess, stores } = mediaKeysInfo;
|
|
250
|
-
const stateToAttatch = { loadedSessionsStore: stores.loadedSessionsStore,
|
|
251
|
-
mediaKeySystemAccess,
|
|
252
|
-
mediaKeys,
|
|
253
|
-
keySystemOptions: options };
|
|
254
|
-
|
|
255
251
|
const shouldDisableLock = options.disableMediaKeysAttachmentLock === true;
|
|
252
|
+
|
|
256
253
|
if (shouldDisableLock) {
|
|
257
254
|
this._stateData = { state: ContentDecryptorState.ReadyForContent,
|
|
258
255
|
isInitDataQueueLocked: true,
|
|
259
|
-
isMediaKeysAttached:
|
|
260
|
-
data:
|
|
256
|
+
isMediaKeysAttached: MediaKeyAttachmentStatus.Pending,
|
|
257
|
+
data: { mediaKeysInfo, mediaElement } };
|
|
261
258
|
this.trigger("stateChange", this._stateData.state);
|
|
262
|
-
|
|
259
|
+
|
|
260
|
+
// previous trigger might have lead to disposal
|
|
261
|
+
if (this._isStopped()) {
|
|
263
262
|
return ;
|
|
264
263
|
}
|
|
265
264
|
}
|
|
266
265
|
|
|
266
|
+
this._stateData.isMediaKeysAttached = MediaKeyAttachmentStatus.Pending;
|
|
267
|
+
const stateToAttach = { emeImplementation: eme,
|
|
268
|
+
loadedSessionsStore: stores.loadedSessionsStore,
|
|
269
|
+
mediaKeySystemAccess,
|
|
270
|
+
mediaKeys,
|
|
271
|
+
keySystemOptions: options };
|
|
272
|
+
|
|
267
273
|
log.debug("DRM: Attaching current MediaKeys");
|
|
268
|
-
attachMediaKeys(mediaElement,
|
|
274
|
+
attachMediaKeys(mediaElement, stateToAttach, this._canceller.signal)
|
|
269
275
|
.then(async () => {
|
|
270
|
-
|
|
276
|
+
this._stateData.isMediaKeysAttached = MediaKeyAttachmentStatus.Attached;
|
|
271
277
|
|
|
278
|
+
const { serverCertificate } = options;
|
|
272
279
|
if (!isNullOrUndefined(serverCertificate)) {
|
|
273
280
|
const resSsc = await setServerCertificate(mediaKeys, serverCertificate);
|
|
274
281
|
if (resSsc.type === "error") {
|
|
@@ -282,7 +289,7 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
282
289
|
|
|
283
290
|
const prevState = this._stateData.state;
|
|
284
291
|
this._stateData = { state: ContentDecryptorState.ReadyForContent,
|
|
285
|
-
isMediaKeysAttached:
|
|
292
|
+
isMediaKeysAttached: MediaKeyAttachmentStatus.Attached,
|
|
286
293
|
isInitDataQueueLocked: false,
|
|
287
294
|
data: { mediaKeysData: mediaKeysInfo } };
|
|
288
295
|
if (prevState !== ContentDecryptorState.ReadyForContent) {
|
|
@@ -413,9 +420,12 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
413
420
|
// from `createdSess`'s `keyStatuses` and to update the content's
|
|
414
421
|
// decipherability.
|
|
415
422
|
for (const innerKid of periodKeysArr) {
|
|
416
|
-
if (
|
|
417
|
-
|
|
418
|
-
|
|
423
|
+
if (
|
|
424
|
+
!createdSess.keyStatuses.whitelisted
|
|
425
|
+
.some(k => areArraysOfNumbersEqual(k, innerKid)) &&
|
|
426
|
+
!createdSess.keyStatuses.blacklisted
|
|
427
|
+
.some(k => areArraysOfNumbersEqual(k, innerKid))
|
|
428
|
+
) {
|
|
419
429
|
createdSess.keyStatuses.blacklisted.push(innerKid);
|
|
420
430
|
}
|
|
421
431
|
}
|
|
@@ -791,7 +801,7 @@ export default class ContentDecryptor extends EventEmitter<IContentDecryptorEven
|
|
|
791
801
|
* Should have no effect if the `_initDataQueue` was not locked.
|
|
792
802
|
*/
|
|
793
803
|
private _unlockInitDataQueue() : void {
|
|
794
|
-
if (this._stateData.isMediaKeysAttached !==
|
|
804
|
+
if (this._stateData.isMediaKeysAttached !== MediaKeyAttachmentStatus.Attached) {
|
|
795
805
|
log.error("DRM: Trying to unlock in the wrong state");
|
|
796
806
|
return;
|
|
797
807
|
}
|
|
@@ -846,17 +856,17 @@ function updateDecipherability(
|
|
|
846
856
|
if (contentKIDs !== undefined) {
|
|
847
857
|
for (const elt of contentKIDs) {
|
|
848
858
|
for (const blacklistedKeyId of blacklistedKeyIds) {
|
|
849
|
-
if (
|
|
859
|
+
if (areArraysOfNumbersEqual(blacklistedKeyId, elt.keyId)) {
|
|
850
860
|
return false;
|
|
851
861
|
}
|
|
852
862
|
}
|
|
853
863
|
for (const whitelistedKeyId of whitelistedKeyIds) {
|
|
854
|
-
if (
|
|
864
|
+
if (areArraysOfNumbersEqual(whitelistedKeyId, elt.keyId)) {
|
|
855
865
|
return true;
|
|
856
866
|
}
|
|
857
867
|
}
|
|
858
868
|
for (const delistedKeyId of delistedKeyIds) {
|
|
859
|
-
if (
|
|
869
|
+
if (areArraysOfNumbersEqual(delistedKeyId, elt.keyId)) {
|
|
860
870
|
return undefined;
|
|
861
871
|
}
|
|
862
872
|
}
|
|
@@ -903,226 +913,6 @@ function blackListProtectionData(
|
|
|
903
913
|
});
|
|
904
914
|
}
|
|
905
915
|
|
|
906
|
-
/** Events sent by the `ContentDecryptor`, in a `{ event: payload }` format. */
|
|
907
|
-
export interface IContentDecryptorEvent {
|
|
908
|
-
/**
|
|
909
|
-
* Event emitted when a major error occured which made the ContentDecryptor
|
|
910
|
-
* stopped.
|
|
911
|
-
* When that event is sent, the `ContentDecryptor` is in the `Error` state and
|
|
912
|
-
* cannot be used anymore.
|
|
913
|
-
*/
|
|
914
|
-
error : Error;
|
|
915
|
-
|
|
916
|
-
/**
|
|
917
|
-
* Event emitted when a minor error occured which the ContentDecryptor can
|
|
918
|
-
* recover from.
|
|
919
|
-
*/
|
|
920
|
-
warning : IPlayerError;
|
|
921
|
-
|
|
922
|
-
/**
|
|
923
|
-
* Event emitted when the `ContentDecryptor`'s state changed.
|
|
924
|
-
* States are a central aspect of the `ContentDecryptor`, be sure to check the
|
|
925
|
-
* ContentDecryptorState type.
|
|
926
|
-
*/
|
|
927
|
-
stateChange: ContentDecryptorState;
|
|
928
|
-
}
|
|
929
|
-
|
|
930
|
-
/** Enumeration of the various "state" the `ContentDecryptor` can be in. */
|
|
931
|
-
export enum ContentDecryptorState {
|
|
932
|
-
/**
|
|
933
|
-
* The `ContentDecryptor` is not yet ready to create key sessions and request
|
|
934
|
-
* licenses.
|
|
935
|
-
* This is is the initial state of the ContentDecryptor.
|
|
936
|
-
*/
|
|
937
|
-
Initializing,
|
|
938
|
-
|
|
939
|
-
/**
|
|
940
|
-
* The `ContentDecryptor` has been initialized.
|
|
941
|
-
* You should now called the `attach` method when you want to add decryption
|
|
942
|
-
* capabilities to the HTMLMediaElement. The ContentDecryptor won't go to the
|
|
943
|
-
* `ReadyForContent` state until `attach` is called.
|
|
944
|
-
*
|
|
945
|
-
* For compatibility reasons, this should be done after the HTMLMediaElement's
|
|
946
|
-
* src attribute is set.
|
|
947
|
-
*
|
|
948
|
-
* It is also from when this state is reached that the `ContentDecryptor`'s
|
|
949
|
-
* `systemId` property may be known.
|
|
950
|
-
*
|
|
951
|
-
* This state is always coming after the `Initializing` state.
|
|
952
|
-
*/
|
|
953
|
-
WaitingForAttachment,
|
|
954
|
-
|
|
955
|
-
/**
|
|
956
|
-
* Content (encrypted or not) can begin to be pushed on the HTMLMediaElement
|
|
957
|
-
* (this state was needed because some browser quirks sometimes forces us to
|
|
958
|
-
* call EME API before this can be done).
|
|
959
|
-
*
|
|
960
|
-
* This state is always coming after the `WaitingForAttachment` state.
|
|
961
|
-
*/
|
|
962
|
-
ReadyForContent,
|
|
963
|
-
|
|
964
|
-
/**
|
|
965
|
-
* The `ContentDecryptor` has encountered a fatal error and has been stopped.
|
|
966
|
-
* It is now unusable.
|
|
967
|
-
*/
|
|
968
|
-
Error,
|
|
969
|
-
|
|
970
|
-
/** The `ContentDecryptor` has been disposed of and is now unusable. */
|
|
971
|
-
Disposed,
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
/** Possible states the ContentDecryptor is in and associated data for each one. */
|
|
975
|
-
type IContentDecryptorStateData = IInitializingStateData |
|
|
976
|
-
IWaitingForAttachmentStateData |
|
|
977
|
-
IReadyForContentStateDataUnattached |
|
|
978
|
-
IReadyForContentStateDataAttached |
|
|
979
|
-
IDisposeStateData |
|
|
980
|
-
IErrorStateData;
|
|
981
|
-
|
|
982
|
-
/** Skeleton that all variants of `IContentDecryptorStateData` use. */
|
|
983
|
-
interface IContentDecryptorStateBase<
|
|
984
|
-
TStateName extends ContentDecryptorState,
|
|
985
|
-
TIsQueueLocked extends boolean | undefined,
|
|
986
|
-
TIsMediaKeyAttached extends boolean | undefined,
|
|
987
|
-
TData
|
|
988
|
-
> {
|
|
989
|
-
/** Identify the ContentDecryptor's state. */
|
|
990
|
-
state: TStateName;
|
|
991
|
-
/**
|
|
992
|
-
* If `true`, the `ContentDecryptor` will wait before processing
|
|
993
|
-
* newly-received initialization data.
|
|
994
|
-
* If `false`, it will process them right away.
|
|
995
|
-
* Set to undefined when it won't ever process them like for example in a
|
|
996
|
-
* disposed or errored state.
|
|
997
|
-
*/
|
|
998
|
-
isInitDataQueueLocked: TIsQueueLocked;
|
|
999
|
-
/**
|
|
1000
|
-
* If `true`, the `MediaKeys` instance has been attached to the HTMLMediaElement.
|
|
1001
|
-
* If `false`, it hasn't happened yet.
|
|
1002
|
-
* If uncertain or unimportant (for example if the `ContentDecryptor` is an
|
|
1003
|
-
* disposed/errored state, set to `undefined`).
|
|
1004
|
-
*/
|
|
1005
|
-
isMediaKeysAttached: TIsMediaKeyAttached;
|
|
1006
|
-
/** Data stored relative to that state. */
|
|
1007
|
-
data: TData;
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
/** ContentDecryptor's internal data when in the `Initializing` state. */
|
|
1011
|
-
type IInitializingStateData = IContentDecryptorStateBase<
|
|
1012
|
-
ContentDecryptorState.Initializing,
|
|
1013
|
-
true, // isInitDataQueueLocked
|
|
1014
|
-
false, // isMediaKeysAttached
|
|
1015
|
-
null // data
|
|
1016
|
-
>;
|
|
1017
|
-
|
|
1018
|
-
/** ContentDecryptor's internal data when in the `WaitingForAttachment` state. */
|
|
1019
|
-
type IWaitingForAttachmentStateData = IContentDecryptorStateBase<
|
|
1020
|
-
ContentDecryptorState.WaitingForAttachment,
|
|
1021
|
-
true, // isInitDataQueueLocked
|
|
1022
|
-
false, // isMediaKeysAttached
|
|
1023
|
-
// data
|
|
1024
|
-
{ mediaKeysInfo : IMediaKeysInfos;
|
|
1025
|
-
mediaElement : HTMLMediaElement; }
|
|
1026
|
-
>;
|
|
1027
|
-
|
|
1028
|
-
/**
|
|
1029
|
-
* ContentDecryptor's internal data when in the `ReadyForContent` state before
|
|
1030
|
-
* it has attached the `MediaKeys` to the media element.
|
|
1031
|
-
*/
|
|
1032
|
-
type IReadyForContentStateDataUnattached = IContentDecryptorStateBase<
|
|
1033
|
-
ContentDecryptorState.ReadyForContent,
|
|
1034
|
-
true, // isInitDataQueueLocked
|
|
1035
|
-
false, // isMediaKeysAttached
|
|
1036
|
-
null // data
|
|
1037
|
-
>;
|
|
1038
|
-
|
|
1039
|
-
/**
|
|
1040
|
-
* ContentDecryptor's internal data when in the `ReadyForContent` state once
|
|
1041
|
-
* it has attached the `MediaKeys` to the media element.
|
|
1042
|
-
*/
|
|
1043
|
-
type IReadyForContentStateDataAttached = IContentDecryptorStateBase<
|
|
1044
|
-
ContentDecryptorState.ReadyForContent,
|
|
1045
|
-
boolean, // isInitDataQueueLocked
|
|
1046
|
-
true, // isMediaKeysAttached
|
|
1047
|
-
{
|
|
1048
|
-
/**
|
|
1049
|
-
* MediaKeys-related information linked to this instance of the
|
|
1050
|
-
* `ContentDecryptor`.
|
|
1051
|
-
* Set to `null` until it is known.
|
|
1052
|
-
* Should be always set when the `ContentDecryptor` has reached the
|
|
1053
|
-
* Initialized state (@see ContentDecryptorState).
|
|
1054
|
-
*/
|
|
1055
|
-
mediaKeysData : IAttachedMediaKeysData;
|
|
1056
|
-
}
|
|
1057
|
-
>;
|
|
1058
|
-
|
|
1059
|
-
/** ContentDecryptor's internal data when in the `Disposed` state. */
|
|
1060
|
-
type IDisposeStateData = IContentDecryptorStateBase<
|
|
1061
|
-
ContentDecryptorState.Disposed,
|
|
1062
|
-
undefined, // isInitDataQueueLocked
|
|
1063
|
-
undefined, // isMediaKeysAttached
|
|
1064
|
-
null // data
|
|
1065
|
-
>;
|
|
1066
|
-
|
|
1067
|
-
/** ContentDecryptor's internal data when in the `Error` state. */
|
|
1068
|
-
type IErrorStateData = IContentDecryptorStateBase<
|
|
1069
|
-
ContentDecryptorState.Error,
|
|
1070
|
-
undefined, // isInitDataQueueLocked
|
|
1071
|
-
undefined, // isMediaKeysAttached
|
|
1072
|
-
null // data
|
|
1073
|
-
>;
|
|
1074
|
-
|
|
1075
|
-
/** Information linked to a session created by the `ContentDecryptor`. */
|
|
1076
|
-
interface IActiveSessionInfo {
|
|
1077
|
-
/**
|
|
1078
|
-
* Record associated to the session.
|
|
1079
|
-
* Most notably, it allows both to identify the session as well as to
|
|
1080
|
-
* anounce and find out which key ids are already handled.
|
|
1081
|
-
*/
|
|
1082
|
-
record : KeySessionRecord;
|
|
1083
|
-
|
|
1084
|
-
/** Current keys' statuses linked that session. */
|
|
1085
|
-
keyStatuses : {
|
|
1086
|
-
/** Key ids linked to keys that are "usable". */
|
|
1087
|
-
whitelisted : Uint8Array[];
|
|
1088
|
-
/**
|
|
1089
|
-
* Key ids linked to keys that are not considered "usable".
|
|
1090
|
-
* Content linked to those keys are not decipherable and may thus be
|
|
1091
|
-
* fallbacked from.
|
|
1092
|
-
*/
|
|
1093
|
-
blacklisted : Uint8Array[];
|
|
1094
|
-
};
|
|
1095
|
-
|
|
1096
|
-
/** Source of the MediaKeySession linked to that record. */
|
|
1097
|
-
source : MediaKeySessionLoadingType;
|
|
1098
|
-
|
|
1099
|
-
/**
|
|
1100
|
-
* If different than `null`, all initialization data compatible with this
|
|
1101
|
-
* processed initialization data has been blacklisted with this corresponding
|
|
1102
|
-
* error.
|
|
1103
|
-
*/
|
|
1104
|
-
blacklistedSessionError : BlacklistedSessionError | null;
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
/**
|
|
1108
|
-
* Sent when the created (or already created) MediaKeys is attached to the
|
|
1109
|
-
* current HTMLMediaElement element.
|
|
1110
|
-
* On some peculiar devices, we have to wait for that step before the first
|
|
1111
|
-
* media segments are to be pushed to avoid issues.
|
|
1112
|
-
* Because this event is sent after a MediaKeys is created, you will always have
|
|
1113
|
-
* a "created-media-keys" event before an "attached-media-keys" event.
|
|
1114
|
-
*/
|
|
1115
|
-
interface IAttachedMediaKeysData {
|
|
1116
|
-
/** The MediaKeySystemAccess which allowed to create the MediaKeys instance. */
|
|
1117
|
-
mediaKeySystemAccess: MediaKeySystemAccess |
|
|
1118
|
-
ICustomMediaKeySystemAccess;
|
|
1119
|
-
/** The MediaKeys instance. */
|
|
1120
|
-
mediaKeys : MediaKeys |
|
|
1121
|
-
ICustomMediaKeys;
|
|
1122
|
-
stores : IMediaKeySessionStores;
|
|
1123
|
-
options : IKeySystemOption;
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
916
|
/**
|
|
1127
917
|
* Returns set of all usable and unusable keys - explicit or implicit - that are
|
|
1128
918
|
* linked to a `MediaKeySession`.
|
|
@@ -1180,7 +970,7 @@ function getKeyIdsLinkedToSession(
|
|
|
1180
970
|
// `usableKeyIds` nor in `unusableKeyIds`
|
|
1181
971
|
const allKnownKeyIds = keySessionRecord.getAssociatedKeyIds();
|
|
1182
972
|
for (const kid of allKnownKeyIds) {
|
|
1183
|
-
if (!associatedKeyIds.some(ak =>
|
|
973
|
+
if (!associatedKeyIds.some(ak => areArraysOfNumbersEqual(ak, kid))) {
|
|
1184
974
|
if (log.hasLevel("DEBUG")) {
|
|
1185
975
|
log.debug("DRM: KeySessionRecord's key missing in the license, blacklisting it",
|
|
1186
976
|
bytesToHex(kid));
|
|
@@ -1207,7 +997,7 @@ function getKeyIdsLinkedToSession(
|
|
|
1207
997
|
content } = initializationData;
|
|
1208
998
|
if (expectedKeyIds !== undefined) {
|
|
1209
999
|
const missingKeyIds = expectedKeyIds.filter(expected => {
|
|
1210
|
-
return !associatedKeyIds.some(k =>
|
|
1000
|
+
return !associatedKeyIds.some(k => areArraysOfNumbersEqual(k, expected));
|
|
1211
1001
|
});
|
|
1212
1002
|
if (missingKeyIds.length > 0) {
|
|
1213
1003
|
if (log.hasLevel("DEBUG")) {
|
|
@@ -1237,7 +1027,7 @@ function getKeyIdsLinkedToSession(
|
|
|
1237
1027
|
} else {
|
|
1238
1028
|
const periodKeysArr = Array.from(periodKeys);
|
|
1239
1029
|
for (const kid of periodKeysArr) {
|
|
1240
|
-
const isFound = associatedKeyIds.some(k =>
|
|
1030
|
+
const isFound = associatedKeyIds.some(k => areArraysOfNumbersEqual(k, kid));
|
|
1241
1031
|
if (isFound) {
|
|
1242
1032
|
mergeKeyIdSetIntoArray(periodKeys, associatedKeyIds);
|
|
1243
1033
|
break;
|
|
@@ -1265,7 +1055,7 @@ function mergeKeyIdSetIntoArray(
|
|
|
1265
1055
|
) {
|
|
1266
1056
|
const setArr = Array.from(set.values());
|
|
1267
1057
|
for (const kid of setArr) {
|
|
1268
|
-
const isFound = arr.some(k =>
|
|
1058
|
+
const isFound = arr.some(k => areArraysOfNumbersEqual(k, kid));
|
|
1269
1059
|
if (!isFound) {
|
|
1270
1060
|
arr.push(kid);
|
|
1271
1061
|
}
|
|
@@ -1293,3 +1083,164 @@ function addKeyIdsFromPeriod(
|
|
|
1293
1083
|
}
|
|
1294
1084
|
}
|
|
1295
1085
|
}
|
|
1086
|
+
|
|
1087
|
+
/** Possible states the ContentDecryptor is in and associated data for each one. */
|
|
1088
|
+
type IContentDecryptorStateData = IInitializingStateData |
|
|
1089
|
+
IWaitingForAttachmentStateData |
|
|
1090
|
+
IReadyForContentStateDataUnattached |
|
|
1091
|
+
IReadyForContentStateDataAttached |
|
|
1092
|
+
IDisposeStateData |
|
|
1093
|
+
IErrorStateData;
|
|
1094
|
+
|
|
1095
|
+
/** Skeleton that all variants of `IContentDecryptorStateData` use. */
|
|
1096
|
+
interface IContentDecryptorStateBase<
|
|
1097
|
+
TStateName extends ContentDecryptorState,
|
|
1098
|
+
TIsQueueLocked extends boolean | undefined,
|
|
1099
|
+
TIsMediaKeyAttached extends MediaKeyAttachmentStatus | undefined,
|
|
1100
|
+
TData
|
|
1101
|
+
> {
|
|
1102
|
+
/** Identify the ContentDecryptor's state. */
|
|
1103
|
+
state: TStateName;
|
|
1104
|
+
/**
|
|
1105
|
+
* If `true`, the `ContentDecryptor` will wait before processing
|
|
1106
|
+
* newly-received initialization data.
|
|
1107
|
+
* If `false`, it will process them right away.
|
|
1108
|
+
* Set to undefined when it won't ever process them like for example in a
|
|
1109
|
+
* disposed or errored state.
|
|
1110
|
+
*/
|
|
1111
|
+
isInitDataQueueLocked: TIsQueueLocked;
|
|
1112
|
+
/**
|
|
1113
|
+
* If `true`, the `MediaKeys` instance has been attached to the HTMLMediaElement.
|
|
1114
|
+
* If `false`, it hasn't happened yet.
|
|
1115
|
+
* If uncertain or unimportant (for example if the `ContentDecryptor` is an
|
|
1116
|
+
* disposed/errored state, set to `undefined`).
|
|
1117
|
+
*/
|
|
1118
|
+
isMediaKeysAttached: TIsMediaKeyAttached;
|
|
1119
|
+
/** Data stored relative to that state. */
|
|
1120
|
+
data: TData;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
const enum MediaKeyAttachmentStatus {
|
|
1124
|
+
NotAttached,
|
|
1125
|
+
Pending,
|
|
1126
|
+
Attached,
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
/** ContentDecryptor's internal data when in the `Initializing` state. */
|
|
1130
|
+
type IInitializingStateData = IContentDecryptorStateBase<
|
|
1131
|
+
ContentDecryptorState.Initializing,
|
|
1132
|
+
true, // isInitDataQueueLocked
|
|
1133
|
+
MediaKeyAttachmentStatus.NotAttached, // isMediaKeysAttached
|
|
1134
|
+
null // data
|
|
1135
|
+
>;
|
|
1136
|
+
|
|
1137
|
+
/** ContentDecryptor's internal data when in the `WaitingForAttachment` state. */
|
|
1138
|
+
type IWaitingForAttachmentStateData = IContentDecryptorStateBase<
|
|
1139
|
+
ContentDecryptorState.WaitingForAttachment,
|
|
1140
|
+
true, // isInitDataQueueLocked
|
|
1141
|
+
MediaKeyAttachmentStatus.NotAttached, // isMediaKeysAttached
|
|
1142
|
+
// data
|
|
1143
|
+
{ mediaKeysInfo : IMediaKeysInfos;
|
|
1144
|
+
mediaElement : HTMLMediaElement; }
|
|
1145
|
+
>;
|
|
1146
|
+
|
|
1147
|
+
/**
|
|
1148
|
+
* ContentDecryptor's internal data when in the `ReadyForContent` state before
|
|
1149
|
+
* it has attached the `MediaKeys` to the media element.
|
|
1150
|
+
*/
|
|
1151
|
+
type IReadyForContentStateDataUnattached = IContentDecryptorStateBase<
|
|
1152
|
+
ContentDecryptorState.ReadyForContent,
|
|
1153
|
+
true, // isInitDataQueueLocked
|
|
1154
|
+
MediaKeyAttachmentStatus.NotAttached |
|
|
1155
|
+
MediaKeyAttachmentStatus.Pending, // isMediaKeysAttached
|
|
1156
|
+
{ mediaKeysInfo : IMediaKeysInfos;
|
|
1157
|
+
mediaElement : HTMLMediaElement; } // data
|
|
1158
|
+
>;
|
|
1159
|
+
|
|
1160
|
+
/**
|
|
1161
|
+
* ContentDecryptor's internal data when in the `ReadyForContent` state once
|
|
1162
|
+
* it has attached the `MediaKeys` to the media element.
|
|
1163
|
+
*/
|
|
1164
|
+
type IReadyForContentStateDataAttached = IContentDecryptorStateBase<
|
|
1165
|
+
ContentDecryptorState.ReadyForContent,
|
|
1166
|
+
boolean, // isInitDataQueueLocked
|
|
1167
|
+
MediaKeyAttachmentStatus.Attached, // isMediaKeysAttached
|
|
1168
|
+
{
|
|
1169
|
+
/**
|
|
1170
|
+
* MediaKeys-related information linked to this instance of the
|
|
1171
|
+
* `ContentDecryptor`.
|
|
1172
|
+
* Set to `null` until it is known.
|
|
1173
|
+
* Should be always set when the `ContentDecryptor` has reached the
|
|
1174
|
+
* Initialized state (@see ContentDecryptorState).
|
|
1175
|
+
*/
|
|
1176
|
+
mediaKeysData : IAttachedMediaKeysData;
|
|
1177
|
+
}
|
|
1178
|
+
>;
|
|
1179
|
+
|
|
1180
|
+
/** ContentDecryptor's internal data when in the `Disposed` state. */
|
|
1181
|
+
type IDisposeStateData = IContentDecryptorStateBase<
|
|
1182
|
+
ContentDecryptorState.Disposed,
|
|
1183
|
+
undefined, // isInitDataQueueLocked
|
|
1184
|
+
undefined, // isMediaKeysAttached
|
|
1185
|
+
null // data
|
|
1186
|
+
>;
|
|
1187
|
+
|
|
1188
|
+
/** ContentDecryptor's internal data when in the `Error` state. */
|
|
1189
|
+
type IErrorStateData = IContentDecryptorStateBase<
|
|
1190
|
+
ContentDecryptorState.Error,
|
|
1191
|
+
undefined, // isInitDataQueueLocked
|
|
1192
|
+
undefined, // isMediaKeysAttached
|
|
1193
|
+
null // data
|
|
1194
|
+
>;
|
|
1195
|
+
|
|
1196
|
+
/** Information linked to a session created by the `ContentDecryptor`. */
|
|
1197
|
+
interface IActiveSessionInfo {
|
|
1198
|
+
/**
|
|
1199
|
+
* Record associated to the session.
|
|
1200
|
+
* Most notably, it allows both to identify the session as well as to
|
|
1201
|
+
* anounce and find out which key ids are already handled.
|
|
1202
|
+
*/
|
|
1203
|
+
record : KeySessionRecord;
|
|
1204
|
+
|
|
1205
|
+
/** Current keys' statuses linked that session. */
|
|
1206
|
+
keyStatuses : {
|
|
1207
|
+
/** Key ids linked to keys that are "usable". */
|
|
1208
|
+
whitelisted : Uint8Array[];
|
|
1209
|
+
/**
|
|
1210
|
+
* Key ids linked to keys that are not considered "usable".
|
|
1211
|
+
* Content linked to those keys are not decipherable and may thus be
|
|
1212
|
+
* fallbacked from.
|
|
1213
|
+
*/
|
|
1214
|
+
blacklisted : Uint8Array[];
|
|
1215
|
+
};
|
|
1216
|
+
|
|
1217
|
+
/** Source of the MediaKeySession linked to that record. */
|
|
1218
|
+
source : MediaKeySessionLoadingType;
|
|
1219
|
+
|
|
1220
|
+
/**
|
|
1221
|
+
* If different than `null`, all initialization data compatible with this
|
|
1222
|
+
* processed initialization data has been blacklisted with this corresponding
|
|
1223
|
+
* error.
|
|
1224
|
+
*/
|
|
1225
|
+
blacklistedSessionError : BlacklistedSessionError | null;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
/**
|
|
1229
|
+
* Sent when the created (or already created) MediaKeys is attached to the
|
|
1230
|
+
* current HTMLMediaElement element.
|
|
1231
|
+
* On some peculiar devices, we have to wait for that step before the first
|
|
1232
|
+
* media segments are to be pushed to avoid issues.
|
|
1233
|
+
* Because this event is sent after a MediaKeys is created, you will always have
|
|
1234
|
+
* a "created-media-keys" event before an "attached-media-keys" event.
|
|
1235
|
+
*/
|
|
1236
|
+
interface IAttachedMediaKeysData {
|
|
1237
|
+
/** The MediaKeySystemAccess which allowed to create the MediaKeys instance. */
|
|
1238
|
+
mediaKeySystemAccess: MediaKeySystemAccess |
|
|
1239
|
+
ICustomMediaKeySystemAccess;
|
|
1240
|
+
/** The MediaKeys instance. */
|
|
1241
|
+
mediaKeys : MediaKeys |
|
|
1242
|
+
ICustomMediaKeys;
|
|
1243
|
+
stores : IMediaKeySessionStores;
|
|
1244
|
+
options : IKeySystemOption;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { ICustomMediaKeySession } from "../../compat";
|
|
17
|
+
import { ICustomMediaKeySession } from "../../compat/eme";
|
|
18
18
|
import log from "../../log";
|
|
19
19
|
import { CancellationSignal } from "../../utils/task_canceller";
|
|
20
20
|
import createSession from "./create_session";
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { ICustomMediaKeySession } from "../../compat";
|
|
17
|
+
import { ICustomMediaKeySession } from "../../compat/eme";
|
|
18
18
|
import log from "../../log";
|
|
19
19
|
import { CancellationSignal } from "../../utils/task_canceller";
|
|
20
20
|
import {
|