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
|
@@ -17,11 +17,8 @@ import Adaptation from "./adaptation";
|
|
|
17
17
|
import Period from "./period";
|
|
18
18
|
import Representation from "./representation";
|
|
19
19
|
import { ISegment } from "./representation_index";
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
* than another chunk.
|
|
23
|
-
*/
|
|
24
|
-
interface IBufferedChunkInfos {
|
|
20
|
+
/** All information needed to identify a given segment. */
|
|
21
|
+
export interface IBufferedChunkInfos {
|
|
25
22
|
adaptation: Adaptation;
|
|
26
23
|
period: Period;
|
|
27
24
|
representation: Representation;
|
|
@@ -33,5 +30,10 @@ interface IBufferedChunkInfos {
|
|
|
33
30
|
* @param {Object} content2
|
|
34
31
|
* @returns {boolean}
|
|
35
32
|
*/
|
|
36
|
-
export
|
|
37
|
-
|
|
33
|
+
export declare function areSameContent(content1: IBufferedChunkInfos, content2: IBufferedChunkInfos): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Get string describing a given ISegment, useful for log functions.
|
|
36
|
+
* @param {Object} content
|
|
37
|
+
* @returns {string|null|undefined}
|
|
38
|
+
*/
|
|
39
|
+
export declare function getLoggableSegmentId(content: IBufferedChunkInfos | null | undefined): string;
|
|
@@ -13,15 +13,32 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import isNullOrUndefined from "../utils/is_null_or_undefined";
|
|
16
17
|
/**
|
|
17
18
|
* Check if two contents are the same
|
|
18
19
|
* @param {Object} content1
|
|
19
20
|
* @param {Object} content2
|
|
20
21
|
* @returns {boolean}
|
|
21
22
|
*/
|
|
22
|
-
export
|
|
23
|
+
export function areSameContent(content1, content2) {
|
|
23
24
|
return (content1.segment.id === content2.segment.id &&
|
|
24
25
|
content1.representation.id === content2.representation.id &&
|
|
25
26
|
content1.adaptation.id === content2.adaptation.id &&
|
|
26
27
|
content1.period.id === content2.period.id);
|
|
27
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Get string describing a given ISegment, useful for log functions.
|
|
31
|
+
* @param {Object} content
|
|
32
|
+
* @returns {string|null|undefined}
|
|
33
|
+
*/
|
|
34
|
+
export function getLoggableSegmentId(content) {
|
|
35
|
+
if (isNullOrUndefined(content)) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
var period = content.period, adaptation = content.adaptation, representation = content.representation, segment = content.segment;
|
|
39
|
+
return "".concat(adaptation.type, " P: ").concat(period.id, " A: ").concat(adaptation.id, " ") +
|
|
40
|
+
"R: ".concat(representation.id, " S: ") +
|
|
41
|
+
(segment.isInit ? "init" :
|
|
42
|
+
segment.complete ? "".concat(segment.time, "-").concat(segment.duration) :
|
|
43
|
+
"".concat(segment.time));
|
|
44
|
+
}
|
|
@@ -37,8 +37,8 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
37
37
|
import Player from "./core/api";
|
|
38
38
|
import { addFeatures, } from "./features";
|
|
39
39
|
import logger from "./log";
|
|
40
|
-
if (
|
|
41
|
-
logger.setLevel("NONE");
|
|
40
|
+
if (0 /* CURRENT_ENV */ === 1 /* DEV */) {
|
|
41
|
+
logger.setLevel("NONE" /* CURRENT_LEVEL */);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* Minimal Player for which you can features at will:
|
|
@@ -16,17 +16,26 @@
|
|
|
16
16
|
/**
|
|
17
17
|
* Returns the content of a box based on its name.
|
|
18
18
|
* `null` if not found.
|
|
19
|
-
* @param {Uint8Array} buf - the isobmff
|
|
20
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
19
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
20
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
21
21
|
* generated from encoding the corresponding ASCII in big endian.
|
|
22
22
|
* @returns {UInt8Array|null}
|
|
23
23
|
*/
|
|
24
24
|
declare function getBoxContent(buf: Uint8Array, boxName: number): Uint8Array | null;
|
|
25
|
+
/**
|
|
26
|
+
* Reads the whole ISOBMFF and returns the content of all boxes with the given
|
|
27
|
+
* name, in order.
|
|
28
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
29
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
30
|
+
* generated from encoding the corresponding ASCII in big endian.
|
|
31
|
+
* @returns {Array.<Uint8Array>}
|
|
32
|
+
*/
|
|
33
|
+
declare function getBoxesContent(buf: Uint8Array, boxName: number): Uint8Array[];
|
|
25
34
|
/**
|
|
26
35
|
* Returns an ISOBMFF box - size and name included - based on its name.
|
|
27
36
|
* `null` if not found.
|
|
28
|
-
* @param {Uint8Array} buf - the isobmff
|
|
29
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
37
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
38
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
30
39
|
* generated from encoding the corresponding ASCII in big endian.
|
|
31
40
|
* @returns {UInt8Array|null}
|
|
32
41
|
*/
|
|
@@ -43,8 +52,8 @@ declare function getBox(buf: Uint8Array, boxName: number): Uint8Array | null;
|
|
|
43
52
|
* size and the name of the box.
|
|
44
53
|
* 3. The first byte after the end of the box, might be equal to `buf`'s
|
|
45
54
|
* length if we're considering the last box.
|
|
46
|
-
* @param {Uint8Array} buf - the isobmff
|
|
47
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
55
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
56
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
48
57
|
* generated from encoding the corresponding ASCII in big endian.
|
|
49
58
|
* @returns {Array.<number>|null}
|
|
50
59
|
*/
|
|
@@ -77,8 +86,8 @@ declare function getUuidContent(buf: Uint8Array, id1: number, id2: number, id3:
|
|
|
77
86
|
* length if we're considering the last box.
|
|
78
87
|
*
|
|
79
88
|
* `null` if no box is found.
|
|
80
|
-
* @param {Uint8Array} buf - the isobmff
|
|
81
|
-
* @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
|
|
82
91
|
* generated from encoding the corresponding ASCII in big endian.
|
|
83
92
|
*/
|
|
84
93
|
declare function getNextBoxOffsets(buf: Uint8Array): [
|
|
@@ -86,4 +95,4 @@ declare function getNextBoxOffsets(buf: Uint8Array): [
|
|
|
86
95
|
number,
|
|
87
96
|
number
|
|
88
97
|
] | null;
|
|
89
|
-
export { getBox, getBoxContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
|
|
98
|
+
export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
|
|
@@ -14,12 +14,13 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import log from "../../../log";
|
|
17
|
+
import assert from "../../../utils/assert";
|
|
17
18
|
import { be4toi, be8toi, } from "../../../utils/byte_parsing";
|
|
18
19
|
/**
|
|
19
20
|
* Returns the content of a box based on its name.
|
|
20
21
|
* `null` if not found.
|
|
21
|
-
* @param {Uint8Array} buf - the isobmff
|
|
22
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
22
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
23
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
23
24
|
* generated from encoding the corresponding ASCII in big endian.
|
|
24
25
|
* @returns {UInt8Array|null}
|
|
25
26
|
*/
|
|
@@ -28,11 +29,33 @@ function getBoxContent(buf, boxName) {
|
|
|
28
29
|
return offsets !== null ? buf.subarray(offsets[1], offsets[2]) :
|
|
29
30
|
null;
|
|
30
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Reads the whole ISOBMFF and returns the content of all boxes with the given
|
|
34
|
+
* name, in order.
|
|
35
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
36
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
37
|
+
* generated from encoding the corresponding ASCII in big endian.
|
|
38
|
+
* @returns {Array.<Uint8Array>}
|
|
39
|
+
*/
|
|
40
|
+
function getBoxesContent(buf, boxName) {
|
|
41
|
+
var ret = [];
|
|
42
|
+
var currentBuf = buf;
|
|
43
|
+
while (true) {
|
|
44
|
+
var offsets = getBoxOffsets(currentBuf, boxName);
|
|
45
|
+
if (offsets === null) {
|
|
46
|
+
return ret;
|
|
47
|
+
}
|
|
48
|
+
// Guard against a (very highly improbable) infinite loop
|
|
49
|
+
assert(offsets[2] !== 0 && currentBuf.length !== 0);
|
|
50
|
+
ret.push(currentBuf.subarray(offsets[1], offsets[2]));
|
|
51
|
+
currentBuf = currentBuf.subarray(offsets[2]);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
31
54
|
/**
|
|
32
55
|
* Returns an ISOBMFF box - size and name included - based on its name.
|
|
33
56
|
* `null` if not found.
|
|
34
|
-
* @param {Uint8Array} buf - the isobmff
|
|
35
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
57
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
58
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
36
59
|
* generated from encoding the corresponding ASCII in big endian.
|
|
37
60
|
* @returns {UInt8Array|null}
|
|
38
61
|
*/
|
|
@@ -53,8 +76,8 @@ function getBox(buf, boxName) {
|
|
|
53
76
|
* size and the name of the box.
|
|
54
77
|
* 3. The first byte after the end of the box, might be equal to `buf`'s
|
|
55
78
|
* length if we're considering the last box.
|
|
56
|
-
* @param {Uint8Array} buf - the isobmff
|
|
57
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
79
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
80
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
58
81
|
* generated from encoding the corresponding ASCII in big endian.
|
|
59
82
|
* @returns {Array.<number>|null}
|
|
60
83
|
*/
|
|
@@ -148,8 +171,8 @@ function getUuidContent(buf, id1, id2, id3, id4) {
|
|
|
148
171
|
* length if we're considering the last box.
|
|
149
172
|
*
|
|
150
173
|
* `null` if no box is found.
|
|
151
|
-
* @param {Uint8Array} buf - the isobmff
|
|
152
|
-
* @param {Number} boxName - the 4-letter 'name' of the box as a 4
|
|
174
|
+
* @param {Uint8Array} buf - the isobmff data
|
|
175
|
+
* @param {Number} boxName - the 4-letter 'name' of the box as a 4 byte integer
|
|
153
176
|
* generated from encoding the corresponding ASCII in big endian.
|
|
154
177
|
*/
|
|
155
178
|
function getNextBoxOffsets(buf) {
|
|
@@ -182,4 +205,4 @@ function getNextBoxOffsets(buf) {
|
|
|
182
205
|
}
|
|
183
206
|
return [0, lastOffset, boxSize];
|
|
184
207
|
}
|
|
185
|
-
export { getBox, getBoxContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
|
|
208
|
+
export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getNextBoxOffsets, getUuidContent, };
|
|
@@ -14,31 +14,44 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
|
-
* Returns
|
|
17
|
+
* Returns the content of the first "traf" box encountered in the given ISOBMFF
|
|
18
|
+
* data.
|
|
18
19
|
* Returns null if not found.
|
|
19
20
|
* @param {Uint8Array} buffer
|
|
20
21
|
* @returns {Uint8Array|null}
|
|
21
22
|
*/
|
|
22
23
|
declare function getTRAF(buffer: Uint8Array): Uint8Array | null;
|
|
23
24
|
/**
|
|
24
|
-
* Returns
|
|
25
|
+
* Returns the content of all "traf" boxes encountered in the given ISOBMFF
|
|
26
|
+
* data.
|
|
27
|
+
* Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
|
|
28
|
+
* have multiple "moof" boxes.
|
|
29
|
+
* @param {Uint8Array} buffer
|
|
30
|
+
* @returns {Array.<Uint8Array>}
|
|
31
|
+
*/
|
|
32
|
+
declare function getTRAFs(buffer: Uint8Array): Uint8Array[];
|
|
33
|
+
/**
|
|
34
|
+
* Returns the content of the first "moof" box encountered in the given ISOBMFF
|
|
35
|
+
* data.
|
|
25
36
|
* Returns null if not found.
|
|
26
37
|
* @param {Uint8Array} buffer
|
|
27
38
|
* @returns {Uint8Array|null}
|
|
28
39
|
*/
|
|
29
40
|
declare function getMDAT(buf: Uint8Array): Uint8Array | null;
|
|
30
41
|
/**
|
|
31
|
-
* Returns
|
|
42
|
+
* Returns the content of the first "mdia" box encountered in the given ISOBMFF
|
|
43
|
+
* data.
|
|
32
44
|
* Returns null if not found.
|
|
33
45
|
* @param {Uint8Array} buffer
|
|
34
46
|
* @returns {Uint8Array|null}
|
|
35
47
|
*/
|
|
36
48
|
declare function getMDIA(buf: Uint8Array): Uint8Array | null;
|
|
37
49
|
/**
|
|
38
|
-
* Returns
|
|
50
|
+
* Returns the content of the first "emsg" box encountered in the given ISOBMFF
|
|
51
|
+
* data.
|
|
39
52
|
* Returns null if not found.
|
|
40
53
|
* @param {Uint8Array} buffer
|
|
41
54
|
* @returns {Uint8Array|null}
|
|
42
55
|
*/
|
|
43
56
|
declare function getEMSG(buffer: Uint8Array, offset?: number): Uint8Array | null;
|
|
44
|
-
export { getTRAF, getMDAT, getMDIA, getEMSG, };
|
|
57
|
+
export { getTRAF, getTRAFs, getMDAT, getMDIA, getEMSG, };
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { getBoxContent } from "./get_box";
|
|
16
|
+
import { getBoxContent, getBoxesContent, } from "./get_box";
|
|
17
17
|
/**
|
|
18
|
-
* Returns
|
|
18
|
+
* Returns the content of the first "traf" box encountered in the given ISOBMFF
|
|
19
|
+
* data.
|
|
19
20
|
* Returns null if not found.
|
|
20
21
|
* @param {Uint8Array} buffer
|
|
21
22
|
* @returns {Uint8Array|null}
|
|
@@ -28,7 +29,26 @@ function getTRAF(buffer) {
|
|
|
28
29
|
return getBoxContent(moof, 0x74726166 /* traf */);
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
31
|
-
* Returns
|
|
32
|
+
* Returns the content of all "traf" boxes encountered in the given ISOBMFF
|
|
33
|
+
* data.
|
|
34
|
+
* Might be preferred to just `getTRAF` if you suspect that your ISOBMFF may
|
|
35
|
+
* have multiple "moof" boxes.
|
|
36
|
+
* @param {Uint8Array} buffer
|
|
37
|
+
* @returns {Array.<Uint8Array>}
|
|
38
|
+
*/
|
|
39
|
+
function getTRAFs(buffer) {
|
|
40
|
+
var moofs = getBoxesContent(buffer, 0x6D6F6F66 /* moof */);
|
|
41
|
+
return moofs.reduce(function (acc, moof) {
|
|
42
|
+
var traf = getBoxContent(moof, 0x74726166 /* traf */);
|
|
43
|
+
if (traf !== null) {
|
|
44
|
+
acc.push(traf);
|
|
45
|
+
}
|
|
46
|
+
return acc;
|
|
47
|
+
}, []);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Returns the content of the first "moof" box encountered in the given ISOBMFF
|
|
51
|
+
* data.
|
|
32
52
|
* Returns null if not found.
|
|
33
53
|
* @param {Uint8Array} buffer
|
|
34
54
|
* @returns {Uint8Array|null}
|
|
@@ -37,7 +57,8 @@ function getMDAT(buf) {
|
|
|
37
57
|
return getBoxContent(buf, 0x6D646174 /* "mdat" */);
|
|
38
58
|
}
|
|
39
59
|
/**
|
|
40
|
-
* Returns
|
|
60
|
+
* Returns the content of the first "mdia" box encountered in the given ISOBMFF
|
|
61
|
+
* data.
|
|
41
62
|
* Returns null if not found.
|
|
42
63
|
* @param {Uint8Array} buffer
|
|
43
64
|
* @returns {Uint8Array|null}
|
|
@@ -54,7 +75,8 @@ function getMDIA(buf) {
|
|
|
54
75
|
return getBoxContent(trak, 0x6D646961 /* "mdia" */);
|
|
55
76
|
}
|
|
56
77
|
/**
|
|
57
|
-
* Returns
|
|
78
|
+
* Returns the content of the first "emsg" box encountered in the given ISOBMFF
|
|
79
|
+
* data.
|
|
58
80
|
* Returns null if not found.
|
|
59
81
|
* @param {Uint8Array} buffer
|
|
60
82
|
* @returns {Uint8Array|null}
|
|
@@ -63,4 +85,4 @@ function getEMSG(buffer, offset) {
|
|
|
63
85
|
if (offset === void 0) { offset = 0; }
|
|
64
86
|
return getBoxContent(buffer.subarray(offset), 0x656D7367 /* emsg */);
|
|
65
87
|
}
|
|
66
|
-
export { getTRAF, getMDAT, getMDIA, getEMSG, };
|
|
88
|
+
export { getTRAF, getTRAFs, getMDAT, getMDIA, getEMSG, };
|
|
@@ -21,7 +21,7 @@ import { MAX_32_BIT_INT } from "./constants";
|
|
|
21
21
|
import { createBox } from "./create_box";
|
|
22
22
|
import { getPlayReadyKIDFromPrivateData } from "./drm";
|
|
23
23
|
import { getBoxContent, getBoxOffsets, } from "./get_box";
|
|
24
|
-
import { getEMSG, getMDIA, getTRAF, } from "./read";
|
|
24
|
+
import { getEMSG, getMDIA, getTRAF, getTRAFs, } from "./read";
|
|
25
25
|
/**
|
|
26
26
|
* Parse the sidx part (segment index) of an ISOBMFF buffer and construct a
|
|
27
27
|
* corresponding Array of available segments.
|
|
@@ -163,64 +163,69 @@ function getDefaultDurationFromTFHDInTRAF(traf) {
|
|
|
163
163
|
* @returns {number | undefined}
|
|
164
164
|
*/
|
|
165
165
|
function getDurationFromTrun(buffer) {
|
|
166
|
-
var
|
|
167
|
-
if (
|
|
168
|
-
return undefined;
|
|
169
|
-
}
|
|
170
|
-
var trun = getBoxContent(traf, 0x7472756E /* trun */);
|
|
171
|
-
if (trun === null) {
|
|
172
|
-
return undefined;
|
|
173
|
-
}
|
|
174
|
-
var cursor = 0;
|
|
175
|
-
var version = trun[cursor];
|
|
176
|
-
cursor += 1;
|
|
177
|
-
if (version > 1) {
|
|
166
|
+
var trafs = getTRAFs(buffer);
|
|
167
|
+
if (trafs.length === 0) {
|
|
178
168
|
return undefined;
|
|
179
169
|
}
|
|
180
|
-
var
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
|
|
186
|
-
if (defaultDuration === undefined) {
|
|
170
|
+
var completeDuration = 0;
|
|
171
|
+
for (var _i = 0, trafs_1 = trafs; _i < trafs_1.length; _i++) {
|
|
172
|
+
var traf = trafs_1[_i];
|
|
173
|
+
var trun = getBoxContent(traf, 0x7472756E /* trun */);
|
|
174
|
+
if (trun === null) {
|
|
187
175
|
return undefined;
|
|
188
176
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
var hasSampleCompositionOffset = (flags & 0x000800) > 0;
|
|
195
|
-
var sampleCounts = be4toi(trun, cursor);
|
|
196
|
-
cursor += 4;
|
|
197
|
-
if (hasDataOffset) {
|
|
198
|
-
cursor += 4;
|
|
199
|
-
}
|
|
200
|
-
if (hasFirstSampleFlags) {
|
|
201
|
-
cursor += 4;
|
|
202
|
-
}
|
|
203
|
-
var i = sampleCounts;
|
|
204
|
-
var duration = 0;
|
|
205
|
-
while (i-- > 0) {
|
|
206
|
-
if (hasSampleDuration) {
|
|
207
|
-
duration += be4toi(trun, cursor);
|
|
208
|
-
cursor += 4;
|
|
177
|
+
var cursor = 0;
|
|
178
|
+
var version = trun[cursor];
|
|
179
|
+
cursor += 1;
|
|
180
|
+
if (version > 1) {
|
|
181
|
+
return undefined;
|
|
209
182
|
}
|
|
210
|
-
|
|
211
|
-
|
|
183
|
+
var flags = be3toi(trun, cursor);
|
|
184
|
+
cursor += 3;
|
|
185
|
+
var hasSampleDuration = (flags & 0x000100) > 0;
|
|
186
|
+
var defaultDuration = 0;
|
|
187
|
+
if (!hasSampleDuration) {
|
|
188
|
+
defaultDuration = getDefaultDurationFromTFHDInTRAF(traf);
|
|
189
|
+
if (defaultDuration === undefined) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
212
192
|
}
|
|
213
|
-
|
|
193
|
+
var hasDataOffset = (flags & 0x000001) > 0;
|
|
194
|
+
var hasFirstSampleFlags = (flags & 0x000004) > 0;
|
|
195
|
+
var hasSampleSize = (flags & 0x000200) > 0;
|
|
196
|
+
var hasSampleFlags = (flags & 0x000400) > 0;
|
|
197
|
+
var hasSampleCompositionOffset = (flags & 0x000800) > 0;
|
|
198
|
+
var sampleCounts = be4toi(trun, cursor);
|
|
199
|
+
cursor += 4;
|
|
200
|
+
if (hasDataOffset) {
|
|
214
201
|
cursor += 4;
|
|
215
202
|
}
|
|
216
|
-
if (
|
|
203
|
+
if (hasFirstSampleFlags) {
|
|
217
204
|
cursor += 4;
|
|
218
205
|
}
|
|
219
|
-
|
|
220
|
-
|
|
206
|
+
var i = sampleCounts;
|
|
207
|
+
var duration = 0;
|
|
208
|
+
while (i-- > 0) {
|
|
209
|
+
if (hasSampleDuration) {
|
|
210
|
+
duration += be4toi(trun, cursor);
|
|
211
|
+
cursor += 4;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
duration += defaultDuration;
|
|
215
|
+
}
|
|
216
|
+
if (hasSampleSize) {
|
|
217
|
+
cursor += 4;
|
|
218
|
+
}
|
|
219
|
+
if (hasSampleFlags) {
|
|
220
|
+
cursor += 4;
|
|
221
|
+
}
|
|
222
|
+
if (hasSampleCompositionOffset) {
|
|
223
|
+
cursor += 4;
|
|
224
|
+
}
|
|
221
225
|
}
|
|
226
|
+
completeDuration += duration;
|
|
222
227
|
}
|
|
223
|
-
return
|
|
228
|
+
return completeDuration;
|
|
224
229
|
}
|
|
225
230
|
/**
|
|
226
231
|
* Get timescale information from a movie header box. Found in init segments.
|
|
@@ -41,7 +41,7 @@ function parseBif(buf) {
|
|
|
41
41
|
pos += 1;
|
|
42
42
|
var version = [minorVersion, majorVersion, patchVersion, increVersion].join(".");
|
|
43
43
|
if (majorVersion > 0) {
|
|
44
|
-
throw new Error("Unhandled version: "
|
|
44
|
+
throw new Error("Unhandled version: ".concat(majorVersion));
|
|
45
45
|
}
|
|
46
46
|
var imageCount = le4toi(buf, pos);
|
|
47
47
|
pos += 4;
|
|
@@ -48,9 +48,9 @@ export default function flattenOverlappingPeriods(parsedPeriods) {
|
|
|
48
48
|
for (var i = 1; i < parsedPeriods.length; i++) {
|
|
49
49
|
var parsedPeriod = parsedPeriods[i];
|
|
50
50
|
var lastFlattenedPeriod = flattenedPeriods[flattenedPeriods.length - 1];
|
|
51
|
-
while (lastFlattenedPeriod.duration
|
|
51
|
+
while (lastFlattenedPeriod.duration === undefined ||
|
|
52
52
|
(lastFlattenedPeriod.start + lastFlattenedPeriod.duration) > parsedPeriod.start) {
|
|
53
|
-
log.warn("DASH: Updating overlapping Periods.", lastFlattenedPeriod, parsedPeriod);
|
|
53
|
+
log.warn("DASH: Updating overlapping Periods.", lastFlattenedPeriod === null || lastFlattenedPeriod === void 0 ? void 0 : lastFlattenedPeriod.start, parsedPeriod.start);
|
|
54
54
|
lastFlattenedPeriod.duration = parsedPeriod.start - lastFlattenedPeriod.start;
|
|
55
55
|
lastFlattenedPeriod.end = parsedPeriod.start;
|
|
56
56
|
if (lastFlattenedPeriod.duration <= 0) {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
export default function getHTTPUTCTimingURL(mpdIR) {
|
|
21
21
|
var UTCTimingHTTP = mpdIR.children.utcTimings
|
|
22
22
|
.filter(function (utcTiming) {
|
|
23
|
-
return utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014"
|
|
24
|
-
utcTiming.value !== undefined;
|
|
23
|
+
return (utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-iso:2014" ||
|
|
24
|
+
utcTiming.schemeIdUri === "urn:mpeg:dash:utc:http-xsdate:2014") && utcTiming.value !== undefined;
|
|
25
25
|
});
|
|
26
26
|
return UTCTimingHTTP.length > 0 ? UTCTimingHTTP[0].value :
|
|
27
27
|
undefined;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { IRepresentationIndex, ISegment } from "../../../../../manifest";
|
|
17
17
|
import { IEMSG } from "../../../../containers/isobmff";
|
|
18
18
|
import { IIndexSegment } from "../../../utils/index_helpers";
|
|
19
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
19
20
|
/**
|
|
20
21
|
* Index property defined for a SegmentBase RepresentationIndex
|
|
21
22
|
* This object contains every property needed to generate an ISegment for a
|
|
@@ -97,7 +98,7 @@ export interface IBaseIndexContextArgument {
|
|
|
97
98
|
/** End of the period concerned by this RepresentationIndex, in seconds. */
|
|
98
99
|
periodEnd: number | undefined;
|
|
99
100
|
/** Base URL for the Representation concerned. */
|
|
100
|
-
representationBaseURLs:
|
|
101
|
+
representationBaseURLs: IResolvedBaseUrl[];
|
|
101
102
|
/** ID of the Representation concerned. */
|
|
102
103
|
representationId?: string;
|
|
103
104
|
/** Bitrate of the Representation concerned. */
|
|
@@ -60,7 +60,8 @@ var BaseRepresentationIndex = /** @class */ (function () {
|
|
|
60
60
|
var presentationTimeOffset = index.presentationTimeOffset != null ?
|
|
61
61
|
index.presentationTimeOffset : 0;
|
|
62
62
|
var indexTimeOffset = presentationTimeOffset - periodStart * timescale;
|
|
63
|
-
var
|
|
63
|
+
var urlSources = representationBaseURLs.map(function (b) { return b.url; });
|
|
64
|
+
var mediaURLs = createIndexURLs(urlSources, index.initialization !== undefined ?
|
|
64
65
|
index.initialization.media :
|
|
65
66
|
undefined, representationId, representationBitrate);
|
|
66
67
|
// TODO If indexRange is either undefined or behind the initialization segment
|
|
@@ -73,7 +74,7 @@ var BaseRepresentationIndex = /** @class */ (function () {
|
|
|
73
74
|
index.indexRange !== undefined ? [0, index.indexRange[0] - 1] :
|
|
74
75
|
undefined;
|
|
75
76
|
this._index = { indexRange: index.indexRange, indexTimeOffset: indexTimeOffset, initialization: { mediaURLs: mediaURLs, range: range },
|
|
76
|
-
mediaURLs: createIndexURLs(
|
|
77
|
+
mediaURLs: createIndexURLs(urlSources, index.media, representationId, representationBitrate),
|
|
77
78
|
startNumber: index.startNumber,
|
|
78
79
|
timeline: (_b = index.timeline) !== null && _b !== void 0 ? _b : [], timescale: timescale };
|
|
79
80
|
this._scaledPeriodEnd = periodEnd == null ? undefined :
|
|
@@ -35,5 +35,6 @@ export default function getInitSegment(index, isEMSGWhitelisted) {
|
|
|
35
35
|
range: initialization != null ? initialization.range :
|
|
36
36
|
undefined,
|
|
37
37
|
indexRange: index.indexRange,
|
|
38
|
-
mediaURLs: (_a = initialization === null || initialization === void 0 ? void 0 : initialization.mediaURLs) !== null && _a !== void 0 ? _a : null,
|
|
38
|
+
mediaURLs: (_a = initialization === null || initialization === void 0 ? void 0 : initialization.mediaURLs) !== null && _a !== void 0 ? _a : null,
|
|
39
|
+
complete: true, privateInfos: privateInfos, timestampOffset: -(index.indexTimeOffset / index.timescale) };
|
|
39
40
|
}
|
package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ import { IIndexSegment } from "../../../utils/index_helpers";
|
|
|
26
26
|
* @returns {Array.<Object>}
|
|
27
27
|
*/
|
|
28
28
|
export default function getSegmentsFromTimeline(index: {
|
|
29
|
+
availabilityTimeComplete?: boolean;
|
|
29
30
|
mediaURLs: string[] | null;
|
|
30
31
|
startNumber?: number;
|
|
31
32
|
timeline: IIndexSegment[];
|
package/dist/_esm5.processed/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js
CHANGED
|
@@ -42,8 +42,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
|
|
|
42
42
|
var scaledUp = toIndexTime(from, index);
|
|
43
43
|
var scaledTo = toIndexTime(from + durationWanted, index);
|
|
44
44
|
var timeline = index.timeline, timescale = index.timescale, mediaURLs = index.mediaURLs, startNumber = index.startNumber;
|
|
45
|
-
var currentNumber = startNumber
|
|
46
|
-
undefined;
|
|
45
|
+
var currentNumber = startNumber !== null && startNumber !== void 0 ? startNumber : 1;
|
|
47
46
|
var segments = [];
|
|
48
47
|
var timelineLength = timeline.length;
|
|
49
48
|
// TODO(pierre): use @maxSegmentDuration if possible
|
|
@@ -55,11 +54,13 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
|
|
|
55
54
|
var duration = timelineItem.duration, start = timelineItem.start, range = timelineItem.range;
|
|
56
55
|
maxEncounteredDuration = Math.max(maxEncounteredDuration, duration);
|
|
57
56
|
var repeat = calculateRepeat(timelineItem, timeline[i + 1], maximumTime);
|
|
57
|
+
var complete = index.availabilityTimeComplete !== false ||
|
|
58
|
+
i !== timelineLength - 1 &&
|
|
59
|
+
repeat !== 0;
|
|
58
60
|
var segmentNumberInCurrentRange = getWantedRepeatIndex(start, duration, scaledUp);
|
|
59
61
|
var segmentTime = start + segmentNumberInCurrentRange * duration;
|
|
60
62
|
while (segmentTime < scaledTo && segmentNumberInCurrentRange <= repeat) {
|
|
61
|
-
var segmentNumber = currentNumber
|
|
62
|
-
currentNumber + segmentNumberInCurrentRange : undefined;
|
|
63
|
+
var segmentNumber = currentNumber + segmentNumberInCurrentRange;
|
|
63
64
|
var detokenizedURLs = mediaURLs === null ?
|
|
64
65
|
null :
|
|
65
66
|
mediaURLs.map(createDashUrlDetokenizer(segmentTime, segmentNumber));
|
|
@@ -71,8 +72,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
|
|
|
71
72
|
isInit: false, range: range, timescale: 1,
|
|
72
73
|
mediaURLs: detokenizedURLs,
|
|
73
74
|
number: segmentNumber,
|
|
74
|
-
timestampOffset: -(index.indexTimeOffset / timescale),
|
|
75
|
-
privateInfos: { isEMSGWhitelisted: isEMSGWhitelisted } };
|
|
75
|
+
timestampOffset: -(index.indexTimeOffset / timescale), complete: complete, privateInfos: { isEMSGWhitelisted: isEMSGWhitelisted } };
|
|
76
76
|
segments.push(segment);
|
|
77
77
|
// update segment number and segment time for the next segment
|
|
78
78
|
segmentNumberInCurrentRange++;
|
|
@@ -82,9 +82,7 @@ export default function getSegmentsFromTimeline(index, from, durationWanted, isE
|
|
|
82
82
|
// we reached ``scaledTo``, we're done
|
|
83
83
|
return segments;
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
currentNumber += repeat + 1;
|
|
87
|
-
}
|
|
85
|
+
currentNumber += repeat + 1;
|
|
88
86
|
}
|
|
89
87
|
return segments;
|
|
90
88
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IRepresentationIndex, ISegment } from "../../../../../manifest";
|
|
2
2
|
import { IEMSG } from "../../../../containers/isobmff";
|
|
3
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
3
4
|
/**
|
|
4
5
|
* Index property defined for a SegmentList RepresentationIndex
|
|
5
6
|
* This object contains every property needed to generate an ISegment for a
|
|
@@ -84,7 +85,7 @@ export interface IListIndexContextArgument {
|
|
|
84
85
|
/** Start of the period concerned by this RepresentationIndex, in seconds. */
|
|
85
86
|
periodStart: number;
|
|
86
87
|
/** Base URL for the Representation concerned. */
|
|
87
|
-
representationBaseURLs:
|
|
88
|
+
representationBaseURLs: IResolvedBaseUrl[];
|
|
88
89
|
/** ID of the Representation concerned. */
|
|
89
90
|
representationId?: string;
|
|
90
91
|
/** Bitrate of the Representation concerned. */
|
|
@@ -34,14 +34,15 @@ var ListRepresentationIndex = /** @class */ (function () {
|
|
|
34
34
|
0;
|
|
35
35
|
var timescale = (_a = index.timescale) !== null && _a !== void 0 ? _a : 1;
|
|
36
36
|
var indexTimeOffset = presentationTimeOffset - periodStart * timescale;
|
|
37
|
+
var urlSources = representationBaseURLs.map(function (b) { return b.url; });
|
|
37
38
|
var list = index.list.map(function (lItem) { return ({
|
|
38
|
-
mediaURLs: createIndexURLs(
|
|
39
|
+
mediaURLs: createIndexURLs(urlSources, lItem.media, representationId, representationBitrate),
|
|
39
40
|
mediaRange: lItem.mediaRange
|
|
40
41
|
}); });
|
|
41
42
|
this._index = { list: list, timescale: timescale, duration: index.duration, indexTimeOffset: indexTimeOffset, indexRange: index.indexRange,
|
|
42
43
|
initialization: index.initialization == null ?
|
|
43
44
|
undefined :
|
|
44
|
-
{ mediaURLs: createIndexURLs(
|
|
45
|
+
{ mediaURLs: createIndexURLs(urlSources, index.initialization.media, representationId, representationBitrate),
|
|
45
46
|
range: index.initialization.range } };
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
@@ -77,6 +78,7 @@ var ListRepresentationIndex = /** @class */ (function () {
|
|
|
77
78
|
var segment = { id: String(i), time: time, isInit: false, range: range, duration: durationInSeconds,
|
|
78
79
|
timescale: 1,
|
|
79
80
|
end: time + durationInSeconds, mediaURLs: mediaURLs, timestampOffset: -(index.indexTimeOffset / timescale),
|
|
81
|
+
complete: true,
|
|
80
82
|
privateInfos: { isEMSGWhitelisted: this._isEMSGWhitelisted } };
|
|
81
83
|
segments.push(segment);
|
|
82
84
|
i++;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { IRepresentationIndex, ISegment } from "../../../../../manifest";
|
|
17
17
|
import { IEMSG } from "../../../../containers/isobmff";
|
|
18
18
|
import ManifestBoundsCalculator from "../manifest_bounds_calculator";
|
|
19
|
+
import { IResolvedBaseUrl } from "../resolve_base_urls";
|
|
19
20
|
/**
|
|
20
21
|
* Index property defined for a SegmentTemplate RepresentationIndex
|
|
21
22
|
* This object contains every property needed to generate an ISegment for a
|
|
@@ -108,7 +109,7 @@ export interface ITemplateIndexContextArgument {
|
|
|
108
109
|
/** Whether the corresponding Manifest can be updated and changed. */
|
|
109
110
|
isDynamic: boolean;
|
|
110
111
|
/** Base URL for the Representation concerned. */
|
|
111
|
-
representationBaseURLs:
|
|
112
|
+
representationBaseURLs: IResolvedBaseUrl[];
|
|
112
113
|
/** ID of the Representation concerned. */
|
|
113
114
|
representationId?: string;
|
|
114
115
|
/** Bitrate of the Representation concerned. */
|