blob: 3c611bd3f2d8af6e9fa11a0df41e9c12fb3747de [file] [log] [blame]
Ben Collinsfaa4fd22010-06-17 13:27:26 -04001/*
Hans Verkuildcae5da2013-03-25 05:35:17 -03002 * Copyright (C) 2010-2013 Bluecherry, LLC <http://www.bluecherrydvr.com>
3 *
4 * Original author:
5 * Ben Collins <bcollins@ubuntu.com>
6 *
7 * Additional work by:
8 * John Brooks <john.brooks@bluecherry.net>
Ben Collinsfaa4fd22010-06-17 13:27:26 -04009 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
Ben Collinsfaa4fd22010-06-17 13:27:26 -040019 */
20
Krzysztof Hałasadecebab2011-02-11 13:38:20 +010021#ifndef __SOLO6X10_JPEG_H
22#define __SOLO6X10_JPEG_H
Ben Collinsfaa4fd22010-06-17 13:27:26 -040023
Ismael Luceno8a4d9a92014-12-24 08:35:59 -030024static const u8 jpeg_header[] = {
Ben Collinsfaa4fd22010-06-17 13:27:26 -040025 0xff, 0xd8, 0xff, 0xfe, 0x00, 0x0d, 0x42, 0x6c,
26 0x75, 0x65, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79,
27 0x20, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x20, 0x16,
28 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c, 0x1a, 0x1c,
29 0x24, 0x22, 0x20, 0x26, 0x30, 0x50, 0x34, 0x30,
30 0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a, 0x3a, 0x50,
31 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66, 0x70, 0x6e,
32 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88, 0xae, 0x8a,
33 0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae, 0xbe, 0xc4,
34 0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2, 0xf2, 0xe0,
35 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6, 0xff, 0xdb,
36 0x00, 0x43, 0x01, 0x22, 0x24, 0x24, 0x30, 0x2a,
37 0x30, 0x5e, 0x34, 0x34, 0x5e, 0xc6, 0x84, 0x70,
38 0x84, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
39 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
40 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
41 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
42 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
43 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
44 0xc6, 0xc6, 0xc6, 0xff, 0xc4, 0x01, 0xa2, 0x00,
45 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
46 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
48 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01,
49 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04,
50 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03,
51 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41,
52 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14,
53 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1,
54 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62,
55 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19,
56 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34,
57 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44,
58 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54,
59 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64,
60 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74,
61 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84,
62 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93,
63 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2,
64 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
65 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
66 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
67 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
68 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5,
69 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3,
70 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x01,
71 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
72 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
73 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
74 0x08, 0x09, 0x0a, 0x0b, 0x11, 0x00, 0x02, 0x01,
75 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04,
76 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02,
77 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12,
78 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32,
79 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1,
80 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72,
81 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1,
82 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29,
83 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43,
84 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53,
85 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63,
86 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73,
87 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82,
88 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a,
89 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
90 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
91 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
92 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
93 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5,
94 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4,
95 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3,
96 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff,
97 0xc0, 0x00, 0x11, 0x08, 0x00, 0xf0, 0x02, 0xc0,
98 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03,
99 0x11, 0x01, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01,
100 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
101};
102
103/* This is the byte marker for the start of SOF0: 0xffc0 marker */
104#define SOF0_START 575
105
Hans Verkuildcae5da2013-03-25 05:35:17 -0300106/* This is the byte marker for the start of the DQT */
107#define DQT_START 17
108#define DQT_LEN 138
Ismael Luceno8a4d9a92014-12-24 08:35:59 -0300109static const u8 jpeg_dqt[4][DQT_LEN] = {
Hans Verkuildcae5da2013-03-25 05:35:17 -0300110 {
111 0xff, 0xdb, 0x00, 0x43, 0x00,
112 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07,
113 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14,
114 0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13,
115 0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a,
116 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22,
117 0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c,
118 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, 0x39,
119 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32,
120 0xff, 0xdb, 0x00, 0x43, 0x01,
121 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d,
122 0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32,
123 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
124 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
125 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
126 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
127 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
128 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32
129 }, {
130 0xff, 0xdb, 0x00, 0x43, 0x00,
131 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
132 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
133 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
134 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
135 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
136 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
137 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
138 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
139 0xff, 0xdb, 0x00, 0x43, 0x01,
140 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
141 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
142 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
143 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
144 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
145 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
146 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
147 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
148 }, {
149 0xff, 0xdb, 0x00, 0x43, 0x00,
150 0x20, 0x16, 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c,
151 0x1a, 0x1c, 0x24, 0x22, 0x20, 0x26, 0x30, 0x50,
152 0x34, 0x30, 0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a,
153 0x3a, 0x50, 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66,
154 0x70, 0x6e, 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88,
155 0xae, 0x8a, 0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae,
156 0xbe, 0xc4, 0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2,
157 0xf2, 0xe0, 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6,
158 0xff, 0xdb, 0x00, 0x43, 0x01,
159 0x22, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
160 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
161 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
162 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
163 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
164 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
165 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
166 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6
167 }, {
168 0xff, 0xdb, 0x00, 0x43, 0x00,
169 0x30, 0x21, 0x24, 0x2a, 0x24, 0x1e, 0x30, 0x2a,
170 0x27, 0x2a, 0x36, 0x33, 0x30, 0x39, 0x48, 0x78,
171 0x4e, 0x48, 0x42, 0x42, 0x48, 0x93, 0x69, 0x6f,
172 0x57, 0x78, 0xae, 0x99, 0xb7, 0xb4, 0xab, 0x99,
173 0xa8, 0xa5, 0xc0, 0xd8, 0xff, 0xea, 0xc0, 0xcc,
174 0xff, 0xcf, 0xa5, 0xa8, 0xf0, 0xff, 0xf3, 0xff,
175 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xe7, 0xff,
176 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
177 0xff, 0xdb, 0x00, 0x43, 0x01,
178 0x33, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
179 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
180 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
181 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
182 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
183 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
184 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
185 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
186 }
187};
188
Krzysztof Hałasadecebab2011-02-11 13:38:20 +0100189#endif /* __SOLO6X10_JPEG_H */