From 54105e32391f3d84b07ae98aef4bb1dacd5eef6f Mon Sep 17 00:00:00 2001 From: Dmitry Pentin Date: Sun, 18 Jul 2021 14:38:10 +0300 Subject: [PATCH] Added docs to the metadata properties --- .../Formats/Jpeg/JpegDecoderCore.cs | 4 +- src/ImageSharp/Formats/Jpeg/JpegMetadata.cs | 46 ++++++++++++++----- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs index 613a1117c..8d8ad3dad 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs @@ -831,7 +831,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg case 0: { Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Luminance, out double quality, out double variance); - jpegMetadata.LumaQuality = quality; + jpegMetadata.LuminanceQuality = quality; if (variance <= Quantization.StandardLuminanceTableVarianceThreshold) { jpegMetadata.LumaQuantizationTable = table.RoundAsInt16Block(); @@ -844,7 +844,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg case 1: { Quantization.EstimateQuality(ref table, Quantization.UnscaledQuant_Chrominance, out double quality, out double variance); - jpegMetadata.ChromaQuality = quality; + jpegMetadata.ChrominanceQuality = quality; if (variance <= Quantization.StandardChrominanceTableVarianceThreshold) { jpegMetadata.ChromaQuantizationTable = table.RoundAsInt16Block(); diff --git a/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs b/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs index 51a65d96d..da435fc7e 100644 --- a/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs +++ b/src/ImageSharp/Formats/Jpeg/JpegMetadata.cs @@ -29,8 +29,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg this.LumaQuantizationTable = other.LumaQuantizationTable; this.ChromaQuantizationTable = other.ChromaQuantizationTable; - this.LumaQuality = other.LumaQuality; - this.ChromaQuality = other.ChromaQuality; + this.LuminanceQuality = other.LuminanceQuality; + this.ChrominanceQuality = other.ChrominanceQuality; } /// @@ -49,24 +49,48 @@ namespace SixLabors.ImageSharp.Formats.Jpeg /// internal Block8x8? ChromaQuantizationTable { get; set; } - internal double LumaQuality { get; set; } + /// + /// Gets or sets the jpeg luminance quality. + /// + /// + /// This value might not be accurate if it was calculated during jpeg decoding + /// with non-complient ITU quantization tables. + /// + public double LuminanceQuality { get; set; } - internal double ChromaQuality { get; set; } + /// + /// Gets or sets the jpeg chrominance quality. + /// + /// + /// This value might not be accurate if it was calculated during jpeg decoding + /// with non-complient ITU quantization tables. + /// + public double ChrominanceQuality { get; set; } + + /// + /// Gets a value indicating whether jpeg luminance data was encoded using ITU complient quantization table. + /// + public bool UsesStandardLuminanceTable => !this.LumaQuantizationTable.HasValue; + + /// + /// Gets a value indicating whether jpeg luminance data was encoded using ITU complient quantization table. + /// + public bool UsesStandardChrominanceTable => !this.ChromaQuantizationTable.HasValue; /// /// Gets or sets the encoded quality. /// + [Obsolete("Use LumanQuality and ChromaQuality instead. Quality is now separated for luminance and chrominance data.")] public int Quality { - get => (int)Math.Round(this.LumaQuality); - set => this.LumaQuality = value; + get => (int)Math.Round(this.LuminanceQuality + this.ChrominanceQuality); + set + { + this.LuminanceQuality = value; + this.ChrominanceQuality = value; + } } - /// - /// Gets a value indicating whether jpeg was encoded using ITU section spec K.1 quantization tables - /// - public bool ItuSpecQuantization => !this.LumaQuantizationTable.HasValue && !this.ChromaQuantizationTable.HasValue; - /// /// Gets or sets the encoded quality. ///