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