Browse Source

Rename to Av1Decoder

pull/2633/head
Ynse Hoornenborg 2 years ago
parent
commit
6aa74f20b9
  1. 10
      src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs
  2. 6
      src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuReader.cs
  3. 8
      tests/ImageSharp.Tests/Formats/Heif/Av1/ObuFrameHeaderTests.cs

10
src/ImageSharp/Formats/Heif/Av1/Av1DecoderHandle.cs → src/ImageSharp/Formats/Heif/Av1/Av1Decoder.cs

@ -5,9 +5,9 @@ using SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit;
namespace SixLabors.ImageSharp.Formats.Heif.Av1;
internal class Av1DecoderHandle
internal class Av1Decoder
{
public Av1DecoderHandle()
public Av1Decoder()
{
this.FrameInfo = new ObuFrameHeader();
this.SequenceHeader = new ObuSequenceHeader();
@ -25,4 +25,10 @@ internal class Av1DecoderHandle
public ObuSequenceHeader SequenceHeader { get; }
public ObuTileInfo TileInfo { get; }
public void Decode(Span<byte> buffer)
{
Av1BitStreamReader reader = new(buffer);
ObuReader.Read(ref reader, buffer.Length, this, false);
}
}

6
src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuReader.cs

@ -10,7 +10,7 @@ internal class ObuReader
/// <summary>
/// Decode all OBU's in a frame.
/// </summary>
public static void Read(ref Av1BitStreamReader reader, int dataSize, Av1DecoderHandle decoderHandle, bool isAnnexB)
public static void Read(ref Av1BitStreamReader reader, int dataSize, Av1Decoder decoderHandle, bool isAnnexB)
{
bool frameDecodingFinished = false;
while (!frameDecodingFinished)
@ -57,11 +57,11 @@ internal class ObuReader
}
else if (header.Type != ObuType.FrameHeader)
{
Guard.IsFalse(decoderHandle.SeenFrameHeader, nameof(Av1DecoderHandle.SeenFrameHeader), "Frame header expected");
Guard.IsFalse(decoderHandle.SeenFrameHeader, nameof(Av1Decoder.SeenFrameHeader), "Frame header expected");
}
else
{
Guard.IsTrue(decoderHandle.SeenFrameHeader, nameof(Av1DecoderHandle.SeenFrameHeader), "Already decoded a frame header");
Guard.IsTrue(decoderHandle.SeenFrameHeader, nameof(Av1Decoder.SeenFrameHeader), "Already decoded a frame header");
}
if (!decoderHandle.SeenFrameHeader)

8
tests/ImageSharp.Tests/Formats/Heif/Av1/ObuFrameHeaderTests.cs

@ -12,17 +12,17 @@ public class ObuFrameHeaderTests
[Theory]
// [InlineData(TestImages.Heif.IrvineAvif, 0x0102, 0x000D, false)]
// [InlineData(TestImages.Heif.IrvineAvif, 0x0198, 0x6BD1, false)]
[InlineData(TestImages.Heif.XnConvert, 0x010E, 0x0017, false)]
[InlineData(TestImages.Heif.XnConvert, 0x010E, 0x03CC, false)]
public void ReadFrameHeader(string filename, int fileOffset, int blockSize, bool isAnnexB)
{
// Assign
string filePath = Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, filename);
byte[] content = File.ReadAllBytes(filePath);
Av1BitStreamReader reader = new(content.AsSpan(fileOffset));
Av1DecoderHandle decoder = new();
Span<byte> span = content.AsSpan(fileOffset, blockSize);
Av1Decoder decoder = new();
// Act
ObuReader.Read(ref reader, blockSize, decoder, isAnnexB);
decoder.Decode(span);
// Assert
Assert.True(decoder.SequenceHeaderDone);

Loading…
Cancel
Save