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