rx-player 4.0.0-dev.2023092900 → 4.0.0-dev.2023102700
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +221 -12
- package/FILES.md +0 -4
- package/MAINTAINERS.md +1 -0
- package/README.md +0 -21
- 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.js +13 -9
- package/dist/_esm5.processed/compat/browser_detection.js +49 -34
- 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.js +78 -102
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.js +16 -6
- package/dist/_esm5.processed/compat/eme/custom_media_keys/moz_media_keys_constructor.js +18 -15
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ms_media_keys_constructor.js +7 -5
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +70 -88
- 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.js +91 -117
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys_constructor.js +7 -7
- package/dist/_esm5.processed/compat/eme/eme-api-implementation.js +82 -83
- 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.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.js +130 -102
- package/dist/_esm5.processed/compat/get_start_date.js +7 -4
- package/dist/_esm5.processed/compat/global_scope.js +7 -5
- package/dist/_esm5.processed/compat/has_issues_with_high_media_source_duration.js +6 -3
- package/dist/_esm5.processed/compat/index.js +47 -24
- package/dist/_esm5.processed/compat/is_codec_supported.js +8 -5
- package/dist/_esm5.processed/compat/is_debug_mode_enabled.js +4 -1
- package/dist/_esm5.processed/compat/is_node.js +5 -3
- package/dist/_esm5.processed/compat/is_seeking_approximate.js +5 -3
- package/dist/_esm5.processed/compat/is_vtt_cue.js +6 -3
- package/dist/_esm5.processed/compat/is_worker.js +3 -1
- package/dist/_esm5.processed/compat/make_vtt_cue.js +10 -7
- package/dist/_esm5.processed/compat/on_height_width_change.js +25 -22
- package/dist/_esm5.processed/compat/patch_webkit_source_buffer.js +19 -17
- 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.js +6 -3
- package/dist/_esm5.processed/config.js +15 -14
- package/dist/_esm5.processed/core/adaptive/adaptive_representation_selector.js +123 -94
- package/dist/_esm5.processed/core/adaptive/buffer_based_chooser.js +43 -42
- package/dist/_esm5.processed/core/adaptive/guess_based_chooser.js +37 -44
- package/dist/_esm5.processed/core/adaptive/index.js +4 -2
- package/dist/_esm5.processed/core/adaptive/network_analyzer.js +75 -74
- 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.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 -30
- 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.js +85 -58
- package/dist/_esm5.processed/core/api/playback_observer.js +135 -124
- package/dist/_esm5.processed/core/api/public_api.js +610 -684
- 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 -247
- package/dist/_esm5.processed/core/api/track_management/track_dispatcher.js +45 -58
- package/dist/_esm5.processed/core/api/track_management/tracks_store.js +300 -324
- package/dist/_esm5.processed/core/api/utils.js +32 -24
- package/dist/_esm5.processed/core/decrypt/__tests__/__global__/utils.js +155 -185
- package/dist/_esm5.processed/core/decrypt/attach_media_keys.js +42 -81
- package/dist/_esm5.processed/core/decrypt/clear_on_stop.js +15 -12
- package/dist/_esm5.processed/core/decrypt/content_decryptor.js +392 -510
- package/dist/_esm5.processed/core/decrypt/create_or_load_session.js +44 -90
- package/dist/_esm5.processed/core/decrypt/create_session.js +90 -149
- package/dist/_esm5.processed/core/decrypt/dispose_decryption_resources.js +24 -67
- package/dist/_esm5.processed/core/decrypt/find_key_system.js +94 -155
- package/dist/_esm5.processed/core/decrypt/get_key_system_configuration.js +6 -3
- package/dist/_esm5.processed/core/decrypt/get_media_keys.js +59 -109
- 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.js +84 -155
- package/dist/_esm5.processed/core/decrypt/set_server_certificate.js +50 -103
- package/dist/_esm5.processed/core/decrypt/types.js +5 -2
- package/dist/_esm5.processed/core/decrypt/utils/are_init_values_compatible.js +22 -19
- 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.js +15 -12
- package/dist/_esm5.processed/core/decrypt/utils/key_id_comparison.js +14 -21
- package/dist/_esm5.processed/core/decrypt/utils/key_session_record.js +26 -27
- package/dist/_esm5.processed/core/decrypt/utils/loaded_sessions_store.js +206 -310
- package/dist/_esm5.processed/core/decrypt/utils/media_keys_infos_store.js +8 -6
- package/dist/_esm5.processed/core/decrypt/utils/persistent_sessions_store.js +103 -102
- package/dist/_esm5.processed/core/decrypt/utils/serializable_bytes.js +13 -12
- 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 -313
- 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 -234
- 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 -261
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +73 -99
- package/dist/_esm5.processed/core/init/index.js +5 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +256 -320
- 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 -30
- package/dist/_esm5.processed/core/init/utils/create_stream_playback_observer.js +12 -10
- package/dist/_esm5.processed/core/init/utils/end_of_stream.js +30 -26
- package/dist/_esm5.processed/core/init/utils/get_initial_time.js +41 -38
- package/dist/_esm5.processed/core/init/utils/get_loaded_reference.js +13 -10
- package/dist/_esm5.processed/core/init/utils/initial_seek_and_play.js +29 -26
- package/dist/_esm5.processed/core/init/utils/initialize_content_decryption.js +30 -27
- package/dist/_esm5.processed/core/init/utils/media_source_duration_updater.js +58 -60
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +140 -161
- 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 -30
- package/dist/_esm5.processed/core/init/utils/stream_events_emitter/stream_events_emitter.js +71 -90
- 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 +130 -147
- 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.js +106 -125
- 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.js +24 -22
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.js +8 -3
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +151 -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.js +118 -166
- 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.js +2 -1
- package/dist/_esm5.processed/core/stream/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/get_time_ranges_for_content.js +14 -16
- package/dist/_esm5.processed/core/stream/orchestrator/index.js +4 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +175 -222
- package/dist/_esm5.processed/core/stream/period/index.js +19 -3
- package/dist/_esm5.processed/core/stream/period/period_stream.js +172 -216
- package/dist/_esm5.processed/core/stream/period/types.js +2 -1
- 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.js +80 -68
- 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.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 -48
- 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.js +22 -63
- 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.js +5 -2
- 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.js +17 -33
- 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 +17 -33
- package/dist/_esm5.processed/experimental/features/dash_wasm.js +14 -11
- package/dist/_esm5.processed/experimental/features/debug_element.js +7 -4
- package/dist/_esm5.processed/experimental/features/index.d.ts +1 -0
- package/dist/_esm5.processed/experimental/features/index.js +11 -3
- package/dist/_esm5.processed/experimental/features/local.js +9 -6
- package/dist/_esm5.processed/experimental/features/metaplaylist.js +9 -6
- 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.js +38 -43
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/api/probeMediaConfiguration.js +31 -34
- 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.js +20 -17
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/HDCPPolicy.js +21 -18
- 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 -16
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +11 -8
- 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 +4 -2
- package/dist/_esm5.processed/features/index.js +7 -4
- package/dist/_esm5.processed/features/list/dash.js +11 -8
- 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 -6
- package/dist/_esm5.processed/features/list/html_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/html_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/html_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/index.js +31 -14
- package/dist/_esm5.processed/features/list/native_sami_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_srt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_text_buffer.js +7 -4
- package/dist/_esm5.processed/features/list/native_ttml_parser.js +9 -6
- package/dist/_esm5.processed/features/list/native_vtt_parser.js +9 -6
- package/dist/_esm5.processed/features/list/smooth.js +9 -6
- package/dist/_esm5.processed/features/types.js +2 -1
- package/dist/_esm5.processed/index.js +24 -9
- 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.js +112 -134
- package/dist/_esm5.processed/manifest/period.js +38 -42
- package/dist/_esm5.processed/manifest/representation.js +78 -61
- 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.js +9 -7
- 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.js +8 -5
- 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.js +131 -129
- 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.js +18 -17
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +111 -111
- 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.js +86 -85
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +97 -82
- 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 +61 -69
- 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 +44 -40
- 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.js +2 -1
- 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 -238
- 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 +43 -38
- 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 +30 -27
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +71 -84
- 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 +75 -72
- package/dist/_esm5.processed/parsers/manifest/metaplaylist/representation_index.js +52 -52
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +200 -176
- 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.js +102 -98
- package/dist/_esm5.processed/parsers/manifest/smooth/shared_smooth_segment_timeline.js +49 -48
- 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.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.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 -60
- 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 -23
- 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 +91 -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 +106 -96
- package/dist/_esm5.processed/transports/smooth/segment_loader.d.ts +2 -2
- 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.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 -18
- 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.js +13 -10
- 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 +5 -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 +13 -9
- 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.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.js +4 -1
- 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.js +94 -71
- package/dist/_esm5.processed/utils/reference.js +48 -52
- package/dist/_esm5.processed/utils/request/fetch.js +79 -109
- package/dist/_esm5.processed/utils/request/index.js +9 -4
- package/dist/_esm5.processed/utils/request/xhr.js +49 -37
- 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 -73
- 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.js +5 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +43758 -45493
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +1 -22
- package/package.json +22 -23
- 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/update-version +1 -4
- package/sonar-project.properties +1 -1
- package/src/compat/event_listeners.ts +8 -8
- package/src/compat/global_scope.ts +2 -0
- package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +3 -3
- package/src/core/adaptive/adaptive_representation_selector.ts +27 -9
- package/src/core/adaptive/buffer_based_chooser.ts +1 -1
- package/src/core/adaptive/network_analyzer.ts +5 -4
- package/src/core/api/public_api.ts +2 -2
- package/src/core/api/track_management/track_dispatcher.ts +2 -1
- package/src/core/decrypt/__tests__/__global__/server_certificate.test.ts +1 -1
- package/src/core/fetchers/cdn_prioritizer.ts +1 -1
- package/src/experimental/features/__tests__/index.test.ts +19 -0
- package/src/experimental/features/index.ts +1 -0
- package/src/features/list/__tests__/index.test.ts +49 -0
- package/src/index.ts +28 -3
- package/src/transports/smooth/segment_loader.ts +4 -4
- package/src/typings/globals.d.ts +0 -42
- package/src/utils/request/fetch.ts +1 -1
- package/src/utils/request/xhr.ts +1 -1
- package/tsconfig.json +1 -1
- package/tsconfig.modules.json +3 -3
- package/dist/_esm5.processed/features/initialize_features.d.ts +0 -19
- package/dist/_esm5.processed/features/initialize_features.js +0 -108
- package/src/features/__tests__/initialize_features.test.ts +0 -657
- package/src/features/initialize_features.ts +0 -129
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,35 +14,36 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const log_1 = require("../../../log");
|
|
19
|
+
const get_first_time_from_adaptation_1 = require("./get_first_time_from_adaptation");
|
|
18
20
|
/**
|
|
19
21
|
* @param {Object} manifest
|
|
20
22
|
* @returns {number | undefined}
|
|
21
23
|
*/
|
|
22
|
-
|
|
23
|
-
for (
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
function getMinimumPosition(periods) {
|
|
25
|
+
for (let i = 0; i <= periods.length - 1; i++) {
|
|
26
|
+
const periodAdaptations = periods[i].adaptations;
|
|
27
|
+
const firstAudioAdaptationFromPeriod = periodAdaptations.audio === undefined ?
|
|
26
28
|
undefined :
|
|
27
29
|
periodAdaptations.audio[0];
|
|
28
|
-
|
|
30
|
+
const firstVideoAdaptationFromPeriod = periodAdaptations.video === undefined ?
|
|
29
31
|
undefined :
|
|
30
32
|
periodAdaptations.video[0];
|
|
31
33
|
if (firstAudioAdaptationFromPeriod !== undefined ||
|
|
32
34
|
firstVideoAdaptationFromPeriod !== undefined) {
|
|
33
35
|
// null == no segment
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
let minimumAudioPosition = null;
|
|
37
|
+
let minimumVideoPosition = null;
|
|
36
38
|
if (firstAudioAdaptationFromPeriod !== undefined) {
|
|
37
|
-
|
|
39
|
+
const firstPosition = (0, get_first_time_from_adaptation_1.default)(firstAudioAdaptationFromPeriod);
|
|
38
40
|
if (firstPosition === undefined) {
|
|
39
41
|
return undefined;
|
|
40
42
|
}
|
|
41
43
|
minimumAudioPosition = firstPosition;
|
|
42
44
|
}
|
|
43
45
|
if (firstVideoAdaptationFromPeriod !== undefined) {
|
|
44
|
-
|
|
46
|
+
const firstPosition = (0, get_first_time_from_adaptation_1.default)(firstVideoAdaptationFromPeriod);
|
|
45
47
|
if (firstPosition === undefined) {
|
|
46
48
|
return undefined;
|
|
47
49
|
}
|
|
@@ -51,7 +53,7 @@ export default function getMinimumPosition(periods) {
|
|
|
51
53
|
minimumAudioPosition === null) ||
|
|
52
54
|
(firstVideoAdaptationFromPeriod !== undefined &&
|
|
53
55
|
minimumVideoPosition === null)) {
|
|
54
|
-
|
|
56
|
+
log_1.default.info("Parser utils: found Period with no segment. ", "Going to next one to calculate first position");
|
|
55
57
|
return undefined;
|
|
56
58
|
}
|
|
57
59
|
if (minimumVideoPosition !== null) {
|
|
@@ -66,3 +68,4 @@ export default function getMinimumPosition(periods) {
|
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
}
|
|
71
|
+
exports.default = getMinimumPosition;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,7 +14,9 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.checkDiscontinuity = exports.getTimescaledRange = exports.fromIndexTime = exports.toIndexTime = exports.getIndexSegmentEnd = exports.calculateRepeat = void 0;
|
|
19
|
+
const is_null_or_undefined_1 = require("../../../utils/is_null_or_undefined");
|
|
17
20
|
/**
|
|
18
21
|
* Calculate the number of times a timeline element repeats based on the next
|
|
19
22
|
* element.
|
|
@@ -22,8 +25,8 @@ import isNullOrUndefined from "../../../utils/is_null_or_undefined";
|
|
|
22
25
|
* @param {number|undefined} maxPosition
|
|
23
26
|
* @returns {Number}
|
|
24
27
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
function calculateRepeat(element, nextElement, maxPosition) {
|
|
29
|
+
const { repeatCount } = element;
|
|
27
30
|
if (repeatCount >= 0) {
|
|
28
31
|
return repeatCount;
|
|
29
32
|
}
|
|
@@ -31,8 +34,8 @@ export function calculateRepeat(element, nextElement, maxPosition) {
|
|
|
31
34
|
// that the duration indicated in @d attribute repeats until the
|
|
32
35
|
// start of the next S element, the end of the Period or until the
|
|
33
36
|
// next MPD update.
|
|
34
|
-
|
|
35
|
-
if (!
|
|
37
|
+
let segmentEnd;
|
|
38
|
+
if (!(0, is_null_or_undefined_1.default)(nextElement)) {
|
|
36
39
|
segmentEnd = nextElement.start;
|
|
37
40
|
}
|
|
38
41
|
else if (maxPosition !== undefined) {
|
|
@@ -43,6 +46,7 @@ export function calculateRepeat(element, nextElement, maxPosition) {
|
|
|
43
46
|
}
|
|
44
47
|
return Math.ceil((segmentEnd - element.start) / element.duration) - 1;
|
|
45
48
|
}
|
|
49
|
+
exports.calculateRepeat = calculateRepeat;
|
|
46
50
|
/**
|
|
47
51
|
* Returns end of the segment given, in index time.
|
|
48
52
|
* @param {Object} segment
|
|
@@ -50,14 +54,15 @@ export function calculateRepeat(element, nextElement, maxPosition) {
|
|
|
50
54
|
* @param {number} maxPosition
|
|
51
55
|
* @returns {Number}
|
|
52
56
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
function getIndexSegmentEnd(segment, nextSegment, maxPosition) {
|
|
58
|
+
const { start, duration } = segment;
|
|
55
59
|
if (duration <= 0) {
|
|
56
60
|
return start;
|
|
57
61
|
}
|
|
58
|
-
|
|
62
|
+
const repeat = calculateRepeat(segment, nextSegment, maxPosition);
|
|
59
63
|
return start + (repeat + 1) * duration;
|
|
60
64
|
}
|
|
65
|
+
exports.getIndexSegmentEnd = getIndexSegmentEnd;
|
|
61
66
|
/**
|
|
62
67
|
* Convert from `presentationTime`, the time of the segment at the moment it
|
|
63
68
|
* is decoded to `mediaTime`, the original time the segments point at.
|
|
@@ -65,10 +70,11 @@ export function getIndexSegmentEnd(segment, nextSegment, maxPosition) {
|
|
|
65
70
|
* @param {Object} indexOptions
|
|
66
71
|
* @returns {number}
|
|
67
72
|
*/
|
|
68
|
-
|
|
73
|
+
function toIndexTime(time, indexOptions) {
|
|
69
74
|
var _a;
|
|
70
75
|
return time * indexOptions.timescale + ((_a = indexOptions.indexTimeOffset) !== null && _a !== void 0 ? _a : 0);
|
|
71
76
|
}
|
|
77
|
+
exports.toIndexTime = toIndexTime;
|
|
72
78
|
/**
|
|
73
79
|
* Convert from `mediaTime`, the original time the segments point at to
|
|
74
80
|
* `presentationTime`, the time of the segment at the moment it is decoded.
|
|
@@ -76,10 +82,11 @@ export function toIndexTime(time, indexOptions) {
|
|
|
76
82
|
* @param {Object} indexOptions
|
|
77
83
|
* @returns {number}
|
|
78
84
|
*/
|
|
79
|
-
|
|
85
|
+
function fromIndexTime(time, indexOptions) {
|
|
80
86
|
var _a;
|
|
81
87
|
return (time - ((_a = indexOptions.indexTimeOffset) !== null && _a !== void 0 ? _a : 0)) / indexOptions.timescale;
|
|
82
88
|
}
|
|
89
|
+
exports.fromIndexTime = fromIndexTime;
|
|
83
90
|
/**
|
|
84
91
|
* @param {Number} start
|
|
85
92
|
* @param {Number} duration
|
|
@@ -88,10 +95,11 @@ export function fromIndexTime(time, indexOptions) {
|
|
|
88
95
|
* - up {Number}: timescaled timestamp of the beginning time
|
|
89
96
|
* - to {Number}: timescaled timestamp of the end time (start time + duration)
|
|
90
97
|
*/
|
|
91
|
-
|
|
98
|
+
function getTimescaledRange(start, duration, timescale) {
|
|
92
99
|
return [start * timescale,
|
|
93
100
|
(start + duration) * timescale];
|
|
94
101
|
}
|
|
102
|
+
exports.getTimescaledRange = getTimescaledRange;
|
|
95
103
|
/**
|
|
96
104
|
* Get index of the last segment in the timeline starting before/at the given
|
|
97
105
|
* timescaled time.
|
|
@@ -102,10 +110,10 @@ export function getTimescaledRange(start, duration, timescale) {
|
|
|
102
110
|
* @returns {Number}
|
|
103
111
|
*/
|
|
104
112
|
function getIndexOfLastObjectBefore(timeline, timeTScaled) {
|
|
105
|
-
|
|
106
|
-
|
|
113
|
+
let low = 0;
|
|
114
|
+
let high = timeline.length;
|
|
107
115
|
while (low < high) {
|
|
108
|
-
|
|
116
|
+
const mid = (low + high) >>> 1; // Divide by two + floor
|
|
109
117
|
if (timeline[mid].start <= timeTScaled) {
|
|
110
118
|
low = mid + 1;
|
|
111
119
|
}
|
|
@@ -121,27 +129,28 @@ function getIndexOfLastObjectBefore(timeline, timeTScaled) {
|
|
|
121
129
|
* @param {number} [maxPosition]
|
|
122
130
|
* @returns {number|null}
|
|
123
131
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
132
|
+
function checkDiscontinuity(index, timeSec, maxPosition) {
|
|
133
|
+
const { timeline } = index;
|
|
134
|
+
const scaledTime = toIndexTime(timeSec, index);
|
|
127
135
|
if (scaledTime < 0) {
|
|
128
136
|
return null;
|
|
129
137
|
}
|
|
130
|
-
|
|
138
|
+
const segmentIndex = getIndexOfLastObjectBefore(timeline, scaledTime);
|
|
131
139
|
if (segmentIndex < 0 || segmentIndex >= timeline.length - 1) {
|
|
132
140
|
return null;
|
|
133
141
|
}
|
|
134
|
-
|
|
142
|
+
const timelineItem = timeline[segmentIndex];
|
|
135
143
|
if (timelineItem.duration <= 0) {
|
|
136
144
|
return null;
|
|
137
145
|
}
|
|
138
|
-
|
|
146
|
+
const nextTimelineItem = timeline[segmentIndex + 1];
|
|
139
147
|
if (nextTimelineItem === undefined) {
|
|
140
148
|
return null;
|
|
141
149
|
}
|
|
142
|
-
|
|
143
|
-
|
|
150
|
+
const nextStart = nextTimelineItem.start;
|
|
151
|
+
const segmentEnd = getIndexSegmentEnd(timelineItem, nextTimelineItem, maxPosition);
|
|
144
152
|
return scaledTime >= segmentEnd &&
|
|
145
153
|
scaledTime < nextStart ? fromIndexTime(nextStart, index) :
|
|
146
154
|
null;
|
|
147
155
|
}
|
|
156
|
+
exports.checkDiscontinuity = checkDiscontinuity;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
18
|
/**
|
|
17
19
|
* Returns true if a Segment returned by the corresponding index is still
|
|
18
20
|
* considered available.
|
|
@@ -24,10 +26,10 @@
|
|
|
24
26
|
* @param {number} timeline
|
|
25
27
|
* @returns {Boolean|undefined}
|
|
26
28
|
*/
|
|
27
|
-
|
|
28
|
-
for (
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
function isSegmentStillAvailable(segment, timeline, timescale, indexTimeOffset) {
|
|
30
|
+
for (let i = 0; i < timeline.length; i++) {
|
|
31
|
+
const tSegment = timeline[i];
|
|
32
|
+
const tSegmentTime = (tSegment.start - indexTimeOffset) / timescale;
|
|
31
33
|
if (tSegmentTime > segment.time) {
|
|
32
34
|
return false;
|
|
33
35
|
}
|
|
@@ -41,11 +43,12 @@ export default function isSegmentStillAvailable(segment, timeline, timescale, in
|
|
|
41
43
|
}
|
|
42
44
|
else { // tSegment.start < segment.time
|
|
43
45
|
if (tSegment.repeatCount >= 0 && tSegment.duration !== undefined) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
const timeDiff = tSegmentTime - tSegment.start;
|
|
47
|
+
const repeat = (timeDiff / tSegment.duration) - 1;
|
|
46
48
|
return repeat % 1 === 0 && repeat <= tSegment.repeatCount;
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
return false;
|
|
51
53
|
}
|
|
54
|
+
exports.default = isSegmentStillAvailable;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,18 +14,10 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ar[i] = from[i];
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
24
|
-
};
|
|
25
|
-
import { MediaError } from "../../../errors";
|
|
26
|
-
import log from "../../../log";
|
|
27
|
-
import { getIndexSegmentEnd, } from "./index_helpers";
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const errors_1 = require("../../../errors");
|
|
19
|
+
const log_1 = require("../../../log");
|
|
20
|
+
const index_helpers_1 = require("./index_helpers");
|
|
28
21
|
/**
|
|
29
22
|
* Update a complete array of segments in a given timeline with a [generally]
|
|
30
23
|
* smaller but [generally] newer set of segments.
|
|
@@ -41,36 +34,36 @@ import { getIndexSegmentEnd, } from "./index_helpers";
|
|
|
41
34
|
* @param {Array.<Object>} newTimeline
|
|
42
35
|
* @returns {boolean}
|
|
43
36
|
*/
|
|
44
|
-
|
|
37
|
+
function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
45
38
|
if (oldTimeline.length === 0) {
|
|
46
|
-
oldTimeline.push
|
|
39
|
+
oldTimeline.push(...newTimeline);
|
|
47
40
|
return true;
|
|
48
41
|
}
|
|
49
42
|
else if (newTimeline.length === 0) {
|
|
50
43
|
return false;
|
|
51
44
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
45
|
+
const prevTimelineLength = oldTimeline.length;
|
|
46
|
+
const newIndexStart = newTimeline[0].start;
|
|
47
|
+
const oldLastElt = oldTimeline[prevTimelineLength - 1];
|
|
48
|
+
const oldIndexEnd = (0, index_helpers_1.getIndexSegmentEnd)(oldLastElt, newTimeline[0]);
|
|
56
49
|
if (oldIndexEnd < newIndexStart) {
|
|
57
|
-
throw new MediaError("MANIFEST_UPDATE_ERROR", "Cannot perform partial update: not enough data");
|
|
50
|
+
throw new errors_1.MediaError("MANIFEST_UPDATE_ERROR", "Cannot perform partial update: not enough data");
|
|
58
51
|
}
|
|
59
|
-
for (
|
|
60
|
-
|
|
52
|
+
for (let i = prevTimelineLength - 1; i >= 0; i--) {
|
|
53
|
+
const currStart = oldTimeline[i].start;
|
|
61
54
|
if (currStart === newIndexStart) {
|
|
62
55
|
// replace that one and those after it
|
|
63
|
-
|
|
64
|
-
oldTimeline.splice
|
|
56
|
+
const nbEltsToRemove = prevTimelineLength - i;
|
|
57
|
+
oldTimeline.splice(i, nbEltsToRemove, ...newTimeline);
|
|
65
58
|
return false;
|
|
66
59
|
}
|
|
67
60
|
else if (currStart < newIndexStart) { // first to be before
|
|
68
|
-
|
|
61
|
+
const currElt = oldTimeline[i];
|
|
69
62
|
if (currElt.start + currElt.duration > newIndexStart) {
|
|
70
63
|
// The new Manifest overlaps a previous segment (weird)
|
|
71
64
|
// In that improbable case, we'll just completely replace segments
|
|
72
|
-
|
|
73
|
-
oldTimeline.splice
|
|
65
|
+
log_1.default.warn("RepresentationIndex: Manifest update removed all previous segments");
|
|
66
|
+
oldTimeline.splice(0, prevTimelineLength, ...newTimeline);
|
|
74
67
|
return true;
|
|
75
68
|
}
|
|
76
69
|
else if (currElt.repeatCount === undefined || currElt.repeatCount <= 0) {
|
|
@@ -78,61 +71,61 @@ export default function updateSegmentTimeline(oldTimeline, newTimeline) {
|
|
|
78
71
|
currElt.repeatCount = Math.floor((newIndexStart - currElt.start) /
|
|
79
72
|
currElt.duration) - 1;
|
|
80
73
|
}
|
|
81
|
-
oldTimeline.splice
|
|
74
|
+
oldTimeline.splice(i + 1, prevTimelineLength - (i + 1), ...newTimeline);
|
|
82
75
|
return false;
|
|
83
76
|
}
|
|
84
77
|
// else, there is a positive repeat we might want to update
|
|
85
|
-
|
|
78
|
+
const eltLastTime = currElt.start + currElt.duration * (currElt.repeatCount + 1);
|
|
86
79
|
if (eltLastTime <= newIndexStart) { // our new index comes directly after
|
|
87
80
|
// put it after this one
|
|
88
|
-
oldTimeline.splice
|
|
89
|
-
oldTimeline, __spreadArray([i + 1, prevTimelineLength - (i + 1)], newTimeline, false));
|
|
81
|
+
oldTimeline.splice(i + 1, prevTimelineLength - (i + 1), ...newTimeline);
|
|
90
82
|
return false;
|
|
91
83
|
}
|
|
92
|
-
|
|
84
|
+
const newCurrRepeat = ((newIndexStart - currElt.start) / currElt.duration) - 1;
|
|
93
85
|
if (newCurrRepeat % 1 === 0 && currElt.duration === newTimeline[0].duration) {
|
|
94
|
-
|
|
86
|
+
const newRepeatCount = newTimeline[0].repeatCount < 0 ?
|
|
95
87
|
-1 : // === maximum possible repeat
|
|
96
88
|
newTimeline[0].repeatCount + newCurrRepeat + 1;
|
|
97
89
|
// replace that one and those after it
|
|
98
|
-
oldTimeline.splice
|
|
90
|
+
oldTimeline.splice(i, prevTimelineLength - i, ...newTimeline);
|
|
99
91
|
oldTimeline[i].start = currElt.start;
|
|
100
92
|
oldTimeline[i].repeatCount = newRepeatCount;
|
|
101
93
|
return false;
|
|
102
94
|
}
|
|
103
|
-
|
|
95
|
+
log_1.default.warn("RepresentationIndex: Manifest update removed previous segments");
|
|
104
96
|
oldTimeline[i].repeatCount = Math.floor(newCurrRepeat);
|
|
105
97
|
// put it after this one
|
|
106
|
-
oldTimeline.splice
|
|
98
|
+
oldTimeline.splice(i + 1, prevTimelineLength - (i + 1), ...newTimeline);
|
|
107
99
|
return false;
|
|
108
100
|
}
|
|
109
101
|
}
|
|
110
102
|
// if we got here, it means that every segments in the previous manifest are
|
|
111
103
|
// after the new one. This is unusual.
|
|
112
104
|
// Either the new one has more depth or it's an older one.
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
const prevLastElt = oldTimeline[oldTimeline.length - 1];
|
|
106
|
+
const newLastElt = newTimeline[newTimeline.length - 1];
|
|
115
107
|
if (prevLastElt.repeatCount !== undefined && prevLastElt.repeatCount < 0) {
|
|
116
108
|
if (prevLastElt.start > newLastElt.start) {
|
|
117
|
-
|
|
109
|
+
log_1.default.warn("RepresentationIndex: The new index is older than the previous one");
|
|
118
110
|
return false;
|
|
119
111
|
}
|
|
120
112
|
else { // the new has more depth
|
|
121
|
-
|
|
122
|
-
oldTimeline.splice
|
|
113
|
+
log_1.default.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
|
|
114
|
+
oldTimeline.splice(0, prevTimelineLength, ...newTimeline);
|
|
123
115
|
return true;
|
|
124
116
|
}
|
|
125
117
|
}
|
|
126
|
-
|
|
118
|
+
const prevLastTime = prevLastElt.start + prevLastElt.duration *
|
|
127
119
|
(prevLastElt.repeatCount + 1);
|
|
128
|
-
|
|
120
|
+
const newLastTime = newLastElt.start + newLastElt.duration *
|
|
129
121
|
(newLastElt.repeatCount + 1);
|
|
130
122
|
if (prevLastTime >= newLastTime) {
|
|
131
|
-
|
|
123
|
+
log_1.default.warn("RepresentationIndex: The new index is older than the previous one");
|
|
132
124
|
return false;
|
|
133
125
|
}
|
|
134
126
|
// the new one has more depth. full update
|
|
135
|
-
|
|
136
|
-
oldTimeline.splice
|
|
127
|
+
log_1.default.warn("RepresentationIndex: The new index is \"bigger\" than the previous one");
|
|
128
|
+
oldTimeline.splice(0, prevTimelineLength, ...newTimeline);
|
|
137
129
|
return true;
|
|
138
130
|
}
|
|
131
|
+
exports.default = updateSegmentTimeline;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,4 +14,4 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Copyright 2015 CANAL+ Group
|
|
3
4
|
*
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
* See the License for the specific language governing permissions and
|
|
14
15
|
* limitations under the License.
|
|
15
16
|
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
18
|
// __VERY__ simple SAMI parser, based on ugly-but-working REGEXP:
|
|
17
19
|
// - the text, start and end times are correctly parsed.
|
|
18
20
|
// - only text for the given language is parsed.
|
|
@@ -25,26 +27,26 @@
|
|
|
25
27
|
* /!\ This file is feature-switchable.
|
|
26
28
|
* It always should be imported through the `features` object.
|
|
27
29
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const is_non_empty_string_1 = require("../../../utils/is_non_empty_string");
|
|
31
|
+
const HTML_ENTITIES = /&#([0-9]+);/g;
|
|
32
|
+
const BR = /<br>/gi;
|
|
33
|
+
const STYLE = /<style[^>]*>([\s\S]*?)<\/style[^>]*>/i;
|
|
34
|
+
const PARAG = /\s*<p (?:class=([^>]+))?>(.*)/i;
|
|
35
|
+
const START = /<sync[^>]+?start="?([0-9]*)"?[^0-9]/i;
|
|
34
36
|
/**
|
|
35
37
|
* Returns classnames for every languages.
|
|
36
38
|
* @param {string} str
|
|
37
39
|
* @returns {Object}
|
|
38
40
|
*/
|
|
39
41
|
function getClassNameByLang(str) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
const ruleRe = /\.(\S+)\s*{([^}]*)}/gi;
|
|
43
|
+
const langs = {};
|
|
44
|
+
let m = ruleRe.exec(str);
|
|
43
45
|
while (m !== null) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
langs[lang] =
|
|
46
|
+
const name = m[1];
|
|
47
|
+
const lang = getCSSProperty(m[2], "lang");
|
|
48
|
+
if (name != null && lang != null) {
|
|
49
|
+
langs[lang] = name;
|
|
48
50
|
}
|
|
49
51
|
m = ruleRe.exec(str);
|
|
50
52
|
}
|
|
@@ -57,8 +59,8 @@ function getClassNameByLang(str) {
|
|
|
57
59
|
* @returns {string}
|
|
58
60
|
*/
|
|
59
61
|
function getPCSSRules(str) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
const pRuleRegex = /p\s*{([^}]*)}/gi;
|
|
63
|
+
const rule = pRuleRegex.exec(str);
|
|
62
64
|
if (rule === null) {
|
|
63
65
|
return "";
|
|
64
66
|
}
|
|
@@ -70,7 +72,7 @@ function getPCSSRules(str) {
|
|
|
70
72
|
* @returns {string|null} - value of the property. Null if not found.
|
|
71
73
|
*/
|
|
72
74
|
function getCSSProperty(str, name) {
|
|
73
|
-
|
|
75
|
+
const matches = (new RegExp("\\s*" + name + ":\\s*(\\S+);", "i")).exec(str);
|
|
74
76
|
return Array.isArray(matches) ? matches[1] :
|
|
75
77
|
null;
|
|
76
78
|
}
|
|
@@ -80,7 +82,7 @@ function getCSSProperty(str, name) {
|
|
|
80
82
|
*/
|
|
81
83
|
function decodeEntities(text) {
|
|
82
84
|
return text
|
|
83
|
-
.replace(HTML_ENTITIES,
|
|
85
|
+
.replace(HTML_ENTITIES, (_, $1) => String.fromCharCode(Number($1)));
|
|
84
86
|
}
|
|
85
87
|
/**
|
|
86
88
|
* Because sami is not really html... we have to use
|
|
@@ -94,24 +96,24 @@ function decodeEntities(text) {
|
|
|
94
96
|
* @param {string} lang
|
|
95
97
|
*/
|
|
96
98
|
function parseSami(smi, timeOffset, lang) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
const syncOpen = /<sync[ >]/ig;
|
|
100
|
+
const syncClose = /<sync[ >]|<\/body>/ig;
|
|
101
|
+
const subs = [];
|
|
102
|
+
const styleMatches = STYLE.exec(smi);
|
|
103
|
+
const css = Array.isArray(styleMatches) ? styleMatches[1] :
|
|
102
104
|
"";
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
let up;
|
|
106
|
+
let to;
|
|
105
107
|
// FIXME Is that wanted?
|
|
106
108
|
// previously written as let to = SyncClose.exec(smi); but never used
|
|
107
109
|
syncClose.exec(smi);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (
|
|
110
|
+
const langs = getClassNameByLang(css);
|
|
111
|
+
const pCSS = getPCSSRules(css);
|
|
112
|
+
let klass;
|
|
113
|
+
if ((0, is_non_empty_string_1.default)(lang)) {
|
|
112
114
|
klass = langs[lang];
|
|
113
115
|
if (klass === undefined) {
|
|
114
|
-
throw new Error(
|
|
116
|
+
throw new Error(`sami: could not find lang ${lang} in CSS`);
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
119
|
while (true) {
|
|
@@ -123,12 +125,12 @@ function parseSami(smi, timeOffset, lang) {
|
|
|
123
125
|
if (up === null || to === null || up.index >= to.index) {
|
|
124
126
|
throw new Error("parse error");
|
|
125
127
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
+
const str = smi.slice(up.index, to.index);
|
|
129
|
+
const tim = START.exec(str);
|
|
128
130
|
if (!Array.isArray(tim)) {
|
|
129
131
|
throw new Error("parse error (sync time attribute)");
|
|
130
132
|
}
|
|
131
|
-
|
|
133
|
+
const start = +tim[1];
|
|
132
134
|
if (isNaN(start)) {
|
|
133
135
|
throw new Error("parse error (sync time attribute NaN)");
|
|
134
136
|
}
|
|
@@ -136,13 +138,13 @@ function parseSami(smi, timeOffset, lang) {
|
|
|
136
138
|
}
|
|
137
139
|
return subs;
|
|
138
140
|
function appendToSubs(lines, start) {
|
|
139
|
-
|
|
141
|
+
let i = lines.length;
|
|
140
142
|
while (--i >= 0) {
|
|
141
|
-
|
|
143
|
+
const paragraphInfos = PARAG.exec(lines[i]);
|
|
142
144
|
if (!Array.isArray(paragraphInfos)) {
|
|
143
145
|
continue;
|
|
144
146
|
}
|
|
145
|
-
|
|
147
|
+
const [, className, txt] = paragraphInfos;
|
|
146
148
|
if (klass !== className) {
|
|
147
149
|
continue;
|
|
148
150
|
}
|
|
@@ -150,9 +152,9 @@ function parseSami(smi, timeOffset, lang) {
|
|
|
150
152
|
subs[subs.length - 1].end = start;
|
|
151
153
|
}
|
|
152
154
|
else {
|
|
153
|
-
|
|
155
|
+
const wrapperEl = document.createElement("DIV");
|
|
154
156
|
wrapperEl.className = "rxp-texttrack-region";
|
|
155
|
-
|
|
157
|
+
const divEl = document.createElement("DIV");
|
|
156
158
|
divEl.className = "rxp-texttrack-div";
|
|
157
159
|
divEl.style.position = "absolute";
|
|
158
160
|
divEl.style.bottom = "0";
|
|
@@ -162,17 +164,17 @@ function parseSami(smi, timeOffset, lang) {
|
|
|
162
164
|
"1px -1px 0 #000," +
|
|
163
165
|
"-1px 1px 0 #000," +
|
|
164
166
|
"1px 1px 0 #000";
|
|
165
|
-
|
|
167
|
+
const pEl = document.createElement("div");
|
|
166
168
|
pEl.className = "rxp-texttrack-p";
|
|
167
|
-
if (
|
|
169
|
+
if ((0, is_non_empty_string_1.default)(pCSS)) {
|
|
168
170
|
pEl.style.cssText = pCSS;
|
|
169
171
|
}
|
|
170
|
-
|
|
171
|
-
for (
|
|
172
|
+
const textEls = txt.split(BR);
|
|
173
|
+
for (let j = 0; j < textEls.length; j++) {
|
|
172
174
|
if (j !== 0) {
|
|
173
175
|
pEl.appendChild(document.createElement("BR"));
|
|
174
176
|
}
|
|
175
|
-
|
|
177
|
+
const spanEl = document.createElement("SPAN");
|
|
176
178
|
spanEl.className = "rxp-texttrack-span";
|
|
177
179
|
spanEl.textContent = decodeEntities(textEls[j]);
|
|
178
180
|
pEl.appendChild(spanEl);
|
|
@@ -186,4 +188,4 @@ function parseSami(smi, timeOffset, lang) {
|
|
|
186
188
|
}
|
|
187
189
|
}
|
|
188
190
|
}
|
|
189
|
-
|
|
191
|
+
exports.default = parseSami;
|