rx-player 4.0.0-dev.2023111400 → 4.0.0-dev.2023121900
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -60
- package/FILES.md +1 -1
- package/README.md +2 -33
- package/VERSION +1 -1
- package/dist/_esm5.processed/core/api/debug/buffer_graph.js +2 -6
- package/dist/_esm5.processed/core/api/debug/modules/general_info.js +20 -10
- package/dist/_esm5.processed/core/api/option_utils.d.ts +0 -2
- package/dist/_esm5.processed/core/api/option_utils.js +0 -6
- package/dist/_esm5.processed/core/api/public_api.d.ts +1 -2
- package/dist/_esm5.processed/core/api/public_api.js +9 -17
- package/dist/_esm5.processed/core/init/directfile_content_initializer.js +1 -1
- package/dist/_esm5.processed/core/init/media_source_content_initializer.js +3 -14
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.d.ts +2 -36
- package/dist/_esm5.processed/core/init/utils/rebuffering_controller.js +2 -82
- package/dist/_esm5.processed/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/_esm5.processed/core/segment_buffers/implementations/image/image_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/_esm5.processed/core/segment_buffers/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/_esm5.processed/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/_esm5.processed/core/stream/representation/utils/get_buffer_status.js +1 -1
- package/dist/_esm5.processed/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_extent.js +1 -8
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/_esm5.processed/parsers/texttracks/ttml/html/apply_origin.js +1 -9
- package/dist/_esm5.processed/public_types.d.ts +2 -0
- package/dist/commonjs/compat/is_codec_supported.js +22 -1
- package/dist/commonjs/config.d.ts +2 -1
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/commonjs/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/commonjs/core/adaptive/network_analyzer.js +3 -3
- package/dist/commonjs/core/api/debug/buffer_graph.js +2 -6
- package/dist/commonjs/core/api/debug/modules/general_info.js +17 -10
- package/dist/commonjs/core/api/index.d.ts +1 -1
- package/dist/commonjs/core/api/option_utils.d.ts +2 -0
- package/dist/commonjs/core/api/option_utils.js +2 -3
- package/dist/commonjs/core/api/playback_observer.d.ts +128 -8
- package/dist/commonjs/core/api/playback_observer.js +217 -64
- package/dist/commonjs/core/api/public_api.d.ts +9 -0
- package/dist/commonjs/core/api/public_api.js +41 -16
- package/dist/commonjs/core/api/utils.js +1 -1
- package/dist/commonjs/core/decrypt/get_media_keys.js +2 -6
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/commonjs/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/commonjs/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/commonjs/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/commonjs/core/init/directfile_content_initializer.js +29 -8
- package/dist/commonjs/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/commonjs/core/init/media_source_content_initializer.js +32 -20
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/commonjs/core/init/utils/content_time_boundaries_observer.js +17 -19
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/commonjs/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/commonjs/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/commonjs/core/init/utils/get_initial_time.js +9 -7
- package/dist/commonjs/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/commonjs/core/init/utils/initial_seek_and_play.js +121 -91
- package/dist/commonjs/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/commonjs/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/commonjs/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/commonjs/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/commonjs/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/commonjs/core/segment_buffers/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/commonjs/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/commonjs/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/commonjs/core/stream/orchestrator/stream_orchestrator.js +14 -18
- package/dist/commonjs/core/stream/period/period_stream.js +5 -8
- package/dist/commonjs/core/stream/period/types.d.ts +2 -3
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/commonjs/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/commonjs/core/stream/representation/representation_stream.js +3 -4
- package/dist/commonjs/core/stream/representation/types.d.ts +2 -2
- package/dist/commonjs/core/stream/representation/utils/append_segment_to_buffer.js +11 -12
- package/dist/commonjs/core/stream/representation/utils/get_buffer_status.js +4 -4
- package/dist/commonjs/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/commonjs/default_config.d.ts +12 -16
- package/dist/commonjs/default_config.js +21 -16
- package/dist/commonjs/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/commonjs/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/commonjs/manifest/adaptation.js +2 -1
- package/dist/commonjs/manifest/representation_index/static.d.ts +1 -1
- package/dist/commonjs/manifest/representation_index/static.js +2 -2
- package/dist/commonjs/manifest/representation_index/types.d.ts +4 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/commonjs/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/commonjs/parsers/manifest/dash/common/indexes/template.js +42 -29
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/commonjs/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +250 -51
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/commonjs/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_adaptation_sets.js +13 -10
- package/dist/commonjs/parsers/manifest/dash/common/parse_mpd.js +27 -14
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/dash/common/parse_periods.js +17 -18
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/commonjs/parsers/manifest/dash/common/parse_representation_index.js +21 -8
- package/dist/commonjs/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/commonjs/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/local/representation_index.js +3 -3
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/commonjs/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/commonjs/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/commonjs/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/commonjs/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/commonjs/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/commonjs/public_types.d.ts +107 -36
- package/dist/commonjs/transports/dash/init_segment_loader.js +10 -5
- package/dist/commonjs/transports/dash/manifest_parser.js +5 -2
- package/dist/commonjs/transports/dash/segment_loader.js +2 -1
- package/dist/commonjs/transports/dash/text_loader.js +2 -0
- package/dist/commonjs/transports/metaplaylist/manifest_loader.js +2 -1
- package/dist/commonjs/transports/metaplaylist/pipelines.js +4 -1
- package/dist/commonjs/transports/smooth/pipelines.js +4 -2
- package/dist/commonjs/transports/smooth/segment_loader.js +2 -1
- package/dist/commonjs/transports/types.d.ts +12 -0
- package/dist/commonjs/transports/utils/generate_manifest_loader.js +6 -3
- package/dist/commonjs/utils/request/fetch.d.ts +6 -0
- package/dist/commonjs/utils/request/fetch.js +29 -8
- package/dist/commonjs/utils/request/xhr.d.ts +11 -5
- package/dist/commonjs/utils/request/xhr.js +29 -8
- package/dist/es2017/compat/is_codec_supported.js +22 -1
- package/dist/es2017/config.d.ts +2 -1
- package/dist/es2017/core/adaptive/adaptive_representation_selector.d.ts +2 -19
- package/dist/es2017/core/adaptive/adaptive_representation_selector.js +2 -2
- package/dist/es2017/core/adaptive/network_analyzer.js +3 -3
- package/dist/es2017/core/api/debug/buffer_graph.js +2 -6
- package/dist/es2017/core/api/debug/modules/general_info.js +17 -10
- package/dist/es2017/core/api/index.d.ts +1 -1
- package/dist/es2017/core/api/option_utils.d.ts +2 -0
- package/dist/es2017/core/api/option_utils.js +2 -3
- package/dist/es2017/core/api/playback_observer.d.ts +128 -8
- package/dist/es2017/core/api/playback_observer.js +217 -66
- package/dist/es2017/core/api/public_api.d.ts +9 -0
- package/dist/es2017/core/api/public_api.js +40 -15
- package/dist/es2017/core/api/utils.js +1 -1
- package/dist/es2017/core/decrypt/get_media_keys.js +2 -6
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.d.ts +6 -0
- package/dist/es2017/core/fetchers/manifest/manifest_fetcher.js +11 -3
- package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts +8 -1
- package/dist/es2017/core/fetchers/segment/segment_fetcher.js +8 -4
- package/dist/es2017/core/fetchers/segment/segment_fetcher_creator.d.ts +1 -0
- package/dist/es2017/core/fetchers/utils/schedule_request.js +1 -1
- package/dist/es2017/core/init/directfile_content_initializer.js +31 -8
- package/dist/es2017/core/init/media_source_content_initializer.d.ts +6 -0
- package/dist/es2017/core/init/media_source_content_initializer.js +34 -22
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.d.ts +13 -12
- package/dist/es2017/core/init/utils/content_time_boundaries_observer.js +17 -17
- package/dist/es2017/core/init/utils/create_stream_playback_observer.d.ts +1 -5
- package/dist/es2017/core/init/utils/create_stream_playback_observer.js +16 -14
- package/dist/es2017/core/init/utils/get_initial_time.d.ts +17 -3
- package/dist/es2017/core/init/utils/get_initial_time.js +9 -7
- package/dist/es2017/core/init/utils/initial_seek_and_play.d.ts +9 -11
- package/dist/es2017/core/init/utils/initial_seek_and_play.js +120 -91
- package/dist/es2017/core/init/utils/rebuffering_controller.js +27 -70
- package/dist/es2017/core/init/utils/stream_events_emitter/stream_events_emitter.js +4 -2
- package/dist/es2017/core/segment_buffers/garbage_collector.js +1 -2
- package/dist/es2017/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.js +9 -2
- package/dist/es2017/core/segment_buffers/implementations/text/html/html_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/implementations/text/native/native_text_segment_buffer.js +1 -1
- package/dist/es2017/core/segment_buffers/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/index.d.ts +2 -2
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.d.ts +25 -8
- package/dist/es2017/core/segment_buffers/inventory/segment_inventory.js +19 -10
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.d.ts +2 -2
- package/dist/es2017/core/stream/adaptation/get_representations_switch_strategy.js +16 -9
- package/dist/es2017/core/stream/orchestrator/stream_orchestrator.js +16 -18
- package/dist/es2017/core/stream/period/period_stream.js +4 -7
- package/dist/es2017/core/stream/period/types.d.ts +2 -3
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.d.ts +4 -5
- package/dist/es2017/core/stream/period/utils/get_adaptation_switch_strategy.js +17 -13
- package/dist/es2017/core/stream/representation/representation_stream.js +3 -4
- package/dist/es2017/core/stream/representation/types.d.ts +2 -2
- package/dist/es2017/core/stream/representation/utils/append_segment_to_buffer.js +1 -2
- package/dist/es2017/core/stream/representation/utils/get_buffer_status.js +4 -4
- package/dist/es2017/core/stream/representation/utils/get_needed_segments.js +1 -1
- package/dist/es2017/default_config.d.ts +12 -16
- package/dist/es2017/default_config.js +21 -16
- package/dist/es2017/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.js +3 -1
- package/dist/es2017/experimental/tools/createMetaplaylist/get_duration_from_manifest.js +2 -0
- package/dist/es2017/manifest/adaptation.js +2 -1
- package/dist/es2017/manifest/representation_index/static.d.ts +1 -1
- package/dist/es2017/manifest/representation_index/static.js +2 -2
- package/dist/es2017/manifest/representation_index/types.d.ts +4 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.d.ts +6 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/base.js +4 -3
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.d.ts +5 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/get_segments_from_timeline.js +15 -4
- package/dist/es2017/parsers/manifest/dash/common/indexes/index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/list.js +2 -2
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.d.ts +12 -5
- package/dist/es2017/parsers/manifest/dash/common/indexes/template.js +40 -27
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/index.d.ts +2 -1
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.d.ts +99 -6
- package/dist/es2017/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.js +246 -51
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.d.ts +40 -17
- package/dist/es2017/parsers/manifest/dash/common/manifest_bounds_calculator.js +38 -18
- package/dist/es2017/parsers/manifest/dash/common/parse_adaptation_sets.js +11 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_mpd.js +27 -13
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.d.ts +1 -1
- package/dist/es2017/parsers/manifest/dash/common/parse_periods.js +13 -16
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.d.ts +19 -6
- package/dist/es2017/parsers/manifest/dash/common/parse_representation_index.js +10 -8
- package/dist/es2017/parsers/manifest/dash/common/parse_representations.js +7 -3
- package/dist/es2017/parsers/manifest/local/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/local/representation_index.js +3 -3
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.d.ts +1 -1
- package/dist/es2017/parsers/manifest/metaplaylist/representation_index.js +2 -2
- package/dist/es2017/parsers/manifest/smooth/representation_index.d.ts +5 -5
- package/dist/es2017/parsers/manifest/smooth/representation_index.js +25 -9
- package/dist/es2017/parsers/manifest/utils/index_helpers.js +1 -1
- package/dist/es2017/parsers/texttracks/ttml/html/apply_line_height.js +2 -1
- package/dist/es2017/public_types.d.ts +107 -36
- package/dist/es2017/transports/dash/init_segment_loader.js +5 -0
- package/dist/es2017/transports/dash/manifest_parser.js +3 -0
- package/dist/es2017/transports/dash/segment_loader.js +1 -0
- package/dist/es2017/transports/dash/text_loader.js +2 -0
- package/dist/es2017/transports/metaplaylist/manifest_loader.js +1 -0
- package/dist/es2017/transports/metaplaylist/pipelines.js +4 -1
- package/dist/es2017/transports/smooth/pipelines.js +2 -0
- package/dist/es2017/transports/smooth/segment_loader.js +1 -0
- package/dist/es2017/transports/types.d.ts +12 -0
- package/dist/es2017/transports/utils/generate_manifest_loader.js +3 -0
- package/dist/es2017/utils/request/fetch.d.ts +6 -0
- package/dist/es2017/utils/request/fetch.js +29 -8
- package/dist/es2017/utils/request/xhr.d.ts +11 -5
- package/dist/es2017/utils/request/xhr.js +30 -9
- package/dist/mpd-parser.wasm +0 -0
- package/dist/rx-player.js +1335 -812
- package/dist/rx-player.min.js +1 -1
- package/package.json +7 -4
- package/scripts/canal-release.patch +78 -0
- package/scripts/make-dev-releases +65 -0
- package/scripts/update-version +7 -0
- package/sonar-project.properties +1 -1
- package/src/compat/is_codec_supported.ts +23 -1
- package/src/core/adaptive/adaptive_representation_selector.ts +4 -21
- package/src/core/adaptive/network_analyzer.ts +3 -3
- package/src/core/api/debug/buffer_graph.ts +2 -5
- package/src/core/api/debug/modules/general_info.ts +15 -10
- package/src/core/api/index.ts +1 -0
- package/src/core/api/option_utils.ts +3 -3
- package/src/core/api/playback_observer.ts +327 -107
- package/src/core/api/public_api.ts +42 -14
- package/src/core/api/utils.ts +3 -1
- package/src/core/decrypt/get_media_keys.ts +2 -8
- package/src/core/fetchers/manifest/manifest_fetcher.ts +21 -3
- package/src/core/fetchers/segment/segment_fetcher.ts +19 -5
- package/src/core/fetchers/segment/segment_fetcher_creator.ts +1 -0
- package/src/core/fetchers/utils/schedule_request.ts +1 -1
- package/src/core/init/directfile_content_initializer.ts +31 -15
- package/src/core/init/media_source_content_initializer.ts +40 -27
- package/src/core/init/utils/content_time_boundaries_observer.ts +24 -23
- package/src/core/init/utils/create_stream_playback_observer.ts +19 -20
- package/src/core/init/utils/get_initial_time.ts +25 -12
- package/src/core/init/utils/initial_seek_and_play.ts +140 -108
- package/src/core/init/utils/rebuffering_controller.ts +32 -77
- package/src/core/init/utils/stream_events_emitter/stream_events_emitter.ts +5 -2
- package/src/core/segment_buffers/garbage_collector.ts +1 -1
- package/src/core/segment_buffers/implementations/audio_video/audio_video_segment_buffer.ts +10 -2
- package/src/core/segment_buffers/implementations/text/html/html_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/implementations/text/native/native_text_segment_buffer.ts +1 -1
- package/src/core/segment_buffers/index.ts +2 -0
- package/src/core/segment_buffers/inventory/index.ts +2 -0
- package/src/core/segment_buffers/inventory/segment_inventory.ts +49 -17
- package/src/core/stream/adaptation/get_representations_switch_strategy.ts +21 -12
- package/src/core/stream/orchestrator/stream_orchestrator.ts +14 -19
- package/src/core/stream/period/period_stream.ts +7 -8
- package/src/core/stream/period/types.ts +2 -3
- package/src/core/stream/period/utils/get_adaptation_switch_strategy.ts +21 -15
- package/src/core/stream/representation/representation_stream.ts +3 -5
- package/src/core/stream/representation/types.ts +2 -2
- package/src/core/stream/representation/utils/append_segment_to_buffer.ts +1 -1
- package/src/core/stream/representation/utils/get_buffer_status.ts +5 -4
- package/src/core/stream/representation/utils/get_needed_segments.ts +2 -2
- package/src/default_config.ts +22 -17
- package/src/experimental/tools/VideoThumbnailLoader/video_thumbnail_loader.ts +3 -1
- package/src/experimental/tools/createMetaplaylist/get_duration_from_manifest.ts +2 -0
- package/src/manifest/adaptation.ts +2 -1
- package/src/manifest/representation_index/static.ts +2 -2
- package/src/manifest/representation_index/types.ts +4 -4
- package/src/parsers/manifest/dash/common/__tests__/manifest_bounds_calculator.test.ts +182 -36
- package/src/parsers/manifest/dash/common/indexes/base.ts +12 -4
- package/src/parsers/manifest/dash/common/indexes/get_segments_from_timeline.ts +19 -5
- package/src/parsers/manifest/dash/common/indexes/index.ts +16 -4
- package/src/parsers/manifest/dash/common/indexes/list.ts +2 -2
- package/src/parsers/manifest/dash/common/indexes/template.ts +52 -31
- package/src/parsers/manifest/dash/common/indexes/timeline/index.ts +4 -1
- package/src/parsers/manifest/dash/common/indexes/timeline/timeline_representation_index.ts +366 -60
- package/src/parsers/manifest/dash/common/manifest_bounds_calculator.ts +63 -25
- package/src/parsers/manifest/dash/common/parse_adaptation_sets.ts +10 -4
- package/src/parsers/manifest/dash/common/parse_mpd.ts +28 -15
- package/src/parsers/manifest/dash/common/parse_periods.ts +12 -17
- package/src/parsers/manifest/dash/common/parse_representation_index.ts +50 -26
- package/src/parsers/manifest/dash/common/parse_representations.ts +9 -3
- package/src/parsers/manifest/local/representation_index.ts +3 -3
- package/src/parsers/manifest/metaplaylist/representation_index.ts +2 -2
- package/src/parsers/manifest/smooth/representation_index.ts +23 -9
- package/src/parsers/manifest/utils/__tests__/get_first_time_from_adaptations.test.ts +1 -1
- package/src/parsers/manifest/utils/__tests__/get_last_time_from_adaptation.test.ts +1 -1
- package/src/parsers/manifest/utils/index_helpers.ts +1 -1
- package/src/parsers/texttracks/ttml/html/apply_line_height.ts +3 -1
- package/src/public_types.ts +108 -36
- package/src/transports/dash/init_segment_loader.ts +5 -0
- package/src/transports/dash/manifest_parser.ts +6 -0
- package/src/transports/dash/segment_loader.ts +1 -0
- package/src/transports/dash/text_loader.ts +2 -0
- package/src/transports/metaplaylist/manifest_loader.ts +1 -0
- package/src/transports/metaplaylist/pipelines.ts +4 -1
- package/src/transports/smooth/pipelines.ts +2 -0
- package/src/transports/smooth/segment_loader.ts +1 -0
- package/src/transports/types.ts +12 -0
- package/src/transports/utils/generate_manifest_loader.ts +3 -0
- package/src/utils/request/fetch.ts +35 -8
- package/src/utils/request/xhr.ts +45 -14
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/commonjs/parsers/manifest/utils/is_segment_still_available.js +0 -54
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.d.ts +0 -29
- package/dist/es2017/parsers/manifest/utils/is_segment_still_available.js +0 -51
- package/src/parsers/manifest/utils/is_segment_still_available.ts +0 -58
- package/src/typings/object-assign.d.ts +0 -48
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import BaseRepresentationIndex from "./base";
|
|
17
|
-
import ListRepresentationIndex from "./list";
|
|
18
|
-
import TemplateRepresentationIndex from "./template";
|
|
19
|
-
import TimelineRepresentationIndex from "./timeline";
|
|
20
|
-
export { BaseRepresentationIndex, ListRepresentationIndex, TemplateRepresentationIndex, TimelineRepresentationIndex, };
|
|
16
|
+
import BaseRepresentationIndex, { IBaseIndexContextArgument } from "./base";
|
|
17
|
+
import ListRepresentationIndex, { IListIndexContextArgument } from "./list";
|
|
18
|
+
import TemplateRepresentationIndex, { ITemplateIndexContextArgument } from "./template";
|
|
19
|
+
import TimelineRepresentationIndex, { ITimelineIndexContextArgument } from "./timeline";
|
|
20
|
+
export { BaseRepresentationIndex, ListRepresentationIndex, TemplateRepresentationIndex, TimelineRepresentationIndex, IBaseIndexContextArgument, IListIndexContextArgument, ITemplateIndexContextArgument, ITimelineIndexContextArgument, };
|
|
@@ -187,8 +187,8 @@ var ListRepresentationIndex = /** @class */ (function () {
|
|
|
187
187
|
/**
|
|
188
188
|
* @returns {Boolean}
|
|
189
189
|
*/
|
|
190
|
-
ListRepresentationIndex.prototype.
|
|
191
|
-
return
|
|
190
|
+
ListRepresentationIndex.prototype.isStillAwaitingFutureSegments = function () {
|
|
191
|
+
return false;
|
|
192
192
|
};
|
|
193
193
|
/**
|
|
194
194
|
* @returns {Boolean}
|
|
@@ -102,8 +102,15 @@ export interface ITemplateIndexIndexArgument {
|
|
|
102
102
|
}
|
|
103
103
|
/** Aditional context needed by a SegmentTemplate RepresentationIndex. */
|
|
104
104
|
export interface ITemplateIndexContextArgument {
|
|
105
|
-
/**
|
|
106
|
-
|
|
105
|
+
/**
|
|
106
|
+
* availability time offset of the concerned Adaptation.
|
|
107
|
+
*
|
|
108
|
+
* If `undefined`, the corresponding property was not set in the MPD and it is
|
|
109
|
+
* thus assumed to be equal to `0`.
|
|
110
|
+
* It might however be semantically different than `0` in the RxPlayer as it
|
|
111
|
+
* means that the packager didn't include that information in the MPD.
|
|
112
|
+
*/
|
|
113
|
+
availabilityTimeOffset: number | undefined;
|
|
107
114
|
/** Allows to obtain the minimum and maximum positions of a content. */
|
|
108
115
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
109
116
|
/** Start of the period concerned by this RepresentationIndex, in seconds. */
|
|
@@ -208,13 +215,13 @@ export default class TemplateRepresentationIndex implements IRepresentationIndex
|
|
|
208
215
|
*/
|
|
209
216
|
canBeOutOfSyncError(): false;
|
|
210
217
|
/**
|
|
211
|
-
* Returns `
|
|
218
|
+
* Returns `false` if the last segments in this index have already been
|
|
212
219
|
* generated so that we can freely go to the next period.
|
|
213
|
-
* Returns `
|
|
220
|
+
* Returns `true` if the index is still waiting on future segments to be
|
|
214
221
|
* generated.
|
|
215
222
|
* @returns {Boolean}
|
|
216
223
|
*/
|
|
217
|
-
|
|
224
|
+
isStillAwaitingFutureSegments(): boolean;
|
|
218
225
|
/**
|
|
219
226
|
* @returns {Boolean}
|
|
220
227
|
*/
|
|
@@ -201,13 +201,24 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
201
201
|
var timescale = this._index.timescale;
|
|
202
202
|
var segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(timescale);
|
|
203
203
|
var scaledPeriodStart = this._periodStart * timescale;
|
|
204
|
-
var
|
|
204
|
+
var scaledRelativeStart = (start * timescale) - scaledPeriodStart;
|
|
205
|
+
var scaledRelativeEnd = (end * timescale) - scaledPeriodStart;
|
|
206
|
+
var lastSegmentStart = this._getLastSegmentStart();
|
|
207
|
+
if ((0, is_null_or_undefined_1.default)(lastSegmentStart)) {
|
|
208
|
+
var relativeScaledIndexEnd_1 = this._estimateRelativeScaledEnd();
|
|
209
|
+
if (relativeScaledIndexEnd_1 === undefined) {
|
|
210
|
+
return scaledRelativeEnd + segmentTimeRounding >= 0;
|
|
211
|
+
}
|
|
212
|
+
return scaledRelativeEnd + segmentTimeRounding >= 0 &&
|
|
213
|
+
scaledRelativeStart < relativeScaledIndexEnd_1 - segmentTimeRounding;
|
|
214
|
+
}
|
|
215
|
+
var lastSegmentEnd = lastSegmentStart + this._index.duration;
|
|
205
216
|
var relativeScaledIndexEnd = this._estimateRelativeScaledEnd();
|
|
206
217
|
if (relativeScaledIndexEnd === undefined) {
|
|
207
|
-
return
|
|
218
|
+
return scaledRelativeEnd > lastSegmentEnd - segmentTimeRounding;
|
|
208
219
|
}
|
|
209
|
-
|
|
210
|
-
|
|
220
|
+
return scaledRelativeEnd > lastSegmentEnd - segmentTimeRounding &&
|
|
221
|
+
scaledRelativeStart < relativeScaledIndexEnd - segmentTimeRounding;
|
|
211
222
|
};
|
|
212
223
|
/**
|
|
213
224
|
* Returns true if, based on the arguments, the index should be refreshed.
|
|
@@ -252,30 +263,30 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
252
263
|
return false;
|
|
253
264
|
};
|
|
254
265
|
/**
|
|
255
|
-
* Returns `
|
|
266
|
+
* Returns `false` if the last segments in this index have already been
|
|
256
267
|
* generated so that we can freely go to the next period.
|
|
257
|
-
* Returns `
|
|
268
|
+
* Returns `true` if the index is still waiting on future segments to be
|
|
258
269
|
* generated.
|
|
259
270
|
* @returns {Boolean}
|
|
260
271
|
*/
|
|
261
|
-
TemplateRepresentationIndex.prototype.
|
|
272
|
+
TemplateRepresentationIndex.prototype.isStillAwaitingFutureSegments = function () {
|
|
262
273
|
if (!this._isDynamic) {
|
|
263
|
-
return
|
|
274
|
+
return false;
|
|
264
275
|
}
|
|
265
276
|
var scaledRelativeIndexEnd = this._estimateRelativeScaledEnd();
|
|
266
277
|
if (scaledRelativeIndexEnd === undefined) {
|
|
267
|
-
return
|
|
278
|
+
return true;
|
|
268
279
|
}
|
|
269
280
|
var timescale = this._index.timescale;
|
|
270
281
|
var lastSegmentStart = this._getLastSegmentStart();
|
|
271
282
|
// As last segment start is null if live time is before
|
|
272
283
|
// current period, consider the index not to be finished.
|
|
273
284
|
if ((0, is_null_or_undefined_1.default)(lastSegmentStart)) {
|
|
274
|
-
return
|
|
285
|
+
return true;
|
|
275
286
|
}
|
|
276
287
|
var lastSegmentEnd = lastSegmentStart + this._index.duration;
|
|
277
288
|
var segmentTimeRounding = (0, utils_1.getSegmentTimeRoundingError)(timescale);
|
|
278
|
-
return (lastSegmentEnd + segmentTimeRounding)
|
|
289
|
+
return (lastSegmentEnd + segmentTimeRounding) < scaledRelativeIndexEnd;
|
|
279
290
|
};
|
|
280
291
|
/**
|
|
281
292
|
* @returns {Boolean}
|
|
@@ -313,6 +324,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
313
324
|
* @returns {number | null | undefined}
|
|
314
325
|
*/
|
|
315
326
|
TemplateRepresentationIndex.prototype._getFirstSegmentStart = function () {
|
|
327
|
+
var _a;
|
|
316
328
|
if (!this._isDynamic) {
|
|
317
329
|
return 0; // it is the start of the Period
|
|
318
330
|
}
|
|
@@ -322,15 +334,15 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
322
334
|
// /!\ The scaled max position augments continuously and might not
|
|
323
335
|
// reflect exactly the real server-side value. As segments are
|
|
324
336
|
// generated discretely.
|
|
325
|
-
var
|
|
326
|
-
if (
|
|
337
|
+
var maximumSegmentTime = this._manifestBoundsCalculator.getEstimatedMaximumPosition((_a = this._availabilityTimeOffset) !== null && _a !== void 0 ? _a : 0);
|
|
338
|
+
if (maximumSegmentTime !== undefined && maximumSegmentTime < this._periodStart) {
|
|
327
339
|
// Maximum position is before this period.
|
|
328
340
|
// No segment is yet available here
|
|
329
341
|
return null;
|
|
330
342
|
}
|
|
331
343
|
}
|
|
332
|
-
var
|
|
333
|
-
var firstPosition = this._manifestBoundsCalculator.
|
|
344
|
+
var _b = this._index, duration = _b.duration, timescale = _b.timescale;
|
|
345
|
+
var firstPosition = this._manifestBoundsCalculator.getEstimatedMinimumSegmentTime();
|
|
334
346
|
if (firstPosition === undefined) {
|
|
335
347
|
return undefined;
|
|
336
348
|
}
|
|
@@ -347,34 +359,35 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
347
359
|
* @returns {number|null|undefined}
|
|
348
360
|
*/
|
|
349
361
|
TemplateRepresentationIndex.prototype._getLastSegmentStart = function () {
|
|
350
|
-
var _a;
|
|
351
|
-
var
|
|
362
|
+
var _a, _b;
|
|
363
|
+
var _c = this._index, duration = _c.duration, timescale = _c.timescale, endNumber = _c.endNumber, _d = _c.startNumber, startNumber = _d === void 0 ? 1 : _d;
|
|
352
364
|
if (this._isDynamic) {
|
|
353
|
-
var
|
|
354
|
-
if (
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
this._scaledRelativePeriodEnd <
|
|
359
|
-
(lastPos - this._periodStart) * this._index.timescale) {
|
|
365
|
+
var liveEdge = this._manifestBoundsCalculator.getEstimatedLiveEdge();
|
|
366
|
+
if (liveEdge !== undefined &&
|
|
367
|
+
this._scaledRelativePeriodEnd !== undefined &&
|
|
368
|
+
this._scaledRelativePeriodEnd < liveEdge - (this._periodStart *
|
|
369
|
+
this._index.timescale)) {
|
|
360
370
|
var numberOfSegments = Math.ceil(this._scaledRelativePeriodEnd / duration);
|
|
361
371
|
if (endNumber !== undefined && (endNumber - startNumber + 1) < numberOfSegments) {
|
|
362
372
|
numberOfSegments = endNumber - startNumber + 1;
|
|
363
373
|
}
|
|
364
374
|
return (numberOfSegments - 1) * duration;
|
|
365
375
|
}
|
|
376
|
+
var lastPosition = this._manifestBoundsCalculator
|
|
377
|
+
.getEstimatedMaximumPosition((_a = this._availabilityTimeOffset) !== null && _a !== void 0 ? _a : 0);
|
|
378
|
+
if (lastPosition === undefined) {
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
366
381
|
// /!\ The scaled last position augments continuously and might not
|
|
367
382
|
// reflect exactly the real server-side value. As segments are
|
|
368
383
|
// generated discretely.
|
|
369
|
-
var scaledLastPosition = (
|
|
384
|
+
var scaledLastPosition = (lastPosition - this._periodStart) * timescale;
|
|
370
385
|
// Maximum position is before this period.
|
|
371
386
|
// No segment is yet available here
|
|
372
387
|
if (scaledLastPosition < 0) {
|
|
373
388
|
return null;
|
|
374
389
|
}
|
|
375
|
-
var
|
|
376
|
-
* timescale;
|
|
377
|
-
var numberOfSegmentsAvailable = Math.floor((scaledLastPosition + availabilityTimeOffset) / duration);
|
|
390
|
+
var numberOfSegmentsAvailable = Math.floor(scaledLastPosition / duration);
|
|
378
391
|
if (endNumber !== undefined &&
|
|
379
392
|
(endNumber - startNumber + 1) < numberOfSegmentsAvailable) {
|
|
380
393
|
numberOfSegmentsAvailable = endNumber - startNumber + 1;
|
|
@@ -384,7 +397,7 @@ var TemplateRepresentationIndex = /** @class */ (function () {
|
|
|
384
397
|
(numberOfSegmentsAvailable - 1) * duration;
|
|
385
398
|
}
|
|
386
399
|
else {
|
|
387
|
-
var maximumTime = (
|
|
400
|
+
var maximumTime = (_b = this._scaledRelativePeriodEnd) !== null && _b !== void 0 ? _b : 0;
|
|
388
401
|
var numberOfSegments = Math.ceil(maximumTime / duration);
|
|
389
402
|
if (endNumber !== undefined && (endNumber - startNumber + 1) < numberOfSegments) {
|
|
390
403
|
numberOfSegments = endNumber - startNumber + 1;
|
|
@@ -13,5 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import TimelineRepresentationIndex from "./timeline_representation_index";
|
|
16
|
+
import TimelineRepresentationIndex, { ITimelineIndexContextArgument } from "./timeline_representation_index";
|
|
17
17
|
export default TimelineRepresentationIndex;
|
|
18
|
+
export { ITimelineIndexContextArgument };
|
|
@@ -27,6 +27,8 @@ import ManifestBoundsCalculator from "../../manifest_bounds_calculator";
|
|
|
27
27
|
export interface ITimelineIndex {
|
|
28
28
|
/** If `false`, the last segment anounced might be still incomplete. */
|
|
29
29
|
availabilityTimeComplete: boolean;
|
|
30
|
+
/** Minimum availabilityTimeOffset concerning the segments of this Representation. */
|
|
31
|
+
availabilityTimeOffset: number;
|
|
30
32
|
/** Byte range for a possible index of segments in the server. */
|
|
31
33
|
indexRange?: [number, number] | undefined;
|
|
32
34
|
/**
|
|
@@ -123,8 +125,25 @@ export interface ITimelineIndexIndexArgument {
|
|
|
123
125
|
}
|
|
124
126
|
/** Aditional context needed by a SegmentTimeline RepresentationIndex. */
|
|
125
127
|
export interface ITimelineIndexContextArgument {
|
|
126
|
-
/**
|
|
127
|
-
|
|
128
|
+
/**
|
|
129
|
+
* If `false`, declared segments in the MPD might still be not completely generated.
|
|
130
|
+
* If `true`, they are completely generated.
|
|
131
|
+
*
|
|
132
|
+
* If `undefined`, the corresponding property was not set in the MPD and it is
|
|
133
|
+
* thus assumed that they are all generated.
|
|
134
|
+
* It might however be semantically different than `true` in the RxPlayer as it
|
|
135
|
+
* means that the packager didn't include that information in the MPD.
|
|
136
|
+
*/
|
|
137
|
+
availabilityTimeComplete: boolean | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* availability time offset of the concerned Adaptation.
|
|
140
|
+
*
|
|
141
|
+
* If `undefined`, the corresponding property was not set in the MPD and it is
|
|
142
|
+
* thus assumed to be equal to `0`.
|
|
143
|
+
* It might however be semantically different than `0` in the RxPlayer as it
|
|
144
|
+
* means that the packager didn't include that information in the MPD.
|
|
145
|
+
*/
|
|
146
|
+
availabilityTimeOffset: number | undefined;
|
|
128
147
|
/** Allows to obtain the minimum and maximum positions of a content. */
|
|
129
148
|
manifestBoundsCalculator: ManifestBoundsCalculator;
|
|
130
149
|
/** Start of the period linked to this RepresentationIndex, in seconds. */
|
|
@@ -164,6 +183,11 @@ export interface ILastSegmentInformation {
|
|
|
164
183
|
/** Defines the time at which `lastPosition` was last calculated. */
|
|
165
184
|
time: number;
|
|
166
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* `IRepresentationIndex` implementation for a DASH `SegmentTimeline` segment
|
|
188
|
+
* indexing scheme.
|
|
189
|
+
* @class TimelineRepresentationIndex
|
|
190
|
+
*/
|
|
167
191
|
export default class TimelineRepresentationIndex implements IRepresentationIndex {
|
|
168
192
|
/** Underlying structure to retrieve segment information. */
|
|
169
193
|
protected _index: ITimelineIndex;
|
|
@@ -287,12 +311,12 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
287
311
|
*/
|
|
288
312
|
_update(newIndex: TimelineRepresentationIndex): void;
|
|
289
313
|
/**
|
|
290
|
-
* Returns `
|
|
314
|
+
* Returns `false` if this RepresentationIndex currently contains its last
|
|
291
315
|
* segment.
|
|
292
|
-
* Returns `
|
|
316
|
+
* Returns `true` if it's still pending.
|
|
293
317
|
* @returns {Boolean}
|
|
294
318
|
*/
|
|
295
|
-
|
|
319
|
+
isStillAwaitingFutureSegments(): boolean;
|
|
296
320
|
/**
|
|
297
321
|
* @returns {Boolean}
|
|
298
322
|
*/
|
|
@@ -311,7 +335,6 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
311
335
|
* available due to timeshifting.
|
|
312
336
|
*/
|
|
313
337
|
private _refreshTimeline;
|
|
314
|
-
static getIndexEnd(timeline: IIndexSegment[], scaledPeriodEnd: number | undefined): number | null;
|
|
315
338
|
/**
|
|
316
339
|
* Allows to generate the "timeline" for this RepresentationIndex.
|
|
317
340
|
* Call this function when the timeline is unknown.
|
|
@@ -336,3 +359,73 @@ export default class TimelineRepresentationIndex implements IRepresentationIndex
|
|
|
336
359
|
*/
|
|
337
360
|
private _getTimeline;
|
|
338
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* Returns true if a Segment returned by the corresponding index is still
|
|
364
|
+
* considered available.
|
|
365
|
+
* Returns false if it is not available anymore.
|
|
366
|
+
* Returns undefined if we cannot know whether it is still available or not.
|
|
367
|
+
* /!\ We do not check the mediaURLs of the segment.
|
|
368
|
+
* @param {Object} segment
|
|
369
|
+
* @param {Object} index
|
|
370
|
+
* @param {Object} manifestBoundsCalculator
|
|
371
|
+
* @param {number|undefined} scaledPeriodEnd
|
|
372
|
+
* @returns {Boolean|undefined}
|
|
373
|
+
*/
|
|
374
|
+
export declare function isSegmentStillAvailable(segment: ISegment, index: {
|
|
375
|
+
availabilityTimeOffset: number;
|
|
376
|
+
timeline: IIndexSegment[];
|
|
377
|
+
indexTimeOffset: number;
|
|
378
|
+
timescale: number;
|
|
379
|
+
}, manifestBoundsCalculator: ManifestBoundsCalculator, scaledPeriodEnd: number | undefined): boolean | undefined;
|
|
380
|
+
/**
|
|
381
|
+
* Returns from the given RepresentationIndex information on the last segment
|
|
382
|
+
* that may be requested currently.
|
|
383
|
+
*
|
|
384
|
+
* Returns `null` if there's no such segment.
|
|
385
|
+
* @param {Object} index
|
|
386
|
+
* @param {Object} manifestBoundsCalculator
|
|
387
|
+
* @param {number|undefined} scaledPeriodEnd
|
|
388
|
+
* @returns {number|null}
|
|
389
|
+
*/
|
|
390
|
+
export declare function getLastRequestableSegmentInfo(index: {
|
|
391
|
+
availabilityTimeOffset: number;
|
|
392
|
+
timeline: IIndexSegment[];
|
|
393
|
+
timescale: number;
|
|
394
|
+
}, manifestBoundsCalculator: ManifestBoundsCalculator, scaledPeriodEnd: number | undefined): ILastRequestableSegmentInfo | null;
|
|
395
|
+
/**
|
|
396
|
+
* Information on the last requestable segment deduced from a timeline array of
|
|
397
|
+
* segment information.
|
|
398
|
+
*/
|
|
399
|
+
export interface ILastRequestableSegmentInfo {
|
|
400
|
+
/**
|
|
401
|
+
* If `true`, we know that the last requestable segment is equal to the last
|
|
402
|
+
* segment that can be deduced from the corresponding given timeline.
|
|
403
|
+
* Written another way, there seem to be no segment announced in the timeline
|
|
404
|
+
* that are not yet requestable.
|
|
405
|
+
*
|
|
406
|
+
* If `false`, we know that the last requestable segment is not the last
|
|
407
|
+
* segment that can be deduced from the corresponding timeline.
|
|
408
|
+
* Written another way, there are supplementary segments in the timeline which
|
|
409
|
+
* are not yet requestable.
|
|
410
|
+
*
|
|
411
|
+
* Note that if the last requestable segment has its information from the last
|
|
412
|
+
* element from the timeline but it's not the last segment that would be
|
|
413
|
+
* deduced from the `repeatCount` property, then this value is set to `false`.
|
|
414
|
+
*/
|
|
415
|
+
isLastOfTimeline: boolean;
|
|
416
|
+
/**
|
|
417
|
+
* End time at which the last requestable segment ends, in the corresponding
|
|
418
|
+
* index timescale (__NOT__ in seconds).
|
|
419
|
+
*/
|
|
420
|
+
end: number;
|
|
421
|
+
/**
|
|
422
|
+
* The index in `timeline` of the last requestable segment.
|
|
423
|
+
* Note that its `repeatCount` may be updated and put as `newRepeatCount`.
|
|
424
|
+
*/
|
|
425
|
+
timelineIdx: number;
|
|
426
|
+
/**
|
|
427
|
+
* The new `repeatCount` value for that last segment. May be equal or
|
|
428
|
+
* different from the timeline element found at `timelineIdx`.
|
|
429
|
+
*/
|
|
430
|
+
newRepeatCount: number;
|
|
431
|
+
}
|