1 /*
2 * MJPEG encoder and decoder
3 * Copyright (c) 2000, 2001 Fabrice Bellard
4 * Copyright (c) 2003 Alex Beregszaszi
5 * Copyright (c) 2003-2004 Michael Niedermayer
6 *
7 * Support for external huffman table, various fixes (AVID workaround),
8 * aspecting, new decode_frame mechanism and apple mjpeg-b support
9 * by Alex Beregszaszi
10 *
11 * This file is part of FFmpeg.
12 *
13 * FFmpeg is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU Lesser General Public
15 * License as published by the Free Software Foundation; either
16 * version 2.1 of the License, or (at your option) any later version.
17 *
18 * FFmpeg is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * Lesser General Public License for more details.
22 *
23 * You should have received a copy of the GNU Lesser General Public
24 * License along with FFmpeg; if not, write to the Free Software
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
26 */
27
28 /**
29 * @file
30 * MJPEG encoder and decoder.
31 */
32
33 #ifndef AVCODEC_MJPEG_H
34 #define AVCODEC_MJPEG_H
35
36 /* JPEG marker codes */
38 /* start of frame */
39 SOF0 = 0xc0,
/* baseline */
40 SOF1 = 0xc1,
/* extended sequential, huffman */
41 SOF2 = 0xc2,
/* progressive, huffman */
42 SOF3 = 0xc3,
/* lossless, huffman */
43
44 SOF5 = 0xc5,
/* differential sequential, huffman */
45 SOF6 = 0xc6,
/* differential progressive, huffman */
46 SOF7 = 0xc7,
/* differential lossless, huffman */
47 JPG = 0xc8,
/* reserved for JPEG extension */
48 SOF9 = 0xc9,
/* extended sequential, arithmetic */
49 SOF10 = 0xca,
/* progressive, arithmetic */
50 SOF11 = 0xcb,
/* lossless, arithmetic */
51
52 SOF13 = 0xcd,
/* differential sequential, arithmetic */
53 SOF14 = 0xce,
/* differential progressive, arithmetic */
54 SOF15 = 0xcf,
/* differential lossless, arithmetic */
55
56 DHT = 0xc4,
/* define huffman tables */
57
58 DAC = 0xcc,
/* define arithmetic-coding conditioning */
59
60 /* restart with modulo 8 count "m" */
69
70 SOI = 0xd8,
/* start of image */
71 EOI = 0xd9,
/* end of image */
72 SOS = 0xda,
/* start of scan */
73 DQT = 0xdb,
/* define quantization tables */
74 DNL = 0xdc,
/* define number of lines */
75 DRI = 0xdd,
/* define restart interval */
76 DHP = 0xde,
/* define hierarchical progression */
77 EXP = 0xdf,
/* expand reference components */
78
95
104 LSE = 0xf8,
///< JPEG-LS extension parameters
110
112
113 TEM = 0x01,
/* temporary private use for arithmetic coding */
114
115 /* 0x02 -> 0xbf reserved */
116 };
117
118 #define PREDICT(ret, topleft, top, left, predictor)\
119 switch(predictor){\
120 case 0: ret= 0; break;\
121 case 1: ret= left; break;\
122 case 2: ret= top; break;\
123 case 3: ret= topleft; break;\
124 case 4: ret= left + top - topleft; break;\
125 case 5: ret= left + ((top - topleft)>>1); break;\
126 case 6: ret= top + ((left - topleft)>>1); break;\
127 default:\
128 case 7: ret= (left + top)>>1; break;\
129 }
130
131 #endif /* AVCODEC_MJPEG_H */