1 /* 2 * Copyright (C) 2010-2013 Bluecherry, LLC <http://www.bluecherrydvr.com> 3 * 4 * Original author: 5 * Ben Collins <bcollins@ubuntu.com> 6 * 7 * Additional work by: 8 * John Brooks <john.brooks@bluecherry.net> 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 */ 20 21 #ifndef __SOLO6X10_JPEG_H 22 #define __SOLO6X10_JPEG_H 23 24 static const unsigned char jpeg_header[] = { 25 0xff, 0xd8, 0xff, 0xfe, 0x00, 0x0d, 0x42, 0x6c, 26 0x75, 0x65, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, 27 0x20, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x20, 0x16, 28 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c, 0x1a, 0x1c, 29 0x24, 0x22, 0x20, 0x26, 0x30, 0x50, 0x34, 0x30, 30 0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a, 0x3a, 0x50, 31 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66, 0x70, 0x6e, 32 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88, 0xae, 0x8a, 33 0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae, 0xbe, 0xc4, 34 0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2, 0xf2, 0xe0, 35 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6, 0xff, 0xdb, 36 0x00, 0x43, 0x01, 0x22, 0x24, 0x24, 0x30, 0x2a, 37 0x30, 0x5e, 0x34, 0x34, 0x5e, 0xc6, 0x84, 0x70, 38 0x84, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 39 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 40 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 41 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 42 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 43 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 44 0xc6, 0xc6, 0xc6, 0xff, 0xc4, 0x01, 0xa2, 0x00, 45 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 46 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 48 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 49 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 50 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 51 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 52 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 53 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 54 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 55 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 56 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 57 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 58 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 59 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 60 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 61 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 62 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 63 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 64 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 65 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 66 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 67 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 68 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 69 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 70 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x01, 71 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 72 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 73 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 74 0x08, 0x09, 0x0a, 0x0b, 0x11, 0x00, 0x02, 0x01, 75 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 76 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 77 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 78 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 79 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 80 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 81 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 82 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 83 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 84 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 85 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 86 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 87 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 88 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 89 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 90 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 91 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 92 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 93 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 94 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 95 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 96 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 97 0xc0, 0x00, 0x11, 0x08, 0x00, 0xf0, 0x02, 0xc0, 98 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 99 0x11, 0x01, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 100 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00 101 }; 102 103 /* This is the byte marker for the start of SOF0: 0xffc0 marker */ 104 #define SOF0_START 575 105 106 /* This is the byte marker for the start of the DQT */ 107 #define DQT_START 17 108 #define DQT_LEN 138 109 static const unsigned char jpeg_dqt[4][DQT_LEN] = { 110 { 111 0xff, 0xdb, 0x00, 0x43, 0x00, 112 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, 0x07, 113 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14, 114 0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13, 115 0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, 0x1a, 116 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22, 117 0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c, 118 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, 0x39, 119 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32, 120 0xff, 0xdb, 0x00, 0x43, 0x01, 121 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d, 122 0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, 123 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 124 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 125 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 126 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 127 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 128 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32 129 }, { 130 0xff, 0xdb, 0x00, 0x43, 0x00, 131 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e, 132 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28, 133 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25, 134 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33, 135 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44, 136 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57, 137 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71, 138 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63, 139 0xff, 0xdb, 0x00, 0x43, 0x01, 140 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a, 141 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63, 142 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 143 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 144 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 145 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 146 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 147 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63 148 }, { 149 0xff, 0xdb, 0x00, 0x43, 0x00, 150 0x20, 0x16, 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c, 151 0x1a, 0x1c, 0x24, 0x22, 0x20, 0x26, 0x30, 0x50, 152 0x34, 0x30, 0x2c, 0x2c, 0x30, 0x62, 0x46, 0x4a, 153 0x3a, 0x50, 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66, 154 0x70, 0x6e, 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88, 155 0xae, 0x8a, 0x6e, 0x70, 0xa0, 0xda, 0xa2, 0xae, 156 0xbe, 0xc4, 0xce, 0xd0, 0xce, 0x7c, 0x9a, 0xe2, 157 0xf2, 0xe0, 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6, 158 0xff, 0xdb, 0x00, 0x43, 0x01, 159 0x22, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34, 160 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6, 161 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 162 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 163 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 164 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 165 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 166 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6 167 }, { 168 0xff, 0xdb, 0x00, 0x43, 0x00, 169 0x30, 0x21, 0x24, 0x2a, 0x24, 0x1e, 0x30, 0x2a, 170 0x27, 0x2a, 0x36, 0x33, 0x30, 0x39, 0x48, 0x78, 171 0x4e, 0x48, 0x42, 0x42, 0x48, 0x93, 0x69, 0x6f, 172 0x57, 0x78, 0xae, 0x99, 0xb7, 0xb4, 0xab, 0x99, 173 0xa8, 0xa5, 0xc0, 0xd8, 0xff, 0xea, 0xc0, 0xcc, 174 0xff, 0xcf, 0xa5, 0xa8, 0xf0, 0xff, 0xf3, 0xff, 175 0xff, 0xff, 0xff, 0xff, 0xff, 0xba, 0xe7, 0xff, 176 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 177 0xff, 0xdb, 0x00, 0x43, 0x01, 178 0x33, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e, 179 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff, 180 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 181 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 182 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 183 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 184 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 185 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 186 } 187 }; 188 189 #endif /* __SOLO6X10_JPEG_H */ 190