rx-player 3.26.1 → 3.26.2
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/.github/workflows/checks.yml +99 -0
- package/.github/workflows/sonarcloud_analysis.yml +20 -0
- package/CHANGELOG.md +99 -71
- package/README.md +19 -18
- package/VERSION +1 -1
- package/dist/_esm5.processed/compat/clear_element_src.js +8 -6
- package/dist/_esm5.processed/compat/eme/close_session.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/ie11_media_keys.js +1 -2
- package/dist/_esm5.processed/compat/eme/custom_media_keys/index.d.ts +3 -1
- package/dist/_esm5.processed/compat/eme/custom_media_keys/old_webkit_media_keys.js +6 -4
- package/dist/_esm5.processed/compat/eme/custom_media_keys/webkit_media_keys.js +1 -2
- package/dist/_esm5.processed/compat/eme/generate_key_request.js +1 -2
- package/dist/_esm5.processed/compat/eme/load_session.js +2 -3
- package/dist/_esm5.processed/compat/event_listeners.d.ts +3 -2
- package/dist/_esm5.processed/compat/event_listeners.js +8 -14
- package/dist/_esm5.processed/compat/make_vtt_cue.js +1 -1
- package/dist/_esm5.processed/compat/on_height_width_change.js +1 -2
- package/dist/_esm5.processed/compat/set_element_src.js +1 -1
- package/dist/_esm5.processed/compat/when_loaded_metadata.js +1 -2
- package/dist/_esm5.processed/compat/when_media_source_open.js +1 -2
- package/dist/_esm5.processed/config.d.ts +3 -8
- package/dist/_esm5.processed/config.js +4 -9
- package/dist/_esm5.processed/core/abr/abr_manager.d.ts +11 -10
- package/dist/_esm5.processed/core/abr/abr_manager.js +47 -8
- package/dist/_esm5.processed/core/abr/bandwidth_estimator.js +1 -1
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.d.ts +2 -2
- package/dist/_esm5.processed/core/abr/buffer_based_chooser.js +3 -3
- package/dist/_esm5.processed/core/abr/get_buffer_levels.js +3 -0
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/get_estimate_from_buffer_levels.js +3 -3
- package/dist/_esm5.processed/core/abr/guess_based_chooser.d.ts +95 -0
- package/dist/_esm5.processed/core/abr/guess_based_chooser.js +242 -0
- package/dist/_esm5.processed/core/abr/index.d.ts +3 -3
- package/dist/_esm5.processed/core/abr/last_estimate_storage.d.ts +61 -0
- package/dist/_esm5.processed/core/abr/last_estimate_storage.js +37 -0
- package/dist/_esm5.processed/core/abr/network_analyzer.d.ts +25 -7
- package/dist/_esm5.processed/core/abr/network_analyzer.js +68 -31
- package/dist/_esm5.processed/core/abr/pending_requests_store.d.ts +56 -28
- package/dist/_esm5.processed/core/abr/pending_requests_store.js +9 -7
- package/dist/_esm5.processed/core/abr/representation_estimator.d.ts +34 -51
- package/dist/_esm5.processed/core/abr/representation_estimator.js +111 -52
- package/dist/_esm5.processed/core/abr/representation_score_calculator.d.ts +5 -8
- package/dist/_esm5.processed/core/abr/representation_score_calculator.js +20 -23
- package/dist/_esm5.processed/core/abr/{ewma.d.ts → utils/ewma.d.ts} +0 -0
- package/dist/_esm5.processed/core/abr/{ewma.js → utils/ewma.js} +0 -0
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.d.ts → utils/filter_by_bitrate.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_bitrate.js → utils/filter_by_bitrate.js} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.d.ts → utils/filter_by_width.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{filter_by_width.js → utils/filter_by_width.js} +2 -2
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.d.ts → utils/select_optimal_representation.d.ts} +1 -1
- package/dist/_esm5.processed/core/abr/{select_optimal_representation.js → utils/select_optimal_representation.js} +1 -1
- package/dist/_esm5.processed/core/api/emit_seek_events.d.ts +4 -4
- package/dist/_esm5.processed/core/api/emit_seek_events.js +12 -10
- package/dist/_esm5.processed/core/api/index.d.ts +3 -1
- package/dist/_esm5.processed/core/api/index.js +2 -0
- package/dist/_esm5.processed/core/api/option_utils.js +4 -4
- package/dist/_esm5.processed/core/api/playback_observer.d.ts +280 -0
- package/dist/_esm5.processed/core/api/playback_observer.js +461 -0
- package/dist/_esm5.processed/core/api/public_api.d.ts +8 -7
- package/dist/_esm5.processed/core/api/public_api.js +98 -94
- package/dist/_esm5.processed/core/api/track_choice_manager.js +3 -3
- package/dist/_esm5.processed/core/eme/__tests__/__global__/utils.js +1 -0
- package/dist/_esm5.processed/core/eme/attach_media_keys.js +1 -2
- package/dist/_esm5.processed/core/eme/check_key_statuses.js +4 -5
- package/dist/_esm5.processed/core/eme/clean_old_loaded_sessions.js +1 -2
- package/dist/_esm5.processed/core/eme/clear_eme_session.js +6 -2
- package/dist/_esm5.processed/core/eme/create_session.js +1 -2
- package/dist/_esm5.processed/core/eme/dispose_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/eme_manager.js +4 -5
- package/dist/_esm5.processed/core/eme/find_key_system.js +4 -5
- package/dist/_esm5.processed/core/eme/get_media_keys.js +2 -3
- package/dist/_esm5.processed/core/eme/get_session.js +1 -2
- package/dist/_esm5.processed/core/eme/init_media_keys.js +5 -5
- package/dist/_esm5.processed/core/eme/session_events_listener.js +6 -7
- package/dist/_esm5.processed/core/eme/set_server_certificate.js +8 -3
- package/dist/_esm5.processed/core/eme/types.d.ts +12 -4
- package/dist/_esm5.processed/core/eme/utils/close_session.js +2 -3
- package/dist/_esm5.processed/core/eme/utils/is_session_usable.js +1 -1
- package/dist/_esm5.processed/core/eme/utils/loaded_sessions_store.js +3 -4
- package/dist/_esm5.processed/core/eme/utils/persistent_sessions_store.js +3 -3
- package/dist/_esm5.processed/core/fetchers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/manifest/manifest_fetcher.js +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/index.d.ts +2 -2
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.d.ts +12 -29
- package/dist/_esm5.processed/core/fetchers/segment/prioritized_segment_fetcher.js +3 -7
- package/dist/_esm5.processed/core/fetchers/segment/prioritizer.d.ts +53 -53
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.d.ts +42 -11
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher.js +118 -46
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.d.ts +21 -20
- package/dist/_esm5.processed/core/fetchers/segment/segment_fetcher_creator.js +9 -8
- package/dist/_esm5.processed/core/init/create_eme_manager.js +1 -2
- package/dist/_esm5.processed/core/init/create_media_source.js +3 -4
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.d.ts +39 -0
- package/dist/_esm5.processed/core/init/create_stream_playback_observer.js +50 -0
- package/dist/_esm5.processed/core/init/duration_updater.js +16 -7
- package/dist/_esm5.processed/core/init/emit_loaded_event.d.ts +4 -3
- package/dist/_esm5.processed/core/init/emit_loaded_event.js +8 -8
- package/dist/_esm5.processed/core/init/end_of_stream.js +1 -2
- package/dist/_esm5.processed/core/init/get_initial_time.js +2 -3
- package/dist/_esm5.processed/core/init/initial_seek_and_play.d.ts +32 -31
- package/dist/_esm5.processed/core/init/initial_seek_and_play.js +25 -32
- package/dist/_esm5.processed/core/init/initialize_directfile.d.ts +6 -5
- package/dist/_esm5.processed/core/init/initialize_directfile.js +16 -12
- package/dist/_esm5.processed/core/init/initialize_media_source.d.ts +10 -10
- package/dist/_esm5.processed/core/init/initialize_media_source.js +18 -12
- package/dist/_esm5.processed/core/init/load_on_media_source.d.ts +8 -11
- package/dist/_esm5.processed/core/init/load_on_media_source.js +16 -19
- package/dist/_esm5.processed/core/init/manifest_update_scheduler.js +8 -7
- package/dist/_esm5.processed/core/init/stall_avoider.d.ts +4 -6
- package/dist/_esm5.processed/core/init/stall_avoider.js +56 -42
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.d.ts +2 -2
- package/dist/_esm5.processed/core/init/stream_events_emitter/stream_events_emitter.js +20 -15
- package/dist/_esm5.processed/core/init/throw_on_media_error.js +1 -2
- package/dist/_esm5.processed/core/init/types.d.ts +0 -20
- package/dist/_esm5.processed/core/init/update_playback_rate.d.ts +5 -4
- package/dist/_esm5.processed/core/init/update_playback_rate.js +10 -11
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.d.ts +4 -4
- package/dist/_esm5.processed/core/segment_buffers/garbage_collector.js +12 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +8 -7
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +9 -10
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/text_track_cues_store.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +4 -4
- package/dist/_esm5.processed/core/segment_buffers/implementations/utils/manual_time_ranges.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/buffered_history.js +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +1 -12
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +10 -10
- package/dist/_esm5.processed/core/segment_buffers/segment_buffers_store.js +1 -1
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.d.ts +15 -13
- package/dist/_esm5.processed/core/stream/adaptation/adaptation_stream.js +36 -23
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.d.ts +9 -17
- package/dist/_esm5.processed/core/stream/adaptation/create_representation_estimator.js +11 -20
- package/dist/_esm5.processed/core/stream/adaptation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/active_period_emitter.js +5 -6
- package/dist/_esm5.processed/core/stream/orchestrator/are_streams_complete.js +1 -2
- package/dist/_esm5.processed/core/stream/orchestrator/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.d.ts +10 -8
- package/dist/_esm5.processed/core/stream/orchestrator/stream_orchestrator.js +22 -21
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/period/create_empty_adaptation_stream.js +11 -10
- package/dist/_esm5.processed/core/stream/period/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/period/period_stream.d.ts +23 -7
- package/dist/_esm5.processed/core/stream/period/period_stream.js +38 -24
- package/dist/_esm5.processed/core/stream/reload_after_switch.d.ts +5 -4
- package/dist/_esm5.processed/core/stream/reload_after_switch.js +8 -7
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/representation/append_segment_to_buffer.js +10 -8
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.d.ts +9 -9
- package/dist/_esm5.processed/core/stream/representation/downloading_queue.js +10 -12
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.d.ts +1 -3
- package/dist/_esm5.processed/core/stream/representation/force_garbage_collection.js +6 -8
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.d.ts +3 -7
- package/dist/_esm5.processed/core/stream/representation/get_buffer_status.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/get_needed_segments.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.d.ts +6 -9
- package/dist/_esm5.processed/core/stream/representation/get_segment_priority.js +7 -8
- package/dist/_esm5.processed/core/stream/representation/index.d.ts +2 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.d.ts +4 -2
- package/dist/_esm5.processed/core/stream/representation/push_init_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.d.ts +6 -4
- package/dist/_esm5.processed/core/stream/representation/push_media_segment.js +3 -5
- package/dist/_esm5.processed/core/stream/representation/representation_stream.d.ts +9 -12
- package/dist/_esm5.processed/core/stream/representation/representation_stream.js +30 -21
- package/dist/_esm5.processed/errors/error_message.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.d.ts +5 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/create_request.js +21 -8
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.js +2 -3
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/load_segments.js +4 -0
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +1 -1
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/push_data.d.ts +2 -2
- package/dist/_esm5.processed/experimental/tools/VideoThumbnailLoader/thumbnail_loader.js +17 -6
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +1 -2
- package/dist/_esm5.processed/experimental/tools/createMetaplaylist/index.js +1 -2
- package/dist/_esm5.processed/experimental/tools/mediaCapabilitiesProber/probers/mediaDisplayInfos.js +1 -1
- package/dist/_esm5.processed/features/initialize_features.js +47 -44
- package/dist/_esm5.processed/index.js +2 -2
- package/dist/_esm5.processed/manifest/index.d.ts +2 -2
- package/dist/_esm5.processed/manifest/index.js +2 -2
- package/dist/_esm5.processed/manifest/representation.js +1 -1
- package/dist/_esm5.processed/manifest/representation_index/static.js +1 -0
- package/dist/_esm5.processed/manifest/representation_index/types.d.ts +24 -3
- package/dist/_esm5.processed/manifest/update_period_in_place.js +1 -1
- package/dist/_esm5.processed/manifest/{are_same_content.d.ts → utils.d.ts} +9 -7
- package/dist/_esm5.processed/manifest/{are_same_content.js → utils.js} +18 -1
- package/dist/_esm5.processed/minimal.js +2 -2
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.d.ts +18 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/get_box.js +32 -9
- package/dist/_esm5.processed/parsers/containers/isobmff/read.d.ts +18 -5
- package/dist/_esm5.processed/parsers/containers/isobmff/read.js +28 -6
- package/dist/_esm5.processed/parsers/containers/isobmff/utils.js +52 -47
- package/dist/_esm5.processed/parsers/images/bif.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/flatten_overlapping_periods.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/get_http_utc-timing_url.js +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/base.js +3 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_init_segment.js +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +1 -0
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +7 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/list.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/template.js +11 -5
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.js +10 -9
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js +3 -3
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +6 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +5 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.d.ts +1 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/tokens.js +4 -4
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_adaptation_sets.js +19 -18
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.d.ts +2 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_mpd.js +14 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.d.ts +2 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_periods.js +7 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representation_index.js +5 -10
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.d.ts +3 -1
- package/dist/_esm5.processed/parsers/manifest/dash/common/parse_representations.js +17 -8
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.d.ts +7 -2
- package/dist/_esm5.processed/parsers/manifest/dash/common/resolve_base_urls.js +22 -21
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.js +10 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/BaseURL.js +9 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/Representation.js +24 -0
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.js +7 -5
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/node_parsers/utils.js +12 -9
- package/dist/_esm5.processed/parsers/manifest/dash/js-parser/parse_from_document.js +5 -2
- package/dist/_esm5.processed/parsers/manifest/dash/node_parser_types.d.ts +8 -0
- package/dist/_esm5.processed/parsers/manifest/dash/parsers_types.d.ts +11 -2
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.js +7 -4
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.js +11 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.js +7 -1
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/MPD.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Period.js +13 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/Representation.js +23 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.js +5 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/XLink.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/dash/wasm-parser/ts/generators/root.js +6 -0
- package/dist/_esm5.processed/parsers/manifest/local/parse_local_manifest.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/local/representation_index.js +4 -2
- package/dist/_esm5.processed/parsers/manifest/smooth/create_parser.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/get_codecs.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/smooth/representation_index.js +3 -1
- package/dist/_esm5.processed/parsers/manifest/utils/check_manifest_ids.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/clear_timeline_from_position.js +1 -1
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.d.ts +11 -3
- package/dist/_esm5.processed/parsers/manifest/utils/index_helpers.js +5 -5
- package/dist/_esm5.processed/parsers/manifest/utils/is_segment_still_available.js +3 -6
- package/dist/_esm5.processed/parsers/texttracks/sami/html.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/sami/native.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_font_size.js +13 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/generate_css_test_outline.js +4 -4
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_default_style_elements.js +2 -2
- package/dist/_esm5.processed/parsers/texttracks/webvtt/html/create_style_attribute.js +5 -5
- package/dist/_esm5.processed/transports/dash/image_pipelines.d.ts +2 -2
- package/dist/_esm5.processed/transports/dash/init_segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/dash/manifest_parser.js +89 -20
- package/dist/_esm5.processed/transports/dash/segment_loader.js +1 -1
- package/dist/_esm5.processed/transports/local/segment_loader.js +2 -2
- package/dist/_esm5.processed/transports/local/segment_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/local/text_parser.d.ts +2 -2
- package/dist/_esm5.processed/transports/metaplaylist/pipelines.js +1 -1
- package/dist/_esm5.processed/transports/smooth/extract_timings_infos.js +1 -1
- package/dist/_esm5.processed/transports/smooth/pipelines.js +2 -2
- package/dist/_esm5.processed/transports/smooth/segment_loader.js +3 -3
- package/dist/_esm5.processed/transports/types.d.ts +29 -15
- package/dist/_esm5.processed/transports/utils/byte_range.js +2 -2
- package/dist/_esm5.processed/transports/utils/call_custom_manifest_loader.js +1 -1
- package/dist/_esm5.processed/transports/utils/get_isobmff_timing_infos.js +6 -1
- package/dist/_esm5.processed/transports/utils/parse_text_track.js +6 -4
- package/dist/_esm5.processed/utils/assert.js +3 -3
- package/dist/_esm5.processed/utils/concat_map_latest.js +1 -2
- package/dist/_esm5.processed/utils/defer_subscriptions.js +1 -2
- package/dist/_esm5.processed/utils/filter_map.js +1 -2
- package/dist/_esm5.processed/utils/reference.d.ts +108 -0
- package/dist/_esm5.processed/utils/reference.js +137 -0
- package/dist/_esm5.processed/utils/request/fetch.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/fetch.js +3 -3
- package/dist/_esm5.processed/utils/request/xhr.d.ts +1 -1
- package/dist/_esm5.processed/utils/request/xhr.js +1 -1
- package/dist/_esm5.processed/utils/rx-retry_with_backoff.js +1 -2
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.d.ts +1 -15
- package/dist/rx-player.js +3666 -2470
- package/dist/rx-player.min.d.ts +1 -15
- package/dist/rx-player.min.js +1 -1
- package/jest.config.js +28 -1
- package/package.json +43 -43
- package/scripts/build/constants.d.ts +50 -0
- package/scripts/build/generate_build.js +1 -189
- package/scripts/doc-generator/construct_table_of_contents.js +31 -24
- package/scripts/doc-generator/convert_MD_to_HMTL.js +4 -8
- package/scripts/doc-generator/create_documentation.js +331 -0
- package/scripts/doc-generator/create_documentation_page.js +209 -0
- package/scripts/doc-generator/create_page.js +117 -35
- package/scripts/doc-generator/generate_header_html.js +148 -0
- package/scripts/doc-generator/generate_page_html.js +116 -0
- package/scripts/doc-generator/generate_page_list_html.js +93 -0
- package/scripts/doc-generator/generate_sidebar_html.js +88 -0
- package/scripts/doc-generator/get_search_data_for_content.js +137 -0
- package/scripts/doc-generator/index.js +14 -15
- package/scripts/doc-generator/parse_doc_configs.js +327 -0
- package/scripts/doc-generator/scripts/lunr.js +10 -0
- package/scripts/doc-generator/scripts/script.js +451 -0
- package/scripts/doc-generator/styles/style.css +712 -144
- package/scripts/doc-generator/utils.js +85 -0
- package/scripts/fast_demo_build.js +143 -0
- package/scripts/generate_documentation_list.js +6 -2
- package/scripts/generate_full_demo.js +26 -49
- package/scripts/start_demo_web_server.js +14 -4
- package/scripts/update-version +1 -1
- package/sonar-project.properties +2 -1
- package/src/compat/__tests__/add_text_track.test.ts +1 -0
- package/src/compat/__tests__/clear_element_src.test.ts +55 -28
- package/src/compat/__tests__/set_element_src.test.ts +2 -2
- package/src/compat/__tests__/when_loaded_metadata.test.ts +4 -5
- package/src/compat/__tests__/when_media_source_open.test.ts +4 -5
- package/src/compat/clear_element_src.ts +8 -6
- package/src/compat/eme/close_session.ts +3 -5
- package/src/compat/eme/custom_media_keys/ie11_media_keys.ts +1 -1
- package/src/compat/eme/custom_media_keys/index.ts +6 -6
- package/src/compat/eme/custom_media_keys/old_webkit_media_keys.ts +6 -3
- package/src/compat/eme/custom_media_keys/webkit_media_keys.ts +1 -1
- package/src/compat/eme/generate_key_request.ts +1 -1
- package/src/compat/eme/load_session.ts +4 -6
- package/src/compat/event_listeners.ts +12 -21
- package/src/compat/on_height_width_change.ts +3 -5
- package/src/compat/set_element_src.ts +1 -1
- package/src/compat/when_loaded_metadata.ts +1 -1
- package/src/compat/when_media_source_open.ts +1 -1
- package/src/config.ts +4 -9
- package/src/core/abr/README.md +7 -7
- package/src/core/abr/abr_manager.ts +62 -21
- package/src/core/abr/bandwidth_estimator.ts +1 -1
- package/src/core/abr/buffer_based_chooser.ts +8 -6
- package/src/core/abr/get_buffer_levels.ts +3 -0
- package/src/core/abr/get_estimate_from_buffer_levels.ts +4 -4
- package/src/core/abr/guess_based_chooser.ts +308 -0
- package/src/core/abr/index.ts +7 -3
- package/src/core/abr/last_estimate_storage.ts +79 -0
- package/src/core/abr/network_analyzer.ts +74 -31
- package/src/core/abr/pending_requests_store.ts +76 -42
- package/src/core/abr/representation_estimator.ts +200 -125
- package/src/core/abr/representation_score_calculator.ts +33 -26
- package/src/core/abr/{__tests__ → utils/__tests__}/ewma.test.ts +0 -0
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_bitrate.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/filter_by_width.test.ts +1 -1
- package/src/core/abr/{__tests__ → utils/__tests__}/select_optimal_representation.test.ts +1 -1
- package/src/core/abr/{ewma.ts → utils/ewma.ts} +0 -0
- package/src/core/abr/{filter_by_bitrate.ts → utils/filter_by_bitrate.ts} +2 -2
- package/src/core/abr/{filter_by_width.ts → utils/filter_by_width.ts} +3 -3
- package/src/core/abr/{select_optimal_representation.ts → utils/select_optimal_representation.ts} +2 -2
- package/src/core/api/README.md +4 -3
- package/src/core/api/__tests__/option_utils.test.ts +1 -0
- package/src/core/api/emit_seek_events.ts +21 -20
- package/src/core/api/index.ts +6 -2
- package/src/core/api/playback_observer.ts +768 -0
- package/src/core/api/public_api.ts +111 -111
- package/src/core/api/track_choice_manager.ts +6 -3
- package/src/core/eme/__tests__/__global__/get_license.test.ts +5 -3
- package/src/core/eme/__tests__/__global__/init_data.test.ts +11 -12
- package/src/core/eme/__tests__/__global__/media_key_system_access.test.ts +2 -1
- package/src/core/eme/__tests__/__global__/media_keys.test.ts +5 -8
- package/src/core/eme/__tests__/__global__/server_certificate.test.ts +8 -6
- package/src/core/eme/__tests__/__global__/utils.ts +1 -0
- package/src/core/eme/__tests__/init_media_keys.test.ts +6 -65
- package/src/core/eme/attach_media_keys.ts +2 -1
- package/src/core/eme/check_key_statuses.ts +10 -8
- package/src/core/eme/clean_old_loaded_sessions.ts +2 -4
- package/src/core/eme/clear_eme_session.ts +6 -1
- package/src/core/eme/create_session.ts +3 -5
- package/src/core/eme/dispose_media_keys.ts +2 -2
- package/src/core/eme/eme_manager.ts +10 -12
- package/src/core/eme/find_key_system.ts +3 -5
- package/src/core/eme/get_media_keys.ts +4 -6
- package/src/core/eme/get_session.ts +2 -4
- package/src/core/eme/init_media_keys.ts +9 -9
- package/src/core/eme/session_events_listener.ts +14 -15
- package/src/core/eme/set_server_certificate.ts +9 -5
- package/src/core/eme/types.ts +15 -4
- package/src/core/eme/utils/close_session.ts +7 -7
- package/src/core/eme/utils/is_session_usable.ts +1 -1
- package/src/core/eme/utils/loaded_sessions_store.ts +2 -2
- package/src/core/eme/utils/persistent_sessions_store.ts +2 -2
- package/src/core/fetchers/index.ts +2 -2
- package/src/core/fetchers/manifest/manifest_fetcher.ts +1 -1
- package/src/core/fetchers/segment/__tests__/prioritizer.test.ts +3 -4
- package/src/core/fetchers/segment/index.ts +2 -2
- package/src/core/fetchers/segment/prioritized_segment_fetcher.ts +37 -45
- package/src/core/fetchers/segment/prioritizer.ts +82 -82
- package/src/core/fetchers/segment/segment_fetcher.ts +178 -80
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +23 -31
- package/src/core/init/create_eme_manager.ts +1 -1
- package/src/core/init/create_media_source.ts +5 -7
- package/src/core/init/create_stream_playback_observer.ts +88 -0
- package/src/core/init/duration_updater.ts +20 -17
- package/src/core/init/emit_loaded_event.ts +11 -15
- package/src/core/init/end_of_stream.ts +2 -4
- package/src/core/init/get_initial_time.ts +0 -1
- package/src/core/init/initial_seek_and_play.ts +67 -51
- package/src/core/init/initialize_directfile.ts +26 -35
- package/src/core/init/initialize_media_source.ts +28 -28
- package/src/core/init/load_on_media_source.ts +51 -58
- package/src/core/init/manifest_update_scheduler.ts +11 -12
- package/src/core/init/stall_avoider.ts +64 -47
- package/src/core/init/stream_events_emitter/stream_events_emitter.ts +24 -21
- package/src/core/init/throw_on_media_error.ts +1 -1
- package/src/core/init/types.ts +0 -24
- package/src/core/init/update_playback_rate.ts +15 -16
- package/src/core/segment_buffers/README.md +3 -3
- package/src/core/segment_buffers/garbage_collector.ts +15 -11
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -7
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +14 -16
- 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 +4 -4
- package/src/core/segment_buffers/implementations/utils/manual_time_ranges.ts +2 -2
- package/src/core/segment_buffers/inventory/buffered_history.ts +2 -2
- package/src/core/segment_buffers/inventory/segment_inventory.ts +1 -13
- package/src/core/stream/adaptation/adaptation_stream.ts +78 -56
- package/src/core/stream/adaptation/create_representation_estimator.ts +19 -45
- package/src/core/stream/adaptation/index.ts +2 -2
- package/src/core/stream/index.ts +2 -2
- package/src/core/stream/orchestrator/active_period_emitter.ts +6 -8
- package/src/core/stream/orchestrator/are_streams_complete.ts +2 -4
- package/src/core/stream/orchestrator/index.ts +2 -2
- package/src/core/stream/orchestrator/stream_orchestrator.ts +58 -49
- package/src/core/stream/period/create_empty_adaptation_stream.ts +14 -10
- package/src/core/stream/period/index.ts +2 -2
- package/src/core/stream/period/period_stream.ts +118 -75
- package/src/core/stream/reload_after_switch.ts +13 -10
- package/src/core/stream/representation/append_segment_to_buffer.ts +20 -16
- package/src/core/stream/representation/downloading_queue.ts +21 -24
- package/src/core/stream/representation/force_garbage_collection.ts +16 -23
- package/src/core/stream/representation/get_buffer_status.ts +9 -11
- package/src/core/stream/representation/get_needed_segments.ts +1 -1
- package/src/core/stream/representation/get_segment_priority.ts +8 -10
- package/src/core/stream/representation/index.ts +2 -2
- package/src/core/stream/representation/push_init_segment.ts +19 -16
- package/src/core/stream/representation/push_media_segment.ts +21 -17
- package/src/core/stream/representation/representation_stream.ts +50 -47
- package/src/experimental/features/__tests__/dash_wasm.test.ts +1 -0
- package/src/experimental/tools/VideoThumbnailLoader/create_request.ts +32 -17
- package/src/experimental/tools/VideoThumbnailLoader/get_initialized_source_buffer.ts +6 -9
- package/src/experimental/tools/VideoThumbnailLoader/load_segments.ts +12 -6
- package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +4 -2
- package/src/experimental/tools/VideoThumbnailLoader/push_data.ts +2 -2
- package/src/experimental/tools/VideoThumbnailLoader/thumbnail_loader.ts +21 -12
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +1 -1
- package/src/experimental/tools/createMetaplaylist/index.ts +1 -1
- package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/DRMInfos.test.ts +4 -2
- package/src/features/__tests__/initialize_features.test.ts +191 -101
- package/src/features/initialize_features.ts +40 -37
- package/src/features/list/__tests__/bif_parser.test.ts +1 -0
- package/src/features/list/__tests__/dash.test.ts +1 -0
- package/src/features/list/__tests__/directfile.test.ts +1 -0
- package/src/features/list/__tests__/eme.test.ts +1 -0
- package/src/features/list/__tests__/html_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/html_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/html_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/image_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_sami_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_srt_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_text_buffer.test.ts +1 -0
- package/src/features/list/__tests__/native_ttml_parser.test.ts +1 -0
- package/src/features/list/__tests__/native_vtt_parser.test.ts +1 -0
- package/src/features/list/__tests__/smooth.test.ts +1 -0
- package/src/index.ts +2 -2
- package/src/manifest/__tests__/manifest.test.ts +1 -0
- package/src/manifest/index.ts +7 -1
- package/src/manifest/representation_index/__tests__/static.test.ts +1 -0
- package/src/manifest/representation_index/static.ts +1 -0
- package/src/manifest/representation_index/types.ts +25 -3
- package/src/manifest/{are_same_content.ts → utils.ts} +26 -9
- package/src/minimal.ts +3 -2
- package/src/parsers/containers/isobmff/get_box.ts +35 -8
- package/src/parsers/containers/isobmff/read.ts +32 -5
- package/src/parsers/containers/isobmff/utils.ts +52 -47
- package/src/parsers/manifest/dash/common/__tests__/flatten_overlapping_period.test.ts +4 -4
- package/src/parsers/manifest/dash/common/flatten_overlapping_periods.ts +4 -2
- package/src/parsers/manifest/dash/common/get_clock_offset.ts +3 -3
- package/src/parsers/manifest/dash/common/get_http_utc-timing_url.ts +15 -6
- package/src/parsers/manifest/dash/common/indexes/base.ts +5 -3
- package/src/parsers/manifest/dash/common/indexes/get_init_segment.ts +1 -0
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +9 -9
- package/src/parsers/manifest/dash/common/indexes/list.ts +6 -3
- package/src/parsers/manifest/dash/common/indexes/template.ts +13 -6
- package/src/parsers/manifest/dash/common/indexes/timeline/convert_element_to_index_segment.ts +10 -9
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +13 -5
- package/src/parsers/manifest/dash/common/indexes/tokens.ts +4 -4
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +21 -13
- package/src/parsers/manifest/dash/common/parse_periods.ts +7 -8
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +12 -12
- package/src/parsers/manifest/dash/common/parse_representations.ts +23 -4
- package/src/parsers/manifest/dash/common/resolve_base_urls.ts +33 -24
- package/src/parsers/manifest/dash/js-parser/node_parsers/AdaptationSet.ts +12 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/BaseURL.ts +13 -9
- package/src/parsers/manifest/dash/js-parser/node_parsers/Representation.ts +28 -0
- package/src/parsers/manifest/dash/js-parser/node_parsers/SegmentTemplate.ts +8 -5
- package/src/parsers/manifest/dash/js-parser/node_parsers/utils.ts +3 -0
- package/src/parsers/manifest/dash/js-parser/parse_from_document.ts +5 -2
- package/src/parsers/manifest/dash/node_parser_types.ts +8 -0
- package/src/parsers/manifest/dash/parsers_types.ts +8 -2
- package/src/parsers/manifest/dash/wasm-parser/rs/lib.rs +1 -8
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/attributes.rs +26 -5
- package/src/parsers/manifest/dash/wasm-parser/rs/processor/mod.rs +75 -521
- package/src/parsers/manifest/dash/wasm-parser/ts/dash-wasm-parser.ts +7 -4
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/AdaptationSet.ts +13 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/BaseURL.ts +8 -1
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/EventStream.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/MPD.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Period.ts +14 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/Representation.ts +26 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/SegmentList.ts +6 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/XLink.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/generators/root.ts +7 -0
- package/src/parsers/manifest/dash/wasm-parser/ts/types.ts +1 -1
- package/src/parsers/manifest/local/representation_index.ts +2 -0
- package/src/parsers/manifest/smooth/create_parser.ts +1 -1
- package/src/parsers/manifest/smooth/representation_index.ts +3 -1
- package/src/parsers/manifest/utils/clear_timeline_from_position.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +21 -11
- package/src/parsers/manifest/utils/is_segment_still_available.ts +4 -6
- package/src/parsers/texttracks/sami/html.ts +1 -1
- package/src/parsers/texttracks/sami/native.ts +1 -1
- package/src/parsers/texttracks/ttml/html/apply_font_size.ts +11 -1
- package/src/transports/dash/image_pipelines.ts +4 -4
- package/src/transports/dash/init_segment_loader.ts +1 -1
- package/src/transports/dash/manifest_parser.ts +99 -25
- package/src/transports/dash/segment_loader.ts +1 -1
- package/src/transports/dash/segment_parser.ts +4 -4
- package/src/transports/dash/text_parser.ts +8 -8
- package/src/transports/local/segment_loader.ts +2 -2
- package/src/transports/local/segment_parser.ts +4 -4
- package/src/transports/local/text_parser.ts +8 -8
- package/src/transports/metaplaylist/pipelines.ts +11 -11
- package/src/transports/smooth/extract_timings_infos.ts +1 -1
- package/src/transports/smooth/pipelines.ts +8 -8
- package/src/transports/smooth/segment_loader.ts +3 -3
- package/src/transports/types.ts +31 -17
- package/src/transports/utils/call_custom_manifest_loader.ts +1 -1
- package/src/transports/utils/get_isobmff_timing_infos.ts +6 -1
- package/src/transports/utils/parse_text_track.ts +4 -2
- package/src/typings/globals.d.ts +57 -40
- package/src/utils/__tests__/concat_map_latest.test.ts +7 -9
- package/src/utils/__tests__/defer_subscriptions.test.ts +4 -4
- package/src/utils/__tests__/event_emitter.test.ts +1 -1
- package/src/utils/__tests__/initialization_segment_cache.test.ts +7 -0
- package/src/utils/assert.ts +1 -1
- package/src/utils/concat_map_latest.ts +2 -4
- package/src/utils/defer_subscriptions.ts +1 -1
- package/src/utils/filter_map.ts +2 -4
- package/src/utils/reference.ts +234 -0
- package/src/utils/request/fetch.ts +3 -3
- package/src/utils/request/xhr.ts +2 -2
- package/src/utils/rx-retry_with_backoff.ts +2 -4
- package/tsconfig.json +4 -1
- package/tsconfig.modules.json +8 -3
- package/dist/_esm5.processed/core/abr/create_filters.d.ts +0 -27
- package/dist/_esm5.processed/core/abr/create_filters.js +0 -56
- package/dist/_esm5.processed/core/api/clock.d.ts +0 -157
- package/dist/_esm5.processed/core/api/clock.js +0 -363
- package/dist/_esm5.processed/core/init/create_stream_clock.d.ts +0 -34
- package/dist/_esm5.processed/core/init/create_stream_clock.js +0 -55
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.d.ts +0 -31
- package/dist/_esm5.processed/parsers/manifest/dash/common/extract_minimum_availability_time_offset.js +0 -37
- package/scripts/doc-generator/construct_html.js +0 -135
- package/scripts/doc-generator/construct_page_list.js +0 -120
- package/scripts/doc-generator/create_for_dir.js +0 -151
- package/scripts/doc-generator/get_files_to_convert.js +0 -71
- package/scripts/doc-generator/mkdir_parent.js +0 -21
- package/scripts/doc-generator/read_title_from_md.js +0 -22
- package/scripts/doc-generator/remove_toc_from_md.js +0 -20
- package/src/core/abr/create_filters.ts +0 -59
- package/src/core/api/clock.ts +0 -573
- package/src/core/init/create_stream_clock.ts +0 -93
- package/src/parsers/manifest/dash/common/extract_minimum_availability_time_offset.ts +0 -41
|
@@ -32,7 +32,12 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
32
32
|
var _a;
|
|
33
33
|
var aggressiveMode = context.aggressiveMode, availabilityTimeOffset = context.availabilityTimeOffset, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, periodEnd = context.periodEnd, periodStart = context.periodStart, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, isEMSGWhitelisted = context.isEMSGWhitelisted;
|
|
34
34
|
var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
35
|
-
|
|
35
|
+
var minBaseUrlAto = representationBaseURLs.length === 0 ?
|
|
36
|
+
0 :
|
|
37
|
+
representationBaseURLs.reduce(function (acc, rbu) {
|
|
38
|
+
return Math.min(acc, rbu.availabilityTimeOffset);
|
|
39
|
+
}, Infinity);
|
|
40
|
+
this._availabilityTimeOffset = availabilityTimeOffset + minBaseUrlAto;
|
|
36
41
|
this._manifestBoundsCalculator = manifestBoundsCalculator;
|
|
37
42
|
this._aggressiveMode = aggressiveMode;
|
|
38
43
|
var presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
@@ -43,11 +48,12 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
43
48
|
if (index.duration === undefined) {
|
|
44
49
|
throw new Error("Invalid SegmentTemplate: no duration");
|
|
45
50
|
}
|
|
51
|
+
var urlSources = representationBaseURLs.map(function (b) { return b.url; });
|
|
46
52
|
this._index = { duration: index.duration, timescale: timescale, indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: index.initialization == null ?
|
|
47
53
|
undefined :
|
|
48
|
-
{ mediaURLs: createIndexURLs(
|
|
54
|
+
{ mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
|
|
49
55
|
range: index.initialization.range },
|
|
50
|
-
mediaURLs: createIndexURLs(
|
|
56
|
+
mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate), presentationTimeOffset: presentationTimeOffset, startNumber: index.startNumber };
|
|
51
57
|
this._isDynamic = isDynamic;
|
|
52
58
|
this._periodStart = periodStart;
|
|
53
59
|
this._scaledPeriodEnd = periodEnd == null ? undefined :
|
|
@@ -87,8 +93,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
87
93
|
}
|
|
88
94
|
var segments = [];
|
|
89
95
|
// number corresponding to the Period's start
|
|
90
|
-
var numberOffset = startNumber
|
|
91
|
-
startNumber;
|
|
96
|
+
var numberOffset = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
|
|
92
97
|
// calcul initial time from Period start, where the first segment would have
|
|
93
98
|
// the `0` number
|
|
94
99
|
var numberIndexedToZero = Math.floor(startPosition / duration);
|
|
@@ -114,6 +119,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
114
119
|
scaledDuration: realDuration / timescale,
|
|
115
120
|
mediaURLs: detokenizedURLs,
|
|
116
121
|
timestampOffset: -(index.indexTimeOffset / timescale),
|
|
122
|
+
complete: true,
|
|
117
123
|
privateInfos: {
|
|
118
124
|
isEMSGWhitelisted: this._isEMSGWhitelisted,
|
|
119
125
|
} };
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import log from "../../../../../../log";
|
|
17
|
+
import isNullOrUndefined from "../../../../../../utils/is_null_or_undefined";
|
|
17
18
|
/**
|
|
18
19
|
* Translate parsed `S` node into Segment compatible with this index:
|
|
19
20
|
* Find out the start, repeatCount and duration of each of these.
|
|
@@ -32,23 +33,23 @@ export default function convertElementsToIndexSegment(item, previousItem, nextIt
|
|
|
32
33
|
var start = item.start;
|
|
33
34
|
var duration = item.duration;
|
|
34
35
|
var repeatCount = item.repeatCount;
|
|
35
|
-
if (start
|
|
36
|
-
if (previousItem
|
|
36
|
+
if (start === undefined) {
|
|
37
|
+
if (previousItem === null) {
|
|
37
38
|
start = timelineStart;
|
|
38
39
|
}
|
|
39
|
-
else if (previousItem.duration
|
|
40
|
+
else if (!isNullOrUndefined(previousItem.duration)) {
|
|
40
41
|
start = previousItem.start +
|
|
41
42
|
(previousItem.duration * (previousItem.repeatCount + 1));
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
if ((duration
|
|
45
|
-
nextItem
|
|
46
|
-
start
|
|
45
|
+
if ((duration === undefined || isNaN(duration)) &&
|
|
46
|
+
nextItem !== null && nextItem.start !== undefined && !isNaN(nextItem.start) &&
|
|
47
|
+
start !== undefined && !isNaN(start)) {
|
|
47
48
|
duration = nextItem.start - start;
|
|
48
49
|
}
|
|
49
|
-
if ((start
|
|
50
|
-
(duration
|
|
51
|
-
(repeatCount
|
|
50
|
+
if ((start !== undefined && !isNaN(start)) &&
|
|
51
|
+
(duration !== undefined && !isNaN(duration)) &&
|
|
52
|
+
(repeatCount === undefined || !isNaN(repeatCount))) {
|
|
52
53
|
return { start: start, duration: duration, repeatCount: repeatCount === undefined ? 0 :
|
|
53
54
|
repeatCount };
|
|
54
55
|
}
|
package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/timeline/parse_s_element.js
CHANGED
|
@@ -27,7 +27,7 @@ export default function parseSElement(root) {
|
|
|
27
27
|
case "t":
|
|
28
28
|
var start = parseInt(attribute.value, 10);
|
|
29
29
|
if (isNaN(start)) {
|
|
30
|
-
log.warn("DASH: invalid t (\""
|
|
30
|
+
log.warn("DASH: invalid t (\"".concat(attribute.value, "\")"));
|
|
31
31
|
}
|
|
32
32
|
else {
|
|
33
33
|
parsedS.start = start;
|
|
@@ -36,7 +36,7 @@ export default function parseSElement(root) {
|
|
|
36
36
|
case "d":
|
|
37
37
|
var duration = parseInt(attribute.value, 10);
|
|
38
38
|
if (isNaN(duration)) {
|
|
39
|
-
log.warn("DASH: invalid d (\""
|
|
39
|
+
log.warn("DASH: invalid d (\"".concat(attribute.value, "\")"));
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
parsedS.duration = duration;
|
|
@@ -45,7 +45,7 @@ export default function parseSElement(root) {
|
|
|
45
45
|
case "r":
|
|
46
46
|
var repeatCount = parseInt(attribute.value, 10);
|
|
47
47
|
if (isNaN(repeatCount)) {
|
|
48
|
-
log.warn("DASH: invalid r (\""
|
|
48
|
+
log.warn("DASH: invalid r (\"".concat(attribute.value, "\")"));
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
51
|
parsedS.repeatCount = repeatCount;
|
|
@@ -19,12 +19,15 @@ import { IEMSG } from "../../../../../containers/isobmff";
|
|
|
19
19
|
import { IIndexSegment } from "../../../../utils/index_helpers";
|
|
20
20
|
import { ISegmentTimelineElement } from "../../../node_parser_types";
|
|
21
21
|
import ManifestBoundsCalculator from "../../manifest_bounds_calculator";
|
|
22
|
+
import { IResolvedBaseUrl } from "../../resolve_base_urls";
|
|
22
23
|
/**
|
|
23
24
|
* Index property defined for a SegmentTimeline RepresentationIndex
|
|
24
25
|
* This object contains every property needed to generate an ISegment for a
|
|
25
26
|
* given media time.
|
|
26
27
|
*/
|
|
27
28
|
export interface ITimelineIndex {
|
|
29
|
+
/** If `false`, the last segment anounced might be still incomplete. */
|
|
30
|
+
availabilityTimeComplete: boolean;
|
|
28
31
|
/** Byte range for a possible index of segments in the server. */
|
|
29
32
|
indexRange?: [number, number];
|
|
30
33
|
/**
|
|
@@ -112,6 +115,8 @@ export interface ITimelineIndexIndexArgument {
|
|
|
112
115
|
}
|
|
113
116
|
/** Aditional context needed by a SegmentTimeline RepresentationIndex. */
|
|
114
117
|
export interface ITimelineIndexContextArgument {
|
|
118
|
+
/** If `false`, the last segment anounced might be still incomplete. */
|
|
119
|
+
availabilityTimeComplete: boolean;
|
|
115
120
|
/** Allows to obtain the minimum and maximum positions of a content. */
|
|
116
121
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
117
122
|
/** Start of the period concerned by this RepresentationIndex, in seconds. */
|
|
@@ -126,7 +131,7 @@ export interface ITimelineIndexContextArgument {
|
|
|
126
131
|
*/
|
|
127
132
|
receivedTime?: number;
|
|
128
133
|
/** Base URL for the Representation concerned. */
|
|
129
|
-
representationBaseURLs:
|
|
134
|
+
representationBaseURLs: IResolvedBaseUrl[];
|
|
130
135
|
/** ID of the Representation concerned. */
|
|
131
136
|
representationId?: string;
|
|
132
137
|
/** Bitrate of the Representation concerned. */
|
|
@@ -39,7 +39,7 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
39
39
|
throw new Error("The given index is not compatible with a " +
|
|
40
40
|
"TimelineRepresentationIndex.");
|
|
41
41
|
}
|
|
42
|
-
var manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
|
|
42
|
+
var availabilityTimeComplete = context.availabilityTimeComplete, manifestBoundsCalculator = context.manifestBoundsCalculator, isDynamic = context.isDynamic, representationBaseURLs = context.representationBaseURLs, representationId = context.representationId, representationBitrate = context.representationBitrate, periodStart = context.periodStart, periodEnd = context.periodEnd, isEMSGWhitelisted = context.isEMSGWhitelisted;
|
|
43
43
|
var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
44
44
|
var presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
45
45
|
index.presentationTimeOffset :
|
|
@@ -63,13 +63,14 @@ var TimelineRepresentationIndex = /** @class */ (function () {
|
|
|
63
63
|
}
|
|
64
64
|
this._isDynamic = isDynamic;
|
|
65
65
|
this._parseTimeline = (_b = index.timelineParser) !== null && _b !== void 0 ? _b : null;
|
|
66
|
-
|
|
66
|
+
var urlSources = representationBaseURLs.map(function (b) { return b.url; });
|
|
67
|
+
this._index = { availabilityTimeComplete: availabilityTimeComplete, indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: index.initialization == null ?
|
|
67
68
|
undefined :
|
|
68
69
|
{
|
|
69
|
-
mediaURLs: createIndexURLs(
|
|
70
|
+
mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
|
|
70
71
|
range: index.initialization.range,
|
|
71
72
|
},
|
|
72
|
-
mediaURLs: createIndexURLs(
|
|
73
|
+
mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate),
|
|
73
74
|
startNumber: index.startNumber,
|
|
74
75
|
timeline: (_c = index.timeline) !== null && _c !== void 0 ? _c : null, timescale: timescale };
|
|
75
76
|
this._scaledPeriodStart = toIndexTime(periodStart, this._index);
|
|
@@ -41,7 +41,7 @@ function processFormatedToken(replacer) {
|
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* @param {string}
|
|
44
|
+
* @param {string} baseURLs
|
|
45
45
|
* @param {string|undefined} media
|
|
46
46
|
* @param {string|undefined} id
|
|
47
47
|
* @param {number|undefined} bitrate
|
|
@@ -72,7 +72,7 @@ export function replaceRepresentationDASHTokens(path, id, bitrate) {
|
|
|
72
72
|
return path
|
|
73
73
|
.replace(/\$\$/g, "$")
|
|
74
74
|
.replace(/\$RepresentationID\$/g, String(id))
|
|
75
|
-
.replace(/\$Bandwidth(
|
|
75
|
+
.replace(/\$Bandwidth(\%0(\d+)d)?\$/g, processFormatedToken(bitrate === undefined ? 0 :
|
|
76
76
|
bitrate));
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -100,13 +100,13 @@ export function createDashUrlDetokenizer(time, nb) {
|
|
|
100
100
|
else {
|
|
101
101
|
return url
|
|
102
102
|
.replace(/\$\$/g, "$")
|
|
103
|
-
.replace(/\$Number(
|
|
103
|
+
.replace(/\$Number(\%0(\d+)d)?\$/g, function (_x, _y, widthStr) {
|
|
104
104
|
if (nb === undefined) {
|
|
105
105
|
throw new Error("Segment number not defined in a $Number$ scheme");
|
|
106
106
|
}
|
|
107
107
|
return processFormatedToken(nb)(_x, _y, widthStr);
|
|
108
108
|
})
|
|
109
|
-
.replace(/\$Time(
|
|
109
|
+
.replace(/\$Time(\%0(\d+)d)?\$/g, function (_x, _y, widthStr) {
|
|
110
110
|
if (time === undefined) {
|
|
111
111
|
throw new Error("Segment time not defined in a $Time$ scheme");
|
|
112
112
|
}
|
|
@@ -17,14 +17,16 @@ import { Period } from "../../../../manifest";
|
|
|
17
17
|
import { IParsedAdaptations } from "../../types";
|
|
18
18
|
import { IAdaptationSetIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
|
|
19
19
|
import ManifestBoundsCalculator from "./manifest_bounds_calculator";
|
|
20
|
+
import { IResolvedBaseUrl } from "./resolve_base_urls";
|
|
20
21
|
/** Context needed when calling `parseAdaptationSets`. */
|
|
21
22
|
export interface IAdaptationSetsContextInfos {
|
|
22
23
|
/** Whether we should request new segments even if they are not yet finished. */
|
|
23
24
|
aggressiveMode: boolean;
|
|
25
|
+
availabilityTimeComplete: boolean;
|
|
24
26
|
/** availabilityTimeOffset of the concerned period. */
|
|
25
27
|
availabilityTimeOffset: number;
|
|
26
28
|
/** Eventual URLs from which every relative URL will be based on. */
|
|
27
|
-
baseURLs:
|
|
29
|
+
baseURLs: IResolvedBaseUrl[];
|
|
28
30
|
/** Allows to obtain the first available position of a content. */
|
|
29
31
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
30
32
|
end?: number;
|
|
@@ -19,7 +19,6 @@ import arrayIncludes from "../../../../utils/array_includes";
|
|
|
19
19
|
import isNonEmptyString from "../../../../utils/is_non_empty_string";
|
|
20
20
|
import attachTrickModeTrack from "./attach_trickmode_track";
|
|
21
21
|
// eslint-disable-next-line max-len
|
|
22
|
-
import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
|
|
23
22
|
import inferAdaptationType from "./infer_adaptation_type";
|
|
24
23
|
import parseRepresentations from "./parse_representations";
|
|
25
24
|
import resolveBaseURLs from "./resolve_base_urls";
|
|
@@ -83,7 +82,7 @@ function getAdaptationID(adaptation, infos) {
|
|
|
83
82
|
var isClosedCaption = infos.isClosedCaption, isAudioDescription = infos.isAudioDescription, isSignInterpreted = infos.isSignInterpreted, isTrickModeTrack = infos.isTrickModeTrack, type = infos.type;
|
|
84
83
|
var idString = type;
|
|
85
84
|
if (isNonEmptyString(adaptation.attributes.language)) {
|
|
86
|
-
idString += "-"
|
|
85
|
+
idString += "-".concat(adaptation.attributes.language);
|
|
87
86
|
}
|
|
88
87
|
if (isClosedCaption === true) {
|
|
89
88
|
idString += "-cc";
|
|
@@ -98,16 +97,16 @@ function getAdaptationID(adaptation, infos) {
|
|
|
98
97
|
idString += "-trickMode";
|
|
99
98
|
}
|
|
100
99
|
if (isNonEmptyString(adaptation.attributes.contentType)) {
|
|
101
|
-
idString += "-"
|
|
100
|
+
idString += "-".concat(adaptation.attributes.contentType);
|
|
102
101
|
}
|
|
103
102
|
if (isNonEmptyString(adaptation.attributes.codecs)) {
|
|
104
|
-
idString += "-"
|
|
103
|
+
idString += "-".concat(adaptation.attributes.codecs);
|
|
105
104
|
}
|
|
106
105
|
if (isNonEmptyString(adaptation.attributes.mimeType)) {
|
|
107
|
-
idString += "-"
|
|
106
|
+
idString += "-".concat(adaptation.attributes.mimeType);
|
|
108
107
|
}
|
|
109
108
|
if (isNonEmptyString(adaptation.attributes.frameRate)) {
|
|
110
|
-
idString += "-"
|
|
109
|
+
idString += "-".concat(adaptation.attributes.frameRate);
|
|
111
110
|
}
|
|
112
111
|
return idString;
|
|
113
112
|
}
|
|
@@ -143,7 +142,7 @@ function getAdaptationSetSwitchingIDs(adaptation) {
|
|
|
143
142
|
*/
|
|
144
143
|
export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
145
144
|
var _a;
|
|
146
|
-
var _b, _c, _d, _e, _f;
|
|
145
|
+
var _b, _c, _d, _e, _f, _g, _h;
|
|
147
146
|
var parsedAdaptations = {};
|
|
148
147
|
var trickModeAdaptations = [];
|
|
149
148
|
var adaptationSwitchingInfos = {};
|
|
@@ -172,7 +171,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
172
171
|
roles.some(function (role) { return role.value === "main"; }) &&
|
|
173
172
|
roles.some(function (role) { return role.schemeIdUri === "urn:mpeg:dash:role:2011"; });
|
|
174
173
|
var representationsIR = adaptation.children.representations;
|
|
175
|
-
var
|
|
174
|
+
var availabilityTimeComplete = (_b = adaptation.attributes.availabilityTimeComplete) !== null && _b !== void 0 ? _b : periodInfos.availabilityTimeComplete;
|
|
175
|
+
var availabilityTimeOffset = ((_c = adaptation.attributes.availabilityTimeOffset) !== null && _c !== void 0 ? _c : 0) +
|
|
176
176
|
periodInfos.availabilityTimeOffset;
|
|
177
177
|
var adaptationMimeType = adaptation.attributes.mimeType;
|
|
178
178
|
var adaptationCodecs = adaptation.attributes.codecs;
|
|
@@ -198,6 +198,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
198
198
|
}
|
|
199
199
|
var adaptationInfos = {
|
|
200
200
|
aggressiveMode: periodInfos.aggressiveMode,
|
|
201
|
+
availabilityTimeComplete: availabilityTimeComplete,
|
|
201
202
|
availabilityTimeOffset: availabilityTimeOffset,
|
|
202
203
|
baseURLs: resolveBaseURLs(periodInfos.baseURLs, adaptationChildren.baseURLs),
|
|
203
204
|
manifestBoundsCalculator: periodInfos.manifestBoundsCalculator,
|
|
@@ -214,7 +215,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
214
215
|
arrayFind(essentialProperties, function (scheme) {
|
|
215
216
|
return scheme.schemeIdUri === "http://dashif.org/guidelines/trickmode";
|
|
216
217
|
}) : undefined;
|
|
217
|
-
var trickModeAttachedAdaptationIds = (
|
|
218
|
+
var trickModeAttachedAdaptationIds = (_d = trickModeProperty === null || trickModeProperty === void 0 ? void 0 : trickModeProperty.value) === null || _d === void 0 ? void 0 : _d.split(" ");
|
|
218
219
|
var isTrickModeTrack = trickModeAttachedAdaptationIds !== undefined;
|
|
219
220
|
if (type === "video" &&
|
|
220
221
|
isMainAdaptation &&
|
|
@@ -225,8 +226,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
225
226
|
// Add to the already existing main video adaptation
|
|
226
227
|
// TODO remove that ugly custom logic?
|
|
227
228
|
var videoMainAdaptation = parsedAdaptations.video[lastMainAdaptationIndex.video];
|
|
228
|
-
adaptationInfos.unsafelyBaseOnPreviousAdaptation = (
|
|
229
|
-
.unsafelyBaseOnPreviousPeriod) === null ||
|
|
229
|
+
adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_f = (_e = periodInfos
|
|
230
|
+
.unsafelyBaseOnPreviousPeriod) === null || _e === void 0 ? void 0 : _e.getAdaptation(videoMainAdaptation.id)) !== null && _f !== void 0 ? _f : null;
|
|
230
231
|
var representations = parseRepresentations(representationsIR, adaptation, adaptationInfos);
|
|
231
232
|
(_a = videoMainAdaptation.representations).push.apply(_a, representations);
|
|
232
233
|
newID = videoMainAdaptation.id;
|
|
@@ -266,8 +267,8 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
266
267
|
}
|
|
267
268
|
newID = adaptationID;
|
|
268
269
|
parsedAdaptationsIDs.push(adaptationID);
|
|
269
|
-
adaptationInfos.unsafelyBaseOnPreviousAdaptation = (
|
|
270
|
-
.unsafelyBaseOnPreviousPeriod) === null ||
|
|
270
|
+
adaptationInfos.unsafelyBaseOnPreviousAdaptation = (_h = (_g = periodInfos
|
|
271
|
+
.unsafelyBaseOnPreviousPeriod) === null || _g === void 0 ? void 0 : _g.getAdaptation(adaptationID)) !== null && _h !== void 0 ? _h : null;
|
|
271
272
|
var representations = parseRepresentations(representationsIR, adaptation, adaptationInfos);
|
|
272
273
|
var parsedAdaptationSet = { id: adaptationID, representations: representations, type: type, isTrickModeTrack: isTrickModeTrack };
|
|
273
274
|
if (adaptation.attributes.language != null) {
|
|
@@ -298,7 +299,7 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
298
299
|
else {
|
|
299
300
|
var mergedInto = null;
|
|
300
301
|
var _loop_1 = function (id) {
|
|
301
|
-
var
|
|
302
|
+
var _k;
|
|
302
303
|
var switchingInfos = adaptationSwitchingInfos[id];
|
|
303
304
|
if (switchingInfos != null &&
|
|
304
305
|
switchingInfos.newID !== newID &&
|
|
@@ -311,15 +312,15 @@ export default function parseAdaptationSets(adaptationsIR, periodInfos) {
|
|
|
311
312
|
parsedAdaptationSet.closedCaption &&
|
|
312
313
|
adaptationToMergeInto.language === parsedAdaptationSet.language) {
|
|
313
314
|
log.info("DASH Parser: merging \"switchable\" AdaptationSets", originalID, id);
|
|
314
|
-
(
|
|
315
|
-
.push.apply(
|
|
315
|
+
(_k = adaptationToMergeInto.representations)
|
|
316
|
+
.push.apply(_k, parsedAdaptationSet.representations);
|
|
316
317
|
mergedInto = adaptationToMergeInto;
|
|
317
318
|
}
|
|
318
319
|
}
|
|
319
320
|
};
|
|
320
321
|
// look if we have to merge this into another Adaptation
|
|
321
|
-
for (var
|
|
322
|
-
var id = adaptationSetSwitchingIDs_1[
|
|
322
|
+
for (var _j = 0, adaptationSetSwitchingIDs_1 = adaptationSetSwitchingIDs; _j < adaptationSetSwitchingIDs_1.length; _j++) {
|
|
323
|
+
var id = adaptationSetSwitchingIDs_1[_j];
|
|
323
324
|
_loop_1(id);
|
|
324
325
|
}
|
|
325
326
|
if (isMainAdaptation) {
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import Manifest from "../../../../manifest";
|
|
17
17
|
import { IParsedManifest } from "../../types";
|
|
18
18
|
import { IMPDIntermediateRepresentation, IPeriodIntermediateRepresentation } from "../node_parser_types";
|
|
19
|
+
import { IResponseData } from "../parsers_types";
|
|
19
20
|
import { IXLinkInfos } from "./parse_periods";
|
|
20
21
|
/** Possible options for `parseMPD`. */
|
|
21
22
|
export interface IMPDParserArguments {
|
|
@@ -63,7 +64,7 @@ export interface IIrParserResponseNeedsClock {
|
|
|
63
64
|
* Callback to call with the fetched clock data in argument to continue
|
|
64
65
|
* parsing the MPD.
|
|
65
66
|
*/
|
|
66
|
-
continue: (clockValue: string) => IIrParserResponse;
|
|
67
|
+
continue: (clockValue: IResponseData<string>) => IIrParserResponse;
|
|
67
68
|
};
|
|
68
69
|
}
|
|
69
70
|
/**
|
|
@@ -27,7 +27,6 @@ import log from "../../../../log";
|
|
|
27
27
|
import arrayFind from "../../../../utils/array_find";
|
|
28
28
|
import { normalizeBaseURL } from "../../../../utils/resolve_url";
|
|
29
29
|
// eslint-disable-next-line max-len
|
|
30
|
-
import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
|
|
31
30
|
import getClockOffset from "./get_clock_offset";
|
|
32
31
|
import getHTTPUTCTimingURL from "./get_http_utc-timing_url";
|
|
33
32
|
import getMinimumAndMaximumPosition from "./get_minimum_and_maximum_positions";
|
|
@@ -70,8 +69,13 @@ export default function parseMpdIr(mpdIR, args, warnings, hasLoadedClock, xlinkI
|
|
|
70
69
|
type: "needs-clock",
|
|
71
70
|
value: {
|
|
72
71
|
url: UTCTimingHTTPURL,
|
|
73
|
-
continue: function continueParsingMPD(
|
|
74
|
-
|
|
72
|
+
continue: function continueParsingMPD(responseDataClock) {
|
|
73
|
+
if (!responseDataClock.success) {
|
|
74
|
+
warnings.push(responseDataClock.error);
|
|
75
|
+
log.warn("DASH Parser: Error on fetching the clock ressource", responseDataClock.error);
|
|
76
|
+
return parseMpdIr(mpdIR, args, warnings, true);
|
|
77
|
+
}
|
|
78
|
+
args.externalClockOffset = getClockOffset(responseDataClock.data);
|
|
75
79
|
return parseMpdIr(mpdIR, args, warnings, true);
|
|
76
80
|
},
|
|
77
81
|
},
|
|
@@ -133,14 +137,16 @@ function parseCompleteIntermediateRepresentation(mpdIR, args, warnings, xlinkInf
|
|
|
133
137
|
var _a, _b, _c;
|
|
134
138
|
var rootChildren = mpdIR.children, rootAttributes = mpdIR.attributes;
|
|
135
139
|
var isDynamic = rootAttributes.type === "dynamic";
|
|
136
|
-
var
|
|
137
|
-
[
|
|
138
|
-
|
|
140
|
+
var initialBaseUrl = args.url !== undefined ?
|
|
141
|
+
[{ url: normalizeBaseURL(args.url),
|
|
142
|
+
availabilityTimeOffset: 0,
|
|
143
|
+
availabilityTimeComplete: true }] :
|
|
144
|
+
[];
|
|
145
|
+
var mpdBaseUrls = resolveBaseURLs(initialBaseUrl, rootChildren.baseURLs);
|
|
139
146
|
var availabilityStartTime = parseAvailabilityStartTime(rootAttributes, args.referenceDateTime);
|
|
140
147
|
var timeShiftBufferDepth = rootAttributes.timeShiftBufferDepth;
|
|
141
148
|
var clockOffset = args.externalClockOffset, unsafelyBaseOnPreviousManifest = args.unsafelyBaseOnPreviousManifest;
|
|
142
|
-
var
|
|
143
|
-
var manifestInfos = { aggressiveMode: args.aggressiveMode, availabilityStartTime: availabilityStartTime, availabilityTimeOffset: availabilityTimeOffset, baseURLs: baseURLs, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
|
|
149
|
+
var manifestInfos = { aggressiveMode: args.aggressiveMode, availabilityStartTime: availabilityStartTime, baseURLs: mpdBaseUrls, clockOffset: clockOffset, duration: rootAttributes.duration, isDynamic: isDynamic, manifestProfiles: mpdIR.attributes.profiles,
|
|
144
150
|
receivedTime: args.manifestReceivedTime, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousManifest: unsafelyBaseOnPreviousManifest, xlinkInfos: xlinkInfos, xmlNamespaces: mpdIR.attributes.namespaces };
|
|
145
151
|
var parsedPeriods = parsePeriods(rootChildren.periods, manifestInfos);
|
|
146
152
|
var mediaPresentationDuration = rootAttributes.duration;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import Manifest from "../../../../manifest";
|
|
17
17
|
import { IParsedPeriod } from "../../types";
|
|
18
18
|
import { IPeriodIntermediateRepresentation } from "../node_parser_types";
|
|
19
|
+
import { IResolvedBaseUrl } from "./resolve_base_urls";
|
|
19
20
|
/** Information about each linked Xlink. */
|
|
20
21
|
export declare type IXLinkInfos = WeakMap<IPeriodIntermediateRepresentation, {
|
|
21
22
|
/** Real URL (post-redirection) used to download this xlink. */
|
|
@@ -29,9 +30,8 @@ export declare type IXLinkInfos = WeakMap<IPeriodIntermediateRepresentation, {
|
|
|
29
30
|
export interface IPeriodsContextInfos {
|
|
30
31
|
/** Whether we should request new segments even if they are not yet finished. */
|
|
31
32
|
aggressiveMode: boolean;
|
|
32
|
-
availabilityTimeOffset: number;
|
|
33
33
|
availabilityStartTime: number;
|
|
34
|
-
baseURLs:
|
|
34
|
+
baseURLs: IResolvedBaseUrl[];
|
|
35
35
|
clockOffset?: number;
|
|
36
36
|
duration?: number;
|
|
37
37
|
isDynamic: boolean;
|
|
@@ -19,7 +19,6 @@ import idGenerator from "../../../../utils/id_generator";
|
|
|
19
19
|
import objectValues from "../../../../utils/object_values";
|
|
20
20
|
import { utf8ToStr } from "../../../../utils/string_parsing";
|
|
21
21
|
// eslint-disable-next-line max-len
|
|
22
|
-
import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
|
|
23
22
|
import flattenOverlappingPeriods from "./flatten_overlapping_periods";
|
|
24
23
|
import getPeriodsTimeInformation from "./get_periods_time_infos";
|
|
25
24
|
import ManifestBoundsCalculator from "./manifest_bounds_calculator";
|
|
@@ -33,7 +32,7 @@ var generatePeriodID = idGenerator();
|
|
|
33
32
|
* @returns {Array.<Object>}
|
|
34
33
|
*/
|
|
35
34
|
export default function parsePeriods(periodsIR, contextInfos) {
|
|
36
|
-
var _a, _b, _c, _d;
|
|
35
|
+
var _a, _b, _c, _d, _e, _f;
|
|
37
36
|
var parsedPeriods = [];
|
|
38
37
|
var periodsTimeInformation = getPeriodsTimeInformation(periodsIR, contextInfos);
|
|
39
38
|
if (periodsTimeInformation.length !== periodsIR.length) {
|
|
@@ -48,7 +47,7 @@ export default function parsePeriods(periodsIR, contextInfos) {
|
|
|
48
47
|
var periodIR = periodsIR[i];
|
|
49
48
|
var xlinkInfos = contextInfos.xlinkInfos.get(periodIR);
|
|
50
49
|
var periodBaseURLs = resolveBaseURLs(contextInfos.baseURLs, periodIR.children.baseURLs);
|
|
51
|
-
var
|
|
50
|
+
var _g = periodsTimeInformation[i], periodStart = _g.periodStart, periodDuration = _g.periodDuration, periodEnd = _g.periodEnd;
|
|
52
51
|
var periodID;
|
|
53
52
|
if (periodIR.attributes.id == null) {
|
|
54
53
|
log.warn("DASH: No usable id found in the Period. Generating one.");
|
|
@@ -63,15 +62,15 @@ export default function parsePeriods(periodsIR, contextInfos) {
|
|
|
63
62
|
}
|
|
64
63
|
var receivedTime = xlinkInfos !== undefined ? xlinkInfos.receivedTime :
|
|
65
64
|
contextInfos.receivedTime;
|
|
66
|
-
var availabilityTimeOffset = extractMinimumAvailabilityTimeOffset(periodIR.children.baseURLs) +
|
|
67
|
-
contextInfos.availabilityTimeOffset;
|
|
68
65
|
var unsafelyBaseOnPreviousPeriod = (_b = (_a = contextInfos
|
|
69
66
|
.unsafelyBaseOnPreviousManifest) === null || _a === void 0 ? void 0 : _a.getPeriod(periodID)) !== null && _b !== void 0 ? _b : null;
|
|
70
|
-
var
|
|
67
|
+
var availabilityTimeComplete = (_c = periodIR.attributes.availabilityTimeComplete) !== null && _c !== void 0 ? _c : true;
|
|
68
|
+
var availabilityTimeOffset = (_d = periodIR.attributes.availabilityTimeOffset) !== null && _d !== void 0 ? _d : 0;
|
|
69
|
+
var periodInfos = { aggressiveMode: contextInfos.aggressiveMode, availabilityTimeComplete: availabilityTimeComplete, availabilityTimeOffset: availabilityTimeOffset, baseURLs: periodBaseURLs, manifestBoundsCalculator: manifestBoundsCalculator, end: periodEnd, isDynamic: isDynamic, manifestProfiles: contextInfos.manifestProfiles, receivedTime: receivedTime, segmentTemplate: periodIR.children.segmentTemplate,
|
|
71
70
|
start: periodStart, timeShiftBufferDepth: timeShiftBufferDepth, unsafelyBaseOnPreviousPeriod: unsafelyBaseOnPreviousPeriod };
|
|
72
71
|
var adaptations = parseAdaptationSets(periodIR.children.adaptations, periodInfos);
|
|
73
|
-
var namespaces = ((
|
|
74
|
-
.concat((
|
|
72
|
+
var namespaces = ((_e = contextInfos.xmlNamespaces) !== null && _e !== void 0 ? _e : [])
|
|
73
|
+
.concat((_f = periodIR.attributes.namespaces) !== null && _f !== void 0 ? _f : []);
|
|
75
74
|
var streamEvents = generateStreamEvents(periodIR.children.eventStreams, periodStart, namespaces);
|
|
76
75
|
var parsedPeriod = { id: periodID,
|
|
77
76
|
start: periodStart,
|
|
@@ -16,16 +16,18 @@
|
|
|
16
16
|
import { IRepresentationIndex, Representation } from "../../../../manifest";
|
|
17
17
|
import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation, IScheme } from "../node_parser_types";
|
|
18
18
|
import ManifestBoundsCalculator from "./manifest_bounds_calculator";
|
|
19
|
+
import { IResolvedBaseUrl } from "./resolve_base_urls";
|
|
19
20
|
/** Supplementary context needed to parse a RepresentationIndex. */
|
|
20
21
|
export interface IRepresentationInfos {
|
|
21
22
|
/** Parsed AdaptationSet which contains the Representation. */
|
|
22
23
|
adaptation: IAdaptationSetIntermediateRepresentation;
|
|
23
24
|
/** Whether we should request new segments even if they are not yet finished. */
|
|
24
25
|
aggressiveMode: boolean;
|
|
26
|
+
availabilityTimeComplete: boolean;
|
|
25
27
|
/** availability time offset of the concerned Adaptation. */
|
|
26
28
|
availabilityTimeOffset: number;
|
|
27
29
|
/** Eventual URLs from which every relative URL will be based on. */
|
|
28
|
-
baseURLs:
|
|
30
|
+
baseURLs: IResolvedBaseUrl[];
|
|
29
31
|
/** Allows to obtain the first/last available position of a dynamic content. */
|
|
30
32
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
31
33
|
/** End time of the current period, in seconds. */
|
|
@@ -23,8 +23,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
23
23
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
24
24
|
};
|
|
25
25
|
import objectAssign from "../../../../utils/object_assign";
|
|
26
|
-
// eslint-disable-next-line max-len
|
|
27
|
-
import extractMinimumAvailabilityTimeOffset from "./extract_minimum_availability_time_offset";
|
|
28
26
|
import { BaseRepresentationIndex, ListRepresentationIndex, TemplateRepresentationIndex, TimelineRepresentationIndex, } from "./indexes";
|
|
29
27
|
import resolveBaseURLs from "./resolve_base_urls";
|
|
30
28
|
/**
|
|
@@ -48,15 +46,11 @@ export default function parseRepresentationIndex(representation, representationI
|
|
|
48
46
|
return schemeIdUri === inbandEvent.schemeIdUri;
|
|
49
47
|
});
|
|
50
48
|
};
|
|
51
|
-
var context = { aggressiveMode: aggressiveMode, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
|
|
49
|
+
var context = { aggressiveMode: aggressiveMode, availabilityTimeComplete: true, availabilityTimeOffset: availabilityTimeOffset, unsafelyBaseOnPreviousRepresentation: unsafelyBaseOnPreviousRepresentation, isEMSGWhitelisted: isEMSGWhitelisted, manifestBoundsCalculator: manifestBoundsCalculator, isDynamic: isDynamic, periodEnd: periodEnd, periodStart: periodStart, receivedTime: receivedTime, representationBaseURLs: representationBaseURLs, representationBitrate: representation.attributes.bitrate,
|
|
52
50
|
representationId: representation.attributes.id, timeShiftBufferDepth: timeShiftBufferDepth };
|
|
53
51
|
var representationIndex;
|
|
54
52
|
if (representation.children.segmentBase !== undefined) {
|
|
55
53
|
var segmentBase = representation.children.segmentBase;
|
|
56
|
-
context.availabilityTimeOffset =
|
|
57
|
-
representationInfos.availabilityTimeOffset +
|
|
58
|
-
extractMinimumAvailabilityTimeOffset(representation.children.baseURLs) +
|
|
59
|
-
((_a = segmentBase.availabilityTimeOffset) !== null && _a !== void 0 ? _a : 0);
|
|
60
54
|
representationIndex = new BaseRepresentationIndex(segmentBase, context);
|
|
61
55
|
}
|
|
62
56
|
else if (representation.children.segmentList !== undefined) {
|
|
@@ -71,10 +65,11 @@ export default function parseRepresentationIndex(representation, representationI
|
|
|
71
65
|
segmentTemplates.push(childSegmentTemplate);
|
|
72
66
|
}
|
|
73
67
|
var segmentTemplate = objectAssign.apply(void 0, __spreadArray([{}], segmentTemplates /* Ugly TS Hack */, false));
|
|
68
|
+
context.availabilityTimeComplete =
|
|
69
|
+
(_a = segmentTemplate.availabilityTimeComplete) !== null && _a !== void 0 ? _a : representationInfos.availabilityTimeComplete;
|
|
74
70
|
context.availabilityTimeOffset =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0);
|
|
71
|
+
((_b = segmentTemplate.availabilityTimeOffset) !== null && _b !== void 0 ? _b : 0) +
|
|
72
|
+
representationInfos.availabilityTimeOffset;
|
|
78
73
|
representationIndex = TimelineRepresentationIndex
|
|
79
74
|
.isTimelineIndexArgument(segmentTemplate) ?
|
|
80
75
|
new TimelineRepresentationIndex(segmentTemplate, context) :
|
|
@@ -17,14 +17,16 @@ import { Adaptation } from "../../../../manifest";
|
|
|
17
17
|
import { IParsedRepresentation } from "../../types";
|
|
18
18
|
import { IAdaptationSetIntermediateRepresentation, IRepresentationIntermediateRepresentation, ISegmentTemplateIntermediateRepresentation } from "../node_parser_types";
|
|
19
19
|
import ManifestBoundsCalculator from "./manifest_bounds_calculator";
|
|
20
|
+
import { IResolvedBaseUrl } from "./resolve_base_urls";
|
|
20
21
|
/** Supplementary context needed to parse a Representation. */
|
|
21
22
|
export interface IAdaptationInfos {
|
|
22
23
|
/** Whether we should request new segments even if they are not yet finished. */
|
|
23
24
|
aggressiveMode: boolean;
|
|
25
|
+
availabilityTimeComplete: boolean;
|
|
24
26
|
/** availability time offset of the concerned Adaptation. */
|
|
25
27
|
availabilityTimeOffset: number;
|
|
26
28
|
/** Eventual URLs from which every relative URL will be based on. */
|
|
27
|
-
baseURLs:
|
|
29
|
+
baseURLs: IResolvedBaseUrl[];
|
|
28
30
|
/** Allows to obtain the first/last available position of a dynamic content. */
|
|
29
31
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
30
32
|
/** End time of the current period, in seconds. */
|