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
|
@@ -48,9 +48,7 @@ import assert from "../../../utils/assert";
|
|
|
48
48
|
import EventEmitter from "../../../utils/event_emitter";
|
|
49
49
|
import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
50
50
|
import objectAssign from "../../../utils/object_assign";
|
|
51
|
-
import
|
|
52
|
-
ISharedReference,
|
|
53
|
-
} from "../../../utils/reference";
|
|
51
|
+
import SharedReference from "../../../utils/reference";
|
|
54
52
|
import {
|
|
55
53
|
IAdaptationChoice,
|
|
56
54
|
IRepresentationsChoice,
|
|
@@ -71,8 +69,12 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
71
69
|
* Store track selection information, per Period.
|
|
72
70
|
* Sorted by Period's start time ascending
|
|
73
71
|
*/
|
|
74
|
-
private _storedPeriodInfo :
|
|
72
|
+
private _storedPeriodInfo : ITSPeriodObject[];
|
|
75
73
|
|
|
74
|
+
/**
|
|
75
|
+
* If `true`, the current `TracksStore` instance has been disposed. It
|
|
76
|
+
* shouldn't perform side-effects anymore.
|
|
77
|
+
*/
|
|
76
78
|
private _isDisposed : boolean;
|
|
77
79
|
|
|
78
80
|
/**
|
|
@@ -83,11 +85,16 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
83
85
|
* for example not in the Manifest anymore as long as the same Period's
|
|
84
86
|
* reference is still kept.
|
|
85
87
|
*/
|
|
86
|
-
private _cachedPeriodInfo : WeakMap<Period,
|
|
88
|
+
private _cachedPeriodInfo : WeakMap<Period, ITSPeriodObject>;
|
|
87
89
|
|
|
88
90
|
/** Tells if trick mode has been enabled by the RxPlayer user */
|
|
89
91
|
private _isTrickModeTrackEnabled: boolean;
|
|
90
92
|
|
|
93
|
+
/**
|
|
94
|
+
* In absence of another setting, this is the default "switching mode" for the
|
|
95
|
+
* audio track.
|
|
96
|
+
* See type documentation.
|
|
97
|
+
*/
|
|
91
98
|
private _defaultAudioTrackSwitchingMode : IAudioTrackSwitchingMode;
|
|
92
99
|
|
|
93
100
|
constructor(args : {
|
|
@@ -110,10 +117,12 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
110
117
|
* @returns {Array.<Object>}
|
|
111
118
|
*/
|
|
112
119
|
public getAvailablePeriods() : IPeriod[] {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
120
|
+
return this._storedPeriodInfo.reduce((acc: IPeriod[], p) => {
|
|
121
|
+
if (p.isPeriodAdvertised) {
|
|
122
|
+
acc.push(toExposedPeriod(p.period));
|
|
123
|
+
}
|
|
124
|
+
return acc;
|
|
125
|
+
}, []);
|
|
117
126
|
}
|
|
118
127
|
|
|
119
128
|
/**
|
|
@@ -127,14 +136,14 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
127
136
|
|
|
128
137
|
// We assume that they are always sorted chronologically
|
|
129
138
|
// In dev mode, perform a runtime check that this is the case
|
|
130
|
-
if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
|
|
139
|
+
if (__ENVIRONMENT__.CURRENT_ENV as number === __ENVIRONMENT__.DEV as number) {
|
|
131
140
|
for (let i = 1; i < periods.length; i++) {
|
|
132
141
|
assert(periods[i - 1].start <= periods[i].start);
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
|
|
136
145
|
/** Periods which have just been added. */
|
|
137
|
-
const addedPeriods :
|
|
146
|
+
const addedPeriods : ITSPeriodObject[] = [];
|
|
138
147
|
|
|
139
148
|
let newPListIdx = 0;
|
|
140
149
|
for (let i = 0; i < this._storedPeriodInfo.length; i++) {
|
|
@@ -192,7 +201,8 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
192
201
|
const adaptationBase = videoAdaptations[0];
|
|
193
202
|
const adaptation = getRightVideoTrack(adaptationBase,
|
|
194
203
|
this._isTrickModeTrackEnabled);
|
|
195
|
-
const lockedRepresentations =
|
|
204
|
+
const lockedRepresentations =
|
|
205
|
+
new SharedReference<IRepresentationsChoice | null>(null);
|
|
196
206
|
storedSettings = { adaptationBase,
|
|
197
207
|
adaptation,
|
|
198
208
|
switchingMode: DEFAULT_VIDEO_TRACK_SWITCHING_MODE,
|
|
@@ -231,7 +241,8 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
231
241
|
null :
|
|
232
242
|
{ adaptation: audioAdaptations[0],
|
|
233
243
|
switchingMode: this._defaultAudioTrackSwitchingMode,
|
|
234
|
-
lockedRepresentations:
|
|
244
|
+
lockedRepresentations:
|
|
245
|
+
new SharedReference<IRepresentationsChoice | null>(null) };
|
|
235
246
|
periodItem.audio.storedSettings = storedSettings;
|
|
236
247
|
this.trigger("trackUpdate", { period: toExposedPeriod(newPeriod),
|
|
237
248
|
trackType: "audio",
|
|
@@ -284,17 +295,6 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
284
295
|
this._storedPeriodInfo.push(...periodsToAdd);
|
|
285
296
|
addedPeriods.push(...periodsToAdd);
|
|
286
297
|
}
|
|
287
|
-
|
|
288
|
-
const periodsAdded = addedPeriods.reduce((acc : IPeriod[], p) => {
|
|
289
|
-
if (!p.isRemoved) {
|
|
290
|
-
acc.push({ id: p.period.id, start: p.period.start, end: p.period.end });
|
|
291
|
-
}
|
|
292
|
-
return acc;
|
|
293
|
-
}, []);
|
|
294
|
-
|
|
295
|
-
if (periodsAdded.length > 0) {
|
|
296
|
-
this.trigger("newAvailablePeriods", periodsAdded);
|
|
297
|
-
}
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
/**
|
|
@@ -313,14 +313,34 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
313
313
|
bufferType : "audio" | "text"| "video",
|
|
314
314
|
manifest : Manifest,
|
|
315
315
|
period : Period,
|
|
316
|
-
adaptationRef :
|
|
316
|
+
adaptationRef : SharedReference<IAdaptationChoice|null|undefined>
|
|
317
317
|
) : void {
|
|
318
318
|
let periodObj = getPeriodItem(this._storedPeriodInfo, period.id);
|
|
319
319
|
if (periodObj === undefined) { // The Period has not yet been added.
|
|
320
|
-
periodObj =
|
|
320
|
+
periodObj = generatePeriodInfo(period,
|
|
321
|
+
false,
|
|
322
|
+
this._isTrickModeTrackEnabled,
|
|
323
|
+
this._defaultAudioTrackSwitchingMode);
|
|
324
|
+
let found = false;
|
|
325
|
+
for (let i = 0; i < this._storedPeriodInfo.length; i++) {
|
|
326
|
+
if (this._storedPeriodInfo[i].period.start > period.start) {
|
|
327
|
+
this._storedPeriodInfo.splice(i, 0, periodObj);
|
|
328
|
+
found = true;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
if (!found) {
|
|
332
|
+
this._storedPeriodInfo.push(periodObj);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
if (!periodObj.isPeriodAdvertised) {
|
|
337
|
+
periodObj.isPeriodAdvertised = true;
|
|
321
338
|
this.trigger("newAvailablePeriods", [{ id: period.id,
|
|
322
339
|
start: period.start,
|
|
323
340
|
end: period.end }]);
|
|
341
|
+
if (this._isDisposed) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
324
344
|
}
|
|
325
345
|
|
|
326
346
|
if (periodObj[bufferType].dispatcher !== null) {
|
|
@@ -339,7 +359,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
339
359
|
if (nextAdaptation === undefined) {
|
|
340
360
|
const noRepErr = new MediaError("NO_PLAYABLE_REPRESENTATION",
|
|
341
361
|
`No ${bufferType} Representation can be played`,
|
|
342
|
-
{
|
|
362
|
+
{ adaptations: undefined });
|
|
343
363
|
this.trigger("error", noRepErr);
|
|
344
364
|
this.dispose();
|
|
345
365
|
return;
|
|
@@ -351,9 +371,11 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
351
371
|
const switchingMode = bufferType === "audio" ?
|
|
352
372
|
this._defaultAudioTrackSwitchingMode :
|
|
353
373
|
"reload";
|
|
354
|
-
const storedSettings = {
|
|
355
|
-
|
|
356
|
-
|
|
374
|
+
const storedSettings = {
|
|
375
|
+
adaptation: nextAdaptation,
|
|
376
|
+
switchingMode,
|
|
377
|
+
lockedRepresentations: new SharedReference<IRepresentationsChoice | null>(null),
|
|
378
|
+
};
|
|
357
379
|
typeInfo.storedSettings = storedSettings;
|
|
358
380
|
this.trigger("trackUpdate", { period: toExposedPeriod(period),
|
|
359
381
|
trackType: bufferType,
|
|
@@ -434,7 +456,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
434
456
|
*/
|
|
435
457
|
public getPeriodObjectFromPeriod(
|
|
436
458
|
period : Period
|
|
437
|
-
) :
|
|
459
|
+
) : ITSPeriodObject | undefined {
|
|
438
460
|
const periodObj = getPeriodItem(this._storedPeriodInfo, period.id);
|
|
439
461
|
if (periodObj === undefined && period !== undefined) {
|
|
440
462
|
return this._cachedPeriodInfo.get(period);
|
|
@@ -458,7 +480,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
458
480
|
*/
|
|
459
481
|
public getPeriodObjectFromId(
|
|
460
482
|
periodId : string
|
|
461
|
-
) :
|
|
483
|
+
) : ITSPeriodObject | undefined {
|
|
462
484
|
return getPeriodItem(this._storedPeriodInfo, periodId);
|
|
463
485
|
}
|
|
464
486
|
|
|
@@ -518,7 +540,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
518
540
|
* `null` if no Audio Representation should be locked.
|
|
519
541
|
*/
|
|
520
542
|
public setAudioTrack(
|
|
521
|
-
periodObj :
|
|
543
|
+
periodObj : ITSPeriodObject,
|
|
522
544
|
wantedId : string,
|
|
523
545
|
switchingMode : IAudioTrackSwitchingMode | undefined,
|
|
524
546
|
reprsToLock : string[] | null
|
|
@@ -536,7 +558,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
536
558
|
* @param {Object} periodObj - The concerned Period's object.
|
|
537
559
|
* @param {string} wantedId - adaptation id of the wanted track.
|
|
538
560
|
*/
|
|
539
|
-
public setTextTrack(periodObj :
|
|
561
|
+
public setTextTrack(periodObj : ITSPeriodObject, wantedId : string) : void {
|
|
540
562
|
return this._setAudioOrTextTrack("text", periodObj, wantedId, "direct", null);
|
|
541
563
|
}
|
|
542
564
|
|
|
@@ -552,7 +574,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
552
574
|
*/
|
|
553
575
|
private _setAudioOrTextTrack(
|
|
554
576
|
bufferType : "audio" | "text",
|
|
555
|
-
periodObj :
|
|
577
|
+
periodObj : ITSPeriodObject,
|
|
556
578
|
wantedId : string,
|
|
557
579
|
switchingMode : IAudioTrackSwitchingMode,
|
|
558
580
|
reprsToLock : string[] | null
|
|
@@ -566,16 +588,16 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
566
588
|
}
|
|
567
589
|
|
|
568
590
|
const typeInfo = periodObj[bufferType];
|
|
569
|
-
let lockedRepresentations
|
|
591
|
+
let lockedRepresentations: SharedReference<IRepresentationsChoice | null>;
|
|
570
592
|
if (reprsToLock === null) {
|
|
571
|
-
lockedRepresentations =
|
|
593
|
+
lockedRepresentations = new SharedReference<IRepresentationsChoice | null>(null);
|
|
572
594
|
} else {
|
|
573
595
|
const representationsToLock = this._getRepresentationsToLock(wantedAdaptation,
|
|
574
596
|
reprsToLock);
|
|
575
597
|
const repSwitchingMode = bufferType === "audio" ?
|
|
576
598
|
this._defaultAudioTrackSwitchingMode :
|
|
577
599
|
"direct" as const;
|
|
578
|
-
lockedRepresentations =
|
|
600
|
+
lockedRepresentations = new SharedReference<IRepresentationsChoice | null>({
|
|
579
601
|
representations: representationsToLock,
|
|
580
602
|
switchingMode: repSwitchingMode,
|
|
581
603
|
});
|
|
@@ -614,7 +636,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
614
636
|
* `null` if no Video Representation should be locked.
|
|
615
637
|
*/
|
|
616
638
|
public setVideoTrack(
|
|
617
|
-
periodObj :
|
|
639
|
+
periodObj : ITSPeriodObject,
|
|
618
640
|
wantedId : string,
|
|
619
641
|
switchingMode : IVideoTrackSwitchingMode | undefined,
|
|
620
642
|
reprsToLock : string[]| null
|
|
@@ -634,12 +656,12 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
634
656
|
|
|
635
657
|
let lockedRepresentations;
|
|
636
658
|
if (reprsToLock === null) {
|
|
637
|
-
lockedRepresentations =
|
|
659
|
+
lockedRepresentations = new SharedReference<IRepresentationsChoice | null>(null);
|
|
638
660
|
} else {
|
|
639
661
|
const representationsToLock = this._getRepresentationsToLock(wantedAdaptation,
|
|
640
662
|
reprsToLock);
|
|
641
663
|
const repSwitchingMode = DEFAULT_VIDEO_TRACK_SWITCHING_MODE;
|
|
642
|
-
lockedRepresentations =
|
|
664
|
+
lockedRepresentations = new SharedReference<IRepresentationsChoice | null>({
|
|
643
665
|
representations: representationsToLock,
|
|
644
666
|
switchingMode: repSwitchingMode,
|
|
645
667
|
});
|
|
@@ -677,7 +699,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
677
699
|
* @throws Error - Throws if the period given has not been added
|
|
678
700
|
*/
|
|
679
701
|
public disableTrack(
|
|
680
|
-
periodObj :
|
|
702
|
+
periodObj : ITSPeriodObject,
|
|
681
703
|
bufferType : "audio" | "video" | "text"
|
|
682
704
|
) : void {
|
|
683
705
|
const trackInfo = periodObj[bufferType];
|
|
@@ -728,7 +750,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
728
750
|
* known.
|
|
729
751
|
*/
|
|
730
752
|
public getChosenAudioTrack(
|
|
731
|
-
periodObj :
|
|
753
|
+
periodObj : ITSPeriodObject
|
|
732
754
|
) : IAudioTrack | null {
|
|
733
755
|
return periodObj.audio.storedSettings === null ?
|
|
734
756
|
null :
|
|
@@ -746,7 +768,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
746
768
|
* @returns {Object|null} - The text track chosen for this Period
|
|
747
769
|
*/
|
|
748
770
|
public getChosenTextTrack(
|
|
749
|
-
periodObj :
|
|
771
|
+
periodObj : ITSPeriodObject
|
|
750
772
|
) : ITextTrack | null {
|
|
751
773
|
return periodObj.text.storedSettings === null ?
|
|
752
774
|
null :
|
|
@@ -764,7 +786,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
764
786
|
* @returns {Object|null} - The video track chosen for this Period
|
|
765
787
|
*/
|
|
766
788
|
public getChosenVideoTrack(
|
|
767
|
-
periodObj :
|
|
789
|
+
periodObj : ITSPeriodObject
|
|
768
790
|
) : IVideoTrack | null {
|
|
769
791
|
if (periodObj.video.storedSettings === null) {
|
|
770
792
|
return null;
|
|
@@ -783,7 +805,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
783
805
|
* @returns {Array.<Object>}
|
|
784
806
|
*/
|
|
785
807
|
public getAvailableAudioTracks(
|
|
786
|
-
periodObj :
|
|
808
|
+
periodObj : ITSPeriodObject
|
|
787
809
|
) : IAvailableAudioTrack[]|undefined {
|
|
788
810
|
const storedSettings = periodObj.audio.storedSettings;
|
|
789
811
|
const currentId = storedSettings !== null ?
|
|
@@ -807,7 +829,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
807
829
|
* @returns {Array.<Object>}
|
|
808
830
|
*/
|
|
809
831
|
public getAvailableTextTracks(
|
|
810
|
-
periodObj :
|
|
832
|
+
periodObj : ITSPeriodObject
|
|
811
833
|
) : IAvailableTextTrack[]|undefined {
|
|
812
834
|
const storedSettings = periodObj.text.storedSettings;
|
|
813
835
|
const currentId = storedSettings !== null ?
|
|
@@ -832,7 +854,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
832
854
|
* @returns {Array.<Object>}
|
|
833
855
|
*/
|
|
834
856
|
public getAvailableVideoTracks(
|
|
835
|
-
periodObj :
|
|
857
|
+
periodObj : ITSPeriodObject
|
|
836
858
|
) : IAvailableVideoTrack[]|undefined {
|
|
837
859
|
const storedSettings = periodObj.video.storedSettings;
|
|
838
860
|
const currentId = storedSettings === null ?
|
|
@@ -860,7 +882,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
860
882
|
}
|
|
861
883
|
|
|
862
884
|
public getLockedAudioRepresentations(
|
|
863
|
-
periodObj :
|
|
885
|
+
periodObj : ITSPeriodObject
|
|
864
886
|
) : string[] | null {
|
|
865
887
|
const { storedSettings } = periodObj.audio;
|
|
866
888
|
if (storedSettings === null) {
|
|
@@ -873,7 +895,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
873
895
|
}
|
|
874
896
|
|
|
875
897
|
public getLockedVideoRepresentations(
|
|
876
|
-
periodObj :
|
|
898
|
+
periodObj : ITSPeriodObject
|
|
877
899
|
) : string[] | null {
|
|
878
900
|
const { storedSettings } = periodObj.video;
|
|
879
901
|
if (storedSettings === null) {
|
|
@@ -886,7 +908,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
886
908
|
}
|
|
887
909
|
|
|
888
910
|
public lockAudioRepresentations(
|
|
889
|
-
periodObj :
|
|
911
|
+
periodObj : ITSPeriodObject,
|
|
890
912
|
lockSettings : IAudioRepresentationsLockSettings
|
|
891
913
|
) : void {
|
|
892
914
|
const { storedSettings } = periodObj.audio;
|
|
@@ -904,7 +926,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
904
926
|
}
|
|
905
927
|
|
|
906
928
|
public lockVideoRepresentations(
|
|
907
|
-
periodObj :
|
|
929
|
+
periodObj : ITSPeriodObject,
|
|
908
930
|
lockSettings : IVideoRepresentationsLockSettings
|
|
909
931
|
) : void {
|
|
910
932
|
const { storedSettings } = periodObj.video;
|
|
@@ -921,7 +943,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
921
943
|
switchingMode });
|
|
922
944
|
}
|
|
923
945
|
|
|
924
|
-
public unlockAudioRepresentations(periodObj :
|
|
946
|
+
public unlockAudioRepresentations(periodObj : ITSPeriodObject) : void {
|
|
925
947
|
const { storedSettings } = periodObj.audio;
|
|
926
948
|
if (storedSettings === null ||
|
|
927
949
|
storedSettings.lockedRepresentations.getValue() === null)
|
|
@@ -931,7 +953,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
931
953
|
storedSettings.lockedRepresentations.setValue(null);
|
|
932
954
|
}
|
|
933
955
|
|
|
934
|
-
public unlockVideoRepresentations(periodObj :
|
|
956
|
+
public unlockVideoRepresentations(periodObj : ITSPeriodObject) : void {
|
|
935
957
|
const { storedSettings } = periodObj.video;
|
|
936
958
|
if (storedSettings === null ||
|
|
937
959
|
storedSettings.lockedRepresentations.getValue() === null)
|
|
@@ -952,25 +974,6 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
952
974
|
}
|
|
953
975
|
}
|
|
954
976
|
|
|
955
|
-
/**
|
|
956
|
-
* @param {Period} period
|
|
957
|
-
* @returns {Object}
|
|
958
|
-
*/
|
|
959
|
-
private _addPeriod(period : Period) : ITMPeriodObject {
|
|
960
|
-
const periodObj = generatePeriodInfo(period,
|
|
961
|
-
false,
|
|
962
|
-
this._isTrickModeTrackEnabled,
|
|
963
|
-
this._defaultAudioTrackSwitchingMode);
|
|
964
|
-
for (let i = 0; i < this._storedPeriodInfo.length; i++) {
|
|
965
|
-
if (this._storedPeriodInfo[i].period.start > period.start) {
|
|
966
|
-
this._storedPeriodInfo.splice(i, 0, periodObj);
|
|
967
|
-
return periodObj;
|
|
968
|
-
}
|
|
969
|
-
}
|
|
970
|
-
this._storedPeriodInfo.push(periodObj);
|
|
971
|
-
return periodObj;
|
|
972
|
-
}
|
|
973
|
-
|
|
974
977
|
private _resetVideoTrackChoices(reason : "trickmode-enabled" | "trickmode-disabled") {
|
|
975
978
|
for (let i = 0; i < this._storedPeriodInfo.length; i++) {
|
|
976
979
|
const periodObj = this._storedPeriodInfo[i];
|
|
@@ -1014,7 +1017,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
1014
1017
|
private _removePeriodObject(
|
|
1015
1018
|
index : number
|
|
1016
1019
|
) {
|
|
1017
|
-
if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
|
|
1020
|
+
if (__ENVIRONMENT__.CURRENT_ENV as number === __ENVIRONMENT__.DEV as number) {
|
|
1018
1021
|
assert(index < this._storedPeriodInfo.length, "Invalid index for Period removal");
|
|
1019
1022
|
}
|
|
1020
1023
|
const oldPeriodItem = this._storedPeriodInfo[index];
|
|
@@ -1057,7 +1060,7 @@ export default class TracksStore extends EventEmitter<ITracksStoreEvents> {
|
|
|
1057
1060
|
* @returns {number|undefined}
|
|
1058
1061
|
*/
|
|
1059
1062
|
function findPeriodIndex(
|
|
1060
|
-
periods :
|
|
1063
|
+
periods : ITSPeriodObject[],
|
|
1061
1064
|
period : Period
|
|
1062
1065
|
) : number|undefined {
|
|
1063
1066
|
for (let i = 0; i < periods.length; i++) {
|
|
@@ -1077,9 +1080,9 @@ function findPeriodIndex(
|
|
|
1077
1080
|
* @returns {Object|undefined}
|
|
1078
1081
|
*/
|
|
1079
1082
|
function getPeriodItem(
|
|
1080
|
-
periods :
|
|
1083
|
+
periods : ITSPeriodObject[],
|
|
1081
1084
|
periodId : string
|
|
1082
|
-
) :
|
|
1085
|
+
) : ITSPeriodObject|undefined {
|
|
1083
1086
|
for (let i = 0; i < periods.length; i++) {
|
|
1084
1087
|
const periodI = periods[i];
|
|
1085
1088
|
if (periodI.period.id === periodId) {
|
|
@@ -1089,13 +1092,13 @@ function getPeriodItem(
|
|
|
1089
1092
|
}
|
|
1090
1093
|
|
|
1091
1094
|
/**
|
|
1092
|
-
* A `
|
|
1095
|
+
* A `ITSPeriodObject` should only be removed once all References linked to it
|
|
1093
1096
|
* do not exist anymore, to keep the possibility of making track choices.
|
|
1094
1097
|
* @param {Object} periodObj
|
|
1095
1098
|
* @returns {boolean}
|
|
1096
1099
|
*/
|
|
1097
1100
|
function isPeriodItemRemovable(
|
|
1098
|
-
periodObj :
|
|
1101
|
+
periodObj : ITSPeriodObject
|
|
1099
1102
|
) : boolean {
|
|
1100
1103
|
return !periodObj.inManifest &&
|
|
1101
1104
|
periodObj.text?.dispatcher === null &&
|
|
@@ -1116,7 +1119,7 @@ function getRightVideoTrack(
|
|
|
1116
1119
|
}
|
|
1117
1120
|
|
|
1118
1121
|
/**
|
|
1119
|
-
* Generate an `
|
|
1122
|
+
* Generate an `ITSPeriodObject` object for the given Period, selecting the
|
|
1120
1123
|
* default track for each type.
|
|
1121
1124
|
* @param {Object} period
|
|
1122
1125
|
* @param {boolean} inManifest
|
|
@@ -1128,7 +1131,7 @@ function generatePeriodInfo(
|
|
|
1128
1131
|
inManifest : boolean,
|
|
1129
1132
|
isTrickModeTrackEnabled: boolean,
|
|
1130
1133
|
defaultAudioTrackSwitchingMode : IAudioTrackSwitchingMode
|
|
1131
|
-
) :
|
|
1134
|
+
) : ITSPeriodObject {
|
|
1132
1135
|
const audioAdaptation = period.getSupportedAdaptations("audio")[0];
|
|
1133
1136
|
const baseVideoAdaptation = period.getSupportedAdaptations("video")[0];
|
|
1134
1137
|
const videoAdaptation = getRightVideoTrack(baseVideoAdaptation,
|
|
@@ -1137,13 +1140,14 @@ function generatePeriodInfo(
|
|
|
1137
1140
|
const audioSettings = audioAdaptation !== undefined ?
|
|
1138
1141
|
{ adaptation: audioAdaptation,
|
|
1139
1142
|
switchingMode: defaultAudioTrackSwitchingMode,
|
|
1140
|
-
lockedRepresentations:
|
|
1143
|
+
lockedRepresentations: new SharedReference<IRepresentationsChoice | null>(null) } :
|
|
1141
1144
|
null;
|
|
1142
1145
|
const videoSettings = videoAdaptation !== undefined ?
|
|
1143
1146
|
{ adaptation: videoAdaptation,
|
|
1144
1147
|
adaptationBase: baseVideoAdaptation,
|
|
1145
1148
|
switchingMode: DEFAULT_VIDEO_TRACK_SWITCHING_MODE,
|
|
1146
|
-
lockedRepresentations:
|
|
1149
|
+
lockedRepresentations:
|
|
1150
|
+
new SharedReference<IRepresentationsChoice | null>(null) } :
|
|
1147
1151
|
null;
|
|
1148
1152
|
|
|
1149
1153
|
let textAdaptation : Adaptation | null = null;
|
|
@@ -1168,10 +1172,12 @@ function generatePeriodInfo(
|
|
|
1168
1172
|
if (textAdaptation !== null) {
|
|
1169
1173
|
textSettings = { adaptation: textAdaptation,
|
|
1170
1174
|
switchingMode: ("direct" as const),
|
|
1171
|
-
lockedRepresentations:
|
|
1175
|
+
lockedRepresentations:
|
|
1176
|
+
new SharedReference<IRepresentationsChoice | null>(null) };
|
|
1172
1177
|
}
|
|
1173
1178
|
return { period,
|
|
1174
1179
|
inManifest,
|
|
1180
|
+
isPeriodAdvertised: false,
|
|
1175
1181
|
isRemoved: false,
|
|
1176
1182
|
audio: { storedSettings: audioSettings,
|
|
1177
1183
|
dispatcher: null },
|
|
@@ -1186,7 +1192,7 @@ function toExposedPeriod(p: Period) : IPeriod {
|
|
|
1186
1192
|
}
|
|
1187
1193
|
|
|
1188
1194
|
/** Every information stored for a single Period. */
|
|
1189
|
-
export interface
|
|
1195
|
+
export interface ITSPeriodObject {
|
|
1190
1196
|
/** The Period in question. */
|
|
1191
1197
|
period : Period;
|
|
1192
1198
|
/**
|
|
@@ -1197,10 +1203,26 @@ export interface ITMPeriodObject {
|
|
|
1197
1203
|
* because some audio/video/text buffer still contains data of the given type.
|
|
1198
1204
|
*/
|
|
1199
1205
|
inManifest : boolean;
|
|
1206
|
+
/**
|
|
1207
|
+
* Set to `true` once a `newAvailablePeriods` event has been sent for this
|
|
1208
|
+
* particular Period.
|
|
1209
|
+
*/
|
|
1210
|
+
isPeriodAdvertised : boolean;
|
|
1211
|
+
/**
|
|
1212
|
+
* Information on the selected audio track and Representations for this Period.
|
|
1213
|
+
*/
|
|
1200
1214
|
audio : IAudioPeriodInfo;
|
|
1215
|
+
/**
|
|
1216
|
+
* Information on the selected text track and Representations for this Period.
|
|
1217
|
+
*/
|
|
1201
1218
|
text : ITextPeriodInfo;
|
|
1219
|
+
/**
|
|
1220
|
+
* Information on the selected video track and Representations for this Period.
|
|
1221
|
+
*/
|
|
1202
1222
|
video : IVideoPeriodInfo;
|
|
1203
|
-
|
|
1223
|
+
/**
|
|
1224
|
+
* If `true`, this object was since cleaned-up.
|
|
1225
|
+
*/
|
|
1204
1226
|
isRemoved : boolean;
|
|
1205
1227
|
}
|
|
1206
1228
|
|
|
@@ -1223,7 +1245,7 @@ interface IAudioPeriodInfo {
|
|
|
1223
1245
|
* by the user.
|
|
1224
1246
|
* `null` if no Representation is locked.
|
|
1225
1247
|
*/
|
|
1226
|
-
lockedRepresentations :
|
|
1248
|
+
lockedRepresentations : SharedReference<IRepresentationsChoice | null>;
|
|
1227
1249
|
} | null;
|
|
1228
1250
|
/**
|
|
1229
1251
|
* Tracks are internally emitted through RxJS's `Subject`s.
|
|
@@ -1256,7 +1278,7 @@ export interface ITextPeriodInfo {
|
|
|
1256
1278
|
* by the user.
|
|
1257
1279
|
* `null` if no Representation is locked.
|
|
1258
1280
|
*/
|
|
1259
|
-
lockedRepresentations :
|
|
1281
|
+
lockedRepresentations : SharedReference<IRepresentationsChoice | null>;
|
|
1260
1282
|
} | null;
|
|
1261
1283
|
/**
|
|
1262
1284
|
* Tracks are internally emitted through RxJS's `Subject`s.
|
|
@@ -1300,7 +1322,7 @@ export interface IVideoPeriodInfo {
|
|
|
1300
1322
|
* by the user.
|
|
1301
1323
|
* `null` if no Representation is locked.
|
|
1302
1324
|
*/
|
|
1303
|
-
lockedRepresentations :
|
|
1325
|
+
lockedRepresentations : SharedReference<IRepresentationsChoice | null>;
|
|
1304
1326
|
} | null;
|
|
1305
1327
|
/**
|
|
1306
1328
|
* Tracks are internally emitted through RxJS's `Subject`s.
|
|
@@ -1335,7 +1357,7 @@ type IVideoStoredSettings = {
|
|
|
1335
1357
|
* by the user.
|
|
1336
1358
|
* `null` if no Representation is locked.
|
|
1337
1359
|
*/
|
|
1338
|
-
lockedRepresentations :
|
|
1360
|
+
lockedRepresentations : SharedReference<IRepresentationsChoice | null>;
|
|
1339
1361
|
} | null;
|
|
1340
1362
|
|
|
1341
1363
|
/** Events emitted by the TracksStore. */
|
package/src/core/api/utils.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import config from "../../config";
|
|
18
18
|
import { IPlayerState } from "../../public_types";
|
|
19
19
|
import arrayIncludes from "../../utils/array_includes";
|
|
20
|
-
import
|
|
20
|
+
import SharedReference, {
|
|
21
21
|
IReadOnlySharedReference,
|
|
22
22
|
} from "../../utils/reference";
|
|
23
23
|
import { CancellationSignal } from "../../utils/task_canceller";
|
|
@@ -116,8 +116,8 @@ export function constructPlayerStateReference(
|
|
|
116
116
|
playbackObserver : IReadOnlyPlaybackObserver<IPlaybackObservation>,
|
|
117
117
|
cancelSignal : CancellationSignal
|
|
118
118
|
) : IReadOnlySharedReference<IPlayerState> {
|
|
119
|
-
const playerStateRef =
|
|
120
|
-
|
|
119
|
+
const playerStateRef = new SharedReference<IPlayerState>(PLAYER_STATES.LOADING,
|
|
120
|
+
cancelSignal);
|
|
121
121
|
initializer.addEventListener("loaded", () => {
|
|
122
122
|
if (playerStateRef.getValue() === PLAYER_STATES.LOADING) {
|
|
123
123
|
playerStateRef.setValue(PLAYER_STATES.LOADED);
|
|
@@ -38,7 +38,7 @@ const videoElt = document.createElement("video");
|
|
|
38
38
|
/* eslint-disable max-len */
|
|
39
39
|
describe("core - decrypt - global tests - getLicense", () => {
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
afterEach(() => {
|
|
42
42
|
jest.resetModules();
|
|
43
43
|
jest.restoreAllMocks();
|
|
44
44
|
});
|
|
@@ -212,7 +212,7 @@ describe("core - decrypt - global tests - getLicense", () => {
|
|
|
212
212
|
getTimeout: () => undefined,
|
|
213
213
|
nbRetries: 6,
|
|
214
214
|
ignoreLicenseRequests: false });
|
|
215
|
-
},
|
|
215
|
+
}, 25000);
|
|
216
216
|
|
|
217
217
|
it("should fail after 7 failures when getLicenseConfig.retry is set to `6`", async () => {
|
|
218
218
|
await checkGetLicense({ isGetLicensePromiseBased: true,
|
|
@@ -344,7 +344,7 @@ function checkGetLicense(
|
|
|
344
344
|
}
|
|
345
345
|
|
|
346
346
|
// == test ==
|
|
347
|
-
const { ContentDecryptorState } = jest.requireActual("../../
|
|
347
|
+
const { ContentDecryptorState } = jest.requireActual("../../types");
|
|
348
348
|
const ContentDecryptor = jest.requireActual("../../content_decryptor").default;
|
|
349
349
|
const contentDecryptor = new ContentDecryptor(videoElt, ksConfig);
|
|
350
350
|
|