Browse Source

Merge branch 'master' into js/assignable-palette-quantizer

pull/741/head
James Jackson-South 8 years ago
parent
commit
df9b734f02
  1. 14
      src/ImageSharp/Common/Helpers/DebugGuard.cs
  2. 2
      src/ImageSharp/Common/Helpers/InliningOptions.cs
  3. 14
      src/ImageSharp/Common/Helpers/SimdUtils.ExtendedIntrinsics.cs
  4. 181
      src/ImageSharp/Formats/Jpeg/Components/Block8x8F.CopyTo.cs
  5. 6
      src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Generated.cs
  6. 6
      src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Generated.tt
  7. 75
      src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs
  8. 21
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.FromGrayScale.cs
  9. 11
      src/ImageSharp/Formats/Jpeg/Components/Decoder/IJpegComponent.cs
  10. 18
      src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegComponent.cs
  11. 14
      src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegComponentPostProcessor.cs
  12. 62
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs
  13. 14
      src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs
  14. 24
      src/ImageSharp/Image.Decode.cs
  15. 23
      src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs
  16. 133
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_CopyTo1x1.cs
  17. 404
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_CopyTo2x2.cs
  18. 6
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_DivideRound.cs
  19. 53
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_LoadFromInt16.cs
  20. 7
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Round.cs
  21. 59
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg.cs
  22. 35
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpegMultiple.cs
  23. 48
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_Aggregate.cs
  24. 119
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_ImageSpecific.cs
  25. 86
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave.cs
  26. 96
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_Aggregate.cs
  27. 107
      tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_ImageSpecific.cs
  28. 32
      tests/ImageSharp.Benchmarks/Codecs/MultiImageBenchmarkBase.cs
  29. 74
      tests/ImageSharp.Benchmarks/Samplers/Resize.cs
  30. 5
      tests/ImageSharp.Sandbox46/Program.cs
  31. 21
      tests/ImageSharp.Tests/Common/SimdUtilsTests.cs
  32. 35
      tests/ImageSharp.Tests/ComplexIntegrationTests.cs
  33. 22
      tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.CopyToBufferArea.cs
  34. 42
      tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs
  35. 7
      tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs
  36. 3
      tests/ImageSharp.Tests/Formats/Jpg/Utils/LibJpegTools.ComponentData.cs
  37. 25
      tests/ImageSharp.Tests/Image/ImageTests.cs
  38. 72
      tests/ImageSharp.Tests/ProfilingBenchmarks/JpegBenchmarks.cs
  39. 44
      tests/ImageSharp.Tests/ProfilingBenchmarks/LoadResizeSaveBenchmarks.cs
  40. 18
      tests/ImageSharp.Tests/ProfilingBenchmarks/ProfilingSetup.cs
  41. 12
      tests/ImageSharp.Tests/TestImages.cs
  42. 11
      tests/ImageSharp.Tests/TestUtilities/TestDataGenerator.cs
  43. 331
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/Calliphora.jpg.txt
  44. 266
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/Floorplan.jpg.txt
  45. 319
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/Hiyamugi.jpg.txt
  46. 683
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/Lake.jpg.txt
  47. 282
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/MultiScanBaselineCMYK.jpg.txt
  48. 683
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/Snake.jpg.txt
  49. 347
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/badeof.jpg.txt
  50. 434
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/badrst.jpg.txt
  51. 435
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/cmyk.jpg.txt
  52. 454
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/exif.jpg.txt
  53. 339
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/gamma_dalai_lama_gray.jpg.txt
  54. 211
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg400jfif.jpg.txt
  55. 412
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg420exif.jpg.txt
  56. 330
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg420small.jpg.txt
  57. 405
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg444.jpg.txt
  58. 338
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/ratio-1x1.jpg.txt
  59. 342
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/testimgint.jpg.txt
  60. 342
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/testorig.jpg.txt
  61. 367
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/turtle.jpg.txt
  62. 640
      tests/Images/Input/Jpg/baseline/JpegSnoopReports/ycck.jpg.txt
  63. 461
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue159-MissingFF00-Progressive-Bedroom.jpg.txt
  64. 520
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue159-MissingFF00-Progressive-Girl.jpg.txt
  65. 471
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue178-BadCoeffsProgressive-Lemon.jpg.txt
  66. 94
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue214-CriticalEOF .jpg.txt
  67. 468
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue385-BadZigZag-Progressive.jpg.txt
  68. 438
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue394-MultiHuffmanBaseline-Speakers.jpg.txt
  69. 406
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue517-No-EOI-Progressive.jpg.txt
  70. 759
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue518-Bad-RST-Progressive.jpg.txt
  71. 364
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue520-InvalidCast.jpg.txt
  72. 284
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue624-DhtHasWrongLength-Progressive-N.jpg.txt
  73. 368
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue694-Decode-Exif-OutOfRange.jpg.txt
  74. 39
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue695-Invalid-EOI.jpg.txt
  75. 377
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue696-Resize-Exif-OutOfRange.jpg.txt
  76. 446
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue721-InvalidAPP0.jpg.txt
  77. 519
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-A.jpg.txt
  78. 477
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-B.jpg.txt
  79. 484
      tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-C.jpg.txt
  80. 772
      tests/Images/Input/Jpg/issues/JpegSnoopReports/issue750-exif-load.jpg.txt
  81. 435
      tests/Images/Input/Jpg/issues/JpegSnoopReports/issue750-exif-tranform.jpg.txt
  82. 452
      tests/Images/Input/Jpg/progressive/JpegSnoopReports/BadEofProgressive.jpg.txt
  83. 535
      tests/Images/Input/Jpg/progressive/JpegSnoopReports/ExifUndefType.jpg.txt
  84. 459
      tests/Images/Input/Jpg/progressive/JpegSnoopReports/Festzug.jpg.txt
  85. 525
      tests/Images/Input/Jpg/progressive/JpegSnoopReports/fb.jpg.txt
  86. 468
      tests/Images/Input/Jpg/progressive/JpegSnoopReports/progress.jpg.txt

14
src/ImageSharp/Common/Helpers/DebugGuard.cs

@ -163,6 +163,20 @@ namespace SixLabors.ImageSharp
} }
} }
/// <summary>
/// Verifies whether a specific condition is met, throwing an exception if it's false.
/// </summary>
/// <param name="target">The condition</param>
/// <param name="message">The error message</param>
[Conditional("DEBUG")]
public static void IsTrue(bool target, string message)
{
if (!target)
{
throw new InvalidOperationException(message);
}
}
/// <summary> /// <summary>
/// Verifies, that the method parameter with specified target value is false /// Verifies, that the method parameter with specified target value is false
/// and throws an exception if it is found to be so. /// and throws an exception if it is found to be so.

2
src/ImageSharp/Common/Helpers/InliningOptions.cs

@ -1,7 +1,7 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// Uncomment this for verbose profiler results: // Uncomment this for verbose profiler results. DO NOT PUSH TO MAIN!
// #define PROFILING // #define PROFILING
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;

14
src/ImageSharp/Common/Helpers/SimdUtils.ExtendedIntrinsics.cs

@ -25,6 +25,20 @@ namespace SixLabors.ImageSharp
false; false;
#endif #endif
/// <summary>
/// Widen and convert a vector of <see cref="short"/> values into 2 vectors of <see cref="float"/>-s.
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static void ConvertToSingle(
Vector<short> source,
out Vector<float> dest1,
out Vector<float> dest2)
{
Vector.Widen(source, out Vector<int> i1, out Vector<int> i2);
dest1 = Vector.ConvertToSingle(i1);
dest2 = Vector.ConvertToSingle(i2);
}
/// <summary> /// <summary>
/// <see cref="BulkConvertByteToNormalizedFloat"/> as many elements as possible, slicing them down (keeping the remainder). /// <see cref="BulkConvertByteToNormalizedFloat"/> as many elements as possible, slicing them down (keeping the remainder).
/// </summary> /// </summary>

181
src/ImageSharp/Formats/Jpeg/Components/Block8x8F.CopyTo.cs

@ -3,64 +3,41 @@
using System.Numerics; using System.Numerics;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
// ReSharper disable UseObjectOrCollectionInitializer
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Formats.Jpeg.Components namespace SixLabors.ImageSharp.Formats.Jpeg.Components
{ {
internal partial struct Block8x8F internal partial struct Block8x8F
{ {
/// <summary> /// <summary>
/// Copy block data into the destination color buffer pixel area with the provided horizontal and vertical. /// Copy block data into the destination color buffer pixel area with the provided horizontal and vertical scale factors.
/// </summary> /// </summary>
[MethodImpl(InliningOptions.ShortMethod)]
public void CopyTo(in BufferArea<float> area, int horizontalScale, int verticalScale) public void CopyTo(in BufferArea<float> area, int horizontalScale, int verticalScale)
{ {
if (horizontalScale == 1 && verticalScale == 1) if (horizontalScale == 1 && verticalScale == 1)
{ {
this.CopyTo(area); this.Copy1x1Scale(area);
return; return;
} }
else if (horizontalScale == 2 && verticalScale == 2)
if (horizontalScale == 2 && verticalScale == 2)
{ {
this.CopyTo2x2(area); this.Copy2x2Scale(area);
return; return;
} }
ref float destBase = ref area.GetReferenceToOrigin(); // TODO: Optimize: implement all cases with scale-specific, loopless code!
this.CopyArbitraryScale(area, horizontalScale, verticalScale);
// TODO: Optimize: implement all the cases with loopless special code! (T4?)
for (int y = 0; y < 8; y++)
{
int yy = y * verticalScale;
int y8 = y * 8;
for (int x = 0; x < 8; x++)
{
int xx = x * horizontalScale;
float value = this[y8 + x];
for (int i = 0; i < verticalScale; i++)
{
int baseIdx = ((yy + i) * area.Stride) + xx;
for (int j = 0; j < horizontalScale; j++)
{
// area[xx + j, yy + i] = value;
Unsafe.Add(ref destBase, baseIdx + j) = value;
}
}
}
}
} }
// [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Copy1x1Scale(in BufferArea<float> destination)
public void CopyTo(in BufferArea<float> area)
{ {
ref byte selfBase = ref Unsafe.As<Block8x8F, byte>(ref this); ref byte selfBase = ref Unsafe.As<Block8x8F, byte>(ref this);
ref byte destBase = ref Unsafe.As<float, byte>(ref area.GetReferenceToOrigin()); ref byte destBase = ref Unsafe.As<float, byte>(ref destination.GetReferenceToOrigin());
int destStride = area.Stride * sizeof(float); int destStride = destination.Stride * sizeof(float);
CopyRowImpl(ref selfBase, ref destBase, destStride, 0); CopyRowImpl(ref selfBase, ref destBase, destStride, 0);
CopyRowImpl(ref selfBase, ref destBase, destStride, 1); CopyRowImpl(ref selfBase, ref destBase, destStride, 1);
@ -80,76 +57,86 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
Unsafe.CopyBlock(ref d, ref s, 8 * sizeof(float)); Unsafe.CopyBlock(ref d, ref s, 8 * sizeof(float));
} }
private void CopyTo2x2(in BufferArea<float> area) private void Copy2x2Scale(in BufferArea<float> area)
{ {
ref float destBase = ref area.GetReferenceToOrigin(); ref Vector2 destBase = ref Unsafe.As<float, Vector2>(ref area.GetReferenceToOrigin());
int destStride = area.Stride; int destStride = area.Stride / 2;
this.WidenCopyImpl2x2(ref destBase, 0, destStride); this.WidenCopyRowImpl2x2(ref destBase, 0, destStride);
this.WidenCopyImpl2x2(ref destBase, 1, destStride); this.WidenCopyRowImpl2x2(ref destBase, 1, destStride);
this.WidenCopyImpl2x2(ref destBase, 2, destStride); this.WidenCopyRowImpl2x2(ref destBase, 2, destStride);
this.WidenCopyImpl2x2(ref destBase, 3, destStride); this.WidenCopyRowImpl2x2(ref destBase, 3, destStride);
this.WidenCopyImpl2x2(ref destBase, 4, destStride); this.WidenCopyRowImpl2x2(ref destBase, 4, destStride);
this.WidenCopyImpl2x2(ref destBase, 5, destStride); this.WidenCopyRowImpl2x2(ref destBase, 5, destStride);
this.WidenCopyImpl2x2(ref destBase, 6, destStride); this.WidenCopyRowImpl2x2(ref destBase, 6, destStride);
this.WidenCopyImpl2x2(ref destBase, 7, destStride); this.WidenCopyRowImpl2x2(ref destBase, 7, destStride);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void WidenCopyImpl2x2(ref float destBase, int row, int destStride) private void WidenCopyRowImpl2x2(ref Vector2 destBase, int row, int destStride)
{ {
ref Vector4 selfLeft = ref Unsafe.Add(ref this.V0L, 2 * row); ref Vector4 sLeft = ref Unsafe.Add(ref this.V0L, 2 * row);
ref Vector4 selfRight = ref Unsafe.Add(ref selfLeft, 1); ref Vector4 sRight = ref Unsafe.Add(ref sLeft, 1);
ref float destLocalOrigo = ref Unsafe.Add(ref destBase, row * 2 * destStride);
int offset = 2 * row * destStride;
Unsafe.Add(ref destLocalOrigo, 0) = selfLeft.X; ref Vector4 dTopLeft = ref Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref destBase, offset));
Unsafe.Add(ref destLocalOrigo, 1) = selfLeft.X; ref Vector4 dBottomLeft = ref Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref destBase, offset + destStride));
Unsafe.Add(ref destLocalOrigo, 2) = selfLeft.Y;
Unsafe.Add(ref destLocalOrigo, 3) = selfLeft.Y; var xyLeft = new Vector4(sLeft.X);
Unsafe.Add(ref destLocalOrigo, 4) = selfLeft.Z; xyLeft.Z = sLeft.Y;
Unsafe.Add(ref destLocalOrigo, 5) = selfLeft.Z; xyLeft.W = sLeft.Y;
Unsafe.Add(ref destLocalOrigo, 6) = selfLeft.W;
Unsafe.Add(ref destLocalOrigo, 7) = selfLeft.W; var zwLeft = new Vector4(sLeft.Z);
zwLeft.Z = sLeft.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 0) = selfRight.X; zwLeft.W = sLeft.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 1) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 2) = selfRight.Y; var xyRight = new Vector4(sRight.X);
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 3) = selfRight.Y; xyRight.Z = sRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 4) = selfRight.Z; xyRight.W = sRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 5) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 6) = selfRight.W; var zwRight = new Vector4(sRight.Z);
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 7) = selfRight.W; zwRight.Z = sRight.W;
zwRight.W = sRight.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 0) = selfLeft.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 1) = selfLeft.X; dTopLeft = xyLeft;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 2) = selfLeft.Y; Unsafe.Add(ref dTopLeft, 1) = zwLeft;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 3) = selfLeft.Y; Unsafe.Add(ref dTopLeft, 2) = xyRight;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 4) = selfLeft.Z; Unsafe.Add(ref dTopLeft, 3) = zwRight;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 5) = selfLeft.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 6) = selfLeft.W; dBottomLeft = xyLeft;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 7) = selfLeft.W; Unsafe.Add(ref dBottomLeft, 1) = zwLeft;
Unsafe.Add(ref dBottomLeft, 2) = xyRight;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 0) = selfRight.X; Unsafe.Add(ref dBottomLeft, 3) = zwRight;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 1) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 2) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 3) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 4) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 5) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 6) = selfRight.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 7) = selfRight.W;
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ColdPath)]
private static void WidenCopyImpl(ref Vector4 s, ref float destBase) private void CopyArbitraryScale(BufferArea<float> area, int horizontalScale, int verticalScale)
{ {
Unsafe.Add(ref destBase, 0) = s.X; ref float destBase = ref area.GetReferenceToOrigin();
Unsafe.Add(ref destBase, 1) = s.X;
Unsafe.Add(ref destBase, 2) = s.Y; for (int y = 0; y < 8; y++)
Unsafe.Add(ref destBase, 3) = s.Y; {
Unsafe.Add(ref destBase, 4) = s.Z; int yy = y * verticalScale;
Unsafe.Add(ref destBase, 5) = s.Z; int y8 = y * 8;
Unsafe.Add(ref destBase, 6) = s.W;
Unsafe.Add(ref destBase, 7) = s.W; for (int x = 0; x < 8; x++)
{
int xx = x * horizontalScale;
float value = this[y8 + x];
for (int i = 0; i < verticalScale; i++)
{
int baseIdx = ((yy + i) * area.Stride) + xx;
for (int j = 0; j < horizontalScale; j++)
{
// area[xx + j, yy + i] = value;
Unsafe.Add(ref destBase, baseIdx + j) = value;
}
}
}
}
} }
} }
} }

6
src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Generated.cs

@ -17,7 +17,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Transpose the block into the destination block. /// Transpose the block into the destination block.
/// </summary> /// </summary>
/// <param name="d">The destination block</param> /// <param name="d">The destination block</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void TransposeInto(ref Block8x8F d) public void TransposeInto(ref Block8x8F d)
{ {
d.V0L.X = V0L.X; d.V0L.X = V0L.X;
@ -119,7 +119,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// AVX2-only variant for executing <see cref="NormalizeColorsInplace"/> and <see cref="RoundInplace"/> in one step. /// AVX2-only variant for executing <see cref="NormalizeColorsInplace"/> and <see cref="RoundInplace"/> in one step.
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void NormalizeColorsAndRoundInplaceAvx2() public void NormalizeColorsAndRoundInplaceAvx2()
{ {
Vector<float> off = new Vector<float>(128f); Vector<float> off = new Vector<float>(128f);
@ -154,7 +154,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// Fill the block from 'source' doing short -> float conversion. /// Fill the block from 'source' doing short -> float conversion.
/// </summary> /// </summary>
public void LoadFrom(ref Block8x8 source) public void LoadFromInt16Scalar(ref Block8x8 source)
{ {
ref short selfRef = ref Unsafe.As<Block8x8, short>(ref source); ref short selfRef = ref Unsafe.As<Block8x8, short>(ref source);

6
src/ImageSharp/Formats/Jpeg/Components/Block8x8F.Generated.tt

@ -30,7 +30,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Transpose the block into the destination block. /// Transpose the block into the destination block.
/// </summary> /// </summary>
/// <param name="d">The destination block</param> /// <param name="d">The destination block</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void TransposeInto(ref Block8x8F d) public void TransposeInto(ref Block8x8F d)
{ {
<# <#
@ -82,7 +82,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// AVX2-only variant for executing <see cref="NormalizeColorsInplace"/> and <see cref="RoundInplace"/> in one step. /// AVX2-only variant for executing <see cref="NormalizeColorsInplace"/> and <see cref="RoundInplace"/> in one step.
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void NormalizeColorsAndRoundInplaceAvx2() public void NormalizeColorsAndRoundInplaceAvx2()
{ {
Vector<float> off = new Vector<float>(128f); Vector<float> off = new Vector<float>(128f);
@ -104,7 +104,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// Fill the block from 'source' doing short -> float conversion. /// Fill the block from 'source' doing short -> float conversion.
/// </summary> /// </summary>
public void LoadFrom(ref Block8x8 source) public void LoadFromInt16Scalar(ref Block8x8 source)
{ {
ref short selfRef = ref Unsafe.As<Block8x8, short>(ref source); ref short selfRef = ref Unsafe.As<Block8x8, short>(ref source);

75
src/ImageSharp/Formats/Jpeg/Components/Block8x8F.cs

@ -57,7 +57,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <returns>The float value at the specified index</returns> /// <returns>The float value at the specified index</returns>
public float this[int idx] public float this[int idx]
{ {
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
get get
{ {
GuardBlockIndex(idx); GuardBlockIndex(idx);
@ -65,7 +65,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
return Unsafe.Add(ref selfRef, idx); return Unsafe.Add(ref selfRef, idx);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
set set
{ {
GuardBlockIndex(idx); GuardBlockIndex(idx);
@ -149,7 +149,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// Fill the block with defaults (zeroes) /// Fill the block with defaults (zeroes)
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void Clear() public void Clear()
{ {
// The cheapest way to do this in C#: // The cheapest way to do this in C#:
@ -160,7 +160,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Load raw 32bit floating point data from source /// Load raw 32bit floating point data from source
/// </summary> /// </summary>
/// <param name="source">Source</param> /// <param name="source">Source</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void LoadFrom(Span<float> source) public void LoadFrom(Span<float> source)
{ {
ref byte s = ref Unsafe.As<float, byte>(ref MemoryMarshal.GetReference(source)); ref byte s = ref Unsafe.As<float, byte>(ref MemoryMarshal.GetReference(source));
@ -174,7 +174,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// </summary> /// </summary>
/// <param name="blockPtr">Block pointer</param> /// <param name="blockPtr">Block pointer</param>
/// <param name="source">Source</param> /// <param name="source">Source</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public static unsafe void LoadFrom(Block8x8F* blockPtr, Span<float> source) public static unsafe void LoadFrom(Block8x8F* blockPtr, Span<float> source)
{ {
blockPtr->LoadFrom(source); blockPtr->LoadFrom(source);
@ -200,7 +200,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Copy raw 32bit floating point data to dest /// Copy raw 32bit floating point data to dest
/// </summary> /// </summary>
/// <param name="dest">Destination</param> /// <param name="dest">Destination</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void CopyTo(Span<float> dest) public void CopyTo(Span<float> dest)
{ {
ref byte d = ref Unsafe.As<float, byte>(ref MemoryMarshal.GetReference(dest)); ref byte d = ref Unsafe.As<float, byte>(ref MemoryMarshal.GetReference(dest));
@ -214,7 +214,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// </summary> /// </summary>
/// <param name="blockPtr">Pointer to block</param> /// <param name="blockPtr">Pointer to block</param>
/// <param name="dest">Destination</param> /// <param name="dest">Destination</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public static unsafe void CopyTo(Block8x8F* blockPtr, Span<byte> dest) public static unsafe void CopyTo(Block8x8F* blockPtr, Span<byte> dest)
{ {
float* fPtr = (float*)blockPtr; float* fPtr = (float*)blockPtr;
@ -230,7 +230,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// </summary> /// </summary>
/// <param name="blockPtr">Block pointer</param> /// <param name="blockPtr">Block pointer</param>
/// <param name="dest">Destination</param> /// <param name="dest">Destination</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public static unsafe void CopyTo(Block8x8F* blockPtr, Span<float> dest) public static unsafe void CopyTo(Block8x8F* blockPtr, Span<float> dest)
{ {
blockPtr->CopyTo(dest); blockPtr->CopyTo(dest);
@ -240,7 +240,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Copy raw 32bit floating point data to dest /// Copy raw 32bit floating point data to dest
/// </summary> /// </summary>
/// <param name="dest">Destination</param> /// <param name="dest">Destination</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public unsafe void CopyTo(float[] dest) public unsafe void CopyTo(float[] dest)
{ {
fixed (void* ptr = &this.V0L) fixed (void* ptr = &this.V0L)
@ -276,7 +276,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Multiply all elements of the block. /// Multiply all elements of the block.
/// </summary> /// </summary>
/// <param name="value">The value to multiply by</param> /// <param name="value">The value to multiply by</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void MultiplyInplace(float value) public void MultiplyInplace(float value)
{ {
this.V0L *= value; this.V0L *= value;
@ -300,7 +300,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// <summary> /// <summary>
/// Multiply all elements of the block by the corresponding elements of 'other' /// Multiply all elements of the block by the corresponding elements of 'other'
/// </summary> /// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void MultiplyInplace(ref Block8x8F other) public void MultiplyInplace(ref Block8x8F other)
{ {
this.V0L *= other.V0L; this.V0L *= other.V0L;
@ -325,7 +325,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
/// Adds a vector to all elements of the block. /// Adds a vector to all elements of the block.
/// </summary> /// </summary>
/// <param name="diff">The added vector</param> /// <param name="diff">The added vector</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
public void AddToAllInplace(Vector4 diff) public void AddToAllInplace(Vector4 diff)
{ {
this.V0L += diff; this.V0L += diff;
@ -420,7 +420,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
} }
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private static void DivideRoundAll(ref Block8x8F a, ref Block8x8F b) private static void DivideRoundAll(ref Block8x8F a, ref Block8x8F b)
{ {
a.V0L = DivideRound(a.V0L, b.V0L); a.V0L = DivideRound(a.V0L, b.V0L);
@ -493,6 +493,51 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
} }
} }
[MethodImpl(InliningOptions.ShortMethod)]
public void LoadFrom(ref Block8x8 source)
{
#if SUPPORTS_EXTENDED_INTRINSICS
if (SimdUtils.IsAvx2CompatibleArchitecture)
{
this.LoadFromInt16ExtendedAvx2(ref source);
return;
}
#endif
this.LoadFromInt16Scalar(ref source);
}
/// <summary>
/// Loads values from <paramref name="source"/> using extended AVX2 intrinsics.
/// </summary>
/// <param name="source">The source <see cref="Block8x8"/></param>
public void LoadFromInt16ExtendedAvx2(ref Block8x8 source)
{
DebugGuard.IsTrue(
SimdUtils.IsAvx2CompatibleArchitecture,
"LoadFromUInt16ExtendedAvx2 only works on AVX2 compatible architecture!");
ref Vector<short> sRef = ref Unsafe.As<Block8x8, Vector<short>>(ref source);
ref Vector<float> dRef = ref Unsafe.As<Block8x8F, Vector<float>>(ref this);
// Vector<ushort>.Count == 16 on AVX2
// We can process 2 block rows in a single step
SimdUtils.ExtendedIntrinsics.ConvertToSingle(sRef, out Vector<float> top, out Vector<float> bottom);
dRef = top;
Unsafe.Add(ref dRef, 1) = bottom;
SimdUtils.ExtendedIntrinsics.ConvertToSingle(Unsafe.Add(ref sRef, 1), out top, out bottom);
Unsafe.Add(ref dRef, 2) = top;
Unsafe.Add(ref dRef, 3) = bottom;
SimdUtils.ExtendedIntrinsics.ConvertToSingle(Unsafe.Add(ref sRef, 2), out top, out bottom);
Unsafe.Add(ref dRef, 4) = top;
Unsafe.Add(ref dRef, 5) = bottom;
SimdUtils.ExtendedIntrinsics.ConvertToSingle(Unsafe.Add(ref sRef, 3), out top, out bottom);
Unsafe.Add(ref dRef, 6) = top;
Unsafe.Add(ref dRef, 7) = bottom;
}
/// <inheritdoc /> /// <inheritdoc />
public override string ToString() public override string ToString()
{ {
@ -511,7 +556,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
return sb.ToString(); return sb.ToString();
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private static Vector<float> NormalizeAndRound(Vector<float> row, Vector<float> off, Vector<float> max) private static Vector<float> NormalizeAndRound(Vector<float> row, Vector<float> off, Vector<float> max)
{ {
row += off; row += off;
@ -520,7 +565,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components
return row.FastRound(); return row.FastRound();
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private static Vector4 DivideRound(Vector4 dividend, Vector4 divisor) private static Vector4 DivideRound(Vector4 dividend, Vector4 divisor)
{ {
// sign(dividend) = max(min(dividend, 1), -1) // sign(dividend) = max(min(dividend, 1), -1)

21
src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverter.FromGrayScale.cs

@ -3,6 +3,8 @@
using System; using System;
using System.Numerics; using System.Numerics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
{ {
@ -17,24 +19,17 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
public override void ConvertToRgba(in ComponentValues values, Span<Vector4> result) public override void ConvertToRgba(in ComponentValues values, Span<Vector4> result)
{ {
// TODO: We can optimize a lot here with Vector<float> and SRCS.Unsafe()!
ReadOnlySpan<float> yVals = values.Component0;
var v = new Vector4(0, 0, 0, 1);
var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F); var scale = new Vector4(1 / 255F, 1 / 255F, 1 / 255F, 1F);
ref float sBase = ref MemoryMarshal.GetReference(values.Component0);
ref Vector4 dBase = ref MemoryMarshal.GetReference(result);
for (int i = 0; i < result.Length; i++) for (int i = 0; i < result.Length; i++)
{ {
float y = yVals[i]; var v = new Vector4(Unsafe.Add(ref sBase, i));
v.W = 1f;
v.X = y;
v.Y = y;
v.Z = y;
v *= scale; v *= scale;
Unsafe.Add(ref dBase, i) = v;
result[i] = v;
} }
} }
} }

11
src/ImageSharp/Formats/Jpeg/Components/Decoder/IJpegComponent.cs

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.Memory;
using SixLabors.Primitives; using SixLabors.Primitives;
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
@ -43,16 +42,8 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
/// <summary> /// <summary>
/// Gets the <see cref="Buffer2D{Block8x8}"/> storing the "raw" frequency-domain decoded + unzigged blocks. /// Gets the <see cref="Buffer2D{Block8x8}"/> storing the "raw" frequency-domain decoded + unzigged blocks.
/// We need to apply IDCT and dequantiazition to transform them into color-space blocks. /// We need to apply IDCT and dequantization to transform them into color-space blocks.
/// </summary> /// </summary>
Buffer2D<Block8x8> SpectralBlocks { get; } Buffer2D<Block8x8> SpectralBlocks { get; }
/// <summary>
/// Gets a reference to the <see cref="Block8x8"/> at the given row and column index from <see cref="SpectralBlocks"/>
/// </summary>
/// <param name="column">The column</param>
/// <param name="row">The row</param>
/// <returns>The <see cref="Block8x8"/></returns>
ref Block8x8 GetBlockReference(int column, int row);
} }
} }

18
src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegComponent.cs

@ -128,21 +128,11 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
this.SubSamplingDivisors = c0.SamplingFactors.DivideBy(this.SamplingFactors); this.SubSamplingDivisors = c0.SamplingFactors.DivideBy(this.SamplingFactors);
} }
this.SpectralBlocks = this.memoryAllocator.Allocate2D<Block8x8>(blocksPerColumnForMcu, blocksPerLineForMcu + 1, AllocationOptions.Clean); int totalNumberOfBlocks = blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
} int width = this.WidthInBlocks + 1;
int height = totalNumberOfBlocks / width;
[MethodImpl(MethodImplOptions.AggressiveInlining)] this.SpectralBlocks = this.memoryAllocator.Allocate2D<Block8x8>(width, height, AllocationOptions.Clean);
public ref Block8x8 GetBlockReference(int column, int row)
{
int offset = ((this.WidthInBlocks + 1) * row) + column;
return ref Unsafe.Add(ref MemoryMarshal.GetReference(this.SpectralBlocks.GetSpan()), offset);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ref short GetBlockDataReference(int column, int row)
{
ref Block8x8 blockRef = ref this.GetBlockReference(column, row);
return ref Unsafe.As<Block8x8, short>(ref blockRef);
} }
} }
} }

14
src/ImageSharp/Formats/Jpeg/Components/Decoder/JpegComponentPostProcessor.cs

@ -2,6 +2,8 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System; using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.Memory; using SixLabors.Memory;
@ -88,12 +90,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
int yBuffer = y * this.blockAreaSize.Height; int yBuffer = y * this.blockAreaSize.Height;
for (int x = 0; x < this.SizeInBlocks.Width; x++) Span<Block8x8> blockRow = this.Component.SpectralBlocks.GetRowSpan(yBlock);
{
int xBlock = x; ref Block8x8 blockRowBase = ref MemoryMarshal.GetReference(blockRow);
int xBuffer = x * this.blockAreaSize.Width;
ref Block8x8 block = ref this.Component.GetBlockReference(xBlock, yBlock); for (int xBlock = 0; xBlock < this.SizeInBlocks.Width; xBlock++)
{
ref Block8x8 block = ref Unsafe.Add(ref blockRowBase, xBlock);
int xBuffer = xBlock * this.blockAreaSize.Width;
BufferArea<float> destArea = this.ColorBuffer.GetArea( BufferArea<float> destArea = this.ColorBuffer.GetArea(
xBuffer, xBuffer,

62
src/ImageSharp/Formats/Jpeg/Components/Decoder/ScanDecoder.cs

@ -1,8 +1,10 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using System;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using SixLabors.ImageSharp.IO; using SixLabors.ImageSharp.IO;
using SixLabors.ImageSharp.Memory;
namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
{ {
@ -142,7 +144,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
} }
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private static uint LRot(uint x, int y) => (x << y) | (x >> (32 - y)); private static uint LRot(uint x, int y) => (x << y) | (x >> (32 - y));
private void ParseBaselineData() private void ParseBaselineData()
@ -179,10 +181,14 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
int h = component.HorizontalSamplingFactor; int h = component.HorizontalSamplingFactor;
int v = component.VerticalSamplingFactor; int v = component.VerticalSamplingFactor;
int mcuRow = mcu / mcusPerLine;
// Scan out an mcu's worth of this component; that's just determined // Scan out an mcu's worth of this component; that's just determined
// by the basic H and V specified for the component // by the basic H and V specified for the component
for (int y = 0; y < v; y++) for (int y = 0; y < v; y++)
{ {
int blockRow = (mcuRow * v) + y;
Span<Block8x8> blockSpan = component.SpectralBlocks.GetRowSpan(blockRow);
for (int x = 0; x < h; x++) for (int x = 0; x < h; x++)
{ {
if (this.eof) if (this.eof)
@ -190,15 +196,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
return; return;
} }
int mcuRow = mcu / mcusPerLine;
int mcuCol = mcu % mcusPerLine; int mcuCol = mcu % mcusPerLine;
int blockRow = (mcuRow * v) + y;
int blockCol = (mcuCol * h) + x; int blockCol = (mcuCol * h) + x;
this.DecodeBlockBaseline( this.DecodeBlockBaseline(
component, component,
blockRow, ref blockSpan[blockCol],
blockCol,
ref dcHuffmanTable, ref dcHuffmanTable,
ref acHuffmanTable, ref acHuffmanTable,
ref fastACRef); ref fastACRef);
@ -236,6 +239,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
int mcu = 0; int mcu = 0;
for (int j = 0; j < h; j++) for (int j = 0; j < h; j++)
{ {
// TODO: Isn't blockRow == j actually?
int blockRow = mcu / w;
Span<Block8x8> blockSpan = component.SpectralBlocks.GetRowSpan(blockRow);
for (int i = 0; i < w; i++) for (int i = 0; i < w; i++)
{ {
if (this.eof) if (this.eof)
@ -243,13 +250,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
return; return;
} }
int blockRow = mcu / w; // TODO: Isn't blockCol == i actually?
int blockCol = mcu % w; int blockCol = mcu % w;
this.DecodeBlockBaseline( this.DecodeBlockBaseline(
component, component,
blockRow, ref blockSpan[blockCol],
blockCol,
ref dcHuffmanTable, ref dcHuffmanTable,
ref acHuffmanTable, ref acHuffmanTable,
ref fastACRef); ref fastACRef);
@ -299,6 +305,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
// by the basic H and V specified for the component // by the basic H and V specified for the component
for (int y = 0; y < v; y++) for (int y = 0; y < v; y++)
{ {
int mcuRow = mcu / mcusPerLine;
int blockRow = (mcuRow * v) + y;
Span<Block8x8> blockSpan = component.SpectralBlocks.GetRowSpan(blockRow);
for (int x = 0; x < h; x++) for (int x = 0; x < h; x++)
{ {
if (this.eof) if (this.eof)
@ -306,15 +316,12 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
return; return;
} }
int mcuRow = mcu / mcusPerLine;
int mcuCol = mcu % mcusPerLine; int mcuCol = mcu % mcusPerLine;
int blockRow = (mcuRow * v) + y;
int blockCol = (mcuCol * h) + x; int blockCol = (mcuCol * h) + x;
this.DecodeBlockProgressiveDC( this.DecodeBlockProgressiveDC(
component, component,
blockRow, ref blockSpan[blockCol],
blockCol,
ref dcHuffmanTable); ref dcHuffmanTable);
} }
} }
@ -351,6 +358,10 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
int mcu = 0; int mcu = 0;
for (int j = 0; j < h; j++) for (int j = 0; j < h; j++)
{ {
// TODO: isn't blockRow == j actually?
int blockRow = mcu / w;
Span<Block8x8> blockSpan = component.SpectralBlocks.GetRowSpan(blockRow);
for (int i = 0; i < w; i++) for (int i = 0; i < w; i++)
{ {
if (this.eof) if (this.eof)
@ -358,23 +369,22 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
return; return;
} }
int blockRow = mcu / w; // TODO: isn't blockCol == i actually?
int blockCol = mcu % w; int blockCol = mcu % w;
ref Block8x8 block = ref blockSpan[blockCol];
if (this.spectralStart == 0) if (this.spectralStart == 0)
{ {
this.DecodeBlockProgressiveDC( this.DecodeBlockProgressiveDC(
component, component,
blockRow, ref block,
blockCol,
ref dcHuffmanTable); ref dcHuffmanTable);
} }
else else
{ {
this.DecodeBlockProgressiveAC( this.DecodeBlockProgressiveAC(
component, ref block,
blockRow,
blockCol,
ref acHuffmanTable, ref acHuffmanTable,
ref fastACRef); ref fastACRef);
} }
@ -391,8 +401,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
private void DecodeBlockBaseline( private void DecodeBlockBaseline(
JpegComponent component, JpegComponent component,
int row, ref Block8x8 block,
int col,
ref HuffmanTable dcTable, ref HuffmanTable dcTable,
ref HuffmanTable acTable, ref HuffmanTable acTable,
ref short fastACRef) ref short fastACRef)
@ -405,7 +414,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
JpegThrowHelper.ThrowBadHuffmanCode(); JpegThrowHelper.ThrowBadHuffmanCode();
} }
ref short blockDataRef = ref component.GetBlockDataReference(col, row); ref short blockDataRef = ref Unsafe.As<Block8x8, short>(ref block);
int diff = t != 0 ? this.ExtendReceive(t) : 0; int diff = t != 0 ? this.ExtendReceive(t) : 0;
int dc = component.DcPredictor + diff; int dc = component.DcPredictor + diff;
@ -470,8 +479,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
private void DecodeBlockProgressiveDC( private void DecodeBlockProgressiveDC(
JpegComponent component, JpegComponent component,
int row, ref Block8x8 block,
int col,
ref HuffmanTable dcTable) ref HuffmanTable dcTable)
{ {
if (this.spectralEnd != 0) if (this.spectralEnd != 0)
@ -481,7 +489,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
this.CheckBits(); this.CheckBits();
ref short blockDataRef = ref component.GetBlockDataReference(col, row); ref short blockDataRef = ref Unsafe.As<Block8x8, short>(ref block);
if (this.successiveHigh == 0) if (this.successiveHigh == 0)
{ {
@ -505,9 +513,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
} }
private void DecodeBlockProgressiveAC( private void DecodeBlockProgressiveAC(
JpegComponent component, ref Block8x8 block,
int row,
int col,
ref HuffmanTable acTable, ref HuffmanTable acTable,
ref short fastACRef) ref short fastACRef)
{ {
@ -516,7 +522,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder
JpegThrowHelper.ThrowImageFormatException("Can't merge DC and AC."); JpegThrowHelper.ThrowImageFormatException("Can't merge DC and AC.");
} }
ref short blockDataRef = ref component.GetBlockDataReference(col, row); ref short blockDataRef = ref Unsafe.As<Block8x8, short>(ref block);
if (this.successiveHigh == 0) if (this.successiveHigh == 0)
{ {

14
src/ImageSharp/Formats/Jpeg/JpegDecoderCore.cs

@ -913,7 +913,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
/// <param name="index">The table index</param> /// <param name="index">The table index</param>
/// <param name="codeLengths">The codelengths</param> /// <param name="codeLengths">The codelengths</param>
/// <param name="values">The values</param> /// <param name="values">The values</param>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private void BuildHuffmanTable(HuffmanTables tables, int index, ReadOnlySpan<byte> codeLengths, ReadOnlySpan<byte> values) private void BuildHuffmanTable(HuffmanTables tables, int index, ReadOnlySpan<byte> codeLengths, ReadOnlySpan<byte> values)
=> tables[index] = new HuffmanTable(this.configuration.MemoryAllocator, codeLengths, values); => tables[index] = new HuffmanTable(this.configuration.MemoryAllocator, codeLengths, values);
@ -921,7 +921,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
/// Reads a <see cref="ushort"/> from the stream advancing it by two bytes /// Reads a <see cref="ushort"/> from the stream advancing it by two bytes
/// </summary> /// </summary>
/// <returns>The <see cref="ushort"/></returns> /// <returns>The <see cref="ushort"/></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(InliningOptions.ShortMethod)]
private ushort ReadUint16() private ushort ReadUint16()
{ {
this.InputStream.Read(this.markerBuffer, 0, 2); this.InputStream.Read(this.markerBuffer, 0, 2);
@ -936,12 +936,18 @@ namespace SixLabors.ImageSharp.Formats.Jpeg
private Image<TPixel> PostProcessIntoImage<TPixel>() private Image<TPixel> PostProcessIntoImage<TPixel>()
where TPixel : struct, IPixel<TPixel> where TPixel : struct, IPixel<TPixel>
{ {
var image = Image.CreateUninitialized<TPixel>(
this.configuration,
this.ImageWidth,
this.ImageHeight,
this.MetaData);
using (var postProcessor = new JpegImagePostProcessor(this.configuration, this)) using (var postProcessor = new JpegImagePostProcessor(this.configuration, this))
{ {
var image = new Image<TPixel>(this.configuration, this.ImageWidth, this.ImageHeight, this.MetaData);
postProcessor.PostProcess(image.Frames.RootFrame); postProcessor.PostProcess(image.Frames.RootFrame);
return image;
} }
return image;
} }
} }
} }

24
src/ImageSharp/Image.Decode.cs

@ -5,6 +5,7 @@ using System.IO;
using System.Linq; using System.Linq;
using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.MetaData;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.Memory; using SixLabors.Memory;
@ -15,6 +16,29 @@ namespace SixLabors.ImageSharp
/// </content> /// </content>
public static partial class Image public static partial class Image
{ {
/// <summary>
/// Creates an <see cref="Image{TPixel}"/> instance backed by an uninitialized memory buffer.
/// This is an optimized creation method intended to be used by decoders.
/// The image might be filled with memory garbage.
/// </summary>
/// <typeparam name="TPixel">The pixel type</typeparam>
/// <param name="configuration">The <see cref="Configuration"/></param>
/// <param name="width">The width of the image</param>
/// <param name="height">The height of the image</param>
/// <param name="metadata">The <see cref="ImageMetaData"/></param>
/// <returns>The result <see cref="Image{TPixel}"/></returns>
internal static Image<TPixel> CreateUninitialized<TPixel>(
Configuration configuration,
int width,
int height,
ImageMetaData metadata)
where TPixel : struct, IPixel<TPixel>
{
Buffer2D<TPixel> uninitializedMemoryBuffer =
configuration.MemoryAllocator.Allocate2D<TPixel>(width, height);
return new Image<TPixel>(configuration, uninitializedMemoryBuffer.MemorySource, width, height, metadata);
}
/// <summary> /// <summary>
/// By reading the header on the provided stream this calculates the images format. /// By reading the header on the provided stream this calculates the images format.
/// </summary> /// </summary>

23
src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs

@ -124,7 +124,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Exif
private byte ConvertToByte(ReadOnlySpan<byte> buffer) => buffer[0]; private byte ConvertToByte(ReadOnlySpan<byte> buffer) => buffer[0];
private unsafe string ConvertToString(ReadOnlySpan<byte> buffer) private string ConvertToString(ReadOnlySpan<byte> buffer)
{ {
int nullCharIndex = buffer.IndexOf((byte)0); int nullCharIndex = buffer.IndexOf((byte)0);
@ -382,13 +382,13 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Exif
this.invalidTags.Add(tag); this.invalidTags.Add(tag);
} }
[MethodImpl(InliningOptions.ShortMethod)]
private TEnum ToEnum<TEnum>(int value, TEnum defaultValue) private TEnum ToEnum<TEnum>(int value, TEnum defaultValue)
where TEnum : struct where TEnum : struct
{ {
var enumValue = (TEnum)(object)value; if (EnumHelper<TEnum>.IsDefined(value))
if (Enum.GetValues(typeof(TEnum)).Cast<TEnum>().Any(v => v.Equals(enumValue)))
{ {
return enumValue; return Unsafe.As<int, TEnum>(ref value);
} }
return defaultValue; return defaultValue;
@ -557,5 +557,18 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Exif
? BinaryPrimitives.ReadInt16BigEndian(buffer) ? BinaryPrimitives.ReadInt16BigEndian(buffer)
: BinaryPrimitives.ReadInt16LittleEndian(buffer); : BinaryPrimitives.ReadInt16LittleEndian(buffer);
} }
private class EnumHelper<TEnum>
where TEnum : struct
{
private static readonly int[] Values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>()
.Select(e => Convert.ToInt32(e)).OrderBy(e => e).ToArray();
[MethodImpl(InliningOptions.ShortMethod)]
public static bool IsDefined(int value)
{
return Array.BinarySearch(Values, value) >= 0;
}
}
} }
} }

133
tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_CopyTo1x1.cs

@ -0,0 +1,133 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Memory;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations
{
public class Block8x8F_CopyTo1x1
{
private Block8x8F block;
private Buffer2D<float> buffer;
private BufferArea<float> destArea;
[GlobalSetup]
public void Setup()
{
if (!SimdUtils.IsAvx2CompatibleArchitecture)
{
throw new InvalidOperationException("Benchmark Block8x8F_CopyTo1x1 is invalid on platforms without AVX2 support.");
}
this.buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(1000, 500);
this.destArea = this.buffer.GetArea(200, 100, 64, 64);
}
[Benchmark(Baseline = true)]
public void Original()
{
ref byte selfBase = ref Unsafe.As<Block8x8F, byte>(ref this.block);
ref byte destBase = ref Unsafe.As<float, byte>(ref this.destArea.GetReferenceToOrigin());
int destStride = this.destArea.Stride * sizeof(float);
CopyRowImpl(ref selfBase, ref destBase, destStride, 0);
CopyRowImpl(ref selfBase, ref destBase, destStride, 1);
CopyRowImpl(ref selfBase, ref destBase, destStride, 2);
CopyRowImpl(ref selfBase, ref destBase, destStride, 3);
CopyRowImpl(ref selfBase, ref destBase, destStride, 4);
CopyRowImpl(ref selfBase, ref destBase, destStride, 5);
CopyRowImpl(ref selfBase, ref destBase, destStride, 6);
CopyRowImpl(ref selfBase, ref destBase, destStride, 7);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void CopyRowImpl(ref byte selfBase, ref byte destBase, int destStride, int row)
{
ref byte s = ref Unsafe.Add(ref selfBase, row * 8 * sizeof(float));
ref byte d = ref Unsafe.Add(ref destBase, row * destStride);
Unsafe.CopyBlock(ref d, ref s, 8 * sizeof(float));
}
[Benchmark]
public void UseVector8()
{
ref Block8x8F s = ref this.block;
ref float origin = ref this.destArea.GetReferenceToOrigin();
int stride = this.destArea.Stride;
ref Vector<float> d0 = ref Unsafe.As<float, Vector<float>>(ref origin);
ref Vector<float> d1 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride));
ref Vector<float> d2 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 2));
ref Vector<float> d3 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 3));
ref Vector<float> d4 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 4));
ref Vector<float> d5 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 5));
ref Vector<float> d6 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 6));
ref Vector<float> d7 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 7));
Vector<float> row0 = Unsafe.As<Vector4, Vector<float>>(ref s.V0L);
Vector<float> row1 = Unsafe.As<Vector4, Vector<float>>(ref s.V1L);
Vector<float> row2 = Unsafe.As<Vector4, Vector<float>>(ref s.V2L);
Vector<float> row3 = Unsafe.As<Vector4, Vector<float>>(ref s.V3L);
Vector<float> row4 = Unsafe.As<Vector4, Vector<float>>(ref s.V4L);
Vector<float> row5 = Unsafe.As<Vector4, Vector<float>>(ref s.V5L);
Vector<float> row6 = Unsafe.As<Vector4, Vector<float>>(ref s.V6L);
Vector<float> row7 = Unsafe.As<Vector4, Vector<float>>(ref s.V7L);
d0 = row0;
d1 = row1;
d2 = row2;
d3 = row3;
d4 = row4;
d5 = row5;
d6 = row6;
d7 = row7;
}
[Benchmark]
public void UseVector8_V2()
{
ref Block8x8F s = ref this.block;
ref float origin = ref this.destArea.GetReferenceToOrigin();
int stride = this.destArea.Stride;
ref Vector<float> d0 = ref Unsafe.As<float, Vector<float>>(ref origin);
ref Vector<float> d1 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride));
ref Vector<float> d2 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 2));
ref Vector<float> d3 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 3));
ref Vector<float> d4 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 4));
ref Vector<float> d5 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 5));
ref Vector<float> d6 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 6));
ref Vector<float> d7 = ref Unsafe.As<float, Vector<float>>(ref Unsafe.Add(ref origin, stride * 7));
d0 = Unsafe.As<Vector4, Vector<float>>(ref s.V0L);
d1 = Unsafe.As<Vector4, Vector<float>>(ref s.V1L);
d2 = Unsafe.As<Vector4, Vector<float>>(ref s.V2L);
d3 = Unsafe.As<Vector4, Vector<float>>(ref s.V3L);
d4 = Unsafe.As<Vector4, Vector<float>>(ref s.V4L);
d5 = Unsafe.As<Vector4, Vector<float>>(ref s.V5L);
d6 = Unsafe.As<Vector4, Vector<float>>(ref s.V6L);
d7 = Unsafe.As<Vector4, Vector<float>>(ref s.V7L);
}
// RESULTS:
//
// Method | Mean | Error | StdDev | Scaled |
// -------------- |---------:|----------:|----------:|-------:|
// Original | 22.53 ns | 0.1660 ns | 0.1553 ns | 1.00 |
// UseVector8 | 21.59 ns | 0.3079 ns | 0.2571 ns | 0.96 |
// UseVector8_V2 | 22.57 ns | 0.1699 ns | 0.1506 ns | 1.00 |
//
// Conclusion:
// Doesn't worth to bother with this
}
}

404
tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_CopyTo2x2.cs

@ -0,0 +1,404 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Numerics;
using System.Runtime.CompilerServices;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Memory;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations
{
public class Block8x8F_CopyTo2x2
{
private Block8x8F block;
private Buffer2D<float> buffer;
private BufferArea<float> destArea;
[GlobalSetup]
public void Setup()
{
this.buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(1000, 500);
this.destArea = this.buffer.GetArea(200, 100, 128, 128);
}
[Benchmark(Baseline = true)]
public void Original()
{
ref float destBase = ref this.destArea.GetReferenceToOrigin();
int destStride = this.destArea.Stride;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2(ref Block8x8F src, ref float destBase, int row, int destStride)
{
ref Vector4 selfLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 selfRight = ref Unsafe.Add(ref selfLeft, 1);
ref float destLocalOrigo = ref Unsafe.Add(ref destBase, row * 2 * destStride);
Unsafe.Add(ref destLocalOrigo, 0) = selfLeft.X;
Unsafe.Add(ref destLocalOrigo, 1) = selfLeft.X;
Unsafe.Add(ref destLocalOrigo, 2) = selfLeft.Y;
Unsafe.Add(ref destLocalOrigo, 3) = selfLeft.Y;
Unsafe.Add(ref destLocalOrigo, 4) = selfLeft.Z;
Unsafe.Add(ref destLocalOrigo, 5) = selfLeft.Z;
Unsafe.Add(ref destLocalOrigo, 6) = selfLeft.W;
Unsafe.Add(ref destLocalOrigo, 7) = selfLeft.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 0) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 1) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 2) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 3) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 4) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 5) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 6) = selfRight.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, 8), 7) = selfRight.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 0) = selfLeft.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 1) = selfLeft.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 2) = selfLeft.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 3) = selfLeft.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 4) = selfLeft.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 5) = selfLeft.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 6) = selfLeft.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride), 7) = selfLeft.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 0) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 1) = selfRight.X;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 2) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 3) = selfRight.Y;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 4) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 5) = selfRight.Z;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 6) = selfRight.W;
Unsafe.Add(ref Unsafe.Add(ref destLocalOrigo, destStride + 8), 7) = selfRight.W;
}
[Benchmark]
public void Original_V2()
{
ref float destBase = ref this.destArea.GetReferenceToOrigin();
int destStride = this.destArea.Stride;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2_V2(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2_V2(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2_V2(ref Block8x8F src, ref float destBase, int row, int destStride)
{
ref Vector4 selfLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 selfRight = ref Unsafe.Add(ref selfLeft, 1);
ref float dest0 = ref Unsafe.Add(ref destBase, row * 2 * destStride);
Unsafe.Add(ref dest0, 0) = selfLeft.X;
Unsafe.Add(ref dest0, 1) = selfLeft.X;
Unsafe.Add(ref dest0, 2) = selfLeft.Y;
Unsafe.Add(ref dest0, 3) = selfLeft.Y;
Unsafe.Add(ref dest0, 4) = selfLeft.Z;
Unsafe.Add(ref dest0, 5) = selfLeft.Z;
Unsafe.Add(ref dest0, 6) = selfLeft.W;
Unsafe.Add(ref dest0, 7) = selfLeft.W;
ref float dest1 = ref Unsafe.Add(ref dest0, 8);
Unsafe.Add(ref dest1, 0) = selfRight.X;
Unsafe.Add(ref dest1, 1) = selfRight.X;
Unsafe.Add(ref dest1, 2) = selfRight.Y;
Unsafe.Add(ref dest1, 3) = selfRight.Y;
Unsafe.Add(ref dest1, 4) = selfRight.Z;
Unsafe.Add(ref dest1, 5) = selfRight.Z;
Unsafe.Add(ref dest1, 6) = selfRight.W;
Unsafe.Add(ref dest1, 7) = selfRight.W;
ref float dest2 = ref Unsafe.Add(ref dest0, destStride);
Unsafe.Add(ref dest2, 0) = selfLeft.X;
Unsafe.Add(ref dest2, 1) = selfLeft.X;
Unsafe.Add(ref dest2, 2) = selfLeft.Y;
Unsafe.Add(ref dest2, 3) = selfLeft.Y;
Unsafe.Add(ref dest2, 4) = selfLeft.Z;
Unsafe.Add(ref dest2, 5) = selfLeft.Z;
Unsafe.Add(ref dest2, 6) = selfLeft.W;
Unsafe.Add(ref dest2, 7) = selfLeft.W;
ref float dest3 = ref Unsafe.Add(ref dest2, 8);
Unsafe.Add(ref dest3, 0) = selfRight.X;
Unsafe.Add(ref dest3, 1) = selfRight.X;
Unsafe.Add(ref dest3, 2) = selfRight.Y;
Unsafe.Add(ref dest3, 3) = selfRight.Y;
Unsafe.Add(ref dest3, 4) = selfRight.Z;
Unsafe.Add(ref dest3, 5) = selfRight.Z;
Unsafe.Add(ref dest3, 6) = selfRight.W;
Unsafe.Add(ref dest3, 7) = selfRight.W;
}
[Benchmark]
public void UseVector2()
{
ref Vector2 destBase = ref Unsafe.As<float, Vector2>(ref this.destArea.GetReferenceToOrigin());
int destStride = this.destArea.Stride / 2;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2_Vector2(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2_Vector2(ref Block8x8F src, ref Vector2 destBase, int row, int destStride)
{
ref Vector4 sLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 sRight = ref Unsafe.Add(ref sLeft, 1);
ref Vector2 dTopLeft = ref Unsafe.Add(ref destBase, 2 * row * destStride);
ref Vector2 dTopRight = ref Unsafe.Add(ref dTopLeft, 4);
ref Vector2 dBottomLeft = ref Unsafe.Add(ref dTopLeft, destStride);
ref Vector2 dBottomRight = ref Unsafe.Add(ref dBottomLeft, 4);
var xLeft = new Vector2(sLeft.X);
var yLeft = new Vector2(sLeft.Y);
var zLeft = new Vector2(sLeft.Z);
var wLeft = new Vector2(sLeft.W);
var xRight = new Vector2(sRight.X);
var yRight = new Vector2(sRight.Y);
var zRight = new Vector2(sRight.Z);
var wRight = new Vector2(sRight.W);
dTopLeft = xLeft;
Unsafe.Add(ref dTopLeft, 1) = yLeft;
Unsafe.Add(ref dTopLeft, 2) = zLeft;
Unsafe.Add(ref dTopLeft, 3) = wLeft;
dTopRight = xRight;
Unsafe.Add(ref dTopRight, 1) = yRight;
Unsafe.Add(ref dTopRight, 2) = zRight;
Unsafe.Add(ref dTopRight, 3) = wRight;
dBottomLeft = xLeft;
Unsafe.Add(ref dBottomLeft, 1) = yLeft;
Unsafe.Add(ref dBottomLeft, 2) = zLeft;
Unsafe.Add(ref dBottomLeft, 3) = wLeft;
dBottomRight = xRight;
Unsafe.Add(ref dBottomRight, 1) = yRight;
Unsafe.Add(ref dBottomRight, 2) = zRight;
Unsafe.Add(ref dBottomRight, 3) = wRight;
}
[Benchmark]
public void UseVector4()
{
ref Vector2 destBase = ref Unsafe.As<float, Vector2>(ref this.destArea.GetReferenceToOrigin());
int destStride = this.destArea.Stride / 2;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2_Vector4(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2_Vector4(ref Block8x8F src, ref Vector2 destBase, int row, int destStride)
{
ref Vector4 sLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 sRight = ref Unsafe.Add(ref sLeft, 1);
ref Vector2 dTopLeft = ref Unsafe.Add(ref destBase, 2 * row * destStride);
ref Vector2 dTopRight = ref Unsafe.Add(ref dTopLeft, 4);
ref Vector2 dBottomLeft = ref Unsafe.Add(ref dTopLeft, destStride);
ref Vector2 dBottomRight = ref Unsafe.Add(ref dBottomLeft, 4);
var xLeft = new Vector4(sLeft.X);
var yLeft = new Vector4(sLeft.Y);
var zLeft = new Vector4(sLeft.Z);
var wLeft = new Vector4(sLeft.W);
var xRight = new Vector4(sRight.X);
var yRight = new Vector4(sRight.Y);
var zRight = new Vector4(sRight.Z);
var wRight = new Vector4(sRight.W);
Unsafe.As<Vector2, Vector4>(ref dTopLeft) = xLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 1)) = yLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 2)) = zLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 3)) = wLeft;
Unsafe.As<Vector2, Vector4>(ref dTopRight) = xRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopRight, 1)) = yRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopRight, 2)) = zRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopRight, 3)) = wRight;
Unsafe.As<Vector2, Vector4>(ref dBottomLeft) = xLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 1)) = yLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 2)) = zLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 3)) = wLeft;
Unsafe.As<Vector2, Vector4>(ref dBottomRight) = xRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomRight, 1)) = yRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomRight, 2)) = zRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomRight, 3)) = wRight;
}
[Benchmark]
public void UseVector4_SafeRightCorner()
{
ref Vector2 destBase = ref Unsafe.As<float, Vector2>(ref this.destArea.GetReferenceToOrigin());
int destStride = this.destArea.Stride / 2;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2_Vector4_SafeRightCorner(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2_Vector4_SafeRightCorner(ref Block8x8F src, ref Vector2 destBase, int row, int destStride)
{
ref Vector4 sLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 sRight = ref Unsafe.Add(ref sLeft, 1);
ref Vector2 dTopLeft = ref Unsafe.Add(ref destBase, 2 * row * destStride);
ref Vector2 dBottomLeft = ref Unsafe.Add(ref dTopLeft, destStride);
var xLeft = new Vector4(sLeft.X);
var yLeft = new Vector4(sLeft.Y);
var zLeft = new Vector4(sLeft.Z);
var wLeft = new Vector4(sLeft.W);
var xRight = new Vector4(sRight.X);
var yRight = new Vector4(sRight.Y);
var zRight = new Vector4(sRight.Z);
var wRight = new Vector2(sRight.W);
Unsafe.As<Vector2, Vector4>(ref dTopLeft) = xLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 1)) = yLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 2)) = zLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 3)) = wLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 4)) = xRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 5)) = yRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dTopLeft, 6)) = zRight;
Unsafe.Add(ref dTopLeft, 7) = wRight;
Unsafe.As<Vector2, Vector4>(ref dBottomLeft) = xLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 1)) = yLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 2)) = zLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 3)) = wLeft;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 4)) = xRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 5)) = yRight;
Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref dBottomLeft, 6)) = zRight;
Unsafe.Add(ref dBottomLeft, 7) = wRight;
}
[Benchmark]
public void UseVector4_V2()
{
ref Vector2 destBase = ref Unsafe.As<float, Vector2>(ref this.destArea.GetReferenceToOrigin());
int destStride = this.destArea.Stride / 2;
ref Block8x8F src = ref this.block;
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 0, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 1, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 2, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 3, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 4, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 5, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 6, destStride);
WidenCopyImpl2x2_Vector4_V2(ref src, ref destBase, 7, destStride);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static void WidenCopyImpl2x2_Vector4_V2(ref Block8x8F src, ref Vector2 destBase, int row, int destStride)
{
ref Vector4 sLeft = ref Unsafe.Add(ref src.V0L, 2 * row);
ref Vector4 sRight = ref Unsafe.Add(ref sLeft, 1);
int offset = 2 * row * destStride;
ref Vector4 dTopLeft = ref Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref destBase, offset));
ref Vector4 dBottomLeft = ref Unsafe.As<Vector2, Vector4>(ref Unsafe.Add(ref destBase, offset + destStride));
var xyLeft = new Vector4(sLeft.X);
xyLeft.Z = sLeft.Y;
xyLeft.W = sLeft.Y;
var zwLeft = new Vector4(sLeft.Z);
zwLeft.Z = sLeft.W;
zwLeft.W = sLeft.W;
var xyRight = new Vector4(sRight.X);
xyRight.Z = sRight.Y;
xyRight.W = sRight.Y;
var zwRight = new Vector4(sRight.Z);
zwRight.Z = sRight.W;
zwRight.W = sRight.W;
dTopLeft = xyLeft;
Unsafe.Add(ref dTopLeft, 1) = zwLeft;
Unsafe.Add(ref dTopLeft, 2) = xyRight;
Unsafe.Add(ref dTopLeft, 3) = zwRight;
dBottomLeft = xyLeft;
Unsafe.Add(ref dBottomLeft, 1) = zwLeft;
Unsafe.Add(ref dBottomLeft, 2) = xyRight;
Unsafe.Add(ref dBottomLeft, 3) = zwRight;
}
// RESULTS:
// Method | Mean | Error | StdDev | Scaled | ScaledSD |
// --------------------------- |---------:|----------:|----------:|-------:|---------:|
// Original | 92.69 ns | 2.4722 ns | 2.7479 ns | 1.00 | 0.00 |
// Original_V2 | 91.72 ns | 1.2089 ns | 1.0095 ns | 0.99 | 0.03 |
// UseVector2 | 86.70 ns | 0.5873 ns | 0.5206 ns | 0.94 | 0.03 |
// UseVector4 | 55.42 ns | 0.2482 ns | 0.2322 ns | 0.60 | 0.02 |
// UseVector4_SafeRightCorner | 58.97 ns | 0.4152 ns | 0.3884 ns | 0.64 | 0.02 |
// UseVector4_V2 | 41.88 ns | 0.3531 ns | 0.3303 ns | 0.45 | 0.01 |
}
}

6
tests/ImageSharp.Benchmarks/General/Block8x8F_DivideRound.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_DivideRound.cs

@ -10,7 +10,7 @@ using SixLabors.ImageSharp.Formats.Jpeg.Components;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.General namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations
{ {
/// <summary> /// <summary>
/// The goal of this benchmark is to measure the following Jpeg-related scenario: /// The goal of this benchmark is to measure the following Jpeg-related scenario:
@ -24,8 +24,8 @@ namespace SixLabors.ImageSharp.Benchmarks.General
private static readonly Vector4 MinusOne = new Vector4(-1); private static readonly Vector4 MinusOne = new Vector4(-1);
private static readonly Vector4 Half = new Vector4(0.5f); private static readonly Vector4 Half = new Vector4(0.5f);
private Block8x8F inputDividend = default(Block8x8F); private Block8x8F inputDividend;
private Block8x8F inputDivisior = default(Block8x8F); private Block8x8F inputDivisior;
[GlobalSetup] [GlobalSetup]
public void Setup() public void Setup()

53
tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_LoadFromInt16.cs

@ -0,0 +1,53 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
// ReSharper disable InconsistentNaming
using System;
using System.Numerics;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations
{
public class Block8x8F_LoadFromInt16
{
private Block8x8 source;
private Block8x8F dest = default;
[GlobalSetup]
public void Setup()
{
if (Vector<float>.Count != 8)
{
throw new NotSupportedException("Vector<float>.Count != 8");
}
for (short i = 0; i < Block8x8F.Size; i++)
{
this.source[i] = i;
}
}
[Benchmark(Baseline = true)]
public void Scalar()
{
this.dest.LoadFromInt16Scalar(ref this.source);
}
[Benchmark]
public void ExtendedAvx2()
{
this.dest.LoadFromInt16ExtendedAvx2(ref this.source);
}
// RESULT:
// Method | Mean | Error | StdDev | Scaled |
// ------------- |---------:|----------:|----------:|-------:|
// Scalar | 34.88 ns | 0.3296 ns | 0.3083 ns | 1.00 |
// ExtendedAvx2 | 21.58 ns | 0.2125 ns | 0.1884 ns | 0.62 |
}
}

7
tests/ImageSharp.Benchmarks/General/Block8x8F_Round.cs → tests/ImageSharp.Benchmarks/Codecs/Jpeg/BlockOperations/Block8x8F_Round.cs

@ -1,4 +1,7 @@
// ReSharper disable InconsistentNaming // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
// ReSharper disable InconsistentNaming
using System; using System;
using System.Numerics; using System.Numerics;
@ -8,7 +11,7 @@ using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
namespace SixLabors.ImageSharp.Benchmarks.General namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg.BlockOperations
{ {
public class Block8x8F_Round public class Block8x8F_Round
{ {

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

@ -1,59 +0,0 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Drawing;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests;
using CoreSize = SixLabors.Primitives.Size;
using SDImage = System.Drawing.Image;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(Config.ShortClr))]
public class DecodeJpeg : BenchmarkBase
{
private byte[] jpegBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(TestImages.Jpeg.Baseline.Jpeg420Exif, TestImages.Jpeg.Baseline.Calliphora)]
public string TestImage { get; set; }
[GlobalSetup]
public void ReadImages()
{
if (this.jpegBytes == null)
{
this.jpegBytes = File.ReadAllBytes(this.TestImageFullPath);
}
}
[Benchmark(Baseline = true, Description = "Decode Jpeg - System.Drawing")]
public Size JpegSystemDrawing()
{
using (var memoryStream = new MemoryStream(this.jpegBytes))
{
using (var image = SDImage.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "Decode Jpeg - ImageSharp")]
public CoreSize JpegImageSharp()
{
using (var memoryStream = new MemoryStream(this.jpegBytes))
{
using (var image = Image.Load<Rgba32>(memoryStream, new JpegDecoder()))
{
return new CoreSize(image.Width, image.Height);
}
}
}
}
}

35
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpegMultiple.cs

@ -1,35 +0,0 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Collections.Generic;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SDImage = System.Drawing.Image;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(Config.ShortClr))]
public class DecodeJpegMultiple : MultiImageBenchmarkBase
{
protected override IEnumerable<string> InputImageSubfoldersOrFiles => new[]
{
"Jpg/baseline",
"Jpg/progressive",
};
protected override IEnumerable<string> SearchPatterns => new[] { "*.jpg" };
[Benchmark(Description = "DecodeJpegMultiple - ImageSharp")]
public void DecodeJpegImageSharp()
{
this.ForEachStream(ms => Image.Load<Rgba32>(ms, new JpegDecoder()));
}
[Benchmark(Baseline = true, Description = "DecodeJpegMultiple - System.Drawing")]
public void DecodeJpegSystemDrawing()
{
this.ForEachStream(SDImage.FromStream);
}
}
}

48
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_Aggregate.cs

@ -0,0 +1,48 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Collections.Generic;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests;
using SDImage = System.Drawing.Image;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
/// <summary>
/// An expensive Jpeg benchmark, running on a wide range of input images, showing aggregate results.
/// </summary>
[Config(typeof(MultiImageBenchmarkBase.Config))]
public class DecodeJpeg_Aggregate : MultiImageBenchmarkBase
{
protected override IEnumerable<string> InputImageSubfoldersOrFiles =>
new[]
{
TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
};
[Params(InputImageCategory.AllImages)]
public override InputImageCategory InputCategory { get; set; }
[Benchmark]
public void ImageSharp()
{
this.ForEachStream(ms => Image.Load<Rgba32>(ms, new JpegDecoder()));
}
[Benchmark(Baseline = true)]
public void SystemDrawing()
{
this.ForEachStream(SDImage.FromStream);
}
}
}

119
tests/ImageSharp.Benchmarks/Codecs/Jpeg/DecodeJpeg_ImageSpecific.cs

@ -0,0 +1,119 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Drawing;
using System.IO;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests;
using CoreSize = SixLabors.Primitives.Size;
using SDImage = System.Drawing.Image;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
/// <summary>
/// Image-specific Jpeg benchmarks
/// </summary>
[Config(typeof(Config.ShortClr))]
public class DecodeJpeg_ImageSpecific
{
public class Config : ManualConfig
{
public Config()
{
// Uncomment if you want to use any of the diagnoser
this.Add(new BenchmarkDotNet.Diagnosers.MemoryDiagnoser());
}
public class ShortClr : Benchmarks.Config
{
public ShortClr()
{
this.Add(
//Job.Clr.WithLaunchCount(1).WithWarmupCount(2).WithTargetCount(3),
Job.Core.WithLaunchCount(1).WithWarmupCount(2).WithTargetCount(3)
);
}
}
}
private byte[] jpegBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.BadRstProgressive518_Large444YCbCr,
// The scaled result for the large image "ExifGetString750Transform_Huge420YCbCr"
// is almost the same as the result for Jpeg420Exif,
// which proves that the execution time for the most common YCbCr 420 path scales linearly.
//
// TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr
)]
public string TestImage { get; set; }
[GlobalSetup]
public void ReadImages()
{
if (this.jpegBytes == null)
{
this.jpegBytes = File.ReadAllBytes(this.TestImageFullPath);
}
}
[Benchmark(Baseline = true, Description = "Decode Jpeg - System.Drawing")]
public Size JpegSystemDrawing()
{
using (var memoryStream = new MemoryStream(this.jpegBytes))
{
using (var image = SDImage.FromStream(memoryStream))
{
return image.Size;
}
}
}
[Benchmark(Description = "Decode Jpeg - ImageSharp")]
public CoreSize JpegImageSharp()
{
using (var memoryStream = new MemoryStream(this.jpegBytes))
{
using (var image = Image.Load<Rgba32>(memoryStream, new JpegDecoder(){ IgnoreMetadata = true}))
{
return new CoreSize(image.Width, image.Height);
}
}
}
// RESULTS (2018 November 4):
//
// BenchmarkDotNet=v0.10.14, OS=Windows 10.0.17134
// Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
// Frequency=2742191 Hz, Resolution=364.6719 ns, Timer=TSC
// .NET Core SDK=2.1.403
// [Host] : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
//
// Method | TestImage | Mean | Error | StdDev | Scaled | ScaledSD | Gen 0 | Gen 1 | Gen 2 | Allocated |
// ------------------------------- |-------------------------------------------- |-----------:|-----------:|----------:|-------:|---------:|----------:|---------:|---------:|------------:|
// 'Decode Jpeg - System.Drawing' | Jpg/baseline/Lake.jpg | 6.117 ms | 0.3923 ms | 0.0222 ms | 1.00 | 0.00 | 62.5000 | - | - | 205.83 KB |
// 'Decode Jpeg - ImageSharp' | Jpg/baseline/Lake.jpg | 18.126 ms | 0.6023 ms | 0.0340 ms | 2.96 | 0.01 | - | - | - | 19.97 KB |
// | | | | | | | | | | |
// 'Decode Jpeg - System.Drawing' | Jpg/baseline/jpeg420exif.jpg | 17.063 ms | 2.6096 ms | 0.1474 ms | 1.00 | 0.00 | 218.7500 | - | - | 757.04 KB |
// 'Decode Jpeg - ImageSharp' | Jpg/baseline/jpeg420exif.jpg | 41.366 ms | 1.0115 ms | 0.0572 ms | 2.42 | 0.02 | - | - | - | 21.94 KB |
// | | | | | | | | | | |
// 'Decode Jpeg - System.Drawing' | Jpg/issues/Issue518-Bad-RST-Progressive.jpg | 428.282 ms | 94.9163 ms | 5.3629 ms | 1.00 | 0.00 | 2375.0000 | - | - | 7403.76 KB |
// 'Decode Jpeg - ImageSharp' | Jpg/issues/Issue518-Bad-RST-Progressive.jpg | 386.698 ms | 33.0065 ms | 1.8649 ms | 0.90 | 0.01 | 125.0000 | 125.0000 | 125.0000 | 35186.97 KB |
// | | | | | | | | | | |
// 'Decode Jpeg - System.Drawing' | Jpg/issues/issue750-exif-tranform.jpg | 95.192 ms | 3.1762 ms | 0.1795 ms | 1.00 | 0.00 | 1750.0000 | - | - | 5492.63 KB |
// 'Decode Jpeg - ImageSharp' | Jpg/issues/issue750-exif-tranform.jpg | 230.158 ms | 48.8128 ms | 2.7580 ms | 2.42 | 0.02 | 312.5000 | 312.5000 | 312.5000 | 58834.66 KB |
}
}

86
tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave.cs

@ -1,86 +0,0 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using BenchmarkDotNet.Attributes;
using System;
using System.IO;
using SixLabors.ImageSharp.Tests;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using SixLabors.ImageSharp.Processing;
using SDImage = System.Drawing.Image;
using SixLabors.ImageSharp.Formats.Jpeg;
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(Config.ShortClr))]
public class LoadResizeSave : BenchmarkBase
{
private readonly Configuration configuration = new Configuration(new JpegConfigurationModule());
private byte[] sourceBytes;
private byte[] destBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(
TestImages.Jpeg.Baseline.Jpeg420Exif
//, TestImages.Jpeg.Baseline.Calliphora
)]
public string TestImage { get; set; }
[Params(false, true)]
public bool EnableParallelExecution { get; set; }
[GlobalSetup]
public void Setup()
{
this.configuration.MaxDegreeOfParallelism =
this.EnableParallelExecution ? Environment.ProcessorCount : 1;
if (this.sourceBytes == null)
{
this.sourceBytes = File.ReadAllBytes(this.TestImageFullPath);
}
if (this.destBytes == null)
{
this.destBytes = new byte[this.sourceBytes.Length];
}
}
[Benchmark(Baseline = true)]
public void SystemDrawing()
{
using (var sourceStream = new MemoryStream(this.sourceBytes))
using (var destStream = new MemoryStream(this.destBytes))
using (var source = SDImage.FromStream(sourceStream))
using (var destination = new Bitmap(source.Width / 4, source.Height / 4))
{
using (var graphics = Graphics.FromImage(destination))
{
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.DrawImage(source, 0, 0, 400, 400);
}
destination.Save(destStream, ImageFormat.Jpeg);
}
}
[Benchmark]
public void ImageSharp()
{
var source = Image.Load(this.configuration, this.sourceBytes, new JpegDecoder { IgnoreMetadata = true });
using (source)
using (var destStream = new MemoryStream(this.destBytes))
{
source.Mutate(c => c.Resize(source.Width / 4, source.Height / 4));
source.SaveAsJpeg(destStream);
}
}
}
}

96
tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_Aggregate.cs

@ -0,0 +1,96 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using BenchmarkDotNet.Attributes;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Tests;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(MultiImageBenchmarkBase.Config))]
public class LoadResizeSave_Aggregate : MultiImageBenchmarkBase
{
protected override IEnumerable<string> InputImageSubfoldersOrFiles =>
new[]
{
TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
};
[Params(InputImageCategory.AllImages)]
public override InputImageCategory InputCategory { get; set; }
private readonly Configuration configuration = new Configuration(new JpegConfigurationModule());
private byte[] destBytes;
public override void Setup()
{
base.Setup();
this.configuration.MaxDegreeOfParallelism = 1;
const int MaxOutputSizeInBytes = 2 * 1024 * 1024; // ~2 MB
this.destBytes = new byte[MaxOutputSizeInBytes];
}
[Benchmark(Baseline = true)]
public void SystemDrawing()
{
this.ForEachStream(
sourceStream =>
{
using (var destStream = new MemoryStream(this.destBytes))
using (var source = System.Drawing.Image.FromStream(sourceStream))
using (var destination = new Bitmap(source.Width / 4, source.Height / 4))
{
using (var g = Graphics.FromImage(destination))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(source, 0, 0, 400, 400);
}
destination.Save(destStream, ImageFormat.Jpeg);
}
return null;
});
}
[Benchmark]
public void ImageSharp()
{
this.ForEachStream(
sourceStream =>
{
using (var source = Image.Load<Rgba32>(
this.configuration,
sourceStream,
new JpegDecoder { IgnoreMetadata = true }))
{
using (var destStream = new MemoryStream(this.destBytes))
{
source.Mutate(c => c.Resize(source.Width / 4, source.Height / 4));
source.SaveAsJpeg(destStream);
}
}
return null;
});
}
}
}

107
tests/ImageSharp.Benchmarks/Codecs/Jpeg/LoadResizeSave_ImageSpecific.cs

@ -0,0 +1,107 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using BenchmarkDotNet.Attributes;
using System;
using System.IO;
using SixLabors.ImageSharp.Tests;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using SixLabors.ImageSharp.Processing;
using SDImage = System.Drawing.Image;
using SixLabors.ImageSharp.Formats.Jpeg;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg
{
[Config(typeof(Config.ShortClr))]
public class LoadResizeSave_ImageSpecific
{
private readonly Configuration configuration = new Configuration(new JpegConfigurationModule());
private byte[] sourceBytes;
private byte[] destBytes;
private string TestImageFullPath => Path.Combine(TestEnvironment.InputImagesDirectoryFullPath, this.TestImage);
[Params(
TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.BenchmarkSuite.BadRstProgressive518_Large444YCbCr,
TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr
)]
public string TestImage { get; set; }
[Params(false, true)]
public bool ParallelExec { get; set; }
[GlobalSetup]
public void Setup()
{
this.configuration.MaxDegreeOfParallelism =
this.ParallelExec ? Environment.ProcessorCount : 1;
this.sourceBytes = File.ReadAllBytes(this.TestImageFullPath);
this.destBytes = new byte[this.sourceBytes.Length * 2];
}
[Benchmark(Baseline = true)]
public void SystemDrawing()
{
using (var sourceStream = new MemoryStream(this.sourceBytes))
using (var destStream = new MemoryStream(this.destBytes))
using (var source = SDImage.FromStream(sourceStream))
using (var destination = new Bitmap(source.Width / 4, source.Height / 4))
{
using (var g = Graphics.FromImage(destination))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(source, 0, 0, 400, 400);
}
destination.Save(destStream, ImageFormat.Jpeg);
}
}
[Benchmark]
public void ImageSharp()
{
var source = Image.Load(this.configuration, this.sourceBytes, new JpegDecoder { IgnoreMetadata = true });
using (source)
using (var destStream = new MemoryStream(this.destBytes))
{
source.Mutate(c => c.Resize(source.Width / 4, source.Height / 4));
source.SaveAsJpeg(destStream);
}
}
// RESULTS (2018 October 31):
//
// BenchmarkDotNet=v0.10.14, OS=Windows 10.0.17134
// Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
// Frequency=2742191 Hz, Resolution=364.6719 ns, Timer=TSC
// .NET Core SDK=2.1.403
// [Host] : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
// Job-ZPEZGV : .NET Framework 4.7.1 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
// Job-SGOCJT : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
//
// Method | Runtime | TestImage | ParallelExec | Mean | Error | StdDev | Scaled | ScaledSD | Gen 0 | Allocated |
// -------------- |-------- |----------------------------- |------------- |----------:|----------:|----------:|-------:|---------:|---------:|----------:|
// SystemDrawing | Clr | Jpg/baseline/jpeg420exif.jpg | False | 64.88 ms | 3.735 ms | 0.2110 ms | 1.00 | 0.00 | 250.0000 | 791.07 KB |
// ImageSharp | Clr | Jpg/baseline/jpeg420exif.jpg | False | 129.53 ms | 23.423 ms | 1.3234 ms | 2.00 | 0.02 | - | 50.09 KB |
// | | | | | | | | | | |
// SystemDrawing | Core | Jpg/baseline/jpeg420exif.jpg | False | 65.87 ms | 10.488 ms | 0.5926 ms | 1.00 | 0.00 | 250.0000 | 789.79 KB |
// ImageSharp | Core | Jpg/baseline/jpeg420exif.jpg | False | 92.00 ms | 7.241 ms | 0.4091 ms | 1.40 | 0.01 | - | 46.36 KB |
// | | | | | | | | | | |
// SystemDrawing | Clr | Jpg/baseline/jpeg420exif.jpg | True | 64.23 ms | 5.998 ms | 0.3389 ms | 1.00 | 0.00 | 250.0000 | 791.07 KB |
// ImageSharp | Clr | Jpg/baseline/jpeg420exif.jpg | True | 82.63 ms | 29.320 ms | 1.6566 ms | 1.29 | 0.02 | - | 57.59 KB |
// | | | | | | | | | | |
// SystemDrawing | Core | Jpg/baseline/jpeg420exif.jpg | True | 64.20 ms | 6.560 ms | 0.3707 ms | 1.00 | 0.00 | 250.0000 | 789.79 KB |
// ImageSharp | Core | Jpg/baseline/jpeg420exif.jpg | True | 68.08 ms | 18.376 ms | 1.0383 ms | 1.06 | 0.01 | - | 50.49 KB |
}
}

32
tests/ImageSharp.Benchmarks/Codecs/MultiImageBenchmarkBase.cs

@ -3,6 +3,9 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// </copyright> // </copyright>
using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Jobs;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
namespace SixLabors.ImageSharp.Benchmarks.Codecs namespace SixLabors.ImageSharp.Benchmarks.Codecs
@ -20,8 +23,27 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
using CoreImage = ImageSharp.Image; using CoreImage = ImageSharp.Image;
public abstract class MultiImageBenchmarkBase : BenchmarkBase public abstract class MultiImageBenchmarkBase
{ {
public class Config : ManualConfig
{
public Config()
{
// Uncomment if you want to use any of the diagnoser
this.Add(new BenchmarkDotNet.Diagnosers.MemoryDiagnoser());
}
public class ShortClr : Benchmarks.Config
{
public ShortClr()
{
this.Add(
Job.Core.WithLaunchCount(1).WithWarmupCount(1).WithTargetCount(2)
);
}
}
}
protected Dictionary<string, byte[]> FileNamesToBytes = new Dictionary<string, byte[]>(); protected Dictionary<string, byte[]> FileNamesToBytes = new Dictionary<string, byte[]>();
protected Dictionary<string, Image<Rgba32>> FileNamesToImageSharpImages = new Dictionary<string, Image<Rgba32>>(); protected Dictionary<string, Image<Rgba32>> FileNamesToImageSharpImages = new Dictionary<string, Image<Rgba32>>();
@ -49,7 +71,7 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
/// <summary> /// <summary>
/// Gets the file names containing these strings are substrings are not processed by the benchmark. /// Gets the file names containing these strings are substrings are not processed by the benchmark.
/// </summary> /// </summary>
protected IEnumerable<string> ExcludeSubstringsInFileNames => new[] { "badeof", "BadEof", "CriticalEOF" }; protected virtual IEnumerable<string> ExcludeSubstringsInFileNames => new[] { "badeof", "BadEof", "CriticalEOF" };
/// <summary> /// <summary>
/// Enumerates folders containing files OR files to be processed by the benchmark. /// Enumerates folders containing files OR files to be processed by the benchmark.
@ -87,7 +109,7 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
protected abstract IEnumerable<string> InputImageSubfoldersOrFiles { get; } protected abstract IEnumerable<string> InputImageSubfoldersOrFiles { get; }
[GlobalSetup] [GlobalSetup]
public void ReadImages() public virtual void Setup()
{ {
if (!Vector.IsHardwareAccelerated) if (!Vector.IsHardwareAccelerated)
{ {
@ -107,11 +129,13 @@ namespace SixLabors.ImageSharp.Benchmarks.Codecs
continue; continue;
} }
string[] excludeStrings = this.ExcludeSubstringsInFileNames.Select(s => s.ToLower()).ToArray();
string[] allFiles = string[] allFiles =
this.SearchPatterns.SelectMany( this.SearchPatterns.SelectMany(
f => f =>
Directory.EnumerateFiles(path, f, SearchOption.AllDirectories) Directory.EnumerateFiles(path, f, SearchOption.AllDirectories)
.Where(fn => !this.ExcludeSubstringsInFileNames.Any(w => fn.ToLower().Contains(w)))).ToArray(); .Where(fn => !excludeStrings.Any(excludeStr => fn.ToLower().Contains(excludeStr)))).ToArray();
foreach (string fn in allFiles) foreach (string fn in allFiles)
{ {

74
tests/ImageSharp.Benchmarks/Samplers/Resize.cs

@ -22,15 +22,17 @@ namespace SixLabors.ImageSharp.Benchmarks
private Bitmap sourceBitmap; private Bitmap sourceBitmap;
public const int SourceSize = 3032; [Params(3032)]
public int SourceSize { get; set; }
public const int DestSize = 400; [Params(400)]
public int DestSize { get; set; }
[GlobalSetup] [GlobalSetup]
public void Setup() public void Setup()
{ {
this.sourceImage = new Image<Rgba32>(this.Configuration, SourceSize, SourceSize); this.sourceImage = new Image<Rgba32>(this.Configuration, this.SourceSize, this.SourceSize);
this.sourceBitmap = new Bitmap(SourceSize, SourceSize); this.sourceBitmap = new Bitmap(this.SourceSize, this.SourceSize);
} }
[GlobalCleanup] [GlobalCleanup]
@ -43,14 +45,17 @@ namespace SixLabors.ImageSharp.Benchmarks
[Benchmark(Baseline = true)] [Benchmark(Baseline = true)]
public int SystemDrawing() public int SystemDrawing()
{ {
using (var destination = new Bitmap(DestSize, DestSize)) using (var destination = new Bitmap(this.DestSize, this.DestSize))
{ {
using (var graphics = Graphics.FromImage(destination)) using (var g = Graphics.FromImage(destination))
{ {
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; g.CompositingMode = CompositingMode.SourceCopy;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.CompositingQuality = CompositingQuality.HighQuality; g.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(this.sourceBitmap, 0, 0, DestSize, DestSize); g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawImage(this.sourceBitmap, 0, 0, this.DestSize, this.DestSize);
} }
return destination.Width; return destination.Width;
@ -83,15 +88,60 @@ namespace SixLabors.ImageSharp.Benchmarks
{ {
protected override void ExecuteResizeOperation(IImageProcessingContext<Rgba32> ctx) protected override void ExecuteResizeOperation(IImageProcessingContext<Rgba32> ctx)
{ {
ctx.Resize(DestSize, DestSize, KnownResamplers.Bicubic); ctx.Resize(this.DestSize, this.DestSize, KnownResamplers.Bicubic);
} }
// RESULTS (2018 October):
//
// BenchmarkDotNet=v0.10.14, OS=Windows 10.0.17134
// Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
// Frequency=2742191 Hz, Resolution=364.6719 ns, Timer=TSC
// .NET Core SDK=2.1.403
// [Host] : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
// Job-IGUFBA : .NET Framework 4.7.1 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
// Job-DZFERG : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
//
// Method | Runtime | SourceSize | DestSize | Mean | Error | StdDev | Scaled | ScaledSD | Allocated |
// ----------------------------------------- |-------- |----------- |--------- |----------:|----------:|----------:|-------:|---------:|----------:|
// SystemDrawing | Clr | 3032 | 400 | 101.13 ms | 18.659 ms | 1.0542 ms | 1.00 | 0.00 | 0 B |
// 'ImageSharp, MaxDegreeOfParallelism = 1' | Clr | 3032 | 400 | 122.05 ms | 19.622 ms | 1.1087 ms | 1.21 | 0.01 | 21856 B |
// 'ImageSharp, MaxDegreeOfParallelism = 4' | Clr | 3032 | 400 | 41.34 ms | 54.841 ms | 3.0986 ms | 0.41 | 0.03 | 28000 B |
// 'ImageSharp, MaxDegreeOfParallelism = 8' | Clr | 3032 | 400 | 31.68 ms | 12.782 ms | 0.7222 ms | 0.31 | 0.01 | 28256 B |
// | | | | | | | | | |
// SystemDrawing | Core | 3032 | 400 | 100.37 ms | 18.479 ms | 1.0441 ms | 1.00 | 0.00 | 0 B |
// 'ImageSharp, MaxDegreeOfParallelism = 1' | Core | 3032 | 400 | 73.03 ms | 10.540 ms | 0.5955 ms | 0.73 | 0.01 | 21368 B |
// 'ImageSharp, MaxDegreeOfParallelism = 4' | Core | 3032 | 400 | 22.59 ms | 4.863 ms | 0.2748 ms | 0.23 | 0.00 | 25220 B |
// 'ImageSharp, MaxDegreeOfParallelism = 8' | Core | 3032 | 400 | 21.10 ms | 23.362 ms | 1.3200 ms | 0.21 | 0.01 | 25539 B |
} }
public class Resize_BicubicCompand : ResizeBenchmarkBase public class Resize_BicubicCompand : ResizeBenchmarkBase
{ {
protected override void ExecuteResizeOperation(IImageProcessingContext<Rgba32> ctx) protected override void ExecuteResizeOperation(IImageProcessingContext<Rgba32> ctx)
{ {
ctx.Resize(DestSize, DestSize, KnownResamplers.Bicubic, true); ctx.Resize(this.DestSize, this.DestSize, KnownResamplers.Bicubic, true);
} }
// RESULTS (2018 October):
//
// BenchmarkDotNet=v0.10.14, OS=Windows 10.0.17134
// Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores
// Frequency=2742191 Hz, Resolution=364.6719 ns, Timer=TSC
// .NET Core SDK=2.1.403
// [Host] : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
// Job-IGUFBA : .NET Framework 4.7.1 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3190.0
// Job-DZFERG : .NET Core 2.1.5 (CoreCLR 4.6.26919.02, CoreFX 4.6.26919.02), 64bit RyuJIT
//
// Method | Runtime | SourceSize | DestSize | Mean | Error | StdDev | Scaled | ScaledSD | Allocated |
// ----------------------------------------- |-------- |----------- |--------- |----------:|----------:|----------:|-------:|---------:|----------:|
// SystemDrawing | Clr | 3032 | 400 | 100.63 ms | 13.864 ms | 0.7833 ms | 1.00 | 0.00 | 0 B |
// 'ImageSharp, MaxDegreeOfParallelism = 1' | Clr | 3032 | 400 | 156.83 ms | 28.631 ms | 1.6177 ms | 1.56 | 0.02 | 21856 B |
// 'ImageSharp, MaxDegreeOfParallelism = 4' | Clr | 3032 | 400 | 53.43 ms | 38.493 ms | 2.1749 ms | 0.53 | 0.02 | 28512 B |
// 'ImageSharp, MaxDegreeOfParallelism = 8' | Clr | 3032 | 400 | 38.47 ms | 11.969 ms | 0.6763 ms | 0.38 | 0.01 | 28000 B |
// | | | | | | | | | |
// SystemDrawing | Core | 3032 | 400 | 99.87 ms | 23.459 ms | 1.3255 ms | 1.00 | 0.00 | 0 B |
// 'ImageSharp, MaxDegreeOfParallelism = 1' | Core | 3032 | 400 | 108.19 ms | 38.562 ms | 2.1788 ms | 1.08 | 0.02 | 21368 B |
// 'ImageSharp, MaxDegreeOfParallelism = 4' | Core | 3032 | 400 | 36.21 ms | 53.802 ms | 3.0399 ms | 0.36 | 0.03 | 25300 B |
// 'ImageSharp, MaxDegreeOfParallelism = 8' | Core | 3032 | 400 | 26.52 ms | 2.173 ms | 0.1228 ms | 0.27 | 0.00 | 25589 B |
} }
} }

5
tests/ImageSharp.Sandbox46/Program.cs

@ -4,6 +4,7 @@
// </copyright> // </copyright>
using SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations; using SixLabors.ImageSharp.Tests.PixelFormats.PixelOperations;
using SixLabors.ImageSharp.Tests.ProfilingBenchmarks;
namespace SixLabors.ImageSharp.Sandbox46 namespace SixLabors.ImageSharp.Sandbox46
{ {
@ -62,8 +63,8 @@ namespace SixLabors.ImageSharp.Sandbox46
private static void RunDecodeJpegProfilingTests() private static void RunDecodeJpegProfilingTests()
{ {
Console.WriteLine("RunDecodeJpegProfilingTests..."); Console.WriteLine("RunDecodeJpegProfilingTests...");
var benchmarks = new JpegProfilingBenchmarks(new ConsoleOutput()); var benchmarks = new JpegBenchmarks(new ConsoleOutput());
foreach (object[] data in JpegProfilingBenchmarks.DecodeJpegData) foreach (object[] data in JpegBenchmarks.DecodeJpegData)
{ {
string fileName = (string)data[0]; string fileName = (string)data[0];
benchmarks.DecodeJpeg(fileName); benchmarks.DecodeJpeg(fileName);

21
tests/ImageSharp.Tests/Common/SimdUtilsTests.cs

@ -257,6 +257,27 @@ namespace SixLabors.ImageSharp.Tests.Common
); );
} }
[Theory]
[InlineData(1234)]
public void ExtendedIntrinsics_ConvertToSingle(short scale)
{
int n = Vector<float>.Count;
short[] sData = new Random(scale).GenerateRandomInt16Array(2 * n, (short)-scale, scale);
float[] fData = sData.Select(u => (float)u).ToArray();
var source = new Vector<short>(sData);
var expected1 = new Vector<float>(fData, 0);
var expected2 = new Vector<float>(fData, n);
// Act:
SimdUtils.ExtendedIntrinsics.ConvertToSingle(source, out Vector<float> actual1, out Vector<float> actual2);
// Assert:
Assert.Equal(expected1, actual1);
Assert.Equal(expected2, actual2);
}
[Theory] [Theory]
[MemberData(nameof(ArbitraryArraySizes))] [MemberData(nameof(ArbitraryArraySizes))]
public void BulkConvertNormalizedFloatToByteClampOverflows(int count) public void BulkConvertNormalizedFloatToByteClampOverflows(int count)

35
tests/ImageSharp.Tests/ComplexIntegrationTests.cs

@ -1,35 +0,0 @@
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.Primitives;
using Xunit;
namespace SixLabors.ImageSharp.Tests
{
/// <summary>
/// Might be useful to catch complex bugs
/// </summary>
public class ComplexIntegrationTests
{
[Theory]
[WithFile(TestImages.Jpeg.Baseline.Snake, PixelTypes.Rgba32, 75, JpegSubsample.Ratio420)]
[WithFile(TestImages.Jpeg.Baseline.Lake, PixelTypes.Rgba32, 75, JpegSubsample.Ratio420)]
[WithFile(TestImages.Jpeg.Baseline.Snake, PixelTypes.Rgba32, 75, JpegSubsample.Ratio444)]
[WithFile(TestImages.Jpeg.Baseline.Lake, PixelTypes.Rgba32, 75, JpegSubsample.Ratio444)]
public void LoadResizeSave<TPixel>(TestImageProvider<TPixel> provider, int quality, JpegSubsample subsample)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage(x => x.Resize(new ResizeOptions { Size = new Size(150, 100), Mode = ResizeMode.Max })))
{
image.MetaData.ExifProfile = null; // Reduce the size of the file
JpegEncoder options = new JpegEncoder { Subsample = subsample, Quality = quality };
provider.Utility.TestName += $"{subsample}_Q{quality}";
provider.Utility.SaveTestOutputFile(image, "png");
provider.Utility.SaveTestOutputFile(image, "jpg", options);
}
}
}
}

22
tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.CopyToBufferArea.cs

@ -7,14 +7,16 @@
using SixLabors.ImageSharp.Formats.Jpeg.Components; using SixLabors.ImageSharp.Formats.Jpeg.Components;
using SixLabors.ImageSharp.Memory; using SixLabors.ImageSharp.Memory;
using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils; using SixLabors.ImageSharp.Tests.Formats.Jpg.Utils;
using SixLabors.Memory;
using SixLabors.Primitives; using SixLabors.Primitives;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Jpg namespace SixLabors.ImageSharp.Tests.Formats.Jpg
{ {
public partial class Block8x8FTests : JpegFixture public partial class Block8x8FTests
{ {
public class CopyToBufferArea : JpegFixture public class CopyToBufferArea : JpegFixture
{ {
@ -37,17 +39,15 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
} }
} }
// TODO: This test occasionally fails from the same reason certain ICC tests are failing. Should be false negative. [Fact]
[Fact(Skip = "This test occasionally fails from the same reason certain ICC tests are failing. Should be false negative.")] public void Copy1x1Scale()
//[Fact]
public void Unscaled()
{ {
Block8x8F block = CreateRandomFloatBlock(0, 100); Block8x8F block = CreateRandomFloatBlock(0, 100);
using (var buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(20, 20)) using (Buffer2D<float> buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(20, 20, AllocationOptions.Clean))
{ {
BufferArea<float> area = buffer.GetArea(5, 10, 8, 8); BufferArea<float> area = buffer.GetArea(5, 10, 8, 8);
block.CopyTo(area); block.Copy1x1Scale(area);
Assert.Equal(block[0, 0], buffer[5, 10]); Assert.Equal(block[0, 0], buffer[5, 10]);
Assert.Equal(block[1, 0], buffer[6, 10]); Assert.Equal(block[1, 0], buffer[6, 10]);
@ -59,22 +59,20 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
} }
} }
// TODO: This test occasionally fails from the same reason certain ICC tests are failing. Should be false negative. [Theory]
[Theory(Skip = "This test occasionally fails from the same reason certain ICC tests are failing. Should be false negative.")]
//[Theory]
[InlineData(1, 1)] [InlineData(1, 1)]
[InlineData(1, 2)] [InlineData(1, 2)]
[InlineData(2, 1)] [InlineData(2, 1)]
[InlineData(2, 2)] [InlineData(2, 2)]
[InlineData(4, 2)] [InlineData(4, 2)]
[InlineData(4, 4)] [InlineData(4, 4)]
public void Scaled(int horizontalFactor, int verticalFactor) public void CopyTo(int horizontalFactor, int verticalFactor)
{ {
Block8x8F block = CreateRandomFloatBlock(0, 100); Block8x8F block = CreateRandomFloatBlock(0, 100);
var start = new Point(50, 50); var start = new Point(50, 50);
using (var buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(100, 100)) using (Buffer2D<float> buffer = Configuration.Default.MemoryAllocator.Allocate2D<float>(100, 100, AllocationOptions.Clean))
{ {
BufferArea<float> area = buffer.GetArea(start.X, start.Y, 8 * horizontalFactor, 8 * verticalFactor); BufferArea<float> area = buffer.GetArea(start.X, start.Y, 8 * horizontalFactor, 8 * verticalFactor);
block.CopyTo(area, horizontalFactor, verticalFactor); block.CopyTo(area, horizontalFactor, verticalFactor);

42
tests/ImageSharp.Tests/Formats/Jpg/Block8x8FTests.cs

@ -408,5 +408,47 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
Assert.Equal(original[i] * 42f, actual[i]); Assert.Equal(original[i] * 42f, actual[i]);
} }
} }
[Fact]
public void LoadFromUInt16Scalar()
{
if (this.SkipOnNonAvx2Runner())
{
return;
}
short[] data = Create8x8ShortData();
var source = new Block8x8(data);
Block8x8F dest = default;
dest.LoadFromInt16Scalar(ref source);
for (int i = 0; i < Block8x8F.Size; i++)
{
Assert.Equal((float)data[i], dest[i]);
}
}
[Fact]
public void LoadFromUInt16ExtendedAvx2()
{
if (this.SkipOnNonAvx2Runner())
{
return;
}
short[] data = Create8x8ShortData();
var source = new Block8x8(data);
Block8x8F dest = default;
dest.LoadFromInt16ExtendedAvx2(ref source);
for (int i = 0; i < Block8x8F.Size; i++)
{
Assert.Equal((float)data[i], dest[i]);
}
}
} }
} }

7
tests/ImageSharp.Tests/Formats/Jpg/Utils/JpegFixture.cs

@ -58,7 +58,12 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils
{ {
for (int j = 0; j < 8; j++) for (int j = 0; j < 8; j++)
{ {
result[i * 8 + j] = (short)(i * 10 + j); short val = (short)(i * 10 + j);
if ((i + j) % 2 == 0)
{
val *= -1;
}
result[i * 8 + j] = val;
} }
} }
return result; return result;

3
tests/ImageSharp.Tests/Formats/Jpg/Utils/LibJpegTools.ComponentData.cs

@ -67,9 +67,10 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg.Utils
for (int y = 0; y < result.HeightInBlocks; y++) for (int y = 0; y < result.HeightInBlocks; y++)
{ {
Span<Block8x8> blockRow = c.SpectralBlocks.GetRowSpan(y);
for (int x = 0; x < result.WidthInBlocks; x++) for (int x = 0; x < result.WidthInBlocks; x++)
{ {
short[] data = c.GetBlockReference(x, y).ToArray(); short[] data = blockRow[x].ToArray();
result.MakeBlock(data, y, x); result.MakeBlock(data, y, x);
} }
} }

25
tests/ImageSharp.Tests/Image/ImageTests.cs

@ -2,7 +2,10 @@
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
using SixLabors.ImageSharp.Advanced; using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.MetaData;
using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Tests.Memory;
using Xunit; using Xunit;
// ReSharper disable InconsistentNaming // ReSharper disable InconsistentNaming
@ -46,7 +49,7 @@ namespace SixLabors.ImageSharp.Tests
} }
[Fact] [Fact]
public void Configuration_Width_Height_BackroundColor() public void Configuration_Width_Height_BackgroundColor()
{ {
Configuration configuration = Configuration.Default.Clone(); Configuration configuration = Configuration.Default.Clone();
Rgba32 color = Rgba32.Aquamarine; Rgba32 color = Rgba32.Aquamarine;
@ -61,6 +64,26 @@ namespace SixLabors.ImageSharp.Tests
Assert.Equal(configuration, image.GetConfiguration()); Assert.Equal(configuration, image.GetConfiguration());
} }
} }
[Fact]
public void CreateUninitialized()
{
Configuration configuration = Configuration.Default.Clone();
byte dirtyValue = 123;
configuration.MemoryAllocator = new TestMemoryAllocator(dirtyValue);
var metadata = new ImageMetaData();
using (Image<Gray8> image = Image.CreateUninitialized<Gray8>(configuration, 21, 22, metadata))
{
Assert.Equal(21, image.Width);
Assert.Equal(22, image.Height);
Assert.Same(configuration, image.GetConfiguration());
Assert.Same(metadata, image.MetaData);
Assert.Equal(dirtyValue, image[5, 5].PackedValue);
}
}
} }
} }
} }

72
tests/ImageSharp.Tests/Formats/Jpg/JpegProfilingBenchmarks.cs → tests/ImageSharp.Tests/ProfilingBenchmarks/JpegBenchmarks.cs

@ -13,27 +13,27 @@ using SixLabors.ImageSharp.PixelFormats;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.Formats.Jpg namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks
{ {
public class JpegProfilingBenchmarks : MeasureFixture public class JpegBenchmarks : MeasureFixture
{ {
public JpegProfilingBenchmarks(ITestOutputHelper output) public JpegBenchmarks(ITestOutputHelper output)
: base(output) : base(output)
{ {
} }
public static readonly TheoryData<string> DecodeJpegData = new TheoryData<string>() public static readonly TheoryData<string> DecodeJpegData = new TheoryData<string>
{ {
TestImages.Jpeg.Baseline.Cmyk, TestImages.Jpeg.BenchmarkSuite.Jpeg400_SmallMonochrome,
TestImages.Jpeg.Baseline.Ycck, TestImages.Jpeg.BenchmarkSuite.Jpeg420Exif_MidSizeYCbCr,
TestImages.Jpeg.Baseline.Calliphora, TestImages.Jpeg.BenchmarkSuite.Lake_Small444YCbCr,
TestImages.Jpeg.Baseline.Jpeg400, TestImages.Jpeg.BenchmarkSuite.MissingFF00ProgressiveBedroom159_MidSize420YCbCr,
TestImages.Jpeg.Baseline.Jpeg420Exif, TestImages.Jpeg.BenchmarkSuite.BadRstProgressive518_Large444YCbCr,
TestImages.Jpeg.Baseline.Jpeg444, TestImages.Jpeg.BenchmarkSuite.ExifGetString750Transform_Huge420YCbCr,
}; };
// [Theory] // Benchmark, enable manually [Theory(Skip = ProfilingSetup.SkipProfilingTests)]
// [MemberData(nameof(DecodeJpegData))] [MemberData(nameof(DecodeJpegData))]
public void DecodeJpeg(string fileName) public void DecodeJpeg(string fileName)
{ {
this.DecodeJpegBenchmarkImpl(fileName, new JpegDecoder()); this.DecodeJpegBenchmarkImpl(fileName, new JpegDecoder());
@ -47,7 +47,7 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
return; return;
} }
const int ExecutionCount = 30; const int ExecutionCount = 20;
if (!Vector.IsHardwareAccelerated) if (!Vector.IsHardwareAccelerated)
{ {
@ -62,17 +62,18 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
() => () =>
{ {
var img = Image.Load<Rgba32>(bytes, decoder); var img = Image.Load<Rgba32>(bytes, decoder);
img.Dispose();
}, },
// ReSharper disable once ExplicitCallerInfoArgument // ReSharper disable once ExplicitCallerInfoArgument
$"Decode {fileName}"); $"Decode {fileName}");
} }
// Benchmark, enable manually! // Benchmark, enable manually!
// [Theory] [Theory(Skip = ProfilingSetup.SkipProfilingTests)]
// [InlineData(1, 75, JpegSubsample.Ratio420)] [InlineData(1, 75, JpegSubsample.Ratio420)]
// [InlineData(30, 75, JpegSubsample.Ratio420)] [InlineData(30, 75, JpegSubsample.Ratio420)]
// [InlineData(30, 75, JpegSubsample.Ratio444)] [InlineData(30, 75, JpegSubsample.Ratio444)]
// [InlineData(30, 100, JpegSubsample.Ratio444)] [InlineData(30, 100, JpegSubsample.Ratio444)]
public void EncodeJpeg(int executionCount, int quality, JpegSubsample subsample) public void EncodeJpeg(int executionCount, int quality, JpegSubsample subsample)
{ {
// do not run this on CI even by accident // do not run this on CI even by accident
@ -82,31 +83,32 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
} }
string[] testFiles = TestImages.Bmp.All string[] testFiles = TestImages.Bmp.All
.Concat(new[] { TestImages.Jpeg.Baseline.Calliphora, TestImages.Jpeg.Baseline.Cmyk }) .Concat(new[] { TestImages.Jpeg.Baseline.Calliphora, TestImages.Jpeg.Baseline.Cmyk }).ToArray();
.ToArray();
Image<Rgba32>[] testImages = Image<Rgba32>[] testImages = testFiles.Select(
testFiles.Select( tf => TestImageProvider<Rgba32>.File(tf, pixelTypeOverride: PixelTypes.Rgba32).GetImage()).ToArray();
tf => TestImageProvider<Rgba32>.File(tf, pixelTypeOverride: PixelTypes.Rgba32).GetImage())
.ToArray();
using (var ms = new MemoryStream()) using (var ms = new MemoryStream())
{ {
this.Measure(executionCount, this.Measure(
executionCount,
() => () =>
{
foreach (Image<Rgba32> img in testImages)
{ {
var options = new JpegEncoder { Quality = quality, Subsample = subsample }; foreach (Image<Rgba32> img in testImages)
img.Save(ms, options); {
ms.Seek(0, SeekOrigin.Begin); var options = new JpegEncoder { Quality = quality, Subsample = subsample };
} img.Save(ms, options);
}, ms.Seek(0, SeekOrigin.Begin);
}
},
// ReSharper disable once ExplicitCallerInfoArgument // ReSharper disable once ExplicitCallerInfoArgument
$@"Encode {testFiles.Length} images" $@"Encode {testFiles.Length} images");
);
} }
}
foreach (Image<Rgba32> image in testImages)
{
image.Dispose();
}
}
} }
} }

44
tests/ImageSharp.Tests/ProfilingBenchmarks/LoadResizeSaveBenchmarks.cs

@ -0,0 +1,44 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.IO;
using SixLabors.ImageSharp.Processing;
using Xunit;
using Xunit.Abstractions;
namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks
{
public class LoadResizeSaveBenchmarks : MeasureFixture
{
public LoadResizeSaveBenchmarks(ITestOutputHelper output)
: base(output)
{
}
[Theory(Skip = ProfilingSetup.SkipProfilingTests)]
[InlineData(TestImages.Jpeg.Baseline.Jpeg420Exif)]
public void LoadResizeSave(string imagePath)
{
var configuration = Configuration.CreateDefaultInstance();
configuration.MaxDegreeOfParallelism = 1;
byte[] imageBytes = TestFile.Create(imagePath).Bytes;
using (var ms = new MemoryStream())
{
this.Measure(30,
() =>
{
using (var image = Image.Load(configuration, imageBytes))
{
image.Mutate(x => x.Resize(image.Size() / 4));
image.SaveAsJpeg(ms);
}
ms.Seek(0, SeekOrigin.Begin);
});
}
}
}
}

18
tests/ImageSharp.Tests/ProfilingBenchmarks/ProfilingSetup.cs

@ -0,0 +1,18 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
// Uncomment to enable local profiling benchmarks. DO NOT PUSH TO MAIN!
// #define PROFILING
namespace SixLabors.ImageSharp.Tests.ProfilingBenchmarks
{
public static class ProfilingSetup
{
public const string SkipProfilingTests =
#if PROFILING
null;
#else
"Profiling benchmark, enable manually!";
#endif
}
}

12
tests/ImageSharp.Tests/TestImages.cs

@ -165,6 +165,18 @@ namespace SixLabors.ImageSharp.Tests
} }
public static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray(); public static readonly string[] All = Baseline.All.Concat(Progressive.All).ToArray();
public static class BenchmarkSuite
{
public const string Jpeg400_SmallMonochrome = Baseline.Jpeg400;
public const string Jpeg420Exif_MidSizeYCbCr = Baseline.Jpeg420Exif;
public const string Lake_Small444YCbCr = Baseline.Lake;
// A few large images from the "issues" set are actually very useful for benchmarking:
public const string MissingFF00ProgressiveBedroom159_MidSize420YCbCr = Issues.MissingFF00ProgressiveBedroom159;
public const string BadRstProgressive518_Large444YCbCr = Issues.BadRstProgressive518;
public const string ExifGetString750Transform_Huge420YCbCr = Issues.ExifGetString750Transform;
}
} }
public static class Bmp public static class Bmp

11
tests/ImageSharp.Tests/TestUtilities/TestDataGenerator.cs

@ -88,6 +88,17 @@ namespace SixLabors.ImageSharp.Tests
return values; return values;
} }
public static short[] GenerateRandomInt16Array(this Random rnd, int length, short minVal, short maxVal)
{
short[] values = new short[length];
for (int i = 0; i < values.Length; i++)
{
values[i] = (short)rnd.Next(minVal, maxVal);
}
return values;
}
private static float GetRandomFloat(this Random rnd, float minVal, float maxVal) => ((float)rnd.NextDouble() * (maxVal - minVal)) + minVal; private static float GetRandomFloat(this Random rnd, float minVal, float maxVal) => ((float)rnd.NextDouble() * (maxVal - minVal)) + minVal;
} }
} }

331
tests/Images/Input/Jpg/baseline/JpegSnoopReports/Calliphora.jpg.txt

@ -0,0 +1,331 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Calliphora.jpg]
Filesize: [254766] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 96 x 96 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x00000014
Comment length = 80
Comment=File source: http://commons.wikimedia.org/wiki/File:Calliphora_sp_Portrait.jpg
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000066
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 10 16 20 24
DQT, Row #1: 5 5 6 8 10 23 24 22
DQT, Row #2: 6 5 6 10 16 23 28 22
DQT, Row #3: 6 7 9 12 20 35 32 25
DQT, Row #4: 7 9 15 22 27 44 41 31
DQT, Row #5: 10 14 22 26 32 42 45 37
DQT, Row #6: 20 26 31 35 41 48 48 40
DQT, Row #7: 29 37 38 39 45 40 41 40
Approx quality factor = 79.94 (scaling=40.12 variance=1.43)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000000AB
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 10 19 40 40 40 40
DQT, Row #1: 7 8 10 26 40 40 40 40
DQT, Row #2: 10 10 22 40 40 40 40 40
DQT, Row #3: 19 26 40 40 40 40 40 40
DQT, Row #4: 40 40 40 40 40 40 40 40
DQT, Row #5: 40 40 40 40 40 40 40 40
DQT, Row #6: 40 40 40 40 40 40 40 40
DQT, Row #7: 40 40 40 40 40 40 40 40
Approx quality factor = 79.87 (scaling=40.26 variance=0.36)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000000F0
Frame header length = 17
Precision = 8
Number of Lines = 1198
Samples per Line = 804
Image Size = 804 x 1198
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000103
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 04
Codes of length 03 bits (005 total): 00 01 02 03 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000121
Huffman table length = 79
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 06 31
Codes of length 07 bits (004 total): 13 22 41 51
Codes of length 08 bits (004 total): 14 32 61 71
Codes of length 09 bits (003 total): 07 81 91
Codes of length 10 bits (006 total): 15 23 42 52 A1 B1
Codes of length 11 bits (003 total): 33 62 C1
Codes of length 12 bits (007 total): 16 24 43 72 82 D1 F0
Codes of length 13 bits (002 total): 25 E1
Codes of length 14 bits (003 total): 34 53 92
Codes of length 15 bits (002 total): A2 F1
Codes of length 16 bits (015 total): 08 63 B2 26 44 C2 D2 73 27 35 55 74 84 93 A3
Total number of codes: 060
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000172
Huffman table length = 26
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000018E
Huffman table length = 59
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (002 total): 03 31
Codes of length 06 bits (004 total): 12 41 51 F0
Codes of length 07 bits (003 total): 04 61 71
Codes of length 08 bits (008 total): 13 22 81 91 A1 B1 C1 D1
Codes of length 09 bits (002 total): 32 E1
Codes of length 10 bits (002 total): 42 F1
Codes of length 11 bits (002 total): 05 23
Codes of length 12 bits (002 total): 52 62
Codes of length 13 bits (002 total): 14 33
Codes of length 14 bits (001 total): 72
Codes of length 15 bits (004 total): 24 82 92 A2
Codes of length 16 bits (003 total): 43 B2 E2
Total number of codes: 040
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000001CB
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000001D9
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0003E32C.0
Compression stats:
Compression Ratio: 11.36:1
Bits per pixel: 2.11:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2628 ( 17%)
# codes of length 03 bits: 10491 ( 69%)
# codes of length 04 bits: 1319 ( 9%)
# codes of length 05 bits: 611 ( 4%)
# codes of length 06 bits: 101 ( 1%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 23843 ( 79%)
# codes of length 03 bits: 3770 ( 12%)
# codes of length 04 bits: 1945 ( 6%)
# codes of length 05 bits: 653 ( 2%)
# codes of length 06 bits: 89 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 118632 ( 45%)
# codes of length 03 bits: 34447 ( 13%)
# codes of length 04 bits: 57131 ( 22%)
# codes of length 05 bits: 27139 ( 10%)
# codes of length 06 bits: 8648 ( 3%)
# codes of length 07 bits: 9574 ( 4%)
# codes of length 08 bits: 4195 ( 2%)
# codes of length 09 bits: 1503 ( 1%)
# codes of length 10 bits: 1711 ( 1%)
# codes of length 11 bits: 386 ( 0%)
# codes of length 12 bits: 470 ( 0%)
# codes of length 13 bits: 66 ( 0%)
# codes of length 14 bits: 62 ( 0%)
# codes of length 15 bits: 38 ( 0%)
# codes of length 16 bits: 58 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 58553 ( 58%)
# codes of length 03 bits: 21076 ( 21%)
# codes of length 04 bits: 4270 ( 4%)
# codes of length 05 bits: 6075 ( 6%)
# codes of length 06 bits: 6016 ( 6%)
# codes of length 07 bits: 2009 ( 2%)
# codes of length 08 bits: 2750 ( 3%)
# codes of length 09 bits: 429 ( 0%)
# codes of length 10 bits: 213 ( 0%)
# codes of length 11 bits: 91 ( 0%)
# codes of length 12 bits: 44 ( 0%)
# codes of length 13 bits: 22 ( 0%)
# codes of length 14 bits: 5 ( 0%)
# codes of length 15 bits: 9 ( 0%)
# codes of length 16 bits: 3 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[119] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1008, 0, 0] RGB=[254,254,254] @ MCU[ 35, 37]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0003E32C.0
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0003E32C
*** Searching Compression Signatures ***
Signature: 01DC499064BA9264D591FDE9071DFD89
Signature (Rotated): 0175BAF3251040E0EFB2930B73328E7F
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C40Z,D40Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C700UZ ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
SW :[Apple ImageIO.framework ] [050 (Normal) ]
SW :[IJG Library ] [080 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [080 ]
SW :[IrfanView ] [080 ]
SW :[idImager ] [080 ]
SW :[FastStone Image Viewer ] [080 ]
SW :[NeatImage ] [080 ]
SW :[Paint.NET ] [080 ]
SW :[Photomatix ] [080 ]
SW :[XnView ] [080 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

266
tests/Images/Input/Jpg/baseline/JpegSnoopReports/Floorplan.jpg.txt

@ -0,0 +1,266 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Floorplan.jpg]
Filesize: [161577] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 13464
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x000A
[Model ] = "Photosmart Plus B209a-m"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[Software ] = "Windows Photo Editor 10.0.10011.16384"
[DateTime ] = "2016:01:02 20:17:37"
[ExifOffset ] = @ 0x091A
Offset to Next IFD = 0x000011B6
EXIF IFD1 @ Absolute 0x000011D4
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 96/1
[YResolution ] = 96/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x1214 = @ 0x1232
[JpegIFByteCount ] = 0x[0000227C] / 8828
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x00000938
Dir Length = 0x0008
[DateTimeOriginal ] = "2016:01:02 19:22:28"
[DateTimeDigitized ] = "2016:01:02 19:22:28"
[SubSecTimeOriginal ] = "00"
[SubSecTimeDigitized ] = "00"
[ColorSpace ] = sRGB
[ExifImageWidth ] = 0x[00000922] / 2338
[ExifImageHeight ] = 0x[000008C9] / 2249
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x000034AE
Length = 12772
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
|<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
|<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:xmp="http://ns.adobe.com/xap/1.0/"><xmp:CreatorTool>Windows Photo Editor 10.0.10011.16384</xmp:CreatorTool><xmp:CreateDate>2016-01-02T19:22:28</xmp:CreateDate></rdf:Description></rdf:RDF></x:xmpmeta>
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00006694
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 8 10 12
DQT, Row #1: 2 2 3 4 5 12 12 11
DQT, Row #2: 3 3 3 5 8 11 14 11
DQT, Row #3: 3 3 4 6 10 17 16 12
DQT, Row #4: 4 4 7 11 14 22 21 15
DQT, Row #5: 5 7 11 13 16 21 23 18
DQT, Row #6: 10 13 16 17 21 24 24 20
DQT, Row #7: 14 18 19 20 22 20 21 20
Approx quality factor = 90.06 (scaling=19.88 variance=1.14)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000066D9
Frame header length = 11
Precision = 8
Number of Lines = 645
Samples per Line = 976
Image Size = 976 x 645
Raw Image Orientation = Landscape
Number of Img components = 1
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000066E6
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00006707
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000067BE
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000067C8
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00027727.0
Compression stats:
Compression Ratio: 4.66:1
Bits per pixel: 1.72:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 3571 ( 36%)
# codes of length 03 bits: 4320 ( 44%)
# codes of length 04 bits: 925 ( 9%)
# codes of length 05 bits: 456 ( 5%)
# codes of length 06 bits: 313 ( 3%)
# codes of length 07 bits: 291 ( 3%)
# codes of length 08 bits: 6 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 78118 ( 44%)
# codes of length 03 bits: 22349 ( 13%)
# codes of length 04 bits: 35264 ( 20%)
# codes of length 05 bits: 18811 ( 11%)
# codes of length 06 bits: 4312 ( 2%)
# codes of length 07 bits: 8245 ( 5%)
# codes of length 08 bits: 4682 ( 3%)
# codes of length 09 bits: 1584 ( 1%)
# codes of length 10 bits: 1900 ( 1%)
# codes of length 11 bits: 324 ( 0%)
# codes of length 12 bits: 116 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 6 ( 0%)
# codes of length 16 bits: 639 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[231] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1017, 0, 0] RGB=[255,255,255] @ MCU[ 7, 0]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00027726.4
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00027727
*** Searching Compression Signatures ***
Signature: 015C645021E37D3469A6B652789383DB
Signature (Rotated): 01D400C125EB43B05762A66347B271F7
File Offset: 0 bytes
Chroma subsampling: Gray
EXIF Make/Model: OK [???] [Photosmart Plus B209a-m]
EXIF Makernotes: NONE
EXIF Software: OK [Windows Photo Editor 10.0.10011.16384]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[IJG Library ] [090 Gray ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [090 Gray ]
SW :[IrfanView ] [090 Gray ]
SW :[idImager ] [090 Gray ]
SW :[FastStone Image Viewer ] [090 Gray ]
SW :[NeatImage ] [090 Gray ]
SW :[Paint.NET ] [090 Gray ]
SW :[Photomatix ] [090 Gray ]
SW :[XnView ] [090 Gray ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 2 - Image has high probability of being processed/edited

319
tests/Images/Input/Jpg/baseline/JpegSnoopReports/Hiyamugi.jpg.txt

@ -0,0 +1,319 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Hiyamugi.jpg]
Filesize: [540458] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.0]
density = 96 x 96 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000014
Length = 65110
Identifier = [JFXX]
Not known APP0 type. Skipping remainder.
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x0000FE6C
Comment length = 31
Comment=LEAD Technologies Inc. V1.01.
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000FE8D
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 2 2 2 2 2 2 2 2
DQT, Row #1: 2 2 2 2 2 2 2 2
DQT, Row #2: 2 2 2 2 2 2 2 2
DQT, Row #3: 2 2 2 2 2 3 3 2
DQT, Row #4: 2 2 2 2 2 4 4 3
DQT, Row #5: 2 2 2 2 3 4 4 3
DQT, Row #6: 2 2 3 3 4 4 4 4
DQT, Row #7: 2 3 3 3 4 4 4 3
Approx quality factor = 96.75 (scaling=6.50 variance=21.01)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 2 2 2 2 3 3 3 3
DQT, Row #1: 2 2 2 2 3 3 3 3
DQT, Row #2: 2 2 2 3 3 3 3 3
DQT, Row #3: 2 2 3 3 3 3 3 3
DQT, Row #4: 3 3 3 3 3 3 3 3
DQT, Row #5: 3 3 3 3 3 3 3 3
DQT, Row #6: 3 3 3 3 3 3 3 3
DQT, Row #7: 3 3 3 3 3 3 3 3
Approx quality factor = 98.06 (scaling=3.88 variance=4.78)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000FF13
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000100B7
Frame header length = 17
Precision = 8
Number of Lines = 794
Samples per Line = 1123
Image Size = 1123 x 794
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000100CA
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000100D8
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00083F28.0
Compression stats:
Compression Ratio: 5.64:1
Bits per pixel: 4.26:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 727 ( 5%)
# codes of length 03 bits: 7443 ( 52%)
# codes of length 04 bits: 2171 ( 15%)
# codes of length 05 bits: 1627 ( 11%)
# codes of length 06 bits: 1355 ( 10%)
# codes of length 07 bits: 785 ( 6%)
# codes of length 08 bits: 92 ( 1%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2590 ( 36%)
# codes of length 03 bits: 1357 ( 19%)
# codes of length 04 bits: 1187 ( 17%)
# codes of length 05 bits: 856 ( 12%)
# codes of length 06 bits: 616 ( 9%)
# codes of length 07 bits: 346 ( 5%)
# codes of length 08 bits: 109 ( 2%)
# codes of length 09 bits: 39 ( 1%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 223973 ( 44%)
# codes of length 03 bits: 69375 ( 14%)
# codes of length 04 bits: 93550 ( 19%)
# codes of length 05 bits: 58421 ( 12%)
# codes of length 06 bits: 13137 ( 3%)
# codes of length 07 bits: 22630 ( 4%)
# codes of length 08 bits: 9176 ( 2%)
# codes of length 09 bits: 6545 ( 1%)
# codes of length 10 bits: 3947 ( 1%)
# codes of length 11 bits: 1890 ( 0%)
# codes of length 12 bits: 1162 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 77 ( 0%)
# codes of length 16 bits: 1763 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 44319 ( 35%)
# codes of length 03 bits: 21048 ( 17%)
# codes of length 04 bits: 24019 ( 19%)
# codes of length 05 bits: 17303 ( 14%)
# codes of length 06 bits: 9470 ( 7%)
# codes of length 07 bits: 2699 ( 2%)
# codes of length 08 bits: 3432 ( 3%)
# codes of length 09 bits: 2092 ( 2%)
# codes of length 10 bits: 717 ( 1%)
# codes of length 11 bits: 679 ( 1%)
# codes of length 12 bits: 85 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 150 ( 0%)
# codes of length 15 bits: 75 ( 0%)
# codes of length 16 bits: 425 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[117] (range: 0..255)
Brightest Pixel Search:
YCC=[ 812, 102, -218] RGB=[189,244,250] @ MCU[ 19, 16]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00083F27.7
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00083F28
*** Searching Compression Signatures ***
Signature: 0193B6220463E5A621ED25A53EC2FE7D
Signature (Rotated): 010D9693F4FC34B402EFA979BED34733
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[LEAD Technologies Inc ] [002 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

683
tests/Images/Input/Jpg/baseline/JpegSnoopReports/Lake.jpg.txt

@ -0,0 +1,683 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Lake.jpg]
Filesize: [206342] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 10392
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0008
[Make ] = "Canon"
[Model ] = "Canon EOS DIGITAL REBEL XSi"
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop Camera Raw 9.8 (Windows)"
[DateTime ] = "2016:12:29 12:57:54"
[ExifOffset ] = @ 0x00DE
Offset to Next IFD = 0x000002D6
EXIF IFD1 @ Absolute 0x000002E2
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x0334 = @ 0x0340
[JpegIFByteCount ] = 0x[0000255C] / 9564
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000EA
Dir Length = 0x001B
[ExposureTime ] = 1/640 s
[FNumber ] = F8.0
[ExposureProgram ] = Normal program
[ISOSpeedRatings ] = 200
[ExifVersion ] = 02.30
[DateTimeOriginal ] = "2009:07:19 17:00:36"
[DateTimeDigitized ] = "2009:07:19 17:00:36"
[ShutterSpeedValue ] = 9321928/1000000
[ApertureValue ] = 6/1
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 4/1
[MeteringMode ] = Pattern
[Flash ] = Flash did not fire
[FocalLength ] = 200 mm
[SubSecTimeOriginal ] = "73"
[SubSecTimeDigitized ] = "73"
[ColorSpace ] = Uncalibrated
[FocalPlaneXResolution ] = 4272000/878
[FocalPlaneYResolution ] = 2848000/584
[FocalPlaneResolutionUnit ] = Inch
[CustomRendered ] = Normal process
[ExposureMode ] = Auto exposure
[WhiteBalance ] = Auto white balance
[SceneCaptureType ] = Standard
*** Marker: APP13 (xFFED) ***
OFFSET: 0x0000289C
Length = 9752
Identifier = [Photoshop 3.0]
8BIM: [0x03ED] Name="" Len=[0x0010] DefinedName="ResolutionInfo structure"
Horizontal resolution = 300 pixels per inch
Width unit = inch
Vertical resolution = 300 pixels per inch
Height unit = inch
8BIM: [0x0404] Name="" Len=[0x003F] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 4
IPTC [002:055] Date Created = "20090719"
IPTC [002:060] Time Created = "170036"
IPTC [002:062] Digital Creation Date = "20090719"
IPTC [002:063] Digital Creation Time = "170036"
8BIM: [0x040C] Name="" Len=[0x2578] DefinedName="Thumbnail resources"
Format = 1
Width of thumbnail = 256 pixels
Height of thumbnail = 171 pixels
Widthbytes = 768 bytes
Total size = 131328 bytes
Size after compression = 9564 bytes
Bits per pixel = 24 bits
Number of planes = 1
JFIF data @ 0x0000293E
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0x52 C5 4C EC 1E FE 25 B8 CA 88 F7 0D 2B 5F 09 F5 | R.L...%.....+_..
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00004EB6
Length = 576
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 560 bytes
Preferred CMM Type : 'ADBE' (0x41444245)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1999-06-03 00:00:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'none' (0x6E6F6E65)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'ADBE' (0x41444245)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x000050F8
Length = 10738
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
|<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c128 79.159124, 2016/03/18-14:01:55 ">
| <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
| <rdf:Description rdf:about=""
| xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
| xmlns:xmp="http://ns.adobe.com/xap/1.0/"
| xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
| xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
| xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
| xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
| xmlns:dc="http://purl.org/dc/elements/1.1/"
| xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"
| aux:SerialNumber="470113872"
| aux:LensInfo="70/1 200/1 0/0 0/0"
| aux:Lens="EF70-200mm f/4L USM"
| aux:LensID="186"
| aux:ImageNumber="0"
| aux:ApproximateFocusDistance="4294967295/1"
| aux:FlashCompensation="0/1"
| aux:Firmware="1.0.4"
| xmp:ModifyDate="2016-12-29T12:57:54-08:00"
| xmp:CreateDate="2009-07-19T17:00:36.73"
| xmp:CreatorTool="Adobe Photoshop Camera Raw 9.8 (Windows)"
| xmp:MetadataDate="2016-12-29T12:57:54-08:00"
| photoshop:DateCreated="2009-07-19T17:00:36.73"
| xmpMM:DocumentID="xmp.did:47bcd1a4-3faa-ae43-8543-3b61d68d0367"
| xmpMM:OriginalDocumentID="A9041C696BAB0C0CD85DC7C772360D9E"
| xmpMM:InstanceID="xmp.iid:47bcd1a4-3faa-ae43-8543-3b61d68d0367"
| dc:format="image/jpeg"
| crs:RawFileName="IMG_2443.CR2"
| crs:Version="9.8"
| crs:ProcessVersion="6.7"
| crs:WhiteBalance="As Shot"
| crs:AutoWhiteVersion="134348800"
| crs:Temperature="5600"
| crs:Tint="+13"
| crs:Saturation="0"
| crs:Sharpness="25"
| crs:LuminanceSmoothing="0"
| crs:ColorNoiseReduction="25"
| crs:VignetteAmount="0"
| crs:ShadowTint="0"
| crs:RedHue="0"
| crs:RedSaturation="0"
| crs:GreenHue="0"
| crs:GreenSaturation="0"
| crs:BlueHue="0"
| crs:BlueSaturation="0"
| crs:Vibrance="0"
| crs:HueAdjustmentRed="0"
| crs:HueAdjustmentOrange="0"
| crs:HueAdjustmentYellow="0"
| crs:HueAdjustmentGreen="0"
| crs:HueAdjustmentAqua="0"
| crs:HueAdjustmentBlue="0"
| crs:HueAdjustmentPurple="0"
| crs:HueAdjustmentMagenta="0"
| crs:SaturationAdjustmentRed="0"
| crs:SaturationAdjustmentOrange="0"
| crs:SaturationAdjustmentYellow="0"
| crs:SaturationAdjustmentGreen="0"
| crs:SaturationAdjustmentAqua="0"
| crs:SaturationAdjustmentBlue="0"
| crs:SaturationAdjustmentPurple="0"
| crs:SaturationAdjustmentMagenta="0"
| crs:LuminanceAdjustmentRed="0"
| crs:LuminanceAdjustmentOrange="0"
| crs:LuminanceAdjustmentYellow="0"
| crs:LuminanceAdjustmentGreen="0"
| crs:LuminanceAdjustmentAqua="0"
| crs:LuminanceAdjustmentBlue="0"
| crs:LuminanceAdjustmentPurple="0"
| crs:LuminanceAdjustmentMagenta="0"
| crs:SplitToningShadowHue="0"
| crs:SplitToningShadowSaturation="0"
| crs:SplitToningHighlightHue="0"
| crs:SplitToningHighlightSaturation="0"
| crs:SplitToningBalance="0"
| crs:ParametricShadows="0"
| crs:ParametricDarks="0"
| crs:ParametricLights="0"
| crs:ParametricHighlights="0"
| crs:ParametricShadowSplit="25"
| crs:ParametricMidtoneSplit="50"
| crs:ParametricHighlightSplit="75"
| crs:SharpenRadius="+1.0"
| crs:SharpenDetail="25"
| crs:SharpenEdgeMasking="0"
| crs:PostCropVignetteAmount="0"
| crs:GrainAmount="0"
| crs:ColorNoiseReductionDetail="50"
| crs:ColorNoiseReductionSmoothness="50"
| crs:LensProfileEnable="0"
| crs:LensManualDistortionAmount="0"
| crs:PerspectiveVertical="0"
| crs:PerspectiveHorizontal="0"
| crs:PerspectiveRotate="0.0"
| crs:PerspectiveScale="100"
| crs:PerspectiveAspect="0"
| crs:PerspectiveUpright="0"
| crs:PerspectiveX="0.00"
| crs:PerspectiveY="0.00"
| crs:AutoLateralCA="0"
| crs:Exposure2012="0.00"
| crs:Contrast2012="0"
| crs:Highlights2012="0"
| crs:Shadows2012="0"
| crs:Whites2012="0"
| crs:Blacks2012="0"
| crs:Clarity2012="0"
| crs:DefringePurpleAmount="0"
| crs:DefringePurpleHueLo="30"
| crs:DefringePurpleHueHi="70"
| crs:DefringeGreenAmount="0"
| crs:DefringeGreenHueLo="40"
| crs:DefringeGreenHueHi="60"
| crs:Dehaze="0"
| crs:ToneMapStrength="0"
| crs:ConvertToGrayscale="False"
| crs:ToneCurveName="Medium Contrast"
| crs:ToneCurveName2012="Linear"
| crs:CameraProfile="Adobe Standard"
| crs:CameraProfileDigest="162E063AD6FEDE4357249927BD89FB79"
| crs:LensProfileSetup="LensDefaults"
| crs:UprightVersion="151388160"
| crs:UprightCenterMode="0"
| crs:UprightCenterNormX="0.5"
| crs:UprightCenterNormY="0.5"
| crs:UprightFocalMode="0"
| crs:UprightFocalLength35mm="35"
| crs:UprightPreview="False"
| crs:UprightTransformCount="6"
| crs:UprightFourSegmentsCount="0"
| crs:HasSettings="True"
| crs:HasCrop="False"
| crs:AlreadyApplied="True">
| <xmpMM:History>
| <rdf:Seq>
| <rdf:li
| stEvt:action="derived"
| stEvt:parameters="converted from image/x-canon-cr2 to image/jpeg, saved to new location"/>
| <rdf:li
| stEvt:action="saved"
| stEvt:instanceID="xmp.iid:47bcd1a4-3faa-ae43-8543-3b61d68d0367"
| stEvt:when="2016-12-29T12:57:54-08:00"
| stEvt:softwareAgent="Adobe Photoshop Camera Raw 9.8 (Windows)"
| stEvt:changed="/"/>
| </rdf:Seq>
| </xmpMM:History>
| <xmpMM:DerivedFrom
| stRef:documentID="A9041C696BAB0C0CD85DC7C772360D9E"
| stRef:originalDocumentID="A9041C696BAB0C0CD85DC7C772360D9E"/>
| <crs:ToneCurve>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>32, 22</rdf:li>
| <rdf:li>64, 56</rdf:li>
| <rdf:li>128, 128</rdf:li>
| <rdf:li>192, 196</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurve>
| <crs:ToneCurveRed>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveRed>
| <crs:ToneCurveGreen>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveGreen>
| <crs:ToneCurveBlue>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveBlue>
| <crs:ToneCurvePV2012>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012>
| <crs:ToneCurvePV2012Red>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Red>
| <crs:ToneCurvePV2012Green>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Green>
| <crs:ToneCurvePV2012Blue>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Blue>
| </rdf:Description>
| </rdf:RDF>
|</x:xmpmeta>
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00007AEC
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
Approx quality factor = 88.28 (scaling=23.43 variance=111.68)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 90.19 (scaling=19.62 variance=201.04)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00007B72
Length = 4
interval = 160
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x00007B78
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 49152
APP14Flags1 = 0
ColorTransform = 1 [YCbCr]
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00007B88
Frame header length = 17
Precision = 8
Number of Lines = 853
Samples per Line = 1280
Image Size = 1280 x 853
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007B9B
Huffman table length = 159
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 03
Codes of length 03 bits (003 total): 01 02 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (001 total): 08
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 006
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (002 total): 05 41
Codes of length 07 bits (003 total): 13 22 51
Codes of length 08 bits (006 total): 32 61 71 81 91 A1
Codes of length 09 bits (005 total): 06 14 23 42 B1
Codes of length 10 bits (002 total): 52 C1
Codes of length 11 bits (004 total): 15 33 62 D1
Codes of length 12 bits (004 total): 07 72 E1 F1
Codes of length 13 bits (005 total): 16 24 43 82 F0
Codes of length 14 bits (003 total): 34 92 A2
Codes of length 15 bits (000 total):
Codes of length 16 bits (011 total): 53 63 C2 25 73 B2 D2 26 54 93 E2
Total number of codes: 054
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 02
Codes of length 05 bits (000 total):
Codes of length 06 bits (002 total): 12 21
Codes of length 07 bits (002 total): 03 31
Codes of length 08 bits (003 total): 13 41 51
Codes of length 09 bits (001 total): 61
Codes of length 10 bits (000 total):
Codes of length 11 bits (002 total): 04 71
Codes of length 12 bits (003 total): 14 22 81
Codes of length 13 bits (001 total): 32
Codes of length 14 bits (001 total): 42
Codes of length 15 bits (001 total): 91
Codes of length 16 bits (000 total):
Total number of codes: 020
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007C3C
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00007C4A
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00032604.0
Compression stats:
Compression Ratio: 18.77:1
Bits per pixel: 1.28:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 8237 ( 48%)
# codes of length 03 bits: 7451 ( 44%)
# codes of length 04 bits: 930 ( 5%)
# codes of length 05 bits: 300 ( 2%)
# codes of length 06 bits: 197 ( 1%)
# codes of length 07 bits: 5 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 16681 ( 49%)
# codes of length 02 bits: 10125 ( 30%)
# codes of length 03 bits: 5138 ( 15%)
# codes of length 04 bits: 1825 ( 5%)
# codes of length 05 bits: 432 ( 1%)
# codes of length 06 bits: 39 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 104267 ( 49%)
# codes of length 03 bits: 23564 ( 11%)
# codes of length 04 bits: 44372 ( 21%)
# codes of length 05 bits: 19037 ( 9%)
# codes of length 06 bits: 5565 ( 3%)
# codes of length 07 bits: 5437 ( 3%)
# codes of length 08 bits: 5066 ( 2%)
# codes of length 09 bits: 2163 ( 1%)
# codes of length 10 bits: 491 ( 0%)
# codes of length 11 bits: 407 ( 0%)
# codes of length 12 bits: 211 ( 0%)
# codes of length 13 bits: 115 ( 0%)
# codes of length 14 bits: 36 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 26 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 34240 ( 51%)
# codes of length 02 bits: 15658 ( 24%)
# codes of length 03 bits: 7424 ( 11%)
# codes of length 04 bits: 3865 ( 6%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 3125 ( 5%)
# codes of length 07 bits: 1208 ( 2%)
# codes of length 08 bits: 744 ( 1%)
# codes of length 09 bits: 113 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 60 ( 0%)
# codes of length 12 bits: 60 ( 0%)
# codes of length 13 bits: 9 ( 0%)
# codes of length 14 bits: 4 ( 0%)
# codes of length 15 bits: 1 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[122] (range: 0..255)
Brightest Pixel Search:
YCC=[ 714, -42, 42] RGB=[224,215,206] @ MCU[113, 24]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 106
Next position in scan buffer: Offset 0x00032604.0
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00032604
*** Embedded JPEG Thumbnail ***
Offset: 0x00000340
Length: 0x0000255C (9564)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: DQT
Length = 132
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
* Embedded Thumb Marker: DRI
Length = 4
* Embedded Thumb Marker: APP14
Length = 14
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 171
Samples per Line = 256
Image Size = 256 x 171
* Embedded Thumb Marker: DHT
Length = 148
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 9212 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 01180AF3DE63318828A86409EF4013DD
*** Searching Compression Signatures ***
Signature: 01180AF3DE63318828A86409EF4013DD
Signature (Rotated): 01180AF3DE63318828A86409EF4013DD
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: OK [Canon] [Canon EOS DIGITAL REBEL XSi]
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop Camera Raw 9.8 (Windows)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 08 ]
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
Appears to be new signature for known software.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

282
tests/Images/Input/Jpg/baseline/JpegSnoopReports/MultiScanBaselineCMYK.jpg.txt

@ -0,0 +1,282 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\MultiScanBaselineCMYK.jpg]
Filesize: [47443] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x00000014
Length = 14
DCTEncodeVersion = 25600
APP14Flags0 = 0
APP14Flags1 = 0
ColorTransform = 2 [YCCK]
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x00000024
Comment length = 38
Comment=Created by fCoder Graphics Processor
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000004C
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 5 3 3 5 7 12 15 18
DQT, Row #1: 4 4 4 6 8 17 18 17
DQT, Row #2: 4 4 5 7 12 17 21 17
DQT, Row #3: 4 5 7 9 15 26 24 19
DQT, Row #4: 5 7 11 17 20 33 31 23
DQT, Row #5: 7 11 17 19 24 31 34 28
DQT, Row #6: 15 19 23 26 31 36 36 30
DQT, Row #7: 22 28 29 29 34 30 31 30
Approx quality factor = 84.93 (scaling=30.13 variance=1.05)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000091
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 5 5 7 14 30 30 30 30
DQT, Row #1: 5 6 8 20 30 30 30 30
DQT, Row #2: 7 8 17 30 30 30 30 30
DQT, Row #3: 14 20 30 30 30 30 30 30
DQT, Row #4: 30 30 30 30 30 30 30 30
DQT, Row #5: 30 30 30 30 30 30 30 30
DQT, Row #6: 30 30 30 30 30 30 30 30
DQT, Row #7: 30 30 30 30 30 30 30 30
Approx quality factor = 84.93 (scaling=30.15 variance=0.29)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000000D6
Frame header length = 20
Precision = 8
Number of Lines = 842
Samples per Line = 595
Image Size = 595 x 842
Raw Image Orientation = Portrait
Number of Img components = 4
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Cr)
Component[4]: ID=0x04, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (K)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000EC
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000010D
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000001C4
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000001E5
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000029C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00005825
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000766A
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000A1FA
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x04, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000B951
*** Searching Compression Signatures ***
Signature: 0155D875C95B74D0F3C5835A62516F48
Signature (Rotated): 01D38A25358EB7649A254E19F1D46600
File Offset: 0 bytes
Chroma subsampling: ?x?
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[Nokia ] [N73 ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 8100 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
SW :[IJG Library ] [085 ]
SW :[Picasa ] [085 (Normal) ]
SW :[ZoomBrowser EX ] [medium ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [085 ]
SW :[IrfanView ] [085 ]
SW :[idImager ] [085 ]
SW :[FastStone Image Viewer ] [085 ]
SW :[NeatImage ] [085 ]
SW :[Paint.NET ] [085 ]
SW :[Photomatix ] [085 ]
SW :[XnView ] [085 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

683
tests/Images/Input/Jpg/baseline/JpegSnoopReports/Snake.jpg.txt

@ -0,0 +1,683 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Snake.jpg]
Filesize: [165200] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 11941
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0008
[Make ] = "Canon"
[Model ] = "Canon EOS DIGITAL REBEL XSi"
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop Camera Raw 9.8 (Windows)"
[DateTime ] = "2016:12:29 12:57:50"
[ExifOffset ] = @ 0x00DE
Offset to Next IFD = 0x000002D6
EXIF IFD1 @ Absolute 0x000002E2
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x0334 = @ 0x0340
[JpegIFByteCount ] = 0x[00002B69] / 11113
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000EA
Dir Length = 0x001B
[ExposureTime ] = 1/25 s
[FNumber ] = F4.0
[ExposureProgram ] = Shutter priority
[ISOSpeedRatings ] = 250
[ExifVersion ] = 02.30
[DateTimeOriginal ] = "2009:07:19 13:25:29"
[DateTimeDigitized ] = "2009:07:19 13:25:29"
[ShutterSpeedValue ] = 4643856/1000000
[ApertureValue ] = 4/1
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 4/1
[MeteringMode ] = Pattern
[Flash ] = Flash did not fire
[FocalLength ] = 200 mm
[SubSecTimeOriginal ] = "03"
[SubSecTimeDigitized ] = "03"
[ColorSpace ] = Uncalibrated
[FocalPlaneXResolution ] = 4272000/878
[FocalPlaneYResolution ] = 2848000/584
[FocalPlaneResolutionUnit ] = Inch
[CustomRendered ] = Normal process
[ExposureMode ] = Auto exposure
[WhiteBalance ] = Auto white balance
[SceneCaptureType ] = Standard
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00002EA9
Length = 11302
Identifier = [Photoshop 3.0]
8BIM: [0x03ED] Name="" Len=[0x0010] DefinedName="ResolutionInfo structure"
Horizontal resolution = 300 pixels per inch
Width unit = inch
Vertical resolution = 300 pixels per inch
Height unit = inch
8BIM: [0x0404] Name="" Len=[0x003F] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 4
IPTC [002:055] Date Created = "20090719"
IPTC [002:060] Time Created = "132529"
IPTC [002:062] Digital Creation Date = "20090719"
IPTC [002:063] Digital Creation Time = "132529"
8BIM: [0x040C] Name="" Len=[0x2B85] DefinedName="Thumbnail resources"
Format = 1
Width of thumbnail = 256 pixels
Height of thumbnail = 171 pixels
Widthbytes = 768 bytes
Total size = 131328 bytes
Size after compression = 11113 bytes
Bits per pixel = 24 bits
Number of planes = 1
JFIF data @ 0x00002F4B
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0xEE 2F A2 47 C5 F8 ED 07 08 CD FF 82 A0 D1 7F F2 | ./.G............
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00005AD1
Length = 576
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 560 bytes
Preferred CMM Type : 'ADBE' (0x41444245)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1999-06-03 00:00:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'none' (0x6E6F6E65)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'ADBE' (0x41444245)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00005D13
Length = 10733
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
|<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c128 79.159124, 2016/03/18-14:01:55 ">
| <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
| <rdf:Description rdf:about=""
| xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
| xmlns:xmp="http://ns.adobe.com/xap/1.0/"
| xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
| xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
| xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
| xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
| xmlns:dc="http://purl.org/dc/elements/1.1/"
| xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"
| aux:SerialNumber="470113872"
| aux:LensInfo="70/1 200/1 0/0 0/0"
| aux:Lens="EF70-200mm f/4L USM"
| aux:LensID="186"
| aux:ImageNumber="0"
| aux:ApproximateFocusDistance="121/100"
| aux:FlashCompensation="0/1"
| aux:Firmware="1.0.4"
| xmp:ModifyDate="2016-12-29T12:57:50-08:00"
| xmp:CreateDate="2009-07-19T13:25:29.03"
| xmp:CreatorTool="Adobe Photoshop Camera Raw 9.8 (Windows)"
| xmp:MetadataDate="2016-12-29T12:57:50-08:00"
| photoshop:DateCreated="2009-07-19T13:25:29.03"
| xmpMM:DocumentID="xmp.did:b16e4ed6-3504-b044-b578-0016dee13c23"
| xmpMM:OriginalDocumentID="54CC515CE34BE4AB86FB9C16883EAAD4"
| xmpMM:InstanceID="xmp.iid:b16e4ed6-3504-b044-b578-0016dee13c23"
| dc:format="image/jpeg"
| crs:RawFileName="IMG_2325.CR2"
| crs:Version="9.8"
| crs:ProcessVersion="6.7"
| crs:WhiteBalance="As Shot"
| crs:AutoWhiteVersion="134348800"
| crs:Temperature="4200"
| crs:Tint="+54"
| crs:Saturation="0"
| crs:Sharpness="25"
| crs:LuminanceSmoothing="0"
| crs:ColorNoiseReduction="25"
| crs:VignetteAmount="0"
| crs:ShadowTint="0"
| crs:RedHue="0"
| crs:RedSaturation="0"
| crs:GreenHue="0"
| crs:GreenSaturation="0"
| crs:BlueHue="0"
| crs:BlueSaturation="0"
| crs:Vibrance="0"
| crs:HueAdjustmentRed="0"
| crs:HueAdjustmentOrange="0"
| crs:HueAdjustmentYellow="0"
| crs:HueAdjustmentGreen="0"
| crs:HueAdjustmentAqua="0"
| crs:HueAdjustmentBlue="0"
| crs:HueAdjustmentPurple="0"
| crs:HueAdjustmentMagenta="0"
| crs:SaturationAdjustmentRed="0"
| crs:SaturationAdjustmentOrange="0"
| crs:SaturationAdjustmentYellow="0"
| crs:SaturationAdjustmentGreen="0"
| crs:SaturationAdjustmentAqua="0"
| crs:SaturationAdjustmentBlue="0"
| crs:SaturationAdjustmentPurple="0"
| crs:SaturationAdjustmentMagenta="0"
| crs:LuminanceAdjustmentRed="0"
| crs:LuminanceAdjustmentOrange="0"
| crs:LuminanceAdjustmentYellow="0"
| crs:LuminanceAdjustmentGreen="0"
| crs:LuminanceAdjustmentAqua="0"
| crs:LuminanceAdjustmentBlue="0"
| crs:LuminanceAdjustmentPurple="0"
| crs:LuminanceAdjustmentMagenta="0"
| crs:SplitToningShadowHue="0"
| crs:SplitToningShadowSaturation="0"
| crs:SplitToningHighlightHue="0"
| crs:SplitToningHighlightSaturation="0"
| crs:SplitToningBalance="0"
| crs:ParametricShadows="0"
| crs:ParametricDarks="0"
| crs:ParametricLights="0"
| crs:ParametricHighlights="0"
| crs:ParametricShadowSplit="25"
| crs:ParametricMidtoneSplit="50"
| crs:ParametricHighlightSplit="75"
| crs:SharpenRadius="+1.0"
| crs:SharpenDetail="25"
| crs:SharpenEdgeMasking="0"
| crs:PostCropVignetteAmount="0"
| crs:GrainAmount="0"
| crs:ColorNoiseReductionDetail="50"
| crs:ColorNoiseReductionSmoothness="50"
| crs:LensProfileEnable="0"
| crs:LensManualDistortionAmount="0"
| crs:PerspectiveVertical="0"
| crs:PerspectiveHorizontal="0"
| crs:PerspectiveRotate="0.0"
| crs:PerspectiveScale="100"
| crs:PerspectiveAspect="0"
| crs:PerspectiveUpright="0"
| crs:PerspectiveX="0.00"
| crs:PerspectiveY="0.00"
| crs:AutoLateralCA="0"
| crs:Exposure2012="0.00"
| crs:Contrast2012="0"
| crs:Highlights2012="0"
| crs:Shadows2012="0"
| crs:Whites2012="0"
| crs:Blacks2012="0"
| crs:Clarity2012="0"
| crs:DefringePurpleAmount="0"
| crs:DefringePurpleHueLo="30"
| crs:DefringePurpleHueHi="70"
| crs:DefringeGreenAmount="0"
| crs:DefringeGreenHueLo="40"
| crs:DefringeGreenHueHi="60"
| crs:Dehaze="0"
| crs:ToneMapStrength="0"
| crs:ConvertToGrayscale="False"
| crs:ToneCurveName="Medium Contrast"
| crs:ToneCurveName2012="Linear"
| crs:CameraProfile="Adobe Standard"
| crs:CameraProfileDigest="162E063AD6FEDE4357249927BD89FB79"
| crs:LensProfileSetup="LensDefaults"
| crs:UprightVersion="151388160"
| crs:UprightCenterMode="0"
| crs:UprightCenterNormX="0.5"
| crs:UprightCenterNormY="0.5"
| crs:UprightFocalMode="0"
| crs:UprightFocalLength35mm="35"
| crs:UprightPreview="False"
| crs:UprightTransformCount="6"
| crs:UprightFourSegmentsCount="0"
| crs:HasSettings="True"
| crs:HasCrop="False"
| crs:AlreadyApplied="True">
| <xmpMM:History>
| <rdf:Seq>
| <rdf:li
| stEvt:action="derived"
| stEvt:parameters="converted from image/x-canon-cr2 to image/jpeg, saved to new location"/>
| <rdf:li
| stEvt:action="saved"
| stEvt:instanceID="xmp.iid:b16e4ed6-3504-b044-b578-0016dee13c23"
| stEvt:when="2016-12-29T12:57:50-08:00"
| stEvt:softwareAgent="Adobe Photoshop Camera Raw 9.8 (Windows)"
| stEvt:changed="/"/>
| </rdf:Seq>
| </xmpMM:History>
| <xmpMM:DerivedFrom
| stRef:documentID="54CC515CE34BE4AB86FB9C16883EAAD4"
| stRef:originalDocumentID="54CC515CE34BE4AB86FB9C16883EAAD4"/>
| <crs:ToneCurve>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>32, 22</rdf:li>
| <rdf:li>64, 56</rdf:li>
| <rdf:li>128, 128</rdf:li>
| <rdf:li>192, 196</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurve>
| <crs:ToneCurveRed>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveRed>
| <crs:ToneCurveGreen>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveGreen>
| <crs:ToneCurveBlue>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurveBlue>
| <crs:ToneCurvePV2012>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012>
| <crs:ToneCurvePV2012Red>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Red>
| <crs:ToneCurvePV2012Green>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Green>
| <crs:ToneCurvePV2012Blue>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurvePV2012Blue>
| </rdf:Description>
| </rdf:RDF>
|</x:xmpmeta>
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00008702
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
Approx quality factor = 88.28 (scaling=23.43 variance=111.68)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 90.19 (scaling=19.62 variance=201.04)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00008788
Length = 4
interval = 160
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x0000878E
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 49152
APP14Flags1 = 0
ColorTransform = 1 [YCbCr]
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000879E
Frame header length = 17
Precision = 8
Number of Lines = 853
Samples per Line = 1280
Image Size = 1280 x 853
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000087B1
Huffman table length = 153
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 02 03
Codes of length 03 bits (003 total): 01 04 05
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (001 total): 08
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (001 total): 06
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (002 total): 00 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (001 total): 21
Codes of length 06 bits (003 total): 05 12 31
Codes of length 07 bits (003 total): 13 41 51
Codes of length 08 bits (003 total): 06 22 61
Codes of length 09 bits (003 total): 14 32 71
Codes of length 10 bits (003 total): 42 81 91
Codes of length 11 bits (003 total): 15 23 A1
Codes of length 12 bits (004 total): 07 52 B1 C1
Codes of length 13 bits (001 total): 33
Codes of length 14 bits (002 total): 24 43
Codes of length 15 bits (002 total): 62 D1
Codes of length 16 bits (011 total): 16 34 72 E1 25 53 63 92 82 A2 F0
Total number of codes: 045
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 02
Codes of length 05 bits (000 total):
Codes of length 06 bits (003 total): 03 12 21
Codes of length 07 bits (001 total): 31
Codes of length 08 bits (000 total):
Codes of length 09 bits (002 total): 04 41
Codes of length 10 bits (003 total): 13 22 51
Codes of length 11 bits (000 total):
Codes of length 12 bits (003 total): 32 61 71
Codes of length 13 bits (000 total):
Codes of length 14 bits (003 total): 05 14 42
Codes of length 15 bits (000 total):
Codes of length 16 bits (003 total): 81 52 62
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000884C
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000885A
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0002854E.0
Compression stats:
Compression Ratio: 25.14:1
Bits per pixel: 0.95:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 7183 ( 42%)
# codes of length 03 bits: 7286 ( 43%)
# codes of length 04 bits: 1551 ( 9%)
# codes of length 05 bits: 856 ( 5%)
# codes of length 06 bits: 218 ( 1%)
# codes of length 07 bits: 26 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 12266 ( 36%)
# codes of length 02 bits: 11394 ( 33%)
# codes of length 03 bits: 6548 ( 19%)
# codes of length 04 bits: 2911 ( 9%)
# codes of length 05 bits: 875 ( 3%)
# codes of length 06 bits: 241 ( 1%)
# codes of length 07 bits: 5 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 59325 ( 45%)
# codes of length 03 bits: 31160 ( 24%)
# codes of length 04 bits: 18131 ( 14%)
# codes of length 05 bits: 4871 ( 4%)
# codes of length 06 bits: 9522 ( 7%)
# codes of length 07 bits: 4029 ( 3%)
# codes of length 08 bits: 2270 ( 2%)
# codes of length 09 bits: 1006 ( 1%)
# codes of length 10 bits: 515 ( 0%)
# codes of length 11 bits: 268 ( 0%)
# codes of length 12 bits: 195 ( 0%)
# codes of length 13 bits: 24 ( 0%)
# codes of length 14 bits: 29 ( 0%)
# codes of length 15 bits: 20 ( 0%)
# codes of length 16 bits: 26 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 34240 ( 51%)
# codes of length 02 bits: 16000 ( 24%)
# codes of length 03 bits: 5994 ( 9%)
# codes of length 04 bits: 5610 ( 8%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 3610 ( 5%)
# codes of length 07 bits: 600 ( 1%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 410 ( 1%)
# codes of length 10 bits: 200 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 70 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 17 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 6 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[110] (range: 0..255)
Brightest Pixel Search:
YCC=[ 954, 14, -14] RGB=[244,248,248] @ MCU[124, 21]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 106
Next position in scan buffer: Offset 0x0002854D.3
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0002854E
*** Embedded JPEG Thumbnail ***
Offset: 0x00000340
Length: 0x00002B69 (11113)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: DQT
Length = 132
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
* Embedded Thumb Marker: DRI
Length = 4
* Embedded Thumb Marker: APP14
Length = 14
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 171
Samples per Line = 256
Image Size = 256 x 171
* Embedded Thumb Marker: DHT
Length = 150
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 10759 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 01180AF3DE63318828A86409EF4013DD
*** Searching Compression Signatures ***
Signature: 01180AF3DE63318828A86409EF4013DD
Signature (Rotated): 01180AF3DE63318828A86409EF4013DD
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: OK [Canon] [Canon EOS DIGITAL REBEL XSi]
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop Camera Raw 9.8 (Windows)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 08 ]
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
Appears to be new signature for known software.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

347
tests/Images/Input/Jpg/baseline/JpegSnoopReports/badeof.jpg.txt

@ -0,0 +1,347 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\badeof.jpg]
Filesize: [5770] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 149
Samples per Line = 227
Image Size = 227 x 149
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000D2
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000189
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000001AA
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000261
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000026F
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Compression stats:
Compression Ratio: 19.73:1
Bits per pixel: 1.22:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 88 ( 15%)
# codes of length 03 bits: 409 ( 68%)
# codes of length 04 bits: 66 ( 11%)
# codes of length 05 bits: 33 ( 6%)
# codes of length 06 bits: 4 ( 1%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 134 ( 45%)
# codes of length 03 bits: 68 ( 23%)
# codes of length 04 bits: 60 ( 20%)
# codes of length 05 bits: 26 ( 9%)
# codes of length 06 bits: 12 ( 4%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2706 ( 48%)
# codes of length 03 bits: 636 ( 11%)
# codes of length 04 bits: 1331 ( 23%)
# codes of length 05 bits: 473 ( 8%)
# codes of length 06 bits: 196 ( 3%)
# codes of length 07 bits: 169 ( 3%)
# codes of length 08 bits: 66 ( 1%)
# codes of length 09 bits: 60 ( 1%)
# codes of length 10 bits: 28 ( 0%)
# codes of length 11 bits: 14 ( 0%)
# codes of length 12 bits: 4 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 5 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 697 ( 46%)
# codes of length 03 bits: 243 ( 16%)
# codes of length 04 bits: 294 ( 19%)
# codes of length 05 bits: 164 ( 11%)
# codes of length 06 bits: 68 ( 4%)
# codes of length 07 bits: 5 ( 0%)
# codes of length 08 bits: 35 ( 2%)
# codes of length 09 bits: 4 ( 0%)
# codes of length 10 bits: 2 ( 0%)
# codes of length 11 bits: 1 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[107] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1008, -9, 0] RGB=[254,254,250] @ MCU[ 4, 8]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00001687.2
*** Skipped 1 marker pad bytes ***
*** Marker: ??? (Unknown) (xFF00) ***
OFFSET: 0x00001689
WARNING: Unknown marker [0xFF00]
Stopping decode
Use [Img Search Fwd/Rev] to locate other valid embedded JPEGs
*** Searching Compression Signatures ***
Signature: 0182408A81A4ABF04D4A34A8A5E98C58
Signature (Rotated): 012D821C6AB210E2A753BE053B8F55D0
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[SONY ] [CYBERSHOT U ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
SW :[Apple Quicktime ] [0466-0467 ]
SW :[Digital Photo Professiona] [05 ]
SW :[IJG Library ] [075 ]
SW :[MS Paint ] [ ]
SW :[MS Visio ] [ ]
SW :[ZoomBrowser EX ] [low ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [075 ]
SW :[IrfanView ] [075 ]
SW :[idImager ] [075 ]
SW :[FastStone Image Viewer ] [075 ]
SW :[NeatImage ] [075 ]
SW :[Paint.NET ] [075 ]
SW :[Photomatix ] [075 ]
SW :[XnView ] [075 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]
*** Additional Info ***
NOTE: Data exists after EOF, range: 0x00000000-0x0000168A (5770 bytes)

434
tests/Images/Input/Jpg/baseline/JpegSnoopReports/badrst.jpg.txt

@ -0,0 +1,434 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\badrst.jpg]
Filesize: [74497] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 96 x 96 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 8628
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0003
[Orientation ] = 1 = Row 0: top, Col 0: left
[ExifOffset ] = @ 0x083E
Offset to Next IFD = 0x000010B6
EXIF IFD1 @ Absolute 0x000010D4
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 96/1
[YResolution ] = 96/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x1114 = @ 0x1132
[JpegIFByteCount ] = 0x[00001097] / 4247
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x0000085C
Dir Length = 0x0005
[DateTimeOriginal ] = "2016:02:28 11:17:08"
[DateTimeDigitized ] = "2016:02:28 11:17:08"
[SubSecTimeOriginal ] = "06"
[SubSecTimeDigitized ] = "06"
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x000021CA
Length = 2464
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
|<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
|<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:xmp="http://ns.adobe.com/xap/1.0/"><xmp:CreateDate>2016-02-28T11:17:08.057</xmp:CreateDate></rdf:Description></rdf:RDF></x:xmpmeta>
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00002B6C
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 8 10 12
DQT, Row #1: 2 2 3 4 5 12 12 11
DQT, Row #2: 3 3 3 5 8 11 14 11
DQT, Row #3: 3 3 4 6 10 17 16 12
DQT, Row #4: 4 4 7 11 14 22 21 15
DQT, Row #5: 5 7 11 13 16 21 23 18
DQT, Row #6: 10 13 16 17 21 24 24 20
DQT, Row #7: 14 18 19 20 22 20 21 20
Approx quality factor = 90.06 (scaling=19.88 variance=1.14)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00002BB1
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 4 5 9 20 20 20 20
DQT, Row #1: 4 4 5 13 20 20 20 20
DQT, Row #2: 5 5 11 20 20 20 20 20
DQT, Row #3: 9 13 20 20 20 20 20 20
DQT, Row #4: 20 20 20 20 20 20 20 20
DQT, Row #5: 20 20 20 20 20 20 20 20
DQT, Row #6: 20 20 20 20 20 20 20 20
DQT, Row #7: 20 20 20 20 20 20 20 20
Approx quality factor = 89.93 (scaling=20.14 variance=0.34)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00002BF6
Frame header length = 17
Precision = 8
Number of Lines = 480
Samples per Line = 640
Image Size = 640 x 480
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002C09
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002C2A
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002CE1
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002D02
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00002DB9
Length = 4
interval = 600
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002DBF
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00002DCD
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Expect Restart interval elapsed @ 0x00008802.4
ERROR: Restart marker not detected
*** ERROR: Can't find huffman bitstring @ 0x00008802.5, table 0, value [0xffffffe0]
*** ERROR: Bad huffman code @ 0x00008802.4
*** ERROR: Bad scan data in MCU(0,15): Lum CSS(0,0) @ Offset 0x00008802.5
MCU located at pixel=(0,240)
*** ERROR: Can't find huffman bitstring @ 0x00008802.6, table 0, value [0xffffffc0]
*** ERROR: Bad huffman code @ 0x00008802.5
*** ERROR: Bad scan data in MCU(0,15): Lum CSS(1,0) @ Offset 0x00008802.6
MCU located at pixel=(8,240)
*** ERROR: Can't find huffman bitstring @ 0x00008802.7, table 0, value [0xffffff80]
*** ERROR: Bad huffman code @ 0x00008802.6
*** ERROR: Bad scan data in MCU(0,15): Lum CSS(0,1) @ Offset 0x00008802.7
MCU located at pixel=(0,248)
*** ERROR: Can't find huffman bitstring @ 0x00008803.0, table 0, value [0xffffffff]
*** ERROR: Bad huffman code @ 0x00008802.7
*** ERROR: Bad scan data in MCU(0,15): Lum CSS(1,1) @ Offset 0x00008803.0
MCU located at pixel=(8,248)
*** ERROR: Can't find huffman bitstring @ 0x00008803.1, table 1, value [0xfffffffe]
*** ERROR: Bad huffman code @ 0x00008803.0
*** ERROR: Bad scan data in MCU(0,15): Chr(Cb) CSS(0,0) @ Offset 0x00008803.1
MCU located at pixel=(0,240)
*** ERROR: Can't find huffman bitstring @ 0x00008803.2, table 1, value [0xfffffffc]
*** ERROR: Bad huffman code @ 0x00008803.1
*** ERROR: Bad scan data in MCU(0,15): Chr(Cr) CSS(0,0) @ Offset 0x00008803.2
MCU located at pixel=(0,240)
*** ERROR: Can't find huffman bitstring @ 0x00008803.3, table 0, value [0xfffffff8]
*** ERROR: Bad huffman code @ 0x00008803.2
Only reported first 20 instances of this message...
Compression stats:
Compression Ratio: 14.80:1
Bits per pixel: 1.62:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 40 ( 1%)
# codes of length 02 bits: 202 ( 4%)
# codes of length 03 bits: 3515 ( 73%)
# codes of length 04 bits: 423 ( 9%)
# codes of length 05 bits: 338 ( 7%)
# codes of length 06 bits: 228 ( 5%)
# codes of length 07 bits: 54 ( 1%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 20 ( 1%)
# codes of length 02 bits: 1657 ( 69%)
# codes of length 03 bits: 311 ( 13%)
# codes of length 04 bits: 232 ( 10%)
# codes of length 05 bits: 123 ( 5%)
# codes of length 06 bits: 49 ( 2%)
# codes of length 07 bits: 8 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 32135 ( 43%)
# codes of length 03 bits: 8668 ( 12%)
# codes of length 04 bits: 15771 ( 21%)
# codes of length 05 bits: 7559 ( 10%)
# codes of length 06 bits: 2518 ( 3%)
# codes of length 07 bits: 3834 ( 5%)
# codes of length 08 bits: 1387 ( 2%)
# codes of length 09 bits: 1122 ( 2%)
# codes of length 10 bits: 562 ( 1%)
# codes of length 11 bits: 234 ( 0%)
# codes of length 12 bits: 131 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 57 ( 0%)
# codes of length 16 bits: 286 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 4525 ( 57%)
# codes of length 03 bits: 1153 ( 14%)
# codes of length 04 bits: 1341 ( 17%)
# codes of length 05 bits: 543 ( 7%)
# codes of length 06 bits: 281 ( 4%)
# codes of length 07 bits: 14 ( 0%)
# codes of length 08 bits: 93 ( 1%)
# codes of length 09 bits: 23 ( 0%)
# codes of length 10 bits: 3 ( 0%)
# codes of length 11 bits: 3 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 2 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[103] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1014, -3, -27] RGB=[248,255,252] @ MCU[ 0, 13]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 1
Next position in scan buffer: Offset 0x0001210E.0
*** Skipped 10 marker pad bytes ***
*** Marker: RST# ***
OFFSET: 0x0000880D
WARNING: Restart marker [0xFFD0] detected outside scan
Stopping decode
Use [Img Search Fwd/Rev] to locate other valid embedded JPEGs
*** Searching Compression Signatures ***
Signature: 013BA18D5561625796E986FDBC09F846
Signature (Rotated): 01AC57E12793DFA7C46C704625C5AF0F
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[??? ] [Treo 680 ] [ ] Yes
CAM:[Canon ] [Canon PowerShot Pro1 ] [fine ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E3100 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 9530 ] [Superfine ] Yes
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W1 ] [ ] No
CAM:[SONY ] [SONY ] [ ] No
SW :[ACDSee ] [ ]
SW :[FixFoto ] [fine ]
SW :[IJG Library ] [090 ]
SW :[ZoomBrowser EX ] [high ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [090 ]
SW :[IrfanView ] [090 ]
SW :[idImager ] [090 ]
SW :[FastStone Image Viewer ] [090 ]
SW :[NeatImage ] [090 ]
SW :[Paint.NET ] [090 ]
SW :[Photomatix ] [090 ]
SW :[XnView ] [090 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]
*** Additional Info ***
NOTE: Data exists after EOF, range: 0x00000000-0x00012301 (74497 bytes)

435
tests/Images/Input/Jpg/baseline/JpegSnoopReports/cmyk.jpg.txt

@ -0,0 +1,435 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\cmyk.jpg]
Filesize: [2531270] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x00000014
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 0
APP14Flags1 = 0
ColorTransform = 0 [Unknown (RGB or CMYK)]
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00000024
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 29
Profile Size : 1829080 bytes
Preferred CMM Type : 'HDM ' (0x48444D20)
Profile Version : 0.2.4.0 (0x02400000)
Profile Device/Class : Output Device profile ('prtr' (0x70727472))
Data Colour Space : cmykData ('CMYK' (0x434D594B))
Profile connection space (PCS) : 'Lab ' (0x4C616220)
Profile creation date : 2007-02-28 08:00:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : ? (0x00000000) ('....' (0x00000000))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : '....' (0x00000000)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Media-Relative Colorimetric
Profile creator : 'HDM ' (0x48444D20)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0000FE1E
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 2 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0001FC18
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 3 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0002FA12
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 4 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0003F80C
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 5 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0004F606
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 6 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0005F400
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 7 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0006F1FA
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 8 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0007EFF4
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 9 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0008EDEE
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 10 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0009EBE8
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 11 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000AE9E2
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 12 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000BE7DC
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 13 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000CE5D6
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 14 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000DE3D0
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 15 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000EE1CA
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 16 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000FDFC4
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 17 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0010DDBE
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 18 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0011DBB8
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 19 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0012D9B2
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 20 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0013D7AC
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 21 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0014D5A6
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 22 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0015D3A0
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 23 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0016D19A
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 24 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0017CF94
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 25 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0018CD8E
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 26 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0019CB88
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 27 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x001AC982
Length = 65016
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 28 of 29
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x001BC77C
Length = 9096
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 29 of 29
Only support decode of 1st ICC Marker
*** Marker: APP13 (xFFED) ***
OFFSET: 0x001BEB06
Length = 188
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x009F] DefinedName="IPTC-NAA record"
IPTC [002:025] Keywords = "jpeg, productbeelden, productie, ptc, ptc369x1, pulsar"
IPTC [002:210] ? = ???
IPTC [002:211] ? = ???
IPTC [002:212] ? = ???
IPTC [002:213] ? = ???
IPTC [002:214] ? = ???
IPTC [002:215] ? = ???
IPTC [002:216] ? = ???
IPTC [002:217] ? = ???
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x001BEBC4
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=2.99 variance=6.13)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x001BEC09
Frame header length = 20
Precision = 8
Number of Lines = 900
Samples per Line = 414
Image Size = 414 x 900
Raw Image Orientation = Portrait
Number of Img components = 4
Component[1]: ID=0x43, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Y)
Component[2]: ID=0x4D, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Cb)
Component[3]: ID=0x59, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Cr)
Component[4]: ID=0x4B, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (K)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x001BEC1F
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x001BEC40
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x001BECF7
Scan header length = 14
Number of img components = 4
Component[1]: selector=0x43, table=0(DC),0(AC)
Component[2]: selector=0x4D, table=0(DC),0(AC)
Component[3]: selector=0x59, table=0(DC),0(AC)
Component[4]: selector=0x4B, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00269FC4
*** Searching Compression Signatures ***
Signature: 01BC2BB6764A7F9709F829E766D93AAE
Signature (Rotated): 01BC2BB6764A7F9709F829E766D93AAE
File Offset: 0 bytes
Chroma subsampling: ?x?
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[IJG Library ] [100 Gray ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [100 Gray ]
SW :[IrfanView ] [100 Gray ]
SW :[idImager ] [100 Gray ]
SW :[FastStone Image Viewer ] [100 Gray ]
SW :[NeatImage ] [100 Gray ]
SW :[Paint.NET ] [100 Gray ]
SW :[Photomatix ] [100 Gray ]
SW :[XnView ] [100 Gray ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

454
tests/Images/Input/Jpg/baseline/JpegSnoopReports/exif.jpg.txt

@ -0,0 +1,454 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\exif.jpg]
Filesize: [32764] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 7678
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0009
[Make ] = "Canon"
[Model ] = "Canon PowerShot S40"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 180/1
[YResolution ] = 180/1
[ResolutionUnit ] = Inch
[DateTime ] = "2003:12:14 12:01:44"
[YCbCrPositioning ] = Centered
[ExifOffset ] = @ 0x00C4
Offset to Next IFD = 0x000005BE
EXIF IFD1 @ Absolute 0x000005DC
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 180/1
[YResolution ] = 180/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x07F4 = @ 0x0812
[JpegIFByteCount ] = 0x[00001548] / 5448
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000E2
Dir Length = 0x001F
[ExposureTime ] = 1/500 s
[FNumber ] = F4.9
[ExifVersion ] = 02.20
[DateTimeOriginal ] = "2003:12:14 12:01:44"
[DateTimeDigitized ] = "2003:12:14 12:01:44"
[ComponentsConfiguration ] = [Y Cb Cr .]
[CompressedBitsPerPixel ] = 5/1
[ShutterSpeedValue ] = 287/32
[ApertureValue ] = 149/32
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 194698/65536
[MeteringMode ] = CenterWeightedAverage
[Flash ] = Flash did not fire
[FocalLength ] = 21 mm
[MakerNote ] = @ 0x03AE
[UserComment ] = ""
[FlashPixVersion ] = 01.00
[ColorSpace ] = sRGB
[ExifImageWidth ] = 2272
[ExifImageHeight ] = 1704
[ExifInteroperabilityOffset ] = @ 0x0588
[FocalPlaneXResolution ] = 2272000/280
[FocalPlaneYResolution ] = 1704000/210
[FocalPlaneResolutionUnit ] = Inch
[SensingMethod ] = One-chip color area sensor
[FileSource ] = DSC
[CustomRendered ] = Normal process
[ExposureMode ] = Auto exposure
[WhiteBalance ] = Auto white balance
[DigitalZoomRatio ] = 2272/2272
[SceneCaptureType ] = Standard
EXIF MakerIFD @ Absolute 0x000003CC
Makernote decode option not enabled.
EXIF InteropIFD @ Absolute 0x000005A6
Dir Length = 0x0004
[InteroperabilityIndex ] = "R98"
[InteroperabilityVersion ] = 01.00
[RelatedImageWidth ] = 2272
[RelatedImageLength ] = 1704
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00001E14
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00001E59
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00001E9E
Frame header length = 17
Precision = 8
Number of Lines = 360
Samples per Line = 480
Image Size = 480 x 360
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001EB1
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (005 total): 01 02 04 05 06
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001ECF
Huffman table length = 65
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (002 total): 12 21
Codes of length 06 bits (004 total): 05 31 41 51
Codes of length 07 bits (004 total): 13 22 61 71
Codes of length 08 bits (004 total): 06 32 81 91
Codes of length 09 bits (004 total): 14 42 A1 B1
Codes of length 10 bits (004 total): 23 52 C1 D1
Codes of length 11 bits (005 total): 07 15 33 62 E1
Codes of length 12 bits (003 total): 43 72 F0
Codes of length 13 bits (003 total): 24 92 F1
Codes of length 14 bits (004 total): 16 34 53 82
Codes of length 15 bits (003 total): 25 83 C2
Codes of length 16 bits (000 total):
Total number of codes: 046
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001F12
Huffman table length = 26
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001F2E
Huffman table length = 45
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (004 total): 04 12 21 31
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (004 total): 13 22 51 61
Codes of length 08 bits (002 total): 32 71
Codes of length 09 bits (002 total): 05 14
Codes of length 10 bits (002 total): 23 91
Codes of length 11 bits (001 total): F0
Codes of length 12 bits (005 total): 33 42 81 A1 B1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 026
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001F5D
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00001F6B
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00007FFA.0
Compression stats:
Compression Ratio: 20.97:1
Bits per pixel: 1.14:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 509 ( 18%)
# codes of length 03 bits: 1910 ( 69%)
# codes of length 04 bits: 249 ( 9%)
# codes of length 05 bits: 87 ( 3%)
# codes of length 06 bits: 5 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 905 ( 66%)
# codes of length 03 bits: 213 ( 15%)
# codes of length 04 bits: 169 ( 12%)
# codes of length 05 bits: 84 ( 6%)
# codes of length 06 bits: 9 ( 1%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 14518 ( 48%)
# codes of length 03 bits: 2881 ( 10%)
# codes of length 04 bits: 6591 ( 22%)
# codes of length 05 bits: 2038 ( 7%)
# codes of length 06 bits: 2356 ( 8%)
# codes of length 07 bits: 926 ( 3%)
# codes of length 08 bits: 484 ( 2%)
# codes of length 09 bits: 220 ( 1%)
# codes of length 10 bits: 149 ( 0%)
# codes of length 11 bits: 76 ( 0%)
# codes of length 12 bits: 27 ( 0%)
# codes of length 13 bits: 14 ( 0%)
# codes of length 14 bits: 8 ( 0%)
# codes of length 15 bits: 3 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2784 ( 53%)
# codes of length 03 bits: 1230 ( 24%)
# codes of length 04 bits: 370 ( 7%)
# codes of length 05 bits: 582 ( 11%)
# codes of length 06 bits: 94 ( 2%)
# codes of length 07 bits: 121 ( 2%)
# codes of length 08 bits: 26 ( 0%)
# codes of length 09 bits: 14 ( 0%)
# codes of length 10 bits: 6 ( 0%)
# codes of length 11 bits: 2 ( 0%)
# codes of length 12 bits: 5 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[122] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1008, 9, 27] RGB=[255,251,255] @ MCU[ 15, 13]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00007FF9.7
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00007FFA
*** Embedded JPEG Thumbnail ***
Offset: 0x00000812
Length: 0x00001548 (5448)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: DQT
Length = 132
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 9 6 5 9 13 22 29 35
DQT, Row #1: 6 6 8 11 15 33 34 30
DQT, Row #2: 8 7 9 13 22 33 39 31
DQT, Row #3: 8 9 12 16 28 49 45 34
DQT, Row #4: 10 12 21 32 39 61 58 42
DQT, Row #5: 13 19 31 36 45 58 63 51
DQT, Row #6: 28 36 44 49 58 68 66 55
DQT, Row #7: 41 52 54 55 62 56 57 54
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 9 9 12 20 15 26 79 79
DQT, Row #1: 9 10 12 10 26 26 79 79
DQT, Row #2: 12 12 10 10 26 79 79 79
DQT, Row #3: 20 10 10 26 79 79 79 79
DQT, Row #4: 15 26 26 79 79 79 79 79
DQT, Row #5: 26 26 79 79 79 79 79 79
DQT, Row #6: 79 79 79 79 79 79 79 79
DQT, Row #7: 79 79 79 79 79 79 79 79
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 120
Samples per Line = 160
Image Size = 160 x 120
* Embedded Thumb Marker: DHT
Length = 418
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 4869 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 01D91E583DD0037108266E42ED3A262C
*** Searching Compression Signatures ***
Signature: 0182408A81A4ABF04D4A34A8A5E98C58
Signature (Rotated): 012D821C6AB210E2A753BE053B8F55D0
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: OK [Canon] [Canon PowerShot S40]
EXIF Makernotes: OK
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[SONY ] [CYBERSHOT U ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
SW :[Apple Quicktime ] [0466-0467 ]
SW :[Digital Photo Professiona] [05 ]
SW :[IJG Library ] [075 ]
SW :[MS Paint ] [ ]
SW :[MS Visio ] [ ]
SW :[ZoomBrowser EX ] [low ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [075 ]
SW :[IrfanView ] [075 ]
SW :[idImager ] [075 ]
SW :[FastStone Image Viewer ] [075 ]
SW :[NeatImage ] [075 ]
SW :[Paint.NET ] [075 ]
SW :[Photomatix ] [075 ]
SW :[XnView ] [075 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 4 - Uncertain if processed or original
While the EXIF fields indicate original, no compression signatures
in the current database were found matching this make/model
Appears to be new signature for known camera.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

339
tests/Images/Input/Jpg/baseline/JpegSnoopReports/gamma_dalai_lama_gray.jpg.txt

@ -0,0 +1,339 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\gamma_dalai_lama_gray.jpg]
Filesize: [84887] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x00000014
Comment length = 46
Comment= Scaled 1:2 this image wrongly becomes gray.
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000044
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=2.99 variance=6.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000089
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=1.54 variance=1.58)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000000CE
Frame header length = 17
Precision = 8
Number of Lines = 222
Samples per Line = 258
Image Size = 258 x 222
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000E1
Huffman table length = 25
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 01 02 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 006
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000FC
Huffman table length = 111
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (002 total): 05 21
Codes of length 06 bits (007 total): 00 06 12 13 14 31 41
Codes of length 07 bits (003 total): 22 51 61
Codes of length 08 bits (007 total): 07 15 16 32 42 71 81
Codes of length 09 bits (005 total): 08 23 52 62 91
Codes of length 10 bits (008 total): 33 43 44 72 A1 A2 B1 E3
Codes of length 11 bits (010 total): 17 24 53 54 55 66 82 92 95 C1
Codes of length 12 bits (009 total): 18 25 28 34 45 56 63 64 65
Codes of length 13 bits (014 total): 26 27 46 73 76 85 93 96 A3 A5 A6 C3 C7 D7
Codes of length 14 bits (010 total): 83 86 B2 B3 B8 C6 D3 D6 E8 F0
Codes of length 15 bits (011 total): 36 37 48 74 75 84 94 A8 B4 B6 D1
Codes of length 16 bits (001 total): D2
Total number of codes: 092
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000016D
Huffman table length = 27
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (001 total): 06
Codes of length 08 bits (001 total): 07
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000018A
Huffman table length = 121
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 02 03 04
Codes of length 04 bits (002 total): 05 11
Codes of length 05 bits (002 total): 06 21
Codes of length 06 bits (005 total): 07 08 12 13 31
Codes of length 07 bits (009 total): 00 09 14 16 17 22 32 41 51
Codes of length 08 bits (005 total): 0A 15 23 42 61
Codes of length 09 bits (005 total): 18 24 33 52 71
Codes of length 10 bits (002 total): 62 81
Codes of length 11 bits (007 total): 19 34 43 53 72 82 91
Codes of length 12 bits (007 total): 25 44 54 56 63 A1 A2
Codes of length 13 bits (014 total): 1A 26 27 28 46 47 55 57 64 73 97 B1 E3 E6
Codes of length 14 bits (007 total): 35 45 48 58 92 A4 C1
Codes of length 15 bits (002 total): D8 29
Codes of length 16 bits (031 total): 67 74 83 85 93 94 B2 36 68 87 88 98 D6 F0 37 39
65 66 75 78 84 96 A3 A6 A8 C3 C9 D1 D3 D9 DA
Total number of codes: 102
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000205
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00000213
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00014B95.0
Compression stats:
Compression Ratio: 2.04:1
Bits per pixel: 11.78:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 893 ( 97%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 23 ( 2%)
# codes of length 04 bits: 4 ( 0%)
# codes of length 05 bits: 4 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 1728 ( 94%)
# codes of length 02 bits: 46 ( 2%)
# codes of length 03 bits: 30 ( 2%)
# codes of length 04 bits: 18 ( 1%)
# codes of length 05 bits: 14 ( 1%)
# codes of length 06 bits: 6 ( 0%)
# codes of length 07 bits: 4 ( 0%)
# codes of length 08 bits: 2 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 14381 ( 45%)
# codes of length 03 bits: 3819 ( 12%)
# codes of length 04 bits: 4489 ( 14%)
# codes of length 05 bits: 2199 ( 7%)
# codes of length 06 bits: 3836 ( 12%)
# codes of length 07 bits: 911 ( 3%)
# codes of length 08 bits: 1089 ( 3%)
# codes of length 09 bits: 398 ( 1%)
# codes of length 10 bits: 294 ( 1%)
# codes of length 11 bits: 190 ( 1%)
# codes of length 12 bits: 84 ( 0%)
# codes of length 13 bits: 75 ( 0%)
# codes of length 14 bits: 21 ( 0%)
# codes of length 15 bits: 11 ( 0%)
# codes of length 16 bits: 1 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 17100 ( 23%)
# codes of length 03 bits: 31709 ( 42%)
# codes of length 04 bits: 7638 ( 10%)
# codes of length 05 bits: 4203 ( 6%)
# codes of length 06 bits: 6465 ( 9%)
# codes of length 07 bits: 5462 ( 7%)
# codes of length 08 bits: 1472 ( 2%)
# codes of length 09 bits: 804 ( 1%)
# codes of length 10 bits: 206 ( 0%)
# codes of length 11 bits: 296 ( 0%)
# codes of length 12 bits: 156 ( 0%)
# codes of length 13 bits: 164 ( 0%)
# codes of length 14 bits: 47 ( 0%)
# codes of length 15 bits: 7 ( 0%)
# codes of length 16 bits: 55 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[125] (range: 0..255)
Brightest Pixel Search:
YCC=[ -8, 0, 0] RGB=[127,127,127] @ MCU[ 0, 0]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00014B94.4
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00014B95
*** Searching Compression Signatures ***
Signature: 01BBB1709AC9C1F89220D955A31A8F34
Signature (Rotated): 01BBB1709AC9C1F89220D955A31A8F34
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[CASIO COMPUTER CO.,LTD ] [EX-Z750 ] [ ] No
CAM:[CASIO COMPUTER CO.,LTD. ] [EX-Z1000 ] [ ] No
CAM:[PENTAX ] [PENTAX Optio S5i ] [ ] No
CAM:[SIGMA ] [SIGMA SD9 ] [ ] No
SW :[ACDSee ] [100 ]
SW :[Apple ImageIO.framework ] [100 (Best) ]
SW :[Digital Photo Professiona] [10 ]
SW :[IJG Library ] [100 ]
SW :[MS Office Pic Mgr ] [ ]
SW :[Nikon Scan ] [Excellent Qualit]
SW :[Picasa ] [100 (Maximum) ]
SW :[ZoomBrowser EX ] [highest ]
SW :[EOS Viewer Utility ] [ ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [100 ]
SW :[IrfanView ] [100 ]
SW :[idImager ] [100 ]
SW :[FastStone Image Viewer ] [100 ]
SW :[NeatImage ] [100 ]
SW :[Paint.NET ] [100 ]
SW :[Photomatix ] [100 ]
SW :[XnView ] [100 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

211
tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg400jfif.jpg.txt

@ -0,0 +1,211 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\jpeg400jfif.jpg]
Filesize: [45066] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.2]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
Approx quality factor = 88.28 (scaling=23.43 variance=111.68)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00000059
Frame header length = 11
Precision = 8
Number of Lines = 800
Samples per Line = 600
Image Size = 600 x 800
Raw Image Orientation = Portrait
Number of Img components = 1
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00000066
Length = 4
interval = 75
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000006C
Huffman table length = 210
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (007 total): 04 05 03 02 06 01 00
Codes of length 04 bits (001 total): 07
Codes of length 05 bits (001 total): 08
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (001 total): 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 11 04 00
Codes of length 05 bits (003 total): 05 21 12
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 51 06 13 61
Codes of length 08 bits (002 total): 22 71
Codes of length 09 bits (006 total): 81 14 32 91 A1 07
Codes of length 10 bits (007 total): 15 B1 42 23 C1 52 D1
Codes of length 11 bits (003 total): E1 33 16
Codes of length 12 bits (004 total): 62 F0 24 72
Codes of length 13 bits (002 total): 82 F1
Codes of length 14 bits (006 total): 25 43 34 53 92 A2
Codes of length 15 bits (002 total): B2 63
Codes of length 16 bits (115 total): 73 C2 35 44 27 93 A3 B3 36 17 54 64 74 C3 D2 E2
08 26 83 09 0A 18 19 84 94 45 46 A4 B4 56 D3 55
28 1A F2 E3 F3 C4 D4 E4 F4 65 75 85 95 A5 B5 C5
D5 E5 F5 66 76 86 96 A6 B6 C6 D6 E6 F6 37 47 57
67 77 87 97 A7 B7 C7 D7 E7 F7 38 48 58 68 78 88
98 A8 B8 C8 D8 E8 F8 29 39 49 59 69 79 89 99 A9
B9 C9 D9 E9 F9 2A 3A 4A 5A 6A 7A 8A 9A AA BA CA
DA EA FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000140
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000014A
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0000B008.0
Compression stats:
Compression Ratio: 10.73:1
Bits per pixel: 0.75:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 7215 ( 96%)
# codes of length 04 bits: 146 ( 2%)
# codes of length 05 bits: 139 ( 2%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 26194 ( 42%)
# codes of length 03 bits: 2772 ( 4%)
# codes of length 04 bits: 16626 ( 27%)
# codes of length 05 bits: 5914 ( 9%)
# codes of length 06 bits: 4996 ( 8%)
# codes of length 07 bits: 2599 ( 4%)
# codes of length 08 bits: 988 ( 2%)
# codes of length 09 bits: 1360 ( 2%)
# codes of length 10 bits: 617 ( 1%)
# codes of length 11 bits: 60 ( 0%)
# codes of length 12 bits: 152 ( 0%)
# codes of length 13 bits: 60 ( 0%)
# codes of length 14 bits: 30 ( 0%)
# codes of length 15 bits: 5 ( 0%)
# codes of length 16 bits: 28 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[ 58] (range: 0..255)
Brightest Pixel Search:
YCC=[ 894, 0, 0] RGB=[239,239,239] @ MCU[ 35, 23]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 99
Next position in scan buffer: Offset 0x0000B007.2
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000B008
*** Searching Compression Signatures ***
Signature: 01BE82BEB1019CB30EB122273E78E87C
Signature (Rotated): 01BE82BEB1019CB30EB122273E78E87C
File Offset: 0 bytes
Chroma subsampling: Gray
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

412
tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg420exif.jpg.txt

@ -0,0 +1,412 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\jpeg420exif.jpg]
Filesize: [768608] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 8817
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0008
[Make ] = "Hewlett-Packard Company"
[Model ] = "HP PhotoSmart 715"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[YCbCrPositioning ] = Centered
[ExifOffset ] = @ 0x006E
Offset to Next IFD = 0x0000018E
EXIF IFD1 @ Absolute 0x0000019A
Dir Length = 0x0007
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x0C07 = @ 0x0C13
[JpegIFByteCount ] = 0x[00001658] / 5720
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x0000007A
Dir Length = 0x0015
[ExposureTime ] = 48/10000 s
[FNumber ] = F8.2
[ISOSpeedRatings ] = 100
[ExifVersion ] = 02.10
[DateTimeOriginal ] = "2001:10:02 14:57:31"
[DateTimeDigitized ] = "2001:10:02 14:57:31"
[ComponentsConfiguration ] = [Y Cb Cr .]
[CompressedBitsPerPixel ] = 20/10
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 20/10
[SubjectDistance ] = 5043/1000
[MeteringMode ] = CenterWeightedAverage
[LightSource ] = unknown
[Flash ] = Flash did not fire
[FocalLength ] = 7 mm
[MakerNote ] = @ 0x0282
[FlashPixVersion ] = 01.00
[ColorSpace ] = sRGB
[ExifImageWidth ] = 2048
[ExifImageHeight ] = 1536
[ExifInteroperabilityOffset ] = @ 0x0170
EXIF MakerIFD @ Absolute 0x0000028E
Makernote decode option not enabled.
EXIF InteropIFD @ Absolute 0x0000017C
Dir Length = 0x0002
[InteroperabilityIndex ] = "R98"
[InteroperabilityVersion ] = 01.00
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00002275
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 9 11 14
DQT, Row #1: 3 3 3 4 5 12 13 12
DQT, Row #2: 3 3 3 5 9 12 15 12
DQT, Row #3: 3 3 5 6 11 19 18 13
DQT, Row #4: 3 5 7 12 15 24 23 17
DQT, Row #5: 5 7 12 14 18 23 25 21
DQT, Row #6: 11 14 17 19 23 27 27 22
DQT, Row #7: 16 21 21 22 25 22 23 22
Approx quality factor = 89.24 (scaling=21.52 variance=2.21)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 3 5 10 22 22 22 22
DQT, Row #1: 3 5 5 14 22 22 22 22
DQT, Row #2: 5 5 11 22 22 22 22 22
DQT, Row #3: 10 14 22 22 22 22 22 22
DQT, Row #4: 22 22 22 22 22 22 22 22
DQT, Row #5: 22 22 22 22 22 22 22 22
DQT, Row #6: 22 22 22 22 22 22 22 22
DQT, Row #7: 22 22 22 22 22 22 22 22
Approx quality factor = 89.12 (scaling=21.76 variance=1.62)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000022FB
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000249F
Frame header length = 17
Precision = 8
Number of Lines = 1536
Samples per Line = 2048
Image Size = 2048 x 1536
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000024B2
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000024C0
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x000BBA5E.0
Compression stats:
Compression Ratio: 12.43:1
Bits per pixel: 1.93:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 4275 ( 9%)
# codes of length 03 bits: 32688 ( 67%)
# codes of length 04 bits: 5786 ( 12%)
# codes of length 05 bits: 3984 ( 8%)
# codes of length 06 bits: 2042 ( 4%)
# codes of length 07 bits: 377 ( 1%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 16194 ( 66%)
# codes of length 03 bits: 3495 ( 14%)
# codes of length 04 bits: 2416 ( 10%)
# codes of length 05 bits: 1460 ( 6%)
# codes of length 06 bits: 736 ( 3%)
# codes of length 07 bits: 261 ( 1%)
# codes of length 08 bits: 14 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 363342 ( 41%)
# codes of length 03 bits: 113855 ( 13%)
# codes of length 04 bits: 200569 ( 23%)
# codes of length 05 bits: 102577 ( 12%)
# codes of length 06 bits: 32874 ( 4%)
# codes of length 07 bits: 43593 ( 5%)
# codes of length 08 bits: 14054 ( 2%)
# codes of length 09 bits: 8847 ( 1%)
# codes of length 10 bits: 4365 ( 0%)
# codes of length 11 bits: 2009 ( 0%)
# codes of length 12 bits: 770 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 17 ( 0%)
# codes of length 16 bits: 780 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 60258 ( 49%)
# codes of length 03 bits: 17570 ( 14%)
# codes of length 04 bits: 20881 ( 17%)
# codes of length 05 bits: 14001 ( 11%)
# codes of length 06 bits: 6443 ( 5%)
# codes of length 07 bits: 842 ( 1%)
# codes of length 08 bits: 1737 ( 1%)
# codes of length 09 bits: 387 ( 0%)
# codes of length 10 bits: 169 ( 0%)
# codes of length 11 bits: 93 ( 0%)
# codes of length 12 bits: 31 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 2 ( 0%)
# codes of length 15 bits: 5 ( 0%)
# codes of length 16 bits: 1 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[108] (range: 0..255)
Brightest Pixel Search:
YCC=[ 996, 0, -33] RGB=[244,255,252] @ MCU[ 32, 59]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x000BBA5D.5
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000BBA5E
*** Embedded JPEG Thumbnail ***
Offset: 0x00000C13
Length: 0x00001658 (5720)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: DQT
Length = 132
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 10 6 6 10 14 26 32 40
DQT, Row #1: 8 8 8 12 16 36 38 36
DQT, Row #2: 8 8 10 14 26 36 44 36
DQT, Row #3: 8 10 14 18 32 56 52 40
DQT, Row #4: 10 14 22 36 44 70 66 50
DQT, Row #5: 14 22 36 42 52 68 74 60
DQT, Row #6: 32 42 50 56 66 78 78 64
DQT, Row #7: 46 60 62 64 74 64 66 64
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 10 10 14 30 64 64 64 64
DQT, Row #1: 10 14 16 42 64 64 64 64
DQT, Row #2: 14 16 36 64 64 64 64 64
DQT, Row #3: 30 42 64 64 64 64 64 64
DQT, Row #4: 64 64 64 64 64 64 64 64
DQT, Row #5: 64 64 64 64 64 64 64 64
DQT, Row #6: 64 64 64 64 64 64 64 64
DQT, Row #7: 64 64 64 64 64 64 64 64
* Embedded Thumb Marker: DHT
Length = 418
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 120
Samples per Line = 160
Image Size = 160 x 120
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 5141 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 0158E595F22440126FB766B33F56B158
*** Searching Compression Signatures ***
Signature: 010A5B03EB73D6AF719B39FCC8C3AE25
Signature (Rotated): 011326BE69D2A27FCF4DBCC33DEB07A2
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: OK [Hewlett-Packard Company] [HP PhotoSmart 715]
EXIF Makernotes: OK
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 4 - Uncertain if processed or original
While the EXIF fields indicate original, no compression signatures
in the current database were found matching this make/model
Appears to be new signature for known camera.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

330
tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg420small.jpg.txt

@ -0,0 +1,330 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\jpeg420small.jpg]
Filesize: [5276] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 96 x 96 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 5 3 3 5 7 12 15 18
DQT, Row #1: 4 4 4 6 8 17 18 17
DQT, Row #2: 4 4 5 7 12 17 21 17
DQT, Row #3: 4 5 7 9 15 26 24 19
DQT, Row #4: 5 7 11 17 20 33 31 23
DQT, Row #5: 7 11 17 19 24 31 34 28
DQT, Row #6: 15 19 23 26 31 36 36 30
DQT, Row #7: 22 28 29 29 34 30 31 30
Approx quality factor = 84.93 (scaling=30.13 variance=1.05)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 5 5 7 14 30 30 30 30
DQT, Row #1: 5 6 8 20 30 30 30 30
DQT, Row #2: 7 8 17 30 30 30 30 30
DQT, Row #3: 14 20 30 30 30 30 30 30
DQT, Row #4: 30 30 30 30 30 30 30 30
DQT, Row #5: 30 30 30 30 30 30 30 30
DQT, Row #6: 30 30 30 30 30 30 30 30
DQT, Row #7: 30 30 30 30 30 30 30 30
Approx quality factor = 84.93 (scaling=30.15 variance=0.29)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 100
Samples per Line = 200
Image Size = 200 x 100
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 04
Codes of length 03 bits (005 total): 00 02 03 05 07
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000CF
Huffman table length = 66
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 11 21
Codes of length 05 bits (002 total): 04 12
Codes of length 06 bits (004 total): 05 06 31 41
Codes of length 07 bits (004 total): 07 13 22 51
Codes of length 08 bits (002 total): 32 61
Codes of length 09 bits (005 total): 71 72 B1 D1 D2
Codes of length 10 bits (007 total): 14 23 33 62 81 91 A1
Codes of length 11 bits (010 total): 15 16 24 25 34 42 44 82 92 A2
Codes of length 12 bits (007 total): 26 52 53 54 64 94 C2
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 047
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000113
Huffman table length = 28
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 06 07
Codes of length 03 bits (002 total): 04 05
Codes of length 04 bits (003 total): 00 03 08
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 02
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000131
Huffman table length = 63
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 02
Codes of length 04 bits (002 total): 03 04
Codes of length 05 bits (004 total): 05 06 11 21
Codes of length 06 bits (007 total): 07 12 34 51 61 72 B1
Codes of length 07 bits (014 total): 13 15 16 17 31 32 33 35 41 53 71 91 92 D1
Codes of length 08 bits (004 total): 22 62 C1 E1
Codes of length 09 bits (006 total): 14 52 54 81 82 B2
Codes of length 10 bits (003 total): 36 42 C2
Codes of length 11 bits (001 total): F0
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 044
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000172
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00000180
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0000149A.0
Compression stats:
Compression Ratio: 12.27:1
Bits per pixel: 1.96:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 69 ( 19%)
# codes of length 03 bits: 232 ( 64%)
# codes of length 04 bits: 34 ( 9%)
# codes of length 05 bits: 19 ( 5%)
# codes of length 06 bits: 10 ( 3%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 76 ( 42%)
# codes of length 03 bits: 60 ( 33%)
# codes of length 04 bits: 36 ( 20%)
# codes of length 05 bits: 5 ( 3%)
# codes of length 06 bits: 5 ( 3%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2698 ( 51%)
# codes of length 03 bits: 506 ( 10%)
# codes of length 04 bits: 1064 ( 20%)
# codes of length 05 bits: 373 ( 7%)
# codes of length 06 bits: 334 ( 6%)
# codes of length 07 bits: 133 ( 3%)
# codes of length 08 bits: 37 ( 1%)
# codes of length 09 bits: 43 ( 1%)
# codes of length 10 bits: 33 ( 1%)
# codes of length 11 bits: 26 ( 0%)
# codes of length 12 bits: 7 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 276 ( 20%)
# codes of length 03 bits: 340 ( 25%)
# codes of length 04 bits: 214 ( 15%)
# codes of length 05 bits: 190 ( 14%)
# codes of length 06 bits: 141 ( 10%)
# codes of length 07 bits: 170 ( 12%)
# codes of length 08 bits: 29 ( 2%)
# codes of length 09 bits: 17 ( 1%)
# codes of length 10 bits: 6 ( 0%)
# codes of length 11 bits: 1 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[ 86] (range: 0..255)
Brightest Pixel Search:
YCC=[ 250, -405, 230] RGB=[198,156, 68] @ MCU[ 0, 6]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00001499.3
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000149A
*** Searching Compression Signatures ***
Signature: 0155D875C95B74D0F3C5835A62516F48
Signature (Rotated): 01D38A25358EB7649A254E19F1D46600
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[Nokia ] [N73 ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 8100 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
SW :[IJG Library ] [085 ]
SW :[Picasa ] [085 (Normal) ]
SW :[ZoomBrowser EX ] [medium ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [085 ]
SW :[IrfanView ] [085 ]
SW :[idImager ] [085 ]
SW :[FastStone Image Viewer ] [085 ]
SW :[NeatImage ] [085 ]
SW :[Paint.NET ] [085 ]
SW :[Photomatix ] [085 ]
SW :[XnView ] [085 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

405
tests/Images/Input/Jpg/baseline/JpegSnoopReports/jpeg444.jpg.txt

@ -0,0 +1,405 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\jpeg444.jpg]
Filesize: [5667] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.0]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 68
Identifier = [This is an unknown APP marker. Compliant decoders must ignore it.]
Identifier [This is an unknown APP marker. Compliant decoders must ignore it.] not supported. Skipping remainder.
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0000005A
Length = 68
Identifier = [This is an unknown APP marker. Compliant decoders must ignore it.]
Not supported. Skipping remainder.
*** Marker: APP3 (xFFE3) ***
OFFSET: 0x000000A0
Length = 68
*** Marker: APP4 (xFFE4) ***
OFFSET: 0x000000E6
Length = 68
*** Marker: APP5 (xFFE5) ***
OFFSET: 0x0000012C
Length = 68
*** Marker: APP6 (xFFE6) ***
OFFSET: 0x00000172
Length = 68
*** Marker: APP7 (xFFE7) ***
OFFSET: 0x000001B8
Length = 68
*** Marker: APP8 (xFFE8) ***
OFFSET: 0x000001FE
Length = 68
*** Marker: APP9 (xFFE9) ***
OFFSET: 0x00000244
Length = 68
*** Marker: APP10 (xFFEA) ***
OFFSET: 0x0000028A
Length = 68
*** Marker: APP11 (xFFEB) ***
OFFSET: 0x000002D0
Length = 68
*** Marker: APP12 (xFFEC) ***
OFFSET: 0x00000316
Length = 68
Identifier = [This is an unknown APP marker. Compliant decoders must ignore it.]
Not Photoshop DUCKY. Skipping remainder.
*** Marker: APP13 (xFFED) ***
OFFSET: 0x0000035C
Length = 68
Identifier = [This is an unknown APP marker. Compliant decoders must ignore it.]
Not Photoshop. Skipping remainder.
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x000003A2
Length = 68
DCTEncodeVersion = 26995
APP14Flags0 = 8289
APP14Flags1 = 28192
ColorTransform = 117 [???]
*** Marker: APP15 (xFFEF) ***
OFFSET: 0x000003E8
Length = 68
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000042E
Frame header length = 17
Precision = 8
Number of Lines = 256
Samples per Line = 256
Image Size = 256 x 256
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x02 (Chrom: Cr)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000441
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000486
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000004CB
Table length = 67
----
Precision=8 bits
Destination ID=2 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000510
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000006B4
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000006C2
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00001620.0
Compression stats:
Compression Ratio: 49.99:1
Bits per pixel: 0.48:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 992 ( 97%)
# codes of length 03 bits: 31 ( 3%)
# codes of length 04 bits: 0 ( 0%)
# codes of length 05 bits: 1 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 1023 ( 50%)
# codes of length 03 bits: 864 ( 42%)
# codes of length 04 bits: 128 ( 6%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 2 ( 0%)
# codes of length 08 bits: 31 ( 2%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 0 ( 0%)
# codes of length 04 bits: 1024 ( 50%)
# codes of length 05 bits: 1024 ( 50%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2048 ( 67%)
# codes of length 03 bits: 1024 ( 33%)
# codes of length 04 bits: 0 ( 0%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[126] (range: 0..255)
Brightest Pixel Search:
YCC=[ 984,-1026, -999] RGB=[ 75,255, 24] @ MCU[ 0, 31]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0000161F.6
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00001620
*** Searching Compression Signatures ***
Signature: 019DC7724B5425C464D28F2CF78F707E
Signature (Rotated): 016C4383FFABE35F063D8FCB331942C0
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E4800 ] [NORMAL ] No
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]
*** Additional Info ***
NOTE: Data exists after EOF, range: 0x00001622-0x00001623 (1 bytes)

338
tests/Images/Input/Jpg/baseline/JpegSnoopReports/ratio-1x1.jpg.txt

@ -0,0 +1,338 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\ratio-1x1.jpg]
Filesize: [34674] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 4 6 8 10
DQT, Row #1: 2 2 2 3 4 9 10 9
DQT, Row #2: 2 2 3 4 6 9 11 9
DQT, Row #3: 2 3 4 5 8 14 13 10
DQT, Row #4: 3 4 6 9 11 17 16 12
DQT, Row #5: 4 6 9 10 13 17 18 15
DQT, Row #6: 8 10 12 14 16 19 19 16
DQT, Row #7: 12 15 15 16 18 16 16 16
Approx quality factor = 91.86 (scaling=16.28 variance=1.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 3 4 8 16 16 16 16
DQT, Row #1: 3 3 4 11 16 16 16 16
DQT, Row #2: 4 4 9 16 16 16 16 16
DQT, Row #3: 8 11 16 16 16 16 16 16
DQT, Row #4: 16 16 16 16 16 16 16 16
DQT, Row #5: 16 16 16 16 16 16 16 16
DQT, Row #6: 16 16 16 16 16 16 16 16
DQT, Row #7: 16 16 16 16 16 16 16 16
Approx quality factor = 91.90 (scaling=16.20 variance=0.15)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 769
Samples per Line = 1900
Image Size = 1900 x 769
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 29
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 07 08
Codes of length 04 bits (002 total): 06 09
Codes of length 05 bits (002 total): 04 05
Codes of length 06 bits (003 total): 01 02 03
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000D0
Huffman table length = 78
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 01
Codes of length 04 bits (003 total): 02 03 04
Codes of length 05 bits (003 total): 05 06 11
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (005 total): 08 12 21 31 41
Codes of length 08 bits (005 total): 13 14 22 51 61
Codes of length 09 bits (003 total): 15 32 71
Codes of length 10 bits (009 total): 09 16 23 52 62 81 91 92 A1
Codes of length 11 bits (005 total): 17 33 42 72 82
Codes of length 12 bits (005 total): 24 43 54 93 B3
Codes of length 13 bits (006 total): 63 73 83 A2 B2 C2
Codes of length 14 bits (003 total): 25 44 A3
Codes of length 15 bits (009 total): 34 35 36 37 64 76 B1 B4 C1
Codes of length 16 bits (000 total):
Total number of codes: 059
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000120
Huffman table length = 28
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 05 06 07
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (000 total):
Codes of length 06 bits (003 total): 02 03 08
Codes of length 07 bits (001 total): 01
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000013E
Huffman table length = 64
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 01
Codes of length 04 bits (002 total): 02 03
Codes of length 05 bits (003 total): 04 05 11
Codes of length 06 bits (005 total): 06 21 31 71 81
Codes of length 07 bits (003 total): 41 51 91
Codes of length 08 bits (010 total): 12 13 14 22 32 61 A1 B1 C1 D1
Codes of length 09 bits (005 total): 15 33 42 E1 F0
Codes of length 10 bits (003 total): 07 23 52
Codes of length 11 bits (004 total): 43 62 72 82
Codes of length 12 bits (002 total): 92 F1
Codes of length 13 bits (001 total): B2
Codes of length 14 bits (005 total): 16 A2 C2 D2 E2
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 045
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000180
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000018E
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00008770.0
Compression stats:
Compression Ratio: 127.89:1
Bits per pixel: 0.19:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 22539 ( 97%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 379 ( 2%)
# codes of length 04 bits: 246 ( 1%)
# codes of length 05 bits: 91 ( 0%)
# codes of length 06 bits: 69 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 11012 ( 94%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 445 ( 4%)
# codes of length 04 bits: 105 ( 1%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 81 ( 1%)
# codes of length 07 bits: 19 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 23301 ( 56%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 4265 ( 10%)
# codes of length 04 bits: 7407 ( 18%)
# codes of length 05 bits: 3364 ( 8%)
# codes of length 06 bits: 767 ( 2%)
# codes of length 07 bits: 1399 ( 3%)
# codes of length 08 bits: 642 ( 2%)
# codes of length 09 bits: 201 ( 0%)
# codes of length 10 bits: 285 ( 1%)
# codes of length 11 bits: 99 ( 0%)
# codes of length 12 bits: 42 ( 0%)
# codes of length 13 bits: 30 ( 0%)
# codes of length 14 bits: 6 ( 0%)
# codes of length 15 bits: 9 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 11662 ( 60%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 1971 ( 10%)
# codes of length 04 bits: 1938 ( 10%)
# codes of length 05 bits: 1525 ( 8%)
# codes of length 06 bits: 1005 ( 5%)
# codes of length 07 bits: 339 ( 2%)
# codes of length 08 bits: 727 ( 4%)
# codes of length 09 bits: 148 ( 1%)
# codes of length 10 bits: 41 ( 0%)
# codes of length 11 bits: 23 ( 0%)
# codes of length 12 bits: 8 ( 0%)
# codes of length 13 bits: 2 ( 0%)
# codes of length 14 bits: 5 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[250] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1017, 0, 0] RGB=[255,255,255] @ MCU[ 0, 0]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0000876F.5
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00008770
*** Searching Compression Signatures ***
Signature: 01557A9AE226A38386271DFE13D64298
Signature (Rotated): 0167FCEDBA3A8E8CF822163DB3564762
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Konica Minolta Camera, In] [DiMAGE Z2 ] [ ] No
CAM:[Minolta Co., Ltd. ] [DiMAGE F100 ] [ ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E8700 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS CORPORATION ] [C8080WZ ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-P200 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[IJG Library ] [092 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [092 ]
SW :[IrfanView ] [092 ]
SW :[idImager ] [092 ]
SW :[FastStone Image Viewer ] [092 ]
SW :[NeatImage ] [092 ]
SW :[Paint.NET ] [092 ]
SW :[Photomatix ] [092 ]
SW :[XnView ] [092 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

342
tests/Images/Input/Jpg/baseline/JpegSnoopReports/testimgint.jpg.txt

@ -0,0 +1,342 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\testimgint.jpg]
Filesize: [5756] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 149
Samples per Line = 227
Image Size = 227 x 149
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000D2
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000189
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000001AA
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000261
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000026F
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0000167A.0
Compression stats:
Compression Ratio: 19.78:1
Bits per pixel: 1.21:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 86 ( 14%)
# codes of length 03 bits: 412 ( 69%)
# codes of length 04 bits: 65 ( 11%)
# codes of length 05 bits: 33 ( 6%)
# codes of length 06 bits: 4 ( 1%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 132 ( 44%)
# codes of length 03 bits: 70 ( 23%)
# codes of length 04 bits: 60 ( 20%)
# codes of length 05 bits: 26 ( 9%)
# codes of length 06 bits: 12 ( 4%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2692 ( 48%)
# codes of length 03 bits: 628 ( 11%)
# codes of length 04 bits: 1327 ( 23%)
# codes of length 05 bits: 471 ( 8%)
# codes of length 06 bits: 199 ( 4%)
# codes of length 07 bits: 170 ( 3%)
# codes of length 08 bits: 65 ( 1%)
# codes of length 09 bits: 58 ( 1%)
# codes of length 10 bits: 31 ( 1%)
# codes of length 11 bits: 15 ( 0%)
# codes of length 12 bits: 4 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 6 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 689 ( 46%)
# codes of length 03 bits: 244 ( 16%)
# codes of length 04 bits: 289 ( 19%)
# codes of length 05 bits: 158 ( 11%)
# codes of length 06 bits: 70 ( 5%)
# codes of length 07 bits: 5 ( 0%)
# codes of length 08 bits: 36 ( 2%)
# codes of length 09 bits: 5 ( 0%)
# codes of length 10 bits: 1 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[107] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1008, -9, 0] RGB=[254,254,250] @ MCU[ 4, 8]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00001679.6
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000167A
*** Searching Compression Signatures ***
Signature: 0182408A81A4ABF04D4A34A8A5E98C58
Signature (Rotated): 012D821C6AB210E2A753BE053B8F55D0
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[SONY ] [CYBERSHOT U ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
SW :[Apple Quicktime ] [0466-0467 ]
SW :[Digital Photo Professiona] [05 ]
SW :[IJG Library ] [075 ]
SW :[MS Paint ] [ ]
SW :[MS Visio ] [ ]
SW :[ZoomBrowser EX ] [low ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [075 ]
SW :[IrfanView ] [075 ]
SW :[idImager ] [075 ]
SW :[FastStone Image Viewer ] [075 ]
SW :[NeatImage ] [075 ]
SW :[Paint.NET ] [075 ]
SW :[Photomatix ] [075 ]
SW :[XnView ] [075 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

342
tests/Images/Input/Jpg/baseline/JpegSnoopReports/testorig.jpg.txt

@ -0,0 +1,342 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\testorig.jpg]
Filesize: [5770] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 149
Samples per Line = 227
Image Size = 227 x 149
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000D2
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000189
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000001AA
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000261
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000026F
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00001688.0
Compression stats:
Compression Ratio: 19.73:1
Bits per pixel: 1.22:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 88 ( 15%)
# codes of length 03 bits: 409 ( 68%)
# codes of length 04 bits: 66 ( 11%)
# codes of length 05 bits: 33 ( 6%)
# codes of length 06 bits: 4 ( 1%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 134 ( 45%)
# codes of length 03 bits: 68 ( 23%)
# codes of length 04 bits: 60 ( 20%)
# codes of length 05 bits: 26 ( 9%)
# codes of length 06 bits: 12 ( 4%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2706 ( 48%)
# codes of length 03 bits: 636 ( 11%)
# codes of length 04 bits: 1331 ( 23%)
# codes of length 05 bits: 473 ( 8%)
# codes of length 06 bits: 196 ( 3%)
# codes of length 07 bits: 169 ( 3%)
# codes of length 08 bits: 66 ( 1%)
# codes of length 09 bits: 60 ( 1%)
# codes of length 10 bits: 28 ( 0%)
# codes of length 11 bits: 14 ( 0%)
# codes of length 12 bits: 4 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 5 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 697 ( 46%)
# codes of length 03 bits: 243 ( 16%)
# codes of length 04 bits: 294 ( 19%)
# codes of length 05 bits: 164 ( 11%)
# codes of length 06 bits: 68 ( 4%)
# codes of length 07 bits: 5 ( 0%)
# codes of length 08 bits: 35 ( 2%)
# codes of length 09 bits: 4 ( 0%)
# codes of length 10 bits: 2 ( 0%)
# codes of length 11 bits: 1 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[107] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1008, -9, 0] RGB=[254,254,250] @ MCU[ 4, 8]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00001687.2
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00001688
*** Searching Compression Signatures ***
Signature: 0182408A81A4ABF04D4A34A8A5E98C58
Signature (Rotated): 012D821C6AB210E2A753BE053B8F55D0
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[SONY ] [CYBERSHOT U ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
SW :[Apple Quicktime ] [0466-0467 ]
SW :[Digital Photo Professiona] [05 ]
SW :[IJG Library ] [075 ]
SW :[MS Paint ] [ ]
SW :[MS Visio ] [ ]
SW :[ZoomBrowser EX ] [low ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [075 ]
SW :[IrfanView ] [075 ]
SW :[idImager ] [075 ]
SW :[FastStone Image Viewer ] [075 ]
SW :[NeatImage ] [075 ]
SW :[Paint.NET ] [075 ]
SW :[Photomatix ] [075 ]
SW :[XnView ] [075 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

367
tests/Images/Input/Jpg/baseline/JpegSnoopReports/turtle.jpg.txt

@ -0,0 +1,367 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\turtle.jpg]
Filesize: [55126] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 28 x 28 DPcm (dots per cm)
thumbnail = 0 x 0
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00000014
Length = 3256
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 3240 bytes
Preferred CMM Type : 'appl' (0x6170706C)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 2012-05-11 16:46:50
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : '....' (0x00000000)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'appl' (0x6170706C)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000CCE
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 4 6 8 10
DQT, Row #1: 2 2 2 3 4 9 10 9
DQT, Row #2: 2 2 3 4 6 9 11 9
DQT, Row #3: 2 3 4 5 8 14 13 10
DQT, Row #4: 3 4 6 9 11 17 16 12
DQT, Row #5: 4 6 9 10 13 17 18 15
DQT, Row #6: 8 10 12 14 16 19 19 16
DQT, Row #7: 12 15 15 16 18 16 16 16
Approx quality factor = 91.86 (scaling=16.28 variance=1.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000D13
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 3 4 8 16 16 16 16
DQT, Row #1: 3 3 4 11 16 16 16 16
DQT, Row #2: 4 4 9 16 16 16 16 16
DQT, Row #3: 8 11 16 16 16 16 16 16
DQT, Row #4: 16 16 16 16 16 16 16 16
DQT, Row #5: 16 16 16 16 16 16 16 16
DQT, Row #6: 16 16 16 16 16 16 16 16
DQT, Row #7: 16 16 16 16 16 16 16 16
Approx quality factor = 91.90 (scaling=16.20 variance=0.15)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00000D58
Frame header length = 17
Precision = 8
Number of Lines = 281
Samples per Line = 450
Image Size = 450 x 281
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000D6B
Huffman table length = 29
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 06
Codes of length 03 bits (004 total): 00 04 05 07
Codes of length 04 bits (003 total): 01 03 08
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000D8A
Huffman table length = 82
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 02 03 04
Codes of length 04 bits (003 total): 05 06 11
Codes of length 05 bits (002 total): 00 12
Codes of length 06 bits (004 total): 07 13 21 31
Codes of length 07 bits (003 total): 22 41 51
Codes of length 08 bits (004 total): 08 14 61 71
Codes of length 09 bits (006 total): 15 23 32 81 91 A1
Codes of length 10 bits (007 total): 16 42 52 55 94 B1 D2
Codes of length 11 bits (004 total): 33 62 72 C1
Codes of length 12 bits (007 total): 24 34 82 92 A2 D1 F0
Codes of length 13 bits (005 total): 17 43 53 54 E1
Codes of length 14 bits (006 total): 09 25 35 83 93 B2
Codes of length 15 bits (007 total): 18 26 44 64 73 A3 C2
Codes of length 16 bits (001 total): A4
Total number of codes: 063
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000DDE
Huffman table length = 28
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 04 05 06 07
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000DFC
Huffman table length = 76
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (004 total): 00 03 04 21
Codes of length 05 bits (003 total): 05 12 31
Codes of length 06 bits (004 total): 06 41 51 61
Codes of length 07 bits (006 total): 13 22 71 81 91 A1
Codes of length 08 bits (006 total): 07 14 32 52 B1 D1
Codes of length 09 bits (007 total): 15 42 53 62 72 92 C1
Codes of length 10 bits (005 total): 23 33 A2 E1 F0
Codes of length 11 bits (005 total): 16 17 34 82 B2
Codes of length 12 bits (007 total): 24 35 54 63 73 D2 F1
Codes of length 13 bits (004 total): 08 25 93 C2
Codes of length 14 bits (003 total): 43 C3 D3
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 057
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000E4A
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00000E58
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0000D754.0
Compression stats:
Compression Ratio: 7.37:1
Bits per pixel: 3.26:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 344 ( 16%)
# codes of length 03 bits: 1157 ( 55%)
# codes of length 04 bits: 453 ( 22%)
# codes of length 05 bits: 102 ( 5%)
# codes of length 06 bits: 32 ( 2%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 216 ( 21%)
# codes of length 03 bits: 672 ( 64%)
# codes of length 04 bits: 77 ( 7%)
# codes of length 05 bits: 59 ( 6%)
# codes of length 06 bits: 20 ( 2%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 11146 ( 23%)
# codes of length 03 bits: 21025 ( 43%)
# codes of length 04 bits: 8376 ( 17%)
# codes of length 05 bits: 3259 ( 7%)
# codes of length 06 bits: 2911 ( 6%)
# codes of length 07 bits: 840 ( 2%)
# codes of length 08 bits: 696 ( 1%)
# codes of length 09 bits: 499 ( 1%)
# codes of length 10 bits: 295 ( 1%)
# codes of length 11 bits: 93 ( 0%)
# codes of length 12 bits: 85 ( 0%)
# codes of length 13 bits: 26 ( 0%)
# codes of length 14 bits: 15 ( 0%)
# codes of length 15 bits: 8 ( 0%)
# codes of length 16 bits: 1 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 5260 ( 31%)
# codes of length 03 bits: 4077 ( 24%)
# codes of length 04 bits: 4031 ( 24%)
# codes of length 05 bits: 1544 ( 9%)
# codes of length 06 bits: 912 ( 5%)
# codes of length 07 bits: 626 ( 4%)
# codes of length 08 bits: 335 ( 2%)
# codes of length 09 bits: 163 ( 1%)
# codes of length 10 bits: 58 ( 0%)
# codes of length 11 bits: 27 ( 0%)
# codes of length 12 bits: 18 ( 0%)
# codes of length 13 bits: 6 ( 0%)
# codes of length 14 bits: 3 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[167] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1017, 3, -3] RGB=[253,255,255] @ MCU[ 26, 8]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0000D753.1
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000D754
*** Searching Compression Signatures ***
Signature: 01557A9AE226A38386271DFE13D64298
Signature (Rotated): 0167FCEDBA3A8E8CF822163DB3564762
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Konica Minolta Camera, In] [DiMAGE Z2 ] [ ] No
CAM:[Minolta Co., Ltd. ] [DiMAGE F100 ] [ ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E8700 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS CORPORATION ] [C8080WZ ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-P200 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[IJG Library ] [092 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [092 ]
SW :[IrfanView ] [092 ]
SW :[idImager ] [092 ]
SW :[FastStone Image Viewer ] [092 ]
SW :[NeatImage ] [092 ]
SW :[Paint.NET ] [092 ]
SW :[Photomatix ] [092 ]
SW :[XnView ] [092 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

640
tests/Images/Input/Jpg/baseline/JpegSnoopReports/ycck.jpg.txt

@ -0,0 +1,640 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\ycck.jpg]
Filesize: [611572] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 4452
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0007
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 720000/10000
[YResolution ] = 720000/10000
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop CC 2015.5 (Windows)"
[DateTime ] = "2016:08:23 18:21:25"
[ExifOffset ] = @ 0x00AC
Offset to Next IFD = 0x000000D8
EXIF IFD1 @ Absolute 0x000000E4
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x0136 = @ 0x0142
[JpegIFByteCount ] = 0x[00001026] / 4134
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000B8
Dir Length = 0x0003
[ColorSpace ] = Uncalibrated
[ExifImageWidth ] = 0x[00000200] / 512
[ExifImageHeight ] = 0x[00000200] / 512
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00001168
Length = 6522
Identifier = [Photoshop 3.0]
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
8BIM: [0x043A] Name="" Len=[0x00E5] DefinedName="Print Information"
Print Information =
| 0x00 00 00 10 00 00 00 01 00 00 00 00 00 0B 70 72 | ..............pr
| 0x69 6E 74 4F 75 74 70 75 74 00 00 00 05 00 00 00 | intOutput.......
| 0x00 50 73 74 53 62 6F 6F 6C 01 00 00 00 00 49 6E | .PstSbool.....In
| 0x74 65 65 6E 75 6D 00 00 00 00 49 6E 74 65 00 00 | teenum....Inte..
| 0x00 00 43 6C 72 6D 00 00 00 0F 70 72 69 6E 74 53 | ..Clrm....printS
| 0x69 78 74 65 65 6E 42 69 74 62 6F 6F 6C 00 00 00 | ixteenBitbool...
| 0x00 0B 70 72 69 6E 74 65 72 4E 61 6D 65 54 45 58 | ..printerNameTEX
| 0x54 00 00 00 01 00 00 00 00 00 0F 70 72 69 6E 74 | T..........print
| ...
8BIM: [0x043B] Name="" Len=[0x022D] DefinedName="Print Style"
Print Style =
| 0x00 00 00 10 00 00 00 01 00 00 00 00 00 12 70 72 | ..............pr
| 0x69 6E 74 4F 75 74 70 75 74 4F 70 74 69 6F 6E 73 | intOutputOptions
| 0x00 00 00 17 00 00 00 00 43 70 74 6E 62 6F 6F 6C | ........Cptnbool
| 0x00 00 00 00 00 43 6C 62 72 62 6F 6F 6C 00 00 00 | .....Clbrbool...
| 0x00 00 52 67 73 4D 62 6F 6F 6C 00 00 00 00 00 43 | ..RgsMbool.....C
| 0x72 6E 43 62 6F 6F 6C 00 00 00 00 00 43 6E 74 43 | rnCbool.....CntC
| 0x62 6F 6F 6C 00 00 00 00 00 4C 62 6C 73 62 6F 6F | bool.....Lblsboo
| 0x6C 00 00 00 00 00 4E 67 74 76 62 6F 6F 6C 00 00 | l.....Ngtvbool..
| ...
8BIM: [0x03ED] Name="" Len=[0x0010] DefinedName="ResolutionInfo structure"
Horizontal resolution = 72 pixels per inch
Width unit = cm
Vertical resolution = 72 pixels per inch
Height unit = cm
8BIM: [0x0426] Name="" Len=[0x000E] DefinedName="Print scale"
Style = centered
X location = 0.00000
Y location = 0.00000
Scale = 1.00000
8BIM: [0x040D] Name="" Len=[0x0004] DefinedName="Global Angle"
Global Angle = 30 degrees
8BIM: [0x0419] Name="" Len=[0x0004] DefinedName="Global Altitude"
Global Altitude = 30
8BIM: [0x03F3] Name="" Len=[0x0009] DefinedName="Print flags"
Labels = false
Crop marks = false
Color bars = false
Registration marks = false
Negative = false
Flip = false
Interpolate = false
Caption = false
Print flags = true
8BIM: [0x2710] Name="" Len=[0x000A] DefinedName="Print flags information"
Version = 1
Center crop marks = 0
Reserved = 0
Bleed width value = 0
Bleed width scale = 2
8BIM: [0x03F5] Name="" Len=[0x0048] DefinedName="Color halftoning information"
Color halftoning information =
| 0x00 2F 66 66 00 01 00 6C 66 66 00 06 00 00 00 00 | ./ff...lff......
| 0x00 01 00 2F 66 66 00 01 00 A1 99 9A 00 06 00 00 | .../ff..........
| 0x00 00 00 01 00 32 00 00 00 01 00 5A 00 00 00 06 | .....2.....Z....
| 0x00 00 00 00 00 01 00 35 00 00 00 01 00 2D 00 00 | .......5.....-..
| 0x00 06 00 00 00 00 00 01 | ........
8BIM: [0x03F8] Name="" Len=[0x0070] DefinedName="Color transfer functions"
Color transfer functions =
| 0x00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF 03 E8 00 00 00 00 FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF 03 E8 00 00 00 00 FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0x03 E8 00 00 00 00 FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF 03 E8 00 00 | ................
8BIM: [0x0400] Name="" Len=[0x0002] DefinedName="Layer state information"
Target layer = 0
8BIM: [0x0402] Name="" Len=[0x0002] DefinedName="Layers group information"
Layer #0:
Layer Group = 0
8BIM: [0x0430] Name="" Len=[0x0001] DefinedName="Layer Groups Enabled ID"
Layer #0:
Layer Group Enabled ID = 1
8BIM: [0x042D] Name="" Len=[0x0006] DefinedName="Layer Selection IDs"
Num selected = 1
Layer ID = 3
8BIM: [0x0408] Name="" Len=[0x0010] DefinedName="Grid and guides information"
Version = 1
Grid Horizontal = 576
Grid Vertical = 576
Number of Guide Resources = 0
8BIM: [0x041E] Name="" Len=[0x0004] DefinedName="URL List"
URL List = | 0x00 00 00 00 | ....
8BIM: [0x041A] Name="" Len=[0x0363] DefinedName="Slices"
Slice Header:
Version = 6
Bound Rect (top) = 0
Bound Rect (left) = 0
Bound Rect (bottom) = 512
Bound Rect (right) = 512
Name of group of slices = "imageprocessor-logo-512"
Number of slices = 1
-----
Slice #0:
Slice Resource:
ID = 0
Group ID = 0
Origin = 0
Name = ""
Type = 1
Position (top) = 0
Position (left) = 0
Position (bottom) = 512
Position (right) = 512
URL = ""
Target = ""
Message = ""
Alt Tag = ""
Cell text is HTML = true
Cell text = ""
Horizontal alignment = 0
Vertical alignment = 0
Alpha color = 0
Red = 0
Green = 0
Blue = 0
Descriptor version = 16
Descriptor:
Name from classID = ""
classID = "null"
Num items in descriptor = 2
-----
Descriptor item #0:
Key = "bounds"
OSType key = "Objc"
Descriptor:
Name from classID = ""
classID = "Rct1"
Num items in descriptor = 4
-----
Descriptor item #0:
Key = "Top "
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "Left"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "Btom"
OSType key = "long"
Value = 512
Descriptor item #3:
Key = "Rght"
OSType key = "long"
Value = 512
-----
Descriptor item #1:
Key = "slices"
OSType key = "VlLs"
Num items in list = 1
-----
Item #0:
OSType key = ""
Descriptor:
Name from classID = ""
classID = "slice"
Num items in descriptor = 18
-----
Descriptor item #0:
Key = "sliceID"
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "groupID"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "origin"
OSType key = "enum"
Type = "ESliceOrigin"
Enum = "autoGenerated"
Descriptor item #3:
Key = "Type"
OSType key = "enum"
Type = "ESliceType"
Enum = "Img "
Descriptor item #4:
Key = "bounds"
OSType key = "Objc"
Descriptor:
Name from classID = ""
classID = "Rct1"
Num items in descriptor = 4
-----
Descriptor item #0:
Key = "Top "
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "Left"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "Btom"
OSType key = "long"
Value = 512
Descriptor item #3:
Key = "Rght"
OSType key = "long"
Value = 512
-----
Descriptor item #5:
Key = "url"
OSType key = "TEXT"
String = ""
Descriptor item #6:
Key = "null"
OSType key = "TEXT"
String = ""
Descriptor item #7:
Key = "Msge"
OSType key = "TEXT"
String = ""
Descriptor item #8:
Key = "altTag"
OSType key = "TEXT"
String = ""
Descriptor item #9:
Key = "cellTextIsHTML"
OSType key = "bool"
Value = true
Descriptor item #10:
Key = "cellText"
OSType key = "TEXT"
String = ""
Descriptor item #11:
Key = "horzAlign"
OSType key = "enum"
Type = "ESliceHorzAlign"
Enum = "default"
Descriptor item #12:
Key = "vertAlign"
OSType key = "enum"
Type = "ESliceVertAlign"
Enum = "default"
Descriptor item #13:
Key = "bgColorType"
OSType key = "enum"
Type = "ESliceBGColorType"
Enum = "None"
Descriptor item #14:
Key = "topOutset"
OSType key = "long"
Value = 0
Descriptor item #15:
Key = "leftOutset"
OSType key = "long"
Value = 0
Descriptor item #16:
Key = "bottomOutset"
OSType key = "long"
Value = 0
Descriptor item #17:
Key = "rightOutset"
OSType key = "long"
Value = 0
-----
-----
-----
-----
8BIM: [0x0428] Name="" Len=[0x000C] DefinedName="Pixel Aspect Ratio"
Version = 2
X/Y Ratio = 1.00000
8BIM: [0x0414] Name="" Len=[0x0004] DefinedName="Document-specific IDs seed number"
Base value = 3
8BIM: [0x040C] Name="" Len=[0x1042] DefinedName="Thumbnail resources"
Format = 1
Width of thumbnail = 160 pixels
Height of thumbnail = 160 pixels
Widthbytes = 480 bytes
Total size = 76800 bytes
Size after compression = 4134 bytes
Bits per pixel = 24 bits
Number of planes = 1
JFIF data @ 0x00001A3C
8BIM: [0x0421] Name="" Len=[0x0061] DefinedName="Version Info"
Version = 1
hasRealMergedData = 1
Writer name = "Adobe Photoshop"
Reader name = "Adobe Photoshop CC 2015.5"
File version = 1
8BIM: [0x0406] Name="" Len=[0x0007] DefinedName="JPEG quality"
Photoshop Save As Quality = 8
Photoshop Save Format = "Standard"
Photoshop Save Progressive Scans = "3 Scans"
??? = 1
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00002AE4
Length = 3685
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0000394B
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 9
Profile Size : 557168 bytes
Preferred CMM Type : 'ADBE' (0x41444245)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Output Device profile ('prtr' (0x70727472))
Data Colour Space : cmykData ('CMYK' (0x434D594B))
Profile connection space (PCS) : 'Lab ' (0x4C616220)
Profile creation date : 2000-07-26 05:41:53
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'ADBE' (0x41444245)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Media-Relative Colorimetric
Profile creator : 'ADBE' (0x41444245)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0001392F
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 2 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00023913
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 3 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000338F7
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 4 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000438DB
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 5 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000538BF
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 6 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x000638A3
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 7 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00073887
Length = 65506
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 8 of 9
Only support decode of 1st ICC Marker
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0008386B
Length = 33264
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 9 of 9
Only support decode of 1st ICC Marker
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x0008BA5D
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 0
APP14Flags1 = 0
ColorTransform = 2 [YCCK]
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0008BA6D
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
Approx quality factor = 88.28 (scaling=23.43 variance=111.68)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 90.19 (scaling=19.62 variance=201.04)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0008BAF3
Frame header length = 20
Precision = 8
Number of Lines = 512
Samples per Line = 512
Image Size = 512 x 512
Raw Image Orientation = Landscape
Number of Img components = 4
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Cr)
Component[4]: ID=0x04, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (K)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x0008BB09
Length = 4
interval = 64
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0008BB0F
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (007 total): 04 05 03 02 06 01 00
Codes of length 04 bits (001 total): 07
Codes of length 05 bits (001 total): 08
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (001 total): 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 00
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (003 total): 04 05 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 11 04 00
Codes of length 05 bits (003 total): 05 21 12
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 51 06 13 61
Codes of length 08 bits (002 total): 22 71
Codes of length 09 bits (006 total): 81 14 32 91 A1 07
Codes of length 10 bits (007 total): 15 B1 42 23 C1 52 D1
Codes of length 11 bits (003 total): E1 33 16
Codes of length 12 bits (004 total): 62 F0 24 72
Codes of length 13 bits (002 total): 82 F1
Codes of length 14 bits (006 total): 25 43 34 53 92 A2
Codes of length 15 bits (002 total): B2 63
Codes of length 16 bits (115 total): 73 C2 35 44 27 93 A3 B3 36 17 54 64 74 C3 D2 E2
08 26 83 09 0A 18 19 84 94 45 46 A4 B4 56 D3 55
28 1A F2 E3 F3 C4 D4 E4 F4 65 75 85 95 A5 B5 C5
D5 E5 F5 66 76 86 96 A6 B6 C6 D6 E6 F6 37 47 57
67 77 87 97 A7 B7 C7 D7 E7 F7 38 48 58 68 78 88
98 A8 B8 C8 D8 E8 F8 29 39 49 59 69 79 89 99 A9
B9 C9 D9 E9 F9 2A 3A 4A 5A 6A 7A 8A 9A AA BA CA
DA EA FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 00
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (002 total): 04 21
Codes of length 06 bits (003 total): 12 31 41
Codes of length 07 bits (005 total): 05 51 13 61 22
Codes of length 08 bits (005 total): 06 71 81 91 32
Codes of length 09 bits (004 total): A1 B1 F0 14
Codes of length 10 bits (005 total): C1 D1 E1 23 42
Codes of length 11 bits (006 total): 15 52 62 72 F1 33
Codes of length 12 bits (004 total): 24 34 43 82
Codes of length 13 bits (008 total): 16 92 53 25 A2 63 B2 C2
Codes of length 14 bits (003 total): 07 73 D2
Codes of length 15 bits (003 total): 35 E2 44
Codes of length 16 bits (109 total): 83 17 54 93 08 09 0A 18 19 26 36 45 1A 27 64 74
55 37 F2 A3 B3 C3 28 29 D3 E3 F3 84 94 A4 B4 C4
D4 E4 F4 65 75 85 95 A5 B5 C5 D5 E5 F5 46 56 66
76 86 96 A6 B6 C6 D6 E6 F6 47 57 67 77 87 97 A7
B7 C7 D7 E7 F7 38 48 58 68 78 88 98 A8 B8 C8 D8
E8 F8 39 49 59 69 79 89 99 A9 B9 C9 D9 E9 F9 2A
3A 4A 5A 6A 7A 8A 9A AA BA CA DA EA FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0008BCB3
Scan header length = 14
Number of img components = 4
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Component[4]: selector=0x04, table=0(DC),0(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support CMYK files yet.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000954F2
*** Searching Compression Signatures ***
Signature: 01180AF3DE63318828A86409EF4013DD
Signature (Rotated): 01180AF3DE63318828A86409EF4013DD
File Offset: 0 bytes
Chroma subsampling: ?x?
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop CC 2015.5 (Windows)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 08 ]
NOTE: Photoshop IRB detected
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited

461
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue159-MissingFF00-Progressive-Bedroom.jpg.txt

@ -0,0 +1,461 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue159-MissingFF00-Progressive-Bedroom.jpg]
Filesize: [338422] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 14 18 22
DQT, Row #1: 4 4 5 7 9 21 22 20
DQT, Row #2: 5 5 6 9 14 21 25 20
DQT, Row #3: 5 6 8 10 18 31 29 22
DQT, Row #4: 6 8 13 20 24 39 37 28
DQT, Row #5: 9 13 20 23 29 37 41 33
DQT, Row #6: 18 23 28 31 37 44 43 36
DQT, Row #7: 26 33 34 35 40 36 37 36
Approx quality factor = 81.99 (scaling=36.03 variance=1.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 6 6 9 17 36 36 36 36
DQT, Row #1: 6 8 9 24 36 36 36 36
DQT, Row #2: 9 9 20 36 36 36 36 36
DQT, Row #3: 17 24 36 36 36 36 36 36
DQT, Row #4: 36 36 36 36 36 36 36 36
DQT, Row #5: 36 36 36 36 36 36 36 36
DQT, Row #6: 36 36 36 36 36 36 36 36
DQT, Row #7: 36 36 36 36 36 36 36 36
Approx quality factor = 81.88 (scaling=36.24 variance=0.48)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 2300
Samples per Line = 2300
Image Size = 2300 x 2300
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 27
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 01 02
Codes of length 04 bits (003 total): 03 04 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000CE
Huffman table length = 26
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (001 total): 06
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000EA
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000CBBB
Huffman table length = 56
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (004 total): 00 01 02 03
Codes of length 04 bits (005 total): 04 10 11 12 41
Codes of length 05 bits (002 total): 21 31
Codes of length 06 bits (005 total): 05 13 20 22 32
Codes of length 07 bits (003 total): 15 30 42
Codes of length 08 bits (005 total): 14 23 33 34 50
Codes of length 09 bits (000 total):
Codes of length 10 bits (002 total): 24 40
Codes of length 11 bits (002 total): 06 16
Codes of length 12 bits (002 total): 43 60
Codes of length 13 bits (002 total): 70 A0
Codes of length 14 bits (003 total): 44 80 90
Codes of length 15 bits (001 total): B0
Codes of length 16 bits (001 total): 35
Total number of codes: 037
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000CBF5
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0001A2A8
Huffman table length = 51
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (005 total): 02 03 10 20 30
Codes of length 05 bits (003 total): 12 13 31
Codes of length 06 bits (004 total): 04 21 32 40
Codes of length 07 bits (002 total): 14 51
Codes of length 08 bits (002 total): 05 41
Codes of length 09 bits (002 total): 33 50
Codes of length 10 bits (001 total): 22
Codes of length 11 bits (004 total): 15 52 61 70
Codes of length 12 bits (003 total): 23 42 60
Codes of length 13 bits (000 total):
Codes of length 14 bits (003 total): 71 A0 B0
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001A2DD
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0001BB1E
Huffman table length = 50
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (005 total): 02 03 10 20 30
Codes of length 05 bits (003 total): 12 13 31
Codes of length 06 bits (004 total): 04 21 32 40
Codes of length 07 bits (002 total): 14 51
Codes of length 08 bits (003 total): 05 41 50
Codes of length 09 bits (001 total): 22
Codes of length 10 bits (000 total):
Codes of length 11 bits (001 total): 61
Codes of length 12 bits (004 total): 23 33 60 70
Codes of length 13 bits (002 total): 15 43
Codes of length 14 bits (003 total): 52 A0 B0
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 031
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001BB52
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0001D49C
Huffman table length = 67
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (000 total):
Codes of length 04 bits (004 total): 10 11 21 31
Codes of length 05 bits (005 total): 02 41 51 71 81
Codes of length 06 bits (001 total): 20
Codes of length 07 bits (006 total): 12 22 30 61 91 A1
Codes of length 08 bits (004 total): 03 32 33 C1
Codes of length 09 bits (002 total): 40 50
Codes of length 10 bits (010 total): 13 23 42 52 72 82 B1 D1 E1 F0
Codes of length 11 bits (002 total): 34 62
Codes of length 12 bits (003 total): 60 92 F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (002 total): 24 80
Codes of length 15 bits (000 total):
Codes of length 16 bits (007 total): 04 70 43 A2 14 C0 D0
Total number of codes: 048
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001D4E1
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000291D6
Huffman table length = 44
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 11 21
Codes of length 04 bits (002 total): 31 41
Codes of length 05 bits (001 total): 51
Codes of length 06 bits (003 total): 10 61 71
Codes of length 07 bits (003 total): 81 91 A1
Codes of length 08 bits (003 total): 20 B1 F0
Codes of length 09 bits (004 total): 30 C1 D1 E1
Codes of length 10 bits (003 total): 40 50 F1
Codes of length 11 bits (001 total): 60
Codes of length 12 bits (001 total): 70
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 025
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00029204
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00044080
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00047DC7
Huffman table length = 45
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (004 total): 10 30 31 61
Codes of length 05 bits (006 total): 20 21 40 41 51 71
Codes of length 06 bits (002 total): 50 60
Codes of length 07 bits (003 total): 81 91 A1
Codes of length 08 bits (001 total): B1
Codes of length 09 bits (000 total):
Codes of length 10 bits (002 total): 70 F0
Codes of length 11 bits (002 total): C1 D1
Codes of length 12 bits (003 total): A0 B0 F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 026
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00047DF6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00048BD6
Huffman table length = 45
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (004 total): 20 30 31 61
Codes of length 05 bits (006 total): 10 21 40 41 51 71
Codes of length 06 bits (002 total): 50 81
Codes of length 07 bits (003 total): 60 91 B1
Codes of length 08 bits (001 total): A1
Codes of length 09 bits (000 total):
Codes of length 10 bits (002 total): 70 C1
Codes of length 11 bits (002 total): 80 F0
Codes of length 12 bits (003 total): A0 B0 D1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 026
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00048C05
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00049AE7
Huffman table length = 48
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 70
Codes of length 03 bits (001 total): 00
Codes of length 04 bits (007 total): 01 11 31 41 51 80 91
Codes of length 05 bits (003 total): 10 21 81
Codes of length 06 bits (002 total): 50 60
Codes of length 07 bits (005 total): 20 40 61 71 D1
Codes of length 08 bits (004 total): 30 B1 E1 F1
Codes of length 09 bits (002 total): A1 F0
Codes of length 10 bits (003 total): A0 C0 C1
Codes of length 11 bits (001 total): D0
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 029
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00049B19
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000529F4
*** Searching Compression Signatures ***
Signature: 0138A8D4ECE59F41D2EB9AF5168B6675
Signature (Rotated): 01CA9A809F737BA668C16DDE52E74092
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C700UZ ] [ ] No
SW :[IJG Library ] [082 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [082 ]
SW :[IrfanView ] [082 ]
SW :[idImager ] [082 ]
SW :[FastStone Image Viewer ] [082 ]
SW :[NeatImage ] [082 ]
SW :[Paint.NET ] [082 ]
SW :[Photomatix ] [082 ]
SW :[XnView ] [082 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

520
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue159-MissingFF00-Progressive-Girl.jpg.txt

@ -0,0 +1,520 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue159-MissingFF00-Progressive-Girl.jpg]
Filesize: [60927] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.2]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00000014
Length = 132
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x0067] DefinedName="IPTC-NAA record"
IPTC [002:040] Special Instructions = "FBMD01000a820d0000192d00007a4400006e460000a9470000a44e00000b7b0000cc830000e0880000a08c0000ffed0000"
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0000009A
Length = 3064
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 3048 bytes
Preferred CMM Type : '....' (0x00000000)
Profile Version : 0.2.0.0 (0x02000000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 2009-03-27 21:36:31
Profile file signature : 'acsp' (0x61637370)
Primary platform : ? (0x00000000) ('....' (0x00000000))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : '....' (0x00000000)
Device Model : '....' (0x00000000)
Device attributes : 0x00000001_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : '....' (0x00000000)
Profile ID : 0x29F83DDE_AFF255AE_7842FAE4_CA83390D
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000C94
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 9 6 6 9 14 23 30 35
DQT, Row #1: 7 7 8 11 15 34 35 32
DQT, Row #2: 8 8 9 14 23 33 40 32
DQT, Row #3: 8 10 13 17 30 50 46 36
DQT, Row #4: 10 13 21 32 39 63 60 45
DQT, Row #5: 14 20 32 37 47 60 66 53
DQT, Row #6: 28 37 45 50 60 70 70 59
DQT, Row #7: 42 53 55 57 65 58 60 57
Approx quality factor = 71.07 (scaling=57.86 variance=0.92)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000CD9
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 10 10 14 27 57 57 57 57
DQT, Row #1: 10 12 15 38 57 57 57 57
DQT, Row #2: 14 15 32 57 57 57 57 57
DQT, Row #3: 27 38 57 57 57 57 57 57
DQT, Row #4: 57 57 57 57 57 57 57 57
DQT, Row #5: 57 57 57 57 57 57 57 57
DQT, Row #6: 57 57 57 57 57 57 57 57
DQT, Row #7: 57 57 57 57 57 57 57 57
Approx quality factor = 71.23 (scaling=57.54 variance=0.18)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x00000D1E
Frame header length = 17
Precision = 8
Number of Lines = 990
Samples per Line = 750
Image Size = 750 x 990
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000D31
Huffman table length = 27
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000D4E
Huffman table length = 24
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 005
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000D68
Huffman table length = 24
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 005
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000D82
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002CED
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (003 total): 03 10 11
Codes of length 05 bits (003 total): 04 12 20
Codes of length 06 bits (004 total): 21 30 31 40
Codes of length 07 bits (002 total): 32 41
Codes of length 08 bits (002 total): 13 22
Codes of length 09 bits (003 total): 05 14 50
Codes of length 10 bits (001 total): 33
Codes of length 11 bits (001 total): 42
Codes of length 12 bits (001 total): 23
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002D19
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00004455
Huffman table length = 35
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 00
Codes of length 04 bits (005 total): 02 10 11 20 30
Codes of length 05 bits (001 total): 40
Codes of length 06 bits (000 total):
Codes of length 07 bits (002 total): 12 50
Codes of length 08 bits (003 total): 03 31 41
Codes of length 09 bits (001 total): 21
Codes of length 10 bits (001 total): 51
Codes of length 11 bits (001 total): 60
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 016
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000447A
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000464C
Huffman table length = 32
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (000 total):
Codes of length 04 bits (007 total): 00 10 11 20 30 40 50
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 12
Codes of length 07 bits (000 total):
Codes of length 08 bits (003 total): 21 31 70
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 013
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000466E
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00004775
Huffman table length = 50
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (003 total): 02 21 40
Codes of length 05 bits (007 total): 10 12 30 31 32 50 91
Codes of length 06 bits (003 total): 20 41 51
Codes of length 07 bits (003 total): 60 61 71
Codes of length 08 bits (004 total): 03 22 42 81
Codes of length 09 bits (002 total): 13 62
Codes of length 10 bits (001 total): 43
Codes of length 11 bits (005 total): 23 52 70 80 A1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 031
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000047A9
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00004E79
Huffman table length = 41
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (003 total): 10 21 31
Codes of length 05 bits (004 total): 41 61 71 81
Codes of length 06 bits (002 total): 20 51
Codes of length 07 bits (002 total): 30 91
Codes of length 08 bits (003 total): A1 D1 F0
Codes of length 09 bits (001 total): 40
Codes of length 10 bits (001 total): B1
Codes of length 11 bits (001 total): C1
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (001 total): E1
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00004EA4
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007B0B
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000083AB
Huffman table length = 31
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (000 total):
Codes of length 04 bits (003 total): 10 11 20
Codes of length 05 bits (000 total):
Codes of length 06 bits (003 total): 21 30 31
Codes of length 07 bits (001 total): 41
Codes of length 08 bits (001 total): 51
Codes of length 09 bits (001 total): 40
Codes of length 10 bits (001 total): 61
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000083CC
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000088BF
Huffman table length = 31
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 00 10 11
Codes of length 04 bits (001 total): 20
Codes of length 05 bits (001 total): 30
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 21 31 41
Codes of length 08 bits (001 total): 40
Codes of length 09 bits (001 total): 51
Codes of length 10 bits (001 total): 71
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000088E0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00008C75
Huffman table length = 41
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (001 total): 61
Codes of length 07 bits (003 total): 10 71 81
Codes of length 08 bits (003 total): 91 A1 B1
Codes of length 09 bits (005 total): 20 30 C1 D1 F1
Codes of length 10 bits (001 total): E1
Codes of length 11 bits (001 total): F0
Codes of length 12 bits (001 total): 40
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008CA0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000EDFD
*** Searching Compression Signatures ***
Signature: 01B8FDD60747E53114DC15797CC09B4E
Signature (Rotated): 011975EE86201F10E48E4F365C73A839
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[IJG Library ] [071 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [071 ]
SW :[IrfanView ] [071 ]
SW :[idImager ] [071 ]
SW :[FastStone Image Viewer ] [071 ]
SW :[NeatImage ] [071 ]
SW :[Paint.NET ] [071 ]
SW :[Photomatix ] [071 ]
SW :[XnView ] [071 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

471
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue178-BadCoeffsProgressive-Lemon.jpg.txt

@ -0,0 +1,471 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue178-BadCoeffsProgressive-Lemon.jpg]
Filesize: [279270] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 2 2 1
DQT, Row #4: 1 1 1 1 1 2 2 2
DQT, Row #5: 1 1 1 1 2 2 2 2
DQT, Row #6: 1 1 2 2 2 2 2 2
DQT, Row #7: 1 2 2 2 2 2 2 2
Approx quality factor = 98.32 (scaling=3.35 variance=5.00)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 1 2 2 2 2
DQT, Row #1: 1 1 1 1 2 2 2 2
DQT, Row #2: 1 1 1 2 2 2 2 2
DQT, Row #3: 1 1 2 2 2 2 2 2
DQT, Row #4: 2 2 2 2 2 2 2 2
DQT, Row #5: 2 2 2 2 2 2 2 2
DQT, Row #6: 2 2 2 2 2 2 2 2
DQT, Row #7: 2 2 2 2 2 2 2 2
Approx quality factor = 98.83 (scaling=2.34 variance=0.89)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 710
Samples per Line = 710
Image Size = 710 x 710
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 30
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 05
Codes of length 03 bits (004 total): 03 04 06 07
Codes of length 04 bits (003 total): 00 02 08
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000D1
Huffman table length = 29
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (005 total): 00 01 02 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000F0
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002D06
Huffman table length = 49
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 02
Codes of length 03 bits (004 total): 00 01 03 04
Codes of length 04 bits (002 total): 05 11
Codes of length 05 bits (002 total): 06 12
Codes of length 06 bits (002 total): 13 21
Codes of length 07 bits (002 total): 07 14
Codes of length 08 bits (001 total): 22
Codes of length 09 bits (003 total): 10 15 31
Codes of length 10 bits (004 total): 16 23 32 41
Codes of length 11 bits (001 total): 20
Codes of length 12 bits (004 total): 08 30 33 50
Codes of length 13 bits (003 total): 24 40 42
Codes of length 14 bits (001 total): 34
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 030
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002D39
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007ADB
Huffman table length = 72
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (005 total): 05 22 41 51 61
Codes of length 07 bits (005 total): 06 13 71 81 A1
Codes of length 08 bits (005 total): 14 32 91 B1 F0
Codes of length 09 bits (006 total): 23 42 52 C1 D1 E1
Codes of length 10 bits (004 total): 10 15 33 62
Codes of length 11 bits (003 total): 07 82 F1
Codes of length 12 bits (006 total): 20 24 30 43 72 A2
Codes of length 13 bits (006 total): 16 34 53 92 B2 E2
Codes of length 14 bits (003 total): 25 44 93
Codes of length 15 bits (001 total): D2
Codes of length 16 bits (000 total):
Total number of codes: 053
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007B25
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000A7E3
Huffman table length = 74
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (005 total): 05 12 21 31 41
Codes of length 06 bits (005 total): 06 13 22 51 61
Codes of length 07 bits (004 total): 32 71 81 91
Codes of length 08 bits (006 total): 14 42 52 A1 B1 F0
Codes of length 09 bits (008 total): 07 10 15 23 62 C1 D1 E1
Codes of length 10 bits (004 total): 33 43 72 92
Codes of length 11 bits (004 total): 24 82 A2 F1
Codes of length 12 bits (004 total): 16 34 63 D2
Codes of length 13 bits (006 total): 20 40 53 B2 C2 E2
Codes of length 14 bits (003 total): 17 25 30
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 055
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000A82F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000E96D
Huffman table length = 84
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (003 total): 00 03 21
Codes of length 05 bits (005 total): 04 12 31 41 51
Codes of length 06 bits (004 total): 05 22 61 71
Codes of length 07 bits (006 total): 13 32 81 91 A1 F0
Codes of length 08 bits (008 total): 10 14 23 42 52 B1 C1 D1
Codes of length 09 bits (003 total): 33 62 E1
Codes of length 10 bits (005 total): 06 72 82 92 F1
Codes of length 11 bits (006 total): 15 20 24 43 53 A2
Codes of length 12 bits (004 total): 30 34 63 73
Codes of length 13 bits (004 total): 44 83 B2 C2
Codes of length 14 bits (005 total): 40 50 93 A3 D2
Codes of length 15 bits (002 total): 16 25
Codes of length 16 bits (007 total): 26 35 54 60 64 B3 E2
Total number of codes: 065
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000E9C3
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0001AD55
Huffman table length = 40
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 11 21
Codes of length 04 bits (002 total): 00 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (002 total): 61 71
Codes of length 07 bits (002 total): 81 91
Codes of length 08 bits (002 total): A1 B1
Codes of length 09 bits (003 total): C1 D1 F0
Codes of length 10 bits (000 total):
Codes of length 11 bits (003 total): 10 E1 F1
Codes of length 12 bits (001 total): 20
Codes of length 13 bits (001 total): 30
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 021
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001AD7F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000287B1
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00028DB3
Huffman table length = 39
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 11 21
Codes of length 04 bits (002 total): 00 31
Codes of length 05 bits (001 total): 41
Codes of length 06 bits (003 total): 51 61 71
Codes of length 07 bits (003 total): 81 91 F0
Codes of length 08 bits (005 total): A1 B1 C1 D1 E1
Codes of length 09 bits (001 total): F1
Codes of length 10 bits (001 total): 10
Codes of length 11 bits (001 total): 20
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 020
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00028DDC
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0002CD0C
Huffman table length = 41
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 11 21
Codes of length 04 bits (002 total): 00 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (001 total): 61
Codes of length 07 bits (004 total): 71 81 91 F0
Codes of length 08 bits (002 total): A1 B1
Codes of length 09 bits (003 total): C1 D1 E1
Codes of length 10 bits (001 total): F1
Codes of length 11 bits (001 total): 30
Codes of length 12 bits (001 total): 10
Codes of length 13 bits (001 total): 20
Codes of length 14 bits (001 total): 40
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0002CD37
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00031187
Huffman table length = 38
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (001 total): 21
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 00 31 41
Codes of length 06 bits (000 total):
Codes of length 07 bits (002 total): 51 61
Codes of length 08 bits (002 total): 71 81
Codes of length 09 bits (002 total): 91 A1
Codes of length 10 bits (002 total): B1 C1
Codes of length 11 bits (003 total): D1 E1 F0
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (001 total): 10
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 019
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000311AF
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000442E4
*** Searching Compression Signatures ***
Signature: 01C7F83908166C226C06A44017421732
Signature (Rotated): 01D3EFDD3855C42AE3E0E6289F1A6726
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Canon ] [Canon EOS-1Ds Mark II ] [fine ] No
CAM:[CASIO COMPUTER CO.,LTD. ] [EX-Z1000 ] [ ] Yes
CAM:[NIKON ] [NIKON D2X ] [FINE ] No
CAM:[NIKON ] [NIKON D3 ] [FINE ] No
CAM:[SIGMA ] [SIGMA SD10 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD10 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD14 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD14 ] [Qual:12 ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-R1 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[Digital Photo Professiona] [09 ]
SW :[IJG Library ] [099 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [099 ]
SW :[IrfanView ] [099 ]
SW :[idImager ] [099 ]
SW :[FastStone Image Viewer ] [099 ]
SW :[NeatImage ] [099 ]
SW :[Paint.NET ] [099 ]
SW :[Photomatix ] [099 ]
SW :[XnView ] [099 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

94
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue214-CriticalEOF .jpg.txt

@ -0,0 +1,94 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue214-CriticalEOF .jpg]
Filesize: [35601] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 39251
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0015
[Make ] = "NIKON CORPORATION"
[Model ] = "NIKON D40"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[Software ] = "Ver.1.10 "
[DateTime ] = "2009:02:17 08:30:16"
[YCbCrPositioning ] = Co-sited
[ExifOffset ] = @ 0x015C
[CustomRendered ] = Normal process
[ExposureMode ] = Auto exposure
[WhiteBalance ] = Auto white balance
[SceneCaptureType ] = Standard
Offset to Next IFD = 0x00007652
EXIF IFD1 @ Absolute 0x00007670
Dir Length = 0x0007
[Compression ] = JPEG
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x76BC = @ 0x76DA
[JpegIFByteCount ] = 0x[0000228F] / 8847
[YCbCrPositioning ] = Co-sited
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x0000017A
Dir Length = 0x001C
[ExposureTime ] = 10/1250 s
[FNumber ] = F5.6
[ExposureProgram ] = Not defined
[ISOSpeedRatings ] = 220
[ExifVersion ] = 02.21
[DateTimeOriginal ] = "2009:02:17 08:30:16"
[DateTimeDigitized ] = "2009:02:17 08:30:15"
[ComponentsConfiguration ] = [Y Cb Cr .]
[CompressedBitsPerPixel ] = 1/1
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 41/10
[MeteringMode ] = Pattern
[LightSource ] = unknown
[Flash ] = Flash did not fire
[FocalLength ] = 30 mm
[MakerNote ] = @ 0x030A
[UserComment ] = " "
[SubSecTime ] = "60"
[SubSecTimeOriginal ] = "60"
[SubSecTimeDigitized ] = "60"
[FlashPixVersion ] = 01.00
[ColorSpace ] = sRGB
[ExifImageWidth ] = 3008
[ExifImageHeight ] = 2000
[SensingMethod ] = One-chip color area sensor
[FileSource ] = DSC
[SceneType ] = A directly photographed image
[CFAPattern ] =
= [ Blu Grn ]
= [ Grn Red ]
EXIF MakerIFD @ Absolute 0x00000328
Makernote decode option not enabled.
ERROR: Early EOF - file may be missing EOI

468
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue385-BadZigZag-Progressive.jpg.txt

@ -0,0 +1,468 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue385-BadZigZag-Progressive.jpg]
Filesize: [388517] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 5 3 3 5 7 12 15 18
DQT, Row #1: 4 4 4 6 8 17 18 17
DQT, Row #2: 4 4 5 7 12 17 21 17
DQT, Row #3: 4 5 7 9 15 26 24 19
DQT, Row #4: 5 7 11 17 20 33 31 23
DQT, Row #5: 7 11 17 19 24 31 34 28
DQT, Row #6: 15 19 23 26 31 36 36 30
DQT, Row #7: 22 28 29 29 34 30 31 30
Approx quality factor = 84.93 (scaling=30.13 variance=1.05)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 5 5 7 14 30 30 30 30
DQT, Row #1: 5 6 8 20 30 30 30 30
DQT, Row #2: 7 8 17 30 30 30 30 30
DQT, Row #3: 14 20 30 30 30 30 30 30
DQT, Row #4: 30 30 30 30 30 30 30 30
DQT, Row #5: 30 30 30 30 30 30 30 30
DQT, Row #6: 30 30 30 30 30 30 30 30
DQT, Row #7: 30 30 30 30 30 30 30 30
Approx quality factor = 84.93 (scaling=30.15 variance=0.29)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 1440
Samples per Line = 1920
Image Size = 1920 x 1440
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (003 total): 02 03 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (001 total): 08
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000CF
Huffman table length = 25
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 006
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000EA
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007E0B
Huffman table length = 55
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (003 total): 04 12 21
Codes of length 06 bits (002 total): 05 10
Codes of length 07 bits (004 total): 13 20 22 31
Codes of length 08 bits (004 total): 06 14 30 41
Codes of length 09 bits (005 total): 15 32 33 34 40
Codes of length 10 bits (005 total): 23 24 35 42 50
Codes of length 11 bits (000 total):
Codes of length 12 bits (002 total): 25 70
Codes of length 13 bits (003 total): 16 44 60
Codes of length 14 bits (001 total): 36
Codes of length 15 bits (001 total): 45
Codes of length 16 bits (001 total): 43
Total number of codes: 036
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007E44
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00012C0C
Huffman table length = 46
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (004 total): 02 10 12 20
Codes of length 05 bits (000 total):
Codes of length 06 bits (004 total): 03 21 30 31
Codes of length 07 bits (006 total): 13 32 40 41 50 51
Codes of length 08 bits (002 total): 22 61
Codes of length 09 bits (002 total): 04 60
Codes of length 10 bits (003 total): 23 33 71
Codes of length 11 bits (001 total): 42
Codes of length 12 bits (001 total): 05
Codes of length 13 bits (001 total): 43
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 027
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00012C3C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00013C45
Huffman table length = 43
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (004 total): 02 10 12 20
Codes of length 05 bits (001 total): 30
Codes of length 06 bits (004 total): 03 21 31 40
Codes of length 07 bits (002 total): 41 50
Codes of length 08 bits (002 total): 13 51
Codes of length 09 bits (002 total): 22 60
Codes of length 10 bits (003 total): 32 42 61
Codes of length 11 bits (001 total): 04
Codes of length 12 bits (001 total): 81
Codes of length 13 bits (001 total): 71
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00013C72
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000148F2
Huffman table length = 75
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (000 total):
Codes of length 04 bits (004 total): 02 11 21 31
Codes of length 05 bits (002 total): 03 10
Codes of length 06 bits (006 total): 12 20 22 32 41 51
Codes of length 07 bits (007 total): 04 30 33 61 71 81 91
Codes of length 08 bits (005 total): 13 40 50 52 72
Codes of length 09 bits (007 total): 23 34 42 62 82 92 A1
Codes of length 10 bits (001 total): B1
Codes of length 11 bits (006 total): 14 60 70 73 C1 E1
Codes of length 12 bits (005 total): 05 63 83 A2 D1
Codes of length 13 bits (004 total): 24 43 53 93
Codes of length 14 bits (002 total): 74 F0
Codes of length 15 bits (002 total): 15 B2
Codes of length 16 bits (003 total): 35 E2 F1
Total number of codes: 056
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001493F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0001BD13
Huffman table length = 44
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (002 total): 10 61
Codes of length 07 bits (001 total): 71
Codes of length 08 bits (004 total): 20 81 91 A1
Codes of length 09 bits (002 total): 30 B1
Codes of length 10 bits (002 total): C1 F0
Codes of length 11 bits (003 total): 40 D1 F1
Codes of length 12 bits (001 total): E1
Codes of length 13 bits (001 total): 50
Codes of length 14 bits (001 total): 60
Codes of length 15 bits (001 total): 70
Codes of length 16 bits (000 total):
Total number of codes: 025
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0001BD41
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0002C20D
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0002E1DF
Huffman table length = 37
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (000 total):
Codes of length 05 bits (002 total): 21 31
Codes of length 06 bits (002 total): 10 41
Codes of length 07 bits (003 total): 20 51 61
Codes of length 08 bits (001 total): 71
Codes of length 09 bits (001 total): 30
Codes of length 10 bits (001 total): 81
Codes of length 11 bits (001 total): 40
Codes of length 12 bits (001 total): 91
Codes of length 13 bits (001 total): A1
Codes of length 14 bits (001 total): B1
Codes of length 15 bits (001 total): C1
Codes of length 16 bits (000 total):
Total number of codes: 018
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0002E206
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000313D7
Huffman table length = 36
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (003 total): 10 21 31
Codes of length 05 bits (000 total):
Codes of length 06 bits (003 total): 20 41 51
Codes of length 07 bits (001 total): 61
Codes of length 08 bits (001 total): 71
Codes of length 09 bits (001 total): 30
Codes of length 10 bits (001 total): 81
Codes of length 11 bits (001 total): 40
Codes of length 12 bits (001 total): 91
Codes of length 13 bits (001 total): B1
Codes of length 14 bits (001 total): A1
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 017
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000313FD
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00033E31
Huffman table length = 40
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (002 total): 61 71
Codes of length 07 bits (002 total): 81 91
Codes of length 08 bits (002 total): A1 B1
Codes of length 09 bits (003 total): 10 C1 D1
Codes of length 10 bits (001 total): F0
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (001 total): 20
Codes of length 14 bits (001 total): 30
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 021
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00033E5B
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0005EDA3
*** Searching Compression Signatures ***
Signature: 0155D875C95B74D0F3C5835A62516F48
Signature (Rotated): 01D38A25358EB7649A254E19F1D46600
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[Nokia ] [N73 ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 8100 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
SW :[IJG Library ] [085 ]
SW :[Picasa ] [085 (Normal) ]
SW :[ZoomBrowser EX ] [medium ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [085 ]
SW :[IrfanView ] [085 ]
SW :[idImager ] [085 ]
SW :[FastStone Image Viewer ] [085 ]
SW :[NeatImage ] [085 ]
SW :[Paint.NET ] [085 ]
SW :[Photomatix ] [085 ]
SW :[XnView ] [085 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

438
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue394-MultiHuffmanBaseline-Speakers.jpg.txt

@ -0,0 +1,438 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue394-MultiHuffmanBaseline-Speakers.jpg]
Filesize: [257401] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00000002
Length = 576
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 560 bytes
Preferred CMM Type : 'ADBE' (0x41444245)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1999-06-03 00:00:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'none' (0x6E6F6E65)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'ADBE' (0x41444245)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00000244
Length = 90
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x003D] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 3
IPTC [002:055] Date Created = "20161215"
IPTC [002:060] Time Created = "043026-0600"
IPTC [002:221] ? = ???
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000002A0
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 9 11 12 16
DQT, Row #1: 4 5 5 6 8 10 12 12
DQT, Row #2: 4 5 5 6 10 12 12 12
DQT, Row #3: 6 6 6 11 12 12 12 12
DQT, Row #4: 9 8 10 12 12 12 12 12
DQT, Row #5: 11 10 12 12 12 12 12 12
DQT, Row #6: 12 12 12 12 12 12 12 12
DQT, Row #7: 16 12 12 12 12 12 12 12
Approx quality factor = 88.28 (scaling=23.43 variance=111.68)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 13 24 20 20 17 17
DQT, Row #1: 7 12 16 14 14 12 12 12
DQT, Row #2: 13 16 14 14 12 12 12 12
DQT, Row #3: 24 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 90.19 (scaling=19.62 variance=201.04)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00000326
Length = 4
interval = 115
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x0000032C
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 49152
APP14Flags1 = 0
ColorTransform = 1 [YCbCr]
*** Marker: SOF1 (Extended Sequential DCT, Huffman) (xFFC1) ***
OFFSET: 0x0000033C
Frame header length = 17
Precision = 8
Number of Lines = 496
Samples per Line = 920
Image Size = 920 x 496
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000034F
Huffman table length = 626
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 05
Codes of length 03 bits (005 total): 02 03 04 06 07
Codes of length 04 bits (001 total): 01
Codes of length 05 bits (001 total): 08
Codes of length 06 bits (001 total): 00
Codes of length 07 bits (000 total):
Codes of length 08 bits (003 total): 09 0A 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 02 03
Codes of length 03 bits (003 total): 01 04 05
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (000 total):
Codes of length 07 bits (002 total): 07 08
Codes of length 08 bits (003 total): 09 0A 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 2
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (003 total): 00 03 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (000 total):
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (005 total): 07 08 09 0A 0B
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (002 total): 03 11
Codes of length 04 bits (002 total): 04 12
Codes of length 05 bits (001 total): 21
Codes of length 06 bits (003 total): 00 05 13
Codes of length 07 bits (002 total): 22 31
Codes of length 08 bits (004 total): 06 14 32 41
Codes of length 09 bits (002 total): 23 51
Codes of length 10 bits (003 total): 15 42 61
Codes of length 11 bits (005 total): 07 16 33 52 71
Codes of length 12 bits (006 total): 24 43 62 81 91 F0
Codes of length 13 bits (006 total): 25 34 72 A1 B1 C1
Codes of length 14 bits (012 total): 08 18 26 46 53 63 82 92 93 D1 D2 F1
Codes of length 15 bits (111 total): 09 0A 17 19 1A 27 28 29 2A 35 36 37 38 39 3A 44
45 47 48 49 4A 54 55 56 57 58 59 5A 64 65 66 67
68 69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87
88 89 8A 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7
A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5
C6 C7 C8 C9 CA D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3
E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 F8 F9
Codes of length 16 bits (001 total): FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (003 total): 02 21 31
Codes of length 05 bits (004 total): 41 51 61 F0
Codes of length 06 bits (006 total): 03 12 13 71 81 91
Codes of length 07 bits (006 total): 14 A1 B1 C1 D1 E1
Codes of length 08 bits (002 total): 04 F1
Codes of length 09 bits (002 total): 22 32
Codes of length 10 bits (002 total): 52 62
Codes of length 11 bits (004 total): 05 42 72 A2
Codes of length 12 bits (125 total): 06 07 08 09 0A 15 16 17 18 19 1A 23 24 25 26 27
28 29 2A 33 34 35 36 37 38 39 3A 43 44 45 46 47
48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67
68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86
87 88 89 8A 92 93 94 95 96 97 98 99 9A A3 A4 A5
A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3
C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA
E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5
Codes of length 13 bits (005 total): F6 F7 F8 F9 FA
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 162
----
Destination ID = 2
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 02
Codes of length 05 bits (005 total): 12 21 31 41 51
Codes of length 06 bits (004 total): 03 61 71 F0
Codes of length 07 bits (004 total): 13 81 91 A1
Codes of length 08 bits (006 total): 04 14 C1 D1 E1 F1
Codes of length 09 bits (002 total): 22 B1
Codes of length 10 bits (001 total): 42
Codes of length 11 bits (004 total): 32 52 92 D2
Codes of length 12 bits (131 total): 05 06 07 08 09 0A 15 16 17 18 19 1A 23 24 25 26
27 28 29 2A 33 34 35 36 37 38 39 3A 43 44 45 46
47 48 49 4A 53 54 55 56 57 58 59 5A 62 63 64 65
66 67 68 69 6A 72 73 74 75 76 77 78 79 7A 82 83
84 85 86 87 88 89 8A 93 94 95 96 97 98 99 9A A2
A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9
BA C2 C3 C4 C5 C6 C7 C8 C9 CA D3 D4 D5 D6 D7 D8
D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6
F7 F8 F9
Codes of length 13 bits (001 total): FA
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000005C3
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=2(DC),2(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000005D1
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0003ED77.0
Compression stats:
Compression Ratio: 5.35:1
Bits per pixel: 4.49:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 1109 ( 16%)
# codes of length 03 bits: 4934 ( 69%)
# codes of length 04 bits: 705 ( 10%)
# codes of length 05 bits: 22 ( 0%)
# codes of length 06 bits: 360 ( 5%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 2599 ( 36%)
# codes of length 03 bits: 2938 ( 41%)
# codes of length 04 bits: 1592 ( 22%)
# codes of length 05 bits: 1 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 2, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 3838 ( 54%)
# codes of length 03 bits: 3132 ( 44%)
# codes of length 04 bits: 156 ( 2%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 4 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 170962 ( 54%)
# codes of length 03 bits: 67518 ( 21%)
# codes of length 04 bits: 33616 ( 11%)
# codes of length 05 bits: 9306 ( 3%)
# codes of length 06 bits: 15458 ( 5%)
# codes of length 07 bits: 7462 ( 2%)
# codes of length 08 bits: 6393 ( 2%)
# codes of length 09 bits: 1640 ( 1%)
# codes of length 10 bits: 1220 ( 0%)
# codes of length 11 bits: 975 ( 0%)
# codes of length 12 bits: 581 ( 0%)
# codes of length 13 bits: 213 ( 0%)
# codes of length 14 bits: 134 ( 0%)
# codes of length 15 bits: 75 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 11236 ( 26%)
# codes of length 03 bits: 12123 ( 28%)
# codes of length 04 bits: 7424 ( 17%)
# codes of length 05 bits: 5864 ( 13%)
# codes of length 06 bits: 4420 ( 10%)
# codes of length 07 bits: 1997 ( 5%)
# codes of length 08 bits: 545 ( 1%)
# codes of length 09 bits: 244 ( 1%)
# codes of length 10 bits: 61 ( 0%)
# codes of length 11 bits: 41 ( 0%)
# codes of length 12 bits: 31 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 2, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 15434 ( 46%)
# codes of length 03 bits: 3540 ( 11%)
# codes of length 04 bits: 2524 ( 8%)
# codes of length 05 bits: 5638 ( 17%)
# codes of length 06 bits: 3224 ( 10%)
# codes of length 07 bits: 1556 ( 5%)
# codes of length 08 bits: 1170 ( 3%)
# codes of length 09 bits: 277 ( 1%)
# codes of length 10 bits: 14 ( 0%)
# codes of length 11 bits: 111 ( 0%)
# codes of length 12 bits: 34 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[ 97] (range: 0..255)
Brightest Pixel Search:
YCC=[ 762, 70, -70] RGB=[210,226,237] @ MCU[ 56, 4]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 61
Next position in scan buffer: Offset 0x0003ED76.3
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0003ED77
*** Searching Compression Signatures ***
Signature: 01180AF3DE63318828A86409EF4013DD
Signature (Rotated): 01180AF3DE63318828A86409EF4013DD
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 08 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

406
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue517-No-EOI-Progressive.jpg.txt

@ -0,0 +1,406 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue517-No-EOI-Progressive.jpg]
Filesize: [2192567] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 500 x 500 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 248
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0007
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 500/1
[YResolution ] = 500/1
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop CS6 (Macintosh)"
[DateTime ] = "2018:01:06 12:59:23"
[ExifOffset ] = @ 0x00A6
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000C4
Dir Length = 0x0004
[DateTimeDigitized ] = "2018:01:06 04:40:19"
[ColorSpace ] = sRGB
[ExifImageWidth ] = 0x[000008CA] / 2250
[ExifImageHeight ] = 0x[000008CA] / 2250
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x0000010E
Length = 4875
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
*** Marker: APP13 (xFFED) ***
OFFSET: 0x0000141B
Length = 100
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x002C] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 2
IPTC [002:062] Digital Creation Date = "20180106"
IPTC [002:063] Digital Creation Time = "044019-0500"
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0x5D 51 F3 F0 D0 DE FC 5F 94 67 16 6F B1 02 A3 89 | ]Q....._.g.o....
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x00001481
Frame header length = 17
Precision = 8
Number of Lines = 2250
Samples per Line = 2250
Image Size = 2250 x 2250
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001494
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (005 total): 02 04 01 05 00
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000014B5
Huffman table length = 195
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 02 00 03
Codes of length 04 bits (003 total): 11 04 12
Codes of length 05 bits (002 total): 21 05
Codes of length 06 bits (004 total): 31 13 22 10
Codes of length 07 bits (003 total): 06 41 51
Codes of length 08 bits (004 total): 32 14 61 71
Codes of length 09 bits (006 total): 23 07 81 20 91 42
Codes of length 10 bits (004 total): 15 A1 52 33
Codes of length 11 bits (007 total): B1 24 62 30 16 C1 72
Codes of length 12 bits (006 total): D1 43 92 34 82 08
Codes of length 13 bits (004 total): E1 53 40 25
Codes of length 14 bits (008 total): 63 17 35 F0 93 73 A2 50
Codes of length 15 bits (006 total): 44 B2 83 F1 26 54
Codes of length 16 bits (115 total): 36 64 94 74 C2 60 D2 84 A3 18 70 E2 27 45 37 65
B3 55 75 A4 95 C3 85 F2 D3 46 76 80 E3 47 56 66
B4 09 0A 19 1A 28 29 2A 38 39 3A 48 49 4A 57 58
59 5A 67 68 69 6A 77 78 79 7A 86 87 88 89 8A 90
96 97 98 99 9A A0 A5 A6 A7 A8 A9 AA B0 B5 B6 B7
B8 B9 BA C0 C4 C5 C6 C7 C8 C9 CA D0 D4 D5 D6 D7
D8 D9 DA E0 E4 E5 E6 E7 E8 E9 EA F3 F4 F5 F6 F7
F8 F9 FA
Total number of codes: 176
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000157A
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 01 02 00
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000159B
Huffman table length = 195
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 00
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (003 total): 10 12 21
Codes of length 06 bits (003 total): 04 20 31
Codes of length 07 bits (003 total): 41 13 05
Codes of length 08 bits (002 total): 30 22
Codes of length 09 bits (003 total): 32 51 14
Codes of length 10 bits (005 total): 40 06 33 23 61
Codes of length 11 bits (002 total): 42 15
Codes of length 12 bits (005 total): 71 52 34 81 50
Codes of length 13 bits (002 total): 24 91
Codes of length 14 bits (004 total): A1 43 B1 16
Codes of length 15 bits (004 total): 07 62 35 53
Codes of length 16 bits (135 total): F0 D1 25 60 C1 44 E1 72 F1 17 82 63 36 70 26 45
54 92 27 A2 D2 08 09 0A 18 19 1A 28 29 2A 37 38
39 3A 46 47 48 49 4A 55 56 57 58 59 5A 64 65 66
67 68 69 6A 73 74 75 76 77 78 79 7A 80 83 84 85
86 87 88 89 8A 90 93 94 95 96 97 98 99 9A A0 A3
A4 A5 A6 A7 A8 A9 AA B0 B2 B3 B4 B5 B6 B7 B8 B9
BA C0 C2 C3 C4 C5 C6 C7 C8 C9 CA D0 D3 D4 D5 D6
D7 D8 D9 DA E0 E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 176
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00001660
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 2
DQT, Row #1: 1 1 1 1 1 1 1 2
DQT, Row #2: 1 1 1 1 1 1 2 2
DQT, Row #3: 1 1 1 1 1 2 2 3
DQT, Row #4: 1 1 1 1 2 2 3 3
DQT, Row #5: 1 1 1 2 2 3 3 3
DQT, Row #6: 1 1 2 2 3 3 3 3
DQT, Row #7: 2 2 2 3 3 3 3 3
Approx quality factor = 98.11 (scaling=3.79 variance=4.10)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000016A5
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 2 3 3 3 3
DQT, Row #1: 1 1 1 2 3 3 3 3
DQT, Row #2: 1 1 2 3 3 3 3 3
DQT, Row #3: 2 2 3 3 3 3 3 3
DQT, Row #4: 3 3 3 3 3 3 3 3
DQT, Row #5: 3 3 3 3 3 3 3 3
DQT, Row #6: 3 3 3 3 3 3 3 3
DQT, Row #7: 3 3 3 3 3 3 3 3
Approx quality factor = 98.36 (scaling=3.29 variance=0.42)
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000016EA
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00023AAF
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0003E82C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0006B107
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0008AA32
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000BA727
Huffman table length = 51
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 11 00 21
Codes of length 04 bits (000 total):
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (002 total): 51 61
Codes of length 07 bits (002 total): 71 81
Codes of length 08 bits (002 total): 91 A1
Codes of length 09 bits (002 total): B1 C1
Codes of length 10 bits (003 total): F0 D1 10
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (002 total): 20 30
Codes of length 16 bits (011 total): 40 50 60 70 80 90 A0 B0 C0 D0 E0
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000BA75C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000FE1E7
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x001056B6
Huffman table length = 51
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 21 31 10
Codes of length 06 bits (000 total):
Codes of length 07 bits (001 total): 41
Codes of length 08 bits (002 total): 51 61
Codes of length 09 bits (005 total): 20 71 F0 91 81
Codes of length 10 bits (005 total): A1 B1 D1 C1 E1
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (001 total): 30
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): 40
Codes of length 15 bits (001 total): 50
Codes of length 16 bits (009 total): 60 70 80 90 A0 B0 C0 D0 E0
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x001056EB
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0014E060
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x001879C8
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x002174B5
*** Searching Compression Signatures ***
Signature: 01DADDC4908E9BA57CC067EEAD54E67D
Signature (Rotated): 01DADDC4908E9BA57CC067EEAD54E67D
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop CS6 (Macintosh)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 12 ]
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited

759
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue518-Bad-RST-Progressive.jpg.txt

@ -0,0 +1,759 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue518-Bad-RST-Progressive.jpg]
Filesize: [3764739] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 14215
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0009
[Make ] = "OLYMPUS CORPORATION"
[Model ] = "E-1"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 300/1
[YResolution ] = 300/1
[ResolutionUnit ] = Inch
[Software ] = "GIMP 2.8.10"
[DateTime ] = "2017:04:18 16:37:56"
[ExifOffset ] = @ 0x00BE
Offset to Next IFD = 0x000001DC
EXIF IFD1 @ Absolute 0x000001FA
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x023A = @ 0x0258
[JpegIFByteCount ] = 0x[00003545] / 13637
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000DC
Dir Length = 0x0011
[ExposureTime ] = 1/4 s
[FNumber ] = F18.0
[ExposureProgram ] = Manual
[ISOSpeedRatings ] = 100
[ExifVersion ] = 02.21
[DateTimeOriginal ] = "2005:07:20 20:08:42"
[ShutterSpeedValue ] = 2/1
[ApertureValue ] = 833985/100000
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 2972656/1000000
[MeteringMode ] = CenterWeightedAverage
[Flash ] = Flash did not fire
[FocalLength ] = 14 mm
[FlashPixVersion ] = 01.00
[ColorSpace ] = Uncalibrated
[ExifImageWidth ] = 0x[00000BB8] / 3000
[ExifImageHeight ] = 0x[00000BB8] / 3000
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x0000379D
Comment length = 3
Comment=
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x000037A2
Length = 5091
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
|<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
|<x:xmpmeta xmlns:x='adobe:ns:meta/'>
|<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
| <rdf:Description xmlns:crs='http://ns.adobe.com/camera-raw-settings/1.0/'>
| <crs:Version>3.1</crs:Version>
| <crs:RawFileName>_7201666.ORF</crs:RawFileName>
| <crs:WhiteBalance>Custom</crs:WhiteBalance>
| <crs:Temperature>7450</crs:Temperature>
| <crs:Tint>-7</crs:Tint>
| <crs:Exposure>-0.75</crs:Exposure>
| <crs:AutoShadows>True</crs:AutoShadows>
| <crs:Shadows>4</crs:Shadows>
| <crs:AutoBrightness>True</crs:AutoBrightness>
| <crs:Brightness>100</crs:Brightness>
| <crs:AutoContrast>True</crs:AutoContrast>
| <crs:Contrast>0</crs:Contrast>
| <crs:Saturation>0</crs:Saturation>
| <crs:Sharpness>25</crs:Sharpness>
| <crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
| <crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
| <crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
| <crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
| <crs:VignetteAmount>0</crs:VignetteAmount>
| <crs:ShadowTint>0</crs:ShadowTint>
| <crs:RedHue>0</crs:RedHue>
| <crs:RedSaturation>0</crs:RedSaturation>
| <crs:GreenHue>0</crs:GreenHue>
| <crs:GreenSaturation>0</crs:GreenSaturation>
| <crs:BlueHue>0</crs:BlueHue>
| <crs:BlueSaturation>0</crs:BlueSaturation>
| <crs:ToneCurveName>Medium Contrast</crs:ToneCurveName>
| <crs:CameraProfile>ACR 2.4</crs:CameraProfile>
| <crs:HasSettings>True</crs:HasSettings>
| <crs:HasCrop>False</crs:HasCrop>
| <crs:AlreadyApplied>True</crs:AlreadyApplied>
| <crs:ToneCurve>
| <rdf:Seq>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>32, 22</rdf:li>
| <rdf:li>64, 56</rdf:li>
| <rdf:li>128, 128</rdf:li>
| <rdf:li>192, 196</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Seq>
| </crs:ToneCurve>
| <crs:Version>3.1</crs:Version>
| <crs:RawFileName>_7201666.ORF</crs:RawFileName>
| <crs:WhiteBalance>Custom</crs:WhiteBalance>
| <crs:Temperature>7450</crs:Temperature>
| <crs:Tint>-7</crs:Tint>
| <crs:Exposure>-0.75</crs:Exposure>
| <crs:AutoShadows>True</crs:AutoShadows>
| <crs:Shadows>4</crs:Shadows>
| <crs:AutoBrightness>True</crs:AutoBrightness>
| <crs:Brightness>100</crs:Brightness>
| <crs:AutoContrast>True</crs:AutoContrast>
| <crs:Contrast>0</crs:Contrast>
| <crs:Saturation>0</crs:Saturation>
| <crs:Sharpness>25</crs:Sharpness>
| <crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
| <crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
| <crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
| <crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
| <crs:VignetteAmount>0</crs:VignetteAmount>
| <crs:ShadowTint>0</crs:ShadowTint>
| <crs:RedHue>0</crs:RedHue>
| <crs:RedSaturation>0</crs:RedSaturation>
| <crs:GreenHue>0</crs:GreenHue>
| <crs:GreenSaturation>0</crs:GreenSaturation>
| <crs:BlueHue>0</crs:BlueHue>
| <crs:BlueSaturation>0</crs:BlueSaturation>
| <crs:ToneCurveName>Medium Contrast</crs:ToneCurveName>
| <crs:CameraProfile>ACR 2.4</crs:CameraProfile>
| <crs:HasSettings>True</crs:HasSettings>
| <crs:HasCrop>False</crs:HasCrop>
| <crs:AlreadyApplied>True</crs:AlreadyApplied>
| <crs:ToneCurve>
| <rdf:Bag>
| <rdf:li>0, 0</rdf:li>
| <rdf:li>32, 22</rdf:li>
| <rdf:li>64, 56</rdf:li>
| <rdf:li>128, 128</rdf:li>
| <rdf:li>192, 196</rdf:li>
| <rdf:li>255, 255</rdf:li>
| </rdf:Bag>
| </crs:ToneCurve>
| </rdf:Description>
| <rdf:Description xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
| <xmp:Rating>0</xmp:Rating>
| <xmp:CreatorTool>Adobe Photoshop CS6 (Macintosh)</xmp:CreatorTool>
| <xmp:Rating>0</xmp:Rating>
| <xmp:ModifyDate>2014-06-09T12:43:59-04:00</xmp:ModifyDate>
| <xmp:CreateDate>2005-07-21T18:39:06-06:00</xmp:CreateDate>
| <xmp:MetadataDate>2014-06-09T12:43:59-04:00</xmp:MetadataDate>
| </rdf:Description>
| <rdf:Description xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'>
| <xmpMM:InstanceID>xmp.iid:0A801174072068118083C9374AAA53C2</xmpMM:InstanceID>
| <xmpMM:OriginalDocumentID>uuid:021303F2FBA711D98B5DCD54C315AFD0</xmpMM:OriginalDocumentID>
| <xmpMM:DocumentID rdf:resource='uuid:021303F2FBA711D98B5DCD54C315AFD0' />
| <xmpMM:InstanceID>xmp.iid:0A801174072068118083C9374AAA53C2</xmpMM:InstanceID>
| <xmpMM:OriginalDocumentID>uuid:021303F2FBA711D98B5DCD54C315AFD0</xmpMM:OriginalDocumentID>
| <xmpMM:DerivedFrom rdf:parseType='Resource'>
| </xmpMM:DerivedFrom>
| <xmpMM:History>
| <rdf:Seq>
| </rdf:Seq>
| </xmpMM:History>
| </rdf:Description>
| <rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>
| <dc:format>image/jpeg</dc:format>
| </rdf:Description>
| <rdf:Description xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
| <photoshop:DateCreated>2005-07-20T20:08:42</photoshop:DateCreated>
| <photoshop:LegacyIPTCDigest>A8D68AA81537D1C7170A5C69A46C6C94</photoshop:LegacyIPTCDigest>
| <photoshop:ColorMode>3</photoshop:ColorMode>
| <photoshop:ICCProfile>Adobe RGB (1998)</photoshop:ICCProfile>
| </rdf:Description>
| <rdf:Description xmlns:exifEX='http://cipa.jp/exif/1.0/'>
| <exifEX:PhotographicSensitivity>100</exifEX:PhotographicSensitivity>
| </rdf:Description>
|</rdf:RDF>
|</x:xmpmeta>
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00004B87
Length = 3160
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 3144 bytes
Preferred CMM Type : 'Lino' (0x4C696E6F)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1998-02-09 06:49:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Microsoft Corporation ('MSFT' (0x4D534654))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'IEC ' (0x49454320)
Device Model : 'sRGB' (0x73524742)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'HP ' (0x48502020)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000057E1
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 8 10 12
DQT, Row #1: 2 2 3 4 5 12 12 11
DQT, Row #2: 3 3 3 5 8 11 14 11
DQT, Row #3: 3 3 4 6 10 17 16 12
DQT, Row #4: 4 4 7 11 14 22 21 15
DQT, Row #5: 5 7 11 13 16 21 23 18
DQT, Row #6: 10 13 16 17 21 24 24 20
DQT, Row #7: 14 18 19 20 22 20 21 20
Approx quality factor = 90.06 (scaling=19.88 variance=1.14)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00005826
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 4 5 9 20 20 20 20
DQT, Row #1: 4 4 5 13 20 20 20 20
DQT, Row #2: 5 5 11 20 20 20 20 20
DQT, Row #3: 9 13 20 20 20 20 20 20
DQT, Row #4: 20 20 20 20 20 20 20 20
DQT, Row #5: 20 20 20 20 20 20 20 20
DQT, Row #6: 20 20 20 20 20 20 20 20
DQT, Row #7: 20 20 20 20 20 20 20 20
Approx quality factor = 89.93 (scaling=20.14 variance=0.34)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000586B
Frame header length = 17
Precision = 8
Number of Lines = 3000
Samples per Line = 3000
Image Size = 3000 x 3000
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000587E
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 04 05
Codes of length 03 bits (002 total): 03 06
Codes of length 04 bits (003 total): 00 01 02
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000589C
Huffman table length = 27
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 01 02 03
Codes of length 03 bits (001 total): 00
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x000058B9
Length = 4
interval = 375
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000058BF
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0004A3DA
Huffman table length = 55
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 02 03
Codes of length 03 bits (003 total): 01 04 05
Codes of length 04 bits (000 total):
Codes of length 05 bits (001 total): 00
Codes of length 06 bits (004 total): 06 11 12 13
Codes of length 07 bits (001 total): 14
Codes of length 08 bits (003 total): 15 21 22
Codes of length 09 bits (003 total): 10 23 31
Codes of length 10 bits (004 total): 07 20 24 41
Codes of length 11 bits (002 total): 16 32
Codes of length 12 bits (002 total): 30 33
Codes of length 13 bits (002 total): 25 40
Codes of length 14 bits (002 total): 17 42
Codes of length 15 bits (000 total):
Codes of length 16 bits (007 total): 34 50 60 43 26 35 44
Total number of codes: 036
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0004A413
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000B0746
Huffman table length = 62
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (004 total): 03 10 12 31
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (004 total): 13 20 22 51
Codes of length 08 bits (002 total): 04 32
Codes of length 09 bits (001 total): 61
Codes of length 10 bits (003 total): 14 30 71
Codes of length 11 bits (003 total): 23 40 42
Codes of length 12 bits (003 total): 33 50 52
Codes of length 13 bits (003 total): 05 81 91
Codes of length 14 bits (003 total): 60 A1 B1
Codes of length 15 bits (000 total):
Codes of length 16 bits (011 total): 15 24 62 43 53 C1 D1 72 F0 F1 E1
Total number of codes: 043
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000B0786
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000E3DFE
Huffman table length = 69
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (002 total): 03 21
Codes of length 05 bits (002 total): 12 31
Codes of length 06 bits (000 total):
Codes of length 07 bits (006 total): 04 10 13 22 41 51
Codes of length 08 bits (001 total): 32
Codes of length 09 bits (002 total): 20 61
Codes of length 10 bits (005 total): 05 14 23 42 71
Codes of length 11 bits (002 total): 30 52
Codes of length 12 bits (004 total): 33 40 81 91
Codes of length 13 bits (005 total): 15 50 60 A1 B1
Codes of length 14 bits (002 total): 62 F0
Codes of length 15 bits (000 total):
Codes of length 16 bits (015 total): 24 43 70 C1 D1 06 53 72 E1 F1 25 34 44 63 A2
Total number of codes: 050
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000E3E45
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0012926F
Huffman table length = 79
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 03
Codes of length 04 bits (002 total): 11 12
Codes of length 05 bits (005 total): 04 13 21 31 41
Codes of length 06 bits (003 total): 22 32 51
Codes of length 07 bits (003 total): 23 42 61
Codes of length 08 bits (002 total): 05 14
Codes of length 09 bits (003 total): 33 52 71
Codes of length 10 bits (007 total): 10 24 43 62 81 91 A1
Codes of length 11 bits (001 total): B1
Codes of length 12 bits (006 total): 15 20 30 53 72 C1
Codes of length 13 bits (004 total): 34 40 50 82
Codes of length 14 bits (003 total): 60 63 92
Codes of length 15 bits (002 total): A2 D1
Codes of length 16 bits (015 total): 25 44 70 E1 F0 73 83 B2 F1 06 54 16 35 C2 74
Total number of codes: 060
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x001292C0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x001CCECE
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (003 total): 41 51 61
Codes of length 06 bits (000 total):
Codes of length 07 bits (002 total): 71 81
Codes of length 08 bits (002 total): 91 A1
Codes of length 09 bits (002 total): 10 B1
Codes of length 10 bits (002 total): C1 D1
Codes of length 11 bits (003 total): 20 E1 F0
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (001 total): 30
Codes of length 14 bits (001 total): 40
Codes of length 15 bits (001 total): 50
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x001CCEFA
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0024E532
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0025B81A
Huffman table length = 42
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (000 total):
Codes of length 08 bits (002 total): 10 51
Codes of length 09 bits (002 total): 61 71
Codes of length 10 bits (001 total): 81
Codes of length 11 bits (003 total): 20 91 A1
Codes of length 12 bits (005 total): 30 B1 C1 D1 F0
Codes of length 13 bits (001 total): E1
Codes of length 14 bits (001 total): 40
Codes of length 15 bits (001 total): F1
Codes of length 16 bits (001 total): 50
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0025B846
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0029943F
Huffman table length = 43
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (000 total):
Codes of length 07 bits (002 total): 41 51
Codes of length 08 bits (002 total): 10 61
Codes of length 09 bits (001 total): 71
Codes of length 10 bits (003 total): 81 91 A1
Codes of length 11 bits (005 total): 20 B1 C1 D1 F0
Codes of length 12 bits (001 total): E1
Codes of length 13 bits (001 total): 30
Codes of length 14 bits (001 total): F1
Codes of length 15 bits (000 total):
Codes of length 16 bits (003 total): 40 50 60
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0029946C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x002E23F1
Huffman table length = 41
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (003 total): 41 51 61
Codes of length 06 bits (001 total): 71
Codes of length 07 bits (000 total):
Codes of length 08 bits (002 total): 81 91
Codes of length 09 bits (002 total): A1 B1
Codes of length 10 bits (002 total): C1 D1
Codes of length 11 bits (003 total): 10 E1 F0
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (001 total): 20
Codes of length 14 bits (001 total): 30
Codes of length 15 bits (001 total): 40
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x002E241C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00397201
*** Embedded JPEG Thumbnail ***
Offset: 0x00000258
Length: 0x00003545 (13637)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: APP0
Length = 16
* Embedded Thumb Marker: DQT
Length = 67
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
* Embedded Thumb Marker: DQT
Length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 196
Samples per Line = 196
Image Size = 196 x 196
* Embedded Thumb Marker: DHT
Length = 31
* Embedded Thumb Marker: DHT
Length = 181
* Embedded Thumb Marker: DHT
Length = 31
* Embedded Thumb Marker: DHT
Length = 181
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 13024 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 0182408A81A4ABF04D4A34A8A5E98C58
*** Searching Compression Signatures ***
Signature: 013BA18D5561625796E986FDBC09F846
Signature (Rotated): 01AC57E12793DFA7C46C704625C5AF0F
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: OK [OLYMPUS CORPORATION] [E-1]
EXIF Makernotes: NONE
EXIF Software: OK [GIMP 2.8.10]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[??? ] [Treo 680 ] [ ] No
CAM:[Canon ] [Canon PowerShot Pro1 ] [fine ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E3100 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 9530 ] [Superfine ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W1 ] [ ] No
CAM:[SONY ] [SONY ] [ ] No
SW :[ACDSee ] [ ]
SW :[FixFoto ] [fine ]
SW :[IJG Library ] [090 ]
SW :[ZoomBrowser EX ] [high ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [090 ]
SW :[IrfanView ] [090 ]
SW :[idImager ] [090 ]
SW :[FastStone Image Viewer ] [090 ]
SW :[NeatImage ] [090 ]
SW :[Paint.NET ] [090 ]
SW :[Photomatix ] [090 ]
SW :[XnView ] [090 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 2 - Image has high probability of being processed/edited

364
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue520-InvalidCast.jpg.txt

@ -0,0 +1,364 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue520-InvalidCast.jpg]
Filesize: [7751] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 499
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0011
[DateTime ] = "2017:09:06 15:13:32"
[Model ] = "SAMSUNG-SM-J320AZ"
[Orientation ] = 1 = Row 0: top, Col 0: left
[WhiteBalance ] = Auto white balance
[DateTime ] = "2017:09:06 15:13:04"
[Make ] = "samsung"
[GPSOffset ] = @ 0x0124
[ExifOffset ] = @ 0x01CD
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000001EB
Dir Length = 0x0002
EXIF GPSIFD @ Absolute 0x00000142
Dir Length = 0x0008
[GPSTimeStamp ] = 115:8:12.00
[GPSLatitudeRef ] = "N"
[GPSLongitude ] = 115 deg 8' 12.000"
[GPSLongitudeRef ] = "W"
[GPSDateStamp ] = "2017:08:08"
[GPSLatitude ] = 36 deg 11' 18.000"
[GPSAltitudeRef ] = Below Sea Level
[GPSAltitude ] = 0.000 m
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000209
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 2 2 1
DQT, Row #4: 1 1 1 1 1 2 2 2
DQT, Row #5: 1 1 1 1 2 2 2 2
DQT, Row #6: 1 1 2 2 2 2 2 2
DQT, Row #7: 1 2 2 2 2 2 2 2
Approx quality factor = 98.32 (scaling=3.35 variance=5.00)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000024E
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 1 2 2 2 2
DQT, Row #1: 1 1 1 1 2 2 2 2
DQT, Row #2: 1 1 1 2 2 2 2 2
DQT, Row #3: 1 1 2 2 2 2 2 2
DQT, Row #4: 2 2 2 2 2 2 2 2
DQT, Row #5: 2 2 2 2 2 2 2 2
DQT, Row #6: 2 2 2 2 2 2 2 2
DQT, Row #7: 2 2 2 2 2 2 2 2
Approx quality factor = 98.83 (scaling=2.34 variance=0.89)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00000293
Frame header length = 17
Precision = 8
Number of Lines = 100
Samples per Line = 100
Image Size = 100 x 100
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000002A6
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 0A
Codes of length 03 bits (001 total): 09
Codes of length 04 bits (004 total): 06 07 08 0B
Codes of length 05 bits (003 total): 03 04 05
Codes of length 06 bits (001 total): 01
Codes of length 07 bits (001 total): 02
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000002C7
Huffman table length = 60
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (004 total): 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (003 total): 00 07 11
Codes of length 06 bits (003 total): 08 12 13
Codes of length 07 bits (002 total): 14 21
Codes of length 08 bits (003 total): 09 22 31
Codes of length 09 bits (005 total): 0A 15 41 51 61
Codes of length 10 bits (006 total): 16 23 24 32 33 71
Codes of length 11 bits (003 total): 17 52 62
Codes of length 12 bits (009 total): 18 42 54 73 91 93 A3 B1 B2
Codes of length 13 bits (001 total): D2
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 041
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000305
Huffman table length = 28
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 03 04 05 06 07
Codes of length 04 bits (001 total): 08
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 01
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000323
Huffman table length = 50
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 04 05 11
Codes of length 05 bits (003 total): 00 12 21
Codes of length 06 bits (003 total): 06 22 31
Codes of length 07 bits (003 total): 13 41 51
Codes of length 08 bits (002 total): 61 71
Codes of length 09 bits (004 total): 07 14 32 91
Codes of length 10 bits (005 total): 15 23 42 81 D1
Codes of length 11 bits (005 total): 16 62 92 A1 B1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 031
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000357
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00000365
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00001E45.0
Compression stats:
Compression Ratio: 4.36:1
Bits per pixel: 5.50:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 97 ( 49%)
# codes of length 03 bits: 25 ( 13%)
# codes of length 04 bits: 51 ( 26%)
# codes of length 05 bits: 18 ( 9%)
# codes of length 06 bits: 3 ( 2%)
# codes of length 07 bits: 2 ( 1%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 26 ( 27%)
# codes of length 03 bits: 62 ( 63%)
# codes of length 04 bits: 5 ( 5%)
# codes of length 05 bits: 3 ( 3%)
# codes of length 06 bits: 2 ( 2%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 971 ( 16%)
# codes of length 03 bits: 3435 ( 57%)
# codes of length 04 bits: 456 ( 8%)
# codes of length 05 bits: 579 ( 10%)
# codes of length 06 bits: 285 ( 5%)
# codes of length 07 bits: 96 ( 2%)
# codes of length 08 bits: 74 ( 1%)
# codes of length 09 bits: 59 ( 1%)
# codes of length 10 bits: 30 ( 0%)
# codes of length 11 bits: 7 ( 0%)
# codes of length 12 bits: 9 ( 0%)
# codes of length 13 bits: 1 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 1143 ( 50%)
# codes of length 03 bits: 254 ( 11%)
# codes of length 04 bits: 445 ( 19%)
# codes of length 05 bits: 228 ( 10%)
# codes of length 06 bits: 111 ( 5%)
# codes of length 07 bits: 48 ( 2%)
# codes of length 08 bits: 20 ( 1%)
# codes of length 09 bits: 22 ( 1%)
# codes of length 10 bits: 13 ( 1%)
# codes of length 11 bits: 5 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[193] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1001, -7, 97] RGB=[255,244,251] @ MCU[ 5, 3]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00001E44.1
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00001E45
*** Searching Compression Signatures ***
Signature: 01C7F83908166C226C06A44017421732
Signature (Rotated): 01D3EFDD3855C42AE3E0E6289F1A6726
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: OK [samsung] [SAMSUNG-SM-J320AZ]
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Canon ] [Canon EOS-1Ds Mark II ] [fine ] No
CAM:[CASIO COMPUTER CO.,LTD. ] [EX-Z1000 ] [ ] Yes
CAM:[NIKON ] [NIKON D2X ] [FINE ] No
CAM:[NIKON ] [NIKON D3 ] [FINE ] No
CAM:[SIGMA ] [SIGMA SD10 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD10 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD14 ] [Qual:12 ] No
CAM:[SIGMA ] [SIGMA SD14 ] [Qual:12 ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-R1 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[Digital Photo Professiona] [09 ]
SW :[IJG Library ] [099 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [099 ]
SW :[IrfanView ] [099 ]
SW :[idImager ] [099 ]
SW :[FastStone Image Viewer ] [099 ]
SW :[NeatImage ] [099 ]
SW :[Paint.NET ] [099 ]
SW :[Photomatix ] [099 ]
SW :[XnView ] [099 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 2 - Image has high probability of being processed/edited

284
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue624-DhtHasWrongLength-Progressive-N.jpg.txt

@ -0,0 +1,284 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue624-DhtHasWrongLength-Progressive-N.jpg]
Filesize: [30441] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 6 6 7 10 15 22 34
DQT, Row #1: 6 7 8 11 14 16 21 30
DQT, Row #2: 6 8 10 12 17 25 36 54
DQT, Row #3: 7 11 12 16 21 30 42 62
DQT, Row #4: 10 14 17 21 28 38 52 76
DQT, Row #5: 15 16 25 30 38 50 68 95
DQT, Row #6: 22 21 36 42 52 68 90 124
DQT, Row #7: 34 30 54 62 76 95 124 167
Approx quality factor = 71.19 (scaling=57.62 variance=593.35)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 6 6 6 7 10 15 22 34
DQT, Row #1: 6 7 8 11 14 16 21 30
DQT, Row #2: 6 8 10 12 17 25 36 54
DQT, Row #3: 7 11 12 16 21 30 42 62
DQT, Row #4: 10 14 17 21 28 38 52 76
DQT, Row #5: 15 16 25 30 38 50 68 95
DQT, Row #6: 22 21 36 42 52 68 90 124
DQT, Row #7: 34 30 54 62 76 95 124 167
Approx quality factor = 80.24 (scaling=39.51 variance=961.47)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009A
Frame header length = 17
Precision = 8
Number of Lines = 1080
Samples per Line = 1080
Image Size = 1080 x 1080
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000AD
Huffman table length = 51
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 05 06
Codes of length 04 bits (003 total): 01 03 04
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 02 04 06
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000E2
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000151B
Huffman table length = 2
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000151F
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000022BA
Huffman table length = 2
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000022BE
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000309F
Huffman table length = 53
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (003 total): 00 04 20
Codes of length 05 bits (007 total): 11 31 33 34 50 71 72
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (005 total): 12 21 52 60 61
Codes of length 08 bits (007 total): 10 13 22 32 41 51 A1
Codes of length 09 bits (003 total): 23 53 62
Codes of length 10 bits (005 total): 70 80 81 A0 F1
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 034
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000030D6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003353
Huffman table length = 54
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 04
Codes of length 04 bits (002 total): 03 05
Codes of length 05 bits (008 total): 00 06 20 32 50 63 71 B1
Codes of length 06 bits (005 total): 11 25 31 35 73
Codes of length 07 bits (002 total): 12 21
Codes of length 08 bits (004 total): 10 22 51 60
Codes of length 09 bits (005 total): 13 23 41 42 52
Codes of length 10 bits (005 total): 14 33 70 80 A1
Codes of length 11 bits (001 total): A0
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 035
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000338B
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000378D
Huffman table length = 83
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 02 03 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (003 total): 06 07 11
Codes of length 06 bits (005 total): 00 21 30 31 B2
Codes of length 07 bits (009 total): 12 13 32 40 41 50 51 72 74
Codes of length 08 bits (011 total): 14 16 22 33 35 42 52 61 71 B1 B3
Codes of length 09 bits (009 total): 15 20 23 24 60 62 81 91 C2
Codes of length 10 bits (006 total): 10 25 36 43 75 92
Codes of length 11 bits (004 total): 82 93 A1 A2
Codes of length 12 bits (006 total): 34 63 64 73 C3 D2
Codes of length 13 bits (001 total): A3
Codes of length 14 bits (005 total): 26 45 53 65 83
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 064
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000037E2
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000076E7
*** Searching Compression Signatures ***
Signature: 014D6128740A2927C9914C433E852F5A
Signature (Rotated): 014D6128740A2927C9914C433E852F5A
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

368
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue694-Decode-Exif-OutOfRange.jpg.txt

@ -0,0 +1,368 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue694-Decode-Exif-OutOfRange.jpg]
Filesize: [226421] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 194
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0007
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 96/1
[YResolution ] = 96/1
[ResolutionUnit ] = Inch
[Software ] = "PhotoFiltre 7"
[DateTime ] = "2017:08:30 22:45:26"
[ExifOffset ] = @ 0x0094
Offset to Next IFD = 0xFC5019BC
EXIF IFD1 @ Absolute 0xFC5019C8
Dir Length = 0x0000
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000A0
Dir Length = 0x0003
[ExifVersion ] = 02.10
[ExifImageWidth ] = 1400
[ExifImageHeight ] = 1400
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000000C6
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=2.99 variance=6.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000010B
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=1.54 variance=1.58)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00000150
Frame header length = 17
Precision = 8
Number of Lines = 1400
Samples per Line = 1400
Image Size = 1400 x 1400
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000163
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000184
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000023B
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000025C
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000313
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00000321
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00037473.0
Compression stats:
Compression Ratio: 26.06:1
Bits per pixel: 0.92:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 25384 ( 82%)
# codes of length 03 bits: 1101 ( 4%)
# codes of length 04 bits: 566 ( 2%)
# codes of length 05 bits: 758 ( 2%)
# codes of length 06 bits: 429 ( 1%)
# codes of length 07 bits: 616 ( 2%)
# codes of length 08 bits: 933 ( 3%)
# codes of length 09 bits: 1189 ( 4%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 13762 ( 89%)
# codes of length 03 bits: 146 ( 1%)
# codes of length 04 bits: 264 ( 2%)
# codes of length 05 bits: 354 ( 2%)
# codes of length 06 bits: 509 ( 3%)
# codes of length 07 bits: 335 ( 2%)
# codes of length 08 bits: 116 ( 1%)
# codes of length 09 bits: 2 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 48125 ( 26%)
# codes of length 03 bits: 20074 ( 11%)
# codes of length 04 bits: 54692 ( 30%)
# codes of length 05 bits: 21145 ( 12%)
# codes of length 06 bits: 3017 ( 2%)
# codes of length 07 bits: 14358 ( 8%)
# codes of length 08 bits: 8803 ( 5%)
# codes of length 09 bits: 2231 ( 1%)
# codes of length 10 bits: 5065 ( 3%)
# codes of length 11 bits: 1096 ( 1%)
# codes of length 12 bits: 224 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 6 ( 0%)
# codes of length 16 bits: 4924 ( 3%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 25772 ( 49%)
# codes of length 03 bits: 5924 ( 11%)
# codes of length 04 bits: 7056 ( 13%)
# codes of length 05 bits: 6378 ( 12%)
# codes of length 06 bits: 2891 ( 5%)
# codes of length 07 bits: 1200 ( 2%)
# codes of length 08 bits: 1082 ( 2%)
# codes of length 09 bits: 1030 ( 2%)
# codes of length 10 bits: 559 ( 1%)
# codes of length 11 bits: 299 ( 1%)
# codes of length 12 bits: 38 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 73 ( 0%)
# codes of length 15 bits: 67 ( 0%)
# codes of length 16 bits: 260 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[ 57] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1016, 0, 0] RGB=[255,255,255] @ MCU[ 40, 2]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x00037472.4
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00037473
*** Searching Compression Signatures ***
Signature: 01BBB1709AC9C1F89220D955A31A8F34
Signature (Rotated): 01BBB1709AC9C1F89220D955A31A8F34
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: OK [PhotoFiltre 7]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[CASIO COMPUTER CO.,LTD ] [EX-Z750 ] [ ] Yes
CAM:[CASIO COMPUTER CO.,LTD. ] [EX-Z1000 ] [ ] Yes
CAM:[PENTAX ] [PENTAX Optio S5i ] [ ] Yes
CAM:[SIGMA ] [SIGMA SD9 ] [ ] Yes
SW :[ACDSee ] [100 ]
SW :[Apple ImageIO.framework ] [100 (Best) ]
SW :[Digital Photo Professiona] [10 ]
SW :[IJG Library ] [100 ]
SW :[MS Office Pic Mgr ] [ ]
SW :[Nikon Scan ] [Excellent Qualit]
SW :[Picasa ] [100 (Maximum) ]
SW :[ZoomBrowser EX ] [highest ]
SW :[EOS Viewer Utility ] [ ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [100 ]
SW :[IrfanView ] [100 ]
SW :[idImager ] [100 ]
SW :[FastStone Image Viewer ] [100 ]
SW :[NeatImage ] [100 ]
SW :[Paint.NET ] [100 ]
SW :[Photomatix ] [100 ]
SW :[XnView ] [100 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

39
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue695-Invalid-EOI.jpg.txt

@ -0,0 +1,39 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue695-Invalid-EOI.jpg]
Filesize: [4805575] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 64
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0001
[ExifOffset ] = @ 0x001A
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x00000038
Dir Length = 0x0002
[ExifImageWidth ] = 0x[000003E8] / 1000
[ExifImageHeight ] = 0x[000003E8] / 1000
ERROR: Expected marker 0xFF, got 0x49 @ offset 0x00000056. Consider using [Tools->Img Search Fwd/Rev].

377
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue696-Resize-Exif-OutOfRange.jpg.txt

@ -0,0 +1,377 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue696-Resize-Exif-OutOfRange.jpg]
Filesize: [3196058] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 201
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x0007
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 96/1
[YResolution ] = 96/1
[ResolutionUnit ] = Inch
[Software ] = "PhotoFiltre Studio X"
[DateTime ] = "2017:09:12 23:47:30"
[ExifOffset ] = @ 0x009B
Offset to Next IFD = 0xFFFFFFFF
EXIF IFD1 @ Absolute 0x0000001D
Dir Length = 0x4900
Excessive # components (117440512). Limiting to first 4000.
Offset to Next IFD = 0x03011200
EXIF SubIFD @ Absolute 0x000000B9
Dir Length = 0x0003
[ExifVersion ] = 02.10
[ExifImageWidth ] = 3000
[ExifImageHeight ] = 3000
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000000DF
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=2.99 variance=6.13)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000124
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 1 1 1 1 1
DQT, Row #1: 1 1 1 1 1 1 1 1
DQT, Row #2: 1 1 1 1 1 1 1 1
DQT, Row #3: 1 1 1 1 1 1 1 1
DQT, Row #4: 1 1 1 1 1 1 1 1
DQT, Row #5: 1 1 1 1 1 1 1 1
DQT, Row #6: 1 1 1 1 1 1 1 1
DQT, Row #7: 1 1 1 1 1 1 1 1
Approx quality factor = 100.00 (scaling=1.54 variance=1.58)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00000169
Frame header length = 17
Precision = 8
Number of Lines = 3000
Samples per Line = 3000
Image Size = 3000 x 3000
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000017C
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000019D
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000254
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000275
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000032C
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x0000033A
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0030C498.0
Compression stats:
Compression Ratio: 8.45:1
Bits per pixel: 2.84:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 35306 ( 25%)
# codes of length 03 bits: 79378 ( 56%)
# codes of length 04 bits: 10642 ( 8%)
# codes of length 05 bits: 5371 ( 4%)
# codes of length 06 bits: 3913 ( 3%)
# codes of length 07 bits: 2829 ( 2%)
# codes of length 08 bits: 2486 ( 2%)
# codes of length 09 bits: 1451 ( 1%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 45165 ( 64%)
# codes of length 03 bits: 10069 ( 14%)
# codes of length 04 bits: 6960 ( 10%)
# codes of length 05 bits: 3541 ( 5%)
# codes of length 06 bits: 2100 ( 3%)
# codes of length 07 bits: 1345 ( 2%)
# codes of length 08 bits: 1100 ( 2%)
# codes of length 09 bits: 324 ( 0%)
# codes of length 10 bits: 84 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 1981662 ( 53%)
# codes of length 03 bits: 213036 ( 6%)
# codes of length 04 bits: 749857 ( 20%)
# codes of length 05 bits: 410362 ( 11%)
# codes of length 06 bits: 173055 ( 5%)
# codes of length 07 bits: 94282 ( 3%)
# codes of length 08 bits: 61648 ( 2%)
# codes of length 09 bits: 36705 ( 1%)
# codes of length 10 bits: 19723 ( 1%)
# codes of length 11 bits: 10118 ( 0%)
# codes of length 12 bits: 2157 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 211 ( 0%)
# codes of length 16 bits: 9772 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 425513 ( 38%)
# codes of length 03 bits: 127308 ( 11%)
# codes of length 04 bits: 204956 ( 18%)
# codes of length 05 bits: 171523 ( 15%)
# codes of length 06 bits: 89715 ( 8%)
# codes of length 07 bits: 30159 ( 3%)
# codes of length 08 bits: 25054 ( 2%)
# codes of length 09 bits: 22104 ( 2%)
# codes of length 10 bits: 10243 ( 1%)
# codes of length 11 bits: 4250 ( 0%)
# codes of length 12 bits: 210 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 1829 ( 0%)
# codes of length 15 bits: 1498 ( 0%)
# codes of length 16 bits: 2262 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[127] (range: 0..255)
Brightest Pixel Search:
YCC=[ 992, -112, 17] RGB=[254,255,227] @ MCU[ 35, 79]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0030C497.3
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0030C498
*** Searching Compression Signatures ***
Signature: 01BBB1709AC9C1F89220D955A31A8F34
Signature (Rotated): 01BBB1709AC9C1F89220D955A31A8F34
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: OK [PhotoFiltre Studio X]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[CASIO COMPUTER CO.,LTD ] [EX-Z750 ] [ ] Yes
CAM:[CASIO COMPUTER CO.,LTD. ] [EX-Z1000 ] [ ] Yes
CAM:[PENTAX ] [PENTAX Optio S5i ] [ ] Yes
CAM:[SIGMA ] [SIGMA SD9 ] [ ] Yes
SW :[ACDSee ] [100 ]
SW :[Apple ImageIO.framework ] [100 (Best) ]
SW :[Digital Photo Professiona] [10 ]
SW :[IJG Library ] [100 ]
SW :[MS Office Pic Mgr ] [ ]
SW :[Nikon Scan ] [Excellent Qualit]
SW :[Picasa ] [100 (Maximum) ]
SW :[ZoomBrowser EX ] [highest ]
SW :[EOS Viewer Utility ] [ ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [100 ]
SW :[IrfanView ] [100 ]
SW :[idImager ] [100 ]
SW :[FastStone Image Viewer ] [100 ]
SW :[NeatImage ] [100 ]
SW :[Paint.NET ] [100 ]
SW :[Photomatix ] [100 ]
SW :[XnView ] [100 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

446
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue721-InvalidAPP0.jpg.txt

@ -0,0 +1,446 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue721-InvalidAPP0.jpg]
Filesize: [1225163] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 806
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0007
[Make ] = "NIKON CORPORATION"
[Model ] = "NIKON D300S"
[Software ] = "Adobe Bridge CS6 (Windows)"
[DateTime ] = "2017:06:07 16:49:51"
[Artist ] = ""Evgeniy Ivahiv Mr.Ivas""
[Copyright ] = "Evgeniy Ivahiv Erich Krause"
[ExifOffset ] = @ 0x00EC
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000F8
Dir Length = 0x0022
[ExposureTime ] = 1/160 s
[FNumber ] = F10.0
[ExposureProgram ] = Manual
[ISOSpeedRatings ] = 200
[ExifVersion ] = 02.21
[DateTimeOriginal ] = "2017:06:06 11:29:53"
[ShutterSpeedValue ] = 7321928/1000000
[ApertureValue ] = 6643856/1000000
[ExposureBiasValue ] = -3.00 eV
[MaxApertureValue ] = 50/10
[MeteringMode ] = CenterWeightedAverage
[LightSource ] = unknown
[Flash ] = Flash did not fire
[FocalLength ] = 48 mm
[SubSecTimeOriginal ] = "24"
[ColorSpace ] = Uncalibrated
[ExifImageWidth ] = 2304
[ExifImageHeight ] = 2998
[SensingMethod ] = One-chip color area sensor
[FileSource ] = DSC
[SceneType ] = A directly photographed image
[ExposureMode ] = Manual exposure
[WhiteBalance ] = Manual white balance
[DigitalZoomRatio ] = 1/1
[FocalLengthIn35mmFilm ] = 72
[SceneCaptureType ] = Standard
[GainControl ] = 0
[Contrast ] = 0
[Saturation ] = 0
[Sharpness ] = 2
[SubjectDistanceRange ] = 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x0000032A
Length = 4442
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00001486
Length = 160
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x0068] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 4
IPTC [002:055] Date Created = "20170606"
IPTC [002:060] Time Created = "112953"
IPTC [002:080] By-line = "Evgeniy Ivahiv Mr.Ivas"
IPTC [002:116] Copyright Notice = "Evgeniy Ivahiv Erich Krause"
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0x59 13 63 D2 BD 08 14 B4 2B E3 4F 37 D7 52 D2 6F | Y.c.....+.O7.R.o
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00001528
Length = 3160
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 3144 bytes
Preferred CMM Type : 'Lino' (0x4C696E6F)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1998-02-09 06:49:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Microsoft Corporation ('MSFT' (0x4D534654))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'IEC ' (0x49454320)
Device Model : 'sRGB' (0x73524742)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'HP ' (0x48502020)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00002182
Length = 12
Identifier = [Adobe_CM]
Not known APP0 type. Skipping remainder.
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00002190
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 7 11 14 17 22 17
DQT, Row #1: 4 5 6 10 14 19 12 12
DQT, Row #2: 7 6 8 14 19 12 12 12
DQT, Row #3: 11 10 14 19 12 12 12 12
DQT, Row #4: 14 14 19 12 12 12 12 12
DQT, Row #5: 17 19 12 12 12 12 12 12
DQT, Row #6: 22 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 83.88 (scaling=32.24 variance=430.71)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 9 19 34 20 20 17 17
DQT, Row #1: 9 12 19 14 14 12 12 12
DQT, Row #2: 19 19 14 14 12 12 12 12
DQT, Row #3: 34 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 89.11 (scaling=21.78 variance=377.49)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00002216
Length = 4
interval = 288
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x0000221C
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 49152
APP14Flags1 = 0
ColorTransform = 1 [YCbCr]
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x0000222C
Frame header length = 17
Precision = 8
Number of Lines = 2998
Samples per Line = 2304
Image Size = 2304 x 2998
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000223F
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (004 total): 03 04 05 06
Codes of length 04 bits (003 total): 02 07 08
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (001 total): 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (001 total): 06
Codes of length 08 bits (000 total):
Codes of length 09 bits (002 total): 07 08
Codes of length 10 bits (003 total): 09 0A 0B
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 02 03 11
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (004 total): 04 12 31 41
Codes of length 06 bits (002 total): 51 61
Codes of length 07 bits (008 total): 05 13 22 71 81 91 A1 F0
Codes of length 08 bits (004 total): 06 14 B1 C1
Codes of length 09 bits (005 total): 23 32 D1 E1 F1
Codes of length 10 bits (002 total): 07 42
Codes of length 11 bits (003 total): 15 24 52
Codes of length 12 bits (002 total): 33 62
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 16
Codes of length 16 bits (125 total): 34 43 72 82 92 A2 08 17 53 B2 C2 25 D2 E2 44 83
84 F2 09 0A 18 19 1A 26 27 28 29 2A 35 36 37 38
39 3A 45 46 47 48 49 4A 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 85
86 87 88 89 8A 93 94 95 96 97 98 B3 C3 D3 99 9A
A3 A4 A5 A6 A7 A8 A9 AA B4 B5 B6 B7 B8 B9 BA C4
C5 C6 C7 C8 C9 CA D4 D5 D6 D7 D8 D9 DA E3 E4 E5
E6 E7 E8 E9 EA F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 02 11
Codes of length 05 bits (001 total): 03
Codes of length 06 bits (003 total): 12 21 31
Codes of length 07 bits (001 total): 41
Codes of length 08 bits (005 total): 04 13 51 61 71
Codes of length 09 bits (002 total): 81 F0
Codes of length 10 bits (006 total): 22 91 A1 B1 C1 D1
Codes of length 11 bits (003 total): 14 32 E1
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (127 total): 05 06 07 08 09 0A 15 16 17 18 19 1A 23 24 25 26
27 28 29 2A 33 34 35 36 37 38 39 3A 42 43 44 45
46 47 48 49 4A 52 53 54 55 56 57 58 59 5A 62 63
64 65 66 67 68 69 6A 72 73 74 75 76 77 78 79 7A
82 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98
99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6
B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4
D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA
Codes of length 15 bits (009 total): F2 F3 F4 F5 F6 F7 F8 F9 FA
Codes of length 16 bits (000 total):
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000023E3
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000023F1
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
*** ERROR: Overread scan segment (after bitstring)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.6
*** ERROR: Bad scan data in MCU(272,16): Lum CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(2176,128)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(272,16): Chr(Cb) CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(2176,128)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(272,16): Chr(Cr) CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(2176,128)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(0,17): Lum CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(0,136)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(0,17): Chr(Cb) CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(0,136)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(0,17): Chr(Cr) CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(0,136)
*** ERROR: Overread scan segment (before nCode)! @ Offset: 0x00003EA5.1
*** ERROR: Bad huffman code @ 0x00003EA5.1
*** ERROR: Bad scan data in MCU(0,18): Lum CSS(0,0) @ Offset 0x00003EA5.1
MCU located at pixel=(0,144)
Only reported first 20 instances of this message...
Compression stats:
Compression Ratio: 3031.33:1
Bits per pixel: 0.01:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 4841 ( 99%)
# codes of length 03 bits: 33 ( 1%)
# codes of length 04 bits: 6 ( 0%)
# codes of length 05 bits: 1 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 9732 (100%)
# codes of length 02 bits: 23 ( 0%)
# codes of length 03 bits: 5 ( 0%)
# codes of length 04 bits: 0 ( 0%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 274 ( 5%)
# codes of length 03 bits: 297 ( 5%)
# codes of length 04 bits: 4903 ( 85%)
# codes of length 05 bits: 88 ( 2%)
# codes of length 06 bits: 26 ( 0%)
# codes of length 07 bits: 98 ( 2%)
# codes of length 08 bits: 25 ( 0%)
# codes of length 09 bits: 4 ( 0%)
# codes of length 10 bits: 14 ( 0%)
# codes of length 11 bits: 1 ( 0%)
# codes of length 12 bits: 2 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 17 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 9760 (100%)
# codes of length 02 bits: 5 ( 0%)
# codes of length 03 bits: 0 ( 0%)
# codes of length 04 bits: 14 ( 0%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 2 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[128] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1014, 0, 0] RGB=[254,254,254] @ MCU[ 0, 0]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 17
Next position in scan buffer: Offset 0x00003EA5.1
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0012B1C9
*** Searching Compression Signatures ***
Signature: 01A20F69263117021CD16AEF44D6E650
Signature (Rotated): 01A20F69263117021CD16AEF44D6E650
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: OK [NIKON] [NIKON D300S]
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Bridge CS6 (Windows)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[Adobe Photoshop ] [Save As 08 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 2 - Image has high probability of being processed/edited

519
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-A.jpg.txt

@ -0,0 +1,519 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue723-Ordered-Interleaved-Progressive-A.jpg]
Filesize: [42798] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 2 1 1 2 2 4 5 6
DQT, Row #1: 1 1 1 2 3 6 6 6
DQT, Row #2: 1 1 2 2 4 6 7 6
DQT, Row #3: 1 2 2 3 5 9 8 6
DQT, Row #4: 2 2 4 6 7 11 10 8
DQT, Row #5: 2 4 6 6 8 10 11 9
DQT, Row #6: 5 6 8 9 10 12 12 10
DQT, Row #7: 7 9 10 10 11 10 10 10
Approx quality factor = 95.04 (scaling=9.93 variance=1.25)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 2 2 2 5 10 10 10 10
DQT, Row #1: 2 2 3 7 10 10 10 10
DQT, Row #2: 2 3 6 10 10 10 10 10
DQT, Row #3: 5 7 10 10 10 10 10 10
DQT, Row #4: 10 10 10 10 10 10 10 10
DQT, Row #5: 10 10 10 10 10 10 10 10
DQT, Row #6: 10 10 10 10 10 10 10 10
DQT, Row #7: 10 10 10 10 10 10 10 10
Approx quality factor = 94.91 (scaling=10.18 variance=0.26)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 600
Samples per Line = 600
Image Size = 600 x 600
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 29
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 01 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (005 total): 04 05 06 07 08
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000D0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000A58
Huffman table length = 27
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 01 02
Codes of length 04 bits (003 total): 03 04 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000A75
Scan header length = 10
Number of img components = 2
Component[1]: selector=0x02, table=1(DC),0(AC)
Component[2]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000E55
Huffman table length = 37
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (005 total): 02 04 05 11 12
Codes of length 04 bits (004 total): 00 01 03 06
Codes of length 05 bits (001 total): 30
Codes of length 06 bits (005 total): 10 13 14 15 16
Codes of length 07 bits (001 total): 40
Codes of length 08 bits (001 total): 20
Codes of length 09 bits (001 total): A0
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 018
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000E7C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 2
Successive approximation = 0x03
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000015BD
Huffman table length = 82
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (004 total): 00 04 05 11
Codes of length 05 bits (002 total): 12 21
Codes of length 06 bits (002 total): 13 31
Codes of length 07 bits (011 total): 06 10 14 22 30 32 40 41 51 61 92
Codes of length 08 bits (012 total): 15 23 25 52 53 54 71 73 91 A1 B1 C1
Codes of length 09 bits (007 total): 20 24 33 42 72 81 93
Codes of length 10 bits (006 total): 43 44 55 62 63 A2
Codes of length 11 bits (003 total): 82 83 D1
Codes of length 12 bits (006 total): 16 26 34 50 A0 B2
Codes of length 13 bits (007 total): 35 45 64 84 A3 C2 E1
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 063
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001611
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 3 .. 63
Successive approximation = 0x03
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002E3F
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 11
Codes of length 03 bits (001 total): 00
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (004 total): 10 41 51 61
Codes of length 06 bits (005 total): 20 71 81 91 F0
Codes of length 07 bits (005 total): 30 A1 B1 C1 D1
Codes of length 08 bits (001 total): F1
Codes of length 09 bits (001 total): E1
Codes of length 10 bits (001 total): 40
Codes of length 11 bits (001 total): A0
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002E6B
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x32
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003F38
Huffman table length = 43
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (001 total): 61
Codes of length 07 bits (004 total): 10 71 81 91
Codes of length 08 bits (001 total): A1
Codes of length 09 bits (005 total): 30 B1 C1 D1 F0
Codes of length 10 bits (001 total): E1
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (000 total):
Codes of length 13 bits (003 total): 20 40 A0
Codes of length 14 bits (001 total): 50
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003F65
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00005B9B
Huffman table length = 58
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 03
Codes of length 04 bits (003 total): 04 11 12
Codes of length 05 bits (001 total): 21
Codes of length 06 bits (005 total): 05 13 14 31 51
Codes of length 07 bits (005 total): 10 15 20 30 41
Codes of length 08 bits (005 total): 22 23 32 33 71
Codes of length 09 bits (005 total): 24 34 61 81 F0
Codes of length 10 bits (008 total): 80 91 A1 B1 C1 D1 E1 F1
Codes of length 11 bits (003 total): 42 52 62
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 039
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00005BD7
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00006270
Huffman table length = 57
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (004 total): 00 02 03 11
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (002 total): 05 30
Codes of length 07 bits (004 total): 10 13 14 20
Codes of length 08 bits (003 total): 32 41 51
Codes of length 09 bits (007 total): 15 22 23 61 71 81 F0
Codes of length 10 bits (002 total): 91 A1
Codes of length 11 bits (004 total): 24 25 33 80
Codes of length 12 bits (007 total): 42 62 B1 C1 D1 E1 F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 038
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000062AB
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00006827
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (002 total): 51 61
Codes of length 07 bits (001 total): 71
Codes of length 08 bits (004 total): 81 91 A1 B1
Codes of length 09 bits (003 total): 30 C1 D1
Codes of length 10 bits (001 total): F0
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (001 total): 10
Codes of length 13 bits (000 total):
Codes of length 14 bits (003 total): 40 A0 F1
Codes of length 15 bits (001 total): 20
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00006853
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000099AB
Huffman table length = 41
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (003 total): 31 41 61
Codes of length 06 bits (003 total): 10 51 91
Codes of length 07 bits (004 total): 20 71 81 B1
Codes of length 08 bits (002 total): 30 A1
Codes of length 09 bits (002 total): C1 F0
Codes of length 10 bits (003 total): 80 E1 F1
Codes of length 11 bits (001 total): D1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000099D6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000A0BC
Huffman table length = 41
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (001 total): 41
Codes of length 06 bits (004 total): 10 51 61 71
Codes of length 07 bits (002 total): 30 91
Codes of length 08 bits (002 total): 20 81
Codes of length 09 bits (002 total): A1 B1
Codes of length 10 bits (002 total): C1 D1
Codes of length 11 bits (003 total): 40 80 E1
Codes of length 12 bits (001 total): F1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000A0E7
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000A72C
*** Searching Compression Signatures ***
Signature: 01E764F3ECB6C14A51FF83F1FF6D546B
Signature (Rotated): 01E6610D026E8E6FE4BECEA9B3328A63
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Minolta Co., Ltd. ] [DiMAGE F100 ] [ ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5400 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E8700 ] [FINE ] No
CAM:[OLYMPUS CORPORATION ] [C8080WZ ] [ ] No
CAM:[PENTAX ] [PENTAX K10D ] [ ] No
CAM:[SAMSUNG TECHWIN ] [Pro 815 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV 7, NV 7 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV10, NV10 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-F828 ] [ ] No
CAM:[SONY ] [DSC-H1 ] [ ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-H5 ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-L1 ] [ ] No
CAM:[SONY ] [DSC-N1 ] [ ] No
CAM:[SONY ] [DSC-P150 ] [ ] No
CAM:[SONY ] [DSC-P200 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-V3 ] [ ] No
CAM:[SONY ] [DSC-W55 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[Apple ImageIO.framework ] [084 ]
SW :[IJG Library ] [095 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [095 ]
SW :[IrfanView ] [095 ]
SW :[idImager ] [095 ]
SW :[FastStone Image Viewer ] [095 ]
SW :[NeatImage ] [095 ]
SW :[Paint.NET ] [095 ]
SW :[Photomatix ] [095 ]
SW :[XnView ] [095 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

477
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-B.jpg.txt

@ -0,0 +1,477 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue723-Ordered-Interleaved-Progressive-B.jpg]
Filesize: [36937] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 8 10 12
DQT, Row #1: 2 2 3 4 5 12 12 11
DQT, Row #2: 3 3 3 5 8 11 14 11
DQT, Row #3: 3 3 4 6 10 17 16 12
DQT, Row #4: 4 4 7 11 14 22 21 15
DQT, Row #5: 5 7 11 13 16 21 23 18
DQT, Row #6: 10 13 16 17 21 24 24 20
DQT, Row #7: 14 18 19 20 22 20 21 20
Approx quality factor = 90.06 (scaling=19.88 variance=1.14)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 4 5 9 20 20 20 20
DQT, Row #1: 4 4 5 13 20 20 20 20
DQT, Row #2: 5 5 11 20 20 20 20 20
DQT, Row #3: 9 13 20 20 20 20 20 20
DQT, Row #4: 20 20 20 20 20 20 20 20
DQT, Row #5: 20 20 20 20 20 20 20 20
DQT, Row #6: 20 20 20 20 20 20 20 20
DQT, Row #7: 20 20 20 20 20 20 20 20
Approx quality factor = 89.93 (scaling=20.14 variance=0.34)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 600
Samples per Line = 600
Image Size = 600 x 600
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 30
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (000 total):
Codes of length 04 bits (007 total): 02 03 04 05 06 07 08
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000D1
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000A95
Huffman table length = 28
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 04 05
Codes of length 04 bits (003 total): 01 03 06
Codes of length 05 bits (001 total): 02
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (001 total): 08
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000AB3
Scan header length = 10
Number of img components = 2
Component[1]: selector=0x02, table=1(DC),0(AC)
Component[2]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000E60
Huffman table length = 54
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (006 total): 00 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (003 total): 11 12 13
Codes of length 06 bits (002 total): 21 50
Codes of length 07 bits (004 total): 07 10 14 15
Codes of length 08 bits (004 total): 20 22 23 31
Codes of length 09 bits (005 total): 16 24 30 32 36
Codes of length 10 bits (003 total): 25 40 41
Codes of length 11 bits (004 total): 17 42 43 80
Codes of length 12 bits (003 total): 26 33 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 035
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000E98
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001E73
Huffman table length = 75
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (002 total): 00 11
Codes of length 05 bits (002 total): 04 12
Codes of length 06 bits (005 total): 13 21 31 41 51
Codes of length 07 bits (006 total): 10 22 52 61 71 81
Codes of length 08 bits (010 total): 05 14 20 32 42 50 91 A1 B1 C1
Codes of length 09 bits (005 total): 23 33 62 72 D1
Codes of length 10 bits (010 total): 24 30 40 53 63 73 82 92 E1 F0
Codes of length 11 bits (005 total): 15 34 35 43 A2
Codes of length 12 bits (004 total): 64 74 80 B2
Codes of length 13 bits (003 total): 60 93 F1
Codes of length 14 bits (001 total): A3
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 056
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001EC0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003A1E
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (005 total): 10 51 61 71 81
Codes of length 07 bits (004 total): 50 91 A1 B1
Codes of length 08 bits (002 total): C1 F0
Codes of length 09 bits (003 total): 20 D1 E1
Codes of length 10 bits (001 total): F1
Codes of length 11 bits (001 total): 40
Codes of length 12 bits (001 total): 80
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003A4A
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00005386
Huffman table length = 43
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (001 total): 51
Codes of length 07 bits (003 total): 61 71 81
Codes of length 08 bits (004 total): 50 91 A1 B1
Codes of length 09 bits (002 total): 10 C1
Codes of length 10 bits (003 total): D1 E1 F0
Codes of length 11 bits (000 total):
Codes of length 12 bits (003 total): 20 80 F1
Codes of length 13 bits (001 total): 30
Codes of length 14 bits (001 total): 40
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000053B3
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007B5B
Huffman table length = 50
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (003 total): 13 31 40
Codes of length 07 bits (003 total): 06 22 41
Codes of length 08 bits (002 total): 14 32
Codes of length 09 bits (004 total): 10 16 23 33
Codes of length 10 bits (005 total): 15 20 42 60 61
Codes of length 11 bits (005 total): 24 34 50 51 52
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 031
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007B8F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 12
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000081EE
Huffman table length = 49
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (004 total): 21 31 41 51
Codes of length 05 bits (003 total): 02 61 71
Codes of length 06 bits (007 total): 10 40 81 91 A1 B1 C1
Codes of length 07 bits (003 total): D1 E1 F0
Codes of length 08 bits (003 total): 03 50 F1
Codes of length 09 bits (004 total): 12 22 30 60
Codes of length 10 bits (003 total): 20 32 70
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 030
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008221
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 13 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000084F2
Huffman table length = 48
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (002 total): 03 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (003 total): 00 11 12
Codes of length 06 bits (003 total): 06 21 31
Codes of length 07 bits (003 total): 13 22 40
Codes of length 08 bits (002 total): 14 41
Codes of length 09 bits (005 total): 07 10 15 32 50
Codes of length 10 bits (003 total): 42 60 61
Codes of length 11 bits (005 total): 20 23 33 43 51
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 029
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008524
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 12
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00008C10
Huffman table length = 51
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (004 total): 02 31 41 51
Codes of length 06 bits (002 total): 61 71
Codes of length 07 bits (009 total): 03 12 40 81 91 A1 B1 C1 D1
Codes of length 08 bits (003 total): 10 E1 F0
Codes of length 09 bits (003 total): 22 32 F1
Codes of length 10 bits (004 total): 04 50 52 70
Codes of length 11 bits (003 total): 20 42 60
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008C45
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 13 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00009047
*** Searching Compression Signatures ***
Signature: 013BA18D5561625796E986FDBC09F846
Signature (Rotated): 01AC57E12793DFA7C46C704625C5AF0F
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[??? ] [Treo 680 ] [ ] Yes
CAM:[Canon ] [Canon PowerShot Pro1 ] [fine ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E3100 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 9530 ] [Superfine ] Yes
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W1 ] [ ] No
CAM:[SONY ] [SONY ] [ ] No
SW :[ACDSee ] [ ]
SW :[FixFoto ] [fine ]
SW :[IJG Library ] [090 ]
SW :[ZoomBrowser EX ] [high ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [090 ]
SW :[IrfanView ] [090 ]
SW :[idImager ] [090 ]
SW :[FastStone Image Viewer ] [090 ]
SW :[NeatImage ] [090 ]
SW :[Paint.NET ] [090 ]
SW :[Photomatix ] [090 ]
SW :[XnView ] [090 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

484
tests/Images/Input/Jpg/issues/JpegSnoopReports/Issue723-Ordered-Interleaved-Progressive-C.jpg.txt

@ -0,0 +1,484 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Issue723-Ordered-Interleaved-Progressive-C.jpg]
Filesize: [46799] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 38 x 38 DPcm (dots per cm)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 2 1 1 2 2 4 5 6
DQT, Row #1: 1 1 1 2 3 6 6 6
DQT, Row #2: 1 1 2 2 4 6 7 6
DQT, Row #3: 1 2 2 3 5 9 8 6
DQT, Row #4: 2 2 4 6 7 11 10 8
DQT, Row #5: 2 4 6 6 8 10 11 9
DQT, Row #6: 5 6 8 9 10 12 12 10
DQT, Row #7: 7 9 10 10 11 10 10 10
Approx quality factor = 95.04 (scaling=9.93 variance=1.25)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 2 2 2 5 10 10 10 10
DQT, Row #1: 2 2 3 7 10 10 10 10
DQT, Row #2: 2 3 6 10 10 10 10 10
DQT, Row #3: 5 7 10 10 10 10 10 10
DQT, Row #4: 10 10 10 10 10 10 10 10
DQT, Row #5: 10 10 10 10 10 10 10 10
DQT, Row #6: 10 10 10 10 10 10 10 10
DQT, Row #7: 10 10 10 10 10 10 10 10
Approx quality factor = 94.91 (scaling=10.18 variance=0.26)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 517
Samples per Line = 502
Image Size = 502 x 517
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 30
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 06
Codes of length 04 bits (004 total): 04 05 07 08
Codes of length 05 bits (003 total): 02 03 09
Codes of length 06 bits (001 total): 01
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000D1
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000858
Huffman table length = 29
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (001 total): 05
Codes of length 04 bits (005 total): 02 03 04 06 07
Codes of length 05 bits (001 total): 01
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000877
Scan header length = 10
Number of img components = 2
Component[1]: selector=0x02, table=1(DC),0(AC)
Component[2]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000012C2
Huffman table length = 67
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (004 total): 01 02 04 05
Codes of length 04 bits (002 total): 00 06
Codes of length 05 bits (001 total): 11
Codes of length 06 bits (002 total): 07 12
Codes of length 07 bits (004 total): 13 14 21 50
Codes of length 08 bits (004 total): 08 15 22 31
Codes of length 09 bits (002 total): 17 23
Codes of length 10 bits (006 total): 10 16 20 24 32 41
Codes of length 11 bits (008 total): 25 33 34 42 51 52 54 62
Codes of length 12 bits (004 total): 26 30 35 40
Codes of length 13 bits (005 total): 18 27 37 55 56
Codes of length 14 bits (005 total): 44 53 61 70 80
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 048
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001307
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 12
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002FBE
Huffman table length = 80
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (005 total): 13 22 41 51 61
Codes of length 07 bits (011 total): 05 10 14 32 50 71 81 91 A1 B1 C1
Codes of length 08 bits (007 total): 20 23 42 52 62 82 D1
Codes of length 09 bits (009 total): 15 30 33 53 72 92 A2 B2 E1
Codes of length 10 bits (006 total): 24 40 43 73 C2 E2
Codes of length 11 bits (004 total): 06 63 D2 F0
Codes of length 12 bits (005 total): 25 54 75 A3 B3
Codes of length 13 bits (005 total): 44 64 70 80 83
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 061
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003010
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 13 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000048A9
Huffman table length = 43
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (001 total): 41
Codes of length 06 bits (003 total): 51 61 71
Codes of length 07 bits (003 total): 10 81 A1
Codes of length 08 bits (004 total): 50 91 B1 C1
Codes of length 09 bits (003 total): 20 D1 F0
Codes of length 10 bits (001 total): F1
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (001 total): 30
Codes of length 13 bits (001 total): 70
Codes of length 14 bits (001 total): 80
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000048D6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000060D3
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (002 total): 51 61
Codes of length 07 bits (001 total): 71
Codes of length 08 bits (004 total): 50 81 91 A1
Codes of length 09 bits (002 total): 10 B1
Codes of length 10 bits (002 total): C1 F0
Codes of length 11 bits (002 total): D1 F1
Codes of length 12 bits (003 total): 30 70 E1
Codes of length 13 bits (001 total): 20
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000060FF
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007FD1
Huffman table length = 54
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (004 total): 01 02 04 05
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (002 total): 06 11
Codes of length 06 bits (006 total): 07 12 13 21 31 50
Codes of length 07 bits (001 total): 14
Codes of length 08 bits (002 total): 15 22
Codes of length 09 bits (005 total): 10 23 32 33 41
Codes of length 10 bits (003 total): 16 17 20
Codes of length 11 bits (002 total): 24 34
Codes of length 12 bits (007 total): 25 26 30 40 42 51 70
Codes of length 13 bits (001 total): 80
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 035
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008009
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 8
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00008F76
Huffman table length = 59
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (004 total): 03 12 41 51
Codes of length 06 bits (003 total): 61 71 81
Codes of length 07 bits (005 total): 10 22 50 91 A1
Codes of length 08 bits (007 total): 32 52 B1 C1 D1 F0 F1
Codes of length 09 bits (002 total): 04 13
Codes of length 10 bits (004 total): 20 23 42 72
Codes of length 11 bits (006 total): 62 70 80 82 92 E1
Codes of length 12 bits (003 total): 30 60 A2
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 040
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008FB3
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 9 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00009B28
Huffman table length = 51
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 03
Codes of length 03 bits (004 total): 01 02 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (003 total): 00 07 11
Codes of length 06 bits (003 total): 12 13 31
Codes of length 07 bits (003 total): 08 21 50
Codes of length 08 bits (003 total): 10 14 15
Codes of length 09 bits (004 total): 20 23 32 41
Codes of length 10 bits (001 total): 16
Codes of length 11 bits (003 total): 22 24 40
Codes of length 12 bits (005 total): 17 18 33 34 70
Codes of length 13 bits (001 total): 80
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00009B5D
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 8
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000AB99
Huffman table length = 62
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 11
Codes of length 04 bits (002 total): 03 21
Codes of length 05 bits (004 total): 12 31 41 51
Codes of length 06 bits (003 total): 04 61 71
Codes of length 07 bits (005 total): 10 22 32 50 81
Codes of length 08 bits (004 total): 13 91 A1 B1
Codes of length 09 bits (008 total): 20 23 42 52 62 72 C1 D1
Codes of length 10 bits (005 total): 05 14 92 E1 F0
Codes of length 11 bits (003 total): 30 33 F1
Codes of length 12 bits (005 total): 70 80 82 90 A2
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 043
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000ABD9
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 9 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000B6CD
*** Searching Compression Signatures ***
Signature: 01E764F3ECB6C14A51FF83F1FF6D546B
Signature (Rotated): 01E6610D026E8E6FE4BECEA9B3328A63
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Minolta Co., Ltd. ] [DiMAGE F100 ] [ ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5400 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E8700 ] [FINE ] No
CAM:[OLYMPUS CORPORATION ] [C8080WZ ] [ ] No
CAM:[PENTAX ] [PENTAX K10D ] [ ] No
CAM:[SAMSUNG TECHWIN ] [Pro 815 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV 7, NV 7 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV10, NV10 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-F828 ] [ ] No
CAM:[SONY ] [DSC-H1 ] [ ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-H5 ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-L1 ] [ ] No
CAM:[SONY ] [DSC-N1 ] [ ] No
CAM:[SONY ] [DSC-P150 ] [ ] No
CAM:[SONY ] [DSC-P200 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-V3 ] [ ] No
CAM:[SONY ] [DSC-W55 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
SW :[Apple ImageIO.framework ] [084 ]
SW :[IJG Library ] [095 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [095 ]
SW :[IrfanView ] [095 ]
SW :[idImager ] [095 ]
SW :[FastStone Image Viewer ] [095 ]
SW :[NeatImage ] [095 ]
SW :[Paint.NET ] [095 ]
SW :[Photomatix ] [095 ]
SW :[XnView ] [095 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

772
tests/Images/Input/Jpg/issues/JpegSnoopReports/issue750-exif-load.jpg.txt

@ -0,0 +1,772 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\issue750-exif-load.jpg]
Filesize: [36885] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000002
Length = 3656
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 08000000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000014
Dir Length = 0x0010
[Make ] = "Canon"
[Model ] = "Canon EOS 70D"
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 720000/10000
[YResolution ] = 720000/10000
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop CS6 (Windows)"
[DateTime ] = "2018:02:28 17:51:59"
[YCbCrPositioning ] = Centered
[ExifOffset ] = @ 0x012C
[GPSOffset ] = @ 0x04C8
Offset to Next IFD = 0x000004DC
EXIF IFD1 @ Absolute 0x000004E8
Dir Length = 0x0006
[Compression ] = JPEG
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[JpegIFOffset ] = @ +0x053A = @ 0x0546
[JpegIFByteCount ] = 0x[00000906] / 2310
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x00000138
Dir Length = 0x0025
[ExposureTime ] = 1/60 s
[FNumber ] = F11.0
[ExposureProgram ] = Manual
[ISOSpeedRatings ] = 100
[ExifVersion ] = 02.30
[DateTimeOriginal ] = "2017:09:14 14:41:54"
[DateTimeDigitized ] = "2017:09:14 14:41:54"
[ComponentsConfiguration ] = [Y Cb Cr .]
[ShutterSpeedValue ] = 393216/65536
[ApertureValue ] = 458752/65536
[ExposureBiasValue ] = 0.00 eV
[MeteringMode ] = Pattern
[Flash ] = Flash did not fire
[FocalLength ] = 50 mm
[UserComment ] = ""
[SubSecTime ] = "277"
[SubSecTimeOriginal ] = "00"
[SubSecTimeDigitized ] = "00"
[FlashPixVersion ] = 01.00
[ColorSpace ] = sRGB
[ExifImageWidth ] = 0x[000001D3] / 467
[ExifImageHeight ] = 0x[000002BC] / 700
[ExifInteroperabilityOffset ] = @ 0x04A8
[FocalPlaneXResolution ] = 5472000/899
[FocalPlaneYResolution ] = 3648000/599
[FocalPlaneResolutionUnit ] = Inch
[CustomRendered ] = Normal process
[ExposureMode ] = Manual exposure
[WhiteBalance ] = Auto white balance
[SceneCaptureType ] = Standard
EXIF GPSIFD @ Absolute 0x000004D4
Dir Length = 0x0001
[GPSVersionID ] = 2.3.0.0
EXIF InteropIFD @ Absolute 0x000004B4
Dir Length = 0x0002
[InteroperabilityIndex ] = "R98"
[InteroperabilityVersion ] = 01.00
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00000E4C
Length = 4648
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x002C] DefinedName="IPTC-NAA record"
IPTC [001:090] Coded Character Set = "%G"
IPTC [002:000] Record Version = 51658
IPTC [002:055] Date Created = "20170914"
IPTC [002:060] Time Created = "144154+0000"
8BIM: [0x0425] Name="" Len=[0x0010] DefinedName="Caption digest"
Caption digest = | 0x8B 58 80 D1 16 85 C7 6D 47 04 59 0B 61 59 FA 69 | .X.....mG.Y.aY.i
8BIM: [0x043A] Name="" Len=[0x00E5] DefinedName="Print Information"
Print Information =
| 0x00 00 00 10 00 00 00 01 00 00 00 00 00 0B 70 72 | ..............pr
| 0x69 6E 74 4F 75 74 70 75 74 00 00 00 05 00 00 00 | intOutput.......
| 0x00 50 73 74 53 62 6F 6F 6C 01 00 00 00 00 49 6E | .PstSbool.....In
| 0x74 65 65 6E 75 6D 00 00 00 00 49 6E 74 65 00 00 | teenum....Inte..
| 0x00 00 43 6C 72 6D 00 00 00 0F 70 72 69 6E 74 53 | ..Clrm....printS
| 0x69 78 74 65 65 6E 42 69 74 62 6F 6F 6C 00 00 00 | ixteenBitbool...
| 0x00 0B 70 72 69 6E 74 65 72 4E 61 6D 65 54 45 58 | ..printerNameTEX
| 0x54 00 00 00 01 00 00 00 00 00 0F 70 72 69 6E 74 | T..........print
| ...
8BIM: [0x043B] Name="" Len=[0x022D] DefinedName="Print Style"
Print Style =
| 0x00 00 00 10 00 00 00 01 00 00 00 00 00 12 70 72 | ..............pr
| 0x69 6E 74 4F 75 74 70 75 74 4F 70 74 69 6F 6E 73 | intOutputOptions
| 0x00 00 00 17 00 00 00 00 43 70 74 6E 62 6F 6F 6C | ........Cptnbool
| 0x00 00 00 00 00 43 6C 62 72 62 6F 6F 6C 00 00 00 | .....Clbrbool...
| 0x00 00 52 67 73 4D 62 6F 6F 6C 00 00 00 00 00 43 | ..RgsMbool.....C
| 0x72 6E 43 62 6F 6F 6C 00 00 00 00 00 43 6E 74 43 | rnCbool.....CntC
| 0x62 6F 6F 6C 00 00 00 00 00 4C 62 6C 73 62 6F 6F | bool.....Lblsboo
| 0x6C 00 00 00 00 00 4E 67 74 76 62 6F 6F 6C 00 00 | l.....Ngtvbool..
| ...
8BIM: [0x03ED] Name="" Len=[0x0010] DefinedName="ResolutionInfo structure"
Horizontal resolution = 72 pixels per inch
Width unit = cm
Vertical resolution = 72 pixels per inch
Height unit = cm
8BIM: [0x0426] Name="" Len=[0x000E] DefinedName="Print scale"
Style = centered
X location = 0.00000
Y location = 0.00000
Scale = 1.00000
8BIM: [0x040D] Name="" Len=[0x0004] DefinedName="Global Angle"
Global Angle = 30 degrees
8BIM: [0x0419] Name="" Len=[0x0004] DefinedName="Global Altitude"
Global Altitude = 30
8BIM: [0x03F3] Name="" Len=[0x0009] DefinedName="Print flags"
Labels = false
Crop marks = false
Color bars = false
Registration marks = false
Negative = false
Flip = false
Interpolate = false
Caption = false
Print flags = true
8BIM: [0x2710] Name="" Len=[0x000A] DefinedName="Print flags information"
Version = 1
Center crop marks = 0
Reserved = 0
Bleed width value = 0
Bleed width scale = 2
8BIM: [0x03F5] Name="" Len=[0x0048] DefinedName="Color halftoning information"
Color halftoning information =
| 0x00 2F 66 66 00 01 00 6C 66 66 00 06 00 00 00 00 | ./ff...lff......
| 0x00 01 00 2F 66 66 00 01 00 A1 99 9A 00 06 00 00 | .../ff..........
| 0x00 00 00 01 00 32 00 00 00 01 00 5A 00 00 00 06 | .....2.....Z....
| 0x00 00 00 00 00 01 00 35 00 00 00 01 00 2D 00 00 | .......5.....-..
| 0x00 06 00 00 00 00 00 01 | ........
8BIM: [0x03F8] Name="" Len=[0x0070] DefinedName="Color transfer functions"
Color transfer functions =
| 0x00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF 03 E8 00 00 00 00 FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF 03 E8 00 00 00 00 FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | ................
| 0x03 E8 00 00 00 00 FF FF FF FF FF FF FF FF FF FF | ................
| 0xFF FF FF FF FF FF FF FF FF FF FF FF 03 E8 00 00 | ................
8BIM: [0x0408] Name="" Len=[0x0010] DefinedName="Grid and guides information"
Version = 1
Grid Horizontal = 576
Grid Vertical = 576
Number of Guide Resources = 0
8BIM: [0x041E] Name="" Len=[0x0004] DefinedName="URL List"
URL List = | 0x00 00 00 00 | ....
8BIM: [0x041A] Name="" Len=[0x0341] DefinedName="Slices"
Slice Header:
Version = 6
Bound Rect (top) = 0
Bound Rect (left) = 0
Bound Rect (bottom) = 700
Bound Rect (right) = 467
Name of group of slices = "513566"
Number of slices = 1
-----
Slice #0:
Slice Resource:
ID = 0
Group ID = 0
Origin = 0
Name = ""
Type = 1
Position (top) = 0
Position (left) = 0
Position (bottom) = 467
Position (right) = 700
URL = ""
Target = ""
Message = ""
Alt Tag = ""
Cell text is HTML = true
Cell text = ""
Horizontal alignment = 0
Vertical alignment = 0
Alpha color = 0
Red = 0
Green = 0
Blue = 0
Descriptor version = 16
Descriptor:
Name from classID = ""
classID = "null"
Num items in descriptor = 2
-----
Descriptor item #0:
Key = "bounds"
OSType key = "Objc"
Descriptor:
Name from classID = ""
classID = "Rct1"
Num items in descriptor = 4
-----
Descriptor item #0:
Key = "Top "
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "Left"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "Btom"
OSType key = "long"
Value = 700
Descriptor item #3:
Key = "Rght"
OSType key = "long"
Value = 467
-----
Descriptor item #1:
Key = "slices"
OSType key = "VlLs"
Num items in list = 1
-----
Item #0:
OSType key = ""
Descriptor:
Name from classID = ""
classID = "slice"
Num items in descriptor = 18
-----
Descriptor item #0:
Key = "sliceID"
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "groupID"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "origin"
OSType key = "enum"
Type = "ESliceOrigin"
Enum = "autoGenerated"
Descriptor item #3:
Key = "Type"
OSType key = "enum"
Type = "ESliceType"
Enum = "Img "
Descriptor item #4:
Key = "bounds"
OSType key = "Objc"
Descriptor:
Name from classID = ""
classID = "Rct1"
Num items in descriptor = 4
-----
Descriptor item #0:
Key = "Top "
OSType key = "long"
Value = 0
Descriptor item #1:
Key = "Left"
OSType key = "long"
Value = 0
Descriptor item #2:
Key = "Btom"
OSType key = "long"
Value = 700
Descriptor item #3:
Key = "Rght"
OSType key = "long"
Value = 467
-----
Descriptor item #5:
Key = "url"
OSType key = "TEXT"
String = ""
Descriptor item #6:
Key = "null"
OSType key = "TEXT"
String = ""
Descriptor item #7:
Key = "Msge"
OSType key = "TEXT"
String = ""
Descriptor item #8:
Key = "altTag"
OSType key = "TEXT"
String = ""
Descriptor item #9:
Key = "cellTextIsHTML"
OSType key = "bool"
Value = true
Descriptor item #10:
Key = "cellText"
OSType key = "TEXT"
String = ""
Descriptor item #11:
Key = "horzAlign"
OSType key = "enum"
Type = "ESliceHorzAlign"
Enum = "default"
Descriptor item #12:
Key = "vertAlign"
OSType key = "enum"
Type = "ESliceVertAlign"
Enum = "default"
Descriptor item #13:
Key = "bgColorType"
OSType key = "enum"
Type = "ESliceBGColorType"
Enum = "None"
Descriptor item #14:
Key = "topOutset"
OSType key = "long"
Value = 0
Descriptor item #15:
Key = "leftOutset"
OSType key = "long"
Value = 0
Descriptor item #16:
Key = "bottomOutset"
OSType key = "long"
Value = 0
Descriptor item #17:
Key = "rightOutset"
OSType key = "long"
Value = 0
-----
-----
-----
-----
8BIM: [0x0428] Name="" Len=[0x000C] DefinedName="Pixel Aspect Ratio"
Version = 2
X/Y Ratio = 1.00000
8BIM: [0x0414] Name="" Len=[0x0004] DefinedName="Document-specific IDs seed number"
Base value = 1
8BIM: [0x040C] Name="" Len=[0x0922] DefinedName="Thumbnail resources"
Format = 1
Width of thumbnail = 107 pixels
Height of thumbnail = 160 pixels
Widthbytes = 324 bytes
Total size = 51840 bytes
Size after compression = 2310 bytes
Bits per pixel = 24 bits
Number of planes = 1
JFIF data @ 0x000016FA
8BIM: [0x0421] Name="" Len=[0x0055] DefinedName="Version Info"
Version = 1
hasRealMergedData = 1
Writer name = "Adobe Photoshop"
Reader name = "Adobe Photoshop CS6"
File version = 1
8BIM: [0x0406] Name="" Len=[0x0007] DefinedName="JPEG quality"
Photoshop Save As Quality = 7
Photoshop Save Format = "Standard"
Photoshop Save Progressive Scans = "3 Scans"
??? = 1
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00002076
Length = 3752
Identifier = [http://ns.adobe.com/xap/1.0/]
XMP =
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00002F20
Length = 3160
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 3144 bytes
Preferred CMM Type : 'Lino' (0x4C696E6F)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 1998-02-09 06:49:00
Profile file signature : 'acsp' (0x61637370)
Primary platform : Microsoft Corporation ('MSFT' (0x4D534654))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : 'IEC ' (0x49454320)
Device Model : 'sRGB' (0x73524742)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'HP ' (0x48502020)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: APP14 (xFFEE) ***
OFFSET: 0x00003B7A
Length = 14
DCTEncodeVersion = 100
APP14Flags0 = 0
APP14Flags1 = 0
ColorTransform = 1 [YCbCr]
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00003B8A
Table length = 132
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 10 7 7 10 15 18 20 17
DQT, Row #1: 7 8 8 10 13 16 12 12
DQT, Row #2: 7 8 8 10 16 12 12 12
DQT, Row #3: 10 10 10 18 12 12 12 12
DQT, Row #4: 15 13 16 12 12 12 12 12
DQT, Row #5: 18 16 12 12 12 12 12 12
DQT, Row #6: 20 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 83.48 (scaling=33.04 variance=462.13)
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 11 12 21 34 20 20 17 17
DQT, Row #1: 12 19 24 14 14 12 12 12
DQT, Row #2: 21 24 14 14 12 12 12 12
DQT, Row #3: 34 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
Approx quality factor = 87.98 (scaling=24.05 variance=592.80)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x00003C10
Frame header length = 17
Precision = 8
Number of Lines = 700
Samples per Line = 467
Image Size = 467 x 700
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 1 x 1), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DRI (Restart Interval) (xFFDD) ***
OFFSET: 0x00003C23
Length = 4
interval = 59
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003C29
Huffman table length = 418
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (007 total): 04 05 03 02 06 01 00
Codes of length 04 bits (001 total): 07
Codes of length 05 bits (001 total): 08
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (001 total): 0A
Codes of length 08 bits (001 total): 0B
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 00
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (003 total): 04 05 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 11 04 00
Codes of length 05 bits (003 total): 05 21 12
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 51 06 13 61
Codes of length 08 bits (002 total): 22 71
Codes of length 09 bits (006 total): 81 14 32 91 A1 07
Codes of length 10 bits (007 total): 15 B1 42 23 C1 52 D1
Codes of length 11 bits (003 total): E1 33 16
Codes of length 12 bits (004 total): 62 F0 24 72
Codes of length 13 bits (002 total): 82 F1
Codes of length 14 bits (006 total): 25 43 34 53 92 A2
Codes of length 15 bits (002 total): B2 63
Codes of length 16 bits (115 total): 73 C2 35 44 27 93 A3 B3 36 17 54 64 74 C3 D2 E2
08 26 83 09 0A 18 19 84 94 45 46 A4 B4 56 D3 55
28 1A F2 E3 F3 C4 D4 E4 F4 65 75 85 95 A5 B5 C5
D5 E5 F5 66 76 86 96 A6 B6 C6 D6 E6 F6 37 47 57
67 77 87 97 A7 B7 C7 D7 E7 F7 38 48 58 68 78 88
98 A8 B8 C8 D8 E8 F8 29 39 49 59 69 79 89 99 A9
B9 C9 D9 E9 F9 2A 3A 4A 5A 6A 7A 8A 9A AA BA CA
DA EA FA
Total number of codes: 162
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 00
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (002 total): 04 21
Codes of length 06 bits (003 total): 12 31 41
Codes of length 07 bits (005 total): 05 51 13 61 22
Codes of length 08 bits (005 total): 06 71 81 91 32
Codes of length 09 bits (004 total): A1 B1 F0 14
Codes of length 10 bits (005 total): C1 D1 E1 23 42
Codes of length 11 bits (006 total): 15 52 62 72 F1 33
Codes of length 12 bits (004 total): 24 34 43 82
Codes of length 13 bits (008 total): 16 92 53 25 A2 63 B2 C2
Codes of length 14 bits (003 total): 07 73 D2
Codes of length 15 bits (003 total): 35 E2 44
Codes of length 16 bits (109 total): 83 17 54 93 08 09 0A 18 19 26 36 45 1A 27 64 74
55 37 F2 A3 B3 C3 28 29 D3 E3 F3 84 94 A4 B4 C4
D4 E4 F4 65 75 85 95 A5 B5 C5 D5 E5 F5 46 56 66
76 86 96 A6 B6 C6 D6 E6 F6 47 57 67 77 87 97 A7
B7 C7 D7 E7 F7 38 48 58 68 78 88 98 A8 B8 C8 D8
E8 F8 39 49 59 69 79 89 99 A9 B9 C9 D9 E9 F9 2A
3A 4A 5A 6A 7A 8A 9A AA BA CA DA EA FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003DCD
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x00003DDB
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x00009013.0
Compression stats:
Compression Ratio: 46.60:1
Bits per pixel: 0.52:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 0 ( 0%)
# codes of length 03 bits: 4910 ( 95%)
# codes of length 04 bits: 280 ( 5%)
# codes of length 05 bits: 2 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 9997 ( 96%)
# codes of length 03 bits: 335 ( 3%)
# codes of length 04 bits: 52 ( 1%)
# codes of length 05 bits: 0 ( 0%)
# codes of length 06 bits: 0 ( 0%)
# codes of length 07 bits: 0 ( 0%)
# codes of length 08 bits: 0 ( 0%)
# codes of length 09 bits: 0 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 5649 ( 33%)
# codes of length 03 bits: 1560 ( 9%)
# codes of length 04 bits: 6758 ( 39%)
# codes of length 05 bits: 1189 ( 7%)
# codes of length 06 bits: 349 ( 2%)
# codes of length 07 bits: 488 ( 3%)
# codes of length 08 bits: 255 ( 1%)
# codes of length 09 bits: 351 ( 2%)
# codes of length 10 bits: 254 ( 1%)
# codes of length 11 bits: 70 ( 0%)
# codes of length 12 bits: 76 ( 0%)
# codes of length 13 bits: 14 ( 0%)
# codes of length 14 bits: 115 ( 1%)
# codes of length 15 bits: 41 ( 0%)
# codes of length 16 bits: 88 ( 1%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 10917 ( 93%)
# codes of length 03 bits: 435 ( 4%)
# codes of length 04 bits: 77 ( 1%)
# codes of length 05 bits: 75 ( 1%)
# codes of length 06 bits: 121 ( 1%)
# codes of length 07 bits: 47 ( 0%)
# codes of length 08 bits: 36 ( 0%)
# codes of length 09 bits: 5 ( 0%)
# codes of length 10 bits: 15 ( 0%)
# codes of length 11 bits: 39 ( 0%)
# codes of length 12 bits: 11 ( 0%)
# codes of length 13 bits: 3 ( 0%)
# codes of length 14 bits: 2 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 1 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[222] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1020, 0, 0] RGB=[255,255,255] @ MCU[ 0, 0]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 87
Next position in scan buffer: Offset 0x00009012.5
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00009013
*** Embedded JPEG Thumbnail ***
Offset: 0x00000546
Length: 0x00000906 (2310)
* Embedded Thumb Marker: SOI
* Embedded Thumb Marker: APP13
Length = 12
* Embedded Thumb Marker: APP14
Length = 14
* Embedded Thumb Marker: DQT
Length = 132
----
Precision=8 bits
Destination ID=0 (Luminance, typically)
DQT, Row #0: 12 8 8 12 17 21 24 17
DQT, Row #1: 8 9 9 11 15 19 12 12
DQT, Row #2: 8 9 10 12 19 12 12 12
DQT, Row #3: 12 11 12 21 12 12 12 12
DQT, Row #4: 17 15 19 12 12 12 12 12
DQT, Row #5: 21 19 12 12 12 12 12 12
DQT, Row #6: 24 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
----
Precision=8 bits
Destination ID=1 (Chrominance, typically)
DQT, Row #0: 13 11 13 16 20 20 17 17
DQT, Row #1: 11 14 14 14 14 12 12 12
DQT, Row #2: 13 14 14 14 12 12 12 12
DQT, Row #3: 16 14 14 12 12 12 12 12
DQT, Row #4: 20 14 12 12 12 12 12 12
DQT, Row #5: 20 12 12 12 12 12 12 12
DQT, Row #6: 17 12 12 12 12 12 12 12
DQT, Row #7: 17 12 12 12 12 12 12 12
* Embedded Thumb Marker: SOF
Frame header length = 17
Precision = 8
Number of Lines = 160
Samples per Line = 107
Image Size = 107 x 160
* Embedded Thumb Marker: DRI
Length = 4
* Embedded Thumb Marker: DHT
Length = 319
* Embedded Thumb Marker: SOS
Skipping scan data
Skipped 1785 bytes
* Embedded Thumb Marker: EOI
* Embedded Thumb Signature: 01C2DDA29A1B5DCCD5E217CF9C558A62
*** Searching Compression Signatures ***
Signature: 0165B3F1B409A4D8D5F2ADFFA970D3A5
Signature (Rotated): 0165B3F1B409A4D8D5F2ADFFA970D3A5
File Offset: 0 bytes
Chroma subsampling: 1x1
EXIF Make/Model: OK [Canon] [Canon EOS 70D]
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop CS6 (Windows)]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E885 ] [FINE ] Yes
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C700UZ ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
NOTE: Photoshop IRB detected
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited

435
tests/Images/Input/Jpg/issues/JpegSnoopReports/issue750-exif-tranform.jpg.txt

@ -0,0 +1,435 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\issue750-exif-tranform.jpg]
Filesize: [5587341] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 300 x 300 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 8272
Identifier = [Exif]
Identifier TIFF = 0x[4D4D002A 00000008]
Endian = Motorola (big)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x00000026
Dir Length = 0x000A
[Make ] = "Canon"
[Model ] = "Canon EOS 500D"
[Orientation ] = 1 = Row 0: top, Col 0: left
[DateTime ] = "2017:12:06 15:48:51"
[Artist ] = ""
[YCbCrPositioning ] = Co-sited
[Copyright ] = ""
[ExifOffset ] = @ 0x00B0
[GPSOffset ] = @ 0x2034
[XPAuthor ] = "??"
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x000000CE
Dir Length = 0x0020
[ExposureTime ] = 1/160 s
[FNumber ] = F9.0
[ExposureProgram ] = Normal program
[ISOSpeedRatings ] = 3200
[ExifVersion ] = 02.21
[DateTimeOriginal ] = "2017:12:06 15:48:51"
[DateTimeDigitized ] = "2017:12:06 15:48:51"
[ComponentsConfiguration ] = [Y Cb Cr .]
[ShutterSpeedValue ] = 483328/65536
[ApertureValue ] = 417792/65536
[ExposureBiasValue ] = 1.00 eV
[MeteringMode ] = Pattern
[Flash ] = Flash did not fire
[FocalLength ] = 24 mm
[MakerNote ] = @ 0x028E
[UserComment ] = ""
[SubSecTime ] = "80"
[SubSecTimeOriginal ] = "80"
[SubSecTimeDigitized ] = "80"
[FlashPixVersion ] = 01.00
[ColorSpace ] = sRGB
[ExifImageWidth ] = 4752
[ExifImageHeight ] = 3168
[ExifInteroperabilityOffset ] = @ 0x2010
[FocalPlaneXResolution ] = 4752000/894
[FocalPlaneYResolution ] = 3168000/593
[FocalPlaneResolutionUnit ] = Inch
[CustomRendered ] = Normal process
[ExposureMode ] = Auto exposure
[WhiteBalance ] = Auto white balance
[SceneCaptureType ] = Standard
EXIF MakerIFD @ Absolute 0x000002AC
Makernote decode option not enabled.
EXIF GPSIFD @ Absolute 0x00002052
Dir Length = 0x0001
[GPSVersionID ] = 2.2.0.0
EXIF InteropIFD @ Absolute 0x0000202E
Dir Length = 0x0001
[InteroperabilityVersion ] = 01.00
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00002066
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 1 1 1 1 1 2 3 4
DQT, Row #1: 1 1 1 1 2 3 4 3
DQT, Row #2: 1 1 1 1 2 3 4 3
DQT, Row #3: 1 1 1 2 3 5 5 4
DQT, Row #4: 1 1 2 3 4 7 6 5
DQT, Row #5: 1 2 3 4 5 6 7 6
DQT, Row #6: 3 4 5 5 6 7 7 6
DQT, Row #7: 4 6 6 6 7 6 6 6
Approx quality factor = 96.95 (scaling=6.11 variance=1.09)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000020AB
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 1 1 1 3 6 6 6 6
DQT, Row #1: 1 1 2 4 6 6 6 6
DQT, Row #2: 1 2 3 6 6 6 6 6
DQT, Row #3: 3 4 6 6 6 6 6 6
DQT, Row #4: 6 6 6 6 6 6 6 6
DQT, Row #5: 6 6 6 6 6 6 6 6
DQT, Row #6: 6 6 6 6 6 6 6 6
DQT, Row #7: 6 6 6 6 6 6 6 6
Approx quality factor = 96.99 (scaling=6.01 variance=0.24)
*** Marker: SOF0 (Baseline DCT) (xFFC0) ***
OFFSET: 0x000020F0
Frame header length = 17
Precision = 8
Number of Lines = 3168
Samples per Line = 4752
Image Size = 4752 x 3168
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002103
Huffman table length = 31
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (005 total): 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 09
Codes of length 08 bits (001 total): 0A
Codes of length 09 bits (001 total): 0B
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002124
Huffman table length = 181
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (003 total): 00 04 11
Codes of length 05 bits (003 total): 05 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 06 13 51 61
Codes of length 08 bits (003 total): 07 22 71
Codes of length 09 bits (005 total): 14 32 81 91 A1
Codes of length 10 bits (005 total): 08 23 42 B1 C1
Codes of length 11 bits (004 total): 15 52 D1 F0
Codes of length 12 bits (004 total): 24 33 62 72
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (001 total): 82
Codes of length 16 bits (125 total): 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36
37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56
57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76
77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95
96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3
B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA
D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7
E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000021DB
Huffman table length = 31
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 02
Codes of length 03 bits (001 total): 03
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (001 total): 05
Codes of length 06 bits (001 total): 06
Codes of length 07 bits (001 total): 07
Codes of length 08 bits (001 total): 08
Codes of length 09 bits (001 total): 09
Codes of length 10 bits (001 total): 0A
Codes of length 11 bits (001 total): 0B
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 012
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000021FC
Huffman table length = 181
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (002 total): 03 11
Codes of length 05 bits (004 total): 04 05 21 31
Codes of length 06 bits (004 total): 06 12 41 51
Codes of length 07 bits (003 total): 07 61 71
Codes of length 08 bits (004 total): 13 22 32 81
Codes of length 09 bits (007 total): 08 14 42 91 A1 B1 C1
Codes of length 10 bits (005 total): 09 23 33 52 F0
Codes of length 11 bits (004 total): 15 62 72 D1
Codes of length 12 bits (004 total): 0A 16 24 34
Codes of length 13 bits (000 total):
Codes of length 14 bits (001 total): E1
Codes of length 15 bits (002 total): 25 F1
Codes of length 16 bits (119 total): 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43
44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63
64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82
83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99
9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7
B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5
D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3
F4 F5 F6 F7 F8 F9 FA
Total number of codes: 162
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000022B3
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),1(AC)
Component[3]: selector=0x03, table=1(DC),1(AC)
Spectral selection = 0 .. 63
Successive approximation = 0x00
*** Decoding SCAN Data ***
OFFSET: 0x000022C1
Scan Decode Mode: No IDCT (DC only)
NOTE: Low-resolution DC component shown. Can decode full-res with [Options->Scan Segment->Full IDCT]
Scan Data encountered marker 0xFFD9 @ 0x0055418B.0
Compression stats:
Compression Ratio: 8.10:1
Bits per pixel: 2.96:1
Huffman code histogram stats:
Huffman Table: (Dest ID: 0, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 7852 ( 3%)
# codes of length 03 bits: 194801 ( 83%)
# codes of length 04 bits: 18114 ( 8%)
# codes of length 05 bits: 9703 ( 4%)
# codes of length 06 bits: 3623 ( 2%)
# codes of length 07 bits: 941 ( 0%)
# codes of length 08 bits: 188 ( 0%)
# codes of length 09 bits: 2 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 1, Class: DC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 53609 ( 46%)
# codes of length 03 bits: 36337 ( 31%)
# codes of length 04 bits: 20089 ( 17%)
# codes of length 05 bits: 4404 ( 4%)
# codes of length 06 bits: 2062 ( 2%)
# codes of length 07 bits: 903 ( 1%)
# codes of length 08 bits: 206 ( 0%)
# codes of length 09 bits: 2 ( 0%)
# codes of length 10 bits: 0 ( 0%)
# codes of length 11 bits: 0 ( 0%)
# codes of length 12 bits: 0 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 0 ( 0%)
# codes of length 16 bits: 0 ( 0%)
Huffman Table: (Dest ID: 0, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 3801677 ( 49%)
# codes of length 03 bits: 1263986 ( 16%)
# codes of length 04 bits: 1288745 ( 17%)
# codes of length 05 bits: 606891 ( 8%)
# codes of length 06 bits: 282047 ( 4%)
# codes of length 07 bits: 273734 ( 4%)
# codes of length 08 bits: 85749 ( 1%)
# codes of length 09 bits: 90483 ( 1%)
# codes of length 10 bits: 39213 ( 1%)
# codes of length 11 bits: 19089 ( 0%)
# codes of length 12 bits: 6439 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 0 ( 0%)
# codes of length 15 bits: 136 ( 0%)
# codes of length 16 bits: 7545 ( 0%)
Huffman Table: (Dest ID: 1, Class: AC)
# codes of length 01 bits: 0 ( 0%)
# codes of length 02 bits: 309037 ( 51%)
# codes of length 03 bits: 124353 ( 21%)
# codes of length 04 bits: 87742 ( 14%)
# codes of length 05 bits: 43060 ( 7%)
# codes of length 06 bits: 28928 ( 5%)
# codes of length 07 bits: 2442 ( 0%)
# codes of length 08 bits: 8544 ( 1%)
# codes of length 09 bits: 1150 ( 0%)
# codes of length 10 bits: 376 ( 0%)
# codes of length 11 bits: 126 ( 0%)
# codes of length 12 bits: 30 ( 0%)
# codes of length 13 bits: 0 ( 0%)
# codes of length 14 bits: 50 ( 0%)
# codes of length 15 bits: 24 ( 0%)
# codes of length 16 bits: 4 ( 0%)
YCC clipping in DC:
Y component: [<0= 0] [>255= 0]
Cb component: [<0= 0] [>255= 0]
Cr component: [<0= 0] [>255= 0]
RGB clipping in DC:
R component: [<0= 0] [>255= 0]
G component: [<0= 0] [>255= 0]
B component: [<0= 0] [>255= 0]
Average Pixel Luminance (Y):
Y=[215] (range: 0..255)
Brightest Pixel Search:
YCC=[ 1016, -3, 3] RGB=[255,255,253] @ MCU[ 92, 26]
Finished Decoding SCAN Data
Number of RESTART markers decoded: 0
Next position in scan buffer: Offset 0x0055418A.7
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0055418B
*** Searching Compression Signatures ***
Signature: 010564D93F295ADB889B91604DC82EE1
Signature (Rotated): 014302FE54745F4DBB58A0D51CDC66BD
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: OK [Canon] [Canon EOS 500D]
EXIF Makernotes: OK
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[Leica Camera AG ] [M8 Digital Camera ] [ ] No
CAM:[Leica Camera AG ] [M8 Digital Camera ] [ ] No
CAM:[Leica Camera AG ] [M8 Digital Camera ] [ ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5400 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[OLYMPUS CORPORATION ] [C8080WZ ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C40Z,D40Z ] [ ] No
CAM:[Samsung Techwin ] [Digimax V50/a5 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [Pro 815 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV 7, NV 7 ] [ ] No
CAM:[SAMSUNG TECHWIN ] [VLUU NV10, NV10 ] [ ] No
CAM:[SONY ] [CYBERSHOT ] [ ] No
CAM:[SONY ] [DSC-H1 ] [ ] No
CAM:[SONY ] [DSC-H2 ] [ ] No
CAM:[SONY ] [DSC-H5 ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-L1 ] [ ] No
CAM:[SONY ] [DSC-N2 ] [ ] No
CAM:[SONY ] [DSC-P150 ] [ ] No
CAM:[SONY ] [DSC-P200 ] [ ] No
CAM:[SONY ] [DSC-R1 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-V1 ] [ ] No
CAM:[SONY ] [DSC-V3 ] [ ] No
CAM:[SONY ] [DSC-W35 ] [ ] No
CAM:[SONY ] [DSC-W7 ] [ ] No
CAM:[SONY ] [SONY ] [ ] No
SW :[IJG Library ] [097 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [097 ]
SW :[IrfanView ] [097 ]
SW :[idImager ] [097 ]
SW :[FastStone Image Viewer ] [097 ]
SW :[NeatImage ] [097 ]
SW :[Paint.NET ] [097 ]
SW :[Photomatix ] [097 ]
SW :[XnView ] [097 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 4 - Uncertain if processed or original
While the EXIF fields indicate original, no compression signatures
in the current database were found matching this make/model
Appears to be new signature for known camera.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

452
tests/Images/Input/Jpg/progressive/JpegSnoopReports/BadEofProgressive.jpg.txt

@ -0,0 +1,452 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\BadEofProgressive.jpg]
Filesize: [67503] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.2]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: APP13 (xFFED) ***
OFFSET: 0x00000014
Length = 124
Identifier = [Photoshop 3.0]
8BIM: [0x0404] Name="" Len=[0x005F] DefinedName="IPTC-NAA record"
IPTC [002:040] Special Instructions = "FBMD2300098903000068210000c735000008450000e88e0000fab00000c6cd000002f80000191a0100653f0100"
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x00000092
Length = 540
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 524 bytes
Preferred CMM Type : 'lcms' (0x6C636D73)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 2012-01-25 03:41:57
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : '....' (0x00000000)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'lcms' (0x6C636D73)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000002B0
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 6 4 4 6 10 16 20 24
DQT, Row #1: 5 5 6 8 10 23 24 22
DQT, Row #2: 6 5 6 10 16 23 28 22
DQT, Row #3: 6 7 9 12 20 35 32 25
DQT, Row #4: 7 9 15 22 27 44 41 31
DQT, Row #5: 10 14 22 26 32 42 45 37
DQT, Row #6: 20 26 31 35 41 48 48 40
DQT, Row #7: 29 37 38 39 45 40 41 40
Approx quality factor = 79.94 (scaling=40.12 variance=1.43)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x000002F5
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 7 7 10 19 40 40 40 40
DQT, Row #1: 7 8 10 26 40 40 40 40
DQT, Row #2: 10 10 22 40 40 40 40 40
DQT, Row #3: 19 26 40 40 40 40 40 40
DQT, Row #4: 40 40 40 40 40 40 40 40
DQT, Row #5: 40 40 40 40 40 40 40 40
DQT, Row #6: 40 40 40 40 40 40 40 40
DQT, Row #7: 40 40 40 40 40 40 40 40
Approx quality factor = 79.87 (scaling=40.26 variance=0.36)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000033A
Frame header length = 17
Precision = 8
Number of Lines = 640
Samples per Line = 640
Image Size = 640 x 640
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000034D
Huffman table length = 29
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (007 total): 01 02 03 04 05 06 07
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (001 total): 08
Codes of length 06 bits (001 total): 09
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000036C
Huffman table length = 27
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (003 total): 00 03 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 07
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000389
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),0(AC)
Component[3]: selector=0x02, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002127
Huffman table length = 63
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (004 total): 00 02 03 11
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (002 total): 05 41
Codes of length 07 bits (003 total): 13 22 51
Codes of length 08 bits (004 total): 10 32 61 A1
Codes of length 09 bits (007 total): 14 20 71 81 91 B1 F0
Codes of length 10 bits (007 total): 06 23 42 52 C1 D1 E1
Codes of length 11 bits (002 total): 15 30
Codes of length 12 bits (005 total): 16 24 33 34 62
Codes of length 13 bits (005 total): 25 40 50 72 F1
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 044
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002168
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003588
Huffman table length = 61
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (003 total): 04 12 21
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (004 total): 05 10 13 51
Codes of length 08 bits (003 total): 14 20 22
Codes of length 09 bits (005 total): 32 42 61 71 91
Codes of length 10 bits (007 total): 15 23 33 81 A1 B1 C1
Codes of length 11 bits (003 total): 06 30 D1
Codes of length 12 bits (002 total): E1 F0
Codes of length 13 bits (007 total): 16 24 34 40 43 50 52
Codes of length 14 bits (001 total): 62
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 042
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000035C7
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x00
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000044BF
Huffman table length = 71
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (003 total): 12 21 31
Codes of length 06 bits (004 total): 13 22 41 51
Codes of length 07 bits (007 total): 05 10 20 32 61 71 81
Codes of length 08 bits (005 total): 14 23 42 52 91
Codes of length 09 bits (005 total): 30 33 62 72 A1
Codes of length 10 bits (007 total): 15 34 43 53 82 92 B1
Codes of length 11 bits (003 total): 06 24 40
Codes of length 12 bits (004 total): 44 A2 C1 D1
Codes of length 13 bits (001 total): E1
Codes of length 14 bits (004 total): 25 35 50 F0
Codes of length 15 bits (003 total): 54 63 73
Codes of length 16 bits (000 total):
Total number of codes: 052
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00004508
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00008EC5
Huffman table length = 33
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 10 21 31
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (001 total): 51
Codes of length 08 bits (001 total): 20
Codes of length 09 bits (001 total): 61
Codes of length 10 bits (001 total): 71
Codes of length 11 bits (001 total): 30
Codes of length 12 bits (001 total): 81
Codes of length 13 bits (001 total): 40
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 014
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00008EE8
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 10
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000B0CE
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (006 total): 10 41 51 61 71 91
Codes of length 06 bits (002 total): 20 81
Codes of length 07 bits (001 total): 30
Codes of length 08 bits (005 total): 40 A1 B1 C1 F0
Codes of length 09 bits (001 total): D1
Codes of length 10 bits (001 total): F1
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (001 total): 50
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000B0FA
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 11 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000CDA4
Huffman table length = 32
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (001 total): 10
Codes of length 07 bits (001 total): 41
Codes of length 08 bits (001 total): 51
Codes of length 09 bits (001 total): 20
Codes of length 10 bits (001 total): 61
Codes of length 11 bits (001 total): 71
Codes of length 12 bits (001 total): 81
Codes of length 13 bits (001 total): 91
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 013
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000CDC6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 10
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000F7DF
Huffman table length = 33
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 10 41
Codes of length 06 bits (003 total): 51 61 71
Codes of length 07 bits (001 total): 20
Codes of length 08 bits (001 total): 81
Codes of length 09 bits (001 total): 30
Codes of length 10 bits (001 total): 40
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 014
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000F802
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 11 .. 19
Successive approximation = 0x10
ERROR: Ran out of buffer before EOI during phase 1 of Scan decode @ 0x000107B0
NOTE: Scan parsing doesn't support this SOF mode.
ERROR: Early EOF - file may be missing EOI
*** Searching Compression Signatures ***
Signature: 01DC499064BA9264D591FDE9071DFD89
Signature (Rotated): 0175BAF3251040E0EFB2930B73328E7F
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C40Z,D40Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C700UZ ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
SW :[Apple ImageIO.framework ] [050 (Normal) ]
SW :[IJG Library ] [080 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [080 ]
SW :[IrfanView ] [080 ]
SW :[idImager ] [080 ]
SW :[FastStone Image Viewer ] [080 ]
SW :[NeatImage ] [080 ]
SW :[Paint.NET ] [080 ]
SW :[Photomatix ] [080 ]
SW :[XnView ] [080 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

535
tests/Images/Input/Jpg/progressive/JpegSnoopReports/ExifUndefType.jpg.txt

@ -0,0 +1,535 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\ExifUndefType.jpg]
Filesize: [6582] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 72 x 72 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: APP1 (xFFE1) ***
OFFSET: 0x00000014
Length = 804
Identifier = [Exif]
Identifier TIFF = 0x[49492A00 86020000]
Endian = Intel (little)
TAG Mark x002A = 0x002A
EXIF IFD0 @ Absolute 0x000002A4
Dir Length = 0x000C
[Orientation ] = 1 = Row 0: top, Col 0: left
[XResolution ] = 72/1
[YResolution ] = 72/1
[ResolutionUnit ] = Inch
[Software ] = "Adobe Photoshop CS4 Windows"
[DateTime ] = "2014:03:28 16:44:10"
[WhitePoint ] = 0/1000000, 0/1000000
[PrimChromaticities ] = 0/1000000, 0/1000000, 0/1000000, 0/1000000, 0/1000000, 0/1000000
[YCbCrCoefficients ] = 0/1000000, 0/1000000, 0/1000000
[YCbCrPositioning ] = 0
[ReferenceBlackWhite ] = 0/1000000, 0/1000000, 0/1000000, 0/1000000, 0/1000000, 0/1000000
[ExifOffset ] = @ 0x0138
Offset to Next IFD = 0x00000000
EXIF SubIFD @ Absolute 0x00000156
Dir Length = 0x001B
[ExposureTime ] = 0/1000000 s
[FNumber ] = F0.0
[ExposureProgram ] = Not defined
[ISOSpeedRatings ] = 0, 0
[ExifVersion ] = 12.20
[CompressedBitsPerPixel ] = 0/1000000
[ShutterSpeedValue ] = 0/1000000
[ApertureValue ] = 0/1000000
[BrightnessValue ] = 0/1000000
[ExposureBiasValue ] = 0.00 eV
[MaxApertureValue ] = 0/1000000
[SubjectDistance ] = 0/1000000
[MeteringMode ] = Unknown
[LightSource ] = unknown
[Flash ] = Flash did not fire
[FocalLength ] = 0 mm
[FlashPixVersion ] =
[ColorSpace ] = sRGB
[ExifImageWidth ] = 850
[ExifImageHeight ] = 638
[FocalPlaneXResolution ] = 0/1000000
[FocalPlaneYResolution ] = 0/1000000
[FocalPlaneResolutionUnit ] = 0
[ExposureIndex ] = 0/1000000
[SensingMethod ] = 0
[FileSource ] = 0
[SceneType ] = 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000033A
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 3 2 2 3 5 8 10 12
DQT, Row #1: 2 2 3 4 5 12 12 11
DQT, Row #2: 3 3 3 5 8 11 14 11
DQT, Row #3: 3 3 4 6 10 17 16 12
DQT, Row #4: 4 4 7 11 14 22 21 15
DQT, Row #5: 5 7 11 13 16 21 23 18
DQT, Row #6: 10 13 16 17 21 24 24 20
DQT, Row #7: 14 18 19 20 22 20 21 20
Approx quality factor = 90.06 (scaling=19.88 variance=1.14)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000037F
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 3 4 5 9 20 20 20 20
DQT, Row #1: 4 4 5 13 20 20 20 20
DQT, Row #2: 5 5 11 20 20 20 20 20
DQT, Row #3: 9 13 20 20 20 20 20 20
DQT, Row #4: 20 20 20 20 20 20 20 20
DQT, Row #5: 20 20 20 20 20 20 20 20
DQT, Row #6: 20 20 20 20 20 20 20 20
DQT, Row #7: 20 20 20 20 20 20 20 20
Approx quality factor = 89.93 (scaling=20.14 variance=0.34)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x000003C4
Frame header length = 17
Precision = 8
Number of Lines = 165
Samples per Line = 220
Image Size = 220 x 165
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000003D7
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 03 07
Codes of length 04 bits (003 total): 02 04 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (001 total): 01
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000003F5
Huffman table length = 22
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (000 total):
Codes of length 05 bits (000 total):
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 003
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000040D
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000581
Huffman table length = 41
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (006 total): 00 01 02 03 04 05
Codes of length 04 bits (001 total): 06
Codes of length 05 bits (003 total): 11 15 16
Codes of length 06 bits (004 total): 12 13 14 21
Codes of length 07 bits (002 total): 07 10
Codes of length 08 bits (002 total): 22 40
Codes of length 09 bits (003 total): 17 30 60
Codes of length 10 bits (001 total): 24
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000005AC
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000883
Huffman table length = 27
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 11
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 01 10
Codes of length 05 bits (003 total): 20 30 40
Codes of length 06 bits (001 total): 50
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000008A0
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000008BF
Huffman table length = 28
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (001 total): 01
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 10 21 30
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 20 40 50
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000008DD
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000905
Huffman table length = 65
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (000 total):
Codes of length 03 bits (004 total): 00 01 02 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (004 total): 12 21 31 34
Codes of length 06 bits (008 total): 13 32 33 35 91 92 93 D2
Codes of length 07 bits (009 total): 05 10 14 22 41 51 71 A1 D1
Codes of length 08 bits (010 total): 20 23 40 42 52 61 81 A2 A3 B1
Codes of length 09 bits (007 total): 15 24 60 62 72 E1 E2
Codes of length 10 bits (001 total): 30
Codes of length 11 bits (001 total): B2
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 046
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000948
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000E49
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (004 total): 51 61 71 D1
Codes of length 07 bits (006 total): 81 91 A1 C1 F0 F1
Codes of length 08 bits (002 total): 40 B1
Codes of length 09 bits (003 total): 10 20 60
Codes of length 10 bits (001 total): 30
Codes of length 11 bits (001 total): E1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000E75
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001266
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000012E8
Huffman table length = 28
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (001 total): 10
Codes of length 04 bits (000 total):
Codes of length 05 bits (002 total): 30 51
Codes of length 06 bits (003 total): 21 40 50
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001306
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000133E
Huffman table length = 30
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (003 total): 10 30 51
Codes of length 05 bits (000 total):
Codes of length 06 bits (002 total): 20 61
Codes of length 07 bits (003 total): 21 40 50
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000135E
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000139C
Huffman table length = 42
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (003 total): 41 51 61
Codes of length 07 bits (003 total): 71 81 B1
Codes of length 08 bits (003 total): 91 A1 D1
Codes of length 09 bits (004 total): 10 40 E1 F0
Codes of length 10 bits (003 total): 20 C1 F1
Codes of length 11 bits (001 total): 60
Codes of length 12 bits (001 total): 30
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 023
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000013C8
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x000019B4
*** Searching Compression Signatures ***
Signature: 013BA18D5561625796E986FDBC09F846
Signature (Rotated): 01AC57E12793DFA7C46C704625C5AF0F
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: OK [Adobe Photoshop CS4 Windows]
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[??? ] [Treo 680 ] [ ] Yes
CAM:[Canon ] [Canon PowerShot Pro1 ] [fine ] No
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[NIKON ] [E3100 ] [FINE ] No
CAM:[NIKON ] [E4500 ] [FINE ] No
CAM:[NIKON ] [E5000 ] [FINE ] No
CAM:[NIKON ] [E5700 ] [FINE ] No
CAM:[NIKON ] [E775 ] [FINE ] No
CAM:[NIKON ] [E885 ] [FINE ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 9530 ] [Superfine ] Yes
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
CAM:[SONY ] [DSC-H7 ] [ ] No
CAM:[SONY ] [DSC-H9 ] [ ] No
CAM:[SONY ] [DSC-S90 ] [ ] No
CAM:[SONY ] [DSC-W1 ] [ ] No
CAM:[SONY ] [SONY ] [ ] No
SW :[ACDSee ] [ ]
SW :[FixFoto ] [fine ]
SW :[IJG Library ] [090 ]
SW :[ZoomBrowser EX ] [high ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [090 ]
SW :[IrfanView ] [090 ]
SW :[idImager ] [090 ]
SW :[FastStone Image Viewer ] [090 ]
SW :[NeatImage ] [090 ]
SW :[Paint.NET ] [090 ]
SW :[Photomatix ] [090 ]
SW :[XnView ] [090 ]
NOTE: EXIF Software field recognized as from editor
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
Appears to be new signature for known software.
If the camera/software doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

459
tests/Images/Input/Jpg/progressive/JpegSnoopReports/Festzug.jpg.txt

@ -0,0 +1,459 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\Festzug.jpg]
Filesize: [49977] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 229 x 229 DPI (dots per inch)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 131
----
Precision=16 bits
Destination ID=0 (Luminance)
DQT, Row #0: 53 37 33 53 80 133 170 203
DQT, Row #1: 40 40 47 63 87 193 200 183
DQT, Row #2: 47 43 53 80 133 190 230 186
DQT, Row #3: 47 57 73 97 170 290 266 206
DQT, Row #4: 60 73 123 186 226 363 343 256
DQT, Row #5: 80 117 183 213 270 346 376 306
DQT, Row #6: 163 213 260 290 343 403 400 336
DQT, Row #7: 240 306 316 326 373 333 343 330
Approx quality factor = 15.01 (scaling=333.00 variance=1.25)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000099
Table length = 131
----
Precision=16 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 57 60 80 157 330 330 330 330
DQT, Row #1: 60 70 87 220 330 330 330 330
DQT, Row #2: 80 87 186 330 330 330 330 330
DQT, Row #3: 157 220 330 330 330 330 330 330
DQT, Row #4: 330 330 330 330 330 330 330 330
DQT, Row #5: 330 330 330 330 330 330 330 330
DQT, Row #6: 330 330 330 330 330 330 330 330
DQT, Row #7: 330 330 330 330 330 330 330 330
Approx quality factor = 15.00 (scaling=333.41 variance=0.14)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000011E
Frame header length = 17
Precision = 8
Number of Lines = 1071
Samples per Line = 1443
Image Size = 1443 x 1071
Raw Image Orientation = Landscape
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000131
Huffman table length = 25
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 03
Codes of length 05 bits (001 total): 04
Codes of length 06 bits (001 total): 05
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 006
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000014C
Huffman table length = 22
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (001 total): 00
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (000 total):
Codes of length 05 bits (000 total):
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 003
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000164
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000028E0
Huffman table length = 38
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (004 total): 02 10 20 30
Codes of length 05 bits (003 total): 12 31 40
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 21 41 50
Codes of length 08 bits (001 total): 60
Codes of length 09 bits (001 total): 03
Codes of length 10 bits (000 total):
Codes of length 11 bits (003 total): 22 32 42
Codes of length 12 bits (001 total): 13
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 019
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002908
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003D97
Huffman table length = 29
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (003 total): 00 10 11
Codes of length 04 bits (001 total): 20
Codes of length 05 bits (000 total):
Codes of length 06 bits (002 total): 30 60
Codes of length 07 bits (003 total): 80 90 C0
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 010
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003DB6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003DE1
Huffman table length = 28
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 10 11
Codes of length 04 bits (003 total): 00 20 60
Codes of length 05 bits (000 total):
Codes of length 06 bits (003 total): 80 90 C0
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003DFF
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003E21
Huffman table length = 23
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 21
Codes of length 02 bits (001 total): D0
Codes of length 03 bits (001 total): A0
Codes of length 04 bits (001 total): B0
Codes of length 05 bits (000 total):
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 004
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003E3A
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003E4C
Huffman table length = 36
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 10 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (003 total): 20 30 41
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 40 50 51
Codes of length 08 bits (001 total): 61
Codes of length 09 bits (001 total): 60
Codes of length 10 bits (001 total): 71
Codes of length 11 bits (001 total): 81
Codes of length 12 bits (001 total): B1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 017
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00003E72
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00006325
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007512
Huffman table length = 30
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (003 total): 10 21 60
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 20 41 80
Codes of length 08 bits (001 total): C0
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00007532
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000075CE
Huffman table length = 30
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 11
Codes of length 03 bits (001 total): 10
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 21 31 60
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (000 total):
Codes of length 08 bits (003 total): 20 80 C0
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 011
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000075EE
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00007676
Huffman table length = 43
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (000 total):
Codes of length 05 bits (002 total): 21 31
Codes of length 06 bits (002 total): 10 41
Codes of length 07 bits (002 total): 20 51
Codes of length 08 bits (002 total): 30 61
Codes of length 09 bits (003 total): 40 50 71
Codes of length 10 bits (000 total):
Codes of length 11 bits (003 total): 60 81 91
Codes of length 12 bits (001 total): A1
Codes of length 13 bits (001 total): B1
Codes of length 14 bits (000 total):
Codes of length 15 bits (002 total): C1 D1
Codes of length 16 bits (003 total): E1 F0 F1
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000076A3
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000C337
*** Searching Compression Signatures ***
Signature: 0105A3D95D2D36DE9351313E30D8E945
Signature (Rotated): 013C3A43642D2E8325A76C3818B3C324
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
SW :[IJG Library ] [015 ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [015 ]
SW :[IrfanView ] [015 ]
SW :[idImager ] [015 ]
SW :[FastStone Image Viewer ] [015 ]
SW :[NeatImage ] [015 ]
SW :[Paint.NET ] [015 ]
SW :[Photomatix ] [015 ]
SW :[XnView ] [015 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

525
tests/Images/Input/Jpg/progressive/JpegSnoopReports/fb.jpg.txt

@ -0,0 +1,525 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\fb.jpg]
Filesize: [15787] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.2]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: COM (Comment) (xFFFE) ***
OFFSET: 0x00000014
Comment length = 4
Comment=*.
*** Marker: APP2 (xFFE2) ***
OFFSET: 0x0000001A
Length = 540
Identifier = [ICC_PROFILE]
ICC Profile:
Marker Number = 1 of 1
Profile Size : 524 bytes
Preferred CMM Type : 'lcms' (0x6C636D73)
Profile Version : 0.2.1.0 (0x02100000)
Profile Device/Class : Display Device profile ('mntr' (0x6D6E7472))
Data Colour Space : rgbData ('RGB ' (0x52474220))
Profile connection space (PCS) : 'XYZ ' (0x58595A20)
Profile creation date : 2012-01-25 03:41:57
Profile file signature : 'acsp' (0x61637370)
Primary platform : Apple Computer, Inc. ('APPL' (0x4150504C))
Profile flags : 0x00000000
Profile flags > Profile not embedded
Profile flags > Profile can't be used independently of embedded
Device Manufacturer : '....' (0x00000000)
Device Model : '....' (0x00000000)
Device attributes : 0x00000000_00000000
Device attributes > Reflective
Device attributes > Glossy
Device attributes > Media polarity = negative
Device attributes > Black & white media
Rendering intent : Perceptual
Profile creator : 'lcms' (0x6C636D73)
Profile ID : 0x00000000_00000000_00000000_00000000
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000238
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 8 6 5 8 12 20 26 31
DQT, Row #1: 6 6 7 10 13 29 30 28
DQT, Row #2: 7 7 8 12 20 29 35 28
DQT, Row #3: 7 9 11 15 26 44 40 31
DQT, Row #4: 9 11 19 28 34 55 52 39
DQT, Row #5: 12 18 28 32 41 52 57 46
DQT, Row #6: 25 32 39 44 52 61 60 51
DQT, Row #7: 36 46 48 49 56 50 52 50
Approx quality factor = 74.75 (scaling=50.51 variance=0.81)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x0000027D
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 9 9 12 24 50 50 50 50
DQT, Row #1: 9 11 13 33 50 50 50 50
DQT, Row #2: 12 13 28 50 50 50 50 50
DQT, Row #3: 24 33 50 50 50 50 50 50
DQT, Row #4: 50 50 50 50 50 50 50 50
DQT, Row #5: 50 50 50 50 50 50 50 50
DQT, Row #6: 50 50 50 50 50 50 50 50
DQT, Row #7: 50 50 50 50 50 50 50 50
Approx quality factor = 74.74 (scaling=50.52 variance=0.19)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x000002C2
Frame header length = 17
Precision = 8
Number of Lines = 336
Samples per Line = 276
Image Size = 276 x 336
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x00, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x01, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000002D5
Huffman table length = 27
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 04
Codes of length 03 bits (005 total): 00 02 03 05 06
Codes of length 04 bits (001 total): 01
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 008
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000002F2
Huffman table length = 24
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 03
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (000 total):
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 005
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000030C
Huffman table length = 24
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (003 total): 00 01 03
Codes of length 03 bits (001 total): 02
Codes of length 04 bits (001 total): 04
Codes of length 05 bits (000 total):
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 005
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000326
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000935
Huffman table length = 43
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 02 03
Codes of length 03 bits (002 total): 01 04
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (002 total): 11 12
Codes of length 06 bits (006 total): 05 10 13 20 31 32
Codes of length 07 bits (002 total): 21 33
Codes of length 08 bits (002 total): 14 22
Codes of length 09 bits (002 total): 34 41
Codes of length 10 bits (003 total): 15 23 30
Codes of length 11 bits (001 total): 24
Codes of length 12 bits (001 total): 42
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 024
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000962
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000012EE
Huffman table length = 39
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 10
Codes of length 05 bits (004 total): 03 20 21 31
Codes of length 06 bits (001 total): 12
Codes of length 07 bits (004 total): 13 30 41 51
Codes of length 08 bits (001 total): 22
Codes of length 09 bits (005 total): 32 40 42 50 61
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 020
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001317
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000142A
Huffman table length = 36
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (001 total): 10
Codes of length 05 bits (004 total): 03 20 21 31
Codes of length 06 bits (002 total): 12 30
Codes of length 07 bits (002 total): 13 41
Codes of length 08 bits (003 total): 22 40 51
Codes of length 09 bits (001 total): 50
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 017
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001450
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x0000155A
Huffman table length = 51
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (002 total): 00 02
Codes of length 04 bits (003 total): 03 10 11
Codes of length 05 bits (006 total): 12 20 21 31 41 51
Codes of length 06 bits (005 total): 22 32 61 71 81
Codes of length 07 bits (002 total): 13 30
Codes of length 08 bits (005 total): 04 33 42 72 91
Codes of length 09 bits (004 total): 14 52 62 A1
Codes of length 10 bits (003 total): 23 82 B1
Codes of length 11 bits (001 total): 43
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 032
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000158F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00001D3E
Huffman table length = 40
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 11 21
Codes of length 04 bits (001 total): 31
Codes of length 05 bits (003 total): 10 41 51
Codes of length 06 bits (004 total): 20 61 71 A1
Codes of length 07 bits (002 total): 81 91
Codes of length 08 bits (002 total): B1 F0
Codes of length 09 bits (003 total): 30 C1 D1
Codes of length 10 bits (001 total): E1
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 021
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00001D68
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000028B9
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x00, table=0(DC),0(AC)
Component[2]: selector=0x01, table=1(DC),1(AC)
Component[3]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000029E4
Huffman table length = 32
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (000 total):
Codes of length 05 bits (003 total): 10 21 31
Codes of length 06 bits (000 total):
Codes of length 07 bits (003 total): 20 41 51
Codes of length 08 bits (001 total): 30
Codes of length 09 bits (001 total): 61
Codes of length 10 bits (001 total): 40
Codes of length 11 bits (001 total): 50
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 013
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002A06
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002B55
Huffman table length = 32
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (003 total): 10 21 31
Codes of length 05 bits (001 total): 20
Codes of length 06 bits (001 total): 41
Codes of length 07 bits (000 total):
Codes of length 08 bits (003 total): 30 51 61
Codes of length 09 bits (001 total): 71
Codes of length 10 bits (001 total): 40
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 013
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002B77
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=1(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002CEA
Huffman table length = 40
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (003 total): 31 41 51
Codes of length 06 bits (003 total): 10 61 71
Codes of length 07 bits (004 total): 81 91 A1 B1
Codes of length 08 bits (003 total): 20 C1 F0
Codes of length 09 bits (001 total): D1
Codes of length 10 bits (001 total): E1
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (001 total): 30
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 021
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00002D14
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x00, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x00003DA9
*** Searching Compression Signatures ***
Signature: 0182408A81A4ABF04D4A34A8A5E98C58
Signature (Rotated): 012D821C6AB210E2A753BE053B8F55D0
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[SONY ] [CYBERSHOT U ] [ ] Yes
SW :[Adobe Photoshop 7.0 ] [Save As 07 ]
SW :[Apple Quicktime ] [0466-0467 ]
SW :[Digital Photo Professiona] [05 ]
SW :[IJG Library ] [075 ]
SW :[MS Paint ] [ ]
SW :[MS Visio ] [ ]
SW :[ZoomBrowser EX ] [low ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [075 ]
SW :[IrfanView ] [075 ]
SW :[idImager ] [075 ]
SW :[FastStone Image Viewer ] [075 ]
SW :[NeatImage ] [075 ]
SW :[Paint.NET ] [075 ]
SW :[Photomatix ] [075 ]
SW :[XnView ] [075 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]

468
tests/Images/Input/Jpg/progressive/JpegSnoopReports/progress.jpg.txt

@ -0,0 +1,468 @@
JPEGsnoop 1.8.0 by Calvin Hass
http://www.impulseadventure.com/photo/
-------------------------------------
Filename: [.\progress.jpg]
Filesize: [44884] Bytes
Start Offset: 0x00000000
*** Marker: SOI (xFFD8) ***
OFFSET: 0x00000000
*** Marker: APP0 (xFFE0) ***
OFFSET: 0x00000002
Length = 16
Identifier = [JFIF]
version = [1.1]
density = 1 x 1 (aspect ratio)
thumbnail = 0 x 0
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000014
Table length = 67
----
Precision=8 bits
Destination ID=0 (Luminance)
DQT, Row #0: 5 3 3 5 7 12 15 18
DQT, Row #1: 4 4 4 6 8 17 18 17
DQT, Row #2: 4 4 5 7 12 17 21 17
DQT, Row #3: 4 5 7 9 15 26 24 19
DQT, Row #4: 5 7 11 17 20 33 31 23
DQT, Row #5: 7 11 17 19 24 31 34 28
DQT, Row #6: 15 19 23 26 31 36 36 30
DQT, Row #7: 22 28 29 29 34 30 31 30
Approx quality factor = 84.93 (scaling=30.13 variance=1.05)
*** Marker: DQT (xFFDB) ***
Define a Quantization Table.
OFFSET: 0x00000059
Table length = 67
----
Precision=8 bits
Destination ID=1 (Chrominance)
DQT, Row #0: 5 5 7 14 30 30 30 30
DQT, Row #1: 5 6 8 20 30 30 30 30
DQT, Row #2: 7 8 17 30 30 30 30 30
DQT, Row #3: 14 20 30 30 30 30 30 30
DQT, Row #4: 30 30 30 30 30 30 30 30
DQT, Row #5: 30 30 30 30 30 30 30 30
DQT, Row #6: 30 30 30 30 30 30 30 30
DQT, Row #7: 30 30 30 30 30 30 30 30
Approx quality factor = 84.93 (scaling=30.15 variance=0.29)
*** Marker: SOF2 (Progressive DCT, Huffman) (xFFC2) ***
OFFSET: 0x0000009E
Frame header length = 17
Precision = 8
Number of Lines = 486
Samples per Line = 341
Image Size = 341 x 486
Raw Image Orientation = Portrait
Number of Img components = 3
Component[1]: ID=0x01, Samp Fac=0x22 (Subsamp 1 x 1), Quant Tbl Sel=0x00 (Lum: Y)
Component[2]: ID=0x02, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cb)
Component[3]: ID=0x03, Samp Fac=0x11 (Subsamp 2 x 2), Quant Tbl Sel=0x01 (Chrom: Cr)
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000B1
Huffman table length = 28
----
Destination ID = 0
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 04
Codes of length 03 bits (005 total): 01 02 03 05 06
Codes of length 04 bits (001 total): 00
Codes of length 05 bits (001 total): 07
Codes of length 06 bits (001 total): 08
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 009
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000000CF
Huffman table length = 26
----
Destination ID = 1
Class = 0 (DC / Lossless Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 02 03
Codes of length 03 bits (003 total): 00 01 04
Codes of length 04 bits (001 total): 05
Codes of length 05 bits (001 total): 06
Codes of length 06 bits (000 total):
Codes of length 07 bits (000 total):
Codes of length 08 bits (000 total):
Codes of length 09 bits (000 total):
Codes of length 10 bits (000 total):
Codes of length 11 bits (000 total):
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 007
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000000EB
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=1(DC),0(AC)
Component[3]: selector=0x03, table=1(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00000CCC
Huffman table length = 45
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 01 02
Codes of length 03 bits (002 total): 00 03
Codes of length 04 bits (002 total): 04 11
Codes of length 05 bits (001 total): 12
Codes of length 06 bits (003 total): 05 13 21
Codes of length 07 bits (003 total): 10 22 31
Codes of length 08 bits (004 total): 14 20 32 41
Codes of length 09 bits (002 total): 06 23
Codes of length 10 bits (002 total): 30 33
Codes of length 11 bits (003 total): 15 24 42
Codes of length 12 bits (001 total): 34
Codes of length 13 bits (001 total): 43
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 026
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00000CFB
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 5
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000020DC
Huffman table length = 46
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 03
Codes of length 04 bits (001 total): 11
Codes of length 05 bits (004 total): 04 10 21 31
Codes of length 06 bits (001 total): 12
Codes of length 07 bits (003 total): 13 20 41
Codes of length 08 bits (003 total): 05 22 51
Codes of length 09 bits (003 total): 23 32 61
Codes of length 10 bits (005 total): 14 30 33 42 71
Codes of length 11 bits (000 total):
Codes of length 12 bits (003 total): 15 52 91
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 027
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000210C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00002604
Huffman table length = 41
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (002 total): 00 01
Codes of length 03 bits (002 total): 02 11
Codes of length 04 bits (002 total): 03 10
Codes of length 05 bits (002 total): 21 31
Codes of length 06 bits (002 total): 12 20
Codes of length 07 bits (001 total): 13
Codes of length 08 bits (004 total): 04 22 41 61
Codes of length 09 bits (002 total): 42 51
Codes of length 10 bits (002 total): 14 32
Codes of length 11 bits (003 total): 33 71 F0
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 022
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000262F
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x01
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000029A7
Huffman table length = 61
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (000 total):
Codes of length 02 bits (001 total): 01
Codes of length 03 bits (003 total): 00 02 11
Codes of length 04 bits (003 total): 03 12 21
Codes of length 05 bits (001 total): 31
Codes of length 06 bits (005 total): 10 22 41 51 61
Codes of length 07 bits (006 total): 04 13 20 32 71 81
Codes of length 08 bits (005 total): 23 30 42 52 91
Codes of length 09 bits (002 total): A1 B1
Codes of length 10 bits (004 total): 62 72 C1 F0
Codes of length 11 bits (006 total): 14 33 40 82 D1 E1
Codes of length 12 bits (001 total): 24
Codes of length 13 bits (005 total): 05 43 53 73 F1
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 042
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000029E6
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 6 .. 63
Successive approximation = 0x02
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00003FF3
Huffman table length = 39
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (002 total): 21 31
Codes of length 05 bits (002 total): 41 51
Codes of length 06 bits (001 total): 61
Codes of length 07 bits (003 total): 71 81 91
Codes of length 08 bits (004 total): 10 A1 B1 C1
Codes of length 09 bits (003 total): D1 E1 F0
Codes of length 10 bits (001 total): 20
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 020
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x0000401C
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x21
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00006299
Scan header length = 12
Number of img components = 3
Component[1]: selector=0x01, table=0(DC),0(AC)
Component[2]: selector=0x02, table=0(DC),0(AC)
Component[3]: selector=0x03, table=0(DC),0(AC)
Spectral selection = 0 .. 0
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x000064A9
Huffman table length = 39
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (000 total):
Codes of length 03 bits (002 total): 00 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (003 total): 31 41 51
Codes of length 06 bits (003 total): 10 61 71
Codes of length 07 bits (004 total): 81 91 D1 F0
Codes of length 08 bits (003 total): A1 B1 E1
Codes of length 09 bits (001 total): C1
Codes of length 10 bits (001 total): F1
Codes of length 11 bits (001 total): 20
Codes of length 12 bits (000 total):
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 020
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x000064D2
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x03, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00006ACB
Huffman table length = 38
----
Destination ID = 1
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 00
Codes of length 03 bits (001 total): 11
Codes of length 04 bits (001 total): 21
Codes of length 05 bits (000 total):
Codes of length 06 bits (002 total): 31 41
Codes of length 07 bits (002 total): 10 51
Codes of length 08 bits (001 total): 61
Codes of length 09 bits (003 total): 91 D1 F0
Codes of length 10 bits (005 total): 71 81 A1 B1 C1
Codes of length 11 bits (001 total): 20
Codes of length 12 bits (001 total): E1
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 019
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00006AF3
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x02, table=0(DC),1(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: DHT (Define Huffman Table) (xFFC4) ***
OFFSET: 0x00006F95
Huffman table length = 38
----
Destination ID = 0
Class = 1 (AC Table)
Codes of length 01 bits (001 total): 01
Codes of length 02 bits (001 total): 11
Codes of length 03 bits (000 total):
Codes of length 04 bits (002 total): 00 21
Codes of length 05 bits (002 total): 31 41
Codes of length 06 bits (002 total): 51 61
Codes of length 07 bits (002 total): 71 81
Codes of length 08 bits (002 total): 91 A1
Codes of length 09 bits (002 total): B1 F0
Codes of length 10 bits (003 total): C1 D1 E1
Codes of length 11 bits (001 total): F1
Codes of length 12 bits (001 total): 10
Codes of length 13 bits (000 total):
Codes of length 14 bits (000 total):
Codes of length 15 bits (000 total):
Codes of length 16 bits (000 total):
Total number of codes: 019
*** Marker: SOS (Start of Scan) (xFFDA) ***
OFFSET: 0x00006FBD
Scan header length = 8
Number of img components = 1
Component[1]: selector=0x01, table=0(DC),0(AC)
Spectral selection = 1 .. 63
Successive approximation = 0x10
NOTE: Scan parsing doesn't support this SOF mode.
*** Marker: EOI (End of Image) (xFFD9) ***
OFFSET: 0x0000AF52
*** Searching Compression Signatures ***
Signature: 0155D875C95B74D0F3C5835A62516F48
Signature (Rotated): 01D38A25358EB7649A254E19F1D46600
File Offset: 0 bytes
Chroma subsampling: 2x2
EXIF Make/Model: NONE
EXIF Makernotes: NONE
EXIF Software: NONE
Searching Compression Signatures: (3347 built-in, 0 user(*) )
EXIF.Make / Software EXIF.Model Quality Subsamp Match?
------------------------- ----------------------------------- ---------------- --------------
CAM:[NIKON ] [E2500 ] [FINE ] No
CAM:[Nokia ] [N73 ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C2000Z ] [ ] No
CAM:[OLYMPUS OPTICAL CO.,LTD ] [C3040Z ] [ ] No
CAM:[PENTAX ] [PENTAX Optio 550 ] [ ] No
CAM:[Research In Motion ] [BlackBerry 8100 ] [ ] No
CAM:[SEIKO EPSON CORP. ] [PhotoPC 3000Z ] [ ] No
SW :[IJG Library ] [085 ]
SW :[Picasa ] [085 (Normal) ]
SW :[ZoomBrowser EX ] [medium ]
The following IJG-based editors also match this signature:
SW :[GIMP ] [085 ]
SW :[IrfanView ] [085 ]
SW :[idImager ] [085 ]
SW :[FastStone Image Viewer ] [085 ]
SW :[NeatImage ] [085 ]
SW :[Paint.NET ] [085 ]
SW :[Photomatix ] [085 ]
SW :[XnView ] [085 ]
Based on the analysis of compression characteristics and EXIF metadata:
ASSESSMENT: Class 1 - Image is processed/edited
This may be a new software editor for the database.
If this file is processed, and editor doesn't appear in list above,
PLEASE ADD TO DATABASE with [Tools->Add Camera to DB]
Loading…
Cancel
Save