diff --git a/src/ImageSharp/Advanced/AotCompilerTools.cs b/src/ImageSharp/Advanced/AotCompilerTools.cs index ea4cd1c8c4..b61e63a53d 100644 --- a/src/ImageSharp/Advanced/AotCompilerTools.cs +++ b/src/ImageSharp/Advanced/AotCompilerTools.cs @@ -7,6 +7,7 @@ using System.Numerics; using System.Runtime.CompilerServices; using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Bmp; +using SixLabors.ImageSharp.Formats.Experimental.Webp; using SixLabors.ImageSharp.Formats.Gif; using SixLabors.ImageSharp.Formats.Jpeg; using SixLabors.ImageSharp.Formats.Jpeg.Components; @@ -194,6 +195,7 @@ namespace SixLabors.ImageSharp.Advanced private static void AotCompileImageEncoderInternals() where TPixel : unmanaged, IPixel { + default(WebpEncoderCore).Encode(default, default, default); default(BmpEncoderCore).Encode(default, default, default); default(GifEncoderCore).Encode(default, default, default); default(JpegEncoderCore).Encode(default, default, default); @@ -209,6 +211,7 @@ namespace SixLabors.ImageSharp.Advanced private static void AotCompileImageDecoderInternals() where TPixel : unmanaged, IPixel { + default(WebpDecoderCore).Decode(default, default, default); default(BmpDecoderCore).Decode(default, default, default); default(GifDecoderCore).Decode(default, default, default); default(JpegDecoderCore).Decode(default, default, default); @@ -224,6 +227,7 @@ namespace SixLabors.ImageSharp.Advanced private static void AotCompileImageEncoders() where TPixel : unmanaged, IPixel { + AotCompileImageEncoder(); AotCompileImageEncoder(); AotCompileImageEncoder(); AotCompileImageEncoder(); @@ -239,6 +243,7 @@ namespace SixLabors.ImageSharp.Advanced private static void AotCompileImageDecoders() where TPixel : unmanaged, IPixel { + AotCompileImageDecoder(); AotCompileImageDecoder(); AotCompileImageDecoder(); AotCompileImageDecoder(); diff --git a/src/ImageSharp/Formats/WebP/WebpEncoder.cs b/src/ImageSharp/Formats/WebP/WebpEncoder.cs index 88bceddb28..5d86af7ee1 100644 --- a/src/ImageSharp/Formats/WebP/WebpEncoder.cs +++ b/src/ImageSharp/Formats/WebP/WebpEncoder.cs @@ -43,7 +43,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Webp where TPixel : unmanaged, IPixel { var encoder = new WebpEncoderCore(this, image.GetMemoryAllocator()); - return encoder.EncodeAsync(image, stream); + return encoder.EncodeAsync(image, stream, cancellationToken); } } } diff --git a/src/ImageSharp/Formats/WebP/WebpEncoderCore.cs b/src/ImageSharp/Formats/WebP/WebpEncoderCore.cs index 2ff6c6001b..075f8f53ea 100644 --- a/src/ImageSharp/Formats/WebP/WebpEncoderCore.cs +++ b/src/ImageSharp/Formats/WebP/WebpEncoderCore.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. using System.IO; +using System.Threading; using System.Threading.Tasks; using SixLabors.ImageSharp.Formats.Experimental.Webp.Lossless; @@ -14,7 +15,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Webp /// /// Image encoder for writing an image to a stream in the WebP format. /// - internal sealed class WebpEncoderCore + internal sealed class WebpEncoderCore : IImageEncoderInternals { /// /// Used for allocating memory during processing operations. @@ -68,7 +69,8 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Webp /// The pixel format. /// The to encode from. /// The to encode the image data to. - public void Encode(Image image, Stream stream) + /// The token to monitor for cancellation requests. + public void Encode(Image image, Stream stream, CancellationToken cancellationToken) where TPixel : unmanaged, IPixel { Guard.NotNull(image, nameof(image)); @@ -92,12 +94,13 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Webp /// The pixel format. /// The to encode from. /// The to encode the image data to. - public async Task EncodeAsync(Image image, Stream stream) + /// The token to monitor for cancellation requests. + public async Task EncodeAsync(Image image, Stream stream, CancellationToken cancellationToken) where TPixel : unmanaged, IPixel { if (stream.CanSeek) { - this.Encode(image, stream); + this.Encode(image, stream, cancellationToken); } else { @@ -105,7 +108,7 @@ namespace SixLabors.ImageSharp.Formats.Experimental.Webp { this.Encode(image, ms); ms.Position = 0; - await ms.CopyToAsync(stream).ConfigureAwait(false); + await ms.CopyToAsync(stream, cancellationToken).ConfigureAwait(false); } } }