skip application specific markers when parsing jpg headers

This commit is contained in:
Eliot Jones
2022-01-15 13:42:23 +00:00
parent e2b7de54e9
commit 0b876cb338
2 changed files with 37 additions and 11 deletions

View File

@@ -29,17 +29,37 @@
switch (marker)
{
case JpegMarker.StartOfBaselineDctFrame:
{
// ReSharper disable once UnusedVariable
var length = ReadShort(stream, shortBuffer);
var bpp = stream.ReadByte();
var height = ReadShort(stream, shortBuffer);
var width = ReadShort(stream, shortBuffer);
return new JpegInformation(width, height, bpp);
}
case JpegMarker.StartOfProgressiveDctFrame:
break;
{
// ReSharper disable once UnusedVariable
var length = ReadShort(stream, shortBuffer);
var bpp = stream.ReadByte();
var height = ReadShort(stream, shortBuffer);
var width = ReadShort(stream, shortBuffer);
return new JpegInformation(width, height, bpp);
}
case JpegMarker.ApplicationSpecific0:
case JpegMarker.ApplicationSpecific1:
case JpegMarker.ApplicationSpecific2:
case JpegMarker.ApplicationSpecific3:
case JpegMarker.ApplicationSpecific4:
case JpegMarker.ApplicationSpecific5:
case JpegMarker.ApplicationSpecific6:
case JpegMarker.ApplicationSpecific7:
case JpegMarker.ApplicationSpecific8:
case JpegMarker.ApplicationSpecific9:
case JpegMarker.ApplicationSpecific10:
case JpegMarker.ApplicationSpecific11:
case JpegMarker.ApplicationSpecific12:
case JpegMarker.ApplicationSpecific13:
case JpegMarker.ApplicationSpecific14:
case JpegMarker.ApplicationSpecific15:
{
var length = ReadShort(stream, shortBuffer);
stream.Seek(length - 2, SeekOrigin.Current);
break;
}
}
marker = (JpegMarker)ReadSegmentMarker(stream, true);
@@ -104,7 +124,7 @@
throw new InvalidOperationException("Failed to read a short where expected in the JPEG stream.");
}
return (short) ((buffer[0] << 8) + buffer[1]);
return (short)((buffer[0] << 8) + buffer[1]);
}
}
}

View File

@@ -78,6 +78,12 @@
ApplicationSpecific7 = 0xE7,
ApplicationSpecific8 = 0xE8,
ApplicationSpecific9 = 0xE9,
ApplicationSpecific10 = 0xEA,
ApplicationSpecific11 = 0xEB,
ApplicationSpecific12 = 0xEC,
ApplicationSpecific13 = 0xED,
ApplicationSpecific14 = 0xEE,
ApplicationSpecific15 = 0xEF,
/// <summary>
/// Marks a text comment.
/// </summary>