1/*
2 * 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>
9 *
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.
19 */
20
21#ifndef __SOLO6X10_JPEG_H
22#define __SOLO6X10_JPEG_H
23
24static const u8 jpeg_header[] = {
25	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
106/* This is the byte marker for the start of the DQT */
107#define DQT_START	17
108#define DQT_LEN		138
109static const u8 jpeg_dqt[4][DQT_LEN] = {
110	{
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
189#endif /* __SOLO6X10_JPEG_H */
190