Browse Source

Skeleton

pull/2633/head
Ynse Hoornenborg 3 years ago
parent
commit
961d55e9be
  1. 11
      src/ImageSharp/Formats/Heif/Av1/Av1BitDepth.cs
  2. 16
      src/ImageSharp/Formats/Heif/Av1/Av1BlockModeInfo.cs
  3. 15
      src/ImageSharp/Formats/Heif/Av1/Av1Math.cs
  4. 62
      src/ImageSharp/Formats/Heif/Av1/Av1PartitionType.cs
  5. 2
      src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuConstants.cs
  6. 2
      src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuFrameHeader.cs
  7. 2
      src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuReader.cs
  8. 26
      src/ImageSharp/Formats/Heif/Av1/Prediction/Av1PredictionMode.cs
  9. 16
      src/ImageSharp/Formats/Heif/Av1/Transform/Av1InverseQuantizer.cs
  10. 152
      src/ImageSharp/Formats/Heif/Av1/Transform/Av1Quantization.cs
  11. 2
      src/ImageSharp/Formats/Heif/Av1/Transform/Av1TransformMode.cs
  12. 49
      src/ImageSharp/Formats/Heif/Av1/Transform/Av1TransformType.cs
  13. 9
      src/ImageSharp/Formats/Heif/Heif4CharCode.cs
  14. 5
      src/ImageSharp/Formats/Heif/Heif4CharCode.tt
  15. 2
      src/ImageSharp/Formats/Heif/HeifDecoderCore.cs
  16. 4
      src/ImageSharp/ImageSharp.csproj

11
src/ImageSharp/Formats/Heif/Av1/Av1BitDepth.cs

@ -0,0 +1,11 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1;
internal enum Av1BitDepth : int
{
EightBit = 0,
TenBit = 1,
TwelveBit = 2,
}

16
src/ImageSharp/Formats/Heif/Av1/Av1BlockModeInfo.cs

@ -0,0 +1,16 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1.Prediction;
namespace SixLabors.ImageSharp.Formats.Heif.Av1;
internal class Av1BlockModeInfo
{
public Av1BlockSize BlockSize { get; }
public Av1PredictionMode PredictionMode { get; }
public Av1PartitionType Partition { get; }
}

15
src/ImageSharp/Formats/Heif/Av1/Av1Math.cs

@ -77,6 +77,21 @@ internal static class Av1Math
return z; return z;
} }
public static int Clip3(int x, int y, int z)
{
if (z < x)
{
return x;
}
if (z > y)
{
return y;
}
return z;
}
public static uint Round2(uint value, int n) public static uint Round2(uint value, int n)
{ {
if (n == 0) if (n == 0)

62
src/ImageSharp/Formats/Heif/Av1/Av1PartitionType.cs

@ -0,0 +1,62 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1;
internal enum Av1PartitionType
{
/// <summary>
/// Not partitioned any further.
/// </summary>
None,
/// <summary>
/// Horizontally split in 2 partitions.
/// </summary>
Horizontal,
/// <summary>
/// Vertically split in 2 partitions.
/// </summary>
Vertical,
/// <summary>
/// 4 equally sized partitions.
/// </summary>
Split,
/// <summary>
/// Horizontal split and the top partition is split again.
/// </summary>
HorizontalA,
/// <summary>
/// Horizontal split and the bottom partition is split again.
/// </summary>
HorizontalB,
/// <summary>
/// Vertical split and the left partition is split again.
/// </summary>
VerticalA,
/// <summary>
/// Vertical split and the right partitino is split again.
/// </summary>
VerticalB,
/// <summary>
/// 4:1 horizontal partition.
/// </summary>
Horizontal4,
/// <summary>
/// 4:1 vertical partition.
/// </summary>
Vertical4,
/// <summary>
/// Invalid value.
/// </summary>
Invalid = 255
}

2
src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuConstants.cs

@ -7,7 +7,7 @@ internal static class ObuConstants
{ {
public const ObuSequenceProfile MaxSequenceProfile = ObuSequenceProfile.Professional; public const ObuSequenceProfile MaxSequenceProfile = ObuSequenceProfile.Professional;
public const int LevelBits = -1; public const int LevelBits = 5;
/// <summary> /// <summary>
/// Number of fractional bits for computing position in upscaling. /// Number of fractional bits for computing position in upscaling.

2
src/ImageSharp/Formats/Heif/Av1/OpenBitstreamUnit/ObuFrameHeader.cs

@ -1,6 +1,8 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
namespace SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit; namespace SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit;
internal class ObuFrameHeader internal class ObuFrameHeader

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

@ -1,6 +1,8 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
namespace SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit; namespace SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit;
internal class ObuReader internal class ObuReader

26
src/ImageSharp/Formats/Heif/Av1/Prediction/Av1PredictionMode.cs

@ -0,0 +1,26 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1.Prediction;
// Inter modes are not defined here, as they do not apply to pictures.
internal enum Av1PredictionMode
{
DC,
Vertical,
Horizontal,
Directional45Degrees,
Directional135Degrees,
Directional113Degrees,
Directional157Degrees,
Directional203Degrees,
Directional67Degrees,
Smooth,
SmoothVertical,
SmoothHorizontal,
Paeth,
IntraModeStart = DC,
IntraModeEnd = Paeth + 1,
IntraModes = Paeth,
IntraInvalid = 25,
}

16
src/ImageSharp/Formats/Heif/Av1/Transform/Av1InverseQuantizer.cs

@ -0,0 +1,16 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit;
using SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
namespace SixLabors.ImageSharp.Formats.Heif.Av1.Quantization;
internal class Av1InverseQuantizer
{
public int InverseQuantize(ObuSequenceHeader sequenceHeader, ObuFrameHeader frameHeader, ObuPartitionInfo part, Av1BlockModeInfo mode, int[] qCoefficients, Av1TransformMode txType, Av1TransformSize txSize, Av1Plane plane)
{
return 0;
}
}

152
src/ImageSharp/Formats/Heif/Av1/Transform/Av1Quantization.cs

@ -0,0 +1,152 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1.Quantization;
internal static class Av1Quantization
{
public static readonly int[,] AcQLookup = new int[3, 256]
{
{
4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138,
140, 142, 144, 146, 148, 150, 152, 155, 158, 161, 164, 167, 170, 173, 176, 179, 182, 185, 188,
191, 194, 197, 200, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 260,
265, 270, 275, 280, 285, 290, 295, 300, 305, 311, 317, 323, 329, 335, 341, 347, 353, 359, 366,
373, 380, 387, 394, 401, 408, 416, 424, 432, 440, 448, 456, 465, 474, 483, 492, 501, 510, 520,
530, 540, 550, 560, 571, 582, 593, 604, 615, 627, 639, 651, 663, 676, 689, 702, 715, 729, 743,
757, 771, 786, 801, 816, 832, 848, 864, 881, 898, 915, 933, 951, 969, 988, 1007, 1026, 1046, 1066,
1087, 1108, 1129, 1151, 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343, 1369, 1396, 1423, 1451, 1479, 1508, 1537,
1567, 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
},
{
4, 9, 11, 13, 16, 18, 21, 24, 27, 30, 33, 37, 40, 44, 48, 51, 55, 59, 63,
67, 71, 75, 79, 83, 88, 92, 96, 100, 105, 109, 114, 118, 122, 127, 131, 136, 140, 145,
149, 154, 158, 163, 168, 172, 177, 181, 186, 190, 195, 199, 204, 208, 213, 217, 222, 226, 231,
235, 240, 244, 249, 253, 258, 262, 267, 271, 275, 280, 284, 289, 293, 297, 302, 306, 311, 315,
319, 324, 328, 332, 337, 341, 345, 349, 354, 358, 362, 367, 371, 375, 379, 384, 388, 392, 396,
401, 409, 417, 425, 433, 441, 449, 458, 466, 474, 482, 490, 498, 506, 514, 523, 531, 539, 547,
555, 563, 571, 579, 588, 596, 604, 616, 628, 640, 652, 664, 676, 688, 700, 713, 725, 737, 749,
761, 773, 785, 797, 809, 825, 841, 857, 873, 889, 905, 922, 938, 954, 970, 986, 1002, 1018, 1038,
1058, 1078, 1098, 1118, 1138, 1158, 1178, 1198, 1218, 1242, 1266, 1290, 1314, 1338, 1362, 1386, 1411, 1435, 1463,
1491, 1519, 1547, 1575, 1603, 1631, 1663, 1695, 1727, 1759, 1791, 1823, 1859, 1895, 1931, 1967, 2003, 2039, 2079,
2119, 2159, 2199, 2239, 2283, 2327, 2371, 2415, 2459, 2507, 2555, 2603, 2651, 2703, 2755, 2807, 2859, 2915, 2971,
3027, 3083, 3143, 3203, 3263, 3327, 3391, 3455, 3523, 3591, 3659, 3731, 3803, 3876, 3952, 4028, 4104, 4184, 4264,
4348, 4432, 4516, 4604, 4692, 4784, 4876, 4972, 5068, 5168, 5268, 5372, 5476, 5584, 5692, 5804, 5916, 6032, 6148,
6268, 6388, 6512, 6640, 6768, 6900, 7036, 7172, 7312,
},
{
4, 13, 19, 27, 35, 44, 54, 64, 75, 87, 99, 112, 126, 139, 154, 168,
183, 199, 214, 230, 247, 263, 280, 297, 314, 331, 349, 366, 384, 402, 420, 438,
456, 475, 493, 511, 530, 548, 567, 586, 604, 623, 642, 660, 679, 698, 716, 735,
753, 772, 791, 809, 828, 846, 865, 884, 902, 920, 939, 957, 976, 994, 1012, 1030,
1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175, 1193, 1211, 1229, 1246, 1264, 1282, 1299, 1317,
1335, 1352, 1370, 1387, 1405, 1422, 1440, 1457, 1474, 1491, 1509, 1526, 1543, 1560, 1577, 1595,
1627, 1660, 1693, 1725, 1758, 1791, 1824, 1856, 1889, 1922, 1954, 1987, 2020, 2052, 2085, 2118,
2150, 2183, 2216, 2248, 2281, 2313, 2346, 2378, 2411, 2459, 2508, 2556, 2605, 2653, 2701, 2750,
2798, 2847, 2895, 2943, 2992, 3040, 3088, 3137, 3185, 3234, 3298, 3362, 3426, 3491, 3555, 3619,
3684, 3748, 3812, 3876, 3941, 4005, 4069, 4149, 4230, 4310, 4390, 4470, 4550, 4631, 4711, 4791,
4871, 4967, 5064, 5160, 5256, 5352, 5448, 5544, 5641, 5737, 5849, 5961, 6073, 6185, 6297, 6410,
6522, 6650, 6778, 6906, 7034, 7162, 7290, 7435, 7579, 7723, 7867, 8011, 8155, 8315, 8475, 8635,
8795, 8956, 9132, 9308, 9484, 9660, 9836, 10028, 10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565, 13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414, 18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070, 25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
}
};
private static readonly int[,] DcQLookup = new int[3, 256]
{
{
4, 8, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23,
24, 25, 26, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 38, 38, 39, 40,
41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 53, 54, 55, 56, 57,
57, 58, 59, 60, 61, 62, 62, 63, 64, 65, 66, 66, 67, 68, 69, 70, 70, 71, 72, 73,
74, 74, 75, 76, 77, 78, 78, 79, 80, 81, 81, 82, 83, 84, 85, 85, 87, 88, 90, 92,
93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 108, 110, 111, 113, 114, 116, 117, 118, 120, 121,
123, 125, 127, 129, 131, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 161, 164,
166, 169, 172, 174, 177, 180, 182, 185, 187, 190, 192, 195, 199, 202, 205, 208, 211, 214, 217, 220,
223, 226, 230, 233, 237, 240, 243, 247, 250, 253, 257, 261, 265, 269, 272, 276, 280, 284, 288, 292,
296, 300, 304, 309, 313, 317, 322, 326, 330, 335, 340, 344, 349, 354, 359, 364, 369, 374, 379, 384,
389, 395, 400, 406, 411, 417, 423, 429, 435, 441, 447, 454, 461, 467, 475, 482, 489, 497, 505, 513,
522, 530, 539, 549, 559, 569, 579, 590, 602, 614, 626, 640, 654, 668, 684, 700, 717, 736, 755, 775,
796, 819, 843, 869, 896, 925, 955, 988, 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
},
{
4, 9, 10, 13, 15, 17, 20, 22, 25, 28, 31, 34, 37, 40, 43, 47, 50, 53, 57,
60, 64, 68, 71, 75, 78, 82, 86, 90, 93, 97, 101, 105, 109, 113, 116, 120, 124, 128,
132, 136, 140, 143, 147, 151, 155, 159, 163, 166, 170, 174, 178, 182, 185, 189, 193, 197, 200,
204, 208, 212, 215, 219, 223, 226, 230, 233, 237, 241, 244, 248, 251, 255, 259, 262, 266, 269,
273, 276, 280, 283, 287, 290, 293, 297, 300, 304, 307, 310, 314, 317, 321, 324, 327, 331, 334,
337, 343, 350, 356, 362, 369, 375, 381, 387, 394, 400, 406, 412, 418, 424, 430, 436, 442, 448,
454, 460, 466, 472, 478, 484, 490, 499, 507, 516, 525, 533, 542, 550, 559, 567, 576, 584, 592,
601, 609, 617, 625, 634, 644, 655, 666, 676, 687, 698, 708, 718, 729, 739, 749, 759, 770, 782,
795, 807, 819, 831, 844, 856, 868, 880, 891, 906, 920, 933, 947, 961, 975, 988, 1001, 1015, 1030,
1045, 1061, 1076, 1090, 1105, 1120, 1137, 1153, 1170, 1186, 1202, 1218, 1236, 1253, 1271, 1288, 1306, 1323, 1342,
1361, 1379, 1398, 1416, 1436, 1456, 1476, 1496, 1516, 1537, 1559, 1580, 1601, 1624, 1647, 1670, 1692, 1717, 1741,
1766, 1791, 1817, 1844, 1871, 1900, 1929, 1958, 1990, 2021, 2054, 2088, 2123, 2159, 2197, 2236, 2276, 2319, 2363,
2410, 2458, 2508, 2561, 2616, 2675, 2737, 2802, 2871, 2944, 3020, 3102, 3188, 3280, 3375, 3478, 3586, 3702, 3823,
3953, 4089, 4236, 4394, 4559, 4737, 4929, 5130, 5347,
},
{
4, 12, 18, 25, 33, 41, 50, 60, 70, 80, 91, 103, 115, 127, 140, 153,
166, 180, 194, 208, 222, 237, 251, 266, 281, 296, 312, 327, 343, 358, 374, 390,
405, 421, 437, 453, 469, 484, 500, 516, 532, 548, 564, 580, 596, 611, 627, 643,
659, 674, 690, 706, 721, 737, 752, 768, 783, 798, 814, 829, 844, 859, 874, 889,
904, 919, 934, 949, 964, 978, 993, 1008, 1022, 1037, 1051, 1065, 1080, 1094, 1108, 1122,
1136, 1151, 1165, 1179, 1192, 1206, 1220, 1234, 1248, 1261, 1275, 1288, 1302, 1315, 1329, 1342,
1368, 1393, 1419, 1444, 1469, 1494, 1519, 1544, 1569, 1594, 1618, 1643, 1668, 1692, 1717, 1741,
1765, 1789, 1814, 1838, 1862, 1885, 1909, 1933, 1957, 1992, 2027, 2061, 2096, 2130, 2165, 2199,
2233, 2267, 2300, 2334, 2367, 2400, 2434, 2467, 2499, 2532, 2575, 2618, 2661, 2704, 2746, 2788,
2830, 2872, 2913, 2954, 2995, 3036, 3076, 3127, 3177, 3226, 3275, 3324, 3373, 3421, 3469, 3517,
3565, 3621, 3677, 3733, 3788, 3843, 3897, 3951, 4005, 4058, 4119, 4181, 4241, 4301, 4361, 4420,
4479, 4546, 4612, 4677, 4742, 4807, 4871, 4942, 5013, 5083, 5153, 5222, 5291, 5367, 5442, 5517,
5591, 5665, 5745, 5825, 5905, 5984, 6063, 6149, 6234, 6319, 6404, 6495, 6587, 6678, 6769, 6867,
6966, 7064, 7163, 7269, 7376, 7483, 7599, 7715, 7832, 7958, 8085, 8214, 8352, 8492, 8635, 8788,
8945, 9104, 9275, 9450, 9639, 9832, 10031, 10245, 10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812, 16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
}
};
public static int GetDcQuantization(int qIndex, int delta, Av1BitDepth bitDepth)
=> DcQLookup[(int)bitDepth, Av1Math.Clip3(0, 255, qIndex + delta)];
public static int GetAcQuantization(int qIndex, int delta, Av1BitDepth bitDepth)
=> AcQLookup[(int)bitDepth, Av1Math.Clip3(0, 255, qIndex + delta)];
public static int GetQzbinFactor(int q, Av1BitDepth bitDepth)
{
int quant = GetDcQuantization(q, 0, bitDepth);
switch (bitDepth)
{
case Av1BitDepth.EightBit:
return q == 0 ? 64 : (quant < 148 ? 84 : 80);
case Av1BitDepth.TenBit:
return q == 0 ? 64 : (quant < 592 ? 84 : 80);
case Av1BitDepth.TwelveBit:
return q == 0 ? 64 : (quant < 2368 ? 84 : 80);
default:
DebugGuard.IsTrue(false, "bit_depth should be EIGHT_BIT, TEN_BIT or TWELVE_BIT");
return -1;
}
}
public static void InvertQuantization(out int quantization, out int shift, int d)
{
uint t;
int l, m;
t = (uint)d;
for (l = 0; t > 1; l++)
{
t >>= 1;
}
m = 1 + ((1 << (16 + l)) / d);
quantization = m - (1 << 16);
shift = 1 << (16 - l);
}
}

2
src/ImageSharp/Formats/Heif/Av1/Av1TransformMode.cs → src/ImageSharp/Formats/Heif/Av1/Transform/Av1TransformMode.cs

@ -1,7 +1,7 @@
// Copyright (c) Six Labors. // Copyright (c) Six Labors.
// Licensed under the Six Labors Split License. // Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1; namespace SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
internal enum Av1TransformMode : byte internal enum Av1TransformMode : byte
{ {

49
src/ImageSharp/Formats/Heif/Av1/Transform/Av1TransformType.cs

@ -0,0 +1,49 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Heif.Av1.Transform;
internal enum Av1TransformType : byte
{
/// <summary>
/// DCT in both horizontal and vertical.
/// </summary>
DctDct,
/// <summary>
/// ADST in vertical, DCT in horizontal.
/// </summary>
AdstDct,
/// <summary>
/// DCT in vertical, ADST in horizontal.
/// </summary>
DctAdst,
/// <summary>
/// ADST in both directions.
/// </summary>
AdstAdst,
FlipAdstDct,
DctFlipAdst,
FlipAdstFlipAdst,
AdstFlipAdst,
FlipAdstAdst,
Identity,
VerticalDct,
HorizontalDct,
VerticalAdst,
HorizontalAdst,
VerticalFlipAdst,
HorizontalFlipAdst,
/// <summary>
/// Number of Transform types.
/// </summary>
TransformTypes,
/// <summary>
/// Invalid value.
/// </summary>
Invalid,
}

9
src/ImageSharp/Formats/Heif/Heif4CharCode.cs

@ -249,12 +249,17 @@ public enum Heif4CharCode : uint
free = 0x66726565U, free = 0x66726565U,
/// <summary> /// <summary>
/// ICC Color Profile. /// Color profile.
/// </summary>
nclx = 0x6E636C78U,
/// <summary>
/// ICC Color profile.
/// </summary> /// </summary>
rICC = 0x72494343U, rICC = 0x72494343U,
/// <summary> /// <summary>
/// ICC Color Profile. /// ICC Color profile.
/// </summary> /// </summary>
prof = 0x70726F66U, prof = 0x70726F66U,

5
src/ImageSharp/Formats/Heif/Heif4CharCode.tt

@ -54,8 +54,9 @@
"pict", "Picture handler type", "pict", "Picture handler type",
"uuid", "Unique Identifier", "uuid", "Unique Identifier",
"free", "Free space", "free", "Free space",
"rICC", "ICC Color Profile", "nclx", "Color profile",
"prof", "ICC Color Profile", "rICC", "ICC Color profile",
"prof", "ICC Color profile",
}; };
#> #>

2
src/ImageSharp/Formats/Heif/HeifDecoderCore.cs

@ -4,6 +4,8 @@
using System.Buffers; using System.Buffers;
using System.Buffers.Binary; using System.Buffers.Binary;
using System.Text; using System.Text;
using SixLabors.ImageSharp.Formats.Heif.Av1;
using SixLabors.ImageSharp.Formats.Heif.Av1.OpenBitstreamUnit;
using SixLabors.ImageSharp.IO; using SixLabors.ImageSharp.IO;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Metadata; using SixLabors.ImageSharp.Metadata;

4
src/ImageSharp/ImageSharp.csproj

@ -241,5 +241,9 @@
<Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" /> <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Formats\Heif\Av1\Entropy\" />
</ItemGroup>
<Import Project="..\..\shared-infrastructure\src\SharedInfrastructure\SharedInfrastructure.projitems" Label="Shared" /> <Import Project="..\..\shared-infrastructure\src\SharedInfrastructure\SharedInfrastructure.projitems" Label="Shared" />
</Project> </Project>

Loading…
Cancel
Save