Browse Source

Merge fixes

pull/2120/head
Dmitry Pentin 4 years ago
parent
commit
a9c7f4bb3c
  1. 2
      shared-infrastructure
  2. 2
      src/ImageSharp/Formats/Jpeg/Components/Block8x8F.ScaledCopy.cs
  3. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs
  4. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs
  5. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs
  6. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs
  7. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs
  8. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs
  9. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs
  10. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs
  11. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs
  12. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs
  13. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs
  14. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs
  15. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs
  16. 4
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs
  17. 2
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs
  18. 4
      src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs
  19. 3
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs
  20. 3
      src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanDecoder.cs
  21. 2
      src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs
  22. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/Component.cs
  23. 4
      src/ImageSharp/Formats/Jpeg/Components/Encoder/ComponentProcessor.cs
  24. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegComponentConfig.cs
  25. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegFrameConfig.cs
  26. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegHuffmanTableConfig.cs
  27. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegQuantizationTableConfig.cs
  28. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/JpegFrame.cs
  29. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter.cs
  30. 2
      src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs
  31. 11
      src/ImageSharp/Formats/Jpeg/JpegDecoder.cs
  32. 2
      src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs
  33. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs
  34. 2
      src/ImageSharp/Formats/Tiff/Compression/Decompressors/TiffJpegSpectralConverter{TPixel}.cs
  35. 4
      tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressRunner.cs
  36. 15
      tests/ImageSharp.Tests.ProfilingSandbox/Program.cs
  37. 15
      tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Internal.cs
  38. 4
      tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs
  39. 2
      tests/ImageSharp.Tests/Formats/Jpg/SpectralConverterTests.cs

2
shared-infrastructure

@ -1 +1 @@
Subproject commit c0e0353c1ee89398def0ccdc3e945380034fbea8
Subproject commit 59ce17f5a4e1f956811133f41add7638e74c2836

2
src/ImageSharp/Formats/Jpeg/Components/Block8x8F.ScaledCopy.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System.Numerics;
using System.Runtime.CompilerServices;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykAvx.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
#if SUPPORTS_RUNTIME_INTRINSICS
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykScalar.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.CmykVector.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleAvx.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
#if SUPPORTS_RUNTIME_INTRINSICS
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleScalar.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Runtime.CompilerServices;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.GrayScaleVector.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.RgbScalar.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrAvx.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
#if SUPPORTS_RUNTIME_INTRINSICS
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrScalar.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YCbCrVector.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKAvx.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
#if SUPPORTS_RUNTIME_INTRINSICS
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKScalar.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverter.YccKVector.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;

4
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterAvx.cs

@ -26,7 +26,9 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
{
}
public sealed override bool IsAvailable => Avx.IsSupported;
public static bool IsSupported => Avx.IsSupported;
public sealed override bool IsAvailable => IsSupported;
public sealed override int ElementsPerBatch => Vector256<float>.Count;
}

2
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterBase.cs

@ -269,7 +269,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// </summary>
/// <param name="processors">List of component color processors.</param>
/// <param name="row">Row to convert</param>
public ComponentValues(IReadOnlyList<Decoder.JpegComponentPostProcessor> processors, int row)
public ComponentValues(IReadOnlyList<Decoder.ComponentProcessor> processors, int row)
{
DebugGuard.MustBeGreaterThan(processors.Count, 0, nameof(processors));

4
src/ImageSharp/Formats/Jpeg/Components/ColorConverters/JpegColorConverterVector.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;
@ -34,6 +34,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <inheritdoc/>
public sealed override bool IsAvailable => IsSupported;
public override int ElementsPerBatch => Vector<float>.Count;
/// <inheritdoc/>
public sealed override void ConvertToRgbInplace(in ComponentValues values)
{

3
src/ImageSharp/Formats/Jpeg/Components/Decoder/ArithmeticScanDecoder.cs

@ -247,8 +247,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
this.scanBuffer = new JpegBitReader(this.stream);
bool fullScan = this.frame.Progressive || !this.frame.Interleaved;
this.frame.AllocateComponents(fullScan);
this.frame.AllocateComponents();
if (this.frame.Progressive)
{

3
src/ImageSharp/Formats/Jpeg/Components/Decoder/HuffmanScanDecoder.cs

@ -118,8 +118,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
this.scanBuffer = new JpegBitReader(this.stream);
bool fullScan = this.frame.Progressive || !this.frame.Interleaved;
this.frame.AllocateComponents(fullScan);
this.frame.AllocateComponents();
if (!this.frame.Progressive)
{

2
src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegFrame.cs

@ -141,7 +141,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
public void AllocateComponents()
{
bool fullScan = this.Progressive || this.MultiScan;
bool fullScan = this.Progressive || this.Interleaved;
for (int i = 0; i < this.ComponentCount; i++)
{
IJpegComponent component = this.Components[i];

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/Component.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using SixLabors.ImageSharp.Memory;

4
src/ImageSharp/Formats/Jpeg/Components/Encoder/ComponentProcessor.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Numerics;
@ -74,7 +74,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder
workspaceBlock.AddInPlace(-128f);
// FDCT
FastFloatingPointDCT.TransformFDCT(ref workspaceBlock);
FloatingPointDCT.TransformFDCT(ref workspaceBlock);
// Quantize and save to spectral blocks
Block8x8F.Quantize(ref workspaceBlock, ref blockRow[xBlock], ref this.quantTable);

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegComponentConfig.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder
{

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegFrameConfig.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegHuffmanTableConfig.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder
{

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/EncodingConfigs/JpegQuantizationTableConfig.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/JpegFrame.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using SixLabors.ImageSharp.Advanced;

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder
{

2
src/ImageSharp/Formats/Jpeg/Components/Encoder/SpectralConverter{TPixel}.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.Buffers;

11
src/ImageSharp/Formats/Jpeg/JpegDecoder.cs

@ -31,17 +31,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
public Image Decode(Configuration configuration, Stream stream, CancellationToken cancellationToken)
=> this.Decode<Rgb24>(configuration, stream, cancellationToken);
/// <summary>
/// Placeholder summary.
/// </summary>
/// <param name="configuration">Placeholder2</param>
/// <param name="stream">Placeholder3</param>
/// <param name="targetSize">Placeholder4</param>
/// <param name="cancellationToken">Placeholder5</param>
/// <returns>Placeholder6</returns>
internal Image DecodeInto(Configuration configuration, Stream stream, Size targetSize, CancellationToken cancellationToken)
=> this.DecodeInto<Rgb24>(configuration, stream, targetSize, cancellationToken);
/// <summary>
/// Decodes and downscales the image from the specified stream if possible.
/// </summary>

2
src/ImageSharp/Formats/Jpeg/JpegEncoderCore.cs

@ -682,7 +682,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
// apply FDCT multipliers and inject to the destination index
workspaceBlock.LoadFrom(ref scaledTable);
FastFloatingPointDCT.AdjustToFDCT(ref workspaceBlock);
FloatingPointDCT.AdjustToFDCT(ref workspaceBlock);
this.QuantizationTables[config.DestinationIndex] = workspaceBlock;
}

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/RgbJpegSpectralConverter.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;

2
src/ImageSharp/Formats/Tiff/Compression/Decompressors/TiffJpegSpectralConverter{TPixel}.cs

@ -1,8 +1,8 @@
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters;
using SixLabors.ImageSharp.Formats.Tiff.Constants;
using SixLabors.ImageSharp.PixelFormats;

4
tests/ImageSharp.Benchmarks/LoadResizeSave/LoadResizeSaveStressRunner.cs

@ -10,10 +10,12 @@ using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using ImageMagick;
using PhotoSauce.MagicScaler;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests;
using SkiaSharp;
@ -210,7 +212,7 @@ namespace SixLabors.ImageSharp.Benchmarks.LoadResizeSave
// Resize it to fit a 150x150 square
var targetSize = new ImageSharpSize(this.ThumbnailSize, this.ThumbnailSize);
var decoder = new JpegDecoder();
using ImageSharpImage image = decoder.DecodeInto(Configuration.Default, inputStream, targetSize, default);
using ImageSharpImage image = decoder.DecodeInto<Rgb24>(Configuration.Default, inputStream, targetSize, CancellationToken.None);
this.LogImageProcessed(image.Width, image.Height);
image.Mutate(i => i.Resize(new ResizeOptions

15
tests/ImageSharp.Tests.ProfilingSandbox/Program.cs

@ -38,14 +38,15 @@ namespace SixLabors.ImageSharp.Tests.ProfilingSandbox
public static void Main(string[] args)
{
//string imageName = "Calliphora_aligned_size";
string imageName = "Calliphora";
//string imageName = "Calliphora";
string imageName = "1x1";
//string imageName = "bw_check";
//string imageName = "bw_check_color";
//ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio444, 100);
//ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio422, 100);
//ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio420, 100);
//ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio411, 100);
//ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio410, 100);
ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio444, 100);
ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio422, 100);
ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio420, 100);
ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio411, 100);
ReEncodeImage(imageName, JpegEncodingColor.YCbCrRatio410, 100);
//ReEncodeImage(imageName, JpegEncodingColor.Luminance, 100);
//ReEncodeImage(imageName, JpegEncodingColor.Rgb, 100);
//ReEncodeImage(imageName, JpegEncodingColor.Cmyk, 100);
@ -53,7 +54,7 @@ namespace SixLabors.ImageSharp.Tests.ProfilingSandbox
// Encoding q=75 | color=YCbCrRatio444
// Elapsed: 4901ms across 500 iterations
// Average: 9,802ms
BenchmarkEncoder(imageName, 500, 75, JpegEncodingColor.YCbCrRatio444);
//BenchmarkEncoder(imageName, 500, 75, JpegEncodingColor.YCbCrRatio444);
}
private static void BenchmarkEncoder(string fileName, int iterations, int quality, JpegEncodingColor color)

15
tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Internal.cs

@ -1,22 +1,11 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using SixLabors.ImageSharp.IO;
using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.ImageSharp.Tests.TestUtilities;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using SixLabors.ImageSharp.Tests.TestUtilities.ReferenceCodecs;
using Xunit;
using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg

4
tests/ImageSharp.Tests/Formats/Jpg/ReferenceImplementationsTests.FastFloatingPointDCT.cs

@ -13,9 +13,9 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[Trait("Format", "Jpg")]
public partial class ReferenceImplementationsTests
{
public class FastFloatingPointDCT : JpegFixture
public class FloatingPointDCT : JpegFixture
{
public FastFloatingPointDCT(ITestOutputHelper output)
public FloatingPointDCT(ITestOutputHelper output)
: base(output)
{
}

2
tests/ImageSharp.Tests/Formats/Jpg/SpectralConverterTests.cs

@ -1,5 +1,5 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder;
using Xunit;

Loading…
Cancel
Save