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