1 /* 2 * Intel Indeo 2 codec 3 * copyright (c) 2005 Konstantin Shishkov 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22 #ifndef AVCODEC_INDEO2DATA_H 23 #define AVCODEC_INDEO2DATA_H 24 25 #include <stdint.h> 26 27 #define IR2_CODES 143 28 static const uint8_t ir2_tab[IR2_CODES][2] = { 29 { 0x01, 3 }, { 0x02, 3 }, { 0x80, 3 }, { 0x03, 3 }, { 0x04, 5 }, 30 { 0x81, 5 }, { 0x05, 5 }, { 0x06, 5 }, { 0x82, 5 }, { 0x83, 5 }, 31 { 0x07, 5 }, { 0x08, 5 }, { 0x84, 6 }, { 0x09, 6 }, { 0x0A, 6 }, 32 { 0x0B, 6 }, { 0x0C, 6 }, { 0x0D, 6 }, { 0x0E, 6 }, { 0x85, 6 }, 33 { 0x0F, 8 }, { 0x10, 8 }, { 0x86, 8 }, { 0x87, 8 }, { 0x11, 8 }, 34 { 0x12, 8 }, { 0x13, 8 }, { 0x14, 8 }, { 0x88, 8 }, { 0x15, 8 }, 35 { 0x16, 8 }, { 0x89, 8 }, { 0x17, 8 }, { 0x18, 8 }, { 0x8A, 8 }, 36 { 0x19, 8 }, { 0x1A, 9 }, { 0x8B, 9 }, { 0x1B, 9 }, { 0x1C, 9 }, 37 { 0x8C, 9 }, { 0x1D, 9 }, { 0x1E, 9 }, { 0x8D, 9 }, { 0x1F, 9 }, 38 { 0x20, 9 }, { 0x8E, 9 }, { 0x21, 9 }, { 0x22, 9 }, { 0x8F, 9 }, 39 { 0x23, 9 }, { 0x24, 9 }, { 0x25, 10 }, { 0x26, 10 }, { 0x27, 10 }, 40 { 0x28, 10 }, { 0x29, 10 }, { 0x2A, 10 }, { 0x2B, 10 }, { 0x2C, 10 }, 41 { 0x2D, 10 }, { 0x2E, 10 }, { 0x2F, 10 }, { 0x30, 10 }, { 0x31, 10 }, 42 { 0x32, 10 }, { 0x33, 10 }, { 0x34, 10 }, { 0x35, 13 }, { 0x36, 13 }, 43 { 0x37, 13 }, { 0x38, 13 }, { 0x39, 13 }, { 0x3A, 13 }, { 0x3B, 13 }, 44 { 0x3C, 13 }, { 0x3D, 13 }, { 0x3E, 13 }, { 0x3F, 13 }, { 0x40, 13 }, 45 { 0x41, 13 }, { 0x42, 13 }, { 0x43, 13 }, { 0x44, 13 }, { 0x45, 13 }, 46 { 0x46, 13 }, { 0x47, 13 }, { 0x48, 13 }, { 0x49, 13 }, { 0x4A, 13 }, 47 { 0x4B, 13 }, { 0x4C, 13 }, { 0x4D, 13 }, { 0x4E, 13 }, { 0x4F, 13 }, 48 { 0x50, 13 }, { 0x51, 13 }, { 0x52, 13 }, { 0x53, 13 }, { 0x54, 13 }, 49 { 0x55, 13 }, { 0x56, 13 }, { 0x57, 13 }, { 0x58, 13 }, { 0x59, 13 }, 50 { 0x5A, 13 }, { 0x5B, 13 }, { 0x5C, 13 }, { 0x5D, 13 }, { 0x5E, 13 }, 51 { 0x5F, 13 }, { 0x60, 13 }, { 0x61, 13 }, { 0x62, 13 }, { 0x63, 13 }, 52 { 0x64, 13 }, { 0x65, 13 }, { 0x66, 13 }, { 0x67, 13 }, { 0x68, 13 }, 53 { 0x69, 13 }, { 0x6A, 13 }, { 0x6B, 13 }, { 0x6C, 13 }, { 0x6D, 13 }, 54 { 0x6E, 13 }, { 0x6F, 13 }, { 0x70, 13 }, { 0x71, 13 }, { 0x72, 13 }, 55 { 0x73, 13 }, { 0x74, 13 }, { 0x75, 14 }, { 0x76, 14 }, { 0x77, 14 }, 56 { 0x78, 14 }, { 0x79, 14 }, { 0x7A, 14 }, { 0x7B, 14 }, { 0x7C, 14 }, 57 { 0x7D, 14 }, { 0x7E, 14 }, { 0x7F, 14 }, 58 }; 59 60 static const uint8_t ir2_delta_table[4][256] = { 61 { 0x80, 0x80, 0x84, 0x84, 0x7C, 0x7C, 0x7F, 0x85, 62 0x81, 0x7B, 0x85, 0x7F, 0x7B, 0x81, 0x8C, 0x8C, 63 0x74, 0x74, 0x83, 0x8D, 0x7D, 0x73, 0x8D, 0x83, 64 0x73, 0x7D, 0x77, 0x89, 0x89, 0x77, 0x89, 0x77, 65 0x77, 0x89, 0x8C, 0x95, 0x74, 0x6B, 0x95, 0x8C, 66 0x6B, 0x74, 0x7C, 0x90, 0x84, 0x70, 0x90, 0x7C, 67 0x70, 0x84, 0x96, 0x96, 0x6A, 0x6A, 0x82, 0x98, 68 0x7E, 0x68, 0x98, 0x82, 0x68, 0x7E, 0x97, 0xA2, 69 0x69, 0x5E, 0xA2, 0x97, 0x5E, 0x69, 0xA2, 0xA2, 70 0x5E, 0x5E, 0x8B, 0xA3, 0x75, 0x5D, 0xA3, 0x8B, 71 0x5D, 0x75, 0x71, 0x95, 0x8F, 0x6B, 0x95, 0x71, 72 0x6B, 0x8F, 0x78, 0x9D, 0x88, 0x63, 0x9D, 0x78, 73 0x63, 0x88, 0x7F, 0xA7, 0x81, 0x59, 0xA7, 0x7F, 74 0x59, 0x81, 0xA4, 0xB1, 0x5C, 0x4F, 0xB1, 0xA4, 75 0x4F, 0x5C, 0x96, 0xB1, 0x6A, 0x4F, 0xB1, 0x96, 76 0x4F, 0x6A, 0xB2, 0xB2, 0x4E, 0x4E, 0x65, 0x9B, 77 0x9B, 0x65, 0x9B, 0x65, 0x65, 0x9B, 0x89, 0xB4, 78 0x77, 0x4C, 0xB4, 0x89, 0x4C, 0x77, 0x6A, 0xA3, 79 0x96, 0x5D, 0xA3, 0x6A, 0x5D, 0x96, 0x73, 0xAC, 80 0x8D, 0x54, 0xAC, 0x73, 0x54, 0x8D, 0xB4, 0xC3, 81 0x4C, 0x3D, 0xC3, 0xB4, 0x3D, 0x4C, 0xA4, 0xC3, 82 0x5C, 0x3D, 0xC3, 0xA4, 0x3D, 0x5C, 0xC4, 0xC4, 83 0x3C, 0x3C, 0x96, 0xC6, 0x6A, 0x3A, 0xC6, 0x96, 84 0x3A, 0x6A, 0x7C, 0xBA, 0x84, 0x46, 0xBA, 0x7C, 85 0x46, 0x84, 0x5B, 0xAB, 0xA5, 0x55, 0xAB, 0x5B, 86 0x55, 0xA5, 0x63, 0xB4, 0x9D, 0x4C, 0xB4, 0x63, 87 0x4C, 0x9D, 0x86, 0xCA, 0x7A, 0x36, 0xCA, 0x86, 88 0x36, 0x7A, 0xB6, 0xD7, 0x4A, 0x29, 0xD7, 0xB6, 89 0x29, 0x4A, 0xC8, 0xD7, 0x38, 0x29, 0xD7, 0xC8, 90 0x29, 0x38, 0xA4, 0xD8, 0x5C, 0x28, 0xD8, 0xA4, 91 0x28, 0x5C, 0x6C, 0xC1, 0x94, 0x3F, 0xC1, 0x6C, 92 0x3F, 0x94, 0xD9, 0xD9, 0x27, 0x27, 0x80, 0x80, }, 93 { 0x80, 0x80, 0x85, 0x85, 0x7B, 0x7B, 0x7E, 0x87, 94 0x82, 0x79, 0x87, 0x7E, 0x79, 0x82, 0x8F, 0x8F, 95 0x71, 0x71, 0x84, 0x8F, 0x7C, 0x71, 0x8F, 0x84, 96 0x71, 0x7C, 0x75, 0x8B, 0x8B, 0x75, 0x8B, 0x75, 97 0x75, 0x8B, 0x8E, 0x9A, 0x72, 0x66, 0x9A, 0x8E, 98 0x66, 0x72, 0x7B, 0x93, 0x85, 0x6D, 0x93, 0x7B, 99 0x6D, 0x85, 0x9B, 0x9B, 0x65, 0x65, 0x82, 0x9D, 100 0x7E, 0x63, 0x9D, 0x82, 0x63, 0x7E, 0x9B, 0xA8, 101 0x65, 0x58, 0xA8, 0x9B, 0x58, 0x65, 0xA9, 0xA9, 102 0x57, 0x57, 0x8D, 0xAA, 0x73, 0x56, 0xAA, 0x8D, 103 0x56, 0x73, 0x6E, 0x99, 0x92, 0x67, 0x99, 0x6E, 104 0x67, 0x92, 0x76, 0xA2, 0x8A, 0x5E, 0xA2, 0x76, 105 0x5E, 0x8A, 0x7F, 0xAF, 0x81, 0x51, 0xAF, 0x7F, 106 0x51, 0x81, 0xAB, 0xBA, 0x55, 0x46, 0xBA, 0xAB, 107 0x46, 0x55, 0x9A, 0xBB, 0x66, 0x45, 0xBB, 0x9A, 108 0x45, 0x66, 0xBB, 0xBB, 0x45, 0x45, 0x60, 0xA0, 109 0xA0, 0x60, 0xA0, 0x60, 0x60, 0xA0, 0x8B, 0xBE, 110 0x75, 0x42, 0xBE, 0x8B, 0x42, 0x75, 0x66, 0xAA, 111 0x9A, 0x56, 0xAA, 0x66, 0x56, 0x9A, 0x70, 0xB5, 112 0x90, 0x4B, 0xB5, 0x70, 0x4B, 0x90, 0xBE, 0xCF, 113 0x42, 0x31, 0xCF, 0xBE, 0x31, 0x42, 0xAB, 0xD0, 114 0x55, 0x30, 0xD0, 0xAB, 0x30, 0x55, 0xD1, 0xD1, 115 0x2F, 0x2F, 0x9A, 0xD3, 0x66, 0x2D, 0xD3, 0x9A, 116 0x2D, 0x66, 0x7B, 0xC5, 0x85, 0x3B, 0xC5, 0x7B, 117 0x3B, 0x85, 0x54, 0xB4, 0xAC, 0x4C, 0xB4, 0x54, 118 0x4C, 0xAC, 0x5E, 0xBE, 0xA2, 0x42, 0xBE, 0x5E, 119 0x42, 0xA2, 0x87, 0xD8, 0x79, 0x28, 0xD8, 0x87, 120 0x28, 0x79, 0xC0, 0xE8, 0x40, 0x18, 0xE8, 0xC0, 121 0x18, 0x40, 0xD5, 0xE8, 0x2B, 0x18, 0xE8, 0xD5, 122 0x18, 0x2B, 0xAB, 0xE9, 0x55, 0x17, 0xE9, 0xAB, 123 0x17, 0x55, 0x68, 0xCD, 0x98, 0x33, 0xCD, 0x68, 124 0x33, 0x98, 0xEA, 0xEA, 0x16, 0x16, 0x80, 0x80, }, 125 { 0x80, 0x80, 0x86, 0x86, 0x7A, 0x7A, 0x7E, 0x88, 126 0x82, 0x78, 0x88, 0x7E, 0x78, 0x82, 0x92, 0x92, 127 0x6E, 0x6E, 0x85, 0x92, 0x7B, 0x6E, 0x92, 0x85, 128 0x6E, 0x7B, 0x73, 0x8D, 0x8D, 0x73, 0x8D, 0x73, 129 0x73, 0x8D, 0x91, 0x9E, 0x6F, 0x62, 0x9E, 0x91, 130 0x62, 0x6F, 0x79, 0x97, 0x87, 0x69, 0x97, 0x79, 131 0x69, 0x87, 0xA0, 0xA0, 0x60, 0x60, 0x83, 0xA2, 132 0x7D, 0x5E, 0xA2, 0x83, 0x5E, 0x7D, 0xA0, 0xB0, 133 0x60, 0x50, 0xB0, 0xA0, 0x50, 0x60, 0xB1, 0xB1, 134 0x4F, 0x4F, 0x8F, 0xB2, 0x71, 0x4E, 0xB2, 0x8F, 135 0x4E, 0x71, 0x6B, 0x9E, 0x95, 0x62, 0x9E, 0x6B, 136 0x62, 0x95, 0x74, 0xA9, 0x8C, 0x57, 0xA9, 0x74, 137 0x57, 0x8C, 0x7F, 0xB8, 0x81, 0x48, 0xB8, 0x7F, 138 0x48, 0x81, 0xB4, 0xC5, 0x4C, 0x3B, 0xC5, 0xB4, 139 0x3B, 0x4C, 0x9F, 0xC6, 0x61, 0x3A, 0xC6, 0x9F, 140 0x3A, 0x61, 0xC6, 0xC6, 0x3A, 0x3A, 0x59, 0xA7, 141 0xA7, 0x59, 0xA7, 0x59, 0x59, 0xA7, 0x8D, 0xCA, 142 0x73, 0x36, 0xCA, 0x8D, 0x36, 0x73, 0x61, 0xB2, 143 0x9F, 0x4E, 0xB2, 0x61, 0x4E, 0x9F, 0x6D, 0xBF, 144 0x93, 0x41, 0xBF, 0x6D, 0x41, 0x93, 0xCA, 0xDF, 145 0x36, 0x21, 0xDF, 0xCA, 0x21, 0x36, 0xB3, 0xDF, 146 0x4D, 0x21, 0xDF, 0xB3, 0x21, 0x4D, 0xE1, 0xE1, 147 0x1F, 0x1F, 0x9F, 0xE3, 0x61, 0x1D, 0xE3, 0x9F, 148 0x1D, 0x61, 0x7A, 0xD3, 0x86, 0x2D, 0xD3, 0x7A, 149 0x2D, 0x86, 0x4C, 0xBE, 0xB4, 0x42, 0xBE, 0x4C, 150 0x42, 0xB4, 0x57, 0xCA, 0xA9, 0x36, 0xCA, 0x57, 151 0x36, 0xA9, 0x88, 0xE9, 0x78, 0x17, 0xE9, 0x88, 152 0x17, 0x78, 0xCC, 0xFB, 0x34, 0x05, 0xFB, 0xCC, 153 0x05, 0x34, 0xE6, 0xFB, 0x1A, 0x05, 0xFB, 0xE6, 154 0x05, 0x1A, 0xB4, 0xFD, 0x4C, 0x03, 0xFD, 0xB4, 155 0x03, 0x4C, 0x63, 0xDC, 0x9D, 0x24, 0xDC, 0x63, 156 0x24, 0x9D, 0xFE, 0xFE, 0x02, 0x02, 0x80, 0x80, }, 157 { 0x80, 0x80, 0x87, 0x87, 0x79, 0x79, 0x7E, 0x89, 158 0x82, 0x77, 0x89, 0x7E, 0x77, 0x82, 0x95, 0x95, 159 0x6B, 0x6B, 0x86, 0x96, 0x7A, 0x6A, 0x96, 0x86, 160 0x6A, 0x7A, 0x70, 0x90, 0x90, 0x70, 0x90, 0x70, 161 0x70, 0x90, 0x94, 0xA4, 0x6C, 0x5C, 0xA4, 0x94, 162 0x5C, 0x6C, 0x78, 0x9B, 0x88, 0x65, 0x9B, 0x78, 163 0x65, 0x88, 0xA6, 0xA6, 0x5A, 0x5A, 0x83, 0xA9, 164 0x7D, 0x57, 0xA9, 0x83, 0x57, 0x7D, 0xA6, 0xB9, 165 0x5A, 0x47, 0xB9, 0xA6, 0x47, 0x5A, 0xBA, 0xBA, 166 0x46, 0x46, 0x92, 0xBC, 0x6E, 0x44, 0xBC, 0x92, 167 0x44, 0x6E, 0x67, 0xA3, 0x99, 0x5D, 0xA3, 0x67, 168 0x5D, 0x99, 0x72, 0xB0, 0x8E, 0x50, 0xB0, 0x72, 169 0x50, 0x8E, 0x7F, 0xC3, 0x81, 0x3D, 0xC3, 0x7F, 170 0x3D, 0x81, 0xBE, 0xD2, 0x42, 0x2E, 0xD2, 0xBE, 171 0x2E, 0x42, 0xA5, 0xD4, 0x5B, 0x2C, 0xD4, 0xA5, 172 0x2C, 0x5B, 0xD4, 0xD4, 0x2C, 0x2C, 0x52, 0xAE, 173 0xAE, 0x52, 0xAE, 0x52, 0x52, 0xAE, 0x8F, 0xD8, 174 0x71, 0x28, 0xD8, 0x8F, 0x28, 0x71, 0x5B, 0xBB, 175 0xA5, 0x45, 0xBB, 0x5B, 0x45, 0xA5, 0x69, 0xCB, 176 0x97, 0x35, 0xCB, 0x69, 0x35, 0x97, 0xD8, 0xF0, 177 0x28, 0x10, 0xF0, 0xD8, 0x10, 0x28, 0xBD, 0xF1, 178 0x43, 0x0F, 0xF1, 0xBD, 0x0F, 0x43, 0xF3, 0xF3, 179 0x0D, 0x0D, 0xA5, 0xF6, 0x5B, 0x0A, 0xF6, 0xA5, 180 0x0A, 0x5B, 0x78, 0xE2, 0x88, 0x1E, 0xE2, 0x78, 181 0x1E, 0x88, 0x42, 0xC9, 0xBE, 0x37, 0xC9, 0x42, 182 0x37, 0xBE, 0x4F, 0xD8, 0xB1, 0x28, 0xD8, 0x4F, 183 0x28, 0xB1, 0x8A, 0xFD, 0x76, 0x03, 0xFD, 0x8A, 184 0x03, 0x76, 0xDB, 0xFF, 0x25, 0x01, 0xFF, 0xDB, 185 0x01, 0x25, 0xF9, 0xFF, 0x07, 0x01, 0xFF, 0xF9, 186 0x01, 0x07, 0xBE, 0xFF, 0x42, 0x01, 0xFF, 0xBE, 187 0x01, 0x42, 0x5E, 0xED, 0xA2, 0x13, 0xED, 0x5E, 188 0x13, 0xA2, 0xFF, 0xFF, 0x01, 0x01, 0x80, 0x80, }, 189 }; 190 191 #endif /* AVCODEC_INDEO2DATA_H */ 192