Browse Source

Move EncodeAlpha into try catch block

pull/2412/head
Brian Popow 3 years ago
parent
commit
db3d74862f
  1. 48
      src/ImageSharp/Formats/Webp/Lossy/Vp8Encoder.cs

48
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<byte> alphaData = Span<byte>.Empty;
IMemoryOwner<byte> 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<byte> alphaData = Span<byte>.Empty;
IMemoryOwner<byte> 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,

Loading…
Cancel
Save