128cae868SHans Verkuil /*
228cae868SHans Verkuil  * Copyright (C) 2010-2013 Bluecherry, LLC <http://www.bluecherrydvr.com>
328cae868SHans Verkuil  *
428cae868SHans Verkuil  * Original author:
528cae868SHans Verkuil  * Ben Collins <bcollins@ubuntu.com>
628cae868SHans Verkuil  *
728cae868SHans Verkuil  * Additional work by:
828cae868SHans Verkuil  * John Brooks <john.brooks@bluecherry.net>
928cae868SHans Verkuil  *
1028cae868SHans Verkuil  * This program is free software; you can redistribute it and/or modify
1128cae868SHans Verkuil  * it under the terms of the GNU General Public License as published by
1228cae868SHans Verkuil  * the Free Software Foundation; either version 2 of the License, or
1328cae868SHans Verkuil  * (at your option) any later version.
1428cae868SHans Verkuil  *
1528cae868SHans Verkuil  * This program is distributed in the hope that it will be useful,
1628cae868SHans Verkuil  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1728cae868SHans Verkuil  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1828cae868SHans Verkuil  * GNU General Public License for more details.
1928cae868SHans Verkuil  */
2028cae868SHans Verkuil 
2128cae868SHans Verkuil #ifndef __SOLO6X10_JPEG_H
2228cae868SHans Verkuil #define __SOLO6X10_JPEG_H
2328cae868SHans Verkuil 
2428cae868SHans Verkuil static const unsigned char jpeg_header[] = {
2528cae868SHans Verkuil 	0xff, 0xd8, 0xff, 0xfe, 0x00, 0x0d, 0x42, 0x6c,
2628cae868SHans Verkuil 	0x75, 0x65, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79,
2728cae868SHans Verkuil 	0x20, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x20, 0x16,
2828cae868SHans Verkuil 	0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c, 0x1a, 0x1c,
2928cae868SHans Verkuil 	0x24, 0x22, 0x20, 0x26, 0x30, 0x50, 0x34, 0x30,
3028cae868SHans Verkuil 	0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a, 0x3a, 0x50,
3128cae868SHans Verkuil 	0x74, 0x66, 0x7a, 0x78, 0x72, 0x66, 0x70, 0x6e,
3228cae868SHans Verkuil 	0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88, 0xae, 0x8a,
3328cae868SHans Verkuil 	0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae, 0xbe, 0xc4,
3428cae868SHans Verkuil 	0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2, 0xf2, 0xe0,
3528cae868SHans Verkuil 	0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6, 0xff, 0xdb,
3628cae868SHans Verkuil 	0x00, 0x43, 0x01, 0x22, 0x24, 0x24, 0x30, 0x2a,
3728cae868SHans Verkuil 	0x30, 0x5e, 0x34, 0x34, 0x5e, 0xc6, 0x84, 0x70,
3828cae868SHans Verkuil 	0x84, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
3928cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
4028cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
4128cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
4228cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
4328cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
4428cae868SHans Verkuil 	0xc6, 0xc6, 0xc6, 0xff, 0xc4, 0x01, 0xa2, 0x00,
4528cae868SHans Verkuil 	0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01,
4628cae868SHans Verkuil 	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4728cae868SHans Verkuil 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
4828cae868SHans Verkuil 	0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01,
4928cae868SHans Verkuil 	0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04,
5028cae868SHans Verkuil 	0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03,
5128cae868SHans Verkuil 	0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41,
5228cae868SHans Verkuil 	0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14,
5328cae868SHans Verkuil 	0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1,
5428cae868SHans Verkuil 	0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62,
5528cae868SHans Verkuil 	0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19,
5628cae868SHans Verkuil 	0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34,
5728cae868SHans Verkuil 	0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44,
5828cae868SHans Verkuil 	0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54,
5928cae868SHans Verkuil 	0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64,
6028cae868SHans Verkuil 	0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74,
6128cae868SHans Verkuil 	0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84,
6228cae868SHans Verkuil 	0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93,
6328cae868SHans Verkuil 	0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2,
6428cae868SHans Verkuil 	0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa,
6528cae868SHans Verkuil 	0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
6628cae868SHans Verkuil 	0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8,
6728cae868SHans Verkuil 	0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
6828cae868SHans Verkuil 	0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5,
6928cae868SHans Verkuil 	0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3,
7028cae868SHans Verkuil 	0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x01,
7128cae868SHans Verkuil 	0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
7228cae868SHans Verkuil 	0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
7328cae868SHans Verkuil 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
7428cae868SHans Verkuil 	0x08, 0x09, 0x0a, 0x0b, 0x11, 0x00, 0x02, 0x01,
7528cae868SHans Verkuil 	0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04,
7628cae868SHans Verkuil 	0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02,
7728cae868SHans Verkuil 	0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12,
7828cae868SHans Verkuil 	0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32,
7928cae868SHans Verkuil 	0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1,
8028cae868SHans Verkuil 	0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72,
8128cae868SHans Verkuil 	0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1,
8228cae868SHans Verkuil 	0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29,
8328cae868SHans Verkuil 	0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43,
8428cae868SHans Verkuil 	0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53,
8528cae868SHans Verkuil 	0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63,
8628cae868SHans Verkuil 	0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73,
8728cae868SHans Verkuil 	0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82,
8828cae868SHans Verkuil 	0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a,
8928cae868SHans Verkuil 	0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
9028cae868SHans Verkuil 	0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
9128cae868SHans Verkuil 	0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
9228cae868SHans Verkuil 	0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
9328cae868SHans Verkuil 	0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5,
9428cae868SHans Verkuil 	0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4,
9528cae868SHans Verkuil 	0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3,
9628cae868SHans Verkuil 	0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff,
9728cae868SHans Verkuil 	0xc0, 0x00, 0x11, 0x08, 0x00, 0xf0, 0x02, 0xc0,
9828cae868SHans Verkuil 	0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03,
9928cae868SHans Verkuil 	0x11, 0x01, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01,
10028cae868SHans Verkuil 	0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
10128cae868SHans Verkuil };
10228cae868SHans Verkuil 
10328cae868SHans Verkuil /* This is the byte marker for the start of SOF0: 0xffc0 marker */
10428cae868SHans Verkuil #define SOF0_START	575
10528cae868SHans Verkuil 
10628cae868SHans Verkuil /* This is the byte marker for the start of the DQT */
10728cae868SHans Verkuil #define DQT_START	17
10828cae868SHans Verkuil #define DQT_LEN		138
10928cae868SHans Verkuil static const unsigned char jpeg_dqt[4][DQT_LEN] = {
11028cae868SHans Verkuil 	{
11128cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x00,
11228cae868SHans Verkuil 		0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07,
11328cae868SHans Verkuil 		0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14,
11428cae868SHans Verkuil 		0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13,
11528cae868SHans Verkuil 		0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a,
11628cae868SHans Verkuil 		0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22,
11728cae868SHans Verkuil 		0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c,
11828cae868SHans Verkuil 		0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, 0x39,
11928cae868SHans Verkuil 		0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32,
12028cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x01,
12128cae868SHans Verkuil 		0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d,
12228cae868SHans Verkuil 		0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32,
12328cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
12428cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
12528cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
12628cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
12728cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32,
12828cae868SHans Verkuil 		0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32
12928cae868SHans Verkuil 	}, {
13028cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x00,
13128cae868SHans Verkuil 		0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
13228cae868SHans Verkuil 		0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
13328cae868SHans Verkuil 		0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
13428cae868SHans Verkuil 		0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
13528cae868SHans Verkuil 		0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
13628cae868SHans Verkuil 		0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
13728cae868SHans Verkuil 		0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
13828cae868SHans Verkuil 		0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
13928cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x01,
14028cae868SHans Verkuil 		0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
14128cae868SHans Verkuil 		0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
14228cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
14328cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
14428cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
14528cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
14628cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
14728cae868SHans Verkuil 		0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63
14828cae868SHans Verkuil 	}, {
14928cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x00,
15028cae868SHans Verkuil 		0x20, 0x16, 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c,
15128cae868SHans Verkuil 		0x1a, 0x1c, 0x24, 0x22, 0x20, 0x26, 0x30, 0x50,
15228cae868SHans Verkuil 		0x34, 0x30, 0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a,
15328cae868SHans Verkuil 		0x3a, 0x50, 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66,
15428cae868SHans Verkuil 		0x70, 0x6e, 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88,
15528cae868SHans Verkuil 		0xae, 0x8a, 0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae,
15628cae868SHans Verkuil 		0xbe, 0xc4, 0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2,
15728cae868SHans Verkuil 		0xf2, 0xe0, 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6,
15828cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x01,
15928cae868SHans Verkuil 		0x22, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
16028cae868SHans Verkuil 		0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
16128cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
16228cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
16328cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
16428cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
16528cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
16628cae868SHans Verkuil 		0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6
16728cae868SHans Verkuil 	}, {
16828cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x00,
16928cae868SHans Verkuil 		0x30, 0x21, 0x24, 0x2a, 0x24, 0x1e, 0x30, 0x2a,
17028cae868SHans Verkuil 		0x27, 0x2a, 0x36, 0x33, 0x30, 0x39, 0x48, 0x78,
17128cae868SHans Verkuil 		0x4e, 0x48, 0x42, 0x42, 0x48, 0x93, 0x69, 0x6f,
17228cae868SHans Verkuil 		0x57, 0x78, 0xae, 0x99, 0xb7, 0xb4, 0xab, 0x99,
17328cae868SHans Verkuil 		0xa8, 0xa5, 0xc0, 0xd8, 0xff, 0xea, 0xc0, 0xcc,
17428cae868SHans Verkuil 		0xff, 0xcf, 0xa5, 0xa8, 0xf0, 0xff, 0xf3, 0xff,
17528cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xe7, 0xff,
17628cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
17728cae868SHans Verkuil 		0xff, 0xdb, 0x00, 0x43, 0x01,
17828cae868SHans Verkuil 		0x33, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
17928cae868SHans Verkuil 		0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
18028cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18128cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18228cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18328cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18428cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
18528cae868SHans Verkuil 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
18628cae868SHans Verkuil 	}
18728cae868SHans Verkuil };
18828cae868SHans Verkuil 
18928cae868SHans Verkuil #endif /* __SOLO6X10_JPEG_H */
190