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
package/src/index.ts
CHANGED
|
@@ -28,8 +28,8 @@ import logger from "./log";
|
|
|
28
28
|
// set initial features according to environment variables
|
|
29
29
|
initializeFeatures();
|
|
30
30
|
|
|
31
|
-
if (
|
|
32
|
-
logger.setLevel(__LOGGER_LEVEL__);
|
|
31
|
+
if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
|
|
32
|
+
logger.setLevel(__LOGGER_LEVEL__.CURRENT_LEVEL);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export default Player;
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
21
21
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
22
22
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
23
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
23
24
|
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
24
25
|
|
|
25
26
|
describe("Manifest - Manifest", () => {
|
package/src/manifest/index.ts
CHANGED
|
@@ -19,7 +19,6 @@ import Adaptation, {
|
|
|
19
19
|
IRepresentationInfos,
|
|
20
20
|
SUPPORTED_ADAPTATIONS_TYPE,
|
|
21
21
|
} from "./adaptation";
|
|
22
|
-
import areSameContent from "./are_same_content";
|
|
23
22
|
import Manifest, {
|
|
24
23
|
IManifestParsingOptions,
|
|
25
24
|
ISupplementaryImageTrack,
|
|
@@ -38,12 +37,19 @@ import {
|
|
|
38
37
|
IAdaptationType,
|
|
39
38
|
IHDRInformation,
|
|
40
39
|
} from "./types";
|
|
40
|
+
import {
|
|
41
|
+
areSameContent,
|
|
42
|
+
getLoggableSegmentId,
|
|
43
|
+
IBufferedChunkInfos,
|
|
44
|
+
} from "./utils";
|
|
41
45
|
|
|
42
46
|
export default Manifest;
|
|
43
47
|
export * from "./types";
|
|
44
48
|
export {
|
|
45
49
|
// utils
|
|
46
50
|
areSameContent,
|
|
51
|
+
getLoggableSegmentId,
|
|
52
|
+
IBufferedChunkInfos,
|
|
47
53
|
|
|
48
54
|
// classes
|
|
49
55
|
Period,
|
|
@@ -26,6 +26,7 @@ describe("manifest - StaticRepresentationIndex", () => {
|
|
|
26
26
|
it("should return a single segment with the maximum duration and the right url", () => {
|
|
27
27
|
const staticRI = new StaticRepresentationIndex({ media: "foo" });
|
|
28
28
|
expect(staticRI.getSegments()).toEqual([{ id: "0",
|
|
29
|
+
complete: true,
|
|
29
30
|
isInit: false,
|
|
30
31
|
number: 0,
|
|
31
32
|
time: 0,
|
|
@@ -187,9 +187,20 @@ export interface ISegment {
|
|
|
187
187
|
end : number;
|
|
188
188
|
/**
|
|
189
189
|
* Estimated duration for the segment, in seconds.
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
190
|
+
*
|
|
191
|
+
* Note that this may not reflect the exact segment duration:
|
|
192
|
+
*
|
|
193
|
+
* 1. In some very specific cases, segments might be generated and served
|
|
194
|
+
* progressively. In this case, the full duration of a segment might not
|
|
195
|
+
* be yet known and thus this property only reflect the currently known
|
|
196
|
+
* `duration` of the segment, which may be inferior to its final duration.
|
|
197
|
+
*
|
|
198
|
+
* You can know if we're in that case when the `complete` property of
|
|
199
|
+
* this same segment is set to `false`.
|
|
200
|
+
*
|
|
201
|
+
* 2. some rounding errors and some differences between what the
|
|
202
|
+
* Manifest says and what the content really is might make that time not
|
|
203
|
+
* exact.
|
|
193
204
|
*
|
|
194
205
|
* `0` for initialization segments.
|
|
195
206
|
*/
|
|
@@ -202,6 +213,17 @@ export interface ISegment {
|
|
|
202
213
|
* As both are always in seconds now, this property became unneeded.
|
|
203
214
|
*/
|
|
204
215
|
timescale : 1;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* If `false`, this segment's `duration` property may not be the duration of
|
|
219
|
+
* the full segment as it could still be in the process of being generated
|
|
220
|
+
* on the server-side (when this `ISegment` had been constructed).
|
|
221
|
+
*
|
|
222
|
+
* Note that if the `duration` is sure to be the final one, `complete`
|
|
223
|
+
* should be set to `true` even if the segment is still being
|
|
224
|
+
* generated.
|
|
225
|
+
*/
|
|
226
|
+
complete : boolean;
|
|
205
227
|
}
|
|
206
228
|
|
|
207
229
|
/** Interface that should be implemented by any Representation's `index` value. */
|
|
@@ -14,19 +14,17 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import isNullOrUndefined from "../utils/is_null_or_undefined";
|
|
17
18
|
import Adaptation from "./adaptation";
|
|
18
19
|
import Period from "./period";
|
|
19
20
|
import Representation from "./representation";
|
|
20
21
|
import { ISegment } from "./representation_index";
|
|
21
22
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
period : Period;
|
|
28
|
-
representation : Representation;
|
|
29
|
-
segment : ISegment; }
|
|
23
|
+
/** All information needed to identify a given segment. */
|
|
24
|
+
export interface IBufferedChunkInfos { adaptation : Adaptation;
|
|
25
|
+
period : Period;
|
|
26
|
+
representation : Representation;
|
|
27
|
+
segment : ISegment; }
|
|
30
28
|
|
|
31
29
|
/**
|
|
32
30
|
* Check if two contents are the same
|
|
@@ -34,7 +32,7 @@ interface IBufferedChunkInfos { adaptation : Adaptation;
|
|
|
34
32
|
* @param {Object} content2
|
|
35
33
|
* @returns {boolean}
|
|
36
34
|
*/
|
|
37
|
-
export
|
|
35
|
+
export function areSameContent(
|
|
38
36
|
content1: IBufferedChunkInfos,
|
|
39
37
|
content2: IBufferedChunkInfos
|
|
40
38
|
): boolean {
|
|
@@ -43,3 +41,22 @@ export default function areSameContent(
|
|
|
43
41
|
content1.adaptation.id === content2.adaptation.id &&
|
|
44
42
|
content1.period.id === content2.period.id);
|
|
45
43
|
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get string describing a given ISegment, useful for log functions.
|
|
47
|
+
* @param {Object} content
|
|
48
|
+
* @returns {string|null|undefined}
|
|
49
|
+
*/
|
|
50
|
+
export function getLoggableSegmentId(
|
|
51
|
+
content : IBufferedChunkInfos | null | undefined
|
|
52
|
+
) : string {
|
|
53
|
+
if (isNullOrUndefined(content)) {
|
|
54
|
+
return "";
|
|
55
|
+
}
|
|
56
|
+
const { period, adaptation, representation, segment } = content;
|
|
57
|
+
return `${adaptation.type} P: ${period.id} A: ${adaptation.id} ` +
|
|
58
|
+
`R: ${representation.id} S: ` +
|
|
59
|
+
(segment.isInit ? "init" :
|
|
60
|
+
segment.complete ? `${segment.time}-${segment.duration}` :
|
|
61
|
+
`${segment.time}`);
|
|
62
|
+
}
|
package/src/minimal.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* This allows to import a "minimal" player with a small bundle size and then
|
|
21
21
|
* import only features that is needed.
|
|
22
22
|
*/
|
|
23
|
+
|
|
23
24
|
import Player from "./core/api";
|
|
24
25
|
import {
|
|
25
26
|
addFeatures,
|
|
@@ -27,8 +28,8 @@ import {
|
|
|
27
28
|
} from "./features";
|
|
28
29
|
import logger from "./log";
|
|
29
30
|
|
|
30
|
-
if (
|
|
31
|
-
logger.setLevel(__LOGGER_LEVEL__);
|
|
31
|
+
if (__ENVIRONMENT__.CURRENT_ENV === __ENVIRONMENT__.DEV as number) {
|
|
32
|
+
logger.setLevel(__LOGGER_LEVEL__.CURRENT_LEVEL);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
/**
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import log from "../../../log";
|
|
18
|
+
import assert from "../../../utils/assert";
|
|
18
19
|
import {
|
|
19
20
|
be4toi,
|
|
20
21
|
be8toi,
|
|
@@ -23,8 +24,8 @@ import {
|
|
|
23
24
|
/**
|
|
24
25
|
* Returns the content of a box based on its name.
|
|
25
26
|
* `null` if not found.
|
|
26
|
-
* @param {Uint8Array} buf - the isobmff
|
|
27
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
27
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
28
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
28
29
|
* generated from encoding the corresponding ASCII in big endian.
|
|
29
30
|
* @returns {UInt8Array|null}
|
|
30
31
|
*/
|
|
@@ -34,11 +35,36 @@ function getBoxContent(buf : Uint8Array, boxName : number) : Uint8Array|null {
|
|
|
34
35
|
null;
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Reads the whole ISOBMFF and returns the content of all boxes with the given
|
|
40
|
+
* name, in order.
|
|
41
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
42
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
43
|
+
* generated from encoding the corresponding ASCII in big endian.
|
|
44
|
+
* @returns {Array.<Uint8Array>}
|
|
45
|
+
*/
|
|
46
|
+
function getBoxesContent(buf : Uint8Array, boxName : number) : Uint8Array[] {
|
|
47
|
+
const ret = [];
|
|
48
|
+
let currentBuf = buf;
|
|
49
|
+
while (true) {
|
|
50
|
+
const offsets = getBoxOffsets(currentBuf, boxName);
|
|
51
|
+
if (offsets === null) {
|
|
52
|
+
return ret;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Guard against a (very highly improbable) infinite loop
|
|
56
|
+
assert(offsets[2] !== 0 && currentBuf.length !== 0);
|
|
57
|
+
|
|
58
|
+
ret.push(currentBuf.subarray(offsets[1], offsets[2]));
|
|
59
|
+
currentBuf = currentBuf.subarray(offsets[2]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
37
63
|
/**
|
|
38
64
|
* Returns an ISOBMFF box - size and name included - based on its name.
|
|
39
65
|
* `null` if not found.
|
|
40
|
-
* @param {Uint8Array} buf - the isobmff
|
|
41
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
66
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
67
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
42
68
|
* generated from encoding the corresponding ASCII in big endian.
|
|
43
69
|
* @returns {UInt8Array|null}
|
|
44
70
|
*/
|
|
@@ -60,8 +86,8 @@ function getBox(buf : Uint8Array, boxName : number) : Uint8Array|null {
|
|
|
60
86
|
* size and the name of the box.
|
|
61
87
|
* 3. The first byte after the end of the box, might be equal to `buf`'s
|
|
62
88
|
* length if we're considering the last box.
|
|
63
|
-
* @param {Uint8Array} buf - the isobmff
|
|
64
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
89
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
90
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
65
91
|
* generated from encoding the corresponding ASCII in big endian.
|
|
66
92
|
* @returns {Array.<number>|null}
|
|
67
93
|
*/
|
|
@@ -176,8 +202,8 @@ function getUuidContent(
|
|
|
176
202
|
* length if we're considering the last box.
|
|
177
203
|
*
|
|
178
204
|
* `null` if no box is found.
|
|
179
|
-
* @param {Uint8Array} buf - the isobmff
|
|
180
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
205
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
206
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
181
207
|
* generated from encoding the corresponding ASCII in big endian.
|
|
182
208
|
*/
|
|
183
209
|
function getNextBoxOffsets(buf : Uint8Array
|
|
@@ -221,6 +247,7 @@ function getNextBoxOffsets(buf : Uint8Array
|
|
|
221
247
|
export {
|
|
222
248
|
getBox,
|
|
223
249
|
getBoxContent,
|
|
250
|
+
getBoxesContent,
|
|
224
251
|
getBoxOffsets,
|
|
225
252
|
getNextBoxOffsets,
|
|
226
253
|
getUuidContent,
|
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
getBoxContent,
|
|
19
|
+
getBoxesContent,
|
|
20
|
+
} from "./get_box";
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
|
-
* Returns
|
|
23
|
+
* Returns the content of the first "traf" box encountered in the given ISOBMFF
|
|
24
|
+
* data.
|
|
21
25
|
* Returns null if not found.
|
|
22
26
|
* @param {Uint8Array} buffer
|
|
23
27
|
* @returns {Uint8Array|null}
|
|
@@ -31,7 +35,27 @@ function getTRAF(buffer : Uint8Array) : Uint8Array|null {
|
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
/**
|
|
34
|
-
* Returns
|
|
38
|
+
* Returns the content of all "traf" boxes encountered in the given ISOBMFF
|
|
39
|
+
* data.
|
|
40
|
+
* Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
|
|
41
|
+
* have multiple "moof" boxes.
|
|
42
|
+
* @param {Uint8Array} buffer
|
|
43
|
+
* @returns {Array.<Uint8Array>}
|
|
44
|
+
*/
|
|
45
|
+
function getTRAFs(buffer : Uint8Array) : Uint8Array[] {
|
|
46
|
+
const moofs = getBoxesContent(buffer, 0x6D6F6F66 /* moof */);
|
|
47
|
+
return moofs.reduce((acc : Uint8Array[], moof : Uint8Array) => {
|
|
48
|
+
const traf = getBoxContent(moof, 0x74726166 /* traf */);
|
|
49
|
+
if (traf !== null) {
|
|
50
|
+
acc.push(traf);
|
|
51
|
+
}
|
|
52
|
+
return acc;
|
|
53
|
+
}, []);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Returns the content of the first "moof" box encountered in the given ISOBMFF
|
|
58
|
+
* data.
|
|
35
59
|
* Returns null if not found.
|
|
36
60
|
* @param {Uint8Array} buffer
|
|
37
61
|
* @returns {Uint8Array|null}
|
|
@@ -41,7 +65,8 @@ function getMDAT(buf : Uint8Array) : Uint8Array|null {
|
|
|
41
65
|
}
|
|
42
66
|
|
|
43
67
|
/**
|
|
44
|
-
* Returns
|
|
68
|
+
* Returns the content of the first "mdia" box encountered in the given ISOBMFF
|
|
69
|
+
* data.
|
|
45
70
|
* Returns null if not found.
|
|
46
71
|
* @param {Uint8Array} buffer
|
|
47
72
|
* @returns {Uint8Array|null}
|
|
@@ -61,7 +86,8 @@ function getMDIA(buf : Uint8Array) : Uint8Array|null {
|
|
|
61
86
|
}
|
|
62
87
|
|
|
63
88
|
/**
|
|
64
|
-
* Returns
|
|
89
|
+
* Returns the content of the first "emsg" box encountered in the given ISOBMFF
|
|
90
|
+
* data.
|
|
65
91
|
* Returns null if not found.
|
|
66
92
|
* @param {Uint8Array} buffer
|
|
67
93
|
* @returns {Uint8Array|null}
|
|
@@ -72,6 +98,7 @@ function getEMSG(buffer: Uint8Array, offset = 0) : Uint8Array|null {
|
|
|
72
98
|
|
|
73
99
|
export {
|
|
74
100
|
getTRAF,
|
|
101
|
+
getTRAFs,
|
|
75
102
|
getMDAT,
|
|
76
103
|
getMDIA,
|
|
77
104
|
getEMSG,
|
|
@@ -40,6 +40,7 @@ import {
|
|
|
40
40
|
getEMSG,
|
|
41
41
|
getMDIA,
|
|
42
42
|
getTRAF,
|
|
43
|
+
getTRAFs,
|
|
43
44
|
} from "./read";
|
|
44
45
|
|
|
45
46
|
/** Information related to a PSSH box. */
|
|
@@ -240,68 +241,72 @@ function getDefaultDurationFromTFHDInTRAF(traf : Uint8Array) : number | undefine
|
|
|
240
241
|
* @returns {number | undefined}
|
|
241
242
|
*/
|
|
242
243
|
function getDurationFromTrun(buffer : Uint8Array) : number | undefined {
|
|
243
|
-
const
|
|
244
|
-
if (
|
|
244
|
+
const trafs = getTRAFs(buffer);
|
|
245
|
+
if (trafs.length === 0) {
|
|
245
246
|
return undefined;
|
|
246
247
|
}
|
|
247
248
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const flags = be3toi(trun, cursor); cursor += 3;
|
|
259
|
-
const hasSampleDuration = (flags & 0x000100) > 0;
|
|
260
|
-
|
|
261
|
-
let defaultDuration : number | undefined = 0;
|
|
262
|
-
if (!hasSampleDuration) {
|
|
263
|
-
defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
|
|
264
|
-
if (defaultDuration === undefined) {
|
|
249
|
+
let completeDuration : number = 0;
|
|
250
|
+
for (const traf of trafs) {
|
|
251
|
+
const trun = getBoxContent(traf, 0x7472756E /* trun */);
|
|
252
|
+
if (trun === null) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
let cursor = 0;
|
|
256
|
+
const version = trun[cursor]; cursor += 1;
|
|
257
|
+
if (version > 1) {
|
|
265
258
|
return undefined;
|
|
266
259
|
}
|
|
267
|
-
}
|
|
268
260
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const hasSampleSize = (flags & 0x000200) > 0;
|
|
272
|
-
const hasSampleFlags = (flags & 0x000400) > 0;
|
|
273
|
-
const hasSampleCompositionOffset = (flags & 0x000800) > 0;
|
|
261
|
+
const flags = be3toi(trun, cursor); cursor += 3;
|
|
262
|
+
const hasSampleDuration = (flags & 0x000100) > 0;
|
|
274
263
|
|
|
275
|
-
|
|
264
|
+
let defaultDuration : number | undefined = 0;
|
|
265
|
+
if (!hasSampleDuration) {
|
|
266
|
+
defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
|
|
267
|
+
if (defaultDuration === undefined) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
276
271
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
}
|
|
272
|
+
const hasDataOffset = (flags & 0x000001) > 0;
|
|
273
|
+
const hasFirstSampleFlags = (flags & 0x000004) > 0;
|
|
274
|
+
const hasSampleSize = (flags & 0x000200) > 0;
|
|
275
|
+
const hasSampleFlags = (flags & 0x000400) > 0;
|
|
276
|
+
const hasSampleCompositionOffset = (flags & 0x000800) > 0;
|
|
283
277
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
if (hasSampleDuration) {
|
|
288
|
-
duration += be4toi(trun, cursor);
|
|
289
|
-
cursor += 4;
|
|
290
|
-
} else {
|
|
291
|
-
duration += defaultDuration;
|
|
292
|
-
}
|
|
293
|
-
if (hasSampleSize) {
|
|
278
|
+
const sampleCounts = be4toi(trun, cursor); cursor += 4;
|
|
279
|
+
|
|
280
|
+
if (hasDataOffset) {
|
|
294
281
|
cursor += 4;
|
|
295
282
|
}
|
|
296
|
-
if (
|
|
283
|
+
if (hasFirstSampleFlags) {
|
|
297
284
|
cursor += 4;
|
|
298
285
|
}
|
|
299
|
-
|
|
300
|
-
|
|
286
|
+
|
|
287
|
+
let i = sampleCounts;
|
|
288
|
+
let duration = 0;
|
|
289
|
+
while (i-- > 0) {
|
|
290
|
+
if (hasSampleDuration) {
|
|
291
|
+
duration += be4toi(trun, cursor);
|
|
292
|
+
cursor += 4;
|
|
293
|
+
} else {
|
|
294
|
+
duration += defaultDuration;
|
|
295
|
+
}
|
|
296
|
+
if (hasSampleSize) {
|
|
297
|
+
cursor += 4;
|
|
298
|
+
}
|
|
299
|
+
if (hasSampleFlags) {
|
|
300
|
+
cursor += 4;
|
|
301
|
+
}
|
|
302
|
+
if (hasSampleCompositionOffset) {
|
|
303
|
+
cursor += 4;
|
|
304
|
+
}
|
|
301
305
|
}
|
|
302
|
-
}
|
|
303
306
|
|
|
304
|
-
|
|
307
|
+
completeDuration += duration;
|
|
308
|
+
}
|
|
309
|
+
return completeDuration;
|
|
305
310
|
}
|
|
306
311
|
|
|
307
312
|
/**
|
|
@@ -49,7 +49,7 @@ describe("flattenOverlappingPeriods", function() {
|
|
|
49
49
|
|
|
50
50
|
expect(logSpy).toHaveBeenCalledTimes(1);
|
|
51
51
|
expect(logSpy).toHaveBeenCalledWith(
|
|
52
|
-
"DASH: Updating overlapping Periods.",
|
|
52
|
+
"DASH: Updating overlapping Periods.", 60, 60);
|
|
53
53
|
logSpy.mockRestore();
|
|
54
54
|
});
|
|
55
55
|
|
|
@@ -78,7 +78,7 @@ describe("flattenOverlappingPeriods", function() {
|
|
|
78
78
|
|
|
79
79
|
expect(logSpy).toHaveBeenCalledTimes(1);
|
|
80
80
|
expect(logSpy).toHaveBeenCalledWith(
|
|
81
|
-
"DASH: Updating overlapping Periods.",
|
|
81
|
+
"DASH: Updating overlapping Periods.", 60, 90);
|
|
82
82
|
logSpy.mockRestore();
|
|
83
83
|
});
|
|
84
84
|
|
|
@@ -104,9 +104,9 @@ describe("flattenOverlappingPeriods", function() {
|
|
|
104
104
|
|
|
105
105
|
expect(logSpy).toHaveBeenCalledTimes(2);
|
|
106
106
|
expect(logSpy).toHaveBeenCalledWith(
|
|
107
|
-
"DASH: Updating overlapping Periods.",
|
|
107
|
+
"DASH: Updating overlapping Periods.", 60, 50);
|
|
108
108
|
expect(logSpy).toHaveBeenCalledWith(
|
|
109
|
-
"DASH: Updating overlapping Periods.",
|
|
109
|
+
"DASH: Updating overlapping Periods.", 0, 50);
|
|
110
110
|
logSpy.mockRestore();
|
|
111
111
|
});
|
|
112
112
|
|
|
@@ -54,10 +54,12 @@ export default function flattenOverlappingPeriods(
|
|
|
54
54
|
const parsedPeriod = parsedPeriods[i];
|
|
55
55
|
let lastFlattenedPeriod = flattenedPeriods[flattenedPeriods.length - 1];
|
|
56
56
|
while (
|
|
57
|
-
lastFlattenedPeriod.duration
|
|
57
|
+
lastFlattenedPeriod.duration === undefined ||
|
|
58
58
|
(lastFlattenedPeriod.start + lastFlattenedPeriod.duration) > parsedPeriod.start
|
|
59
59
|
) {
|
|
60
|
-
log.warn("DASH: Updating overlapping Periods.",
|
|
60
|
+
log.warn("DASH: Updating overlapping Periods.",
|
|
61
|
+
lastFlattenedPeriod?.start,
|
|
62
|
+
parsedPeriod.start);
|
|
61
63
|
lastFlattenedPeriod.duration = parsedPeriod.start - lastFlattenedPeriod.start;
|
|
62
64
|
lastFlattenedPeriod.end = parsedPeriod.start;
|
|
63
65
|
if (lastFlattenedPeriod.duration <= 0) {
|
|
@@ -30,11 +30,11 @@ import log from "../../../../log";
|
|
|
30
30
|
* @returns {number|undefined}
|
|
31
31
|
*/
|
|
32
32
|
export default function getClockOffset(
|
|
33
|
-
serverClock
|
|
34
|
-
)
|
|
33
|
+
serverClock: string
|
|
34
|
+
): number | undefined {
|
|
35
35
|
const httpOffset = Date.parse(serverClock) - performance.now();
|
|
36
36
|
if (isNaN(httpOffset)) {
|
|
37
|
-
log.warn("DASH Parser: Invalid clock received: ",
|
|
37
|
+
log.warn("DASH Parser: Invalid clock received: ", serverClock);
|
|
38
38
|
return undefined;
|
|
39
39
|
}
|
|
40
40
|
return httpOffset;
|
|
@@ -16,6 +16,16 @@
|
|
|
16
16
|
|
|
17
17
|
import { IMPDIntermediateRepresentation } from "../node_parser_types";
|
|
18
18
|
|
|
19
|
+
type ISupportedHttpUtcTimingScheme =
|
|
20
|
+
{
|
|
21
|
+
schemeIdUri : "urn:mpeg:dash:utc:http-iso:2014";
|
|
22
|
+
value : string;
|
|
23
|
+
} |
|
|
24
|
+
{
|
|
25
|
+
schemeIdUri : "urn:mpeg:dash:utc:http-xsdate:2014";
|
|
26
|
+
value : string;
|
|
27
|
+
};
|
|
28
|
+
|
|
19
29
|
/**
|
|
20
30
|
* @param {Object} mpdIR
|
|
21
31
|
* @returns {string|undefined}
|
|
@@ -24,12 +34,11 @@ export default function getHTTPUTCTimingURL(
|
|
|
24
34
|
mpdIR : IMPDIntermediateRepresentation
|
|
25
35
|
) : string|undefined {
|
|
26
36
|
const UTCTimingHTTP = mpdIR.children.utcTimings
|
|
27
|
-
.filter((utcTiming) : utcTiming is
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
utcTiming.
|
|
32
|
-
utcTiming.value !== undefined
|
|
37
|
+
.filter((utcTiming) : utcTiming is ISupportedHttpUtcTimingScheme =>
|
|
38
|
+
(
|
|
39
|
+
utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" ||
|
|
40
|
+
utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-xsdate:2014"
|
|
41
|
+
) && utcTiming.value !== undefined
|
|
33
42
|
);
|
|
34
43
|
|
|
35
44
|
return UTCTimingHTTP.length > 0 ? UTCTimingHTTP[0].value :
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
IIndexSegment,
|
|
27
27
|
toIndexTime,
|
|
28
28
|
} from "../../../utils/index_helpers";
|
|
29
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
29
30
|
import getInitSegment from "./get_init_segment";
|
|
30
31
|
import getSegmentsFromTimeline from "./get_segments_from_timeline";
|
|
31
32
|
import { createIndexURLs } from "./tokens";
|
|
@@ -110,7 +111,7 @@ export interface IBaseIndexContextArgument {
|
|
|
110
111
|
/** End of the period concerned by this RepresentationIndex, in seconds. */
|
|
111
112
|
periodEnd : number|undefined;
|
|
112
113
|
/** Base URL for the Representation concerned. */
|
|
113
|
-
representationBaseURLs :
|
|
114
|
+
representationBaseURLs : IResolvedBaseUrl[];
|
|
114
115
|
/** ID of the Representation concerned. */
|
|
115
116
|
representationId? : string;
|
|
116
117
|
/** Bitrate of the Representation concerned. */
|
|
@@ -192,7 +193,8 @@ export default class BaseRepresentationIndex implements IRepresentationIndex {
|
|
|
192
193
|
|
|
193
194
|
const indexTimeOffset = presentationTimeOffset - periodStart * timescale;
|
|
194
195
|
|
|
195
|
-
const
|
|
196
|
+
const urlSources : string[] = representationBaseURLs.map(b => b.url);
|
|
197
|
+
const mediaURLs = createIndexURLs(urlSources,
|
|
196
198
|
index.initialization !== undefined ?
|
|
197
199
|
index.initialization.media :
|
|
198
200
|
undefined,
|
|
@@ -213,7 +215,7 @@ export default class BaseRepresentationIndex implements IRepresentationIndex {
|
|
|
213
215
|
this._index = { indexRange: index.indexRange,
|
|
214
216
|
indexTimeOffset,
|
|
215
217
|
initialization: { mediaURLs, range },
|
|
216
|
-
mediaURLs: createIndexURLs(
|
|
218
|
+
mediaURLs: createIndexURLs(urlSources,
|
|
217
219
|
index.media,
|
|
218
220
|
representationId,
|
|
219
221
|
representationBitrate),
|