public enum JpegMarkers
{
// Start of Frame markers, non-differential, Huffman coding
HuffBaselineDCT = 0xFFC0,
HuffExtSequentialDCT = 0xFFC1,
HuffProgressiveDCT = 0xFFC2,
HuffLosslessSeq = 0xFFC3,
// Start of Frame markers, differential, Huffman coding
HuffDiffSequentialDCT = 0xFFC5,
HuffDiffProgressiveDCT = 0xFFC6,
HuffDiffLosslessSeq = 0xFFC7,
// Start of Frame markers, non-differential, arithmetic coding
ArthBaselineDCT = 0xFFC8,
ArthExtSequentialDCT = 0xFFC9,
ArthProgressiveDCT = 0xFFCA,
ArthLosslessSeq = 0xFFCB,
// Start of Frame markers, differential, arithmetic coding
ArthDiffSequentialDCT = 0xFFCD,
ArthDiffProgressiveDCT = 0xFFCE,
ArthDiffLosslessSeq = 0xFFCF,
// Huffman table spec
HuffmanTableDef = 0xFFC4,
// Arithmetic table spec
ArithmeticTableDef = 0xFFCC,
// Restart Interval termination
RestartIntervalStart = 0xFFD0,
RestartIntervalEnd = 0xFFD7,
// Other markers
StartOfImage = 0xFFD8,
EndOfImage = 0xFFD9,
StartOfScan = 0xFFDA,
QuantTableDef = 0xFFDB,
NumberOfLinesDef = 0xFFDC,
RestartIntervalDef = 0xFFDD,
HierarchProgressionDef = 0xFFDE,
ExpandRefComponents = 0xFFDF,
// App segments
App0 = 0xFFE0,
App1 = 0xFFE1,
App2 = 0xFFE2,
App3 = 0xFFE3,
App4 = 0xFFE4,
App5 = 0xFFE5,
App6 = 0xFFE6,
App7 = 0xFFE7,
App8 = 0xFFE8,
App9 = 0xFFE9,
App10 = 0xFFEA,
App11 = 0xFFEB,
App12 = 0xFFEC,
App13 = 0xFFED,
App14 = 0xFFEE,
App15 = 0xFFEF,
// Jpeg Extensions
JpegExt0 = 0xFFF0,
JpegExt1 = 0xFFF1,
JpegExt2 = 0xFFF2,
JpegExt3 = 0xFFF3,
JpegExt4 = 0xFFF4,
JpegExt5 = 0xFFF5,
JpegExt6 = 0xFFF6,
JpegExt7 = 0xFFF7,
JpegExt8 = 0xFFF8,
JpegExt9 = 0xFFF9,
JpegExtA = 0xFFFA,
JpegExtB = 0xFFFB,
JpegExtC = 0xFFFC,
JpegExtD = 0xFFFD,
// Comments
Comment = 0xFFFE,
// Reserved
ArithTemp = 0xFF01,
ReservedStart = 0xFF02,
ReservedEnd = 0xFFBF
};
1 comment:
Recently, I've been trying to find information about the JPEG image format, and the different headers stored in it. I am attempting to make a library for reading and modifying JPEG headers. (and eventually, I will add the functionality into it to read JPEG image data, uncompress it, and feed it as RGB for user editing, then convert it back and compress it)
Anyway, this post is very helpful, because it is quite difficult to find useful information about the markers and such stored in a JPEG header. So far, what I have been able to get is the format for (stored in APP0) JFIF/JFXX, (stored in APP1) EXIF, and (used by EXIF) TIFF. But I'm still a long ways away from the whole JPEG format, and the TIFF reference has a lot in it, the official TIFF documentation is 115 pages.
Anyway, thank you for this reference, it's very helpful!
Post a Comment