|
|
|
@ -4,12 +4,26 @@ |
|
|
|
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// TODO: THIS IS NO LONGER TRUE, INTERNAL REPRESENTATION WAS CHANGED AND THIS DOC SHOULD BE CHANGED TOO!!!
|
|
|
|
/// A compiled look-up table representation of a huffmanSpec.
|
|
|
|
/// Each value maps to a int32 of which the 24 most significant bits hold the
|
|
|
|
/// codeword in bits and the 8 least significant bits hold the codeword size.
|
|
|
|
/// The maximum codeword size is 16 bits.
|
|
|
|
/// </summary>
|
|
|
|
/// <remarks>
|
|
|
|
/// <para>
|
|
|
|
/// Each value maps to a int32 of which the 24 most significant bits hold the
|
|
|
|
/// codeword in bits and the 8 least significant bits hold the codeword size.
|
|
|
|
/// </para>
|
|
|
|
/// <para>
|
|
|
|
/// Code value occupies 24 most significant bits as integer value.
|
|
|
|
/// This value is shifted to the MSB position for performance reasons.
|
|
|
|
/// For example, decimal value 10 is stored like this:
|
|
|
|
/// <code>
|
|
|
|
/// MSB LSB
|
|
|
|
/// 1010 0000 00000000 00000000 | 00000100
|
|
|
|
/// </code>
|
|
|
|
/// This was done to eliminate extra binary shifts in the encoder.
|
|
|
|
/// While code length is represented as 8 bit integer value
|
|
|
|
/// </para>
|
|
|
|
/// </remarks>
|
|
|
|
internal readonly struct HuffmanLut |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
|