Browse Source

Merge branch 'SixLabors:master' into jpeg-decoder-size-fix

pull/1845/head
Dmitry Pentin 4 years ago
committed by GitHub
parent
commit
f7753da088
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 0
      tests/ImageSharp.Benchmarks/Codecs/Bmp/DecodeBmp.cs
  2. 0
      tests/ImageSharp.Benchmarks/Codecs/Bmp/EncodeBmp.cs
  3. 0
      tests/ImageSharp.Benchmarks/Codecs/Bmp/EncodeBmpMultiple.cs
  4. 0
      tests/ImageSharp.Benchmarks/Codecs/Gif/DecodeGif.cs
  5. 0
      tests/ImageSharp.Benchmarks/Codecs/Gif/EncodeGif.cs
  6. 0
      tests/ImageSharp.Benchmarks/Codecs/Gif/EncodeGifMultiple.cs
  7. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/CmykColorConversion.cs
  8. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/ColorConversionBenchmark.cs
  9. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/GrayscaleColorConversion.cs
  10. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/RgbColorConversion.cs
  11. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YCbCrColorConversion.cs
  12. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YCbCrForwardConverterBenchmark.cs
  13. 0
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YccKColorConverter.cs
  14. 81
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg.cs
  15. 0
      tests/ImageSharp.Benchmarks/Codecs/Png/DecodeFilteredPng.cs
  16. 0
      tests/ImageSharp.Benchmarks/Codecs/Png/DecodePng.cs
  17. 0
      tests/ImageSharp.Benchmarks/Codecs/Png/EncodeIndexedPng.cs
  18. 0
      tests/ImageSharp.Benchmarks/Codecs/Png/EncodePng.cs
  19. 0
      tests/ImageSharp.Benchmarks/Codecs/Tga/DecodeTga.cs
  20. 0
      tests/ImageSharp.Benchmarks/Codecs/Tga/EncodeTga.cs
  21. 0
      tests/ImageSharp.Benchmarks/Codecs/Tiff/DecodeTiff.cs
  22. 0
      tests/ImageSharp.Benchmarks/Codecs/Tiff/EncodeTiff.cs
  23. 0
      tests/ImageSharp.Benchmarks/Codecs/Webp/DecodeWebp.cs
  24. 0
      tests/ImageSharp.Benchmarks/Codecs/Webp/EncodeWebp.cs
  25. 2
      tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs
  26. 3
      tests/ImageSharp.Tests/TestImages.cs
  27. 3
      tests/Images/Input/Jpg/baseline/winter444_interleaved.jpg
  28. 0
      tests/Images/Input/Jpg/progressive/winter420_noninterleaved.jpg

0
tests/ImageSharp.Benchmarks/Codecs/DecodeBmp.cs → tests/ImageSharp.Benchmarks/Codecs/Bmp/DecodeBmp.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeBmp.cs → tests/ImageSharp.Benchmarks/Codecs/Bmp/EncodeBmp.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeBmpMultiple.cs → tests/ImageSharp.Benchmarks/Codecs/Bmp/EncodeBmpMultiple.cs

0
tests/ImageSharp.Benchmarks/Codecs/DecodeGif.cs → tests/ImageSharp.Benchmarks/Codecs/Gif/DecodeGif.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeGif.cs → tests/ImageSharp.Benchmarks/Codecs/Gif/EncodeGif.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeGifMultiple.cs → tests/ImageSharp.Benchmarks/Codecs/Gif/EncodeGifMultiple.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/CmykColorConversion.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/CmykColorConversion.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversionBenchmark.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/ColorConversionBenchmark.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/GrayscaleColorConversion.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/GrayscaleColorConversion.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/RgbColorConversion.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/RgbColorConversion.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/YCbCrColorConversion.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YCbCrColorConversion.cs

0
tests/ImageSharp.Benchmarks/Format/Jpeg/Components/Encoder/YCbCrForwardConverterBenchmark.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YCbCrForwardConverterBenchmark.cs

0
tests/ImageSharp.Benchmarks/Codecs/Jpeg/YccKColorConverter.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/ColorConversion/YccKColorConverter.cs

81
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg.cs

@ -0,0 +1,81 @@
// Copyright (c) Six Labors.
// Licensed under the Apache License, Version 2.0.
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Tests;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
public class DecodeJpeg
{
private JpegDecoder decoder;
private MemoryStream preloadedImageStream;
private void GenericSetup(string imageSubpath)
{
this.decoder = new JpegDecoder();
byte[] bytes = File.ReadAllBytes(Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, imageSubpath));
this.preloadedImageStream = new MemoryStream(bytes);
}
private void GenericBechmark()
{
this.preloadedImageStream.Position = 0;
using Image img = this.decoder.Decode(Configuration.Default, this.preloadedImageStream);
}
[GlobalSetup(Target = nameof(JpegBaselineInterleaved444))]
public void SetupBaselineInterleaved444() =>
this.GenericSetup(TestImages.Jpeg.Baseline.Winter444_Interleaved);
[GlobalSetup(Target = nameof(JpegBaselineInterleaved420))]
public void SetupBaselineInterleaved420() =>
this.GenericSetup(TestImages.Jpeg.Baseline.Hiyamugi);
[GlobalSetup(Target = nameof(JpegBaseline400))]
public void SetupBaselineSingleComponent() =>
this.GenericSetup(TestImages.Jpeg.Baseline.Jpeg400);
[GlobalSetup(Target = nameof(JpegProgressiveNonInterleaved420))]
public void SetupProgressiveNoninterleaved420() =>
this.GenericSetup(TestImages.Jpeg.Progressive.Winter420_NonInterleaved);
[GlobalCleanup]
public void Cleanup()
{
this.preloadedImageStream.Dispose();
this.preloadedImageStream = null;
}
[Benchmark(Description = "Baseline 4:4:4 Interleaved")]
public void JpegBaselineInterleaved444() => this.GenericBechmark();
[Benchmark(Description = "Baseline 4:2:0 Interleaved")]
public void JpegBaselineInterleaved420() => this.GenericBechmark();
[Benchmark(Description = "Baseline 4:0:0 (grayscale)")]
public void JpegBaseline400() => this.GenericBechmark();
[Benchmark(Description = "Progressive 4:2:0 Non-Interleaved")]
public void JpegProgressiveNonInterleaved420() => this.GenericBechmark();
}
}
/*
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1288 (20H2/October2020Update)
Intel Core i7-6700K CPU 4.00GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET SDK=6.0.100-preview.3.21202.5
[Host] : .NET Core 3.1.18 (CoreCLR 4.700.21.35901, CoreFX 4.700.21.36305), X64 RyuJIT
DefaultJob : .NET Core 3.1.18 (CoreCLR 4.700.21.35901, CoreFX 4.700.21.36305), X64 RyuJIT
| Method | Mean | Error | StdDev |
|------------------------------------ |----------:|----------:|----------:|
| 'Baseline 4:4:4 Interleaved' | 12.710 ms | 0.1120 ms | 0.0990 ms |
| 'Baseline 4:2:0 Interleaved' | 8.855 ms | 0.1447 ms | 0.1353 ms |
| 'Baseline 4:0:0 (grayscale)' | 1.660 ms | 0.0106 ms | 0.0088 ms |
| 'Progressive 4:2:0 Non-Interleaved' | 14.138 ms | 0.2797 ms | 0.3330 ms |
*/

0
tests/ImageSharp.Benchmarks/Codecs/DecodeFilteredPng.cs → tests/ImageSharp.Benchmarks/Codecs/Png/DecodeFilteredPng.cs

0
tests/ImageSharp.Benchmarks/Codecs/DecodePng.cs → tests/ImageSharp.Benchmarks/Codecs/Png/DecodePng.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeIndexedPng.cs → tests/ImageSharp.Benchmarks/Codecs/Png/EncodeIndexedPng.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodePng.cs → tests/ImageSharp.Benchmarks/Codecs/Png/EncodePng.cs

0
tests/ImageSharp.Benchmarks/Codecs/DecodeTga.cs → tests/ImageSharp.Benchmarks/Codecs/Tga/DecodeTga.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeTga.cs → tests/ImageSharp.Benchmarks/Codecs/Tga/EncodeTga.cs

0
tests/ImageSharp.Benchmarks/Codecs/DecodeTiff.cs → tests/ImageSharp.Benchmarks/Codecs/Tiff/DecodeTiff.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeTiff.cs → tests/ImageSharp.Benchmarks/Codecs/Tiff/EncodeTiff.cs

0
tests/ImageSharp.Benchmarks/Codecs/DecodeWebp.cs → tests/ImageSharp.Benchmarks/Codecs/Webp/DecodeWebp.cs

0
tests/ImageSharp.Benchmarks/Codecs/EncodeWebp.cs → tests/ImageSharp.Benchmarks/Codecs/Webp/EncodeWebp.cs

2
tests/ImageSharp.Tests/Formats/Jpg/JpegDecoderTests.Metadata.cs

@ -56,7 +56,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{ TestImages.Jpeg.Progressive.Fb, 75 },
{ TestImages.Jpeg.Issues.IncorrectQuality845, 98 },
{ TestImages.Jpeg.Baseline.ForestBridgeDifferentComponentsQuality, 89 },
{ TestImages.Jpeg.Progressive.Winter, 80 }
{ TestImages.Jpeg.Progressive.Winter420_NonInterleaved, 80 }
};
[Theory]

3
tests/ImageSharp.Tests/TestImages.cs

@ -163,7 +163,7 @@ namespace SixLabors.ImageSharp.Tests
public const string Fb = "Jpg/progressive/fb.jpg";
public const string Progress = "Jpg/progressive/progress.jpg";
public const string Festzug = "Jpg/progressive/Festzug.jpg";
public const string Winter = "Jpg/progressive/winter.jpg";
public const string Winter420_NonInterleaved = "Jpg/progressive/winter420_noninterleaved.jpg";
public static class Bad
{
@ -213,6 +213,7 @@ namespace SixLabors.ImageSharp.Tests
public const string ArithmeticCoding = "Jpg/baseline/arithmetic_coding.jpg";
public const string ArithmeticCodingProgressive = "Jpg/progressive/arithmetic_progressive.jpg";
public const string Lossless = "Jpg/baseline/lossless.jpg";
public const string Winter444_Interleaved = "Jpg/baseline/winter444_interleaved.jpg";
public static readonly string[] All =
{

3
tests/Images/Input/Jpg/baseline/winter444_interleaved.jpg

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:73b1deb4e2fb8027f6bb4fb293e5b2615c80b3ac0a7f99fd90118fd340a9fd12
size 283330

0
tests/Images/Input/Jpg/progressive/winter.jpg → tests/Images/Input/Jpg/progressive/winter420_noninterleaved.jpg

Loading…
Cancel
Save