1c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 228cae868SHans Verkuil /* 3*cf293a4fSAlexander 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