V4L/DVB (10700): saa7115: don't access reg 0x87 if it is not present.
[linux-2.6] / drivers / media / video / gspca / jpeg.h
1 #ifndef JPEG_H
2 #define JPEG_H 1
3 /*
4  * Insert a JPEG header at start of frame
5  *
6  * This module is used by the gspca subdrivers.
7  * A special case is done for Conexant webcams.
8  *
9  * Copyright (C) Jean-Francois Moine (http://moinejf.free.fr)
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24  *
25  */
26
27 /*
28  * generation options
29  *      CONEX_CAM       Conexant if present
30  *      QUANT_VAL       quantization table (0..8)
31  */
32
33 /*
34  * JPEG header:
35  *      - start of jpeg frame
36  *      - quantization table
37  *      - huffman table
38  *      - start of SOF0
39  */
40 static const u8 jpeg_head[] = {
41         0xff, 0xd8,                     /* jpeg */
42         0xff, 0xdb, 0x00, 0x84,         /* DQT */
43 #if QUANT_VAL == 0
44 /* index 0 - Q40*/
45 0,                                      /* quantization table part 1 */
46         0x14, 0x0e, 0x0f, 0x12, 0x0f, 0x0d, 0x14, 0x12,
47         0x10, 0x12, 0x17, 0x15, 0x14, 0x18, 0x1e, 0x32,
48         0x21, 0x1e, 0x1c, 0x1c, 0x1e, 0x3d, 0x2c, 0x2e,
49         0x24, 0x32, 0x49, 0x40, 0x4c, 0x4b, 0x47, 0x40,
50         0x46, 0x45, 0x50, 0x5a, 0x73, 0x62, 0x50, 0x55,
51         0x6d, 0x56, 0x45, 0x46, 0x64, 0x88, 0x65, 0x6d,
52         0x77, 0x7b, 0x81, 0x82, 0x81, 0x4e, 0x60, 0x8d,
53         0x97, 0x8c, 0x7d, 0x96, 0x73, 0x7e, 0x81, 0x7c,
54 1,                                      /* quantization table part 2 */
55         0x15, 0x17, 0x17, 0x1e, 0x1a, 0x1e, 0x3b, 0x21,
56         0x21, 0x3b, 0x7c, 0x53, 0x46, 0x53, 0x7c, 0x0c,
57         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
58         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
59         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
60         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
61         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
62         0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c,
63 #elif QUANT_VAL == 1
64 /* index 1 - Q50 */
65 0,
66         0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
67         0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
68         0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
69         0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
70         0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
71         0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
72         0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
73         0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
74 1,
75         0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
76         0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
77         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
78         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
79         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
80         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
81         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
82         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
83 #elif QUANT_VAL == 2
84 /* index 2 Q60 */
85 0,
86         0x0d, 0x09, 0x0a, 0x0b, 0x0a, 0x08, 0x0d, 0x0b,
87         0x0a, 0x0b, 0x0e, 0x0e, 0x0d, 0x0f, 0x13, 0x20,
88         0x15, 0x13, 0x12, 0x12, 0x13, 0x27, 0x1c, 0x1e,
89         0x17, 0x20, 0x2e, 0x29, 0x31, 0x30, 0x2e, 0x29,
90         0x2d, 0x2c, 0x33, 0x3a, 0x4a, 0x3e, 0x33, 0x36,
91         0x46, 0x37, 0x2c, 0x2d, 0x40, 0x57, 0x41, 0x46,
92         0x4c, 0x4e, 0x52, 0x53, 0x52, 0x32, 0x3e, 0x5a,
93         0x61, 0x5a, 0x50, 0x60, 0x4a, 0x51, 0x52, 0x4f,
94 1,
95         0x0e, 0x0e, 0x0e, 0x13, 0x11, 0x13, 0x26, 0x15,
96         0x15, 0x26, 0x4f, 0x35, 0x2d, 0x35, 0x4f, 0x4f,
97         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
98         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
99         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
100         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
101         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
102         0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f,
103 #elif QUANT_VAL == 3
104 /* index 3 - Q70 */
105 0,
106         0x0a, 0x07, 0x07, 0x08, 0x07, 0x06, 0x0a, 0x08,
107         0x08, 0x08, 0x0b, 0x0a, 0x0a, 0x0b, 0x0e, 0x18,
108         0x10, 0x0e, 0x0d, 0x0d, 0x0e, 0x1d, 0x15, 0x16,
109         0x11, 0x18, 0x23, 0x1f, 0x25, 0x24, 0x22, 0x1f,
110         0x22, 0x21, 0x26, 0x2b, 0x37, 0x2f, 0x26, 0x29,
111         0x34, 0x29, 0x21, 0x22, 0x30, 0x41, 0x31, 0x34,
112         0x39, 0x3b, 0x3e, 0x3e, 0x3e, 0x25, 0x2e, 0x44,
113         0x49, 0x43, 0x3c, 0x48, 0x37, 0x3d, 0x3e, 0x3b,
114 1,
115         0x0a, 0x0b, 0x0b, 0x0e, 0x0d, 0x0e, 0x1c, 0x10,
116         0x10, 0x1c, 0x3b, 0x28, 0x22, 0x28, 0x3b, 0x3b,
117         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
118         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
119         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
120         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
121         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
122         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
123 #elif QUANT_VAL == 4
124 /* index 4 - Q80 */
125 0,
126         0x06, 0x04, 0x05, 0x06, 0x05, 0x04, 0x06, 0x06,
127         0x05, 0x06, 0x07, 0x07, 0x06, 0x08, 0x0a, 0x10,
128         0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x14, 0x0e, 0x0f,
129         0x0c, 0x10, 0x17, 0x14, 0x18, 0x18, 0x17, 0x14,
130         0x16, 0x16, 0x1a, 0x1d, 0x25, 0x1f, 0x1a, 0x1b,
131         0x23, 0x1c, 0x16, 0x16, 0x20, 0x2c, 0x20, 0x23,
132         0x26, 0x27, 0x29, 0x2a, 0x29, 0x19, 0x1f, 0x2d,
133         0x30, 0x2d, 0x28, 0x30, 0x25, 0x28, 0x29, 0x28,
134 1,
135         0x07, 0x07, 0x07, 0x0a, 0x08, 0x0a, 0x13, 0x0a,
136         0x0a, 0x13, 0x28, 0x1a, 0x16, 0x1a, 0x28, 0x28,
137         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
138         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
139         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
140         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
141         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
142         0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
143 #elif QUANT_VAL == 5
144 /* index 5 - Q85 */
145 0,
146         0x05, 0x03, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04,
147         0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 0x07, 0x0c,
148         0x08, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x0b, 0x0b,
149         0x09, 0x0c, 0x11, 0x0f, 0x12, 0x12, 0x11, 0x0f,
150         0x11, 0x11, 0x13, 0x16, 0x1c, 0x17, 0x13, 0x14,
151         0x1a, 0x15, 0x11, 0x11, 0x18, 0x21, 0x18, 0x1a,
152         0x1d, 0x1d, 0x1f, 0x1f, 0x1f, 0x13, 0x17, 0x22,
153         0x24, 0x22, 0x1e, 0x24, 0x1c, 0x1e, 0x1f, 0x1e,
154 1,
155         0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x0e, 0x08,
156         0x08, 0x0e, 0x1e, 0x14, 0x11, 0x14, 0x1e, 0x1e,
157         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
158         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
159         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
160         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
161         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
162         0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
163 #elif QUANT_VAL == 6
164 /* index 6 - 86 */
165 0,
166         0x04, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, 0x04,
167         0x04, 0x04, 0x05, 0x05, 0x04, 0x05, 0x07, 0x0B,
168         0x07, 0x07, 0x06, 0x06, 0x07, 0x0e, 0x0a, 0x0a,
169         0x08, 0x0B, 0x10, 0x0e, 0x11, 0x11, 0x10, 0x0e,
170         0x10, 0x0f, 0x12, 0x14, 0x1a, 0x16, 0x12, 0x13,
171         0x18, 0x13, 0x0f, 0x10, 0x16, 0x1f, 0x17, 0x18,
172         0x1b, 0x1b, 0x1d, 0x1d, 0x1d, 0x11, 0x16, 0x20,
173         0x22, 0x1f, 0x1c, 0x22, 0x1a, 0x1c, 0x1d, 0x1c,
174 1,
175         0x05, 0x05, 0x05, 0x07, 0x06, 0x07, 0x0D, 0x07,
176         0x07, 0x0D, 0x1c, 0x12, 0x10, 0x12, 0x1c, 0x1c,
177         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
178         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
179         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
180         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
181         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
182         0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
183 #elif QUANT_VAL == 7
184 /* index 7 - 88 */
185 0,
186         0x04, 0x03, 0x03, 0x03, 0x03, 0x02, 0x04, 0x03,
187         0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x06, 0x0a,
188         0x06, 0x06, 0x05, 0x05, 0x06, 0x0C, 0x08, 0x09,
189         0x07, 0x0a, 0x0e, 0x0c, 0x0f, 0x0e, 0x0e, 0x0c,
190         0x0d, 0x0d, 0x0f, 0x11, 0x16, 0x13, 0x0f, 0x10,
191         0x15, 0x11, 0x0d, 0x0d, 0x13, 0x1a, 0x13, 0x15,
192         0x17, 0x18, 0x19, 0x19, 0x19, 0x0f, 0x12, 0x1b,
193         0x1d, 0x1b, 0x18, 0x1d, 0x16, 0x18, 0x19, 0x18,
194 1,
195         0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0B, 0x06,
196         0x06, 0x0B, 0x18, 0x10, 0x0d, 0x10, 0x18, 0x18,
197         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
198         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
199         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
200         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
201         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
202         0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
203 #elif QUANT_VAL == 8
204 /* index 8 - ?? */
205 0,
206         0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
207         0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x05,
208         0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x04, 0x05,
209         0x04, 0x05, 0x07, 0x06, 0x08, 0x08, 0x07, 0x06,
210         0x07, 0x07, 0x08, 0x09, 0x0c, 0x0a, 0x08, 0x09,
211         0x0B, 0x09, 0x07, 0x07, 0x0a, 0x0e, 0x0a, 0x0b,
212         0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x08, 0x0a, 0x0e,
213         0x0f, 0x0e, 0x0d, 0x0f, 0x0c, 0x0d, 0x0d, 0x0c,
214 1,
215         0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x06, 0x03,
216         0x03, 0x06, 0x0c, 0x08, 0x07, 0x08, 0x0c, 0x0c,
217         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
218         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
219         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
220         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
221         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
222         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
223 #else
224 #error "Invalid quantization table"
225 #endif
226
227 /* huffman table */
228         0xff, 0xc4, 0x01, 0xa2,
229         0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01,
230         0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231         0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
232         0x07, 0x08, 0x09, 0x0a, 0x0b, 0x01, 0x00, 0x03,
233         0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
234         0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
235         0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
236         0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03,
237         0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00,
238         0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04,
239         0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13,
240         0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81,
241         0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15,
242         0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82,
243         0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25,
244         0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36,
245         0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46,
246         0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56,
247         0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66,
248         0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76,
249         0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86,
250         0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95,
251         0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4,
252         0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3,
253         0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2,
254         0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca,
255         0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
256         0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
257         0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5,
258         0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x11, 0x00, 0x02,
259         0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
260         0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01,
261         0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06,
262         0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22,
263         0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1,
264         0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62,
265         0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25,
266         0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28,
267         0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a,
268         0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
269         0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
270         0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
271         0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a,
272         0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
273         0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
274         0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
275         0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
276         0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
277         0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
278         0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3,
279         0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2,
280         0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
281 #ifdef CONEX_CAM
282 /* the Conexant frames start with SOF0 */
283 #else
284         0xff, 0xc0, 0x00, 0x11,         /* SOF0 (start of frame 0 */
285         0x08,                           /* data precision */
286 #endif
287 };
288
289 #ifndef CONEX_CAM
290 /* variable part:
291  *      0x01, 0xe0,                      height
292  *      0x02, 0x80,                      width
293  *      0x03,                            component number
294  *              0x01,
295  *                      0x21,                   samples Y
296  */
297
298 /* end of header */
299 static u8 eoh[] = {
300                         0x00,           /* quant Y */
301                 0x02, 0x11, 0x01,       /* samples CbCr - quant CbCr */
302                 0x03, 0x11, 0x01,
303
304         0xff, 0xda, 0x00, 0x0c,         /* SOS (start of scan) */
305         0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
306 };
307 #endif
308
309 /* -- output the JPEG header -- */
310 static void jpeg_put_header(struct gspca_dev *gspca_dev,
311                             struct gspca_frame *frame,
312                             int samplesY)
313 {
314 #ifndef CONEX_CAM
315         u8 tmpbuf[8];
316 #endif
317
318         gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
319                         jpeg_head, sizeof jpeg_head);
320 #ifndef CONEX_CAM
321         tmpbuf[0] = gspca_dev->height >> 8;
322         tmpbuf[1] = gspca_dev->height & 0xff;
323         tmpbuf[2] = gspca_dev->width >> 8;
324         tmpbuf[3] = gspca_dev->width & 0xff;
325         tmpbuf[4] = 0x03;               /* component number */
326         tmpbuf[5] = 0x01;               /* first component */
327         tmpbuf[6] = samplesY;
328         gspca_frame_add(gspca_dev, INTER_PACKET, frame,
329                         tmpbuf, 7);
330         gspca_frame_add(gspca_dev, INTER_PACKET, frame,
331                         eoh, sizeof eoh);
332 #endif
333 }
334 #endif