diff --git a/src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs b/src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs index fbaca19a65..3b3663522e 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs @@ -26,7 +26,7 @@ internal class Av1Decoder : IAv1TileReader public Av1FrameInfo? FrameInfo { get; private set; } - public Av1FrameBuffer? FrameBuffer { get; private set; } + public Av1FrameBuffer? FrameBuffer { get; private set; } public void Decode(Span buffer) { diff --git a/src/ImageSharp/Formats/Heif/Av1/Av1FrameBuffer.cs b/src/ImageSharp/Formats/Heif/Av1/Av1FrameBuffer.cs index 301804bf65..f3d32187c0 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Av1FrameBuffer.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Av1FrameBuffer.cs @@ -9,7 +9,8 @@ namespace SixLabors.ImageSharp.Formats.Heif.Av1; /// /// Buffer for the pixels of a single frame. /// -internal class Av1FrameBuffer : IDisposable +internal class Av1FrameBuffer : IDisposable + where T : struct { private const int DecoderPaddingValue = 72; private const int PictureBufferYFlag = 1 << 0; @@ -67,17 +68,17 @@ internal class Av1FrameBuffer : IDisposable this.BufferCr = null; if ((this.BufferEnableMask & PictureBufferYFlag) != 0) { - this.BufferY = configuration.MemoryAllocator.Allocate2D(strideY * bitsPerPixel, heightY); + this.BufferY = configuration.MemoryAllocator.Allocate2D(strideY * bitsPerPixel, heightY); } if ((this.BufferEnableMask & PictureBufferCbFlag) != 0) { - this.BufferCb = configuration.MemoryAllocator.Allocate2D(strideChroma * bitsPerPixel, heightChroma); + this.BufferCb = configuration.MemoryAllocator.Allocate2D(strideChroma * bitsPerPixel, heightChroma); } if ((this.BufferEnableMask & PictureBufferCrFlag) != 0) { - this.BufferCr = configuration.MemoryAllocator.Allocate2D(strideChroma * bitsPerPixel, heightChroma); + this.BufferCr = configuration.MemoryAllocator.Allocate2D(strideChroma * bitsPerPixel, heightChroma); } this.BitIncrementY = null; @@ -93,17 +94,17 @@ internal class Av1FrameBuffer : IDisposable /// /// Gets the Y luma buffer. /// - public Buffer2D? BufferY { get; private set; } + public Buffer2D? BufferY { get; private set; } /// /// Gets the U chroma buffer. /// - public Buffer2D? BufferCb { get; private set; } + public Buffer2D? BufferCb { get; private set; } /// /// Gets the V chroma buffer. /// - public Buffer2D? BufferCr { get; private set; } + public Buffer2D? BufferCr { get; private set; } public Buffer2D? BitIncrementY { get; private set; } diff --git a/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameDecoder.cs b/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameDecoder.cs index 8c1b68d414..811a51491e 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameDecoder.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameDecoder.cs @@ -13,12 +13,12 @@ internal class Av1FrameDecoder : IAv1FrameDecoder private readonly ObuSequenceHeader sequenceHeader; private readonly ObuFrameHeader frameHeader; private readonly Av1FrameInfo frameInfo; - private readonly Av1FrameBuffer frameBuffer; + private readonly Av1FrameBuffer frameBuffer; private readonly Av1InverseQuantizer inverseQuantizer; private readonly Av1DeQuantizationContext deQuants; private readonly Av1BlockDecoder blockDecoder; - public Av1FrameDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) + public Av1FrameDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) { this.sequenceHeader = sequenceHeader; this.frameHeader = frameHeader; diff --git a/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameEncoder.cs b/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameEncoder.cs index 90529ab1fd..6bdd55ac54 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameEncoder.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Pipeline/Av1FrameEncoder.cs @@ -7,9 +7,9 @@ namespace SixLabors.ImageSharp.Formats.Heif.Av1.Pipeline; internal class Av1FrameEncoder { - private readonly Av1FrameBuffer frameBuffer; + private readonly Av1FrameBuffer frameBuffer; - public Av1FrameEncoder(Av1FrameBuffer frameBuffer) + public Av1FrameEncoder(Av1FrameBuffer frameBuffer) { this.frameBuffer = frameBuffer; } diff --git a/src/ImageSharp/Formats/Heif/Av1/Pipeline/LoopFilter/Av1LoopFilterDecoder.cs b/src/ImageSharp/Formats/Heif/Av1/Pipeline/LoopFilter/Av1LoopFilterDecoder.cs index 9a895ea7e5..bf0c83c956 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Pipeline/LoopFilter/Av1LoopFilterDecoder.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Pipeline/LoopFilter/Av1LoopFilterDecoder.cs @@ -11,10 +11,10 @@ internal class Av1LoopFilterDecoder private readonly ObuSequenceHeader sequenceHeader; private readonly ObuFrameHeader frameHeader; private readonly Av1FrameInfo frameInfo; - private readonly Av1FrameBuffer frameBuffer; + private readonly Av1FrameBuffer frameBuffer; private readonly Av1LoopFilterContext loopFilterContext; - public Av1LoopFilterDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) + public Av1LoopFilterDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) { this.sequenceHeader = sequenceHeader; this.frameHeader = frameHeader; diff --git a/src/ImageSharp/Formats/Heif/Av1/Transform/Av1BlockDecoder.cs b/src/ImageSharp/Formats/Heif/Av1/Transform/Av1BlockDecoder.cs index fc10f30994..cfe3fa093c 100644 --- a/src/ImageSharp/Formats/Heif/Av1/Transform/Av1BlockDecoder.cs +++ b/src/ImageSharp/Formats/Heif/Av1/Transform/Av1BlockDecoder.cs @@ -17,13 +17,13 @@ internal class Av1BlockDecoder private readonly Av1FrameInfo frameInfo; - private readonly Av1FrameBuffer frameBuffer; + private readonly Av1FrameBuffer frameBuffer; private readonly bool isLoopFilterEnabled; private readonly int[] currentCoefficientIndex; - public Av1BlockDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) + public Av1BlockDecoder(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, Av1FrameInfo frameInfo, Av1FrameBuffer frameBuffer) { this.sequenceHeader = sequenceHeader; this.frameHeader = frameHeader; @@ -221,7 +221,7 @@ internal class Av1BlockDecoder } } - private static void DeriveBlockPointers(Av1FrameBuffer frameBuffer, int plane, int blockColumnInPixels, int blockRowInPixels, out Span blockReconstructionBuffer, out int reconstructionStride, int subX, int subY) + private static void DeriveBlockPointers(Av1FrameBuffer frameBuffer, int plane, int blockColumnInPixels, int blockRowInPixels, out Span blockReconstructionBuffer, out int reconstructionStride, int subX, int subY) { int blockOffset; diff --git a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1ForwardTransformTests.cs b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1ForwardTransformTests.cs index 53667c140a..488bc8726d 100644 --- a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1ForwardTransformTests.cs +++ b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1ForwardTransformTests.cs @@ -67,7 +67,7 @@ public class Av1ForwardTransformTests if (actual.EndsWith("Identity", StringComparison.InvariantCulture)) { - actual = "Vertical" + actual.Replace("Identity", ""); + actual = "Vertical" + actual.Replace("Identity", string.Empty); } } diff --git a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1InverseTransformTests.cs b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1InverseTransformTests.cs index c84531a76a..a5983ef645 100644 --- a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1InverseTransformTests.cs +++ b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1InverseTransformTests.cs @@ -1,6 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using System.Globalization; using SixLabors.ImageSharp.Formats.Heif.Av1; using SixLabors.ImageSharp.Formats.Heif.Av1.Transform; using SixLabors.ImageSharp.Formats.Heif.Av1.Transform.Forward; @@ -485,7 +486,7 @@ public class Av1InverseTransformTests int count = Math.Min(expected.Length, 32); for (int ni = 0; ni < count; ++ni) { - maximumErrorInTest = Math.Max(maximumErrorInTest, Math.Abs(Convert.ToInt32(actual[ni]) - Convert.ToInt32(expected[ni]))); + maximumErrorInTest = Math.Max(maximumErrorInTest, Math.Abs(Convert.ToInt32(actual[ni], CultureInfo.InvariantCulture) - Convert.ToInt32(expected[ni], CultureInfo.InvariantCulture))); } return maximumErrorInTest; diff --git a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1TilingTests.cs b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1TilingTests.cs index 46c39e50d6..fe756dd7c3 100644 --- a/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1TilingTests.cs +++ b/tests/ImageSharp.Tests/Formats/Heif/Av1/Av1TilingTests.cs @@ -24,7 +24,7 @@ public class Av1TilingTests IAv1TileReader stub = new Av1TileDecoderStub(); ObuReader obuReader = new(); obuReader.ReadAll(ref bitStreamReader, dataSize, () => stub); - Av1FrameBuffer frameBuffer = new(Configuration.Default, obuReader.SequenceHeader, Av1ColorFormat.Yuv444, false); + Av1FrameBuffer frameBuffer = new(Configuration.Default, obuReader.SequenceHeader, Av1ColorFormat.Yuv444, false); Av1FrameInfo frameInfo = new(obuReader.SequenceHeader); Av1FrameDecoderStub frameDecoder = new(); Av1TileReader tileReader = new(Configuration.Default, obuReader.SequenceHeader, obuReader.FrameHeader, frameDecoder);