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; namespace SixLabors.ImageSharp.Formats.Heif.Av1;
internal class Av1DecoderHandle internal class Av1Decoder
{ {
public Av1DecoderHandle() public Av1Decoder()
{ {
this.FrameInfo = new ObuFrameHeader(); this.FrameInfo = new ObuFrameHeader();
this.SequenceHeader = new ObuSequenceHeader(); this.SequenceHeader = new ObuSequenceHeader();
@ -25,4 +25,10 @@ internal class Av1DecoderHandle
public ObuSequenceHeader SequenceHeader { get; } public ObuSequenceHeader SequenceHeader { get; }
public ObuTileInfo TileInfo { 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> /// <summary>
/// Decode all OBU's in a frame. /// Decode all OBU's in a frame.
/// </summary> /// </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; bool frameDecodingFinished = false;
while (!frameDecodingFinished) while (!frameDecodingFinished)
@ -57,11 +57,11 @@ internal class ObuReader
} }
else if (header.Type != ObuType.FrameHeader) 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 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) if (!decoderHandle.SeenFrameHeader)

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

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

Loading…
Cancel
Save