1
/// Copyright (c) 2008 Jeffrey Powers for Fluxcapacity Open Source.
2
/// Under the MIT License, details: License.txt.
6
namespace FluxJpeg.Core
8
internal sealed class JPEGMarker
11
public const byte JFIF_J = (byte)0x4a;
12
public const byte JFIF_F = (byte)0x46;
13
public const byte JFIF_I = (byte)0x49;
14
public const byte JFIF_X = (byte)0x46;
16
// JFIF extension codes
17
public const byte JFXX_JPEG = (byte)0x10;
18
public const byte JFXX_ONE_BPP = (byte)0x11;
19
public const byte JFXX_THREE_BPP = (byte)0x13;
21
// Marker prefix. Next byte is a marker, unless ...
22
public const byte XFF = (byte)0xff;
23
// ... marker byte encoding an xff.
24
public const byte X00 = (byte)0x00;
26
#region Section Markers
28
/// <summary>Huffman Table</summary>
29
public const byte DHT = (byte)0xc4;
31
/// <summary>Quantization Table</summary>
32
public const byte DQT = (byte)0xdb;
34
/// <summary>Start of Scan</summary>
35
public const byte SOS = (byte)0xda;
37
/// <summary>Define Restart Interval</summary>
38
public const byte DRI = (byte)0xdd;
40
/// <summary>Comment</summary>
41
public const byte COM = (byte)0xfe;
43
/// <summary>Start of Image</summary>
44
public const byte SOI = (byte)0xd8;
46
/// <summary>End of Image</summary>
47
public const byte EOI = (byte)0xd9;
49
/// <summary>Define Number of Lines</summary>
50
public const byte DNL = (byte)0xdc;
54
#region Application Reserved Keywords
56
public const byte APP0 = (byte)0xe0;
57
public const byte APP1 = (byte)0xe1;
58
public const byte APP2 = (byte)0xe2;
59
public const byte APP3 = (byte)0xe3;
60
public const byte APP4 = (byte)0xe4;
61
public const byte APP5 = (byte)0xe5;
62
public const byte APP6 = (byte)0xe6;
63
public const byte APP7 = (byte)0xe7;
64
public const byte APP8 = (byte)0xe8;
65
public const byte APP9 = (byte)0xe9;
66
public const byte APP10 = (byte)0xea;
67
public const byte APP11 = (byte)0xeb;
68
public const byte APP12 = (byte)0xec;
69
public const byte APP13 = (byte)0xed;
70
public const byte APP14 = (byte)0xee;
71
public const byte APP15 = (byte)0xef;
75
public const byte RST0 = (byte)0xd0;
76
public const byte RST1 = (byte)0xd1;
77
public const byte RST2 = (byte)0xd2;
78
public const byte RST3 = (byte)0xd3;
79
public const byte RST4 = (byte)0xd4;
80
public const byte RST5 = (byte)0xd5;
81
public const byte RST6 = (byte)0xd6;
82
public const byte RST7 = (byte)0xd7;
84
#region Start of Frame (SOF)
86
/// <summary>Nondifferential Huffman-coding frame (baseline dct)</summary>
87
public const byte SOF0 = (byte)0xc0;
89
/// <summary>Nondifferential Huffman-coding frame (extended dct)</summary>
90
public const byte SOF1 = (byte)0xc1;
92
/// <summary>Nondifferential Huffman-coding frame (progressive dct)</summary>
93
public const byte SOF2 = (byte)0xc2;
95
/// <summary>Nondifferential Huffman-coding frame Lossless (Sequential)</summary>
96
public const byte SOF3 = (byte)0xc3;
98
/// <summary>Differential Huffman-coding frame Sequential DCT</summary>
99
public const byte SOF5 = (byte)0xc5;
101
/// <summary>Differential Huffman-coding frame Progressive DCT</summary>
102
public const byte SOF6 = (byte)0xc6;
104
/// <summary>Differential Huffman-coding frame lossless</summary>
105
public const byte SOF7 = (byte)0xc7;
107
/// <summary>Nondifferential Arithmetic-coding frame (extended dct)</summary>
108
public const byte SOF9 = (byte)0xc9;
110
/// <summary>Nondifferential Arithmetic-coding frame (progressive dct)</summary>
111
public const byte SOF10 = (byte)0xca;
113
/// <summary>Nondifferential Arithmetic-coding frame (lossless)</summary>
114
public const byte SOF11 = (byte)0xcb;
116
/// <summary>Differential Arithmetic-coding frame (sequential dct)</summary>
117
public const byte SOF13 = (byte)0xcd;
119
/// <summary>Differential Arithmetic-coding frame (progressive dct)</summary>
120
public const byte SOF14 = (byte)0xce;
122
/// <summary>Differential Arithmetic-coding frame (lossless)</summary>
123
public const byte SOF15 = (byte)0xcf;