From db3d74862f8d3ab222278adc0da5182f411dc22d Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Fri, 24 Mar 2023 18:59:16 +0100 Subject: [PATCH] Move EncodeAlpha into try catch block --- .../Formats/Webp/Lossy/Vp8Encoder.cs | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs b/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs index 6afab41581..eefc4cd0a0 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs @@ -345,30 +345,6 @@ internal class Vp8Encoder : IDisposable int expectedSize = this.Mbw * this.Mbh * averageBytesPerMacroBlock; this.bitWriter = new Vp8BitWriter(expectedSize, this); - // Extract and encode alpha channel data, if present. - int alphaDataSize = 0; - bool alphaCompressionSucceeded = false; - Span alphaData = Span.Empty; - IMemoryOwner encodedAlphaData = null; - if (hasAlpha) - { - // TODO: This can potentially run in an separate task. - encodedAlphaData = AlphaEncoder.EncodeAlpha( - image, - this.configuration, - this.memoryAllocator, - this.skipMetadata, - this.alphaCompression, - out alphaDataSize); - - alphaData = encodedAlphaData.GetSpan(); - if (alphaDataSize < pixelCount) - { - // Only use compressed data, if the compressed data is actually smaller then the uncompressed data. - alphaCompressionSucceeded = true; - } - } - // Stats-collection loop. this.StatLoop(width, height, yStride, uvStride); it.Init(); @@ -406,8 +382,32 @@ internal class Vp8Encoder : IDisposable ExifProfile exifProfile = this.skipMetadata ? null : metadata.ExifProfile; XmpProfile xmpProfile = this.skipMetadata ? null : metadata.XmpProfile; + // Extract and encode alpha channel data, if present. + int alphaDataSize = 0; + bool alphaCompressionSucceeded = false; + Span alphaData = Span.Empty; + IMemoryOwner encodedAlphaData = null; try { + if (hasAlpha) + { + // TODO: This can potentially run in an separate task. + encodedAlphaData = AlphaEncoder.EncodeAlpha( + image, + this.configuration, + this.memoryAllocator, + this.skipMetadata, + this.alphaCompression, + out alphaDataSize); + + alphaData = encodedAlphaData.GetSpan(); + if (alphaDataSize < pixelCount) + { + // Only use compressed data, if the compressed data is actually smaller then the uncompressed data. + alphaCompressionSucceeded = true; + } + } + this.bitWriter.WriteEncodedImageToStream( stream, exifProfile,