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