From 497c27c0d71c8f764a7f04d36fa8dcc2eb084e0e Mon Sep 17 00:00:00 2001 From: winscripter <142818255+winscripter@users.noreply.github.com> Date: Tue, 1 Sep 2026 16:46:46 +0400 Subject: [PATCH] Update folder structure --- .../Jxl/IO/FrameHeader/JxlFrameHeader.cs | 1 + .../Jpeg/Data/JpegAppMarkerType.cs | 2 +- .../Jpeg/Data/JpegDataConstants.cs | 2 +- .../Jxl/IO/Jpeg/Data/JpegQuantizationTable.cs | 29 ++++++++ .../Formats/Jxl/IO/Jpeg/JpegHuffmanDecoder.cs | 38 ++++++++++ .../Jxl/{Processing => IO}/Jpeg/README.md | 0 .../Jxl/IO/Metadata/JxlOpsinInverseMatrix.cs | 2 +- src/ImageSharp/Formats/Jxl/InlineArrays.cs | 9 +++ .../{ => AcStrategy}/IJxlDctAcImage.cs | 4 +- .../{ => AcStrategy}/JxlAcContext.cs | 2 +- .../{ => AcStrategy}/JxlAcStrategy.cs | 2 +- .../{ => AcStrategy}/JxlAcStrategyImage.cs | 2 +- .../{ => AcStrategy}/JxlAcStrategyRow.cs | 2 +- .../{ => AcStrategy}/JxlAcStrategyType.cs | 2 +- .../JxlAlphaBlendingInputLayer.cs | 2 +- .../{ => Blending}/JxlAlphaBlendingOutput.cs | 2 +- .../{ => Blending}/JxlAlphaHelper.cs | 2 +- .../Jxl/Processing/Butteraugli/Butteraugli.cs | 1 + .../Jxl/Processing/{ => Dct}/JxlDct.cs | 2 +- .../Processing/{ => Dct}/JxlDctAcImage{T}.cs | 3 +- .../Processing/{ => Dct}/JxlDctAcPointer.cs | 2 +- .../Jxl/Processing/{ => Dct}/JxlDctAcType.cs | 2 +- .../Jxl/Processing/{ => Dct}/JxlDctOutput.cs | 2 +- .../{ => Dct}/JxlDctQuantWeightParameters.cs | 2 +- .../{ => Dct}/JxlDctReadOnlyAcPointer.cs | 2 +- .../Jxl/Processing/{ => Dct}/JxlDctScales.cs | 2 +- .../Jxl/Processing/{ => Dct}/JxlDctSource.cs | 2 +- .../Jxl/Processing/Decoder/JxlDecoderCore.cs | 1 + .../Jxl/Processing/Decoder/JxlFrameDecoder.cs | 1 + .../Jxl/Processing/Decoder/JxlNoiseDecoder.cs | 1 + .../Decoder/JxlOutputEncodingInfo.cs | 1 + .../Decoder/JxlPassesDecoderState.cs | 1 + .../Processing/Decoder/JxlPatchDictionary.cs | 2 + .../Encoder/Ans/JxlHistogramParameters.cs | 1 + .../AuxiliaryOutput/JxlAuxiliaryOutput.cs | 72 +++++++++++++++++++ .../JxlAuxiliaryOutputConstants.cs | 9 +++ .../Encoder/AuxiliaryOutput/JxlLayerTotals.cs | 22 ++++++ .../Encoder/AuxiliaryOutput/JxlLayerType.cs | 23 ++++++ .../Jxl/Processing/JxlBlockContextMap.cs | 1 + .../Jxl/Processing/JxlCoefficientOrder.cs | 1 + .../Formats/Jxl/Processing/JxlConvolve.cs | 1 + .../Formats/Jxl/Processing/JxlEntropyCoder.cs | 1 + .../Jxl/Processing/JxlImageFeatures.cs | 1 + .../Formats/Jxl/Processing/JxlLoopFilter.cs | 1 + .../Processing/JxlOpsinInverseParameters.cs | 2 + .../Jxl/Processing/JxlPassesSharedState.cs | 2 + .../Formats/Jxl/Processing/JxlTranspose.cs | 2 + .../Processing/{ => Noise}/JxlNoiseHelper.cs | 2 +- .../{ => Noise}/JxlNoiseIndexAndFraction.cs | 2 +- .../Processing/{ => Noise}/JxlNoiseLevel.cs | 2 +- .../{ => Noise}/JxlNoiseParameters.cs | 2 +- .../{ => Primitives}/JxlAspectRatioHelpers.cs | 2 +- .../{ => Primitives}/JxlBitDepth.cs | 2 +- .../{ => Primitives}/JxlBitDepthType.cs | 2 +- .../{ => Primitives}/JxlDataType.cs | 2 +- .../{ => Primitives}/JxlInverseMtf.cs | 2 +- .../{ => Primitives}/JxlLehmerCode.cs | 2 +- .../{ => Primitives}/JxlMatrix3x3.cs | 2 +- .../{ => Primitives}/JxlMatrix3x3F.cs | 2 +- .../{ => Primitives}/JxlOverride.cs | 2 +- .../{ => Primitives}/JxlOverrideHelpers.cs | 2 +- .../{ => Primitives}/JxlPackSigned.cs | 2 +- .../{ => Primitives}/JxlPixelFormat.cs | 2 +- .../{ => Primitives}/JxlSpeedTier.cs | 2 +- .../{ => Primitives}/JxlWeightsSeparable5.cs | 2 +- .../{ => Primitives}/JxlWeightsSymmetric3.cs | 2 +- .../{ => Primitives}/JxlWeightsSymmetric5.cs | 2 +- .../{ => Primitives}/JxlXorShift.cs | 2 +- .../{ => Quantization}/JxlDequantMatrices.cs | 3 +- .../{ => Quantization}/JxlQuantMode.cs | 2 +- .../{ => Quantization}/JxlQuantTable.cs | 2 +- .../{ => Quantization}/JxlQuantWeights.cs | 4 +- .../{ => Quantization}/JxlQuantizer.cs | 3 +- .../JxlQuantizerConstants.cs | 2 +- .../JxlQuantizerEncoding.cs | 4 +- .../JxlQuantizerParameters.cs | 2 +- .../Processing/Splines/JxlQuantizedSpline.cs | 2 + 77 files changed, 285 insertions(+), 50 deletions(-) rename src/ImageSharp/Formats/Jxl/{Processing => IO}/Jpeg/Data/JpegAppMarkerType.cs (89%) rename src/ImageSharp/Formats/Jxl/{Processing => IO}/Jpeg/Data/JpegDataConstants.cs (97%) create mode 100644 src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegQuantizationTable.cs create mode 100644 src/ImageSharp/Formats/Jxl/IO/Jpeg/JpegHuffmanDecoder.cs rename src/ImageSharp/Formats/Jxl/{Processing => IO}/Jpeg/README.md (100%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/IJxlDctAcImage.cs (95%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/JxlAcContext.cs (96%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/JxlAcStrategy.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/JxlAcStrategyImage.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/JxlAcStrategyRow.cs (92%) rename src/ImageSharp/Formats/Jxl/Processing/{ => AcStrategy}/JxlAcStrategyType.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Blending}/JxlAlphaBlendingInputLayer.cs (83%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Blending}/JxlAlphaBlendingOutput.cs (82%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Blending}/JxlAlphaHelper.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDct.cs (99%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctAcImage{T}.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctAcPointer.cs (87%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctAcType.cs (84%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctOutput.cs (96%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctQuantWeightParameters.cs (92%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctReadOnlyAcPointer.cs (91%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctScales.cs (99%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Dct}/JxlDctSource.cs (96%) create mode 100644 src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutput.cs create mode 100644 src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutputConstants.cs create mode 100644 src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerTotals.cs create mode 100644 src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerType.cs rename src/ImageSharp/Formats/Jxl/Processing/{ => Noise}/JxlNoiseHelper.cs (92%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Noise}/JxlNoiseIndexAndFraction.cs (82%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Noise}/JxlNoiseLevel.cs (83%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Noise}/JxlNoiseParameters.cs (85%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlAspectRatioHelpers.cs (93%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlBitDepth.cs (90%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlBitDepthType.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlDataType.cs (90%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlInverseMtf.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlLehmerCode.cs (97%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlMatrix3x3.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlMatrix3x3F.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlOverride.cs (87%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlOverrideHelpers.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlPackSigned.cs (93%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlPixelFormat.cs (93%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlSpeedTier.cs (96%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlWeightsSeparable5.cs (82%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlWeightsSymmetric3.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlWeightsSymmetric5.cs (97%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Primitives}/JxlXorShift.cs (96%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlDequantMatrices.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantMode.cs (94%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantTable.cs (90%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantWeights.cs (99%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantizer.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantizerConstants.cs (96%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantizerEncoding.cs (98%) rename src/ImageSharp/Formats/Jxl/Processing/{ => Quantization}/JxlQuantizerParameters.cs (95%) diff --git a/src/ImageSharp/Formats/Jxl/IO/FrameHeader/JxlFrameHeader.cs b/src/ImageSharp/Formats/Jxl/IO/FrameHeader/JxlFrameHeader.cs index 43d704504..c1cf766b0 100644 --- a/src/ImageSharp/Formats/Jxl/IO/FrameHeader/JxlFrameHeader.cs +++ b/src/ImageSharp/Formats/Jxl/IO/FrameHeader/JxlFrameHeader.cs @@ -9,6 +9,7 @@ using SixLabors.ImageSharp.Formats.Jxl.Fields; using SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; using SixLabors.ImageSharp.Formats.Jxl.Processing; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.IO.FrameHeader; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegAppMarkerType.cs b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegAppMarkerType.cs similarity index 89% rename from src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegAppMarkerType.cs rename to src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegAppMarkerType.cs index ba121c80f..15438464e 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegAppMarkerType.cs +++ b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegAppMarkerType.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Jpeg.Data; +namespace SixLabors.ImageSharp.Formats.Jxl.IO.Jpeg.Data; /// /// Identifies the kind of APP marker in a JPEG file. diff --git a/src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegDataConstants.cs b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegDataConstants.cs similarity index 97% rename from src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegDataConstants.cs rename to src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegDataConstants.cs index 7dd73a50c..e2c36e92b 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Jpeg/Data/JpegDataConstants.cs +++ b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegDataConstants.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Jpeg.Data; +namespace SixLabors.ImageSharp.Formats.Jxl.IO.Jpeg.Data; /// /// Constants used in parsed JPEG data. diff --git a/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegQuantizationTable.cs b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegQuantizationTable.cs new file mode 100644 index 000000000..7386bd5a3 --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/IO/Jpeg/Data/JpegQuantizationTable.cs @@ -0,0 +1,29 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.IO.Jpeg.Data; + +/// +/// Representation of quantization values for an 8x8 pixel block. +/// +internal struct JpegQuantizationTable() +{ + /// + /// Quantization values + /// + public InlineArray64 Values; + + public int Precision { get; set; } + + /// + /// Gets or sets the index of the quantization table + /// as it was parsed from the input JPEG. + /// + public int Index { get; set; } + + /// + /// Gets or sets a value indicating whether this table + /// is the last one within its marker segment. + /// + public bool IsLast { get; set; } = true; +} diff --git a/src/ImageSharp/Formats/Jxl/IO/Jpeg/JpegHuffmanDecoder.cs b/src/ImageSharp/Formats/Jxl/IO/Jpeg/JpegHuffmanDecoder.cs new file mode 100644 index 000000000..5cff485be --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/IO/Jpeg/JpegHuffmanDecoder.cs @@ -0,0 +1,38 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.IO.Jpeg; + +/// +/// Decodes Huffman codes in a JPEG file for JPEG to JPEG XL encoder. +/// +internal static class JpegHuffmanDecoder +{ + private const int RootTableBits = 8; + private const int LookupSize = 8; + + private static int NextTableBitSize(Span count, int length) + { + int left = 1 << (length - RootTableBits); + while (length < MaxBitLength) + { + left -= count[length]; + + if (left <= 0) + { + break; + } + + length++; + left <<= 1; + } + + return length - RootTableBits; + } + + public struct HuffmanTableEntry() + { + public byte Bits = 0; + public ushort Value = 0xFFFF; + } +} diff --git a/src/ImageSharp/Formats/Jxl/Processing/Jpeg/README.md b/src/ImageSharp/Formats/Jxl/IO/Jpeg/README.md similarity index 100% rename from src/ImageSharp/Formats/Jxl/Processing/Jpeg/README.md rename to src/ImageSharp/Formats/Jxl/IO/Jpeg/README.md diff --git a/src/ImageSharp/Formats/Jxl/IO/Metadata/JxlOpsinInverseMatrix.cs b/src/ImageSharp/Formats/Jxl/IO/Metadata/JxlOpsinInverseMatrix.cs index a6df675ac..346e37414 100644 --- a/src/ImageSharp/Formats/Jxl/IO/Metadata/JxlOpsinInverseMatrix.cs +++ b/src/ImageSharp/Formats/Jxl/IO/Metadata/JxlOpsinInverseMatrix.cs @@ -5,7 +5,7 @@ using System.Runtime.CompilerServices; using SixLabors.ImageSharp.Formats.Jxl.Fields; -using SixLabors.ImageSharp.Formats.Jxl.Processing; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; diff --git a/src/ImageSharp/Formats/Jxl/InlineArrays.cs b/src/ImageSharp/Formats/Jxl/InlineArrays.cs index acb9c3d41..f61f7490e 100644 --- a/src/ImageSharp/Formats/Jxl/InlineArrays.cs +++ b/src/ImageSharp/Formats/Jxl/InlineArrays.cs @@ -16,6 +16,15 @@ internal struct InlineArray55 private T first; } +/// +/// Used by JpegQuantizationTable +/// +[InlineArray(64)] +internal struct InlineArray64 +{ + private T first; +} + /// /// Used by JxlCustomTransformData /// diff --git a/src/ImageSharp/Formats/Jxl/Processing/IJxlDctAcImage.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/IJxlDctAcImage.cs similarity index 95% rename from src/ImageSharp/Formats/Jxl/Processing/IJxlDctAcImage.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/IJxlDctAcImage.cs index 30969824c..6d773d7cd 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/IJxlDctAcImage.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/IJxlDctAcImage.cs @@ -1,7 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; /// /// Base DCT AC coefficient image diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAcContext.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcContext.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAcContext.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcContext.cs index 58e5c8b4f..61893c621 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAcContext.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcContext.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; /// /// AC context diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategy.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategy.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategy.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategy.cs index 6da292664..36f0b71c5 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategy.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategy.cs @@ -5,7 +5,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using static SixLabors.ImageSharp.Formats.Jxl.Processing.JxlFrameDimensions; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; [StructLayout(LayoutKind.Sequential, Pack = 8)] internal struct JxlAcStrategy diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyImage.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyImage.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyImage.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyImage.cs index 236d51814..875cae762 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyImage.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyImage.cs @@ -3,7 +3,7 @@ using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; internal sealed class JxlAcStrategyImage : IDisposable { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyRow.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyRow.cs similarity index 92% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyRow.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyRow.cs index b94c565e7..7a9b1eeaf 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyRow.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyRow.cs @@ -4,7 +4,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; internal sealed class JxlAcStrategyRow { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyType.cs b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyType.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyType.cs rename to src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyType.cs index e1b935fa2..317f71ccb 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAcStrategyType.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/AcStrategy/JxlAcStrategyType.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; internal enum JxlAcStrategyType : ushort { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingInputLayer.cs b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingInputLayer.cs similarity index 83% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingInputLayer.cs rename to src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingInputLayer.cs index 4b49e32c1..9a73f659f 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingInputLayer.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingInputLayer.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Blending; internal sealed class JxlAlphaBlendingInputLayer { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingOutput.cs b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingOutput.cs similarity index 82% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingOutput.cs rename to src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingOutput.cs index c5db8cb8a..62296b20e 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaBlendingOutput.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaBlendingOutput.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Blending; internal sealed class JxlAlphaBlendingOutput { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaHelper.cs b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaHelper.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAlphaHelper.cs rename to src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaHelper.cs index 641205ab2..b3c890f9a 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAlphaHelper.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Blending/JxlAlphaHelper.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Blending; internal sealed class JxlAlphaHelper { diff --git a/src/ImageSharp/Formats/Jxl/Processing/Butteraugli/Butteraugli.cs b/src/ImageSharp/Formats/Jxl/Processing/Butteraugli/Butteraugli.cs index 2011c186b..99f1cf2d8 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Butteraugli/Butteraugli.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Butteraugli/Butteraugli.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using SixLabors.ImageSharp.Formats.Jxl.Memory; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Butteraugli; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDct.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDct.cs similarity index 99% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDct.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDct.cs index 5e3e76355..c498c3a6d 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDct.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDct.cs @@ -4,7 +4,7 @@ using System.Numerics; using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Discrete Cosine Transform with SIMD support. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcImage{T}.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcImage{T}.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctAcImage{T}.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcImage{T}.cs index 4f311f898..6d132c412 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcImage{T}.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcImage{T}.cs @@ -2,8 +2,9 @@ // Licensed under the Six Labors Split License. using SixLabors.ImageSharp.Formats.Jxl.Memory; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; internal sealed class JxlDctAcImage : IJxlDctAcImage, IDisposable where T : unmanaged diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcPointer.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcPointer.cs similarity index 87% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctAcPointer.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcPointer.cs index 9710712d7..732e8f4a0 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcPointer.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcPointer.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Pointer to DCT AC coefficients diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcType.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcType.cs similarity index 84% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctAcType.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcType.cs index a7e4ede67..35801b919 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctAcType.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctAcType.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Bit size for DCT AC coefficient diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctOutput.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctOutput.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctOutput.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctOutput.cs index 1be3b9adf..5ef621890 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctOutput.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctOutput.cs @@ -4,7 +4,7 @@ using System.Numerics; using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Output DCT block. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctQuantWeightParameters.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctQuantWeightParameters.cs similarity index 92% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctQuantWeightParameters.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctQuantWeightParameters.cs index 8cd8a16ab..2c0573668 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctQuantWeightParameters.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctQuantWeightParameters.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; internal sealed class JxlDctQuantWeightParameters { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctReadOnlyAcPointer.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctReadOnlyAcPointer.cs similarity index 91% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctReadOnlyAcPointer.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctReadOnlyAcPointer.cs index c80d8eaa6..cbedf64fe 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctReadOnlyAcPointer.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctReadOnlyAcPointer.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Pointer to DCT AC coefficients. (Read-only) diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctScales.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctScales.cs similarity index 99% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctScales.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctScales.cs index 0ebcb7a1f..0785afe12 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctScales.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctScales.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Read-only cosine lookups for the Discrete Cosine Transform (DCT), diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDctSource.cs b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctSource.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDctSource.cs rename to src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctSource.cs index 08dafc11e..0fe17e92a 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDctSource.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Dct/JxlDctSource.cs @@ -4,7 +4,7 @@ using System.Numerics; using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; /// /// Source DCT block. diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlDecoderCore.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlDecoderCore.cs index 8dcd47711..8947b0f14 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlDecoderCore.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlDecoderCore.cs @@ -9,6 +9,7 @@ using SixLabors.ImageSharp.Formats.Jxl.IO; using SixLabors.ImageSharp.Formats.Jxl.IO.Container; using SixLabors.ImageSharp.Formats.Jxl.IO.FrameHeader; using SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; using SixLabors.ImageSharp.IO; using SixLabors.ImageSharp.Metadata.Profiles.Icc; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlFrameDecoder.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlFrameDecoder.cs index e127354a7..75b39cbeb 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlFrameDecoder.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlFrameDecoder.cs @@ -3,6 +3,7 @@ using SixLabors.ImageSharp.Formats.Jxl.IO.FrameHeader; using SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlNoiseDecoder.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlNoiseDecoder.cs index 819517551..1ddb429cb 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlNoiseDecoder.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlNoiseDecoder.cs @@ -5,6 +5,7 @@ using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlOutputEncodingInfo.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlOutputEncodingInfo.cs index bdec66643..616d7ceeb 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlOutputEncodingInfo.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlOutputEncodingInfo.cs @@ -4,6 +4,7 @@ using System.Numerics; using SixLabors.ImageSharp.Formats.Jxl.Cms; using SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPassesDecoderState.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPassesDecoderState.cs index 5b534ef77..9c5b910c2 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPassesDecoderState.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPassesDecoderState.cs @@ -3,6 +3,7 @@ using SixLabors.ImageSharp.Formats.Jxl.IO.FrameHeader; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPatchDictionary.cs b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPatchDictionary.cs index 1b7232566..d9bc0e88f 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPatchDictionary.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Decoder/JxlPatchDictionary.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; + namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; internal sealed class JxlPatchDictionary diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/Ans/JxlHistogramParameters.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/Ans/JxlHistogramParameters.cs index 4f2047424..c6d7526f7 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Encoder/Ans/JxlHistogramParameters.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/Ans/JxlHistogramParameters.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using SixLabors.ImageSharp.Formats.Jxl.IO.Entropy; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Encoder.Ans; diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutput.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutput.cs new file mode 100644 index 000000000..6a34aabdc --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutput.cs @@ -0,0 +1,72 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Encoder.AuxiliaryOutput; + +/// +/// Provides statistics gathered during compression or decompression. +/// +internal sealed class JxlAuxiliaryOutput +{ + public JxlLayerTotals[] Layers { get; set; } = new JxlLayerTotals[JxlAuxiliaryOutputConstants.NumberOfImageLayers]; + + public long NumberOfBlocks { get; set; } + + public long NumberOfSmallBlocks { get; set; } + + public long NumberOfDct4x8Blocks { get; set; } + + public long NumberOfAfvBlocks { get; set; } + + public long NumberOfDct8Blocks { get; set; } + + public long NumberOfDct8x16Blocks { get; set; } + + public long NumberOfDct8x32Blocks { get; set; } + + public long NumberOfDct16Blocks { get; set; } + + public long NumberOfDct16x32Blocks { get; set; } + + public long NumberOfDct32Blocks { get; set; } + + public long NumberOfDct32x64Blocks { get; set; } + + public long NumberOfDct64Blocks { get; set; } + + public long NumberOfButteraugliIterations { get; set; } + + public long TotalBits => this.Layers.Sum(x => x.TotalBits); + + public static string GetLayerName(JxlLayerType layer) => layer switch + { + JxlLayerType.Header => "Headers", + JxlLayerType.Toc => "TOC", + JxlLayerType.Dictionary => "Patches", + JxlLayerType.Splines => "Splines", + JxlLayerType.Noise => "Noise", + JxlLayerType.Quant => "Quantizer", + JxlLayerType.ModularTree => "ModularTree", + JxlLayerType.ModularGlobal => "ModularGlobal", + JxlLayerType.Dc => "DC", + JxlLayerType.ModularDcGroup => "ModularDcGroup", + JxlLayerType.ControlFields => "ControlFields", + JxlLayerType.Order => "CoeffOrder", + JxlLayerType.Ac => "ACHistograms", + JxlLayerType.AcTokens => "ACTokens", + JxlLayerType.ModularAcGroup => "ModularAcGroup", + _ => "Invalid", + }; + + public void Assimilate(JxlAuxiliaryOutput victim) + { + for (int i = 0; i < JxlAuxiliaryOutputConstants.NumberOfImageLayers; i++) + { + this.Layers[i].Assimilate(victim.Layers[i]); + } + + this.NumberOfBlocks += victim.NumberOfBlocks; + this.NumberOfSmallBlocks += victim.NumberOfSmallBlocks; + + } +} diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutputConstants.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutputConstants.cs new file mode 100644 index 000000000..1c1b4edd5 --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlAuxiliaryOutputConstants.cs @@ -0,0 +1,9 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Encoder.AuxiliaryOutput; + +internal class JxlAuxiliaryOutputConstants +{ + public const int NumberOfImageLayers = (int)JxlLayerType.ModularAcGroup + 1; +} diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerTotals.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerTotals.cs new file mode 100644 index 000000000..a62785cbd --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerTotals.cs @@ -0,0 +1,22 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Encoder.AuxiliaryOutput; + +internal struct JxlLayerTotals +{ + public int NumberOfClusteredHistograms; + public int ExtraBits; + public int HistogramBits; + public int TotalBits; + public double ClusteredEntropy; + + public void Assimilate(in JxlLayerTotals victim) + { + this.NumberOfClusteredHistograms += victim.NumberOfClusteredHistograms; + this.HistogramBits += victim.HistogramBits; + this.ExtraBits += victim.ExtraBits; + this.TotalBits += victim.TotalBits; + this.ClusteredEntropy += victim.ClusteredEntropy; + } +} diff --git a/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerType.cs b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerType.cs new file mode 100644 index 000000000..5852bd654 --- /dev/null +++ b/src/ImageSharp/Formats/Jxl/Processing/Encoder/AuxiliaryOutput/JxlLayerType.cs @@ -0,0 +1,23 @@ +// Copyright (c) Six Labors. +// Licensed under the Six Labors Split License. + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Encoder.AuxiliaryOutput; + +internal enum JxlLayerType : byte +{ + Header = 0, + Toc, + Dictionary, + Splines, + Noise, + Quant, + ModularTree, + ModularGlobal, + Dc, + ModularDcGroup, + ControlFields, + Order, + Ac, + AcTokens, + ModularAcGroup, +} diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlBlockContextMap.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlBlockContextMap.cs index 92dd8d94d..b47a94987 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlBlockContextMap.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlBlockContextMap.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using System.Runtime.CompilerServices; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlCoefficientOrder.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlCoefficientOrder.cs index 4ee1a9958..deb5045f2 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlCoefficientOrder.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlCoefficientOrder.cs @@ -4,6 +4,7 @@ using System.Runtime.CompilerServices; using SixLabors.ImageSharp.Formats.Jxl.IO.Entropy; using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlConvolve.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlConvolve.cs index 9bf6a7dcb..ebe7f5195 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlConvolve.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlConvolve.cs @@ -6,6 +6,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Intrinsics; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlEntropyCoder.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlEntropyCoder.cs index 1b896638c..b36517e30 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlEntropyCoder.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlEntropyCoder.cs @@ -3,6 +3,7 @@ using SixLabors.ImageSharp.Formats.Jxl.Fields; using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlImageFeatures.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlImageFeatures.cs index 142edd071..63d4025eb 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlImageFeatures.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlImageFeatures.cs @@ -2,6 +2,7 @@ // Licensed under the Six Labors Split License. using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Noise; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlLoopFilter.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlLoopFilter.cs index 2edfeca0c..c7ea5b836 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlLoopFilter.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlLoopFilter.cs @@ -4,6 +4,7 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using SixLabors.ImageSharp.Formats.Jxl.Fields; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlOpsinInverseParameters.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlOpsinInverseParameters.cs index 322bcd1c6..820b11a5b 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlOpsinInverseParameters.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlOpsinInverseParameters.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; + namespace SixLabors.ImageSharp.Formats.Jxl.Processing; internal static class JxlOpsinInverseParameters diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlPassesSharedState.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlPassesSharedState.cs index 880c9e32d..dcc699503 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlPassesSharedState.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlPassesSharedState.cs @@ -6,6 +6,8 @@ using SixLabors.ImageSharp.Formats.Jxl.IO.FrameHeader; using SixLabors.ImageSharp.Formats.Jxl.IO.Metadata; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; namespace SixLabors.ImageSharp.Formats.Jxl.Processing; diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlTranspose.cs b/src/ImageSharp/Formats/Jxl/Processing/JxlTranspose.cs index 4b05150a7..99a3a8c98 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlTranspose.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/JxlTranspose.cs @@ -1,6 +1,8 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. +using SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; + namespace SixLabors.ImageSharp.Formats.Jxl.Processing; /// diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseHelper.cs b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseHelper.cs similarity index 92% rename from src/ImageSharp/Formats/Jxl/Processing/JxlNoiseHelper.cs rename to src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseHelper.cs index f6432e24d..1b6dfa248 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseHelper.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseHelper.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Noise; internal static class JxlNoiseHelper { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseIndexAndFraction.cs b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseIndexAndFraction.cs similarity index 82% rename from src/ImageSharp/Formats/Jxl/Processing/JxlNoiseIndexAndFraction.cs rename to src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseIndexAndFraction.cs index c3ec1437c..fe18886a0 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseIndexAndFraction.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseIndexAndFraction.cs @@ -3,7 +3,7 @@ using System.Runtime.InteropServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Noise; [StructLayout(LayoutKind.Sequential)] internal struct JxlNoiseIndexAndFraction(int index, float fraction) diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseLevel.cs b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseLevel.cs similarity index 83% rename from src/ImageSharp/Formats/Jxl/Processing/JxlNoiseLevel.cs rename to src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseLevel.cs index d5feebd52..836a0e302 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseLevel.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseLevel.cs @@ -3,7 +3,7 @@ using System.Runtime.InteropServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Noise; [StructLayout(LayoutKind.Sequential)] internal struct JxlNoiseLevel(float noiseLevel, float intensity) diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseParameters.cs b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseParameters.cs similarity index 85% rename from src/ImageSharp/Formats/Jxl/Processing/JxlNoiseParameters.cs rename to src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseParameters.cs index 3f51f8537..de8072c3e 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlNoiseParameters.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Noise/JxlNoiseParameters.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Noise; internal sealed class JxlNoiseParameters { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlAspectRatioHelpers.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlAspectRatioHelpers.cs similarity index 93% rename from src/ImageSharp/Formats/Jxl/Processing/JxlAspectRatioHelpers.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlAspectRatioHelpers.cs index 7fcda36c9..6c69a8fff 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlAspectRatioHelpers.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlAspectRatioHelpers.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal static class JxlAspectRatioHelpers { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlBitDepth.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepth.cs similarity index 90% rename from src/ImageSharp/Formats/Jxl/Processing/JxlBitDepth.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepth.cs index 52b384bb9..a0f676522 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlBitDepth.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepth.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Describes the interpretation of the input and output diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlBitDepthType.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepthType.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlBitDepthType.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepthType.cs index e942d57a4..754ac4101 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlBitDepthType.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlBitDepthType.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Specifies the kind of bit depth. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDataType.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlDataType.cs similarity index 90% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDataType.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlDataType.cs index a9c8057e6..8bc0bf691 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDataType.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlDataType.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Specifies which data type to use for sample values diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlInverseMtf.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlInverseMtf.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlInverseMtf.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlInverseMtf.cs index 8016ec51c..18f9a55bd 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlInverseMtf.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlInverseMtf.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Inverse Move to Front implementation diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlLehmerCode.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlLehmerCode.cs similarity index 97% rename from src/ImageSharp/Formats/Jxl/Processing/JxlLehmerCode.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlLehmerCode.cs index 4afbcb34f..2cbd4ea7a 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlLehmerCode.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlLehmerCode.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal static class JxlLehmerCode { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3.cs index a01e2a621..88454e1f6 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3.cs @@ -6,7 +6,7 @@ using System.Runtime.InteropServices; #pragma warning disable IDE0044 // Add readonly modifier #pragma warning disable IDE0051 // Remove unused private members -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal struct JxlMatrix3x3 { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3F.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3F.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3F.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3F.cs index b8620c2dd..2d66df272 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlMatrix3x3F.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlMatrix3x3F.cs @@ -6,7 +6,7 @@ using System.Runtime.InteropServices; #pragma warning disable IDE0044 // Add readonly modifier #pragma warning disable IDE0052 // Remove unread private members -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal struct JxlMatrix3x3F { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlOverride.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverride.cs similarity index 87% rename from src/ImageSharp/Formats/Jxl/Processing/JxlOverride.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverride.cs index ebd84b7b6..c25f35404 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlOverride.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverride.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Represents a boolean which can be overriden to be a default diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlOverrideHelpers.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverrideHelpers.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlOverrideHelpers.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverrideHelpers.cs index 85464a16a..a4e06edc1 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlOverrideHelpers.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlOverrideHelpers.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Override utilities. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlPackSigned.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPackSigned.cs similarity index 93% rename from src/ImageSharp/Formats/Jxl/Processing/JxlPackSigned.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPackSigned.cs index f54b77f1d..a4c2fec41 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlPackSigned.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPackSigned.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Provides PackSigned and UnpackSigned methods. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlPixelFormat.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPixelFormat.cs similarity index 93% rename from src/ImageSharp/Formats/Jxl/Processing/JxlPixelFormat.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPixelFormat.cs index fadb8709f..be00bd3e7 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlPixelFormat.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlPixelFormat.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Data type for the sample values per channel per pixel diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlSpeedTier.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlSpeedTier.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlSpeedTier.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlSpeedTier.cs index 363b4a5e4..8cbc589a1 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlSpeedTier.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlSpeedTier.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; /// /// Defines how quickly or slowly to encode an image. Slower diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSeparable5.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSeparable5.cs similarity index 82% rename from src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSeparable5.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSeparable5.cs index 91258b852..03c16de08 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSeparable5.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSeparable5.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal struct JxlWeightsSeparable5 { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric3.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric3.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric3.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric3.cs index 4d350b3ab..69cdc0395 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric3.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric3.cs @@ -4,7 +4,7 @@ using System.Runtime.CompilerServices; using System.Runtime.Intrinsics; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal sealed class JxlWeightsSymmetric3 { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric5.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric5.cs similarity index 97% rename from src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric5.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric5.cs index 1e2481dbb..df5fa66b7 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlWeightsSymmetric5.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlWeightsSymmetric5.cs @@ -4,7 +4,7 @@ using System.Runtime.CompilerServices; using System.Runtime.Intrinsics; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal sealed class JxlWeightsSymmetric5 { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlXorShift.cs b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlXorShift.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlXorShift.cs rename to src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlXorShift.cs index 78d8900a5..68edb75d5 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlXorShift.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Primitives/JxlXorShift.cs @@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; internal sealed class JxlXorShift { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlDequantMatrices.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlDequantMatrices.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlDequantMatrices.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlDequantMatrices.cs index 15b093541..9649f4420 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlDequantMatrices.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlDequantMatrices.cs @@ -3,8 +3,9 @@ using System.Diagnostics; using System.Runtime.CompilerServices; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Contains matrices used to inverse quantize coefficients. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantMode.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantMode.cs similarity index 94% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantMode.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantMode.cs index 1b974343a..412dd245d 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantMode.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantMode.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Specifies which algorithm should be used to quantize coefficients. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantTable.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantTable.cs similarity index 90% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantTable.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantTable.cs index 5fc8b49a8..dca689b88 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantTable.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantTable.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Specifies which quantization table to use depending on diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantWeights.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantWeights.cs similarity index 99% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantWeights.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantWeights.cs index dfe12b8f3..4986ee7e3 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantWeights.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantWeights.cs @@ -1,7 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; internal static class JxlQuantWeights { diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizer.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizer.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantizer.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizer.cs index 3b7500fd0..1ea7cfcbd 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizer.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizer.cs @@ -6,9 +6,10 @@ using System.Runtime.CompilerServices; using SixLabors.ImageSharp.Formats.Jxl.Fields; using SixLabors.ImageSharp.Formats.Jxl.Memory; using SixLabors.ImageSharp.Formats.Jxl.Memory.ImageTypes; +using SixLabors.ImageSharp.Formats.Jxl.Processing.AcStrategy; using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// The quantizer for DCT DC/AC coefficients. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerConstants.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerConstants.cs similarity index 96% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerConstants.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerConstants.cs index daf28db69..ff6e9c375 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerConstants.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerConstants.cs @@ -1,7 +1,7 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Shared constants used by the quantizer. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerEncoding.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerEncoding.cs similarity index 98% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerEncoding.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerEncoding.cs index 8a12e6dbf..283892392 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerEncoding.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerEncoding.cs @@ -1,7 +1,9 @@ // Copyright (c) Six Labors. // Licensed under the Six Labors Split License. -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; + +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Specifies weights and quantizer modes. diff --git a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerParameters.cs b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerParameters.cs similarity index 95% rename from src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerParameters.cs rename to src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerParameters.cs index 4faa55869..2963d4c32 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/JxlQuantizerParameters.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Quantization/JxlQuantizerParameters.cs @@ -3,7 +3,7 @@ using SixLabors.ImageSharp.Formats.Jxl.Fields; -namespace SixLabors.ImageSharp.Formats.Jxl.Processing; +namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Quantization; /// /// Represents parameters for the JPEG XL quantizer. diff --git a/src/ImageSharp/Formats/Jxl/Processing/Splines/JxlQuantizedSpline.cs b/src/ImageSharp/Formats/Jxl/Processing/Splines/JxlQuantizedSpline.cs index 731c22835..a3901bf40 100644 --- a/src/ImageSharp/Formats/Jxl/Processing/Splines/JxlQuantizedSpline.cs +++ b/src/ImageSharp/Formats/Jxl/Processing/Splines/JxlQuantizedSpline.cs @@ -3,7 +3,9 @@ using System.Buffers; using System.Runtime.CompilerServices; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Dct; using SixLabors.ImageSharp.Formats.Jxl.Processing.Decoder; +using SixLabors.ImageSharp.Formats.Jxl.Processing.Primitives; namespace SixLabors.ImageSharp.Formats.Jxl.Processing.Splines;