1 /* 2 * MSMPEG4 backend for encoder and decoder 3 * copyright (c) 2001 Fabrice Bellard 4 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> 5 * 6 * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at> 7 * 8 * This file is part of FFmpeg. 9 * 10 * FFmpeg is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU Lesser General Public 12 * License as published by the Free Software Foundation; either 13 * version 2.1 of the License, or (at your option) any later version. 14 * 15 * FFmpeg 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 GNU 18 * Lesser General Public License for more details. 19 * 20 * You should have received a copy of the GNU Lesser General Public 21 * License along with FFmpeg; if not, write to the Free Software 22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 23 */ 24 25 /** 26 * @file 27 * MSMPEG4 data tables. 28 */ 29 30 #include "h263.h" 31 #include "mpeg4video.h" 32 #include "msmpeg4data.h" 33 34 uint32_t ff_v2_dc_lum_table[512][2]; 35 uint32_t ff_v2_dc_chroma_table[512][2]; 36 uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3]; 37 38 VLC ff_msmp4_mb_i_vlc; 39 VLC ff_msmp4_dc_luma_vlc[2]; 40 VLC ff_msmp4_dc_chroma_vlc[2]; 41 42 /* intra picture macroblock coded block pattern */ 43 const uint16_t ff_msmp4_mb_i_table[64][2] = { 44 { 0x1, 1 }, { 0x17, 6 }, { 0x9, 5 }, { 0x5, 5 }, 45 { 0x6, 5 }, { 0x47, 9 }, { 0x20, 7 }, { 0x10, 7 }, 46 { 0x2, 5 }, { 0x7c, 9 }, { 0x3a, 7 }, { 0x1d, 7 }, 47 { 0x2, 6 }, { 0xec, 9 }, { 0x77, 8 }, { 0x0, 8 }, 48 { 0x3, 5 }, { 0xb7, 9 }, { 0x2c, 7 }, { 0x13, 7 }, 49 { 0x1, 6 }, { 0x168, 10 }, { 0x46, 8 }, { 0x3f, 8 }, 50 { 0x1e, 6 }, { 0x712, 13 }, { 0xb5, 9 }, { 0x42, 8 }, 51 { 0x22, 7 }, { 0x1c5, 11 }, { 0x11e, 10 }, { 0x87, 9 }, 52 { 0x6, 4 }, { 0x3, 9 }, { 0x1e, 7 }, { 0x1c, 6 }, 53 { 0x12, 7 }, { 0x388, 12 }, { 0x44, 9 }, { 0x70, 9 }, 54 { 0x1f, 6 }, { 0x23e, 11 }, { 0x39, 8 }, { 0x8e, 9 }, 55 { 0x1, 7 }, { 0x1c6, 11 }, { 0xb6, 9 }, { 0x45, 9 }, 56 { 0x14, 6 }, { 0x23f, 11 }, { 0x7d, 9 }, { 0x18, 9 }, 57 { 0x7, 7 }, { 0x1c7, 11 }, { 0x86, 9 }, { 0x19, 9 }, 58 { 0x15, 6 }, { 0x1db, 10 }, { 0x2, 9 }, { 0x46, 9 }, 59 { 0xd, 8 }, { 0x713, 13 }, { 0x1da, 10 }, { 0x169, 10 }, 60 }; 61 62 /* non intra picture macroblock coded block pattern + mb type */ 63 const uint32_t ff_table_mb_non_intra[128][2] = { 64 { 0x40, 7 }, { 0x13c9, 13 }, { 0x9fd, 12 }, { 0x1fc, 15 }, 65 { 0x9fc, 12 }, { 0xa83, 18 }, { 0x12d34, 17 }, { 0x83bc, 16 }, 66 { 0x83a, 12 }, { 0x7f8, 17 }, { 0x3fd, 16 }, { 0x3ff, 16 }, 67 { 0x79, 13 }, { 0xa82, 18 }, { 0x969d, 16 }, { 0x2a4, 16 }, 68 { 0x978, 12 }, { 0x543, 17 }, { 0x41df, 15 }, { 0x7f9, 17 }, 69 { 0x12f3, 13 }, { 0x25a6b, 18 }, { 0x25ef9, 18 }, { 0x3fa, 16 }, 70 { 0x20ee, 14 }, { 0x969ab, 20 }, { 0x969c, 16 }, { 0x25ef8, 18 }, 71 { 0x12d2, 13 }, { 0xa85, 18 }, { 0x969e, 16 }, { 0x4bc8, 15 }, 72 { 0x3d, 12 }, { 0x12f7f, 17 }, { 0x2a2, 16 }, { 0x969f, 16 }, 73 { 0x25ee, 14 }, { 0x12d355, 21 }, { 0x12f7d, 17 }, { 0x12f7e, 17 }, 74 { 0x9e5, 12 }, { 0xa81, 18 }, { 0x4b4d4, 19 }, { 0x83bd, 16 }, 75 { 0x78, 13 }, { 0x969b, 16 }, { 0x3fe, 16 }, { 0x2a5, 16 }, 76 { 0x7e, 13 }, { 0xa80, 18 }, { 0x2a3, 16 }, { 0x3fb, 16 }, 77 { 0x1076, 13 }, { 0xa84, 18 }, { 0x153, 15 }, { 0x4bc9, 15 }, 78 { 0x55, 13 }, { 0x12d354, 21 }, { 0x4bde, 15 }, { 0x25e5, 14 }, 79 { 0x25b, 10 }, { 0x4b4c, 15 }, { 0x96b, 12 }, { 0x96a, 12 }, 80 { 0x1, 2 }, { 0x0, 7 }, { 0x26, 6 }, { 0x12b, 9 }, 81 { 0x7, 3 }, { 0x20f, 10 }, { 0x4, 9 }, { 0x28, 12 }, 82 { 0x6, 3 }, { 0x20a, 10 }, { 0x128, 9 }, { 0x2b, 12 }, 83 { 0x11, 5 }, { 0x1b, 11 }, { 0x13a, 9 }, { 0x4ff, 11 }, 84 { 0x3, 4 }, { 0x277, 10 }, { 0x106, 9 }, { 0x839, 12 }, 85 { 0xb, 4 }, { 0x27b, 10 }, { 0x12c, 9 }, { 0x4bf, 11 }, 86 { 0x9, 6 }, { 0x35, 12 }, { 0x27e, 10 }, { 0x13c8, 13 }, 87 { 0x1, 6 }, { 0x4aa, 11 }, { 0x208, 10 }, { 0x29, 12 }, 88 { 0x1, 4 }, { 0x254, 10 }, { 0x12e, 9 }, { 0x838, 12 }, 89 { 0x24, 6 }, { 0x4f3, 11 }, { 0x276, 10 }, { 0x12f6, 13 }, 90 { 0x1, 5 }, { 0x27a, 10 }, { 0x13e, 9 }, { 0x3e, 12 }, 91 { 0x8, 6 }, { 0x413, 11 }, { 0xc, 10 }, { 0x4be, 11 }, 92 { 0x14, 5 }, { 0x412, 11 }, { 0x253, 10 }, { 0x97a, 12 }, 93 { 0x21, 6 }, { 0x4ab, 11 }, { 0x20b, 10 }, { 0x34, 12 }, 94 { 0x15, 5 }, { 0x278, 10 }, { 0x252, 10 }, { 0x968, 12 }, 95 { 0x5, 5 }, { 0xb, 10 }, { 0x9c, 8 }, { 0xe, 10 }, 96 }; 97 98 /* dc table 0 */ 99 100 const uint32_t ff_table0_dc_lum[120][2] = { 101 { 0x1, 1 }, { 0x1, 2 }, { 0x1, 4 }, { 0x1, 5 }, 102 { 0x5, 5 }, { 0x7, 5 }, { 0x8, 6 }, { 0xc, 6 }, 103 { 0x0, 7 }, { 0x2, 7 }, { 0x12, 7 }, { 0x1a, 7 }, 104 { 0x3, 8 }, { 0x7, 8 }, { 0x27, 8 }, { 0x37, 8 }, 105 { 0x5, 9 }, { 0x4c, 9 }, { 0x6c, 9 }, { 0x6d, 9 }, 106 { 0x8, 10 }, { 0x19, 10 }, { 0x9b, 10 }, { 0x1b, 10 }, 107 { 0x9a, 10 }, { 0x13, 11 }, { 0x34, 11 }, { 0x35, 11 }, 108 { 0x61, 12 }, { 0x48, 13 }, { 0xc4, 13 }, { 0x4a, 13 }, 109 { 0xc6, 13 }, { 0xc7, 13 }, { 0x92, 14 }, { 0x18b, 14 }, 110 { 0x93, 14 }, { 0x183, 14 }, { 0x182, 14 }, { 0x96, 14 }, 111 { 0x97, 14 }, { 0x180, 14 }, { 0x314, 15 }, { 0x315, 15 }, 112 { 0x605, 16 }, { 0x604, 16 }, { 0x606, 16 }, { 0xc0e, 17 }, 113 { 0x303cd, 23 }, { 0x303c9, 23 }, { 0x303c8, 23 }, { 0x303ca, 23 }, 114 { 0x303cb, 23 }, { 0x303cc, 23 }, { 0x303ce, 23 }, { 0x303cf, 23 }, 115 { 0x303d0, 23 }, { 0x303d1, 23 }, { 0x303d2, 23 }, { 0x303d3, 23 }, 116 { 0x303d4, 23 }, { 0x303d5, 23 }, { 0x303d6, 23 }, { 0x303d7, 23 }, 117 { 0x303d8, 23 }, { 0x303d9, 23 }, { 0x303da, 23 }, { 0x303db, 23 }, 118 { 0x303dc, 23 }, { 0x303dd, 23 }, { 0x303de, 23 }, { 0x303df, 23 }, 119 { 0x303e0, 23 }, { 0x303e1, 23 }, { 0x303e2, 23 }, { 0x303e3, 23 }, 120 { 0x303e4, 23 }, { 0x303e5, 23 }, { 0x303e6, 23 }, { 0x303e7, 23 }, 121 { 0x303e8, 23 }, { 0x303e9, 23 }, { 0x303ea, 23 }, { 0x303eb, 23 }, 122 { 0x303ec, 23 }, { 0x303ed, 23 }, { 0x303ee, 23 }, { 0x303ef, 23 }, 123 { 0x303f0, 23 }, { 0x303f1, 23 }, { 0x303f2, 23 }, { 0x303f3, 23 }, 124 { 0x303f4, 23 }, { 0x303f5, 23 }, { 0x303f6, 23 }, { 0x303f7, 23 }, 125 { 0x303f8, 23 }, { 0x303f9, 23 }, { 0x303fa, 23 }, { 0x303fb, 23 }, 126 { 0x303fc, 23 }, { 0x303fd, 23 }, { 0x303fe, 23 }, { 0x303ff, 23 }, 127 { 0x60780, 24 }, { 0x60781, 24 }, { 0x60782, 24 }, { 0x60783, 24 }, 128 { 0x60784, 24 }, { 0x60785, 24 }, { 0x60786, 24 }, { 0x60787, 24 }, 129 { 0x60788, 24 }, { 0x60789, 24 }, { 0x6078a, 24 }, { 0x6078b, 24 }, 130 { 0x6078c, 24 }, { 0x6078d, 24 }, { 0x6078e, 24 }, { 0x6078f, 24 }, 131 }; 132 133 const uint32_t ff_table0_dc_chroma[120][2] = { 134 { 0x0, 2 }, { 0x1, 2 }, { 0x5, 3 }, { 0x9, 4 }, 135 { 0xd, 4 }, { 0x11, 5 }, { 0x1d, 5 }, { 0x1f, 5 }, 136 { 0x21, 6 }, { 0x31, 6 }, { 0x38, 6 }, { 0x33, 6 }, 137 { 0x39, 6 }, { 0x3d, 6 }, { 0x61, 7 }, { 0x79, 7 }, 138 { 0x80, 8 }, { 0xc8, 8 }, { 0xca, 8 }, { 0xf0, 8 }, 139 { 0x81, 8 }, { 0xc0, 8 }, { 0xc9, 8 }, { 0x107, 9 }, 140 { 0x106, 9 }, { 0x196, 9 }, { 0x183, 9 }, { 0x1e3, 9 }, 141 { 0x1e2, 9 }, { 0x20a, 10 }, { 0x20b, 10 }, { 0x609, 11 }, 142 { 0x412, 11 }, { 0x413, 11 }, { 0x60b, 11 }, { 0x411, 11 }, 143 { 0x60a, 11 }, { 0x65f, 11 }, { 0x410, 11 }, { 0x65d, 11 }, 144 { 0x65e, 11 }, { 0xcb8, 12 }, { 0xc10, 12 }, { 0xcb9, 12 }, 145 { 0x1823, 13 }, { 0x3045, 14 }, { 0x6089, 15 }, { 0xc110, 16 }, 146 { 0x304448, 22 }, { 0x304449, 22 }, { 0x30444a, 22 }, { 0x30444b, 22 }, 147 { 0x30444c, 22 }, { 0x30444d, 22 }, { 0x30444e, 22 }, { 0x30444f, 22 }, 148 { 0x304450, 22 }, { 0x304451, 22 }, { 0x304452, 22 }, { 0x304453, 22 }, 149 { 0x304454, 22 }, { 0x304455, 22 }, { 0x304456, 22 }, { 0x304457, 22 }, 150 { 0x304458, 22 }, { 0x304459, 22 }, { 0x30445a, 22 }, { 0x30445b, 22 }, 151 { 0x30445c, 22 }, { 0x30445d, 22 }, { 0x30445e, 22 }, { 0x30445f, 22 }, 152 { 0x304460, 22 }, { 0x304461, 22 }, { 0x304462, 22 }, { 0x304463, 22 }, 153 { 0x304464, 22 }, { 0x304465, 22 }, { 0x304466, 22 }, { 0x304467, 22 }, 154 { 0x304468, 22 }, { 0x304469, 22 }, { 0x30446a, 22 }, { 0x30446b, 22 }, 155 { 0x30446c, 22 }, { 0x30446d, 22 }, { 0x30446e, 22 }, { 0x30446f, 22 }, 156 { 0x304470, 22 }, { 0x304471, 22 }, { 0x304472, 22 }, { 0x304473, 22 }, 157 { 0x304474, 22 }, { 0x304475, 22 }, { 0x304476, 22 }, { 0x304477, 22 }, 158 { 0x304478, 22 }, { 0x304479, 22 }, { 0x30447a, 22 }, { 0x30447b, 22 }, 159 { 0x30447c, 22 }, { 0x30447d, 22 }, { 0x30447e, 22 }, { 0x30447f, 22 }, 160 { 0x608880, 23 }, { 0x608881, 23 }, { 0x608882, 23 }, { 0x608883, 23 }, 161 { 0x608884, 23 }, { 0x608885, 23 }, { 0x608886, 23 }, { 0x608887, 23 }, 162 { 0x608888, 23 }, { 0x608889, 23 }, { 0x60888a, 23 }, { 0x60888b, 23 }, 163 { 0x60888c, 23 }, { 0x60888d, 23 }, { 0x60888e, 23 }, { 0x60888f, 23 }, 164 }; 165 166 /* dc table 1 */ 167 168 const uint32_t ff_table1_dc_lum[120][2] = { 169 { 0x2, 2 }, { 0x3, 2 }, { 0x3, 3 }, { 0x2, 4 }, 170 { 0x5, 4 }, { 0x1, 5 }, { 0x3, 5 }, { 0x8, 5 }, 171 { 0x0, 6 }, { 0x5, 6 }, { 0xd, 6 }, { 0xf, 6 }, 172 { 0x13, 6 }, { 0x8, 7 }, { 0x18, 7 }, { 0x1c, 7 }, 173 { 0x24, 7 }, { 0x4, 8 }, { 0x6, 8 }, { 0x12, 8 }, 174 { 0x32, 8 }, { 0x3b, 8 }, { 0x4a, 8 }, { 0x4b, 8 }, 175 { 0xb, 9 }, { 0x26, 9 }, { 0x27, 9 }, { 0x66, 9 }, 176 { 0x74, 9 }, { 0x75, 9 }, { 0x14, 10 }, { 0x1c, 10 }, 177 { 0x1f, 10 }, { 0x1d, 10 }, { 0x2b, 11 }, { 0x3d, 11 }, 178 { 0x19d, 11 }, { 0x19f, 11 }, { 0x54, 12 }, { 0x339, 12 }, 179 { 0x338, 12 }, { 0x33d, 12 }, { 0xab, 13 }, { 0xf1, 13 }, 180 { 0x678, 13 }, { 0xf2, 13 }, { 0x1e0, 14 }, { 0x1e1, 14 }, 181 { 0x154, 14 }, { 0xcf2, 14 }, { 0x3cc, 15 }, { 0x2ab, 15 }, 182 { 0x19e7, 15 }, { 0x3ce, 15 }, { 0x19e6, 15 }, { 0x554, 16 }, 183 { 0x79f, 16 }, { 0x555, 16 }, { 0xf3d, 17 }, { 0xf37, 17 }, 184 { 0xf3c, 17 }, { 0xf35, 17 }, { 0x1e6d, 18 }, { 0x1e68, 18 }, 185 { 0x3cd8, 19 }, { 0x3cd3, 19 }, { 0x3cd9, 19 }, { 0x79a4, 20 }, 186 { 0xf34ba, 25 }, { 0xf34b4, 25 }, { 0xf34b5, 25 }, { 0xf34b6, 25 }, 187 { 0xf34b7, 25 }, { 0xf34b8, 25 }, { 0xf34b9, 25 }, { 0xf34bb, 25 }, 188 { 0xf34bc, 25 }, { 0xf34bd, 25 }, { 0xf34be, 25 }, { 0xf34bf, 25 }, 189 { 0x1e6940, 26 }, { 0x1e6941, 26 }, { 0x1e6942, 26 }, { 0x1e6943, 26 }, 190 { 0x1e6944, 26 }, { 0x1e6945, 26 }, { 0x1e6946, 26 }, { 0x1e6947, 26 }, 191 { 0x1e6948, 26 }, { 0x1e6949, 26 }, { 0x1e694a, 26 }, { 0x1e694b, 26 }, 192 { 0x1e694c, 26 }, { 0x1e694d, 26 }, { 0x1e694e, 26 }, { 0x1e694f, 26 }, 193 { 0x1e6950, 26 }, { 0x1e6951, 26 }, { 0x1e6952, 26 }, { 0x1e6953, 26 }, 194 { 0x1e6954, 26 }, { 0x1e6955, 26 }, { 0x1e6956, 26 }, { 0x1e6957, 26 }, 195 { 0x1e6958, 26 }, { 0x1e6959, 26 }, { 0x1e695a, 26 }, { 0x1e695b, 26 }, 196 { 0x1e695c, 26 }, { 0x1e695d, 26 }, { 0x1e695e, 26 }, { 0x1e695f, 26 }, 197 { 0x1e6960, 26 }, { 0x1e6961, 26 }, { 0x1e6962, 26 }, { 0x1e6963, 26 }, 198 { 0x1e6964, 26 }, { 0x1e6965, 26 }, { 0x1e6966, 26 }, { 0x1e6967, 26 }, 199 }; 200 201 const uint32_t ff_table1_dc_chroma[120][2] = { 202 { 0x0, 2 }, { 0x1, 2 }, { 0x4, 3 }, { 0x7, 3 }, 203 { 0xb, 4 }, { 0xd, 4 }, { 0x15, 5 }, { 0x28, 6 }, 204 { 0x30, 6 }, { 0x32, 6 }, { 0x52, 7 }, { 0x62, 7 }, 205 { 0x66, 7 }, { 0xa6, 8 }, { 0xc6, 8 }, { 0xcf, 8 }, 206 { 0x14f, 9 }, { 0x18e, 9 }, { 0x19c, 9 }, { 0x29d, 10 }, 207 { 0x33a, 10 }, { 0x538, 11 }, { 0x63c, 11 }, { 0x63e, 11 }, 208 { 0x63f, 11 }, { 0x676, 11 }, { 0xa73, 12 }, { 0xc7a, 12 }, 209 { 0xcef, 12 }, { 0x14e5, 13 }, { 0x19dd, 13 }, { 0x29c8, 14 }, 210 { 0x29c9, 14 }, { 0x63dd, 15 }, { 0x33b8, 14 }, { 0x33b9, 14 }, 211 { 0xc7b6, 16 }, { 0x63d8, 15 }, { 0x63df, 15 }, { 0xc7b3, 16 }, 212 { 0xc7b4, 16 }, { 0xc7b5, 16 }, { 0x63de, 15 }, { 0xc7b7, 16 }, 213 { 0xc7b8, 16 }, { 0xc7b9, 16 }, { 0x18f65, 17 }, { 0x31ec8, 18 }, 214 { 0xc7b248, 24 }, { 0xc7b249, 24 }, { 0xc7b24a, 24 }, { 0xc7b24b, 24 }, 215 { 0xc7b24c, 24 }, { 0xc7b24d, 24 }, { 0xc7b24e, 24 }, { 0xc7b24f, 24 }, 216 { 0xc7b250, 24 }, { 0xc7b251, 24 }, { 0xc7b252, 24 }, { 0xc7b253, 24 }, 217 { 0xc7b254, 24 }, { 0xc7b255, 24 }, { 0xc7b256, 24 }, { 0xc7b257, 24 }, 218 { 0xc7b258, 24 }, { 0xc7b259, 24 }, { 0xc7b25a, 24 }, { 0xc7b25b, 24 }, 219 { 0xc7b25c, 24 }, { 0xc7b25d, 24 }, { 0xc7b25e, 24 }, { 0xc7b25f, 24 }, 220 { 0xc7b260, 24 }, { 0xc7b261, 24 }, { 0xc7b262, 24 }, { 0xc7b263, 24 }, 221 { 0xc7b264, 24 }, { 0xc7b265, 24 }, { 0xc7b266, 24 }, { 0xc7b267, 24 }, 222 { 0xc7b268, 24 }, { 0xc7b269, 24 }, { 0xc7b26a, 24 }, { 0xc7b26b, 24 }, 223 { 0xc7b26c, 24 }, { 0xc7b26d, 24 }, { 0xc7b26e, 24 }, { 0xc7b26f, 24 }, 224 { 0xc7b270, 24 }, { 0xc7b271, 24 }, { 0xc7b272, 24 }, { 0xc7b273, 24 }, 225 { 0xc7b274, 24 }, { 0xc7b275, 24 }, { 0xc7b276, 24 }, { 0xc7b277, 24 }, 226 { 0xc7b278, 24 }, { 0xc7b279, 24 }, { 0xc7b27a, 24 }, { 0xc7b27b, 24 }, 227 { 0xc7b27c, 24 }, { 0xc7b27d, 24 }, { 0xc7b27e, 24 }, { 0xc7b27f, 24 }, 228 { 0x18f6480, 25 }, { 0x18f6481, 25 }, { 0x18f6482, 25 }, { 0x18f6483, 25 }, 229 { 0x18f6484, 25 }, { 0x18f6485, 25 }, { 0x18f6486, 25 }, { 0x18f6487, 25 }, 230 { 0x18f6488, 25 }, { 0x18f6489, 25 }, { 0x18f648a, 25 }, { 0x18f648b, 25 }, 231 { 0x18f648c, 25 }, { 0x18f648d, 25 }, { 0x18f648e, 25 }, { 0x18f648f, 25 }, 232 }; 233 234 /* vlc table 0, for intra luma */ 235 236 static const uint16_t table0_vlc[133][2] = { 237 { 0x1, 2 }, { 0x6, 3 }, { 0xf, 4 }, { 0x16, 5 }, 238 { 0x20, 6 }, { 0x18, 7 }, { 0x8, 8 }, { 0x9a, 8 }, 239 { 0x56, 9 }, { 0x13e, 9 }, { 0xf0, 10 }, { 0x3a5, 10 }, 240 { 0x77, 11 }, { 0x1ef, 11 }, { 0x9a, 12 }, { 0x5d, 13 }, 241 { 0x1, 4 }, { 0x11, 5 }, { 0x2, 7 }, { 0xb, 8 }, 242 { 0x12, 9 }, { 0x1d6, 9 }, { 0x27e, 10 }, { 0x191, 11 }, 243 { 0xea, 12 }, { 0x3dc, 12 }, { 0x13b, 13 }, { 0x4, 5 }, 244 { 0x14, 7 }, { 0x9e, 8 }, { 0x9, 10 }, { 0x1ac, 11 }, 245 { 0x1e2, 11 }, { 0x3ca, 12 }, { 0x5f, 13 }, { 0x17, 5 }, 246 { 0x4e, 7 }, { 0x5e, 9 }, { 0xf3, 10 }, { 0x1ad, 11 }, 247 { 0xec, 12 }, { 0x5f0, 13 }, { 0xe, 6 }, { 0xe1, 8 }, 248 { 0x3a4, 10 }, { 0x9c, 12 }, { 0x13d, 13 }, { 0x3b, 6 }, 249 { 0x1c, 9 }, { 0x14, 11 }, { 0x9be, 12 }, { 0x6, 7 }, 250 { 0x7a, 9 }, { 0x190, 11 }, { 0x137, 13 }, { 0x1b, 7 }, 251 { 0x8, 10 }, { 0x75c, 11 }, { 0x71, 7 }, { 0xd7, 10 }, 252 { 0x9bf, 12 }, { 0x7, 8 }, { 0xaf, 10 }, { 0x4cc, 11 }, 253 { 0x34, 8 }, { 0x265, 10 }, { 0x9f, 12 }, { 0xe0, 8 }, 254 { 0x16, 11 }, { 0x327, 12 }, { 0x15, 9 }, { 0x17d, 11 }, 255 { 0xebb, 12 }, { 0x14, 9 }, { 0xf6, 10 }, { 0x1e4, 11 }, 256 { 0xcb, 10 }, { 0x99d, 12 }, { 0xca, 10 }, { 0x2fc, 12 }, 257 { 0x17f, 11 }, { 0x4cd, 11 }, { 0x2fd, 12 }, { 0x4fe, 11 }, 258 { 0x13a, 13 }, { 0xa, 4 }, { 0x42, 7 }, { 0x1d3, 9 }, 259 { 0x4dd, 11 }, { 0x12, 5 }, { 0xe8, 8 }, { 0x4c, 11 }, 260 { 0x136, 13 }, { 0x39, 6 }, { 0x264, 10 }, { 0xeba, 12 }, 261 { 0x0, 7 }, { 0xae, 10 }, { 0x99c, 12 }, { 0x1f, 7 }, 262 { 0x4de, 11 }, { 0x43, 7 }, { 0x4dc, 11 }, { 0x3, 8 }, 263 { 0x3cb, 12 }, { 0x6, 8 }, { 0x99e, 12 }, { 0x2a, 8 }, 264 { 0x5f1, 13 }, { 0xf, 8 }, { 0x9fe, 12 }, { 0x33, 8 }, 265 { 0x9ff, 12 }, { 0x98, 8 }, { 0x99f, 12 }, { 0xea, 8 }, 266 { 0x13c, 13 }, { 0x2e, 8 }, { 0x192, 11 }, { 0x136, 9 }, 267 { 0x6a, 9 }, { 0x15, 11 }, { 0x3af, 10 }, { 0x1e3, 11 }, 268 { 0x74, 11 }, { 0xeb, 12 }, { 0x2f9, 12 }, { 0x5c, 13 }, 269 { 0xed, 12 }, { 0x3dd, 12 }, { 0x326, 12 }, { 0x5e, 13 }, 270 { 0x16, 7 }, 271 }; 272 273 static const int8_t table0_level[132] = { 274 1, 2, 3, 4, 5, 6, 7, 8, 275 9, 10, 11, 12, 13, 14, 15, 16, 276 1, 2, 3, 4, 5, 6, 7, 8, 277 9, 10, 11, 1, 2, 3, 4, 5, 278 6, 7, 8, 1, 2, 3, 4, 5, 279 6, 7, 1, 2, 3, 4, 5, 1, 280 2, 3, 4, 1, 2, 3, 4, 1, 281 2, 3, 1, 2, 3, 1, 2, 3, 282 1, 2, 3, 1, 2, 3, 1, 2, 283 3, 1, 2, 3, 1, 2, 1, 2, 284 1, 1, 1, 1, 1, 1, 2, 3, 285 4, 1, 2, 3, 4, 1, 2, 3, 286 1, 2, 3, 1, 2, 1, 2, 1, 287 2, 1, 2, 1, 2, 1, 2, 1, 288 2, 1, 2, 1, 2, 1, 2, 1, 289 1, 1, 1, 1, 1, 1, 1, 1, 290 1, 1, 1, 1, 291 }; 292 293 static const int8_t table0_run[132] = { 294 0, 0, 0, 0, 0, 0, 0, 0, 295 0, 0, 0, 0, 0, 0, 0, 0, 296 1, 1, 1, 1, 1, 1, 1, 1, 297 1, 1, 1, 2, 2, 2, 2, 2, 298 2, 2, 2, 3, 3, 3, 3, 3, 299 3, 3, 4, 4, 4, 4, 4, 5, 300 5, 5, 5, 6, 6, 6, 6, 7, 301 7, 7, 8, 8, 8, 9, 9, 9, 302 10, 10, 10, 11, 11, 11, 12, 12, 303 12, 13, 13, 13, 14, 14, 15, 15, 304 16, 17, 18, 19, 20, 0, 0, 0, 305 0, 1, 1, 1, 1, 2, 2, 2, 306 3, 3, 3, 4, 4, 5, 5, 6, 307 6, 7, 7, 8, 8, 9, 9, 10, 308 10, 11, 11, 12, 12, 13, 13, 14, 309 15, 16, 17, 18, 19, 20, 21, 22, 310 23, 24, 25, 26, 311 }; 312 313 /* vlc table 1, for intra chroma and P macroblocks */ 314 315 static const uint16_t table1_vlc[149][2] = { 316 { 0x4, 3 }, { 0x14, 5 }, { 0x17, 7 }, { 0x7f, 8 }, 317 { 0x154, 9 }, { 0x1f2, 10 }, { 0xbf, 11 }, { 0x65, 12 }, 318 { 0xaaa, 12 }, { 0x630, 13 }, { 0x1597, 13 }, { 0x3b7, 14 }, 319 { 0x2b22, 14 }, { 0xbe6, 15 }, { 0xb, 4 }, { 0x37, 7 }, 320 { 0x62, 9 }, { 0x7, 11 }, { 0x166, 12 }, { 0xce, 13 }, 321 { 0x1590, 13 }, { 0x5f6, 14 }, { 0xbe7, 15 }, { 0x7, 5 }, 322 { 0x6d, 8 }, { 0x3, 11 }, { 0x31f, 12 }, { 0x5f2, 14 }, 323 { 0x2, 6 }, { 0x61, 9 }, { 0x55, 12 }, { 0x1df, 14 }, 324 { 0x1a, 6 }, { 0x1e, 10 }, { 0xac9, 12 }, { 0x2b23, 14 }, 325 { 0x1e, 6 }, { 0x1f, 10 }, { 0xac3, 12 }, { 0x2b2b, 14 }, 326 { 0x6, 7 }, { 0x4, 11 }, { 0x2f8, 13 }, { 0x19, 7 }, 327 { 0x6, 11 }, { 0x63d, 13 }, { 0x57, 7 }, { 0x182, 11 }, 328 { 0x2aa2, 14 }, { 0x4, 8 }, { 0x180, 11 }, { 0x59c, 14 }, 329 { 0x7d, 8 }, { 0x164, 12 }, { 0x76d, 15 }, { 0x2, 9 }, 330 { 0x18d, 11 }, { 0x1581, 13 }, { 0xad, 8 }, { 0x60, 12 }, 331 { 0xc67, 14 }, { 0x1c, 9 }, { 0xee, 13 }, { 0x3, 9 }, 332 { 0x2cf, 13 }, { 0xd9, 9 }, { 0x1580, 13 }, { 0x2, 11 }, 333 { 0x183, 11 }, { 0x57, 12 }, { 0x61, 12 }, { 0x31, 11 }, 334 { 0x66, 12 }, { 0x631, 13 }, { 0x632, 13 }, { 0xac, 13 }, 335 { 0x31d, 12 }, { 0x76, 12 }, { 0x3a, 11 }, { 0x165, 12 }, 336 { 0xc66, 14 }, { 0x3, 2 }, { 0x54, 7 }, { 0x2ab, 10 }, 337 { 0x16, 13 }, { 0x5f7, 14 }, { 0x5, 4 }, { 0xf8, 9 }, 338 { 0xaa9, 12 }, { 0x5f, 15 }, { 0x4, 4 }, { 0x1c, 10 }, 339 { 0x1550, 13 }, { 0x4, 5 }, { 0x77, 11 }, { 0x76c, 15 }, 340 { 0xe, 5 }, { 0xa, 12 }, { 0xc, 5 }, { 0x562, 11 }, 341 { 0x4, 6 }, { 0x31c, 12 }, { 0x6, 6 }, { 0xc8, 13 }, 342 { 0xd, 6 }, { 0x1da, 13 }, { 0x7, 6 }, { 0xc9, 13 }, 343 { 0x1, 7 }, { 0x2e, 14 }, { 0x14, 7 }, { 0x1596, 13 }, 344 { 0xa, 7 }, { 0xac2, 12 }, { 0x16, 7 }, { 0x15b, 14 }, 345 { 0x15, 7 }, { 0x15a, 14 }, { 0xf, 8 }, { 0x5e, 15 }, 346 { 0x7e, 8 }, { 0xab, 8 }, { 0x2d, 9 }, { 0xd8, 9 }, 347 { 0xb, 9 }, { 0x14, 10 }, { 0x2b3, 10 }, { 0x1f3, 10 }, 348 { 0x3a, 10 }, { 0x0, 10 }, { 0x58, 10 }, { 0x2e, 9 }, 349 { 0x5e, 10 }, { 0x563, 11 }, { 0xec, 12 }, { 0x54, 12 }, 350 { 0xac1, 12 }, { 0x1556, 13 }, { 0x2fa, 13 }, { 0x181, 11 }, 351 { 0x1557, 13 }, { 0x59d, 14 }, { 0x2aa3, 14 }, { 0x2b2a, 14 }, 352 { 0x1de, 14 }, { 0x63c, 13 }, { 0xcf, 13 }, { 0x1594, 13 }, 353 { 0xd, 9 }, 354 }; 355 356 static const int8_t table1_level[148] = { 357 1, 2, 3, 4, 5, 6, 7, 8, 358 9, 10, 11, 12, 13, 14, 1, 2, 359 3, 4, 5, 6, 7, 8, 9, 1, 360 2, 3, 4, 5, 1, 2, 3, 4, 361 1, 2, 3, 4, 1, 2, 3, 4, 362 1, 2, 3, 1, 2, 3, 1, 2, 363 3, 1, 2, 3, 1, 2, 3, 1, 364 2, 3, 1, 2, 3, 1, 2, 1, 365 2, 1, 2, 1, 1, 1, 1, 1, 366 1, 1, 1, 1, 1, 1, 1, 1, 367 1, 1, 2, 3, 4, 5, 1, 2, 368 3, 4, 1, 2, 3, 1, 2, 3, 369 1, 2, 1, 2, 1, 2, 1, 2, 370 1, 2, 1, 2, 1, 2, 1, 2, 371 1, 2, 1, 2, 1, 2, 1, 2, 372 1, 1, 1, 1, 1, 1, 1, 1, 373 1, 1, 1, 1, 1, 1, 1, 1, 374 1, 1, 1, 1, 1, 1, 1, 1, 375 1, 1, 1, 1, 376 }; 377 378 static const int8_t table1_run[148] = { 379 0, 0, 0, 0, 0, 0, 0, 0, 380 0, 0, 0, 0, 0, 0, 1, 1, 381 1, 1, 1, 1, 1, 1, 1, 2, 382 2, 2, 2, 2, 3, 3, 3, 3, 383 4, 4, 4, 4, 5, 5, 5, 5, 384 6, 6, 6, 7, 7, 7, 8, 8, 385 8, 9, 9, 9, 10, 10, 10, 11, 386 11, 11, 12, 12, 12, 13, 13, 14, 387 14, 15, 15, 16, 17, 18, 19, 20, 388 21, 22, 23, 24, 25, 26, 27, 28, 389 29, 0, 0, 0, 0, 0, 1, 1, 390 1, 1, 2, 2, 2, 3, 3, 3, 391 4, 4, 5, 5, 6, 6, 7, 7, 392 8, 8, 9, 9, 10, 10, 11, 11, 393 12, 12, 13, 13, 14, 14, 15, 15, 394 16, 17, 18, 19, 20, 21, 22, 23, 395 24, 25, 26, 27, 28, 29, 30, 31, 396 32, 33, 34, 35, 36, 37, 38, 39, 397 40, 41, 42, 43, 398 }; 399 400 /* third vlc table */ 401 402 static const uint16_t table2_vlc[186][2] = { 403 { 0x1, 2 }, { 0x5, 3 }, { 0xd, 4 }, { 0x12, 5 }, 404 { 0xe, 6 }, { 0x15, 7 }, { 0x13, 8 }, { 0x3f, 8 }, 405 { 0x4b, 9 }, { 0x11f, 9 }, { 0xb8, 10 }, { 0x3e3, 10 }, 406 { 0x172, 11 }, { 0x24d, 12 }, { 0x3da, 12 }, { 0x2dd, 13 }, 407 { 0x1f55, 13 }, { 0x5b9, 14 }, { 0x3eae, 14 }, { 0x0, 4 }, 408 { 0x10, 5 }, { 0x8, 7 }, { 0x20, 8 }, { 0x29, 9 }, 409 { 0x1f4, 9 }, { 0x233, 10 }, { 0x1e0, 11 }, { 0x12a, 12 }, 410 { 0x3dd, 12 }, { 0x50a, 13 }, { 0x1f29, 13 }, { 0xa42, 14 }, 411 { 0x1272, 15 }, { 0x1737, 15 }, { 0x3, 5 }, { 0x11, 7 }, 412 { 0xc4, 8 }, { 0x4b, 10 }, { 0xb4, 11 }, { 0x7d4, 11 }, 413 { 0x345, 12 }, { 0x2d7, 13 }, { 0x7bf, 13 }, { 0x938, 14 }, 414 { 0xbbb, 14 }, { 0x95e, 15 }, { 0x13, 5 }, { 0x78, 7 }, 415 { 0x69, 9 }, { 0x232, 10 }, { 0x461, 11 }, { 0x3ec, 12 }, 416 { 0x520, 13 }, { 0x1f2a, 13 }, { 0x3e50, 14 }, { 0x3e51, 14 }, 417 { 0x1486, 15 }, { 0xc, 6 }, { 0x24, 9 }, { 0x94, 11 }, 418 { 0x8c0, 12 }, { 0xf09, 14 }, { 0x1ef0, 15 }, { 0x3d, 6 }, 419 { 0x53, 9 }, { 0x1a0, 11 }, { 0x2d6, 13 }, { 0xf08, 14 }, 420 { 0x13, 7 }, { 0x7c, 9 }, { 0x7c1, 11 }, { 0x4ac, 14 }, 421 { 0x1b, 7 }, { 0xa0, 10 }, { 0x344, 12 }, { 0xf79, 14 }, 422 { 0x79, 7 }, { 0x3e1, 10 }, { 0x2d4, 13 }, { 0x2306, 14 }, 423 { 0x21, 8 }, { 0x23c, 10 }, { 0xfae, 12 }, { 0x23de, 14 }, 424 { 0x35, 8 }, { 0x175, 11 }, { 0x7b3, 13 }, { 0xc5, 8 }, 425 { 0x174, 11 }, { 0x785, 13 }, { 0x48, 9 }, { 0x1a3, 11 }, 426 { 0x49e, 13 }, { 0x2c, 9 }, { 0xfa, 10 }, { 0x7d6, 11 }, 427 { 0x92, 10 }, { 0x5cc, 13 }, { 0x1ef1, 15 }, { 0xa3, 10 }, 428 { 0x3ed, 12 }, { 0x93e, 14 }, { 0x1e2, 11 }, { 0x1273, 15 }, 429 { 0x7c4, 11 }, { 0x1487, 15 }, { 0x291, 12 }, { 0x293, 12 }, 430 { 0xf8a, 12 }, { 0x509, 13 }, { 0x508, 13 }, { 0x78d, 13 }, 431 { 0x7be, 13 }, { 0x78c, 13 }, { 0x4ae, 14 }, { 0xbba, 14 }, 432 { 0x2307, 14 }, { 0xb9a, 14 }, { 0x1736, 15 }, { 0xe, 4 }, 433 { 0x45, 7 }, { 0x1f3, 9 }, { 0x47a, 11 }, { 0x5dc, 13 }, 434 { 0x23df, 14 }, { 0x19, 5 }, { 0x28, 9 }, { 0x176, 11 }, 435 { 0x49d, 13 }, { 0x23dd, 14 }, { 0x30, 6 }, { 0xa2, 10 }, 436 { 0x2ef, 12 }, { 0x5b8, 14 }, { 0x3f, 6 }, { 0xa5, 10 }, 437 { 0x3db, 12 }, { 0x93f, 14 }, { 0x44, 7 }, { 0x7cb, 11 }, 438 { 0x95f, 15 }, { 0x63, 7 }, { 0x3c3, 12 }, { 0x15, 8 }, 439 { 0x8f6, 12 }, { 0x17, 8 }, { 0x498, 13 }, { 0x2c, 8 }, 440 { 0x7b2, 13 }, { 0x2f, 8 }, { 0x1f54, 13 }, { 0x8d, 8 }, 441 { 0x7bd, 13 }, { 0x8e, 8 }, { 0x1182, 13 }, { 0xfb, 8 }, 442 { 0x50b, 13 }, { 0x2d, 8 }, { 0x7c0, 11 }, { 0x79, 9 }, 443 { 0x1f5f, 13 }, { 0x7a, 9 }, { 0x1f56, 13 }, { 0x231, 10 }, 444 { 0x3e4, 10 }, { 0x1a1, 11 }, { 0x143, 11 }, { 0x1f7, 11 }, 445 { 0x16f, 12 }, { 0x292, 12 }, { 0x2e7, 12 }, { 0x16c, 12 }, 446 { 0x16d, 12 }, { 0x3dc, 12 }, { 0xf8b, 12 }, { 0x499, 13 }, 447 { 0x3d8, 12 }, { 0x78e, 13 }, { 0x2d5, 13 }, { 0x1f5e, 13 }, 448 { 0x1f2b, 13 }, { 0x78f, 13 }, { 0x4ad, 14 }, { 0x3eaf, 14 }, 449 { 0x23dc, 14 }, { 0x4a, 9 }, 450 }; 451 452 static const int8_t table2_level[185] = { 453 1, 2, 3, 4, 5, 6, 7, 8, 454 9, 10, 11, 12, 13, 14, 15, 16, 455 17, 18, 19, 1, 2, 3, 4, 5, 456 6, 7, 8, 9, 10, 11, 12, 13, 457 14, 15, 1, 2, 3, 4, 5, 6, 458 7, 8, 9, 10, 11, 12, 1, 2, 459 3, 4, 5, 6, 7, 8, 9, 10, 460 11, 1, 2, 3, 4, 5, 6, 1, 461 2, 3, 4, 5, 1, 2, 3, 4, 462 1, 2, 3, 4, 1, 2, 3, 4, 463 1, 2, 3, 4, 1, 2, 3, 1, 464 2, 3, 1, 2, 3, 1, 2, 3, 465 1, 2, 3, 1, 2, 3, 1, 2, 466 1, 2, 1, 1, 1, 1, 1, 1, 467 1, 1, 1, 1, 1, 1, 1, 1, 468 2, 3, 4, 5, 6, 1, 2, 3, 469 4, 5, 1, 2, 3, 4, 1, 2, 470 3, 4, 1, 2, 3, 1, 2, 1, 471 2, 1, 2, 1, 2, 1, 2, 1, 472 2, 1, 2, 1, 2, 1, 2, 1, 473 2, 1, 2, 1, 1, 1, 1, 1, 474 1, 1, 1, 1, 1, 1, 1, 1, 475 1, 1, 1, 1, 1, 1, 1, 1, 476 1, 477 }; 478 479 static const int8_t table2_run[185] = { 480 0, 0, 0, 0, 0, 0, 0, 0, 481 0, 0, 0, 0, 0, 0, 0, 0, 482 0, 0, 0, 1, 1, 1, 1, 1, 483 1, 1, 1, 1, 1, 1, 1, 1, 484 1, 1, 2, 2, 2, 2, 2, 2, 485 2, 2, 2, 2, 2, 2, 3, 3, 486 3, 3, 3, 3, 3, 3, 3, 3, 487 3, 4, 4, 4, 4, 4, 4, 5, 488 5, 5, 5, 5, 6, 6, 6, 6, 489 7, 7, 7, 7, 8, 8, 8, 8, 490 9, 9, 9, 9, 10, 10, 10, 11, 491 11, 11, 12, 12, 12, 13, 13, 13, 492 14, 14, 14, 15, 15, 15, 16, 16, 493 17, 17, 18, 19, 20, 21, 22, 23, 494 24, 25, 26, 27, 28, 29, 30, 0, 495 0, 0, 0, 0, 0, 1, 1, 1, 496 1, 1, 2, 2, 2, 2, 3, 3, 497 3, 3, 4, 4, 4, 5, 5, 6, 498 6, 7, 7, 8, 8, 9, 9, 10, 499 10, 11, 11, 12, 12, 13, 13, 14, 500 14, 15, 15, 16, 17, 18, 19, 20, 501 21, 22, 23, 24, 25, 26, 27, 28, 502 29, 30, 31, 32, 33, 34, 35, 36, 503 37, 504 }; 505 506 /* second non intra vlc table */ 507 static const uint16_t table4_vlc[169][2] = { 508 { 0x0, 3 }, { 0x3, 4 }, { 0xb, 5 }, { 0x14, 6 }, 509 { 0x3f, 6 }, { 0x5d, 7 }, { 0xa2, 8 }, { 0xac, 9 }, 510 { 0x16e, 9 }, { 0x20a, 10 }, { 0x2e2, 10 }, { 0x432, 11 }, 511 { 0x5c9, 11 }, { 0x827, 12 }, { 0xb54, 12 }, { 0x4e6, 13 }, 512 { 0x105f, 13 }, { 0x172a, 13 }, { 0x20b2, 14 }, { 0x2d4e, 14 }, 513 { 0x39f0, 14 }, { 0x4175, 15 }, { 0x5a9e, 15 }, { 0x4, 4 }, 514 { 0x1e, 5 }, { 0x42, 7 }, { 0xb6, 8 }, { 0x173, 9 }, 515 { 0x395, 10 }, { 0x72e, 11 }, { 0xb94, 12 }, { 0x16a4, 13 }, 516 { 0x20b3, 14 }, { 0x2e45, 14 }, { 0x5, 5 }, { 0x40, 7 }, 517 { 0x49, 9 }, { 0x28f, 10 }, { 0x5cb, 11 }, { 0x48a, 13 }, 518 { 0x9dd, 14 }, { 0x73e2, 15 }, { 0x18, 5 }, { 0x25, 8 }, 519 { 0x8a, 10 }, { 0x51b, 11 }, { 0xe5f, 12 }, { 0x9c9, 14 }, 520 { 0x139c, 15 }, { 0x29, 6 }, { 0x4f, 9 }, { 0x412, 11 }, 521 { 0x48d, 13 }, { 0x2e41, 14 }, { 0x38, 6 }, { 0x10e, 9 }, 522 { 0x5a8, 11 }, { 0x105c, 13 }, { 0x39f2, 14 }, { 0x58, 7 }, 523 { 0x21f, 10 }, { 0xe7e, 12 }, { 0x39ff, 14 }, { 0x23, 8 }, 524 { 0x2e3, 10 }, { 0x4e5, 13 }, { 0x2e40, 14 }, { 0xa1, 8 }, 525 { 0x5be, 11 }, { 0x9c8, 14 }, { 0x83, 8 }, { 0x13a, 11 }, 526 { 0x1721, 13 }, { 0x44, 9 }, { 0x276, 12 }, { 0x39f6, 14 }, 527 { 0x8b, 10 }, { 0x4ef, 13 }, { 0x5a9b, 15 }, { 0x208, 10 }, 528 { 0x1cfe, 13 }, { 0x399, 10 }, { 0x1cb4, 13 }, { 0x39e, 10 }, 529 { 0x39f3, 14 }, { 0x5ab, 11 }, { 0x73e3, 15 }, { 0x737, 11 }, 530 { 0x5a9f, 15 }, { 0x82d, 12 }, { 0xe69, 12 }, { 0xe68, 12 }, 531 { 0x433, 11 }, { 0xb7b, 12 }, { 0x2df8, 14 }, { 0x2e56, 14 }, 532 { 0x2e57, 14 }, { 0x39f7, 14 }, { 0x51a5, 15 }, { 0x3, 3 }, 533 { 0x2a, 6 }, { 0xe4, 8 }, { 0x28e, 10 }, { 0x735, 11 }, 534 { 0x1058, 13 }, { 0x1cfa, 13 }, { 0x2df9, 14 }, { 0x4174, 15 }, 535 { 0x9, 4 }, { 0x54, 8 }, { 0x398, 10 }, { 0x48b, 13 }, 536 { 0x139d, 15 }, { 0xd, 4 }, { 0xad, 9 }, { 0x826, 12 }, 537 { 0x2d4c, 14 }, { 0x11, 5 }, { 0x16b, 9 }, { 0xb7f, 12 }, 538 { 0x51a4, 15 }, { 0x19, 5 }, { 0x21b, 10 }, { 0x16fd, 13 }, 539 { 0x1d, 5 }, { 0x394, 10 }, { 0x28d3, 14 }, { 0x2b, 6 }, 540 { 0x5bc, 11 }, { 0x5a9a, 15 }, { 0x2f, 6 }, { 0x247, 12 }, 541 { 0x10, 7 }, { 0xa35, 12 }, { 0x3e, 6 }, { 0xb7a, 12 }, 542 { 0x59, 7 }, { 0x105e, 13 }, { 0x26, 8 }, { 0x9cf, 14 }, 543 { 0x55, 8 }, { 0x1cb5, 13 }, { 0x57, 8 }, { 0xe5b, 12 }, 544 { 0xa0, 8 }, { 0x1468, 13 }, { 0x170, 9 }, { 0x90, 10 }, 545 { 0x1ce, 9 }, { 0x21a, 10 }, { 0x218, 10 }, { 0x168, 9 }, 546 { 0x21e, 10 }, { 0x244, 12 }, { 0x736, 11 }, { 0x138, 11 }, 547 { 0x519, 11 }, { 0xe5e, 12 }, { 0x72c, 11 }, { 0xb55, 12 }, 548 { 0x9dc, 14 }, { 0x20bb, 14 }, { 0x48c, 13 }, { 0x1723, 13 }, 549 { 0x2e44, 14 }, { 0x16a5, 13 }, { 0x518, 11 }, { 0x39fe, 14 }, 550 { 0x169, 9 }, 551 }; 552 553 static const int8_t table4_level[168] = { 554 1, 2, 3, 4, 5, 6, 7, 8, 555 9, 10, 11, 12, 13, 14, 15, 16, 556 17, 18, 19, 20, 21, 22, 23, 1, 557 2, 3, 4, 5, 6, 7, 8, 9, 558 10, 11, 1, 2, 3, 4, 5, 6, 559 7, 8, 1, 2, 3, 4, 5, 6, 560 7, 1, 2, 3, 4, 5, 1, 2, 561 3, 4, 5, 1, 2, 3, 4, 1, 562 2, 3, 4, 1, 2, 3, 1, 2, 563 3, 1, 2, 3, 1, 2, 3, 1, 564 2, 1, 2, 1, 2, 1, 2, 1, 565 2, 1, 1, 1, 1, 1, 1, 1, 566 1, 1, 1, 1, 2, 3, 4, 5, 567 6, 7, 8, 9, 1, 2, 3, 4, 568 5, 1, 2, 3, 4, 1, 2, 3, 569 4, 1, 2, 3, 1, 2, 3, 1, 570 2, 3, 1, 2, 1, 2, 1, 2, 571 1, 2, 1, 2, 1, 2, 1, 2, 572 1, 2, 1, 1, 1, 1, 1, 1, 573 1, 1, 1, 1, 1, 1, 1, 1, 574 1, 1, 1, 1, 1, 1, 1, 1, 575 }; 576 577 static const int8_t table4_run[168] = { 578 0, 0, 0, 0, 0, 0, 0, 0, 579 0, 0, 0, 0, 0, 0, 0, 0, 580 0, 0, 0, 0, 0, 0, 0, 1, 581 1, 1, 1, 1, 1, 1, 1, 1, 582 1, 1, 2, 2, 2, 2, 2, 2, 583 2, 2, 3, 3, 3, 3, 3, 3, 584 3, 4, 4, 4, 4, 4, 5, 5, 585 5, 5, 5, 6, 6, 6, 6, 7, 586 7, 7, 7, 8, 8, 8, 9, 9, 587 9, 10, 10, 10, 11, 11, 11, 12, 588 12, 13, 13, 14, 14, 15, 15, 16, 589 16, 17, 18, 19, 20, 21, 22, 23, 590 24, 25, 26, 0, 0, 0, 0, 0, 591 0, 0, 0, 0, 1, 1, 1, 1, 592 1, 2, 2, 2, 2, 3, 3, 3, 593 3, 4, 4, 4, 5, 5, 5, 6, 594 6, 6, 7, 7, 8, 8, 9, 9, 595 10, 10, 11, 11, 12, 12, 13, 13, 596 14, 14, 15, 16, 17, 18, 19, 20, 597 21, 22, 23, 24, 25, 26, 27, 28, 598 29, 30, 31, 32, 33, 34, 35, 36, 599 }; 600 601 RLTable ff_rl_table[NB_RL_TABLES] = { 602 /* intra luminance tables */ 603 /* low motion */ 604 { 132, 605 85, 606 table0_vlc, 607 table0_run, 608 table0_level, }, 609 /* high motion */ 610 { 185, 611 119, 612 table2_vlc, 613 table2_run, 614 table2_level, }, 615 /* mid-rate */ 616 { 102, 617 67, 618 ff_mpeg4_intra_vlc, 619 ff_mpeg4_intra_run, 620 ff_mpeg4_intra_level, }, 621 /* intra chrominance / non intra tables */ 622 /* low motion inter */ 623 { 148, 624 81, 625 table1_vlc, 626 table1_run, 627 table1_level, }, 628 /* high motion inter */ 629 { 168, 630 99, 631 table4_vlc, 632 table4_run, 633 table4_level, }, 634 /* mid rate inter */ 635 { 102, 636 58, 637 ff_inter_vlc, 638 ff_inter_run, 639 ff_inter_level, }, 640 }; 641 642 /* motion vector table 0 */ 643 644 static const uint16_t table0_mv_code[1100] = { 645 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001, 646 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f, 647 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b, 648 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048, 649 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c, 650 0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2, 651 0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5, 652 0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090, 653 0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133, 654 0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b, 655 0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359, 656 0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d, 657 0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e, 658 0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3, 659 0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8, 660 0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688, 661 0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0, 662 0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079, 663 0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b, 664 0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e, 665 0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d, 666 0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942, 667 0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983, 668 0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17, 669 0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d, 670 0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 671 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421, 672 0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572, 673 0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996, 674 0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33, 675 0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7, 676 0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff, 677 0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273, 678 0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0, 679 0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 680 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 681 0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a, 682 0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8, 683 0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2, 684 0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837, 685 0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c, 686 0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4, 687 0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 688 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 689 0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459, 690 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461, 691 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469, 692 0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3, 693 0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb, 694 0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 695 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 696 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 697 0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 698 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 699 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 700 0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561, 701 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569, 702 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571, 703 0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f, 704 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047, 705 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f, 706 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057, 707 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f, 708 0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb, 709 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3, 710 0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb, 711 0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343, 712 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 713 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 714 0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a, 715 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92, 716 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a, 717 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2, 718 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa, 719 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2, 720 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba, 721 0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c, 722 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34, 723 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c, 724 0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 725 0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c, 726 0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94, 727 0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c, 728 0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4, 729 0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac, 730 0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4, 731 0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc, 732 0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4, 733 0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04, 734 0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8, 735 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0, 736 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8, 737 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000, 738 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 739 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010, 740 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018, 741 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020, 742 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028, 743 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030, 744 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038, 745 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040, 746 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048, 747 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050, 748 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058, 749 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060, 750 0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068, 751 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070, 752 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 753 0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 754 0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 755 0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 756 0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44, 757 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c, 758 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54, 759 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c, 760 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64, 761 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 762 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74, 763 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c, 764 0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84, 765 0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c, 766 0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94, 767 0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c, 768 0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 769 0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 770 0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4, 771 0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc, 772 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 773 0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc, 774 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4, 775 0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc, 776 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 777 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec, 778 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4, 779 0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc, 780 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04, 781 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c, 782 0x5f0d, 0x5f0e, 0x5f0f, 0x0000, 783 }; 784 785 static const uint8_t table0_mv_bits[1100] = { 786 1, 4, 4, 4, 5, 5, 5, 6, 787 6, 6, 7, 7, 7, 8, 8, 8, 788 8, 8, 8, 8, 8, 8, 8, 8, 789 8, 9, 9, 9, 9, 9, 9, 9, 790 9, 9, 9, 9, 9, 10, 10, 10, 791 10, 10, 10, 10, 10, 10, 10, 10, 792 10, 10, 10, 10, 10, 10, 10, 10, 793 10, 10, 10, 10, 11, 11, 11, 11, 794 11, 11, 11, 11, 11, 11, 11, 11, 795 11, 11, 11, 11, 11, 11, 11, 11, 796 11, 11, 11, 11, 11, 11, 11, 11, 797 12, 12, 12, 12, 12, 12, 12, 12, 798 12, 12, 12, 12, 12, 12, 12, 12, 799 12, 12, 12, 12, 12, 12, 12, 12, 800 12, 12, 12, 12, 12, 12, 12, 12, 801 12, 12, 12, 12, 12, 12, 12, 12, 802 12, 12, 12, 12, 12, 12, 12, 12, 803 12, 12, 12, 13, 13, 13, 13, 13, 804 13, 13, 13, 13, 13, 13, 13, 13, 805 13, 13, 13, 13, 13, 13, 13, 13, 806 13, 13, 13, 13, 13, 13, 13, 13, 807 13, 13, 13, 13, 13, 13, 13, 13, 808 13, 13, 13, 13, 13, 13, 13, 13, 809 13, 13, 13, 13, 13, 13, 13, 13, 810 13, 13, 13, 13, 13, 13, 13, 13, 811 13, 13, 14, 14, 14, 14, 14, 14, 812 14, 14, 14, 14, 14, 14, 14, 14, 813 14, 14, 14, 14, 14, 14, 14, 14, 814 14, 14, 14, 14, 14, 14, 14, 14, 815 14, 14, 14, 14, 14, 14, 14, 14, 816 14, 14, 14, 14, 14, 14, 14, 14, 817 14, 14, 14, 14, 14, 14, 14, 14, 818 14, 14, 14, 14, 14, 14, 14, 14, 819 14, 14, 14, 14, 14, 14, 14, 14, 820 14, 14, 14, 14, 14, 14, 14, 14, 821 14, 14, 14, 14, 14, 14, 14, 14, 822 14, 14, 14, 14, 14, 14, 14, 14, 823 14, 14, 14, 14, 14, 14, 14, 14, 824 14, 15, 15, 15, 15, 15, 15, 15, 825 15, 15, 15, 15, 15, 15, 15, 15, 826 15, 15, 15, 15, 15, 15, 15, 15, 827 15, 15, 15, 15, 15, 15, 15, 15, 828 15, 15, 15, 15, 15, 15, 15, 15, 829 15, 15, 15, 15, 15, 15, 15, 15, 830 15, 15, 15, 15, 15, 15, 15, 15, 831 15, 15, 15, 15, 15, 15, 15, 15, 832 15, 15, 15, 15, 15, 15, 15, 15, 833 15, 15, 15, 15, 15, 15, 15, 15, 834 15, 15, 15, 15, 15, 15, 15, 15, 835 15, 15, 15, 15, 15, 15, 15, 15, 836 15, 15, 15, 15, 15, 15, 15, 15, 837 15, 15, 15, 15, 15, 15, 15, 15, 838 15, 15, 15, 15, 15, 15, 15, 15, 839 15, 15, 15, 15, 15, 15, 15, 15, 840 15, 15, 15, 15, 15, 15, 15, 15, 841 15, 15, 15, 15, 15, 15, 15, 15, 842 15, 15, 15, 15, 15, 15, 15, 15, 843 15, 15, 15, 15, 15, 15, 15, 15, 844 15, 15, 15, 15, 16, 16, 16, 16, 845 16, 16, 16, 16, 16, 16, 16, 16, 846 16, 16, 16, 16, 16, 16, 16, 16, 847 16, 16, 16, 16, 16, 16, 16, 16, 848 16, 16, 16, 16, 16, 16, 16, 16, 849 16, 16, 16, 16, 16, 16, 16, 16, 850 16, 16, 16, 16, 16, 16, 16, 16, 851 16, 16, 16, 16, 16, 16, 16, 16, 852 16, 16, 16, 16, 16, 16, 16, 16, 853 16, 16, 16, 16, 16, 16, 16, 16, 854 16, 16, 16, 16, 16, 16, 16, 16, 855 16, 16, 16, 16, 16, 16, 16, 16, 856 16, 16, 16, 16, 16, 16, 16, 16, 857 16, 16, 16, 16, 16, 16, 16, 16, 858 16, 16, 16, 16, 16, 16, 16, 16, 859 16, 16, 16, 16, 16, 16, 16, 16, 860 16, 16, 16, 16, 16, 16, 16, 16, 861 16, 16, 16, 16, 16, 16, 16, 16, 862 16, 16, 16, 16, 16, 16, 16, 16, 863 16, 16, 16, 16, 16, 16, 16, 16, 864 16, 16, 16, 16, 16, 16, 16, 16, 865 16, 16, 16, 16, 16, 16, 16, 16, 866 16, 16, 16, 16, 16, 16, 16, 16, 867 16, 16, 16, 16, 16, 16, 16, 16, 868 16, 16, 16, 16, 16, 16, 16, 16, 869 16, 16, 16, 16, 16, 16, 16, 16, 870 16, 16, 16, 16, 16, 16, 16, 16, 871 16, 16, 16, 16, 16, 16, 16, 16, 872 16, 16, 16, 16, 16, 16, 16, 16, 873 16, 16, 16, 16, 16, 16, 16, 16, 874 16, 16, 16, 16, 16, 16, 16, 16, 875 16, 17, 17, 17, 17, 17, 17, 17, 876 17, 17, 17, 17, 17, 17, 17, 17, 877 17, 17, 17, 17, 17, 17, 17, 17, 878 17, 17, 17, 17, 17, 17, 17, 17, 879 17, 17, 17, 17, 17, 17, 17, 17, 880 17, 17, 17, 17, 17, 17, 17, 17, 881 17, 17, 17, 17, 17, 17, 17, 17, 882 17, 17, 17, 17, 17, 17, 17, 17, 883 17, 17, 17, 17, 17, 17, 17, 17, 884 17, 17, 17, 17, 17, 17, 17, 17, 885 17, 17, 17, 17, 17, 17, 17, 17, 886 17, 17, 17, 17, 17, 17, 17, 17, 887 17, 17, 17, 17, 17, 17, 17, 17, 888 17, 17, 17, 17, 17, 17, 17, 17, 889 17, 17, 17, 17, 17, 17, 17, 17, 890 17, 17, 17, 17, 17, 17, 17, 17, 891 17, 17, 17, 17, 17, 17, 17, 17, 892 17, 17, 17, 17, 17, 17, 17, 17, 893 17, 17, 17, 17, 17, 17, 17, 17, 894 17, 17, 17, 17, 17, 17, 17, 17, 895 17, 17, 17, 17, 17, 17, 17, 17, 896 17, 17, 17, 17, 17, 17, 17, 17, 897 17, 17, 17, 17, 17, 17, 17, 17, 898 17, 17, 17, 17, 17, 17, 17, 17, 899 17, 17, 17, 17, 17, 17, 17, 17, 900 17, 17, 17, 17, 17, 17, 17, 17, 901 17, 17, 17, 17, 17, 17, 17, 17, 902 17, 17, 17, 17, 17, 17, 17, 17, 903 17, 17, 17, 17, 17, 17, 17, 17, 904 17, 17, 17, 17, 17, 17, 17, 17, 905 17, 17, 17, 17, 17, 17, 17, 17, 906 17, 17, 17, 17, 17, 17, 17, 17, 907 17, 17, 17, 17, 17, 17, 17, 17, 908 17, 17, 17, 17, 17, 17, 17, 17, 909 17, 17, 17, 17, 17, 17, 17, 17, 910 17, 17, 17, 17, 17, 17, 17, 17, 911 17, 17, 17, 17, 17, 17, 17, 17, 912 17, 17, 17, 17, 17, 17, 17, 17, 913 17, 17, 17, 17, 17, 17, 17, 17, 914 17, 17, 17, 17, 17, 17, 17, 17, 915 17, 17, 17, 17, 17, 17, 17, 17, 916 17, 17, 17, 17, 17, 17, 17, 17, 917 17, 17, 17, 17, 17, 17, 17, 17, 918 17, 17, 17, 17, 17, 17, 17, 17, 919 17, 17, 17, 17, 17, 17, 17, 17, 920 17, 17, 17, 17, 17, 17, 17, 17, 921 17, 17, 17, 17, 17, 17, 17, 17, 922 17, 17, 17, 17, 17, 17, 17, 17, 923 17, 17, 17, 8, 924 }; 925 926 static const uint8_t table0_mvx[1099] = { 927 32, 32, 31, 32, 33, 31, 33, 31, 928 33, 32, 34, 32, 30, 32, 31, 34, 929 35, 32, 34, 33, 29, 33, 30, 30, 930 31, 31, 35, 29, 33, 35, 33, 34, 931 31, 29, 30, 34, 30, 36, 28, 32, 932 34, 37, 30, 27, 32, 25, 39, 32, 933 34, 32, 35, 35, 35, 31, 35, 29, 934 32, 29, 30, 29, 37, 27, 36, 38, 935 37, 33, 32, 31, 29, 31, 28, 36, 936 33, 30, 34, 33, 33, 28, 27, 25, 937 31, 26, 39, 32, 32, 31, 33, 39, 938 31, 38, 28, 36, 21, 23, 43, 36, 939 34, 41, 30, 25, 28, 31, 30, 34, 940 38, 35, 61, 34, 28, 30, 37, 37, 941 35, 27, 36, 3, 59, 38, 37, 32, 942 31, 29, 26, 33, 37, 33, 27, 27, 943 35, 34, 34, 40, 42, 33, 32, 29, 944 4, 5, 28, 24, 25, 35, 39, 38, 945 32, 23, 27, 32, 30, 35, 26, 34, 946 60, 36, 29, 22, 26, 41, 7, 30, 947 38, 30, 36, 29, 30, 41, 26, 25, 948 32, 34, 24, 39, 1, 25, 39, 32, 949 28, 29, 32, 38, 26, 36, 28, 63, 950 28, 39, 23, 21, 26, 35, 31, 35, 951 57, 31, 29, 29, 28, 30, 27, 35, 952 2, 38, 40, 34, 37, 29, 38, 43, 953 26, 32, 33, 42, 24, 40, 28, 32, 954 32, 32, 36, 32, 43, 25, 21, 31, 955 30, 31, 41, 29, 33, 37, 26, 37, 956 27, 59, 23, 33, 35, 31, 31, 37, 957 38, 39, 32, 23, 32, 27, 37, 36, 958 31, 40, 25, 27, 38, 31, 36, 28, 959 31, 36, 25, 45, 3, 34, 38, 39, 960 40, 38, 30, 32, 19, 24, 25, 26, 961 45, 20, 24, 33, 33, 31, 41, 34, 962 39, 47, 40, 58, 59, 41, 33, 3, 963 17, 61, 42, 30, 26, 29, 36, 61, 964 33, 37, 62, 28, 25, 38, 25, 38, 965 17, 23, 34, 33, 21, 33, 49, 27, 966 32, 23, 27, 22, 24, 22, 39, 43, 967 27, 37, 6, 42, 47, 26, 30, 31, 968 41, 39, 33, 22, 45, 36, 32, 45, 969 19, 22, 30, 5, 5, 17, 29, 22, 970 31, 31, 43, 37, 27, 32, 32, 32, 971 33, 34, 43, 35, 29, 26, 22, 32, 972 19, 32, 25, 31, 41, 49, 28, 34, 973 28, 39, 34, 19, 37, 38, 29, 21, 974 36, 42, 24, 48, 16, 28, 49, 22, 975 34, 31, 38, 39, 44, 11, 35, 30, 976 33, 33, 23, 28, 33, 46, 15, 13, 977 24, 41, 24, 34, 34, 30, 26, 24, 978 14, 60, 21, 29, 39, 23, 35, 37, 979 63, 45, 33, 34, 47, 41, 22, 42, 980 35, 35, 23, 32, 35, 43, 32, 7, 981 31, 41, 20, 31, 16, 13, 63, 25, 982 30, 32, 35, 30, 30, 31, 42, 47, 983 39, 38, 40, 40, 51, 55, 56, 18, 984 21, 39, 39, 33, 17, 41, 23, 24, 985 43, 25, 31, 20, 19, 45, 1, 34, 986 31, 22, 35, 15, 46, 46, 35, 31, 987 28, 29, 29, 23, 41, 27, 14, 53, 988 53, 27, 24, 32, 57, 32, 17, 42, 989 37, 29, 33, 1, 25, 32, 32, 63, 990 26, 40, 44, 36, 31, 39, 20, 20, 991 44, 23, 33, 34, 35, 33, 33, 28, 992 41, 23, 41, 41, 29, 25, 26, 49, 993 29, 24, 37, 49, 50, 51, 51, 26, 994 39, 25, 26, 15, 39, 18, 42, 17, 995 4, 31, 32, 32, 60, 1, 42, 32, 996 0, 12, 19, 35, 21, 41, 17, 26, 997 20, 45, 46, 32, 37, 22, 47, 29, 998 31, 27, 29, 30, 21, 33, 35, 18, 999 25, 33, 50, 51, 42, 2, 15, 51, 1000 53, 33, 25, 29, 55, 37, 38, 33, 1001 38, 59, 38, 33, 39, 13, 32, 40, 1002 61, 61, 32, 9, 44, 3, 31, 29, 1003 25, 31, 27, 23, 9, 25, 9, 29, 1004 20, 30, 30, 42, 18, 28, 25, 28, 1005 28, 21, 29, 43, 29, 43, 26, 44, 1006 44, 21, 38, 21, 24, 45, 45, 35, 1007 39, 22, 35, 36, 34, 34, 45, 34, 1008 29, 31, 46, 25, 46, 16, 17, 31, 1009 20, 32, 47, 47, 47, 32, 49, 49, 1010 49, 31, 1, 27, 28, 39, 39, 21, 1011 36, 23, 51, 2, 40, 51, 32, 53, 1012 24, 30, 24, 30, 21, 40, 57, 57, 1013 31, 41, 58, 32, 12, 4, 32, 34, 1014 59, 31, 32, 13, 9, 35, 26, 35, 1015 37, 61, 37, 63, 26, 29, 41, 38, 1016 23, 20, 41, 26, 41, 42, 42, 42, 1017 26, 26, 26, 26, 1, 26, 37, 37, 1018 37, 23, 34, 42, 27, 43, 34, 27, 1019 31, 24, 33, 16, 3, 31, 24, 33, 1020 24, 4, 44, 44, 11, 44, 31, 13, 1021 13, 44, 45, 13, 25, 22, 38, 26, 1022 38, 38, 39, 32, 30, 39, 30, 22, 1023 32, 26, 30, 47, 47, 47, 19, 47, 1024 30, 31, 35, 8, 23, 47, 47, 27, 1025 35, 47, 31, 48, 35, 19, 36, 49, 1026 49, 33, 31, 39, 27, 39, 49, 49, 1027 50, 50, 50, 39, 31, 51, 51, 39, 1028 28, 33, 33, 21, 40, 31, 52, 53, 1029 40, 53, 9, 33, 31, 53, 54, 54, 1030 54, 55, 55, 34, 15, 56, 25, 56, 1031 21, 21, 40, 40, 25, 40, 58, 36, 1032 5, 41, 41, 12, 60, 41, 41, 37, 1033 22, 61, 18, 29, 29, 30, 61, 30, 1034 61, 62, 62, 30, 30, 63, 18, 13, 1035 30, 23, 19, 20, 20, 41, 13, 2, 1036 5, 5, 1, 5, 32, 6, 32, 35, 1037 20, 35, 27, 35, 35, 36, 36, 13, 1038 36, 41, 41, 41, 3, 30, 42, 27, 1039 20, 30, 27, 28, 30, 21, 33, 33, 1040 14, 24, 30, 42, 24, 33, 25, 42, 1041 43, 14, 43, 43, 14, 43, 7, 36, 1042 37, 37, 37, 37, 7, 14, 25, 43, 1043 43, 44, 15, 37, 7, 7, 3, 1, 1044 8, 15, 15, 8, 44, 44, 44, 45, 1045 45, 45, 45, 8, 8, 45, 21, 45, 1046 28, 28, 28, 21, 28, 28, 22, 37, 1047 46, 46, 37, 8, 29, 37, 29, 22, 1048 46, 37, 22, 29, 47, 47, 38, 38, 1049 16, 38, 38, 33, 38, 22, 47, 47, 1050 29, 25, 16, 0, 48, 1, 34, 48, 1051 48, 34, 25, 26, 26, 49, 49, 26, 1052 1, 49, 4, 26, 4, 49, 1, 9, 1053 49, 49, 49, 10, 49, 17, 38, 17, 1054 17, 50, 38, 50, 50, 22, 38, 51, 1055 38, 38, 51, 39, 39, 18, 22, 39, 1056 51, 22, 52, 52, 52, 39, 53, 53, 1057 10, 23, 18, 29, 10, 53, 29, 54, 1058 11, 54, 11, 11, 55, 1, 18, 55, 1059 55, 55, 55, 55, 55, 29, 34, 18, 1060 29, 56, 56, 34, 57, 34, 34, 29, 1061 29, 57, 57, 35, 35, 35, 35, 35, 1062 39, 35, 59, 59, 18, 59, 39, 30, 1063 18, 40, 60, 60, 61, 30, 18, 61, 1064 61, 19, 19, 1065 }; 1066 1067 static const uint8_t table0_mvy[1099] = { 1068 32, 31, 32, 33, 32, 31, 31, 33, 1069 33, 34, 32, 30, 32, 35, 34, 31, 1070 32, 29, 33, 30, 32, 34, 33, 31, 1071 30, 35, 31, 31, 29, 33, 35, 30, 1072 29, 33, 34, 34, 30, 32, 32, 36, 1073 29, 32, 35, 32, 28, 32, 32, 27, 1074 35, 37, 34, 29, 30, 36, 35, 34, 1075 25, 30, 29, 35, 33, 31, 31, 32, 1076 31, 28, 39, 28, 29, 37, 31, 33, 1077 27, 36, 28, 36, 37, 33, 33, 31, 1078 27, 32, 31, 38, 26, 25, 25, 33, 1079 39, 31, 34, 30, 32, 32, 32, 34, 1080 36, 32, 28, 33, 30, 38, 37, 27, 1081 33, 28, 32, 37, 35, 38, 29, 34, 1082 27, 29, 29, 32, 32, 34, 35, 3, 1083 26, 36, 31, 38, 30, 26, 35, 34, 1084 37, 26, 25, 32, 32, 39, 23, 37, 1085 32, 32, 29, 32, 29, 36, 29, 30, 1086 41, 31, 30, 21, 39, 25, 34, 38, 1087 32, 35, 39, 32, 33, 33, 32, 27, 1088 29, 25, 28, 27, 26, 31, 30, 35, 1089 24, 24, 31, 34, 32, 30, 35, 40, 1090 28, 38, 5, 35, 29, 36, 36, 32, 1091 38, 30, 33, 31, 35, 26, 23, 38, 1092 32, 41, 28, 25, 37, 40, 37, 39, 1093 32, 36, 33, 39, 25, 26, 28, 31, 1094 28, 42, 23, 31, 33, 31, 39, 1, 1095 59, 22, 27, 4, 33, 34, 33, 24, 1096 41, 3, 35, 41, 41, 28, 36, 36, 1097 28, 33, 35, 21, 23, 21, 22, 37, 1098 27, 27, 43, 29, 60, 39, 27, 25, 1099 59, 34, 27, 27, 26, 40, 37, 27, 1100 61, 26, 39, 33, 31, 22, 37, 25, 1101 30, 25, 24, 61, 31, 34, 25, 38, 1102 32, 32, 30, 3, 61, 43, 29, 23, 1103 28, 32, 28, 32, 31, 34, 5, 33, 1104 32, 33, 33, 42, 37, 23, 38, 31, 1105 40, 26, 32, 26, 37, 38, 36, 24, 1106 29, 30, 20, 22, 29, 24, 32, 41, 1107 2, 34, 25, 33, 29, 31, 39, 35, 1108 36, 24, 32, 30, 33, 27, 44, 60, 1109 30, 36, 19, 34, 31, 24, 16, 35, 1110 32, 38, 21, 33, 31, 31, 21, 35, 1111 5, 17, 29, 38, 38, 18, 58, 19, 1112 43, 41, 30, 41, 43, 39, 29, 7, 1113 29, 17, 28, 19, 28, 31, 25, 19, 1114 40, 26, 21, 33, 39, 23, 40, 30, 1115 39, 34, 35, 32, 32, 24, 33, 30, 1116 40, 47, 39, 37, 32, 33, 24, 23, 1117 45, 47, 27, 23, 42, 32, 32, 33, 1118 36, 37, 37, 17, 18, 22, 40, 38, 1119 32, 31, 35, 24, 17, 25, 17, 23, 1120 33, 34, 51, 42, 31, 36, 36, 29, 1121 21, 22, 37, 44, 43, 25, 47, 33, 1122 45, 27, 31, 58, 31, 32, 31, 38, 1123 43, 20, 47, 45, 54, 1, 26, 34, 1124 38, 14, 22, 24, 33, 34, 32, 32, 1125 37, 21, 23, 49, 35, 23, 28, 39, 1126 39, 23, 55, 33, 30, 30, 63, 16, 1127 42, 28, 13, 33, 33, 35, 19, 46, 1128 43, 17, 19, 36, 39, 24, 31, 32, 1129 33, 26, 28, 62, 33, 63, 33, 39, 1130 19, 49, 17, 31, 43, 13, 15, 29, 1131 25, 35, 33, 23, 49, 41, 28, 29, 1132 34, 38, 7, 61, 11, 50, 13, 41, 1133 19, 47, 25, 26, 15, 42, 41, 29, 1134 45, 27, 17, 35, 32, 29, 32, 24, 1135 13, 26, 26, 31, 24, 33, 28, 30, 1136 31, 11, 45, 46, 33, 33, 35, 57, 1137 32, 32, 35, 45, 34, 11, 37, 42, 1138 39, 37, 31, 49, 21, 27, 29, 47, 1139 53, 40, 51, 16, 26, 1, 40, 30, 1140 41, 44, 34, 25, 27, 31, 35, 35, 1141 31, 15, 49, 1, 35, 40, 5, 58, 1142 21, 29, 22, 59, 45, 31, 9, 26, 1143 9, 29, 11, 32, 30, 3, 13, 20, 1144 18, 20, 11, 3, 29, 40, 31, 53, 1145 30, 17, 20, 37, 31, 42, 47, 47, 1146 54, 38, 9, 34, 13, 37, 21, 25, 1147 27, 43, 42, 45, 40, 25, 27, 46, 1148 22, 25, 53, 20, 2, 14, 39, 15, 1149 22, 44, 34, 21, 38, 33, 27, 48, 1150 34, 52, 35, 47, 49, 54, 2, 13, 1151 23, 52, 29, 45, 22, 49, 54, 21, 1152 40, 42, 31, 30, 29, 34, 0, 25, 1153 23, 51, 24, 59, 28, 38, 29, 31, 1154 2, 13, 31, 8, 31, 33, 12, 45, 1155 41, 7, 14, 30, 25, 18, 43, 20, 1156 43, 35, 44, 1, 49, 42, 42, 18, 1157 41, 38, 41, 44, 53, 11, 20, 25, 1158 45, 46, 47, 48, 39, 52, 46, 49, 1159 63, 55, 44, 38, 13, 13, 57, 22, 1160 51, 16, 12, 28, 35, 57, 25, 20, 1161 26, 28, 28, 29, 32, 31, 62, 34, 1162 35, 35, 19, 49, 48, 39, 40, 18, 1163 43, 46, 11, 6, 48, 19, 49, 41, 1164 10, 23, 58, 17, 21, 23, 34, 30, 1165 60, 0, 44, 34, 26, 37, 46, 43, 1166 49, 59, 4, 34, 59, 37, 22, 25, 1167 28, 46, 6, 40, 59, 42, 36, 61, 1168 28, 30, 31, 43, 10, 22, 23, 47, 1169 20, 52, 55, 36, 25, 16, 1, 11, 1170 27, 29, 5, 63, 18, 41, 31, 34, 1171 38, 1, 5, 13, 28, 31, 17, 38, 1172 39, 41, 36, 37, 22, 39, 33, 43, 1173 43, 15, 17, 49, 30, 21, 22, 20, 1174 10, 17, 25, 54, 57, 3, 34, 8, 1175 36, 25, 31, 14, 15, 19, 29, 25, 1176 18, 39, 53, 22, 27, 20, 29, 33, 1177 41, 42, 35, 62, 50, 29, 53, 50, 1178 35, 55, 42, 61, 63, 4, 7, 42, 1179 21, 46, 47, 49, 27, 46, 17, 55, 1180 41, 50, 63, 4, 56, 18, 8, 10, 1181 18, 51, 63, 36, 55, 18, 5, 55, 1182 9, 29, 17, 21, 30, 27, 1, 59, 1183 7, 11, 12, 15, 5, 42, 24, 41, 1184 43, 7, 27, 22, 25, 31, 30, 37, 1185 22, 39, 53, 29, 36, 37, 48, 0, 1186 5, 13, 17, 31, 32, 26, 46, 28, 1187 44, 45, 46, 53, 49, 51, 3, 41, 1188 3, 22, 42, 33, 5, 45, 7, 22, 1189 40, 53, 24, 14, 25, 27, 10, 12, 1190 34, 16, 17, 53, 20, 26, 39, 45, 1191 18, 45, 35, 33, 31, 49, 4, 39, 1192 42, 11, 51, 5, 13, 26, 27, 17, 1193 52, 30, 0, 22, 12, 34, 62, 36, 1194 38, 41, 47, 30, 63, 38, 41, 43, 1195 59, 33, 45, 37, 38, 40, 47, 24, 1196 48, 49, 30, 1, 10, 22, 49, 15, 1197 39, 59, 31, 32, 33, 18, 13, 15, 1198 31, 21, 27, 44, 42, 39, 46, 17, 1199 26, 32, 30, 31, 0, 30, 34, 9, 1200 12, 13, 25, 31, 32, 55, 43, 35, 1201 61, 33, 35, 46, 25, 47, 48, 62, 1202 63, 38, 61, 1, 2, 5, 7, 9, 1203 46, 10, 34, 35, 36, 55, 51, 7, 1204 40, 23, 34, 37, 5, 13, 42, 18, 1205 25, 27, 28, 1206 }; 1207 1208 /* motion vector table 1 */ 1209 static const uint16_t table1_mv_code[1100] = { 1210 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c, 1211 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041, 1212 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069, 1213 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8, 1214 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8, 1215 0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a, 1216 0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b, 1217 0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d, 1218 0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f, 1219 0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202, 1220 0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f, 1221 0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8, 1222 0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326, 1223 0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372, 1224 0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a, 1225 0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325, 1226 0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428, 1227 0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c, 1228 0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557, 1229 0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a, 1230 0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616, 1231 0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b, 1232 0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8, 1233 0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b, 1234 0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a, 1235 0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581, 1236 0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e, 1237 0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2, 1238 0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802, 1239 0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f, 1240 0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a, 1241 0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37, 1242 0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f, 1243 0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99, 1244 0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8, 1245 0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26, 1246 0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0, 1247 0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93, 1248 0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0, 1249 0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93, 1250 0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9, 1251 0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844, 1252 0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e, 1253 0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5, 1254 0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf, 1255 0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9, 1256 0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30, 1257 0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e, 1258 0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41, 1259 0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98, 1260 0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf, 1261 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded, 1262 0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032, 1263 0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077, 1264 0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9, 1265 0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404, 1266 0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 1267 0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468, 1268 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488, 1269 0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba, 1270 0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa, 1271 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c, 1272 0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e, 1273 0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b, 1274 0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4, 1275 0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843, 1276 0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862, 1277 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a, 1278 0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e, 1279 0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958, 1280 0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3, 1281 0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63, 1282 0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b, 1283 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa, 1284 0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2, 1285 0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86, 1286 0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007, 1287 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f, 1288 0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, 1289 0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f, 1290 0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358, 1291 0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360, 1292 0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620, 1293 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628, 1294 0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770, 1295 0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876, 1296 0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e, 1297 0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972, 1298 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a, 1299 0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6, 1300 0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c, 1301 0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54, 1302 0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034, 1303 0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c, 1304 0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba, 1305 0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2, 1306 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0, 1307 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8, 1308 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0, 1309 0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898, 1310 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0, 1311 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8, 1312 0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 1313 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 1314 0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 1315 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40, 1316 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 1317 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 1318 0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26, 1319 0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 1320 0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014, 1321 0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024, 1322 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 1323 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 1324 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de, 1325 0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e, 1326 0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 1327 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 1328 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378, 1329 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0, 1330 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8, 1331 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0, 1332 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8, 1333 0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 1334 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 1335 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 1336 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 1337 0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8, 1338 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0, 1339 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8, 1340 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000, 1341 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 1342 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182, 1343 0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba, 1344 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462, 1345 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a, 1346 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472, 1347 0x2473, 0x26a2, 0x26a3, 0x000b, 1348 }; 1349 1350 static const uint8_t table1_mv_bits[1100] = { 1351 2, 4, 4, 4, 5, 5, 5, 5, 1352 6, 6, 7, 7, 7, 7, 7, 8, 1353 8, 8, 8, 8, 8, 8, 8, 8, 1354 8, 8, 8, 8, 8, 8, 8, 8, 1355 8, 9, 9, 9, 9, 9, 9, 9, 1356 9, 9, 9, 9, 9, 9, 9, 9, 1357 9, 9, 9, 9, 9, 10, 10, 10, 1358 10, 10, 10, 10, 10, 10, 10, 10, 1359 10, 10, 10, 10, 10, 10, 10, 10, 1360 10, 10, 10, 10, 10, 10, 10, 10, 1361 10, 10, 10, 10, 10, 10, 10, 10, 1362 10, 10, 10, 10, 10, 10, 10, 10, 1363 10, 10, 10, 10, 10, 10, 10, 10, 1364 10, 10, 10, 10, 10, 10, 10, 10, 1365 10, 10, 10, 11, 11, 11, 11, 11, 1366 11, 11, 11, 11, 11, 11, 11, 11, 1367 11, 11, 11, 11, 11, 11, 11, 11, 1368 11, 11, 11, 11, 11, 11, 11, 11, 1369 11, 11, 11, 11, 11, 11, 11, 11, 1370 11, 11, 11, 11, 11, 11, 11, 11, 1371 11, 11, 11, 11, 11, 11, 11, 11, 1372 11, 11, 11, 11, 11, 11, 11, 11, 1373 11, 11, 11, 11, 11, 11, 11, 11, 1374 11, 11, 11, 11, 11, 11, 11, 11, 1375 11, 11, 11, 12, 12, 12, 12, 12, 1376 12, 12, 12, 12, 12, 12, 12, 12, 1377 12, 12, 12, 12, 12, 12, 12, 12, 1378 12, 12, 12, 12, 12, 12, 12, 12, 1379 12, 12, 12, 12, 12, 12, 12, 12, 1380 12, 12, 12, 12, 12, 12, 12, 12, 1381 12, 12, 12, 12, 12, 12, 12, 12, 1382 12, 12, 12, 12, 12, 12, 12, 12, 1383 12, 12, 12, 12, 12, 12, 12, 12, 1384 12, 12, 12, 12, 12, 12, 12, 12, 1385 12, 12, 12, 12, 12, 12, 12, 12, 1386 12, 12, 12, 12, 12, 12, 12, 12, 1387 12, 12, 12, 12, 12, 12, 12, 12, 1388 12, 12, 12, 12, 12, 12, 12, 12, 1389 12, 12, 12, 12, 12, 12, 12, 12, 1390 12, 12, 12, 12, 12, 12, 12, 12, 1391 12, 12, 12, 12, 12, 12, 12, 12, 1392 12, 12, 13, 13, 13, 13, 13, 13, 1393 13, 13, 13, 13, 13, 13, 13, 13, 1394 13, 13, 13, 13, 13, 13, 13, 13, 1395 13, 13, 13, 13, 13, 13, 13, 13, 1396 13, 13, 13, 13, 13, 13, 13, 13, 1397 13, 13, 13, 13, 13, 13, 13, 13, 1398 13, 13, 13, 13, 13, 13, 13, 13, 1399 13, 13, 13, 13, 13, 13, 13, 13, 1400 13, 13, 13, 13, 13, 13, 13, 13, 1401 13, 13, 13, 13, 13, 13, 13, 13, 1402 13, 13, 13, 13, 13, 13, 13, 13, 1403 13, 13, 13, 13, 13, 13, 13, 13, 1404 13, 13, 13, 13, 13, 13, 13, 13, 1405 13, 13, 13, 13, 13, 13, 13, 13, 1406 13, 13, 13, 13, 13, 13, 13, 13, 1407 13, 13, 13, 13, 13, 13, 13, 13, 1408 13, 13, 13, 13, 13, 13, 13, 13, 1409 13, 13, 13, 13, 13, 13, 13, 13, 1410 13, 13, 13, 13, 13, 13, 13, 13, 1411 13, 13, 13, 13, 13, 13, 13, 13, 1412 13, 13, 13, 13, 13, 13, 13, 13, 1413 13, 13, 13, 13, 13, 13, 13, 13, 1414 13, 13, 13, 13, 13, 13, 13, 13, 1415 13, 13, 13, 13, 13, 13, 13, 13, 1416 13, 13, 13, 13, 13, 13, 13, 13, 1417 13, 13, 13, 13, 13, 13, 13, 13, 1418 13, 13, 13, 13, 13, 13, 13, 13, 1419 13, 13, 13, 13, 13, 13, 13, 13, 1420 13, 13, 13, 13, 13, 13, 13, 13, 1421 13, 13, 13, 13, 13, 13, 13, 13, 1422 13, 13, 13, 13, 13, 13, 13, 13, 1423 13, 13, 13, 13, 13, 13, 13, 13, 1424 13, 13, 13, 13, 13, 13, 13, 13, 1425 13, 13, 13, 13, 13, 13, 13, 13, 1426 13, 13, 13, 13, 13, 13, 13, 13, 1427 13, 13, 13, 13, 13, 13, 13, 14, 1428 14, 14, 14, 14, 14, 14, 14, 14, 1429 14, 14, 14, 14, 14, 14, 14, 14, 1430 14, 14, 14, 14, 14, 14, 14, 14, 1431 14, 14, 14, 14, 14, 14, 14, 14, 1432 14, 14, 14, 14, 14, 14, 14, 14, 1433 14, 14, 14, 14, 14, 14, 14, 14, 1434 14, 14, 14, 14, 14, 14, 14, 14, 1435 14, 14, 14, 14, 14, 14, 14, 14, 1436 14, 14, 14, 14, 14, 14, 14, 14, 1437 14, 14, 14, 14, 14, 14, 14, 14, 1438 14, 14, 14, 14, 14, 14, 14, 14, 1439 14, 14, 14, 14, 14, 14, 14, 14, 1440 14, 14, 14, 14, 14, 14, 14, 14, 1441 14, 14, 14, 14, 14, 14, 14, 14, 1442 14, 14, 14, 14, 14, 14, 14, 14, 1443 14, 14, 14, 14, 14, 14, 14, 14, 1444 14, 14, 14, 14, 14, 14, 14, 14, 1445 14, 14, 14, 14, 14, 14, 14, 14, 1446 14, 14, 14, 14, 14, 14, 14, 14, 1447 14, 14, 14, 14, 14, 14, 14, 14, 1448 14, 14, 14, 14, 14, 14, 14, 14, 1449 14, 14, 14, 14, 14, 14, 14, 14, 1450 14, 14, 14, 14, 14, 14, 14, 14, 1451 14, 14, 14, 14, 14, 14, 14, 14, 1452 14, 14, 14, 14, 14, 14, 14, 14, 1453 14, 14, 14, 14, 14, 14, 14, 14, 1454 14, 14, 14, 14, 14, 14, 14, 14, 1455 14, 14, 14, 14, 14, 14, 14, 14, 1456 14, 14, 14, 14, 14, 14, 14, 14, 1457 14, 14, 14, 14, 14, 14, 14, 14, 1458 14, 14, 14, 14, 14, 14, 14, 14, 1459 14, 14, 14, 14, 14, 14, 14, 14, 1460 14, 14, 14, 14, 14, 14, 14, 14, 1461 14, 14, 14, 14, 14, 14, 14, 14, 1462 14, 14, 14, 14, 14, 14, 14, 14, 1463 14, 14, 14, 14, 14, 14, 14, 14, 1464 14, 14, 14, 14, 14, 14, 14, 14, 1465 14, 14, 14, 14, 14, 14, 14, 14, 1466 14, 14, 14, 14, 14, 14, 14, 14, 1467 14, 14, 14, 14, 14, 14, 14, 14, 1468 14, 14, 14, 14, 14, 14, 14, 14, 1469 14, 14, 14, 14, 14, 14, 14, 14, 1470 14, 14, 14, 14, 14, 14, 14, 14, 1471 14, 14, 14, 14, 14, 14, 14, 14, 1472 14, 14, 14, 14, 14, 14, 14, 14, 1473 14, 14, 14, 14, 14, 14, 14, 14, 1474 14, 14, 14, 14, 14, 14, 14, 14, 1475 14, 14, 14, 14, 14, 14, 14, 14, 1476 14, 14, 14, 14, 14, 14, 14, 14, 1477 14, 14, 14, 14, 14, 14, 14, 14, 1478 14, 14, 14, 14, 14, 14, 14, 14, 1479 14, 14, 14, 14, 14, 14, 14, 14, 1480 14, 14, 14, 14, 14, 14, 14, 14, 1481 14, 14, 14, 14, 14, 14, 14, 15, 1482 15, 15, 15, 15, 15, 15, 15, 15, 1483 15, 15, 15, 15, 15, 15, 15, 15, 1484 15, 15, 15, 15, 15, 15, 15, 15, 1485 15, 15, 15, 15, 15, 15, 15, 15, 1486 15, 15, 15, 15, 15, 15, 15, 15, 1487 15, 15, 15, 15, 15, 15, 15, 15, 1488 15, 15, 15, 4, 1489 }; 1490 1491 static const uint8_t table1_mvx[1099] = { 1492 32, 31, 32, 31, 33, 32, 33, 33, 1493 31, 34, 30, 32, 32, 34, 35, 32, 1494 34, 33, 29, 30, 30, 32, 31, 31, 1495 33, 35, 35, 33, 31, 29, 29, 33, 1496 34, 30, 31, 28, 36, 30, 34, 32, 1497 32, 37, 32, 32, 25, 27, 39, 32, 1498 32, 32, 38, 35, 36, 32, 37, 61, 1499 26, 32, 34, 35, 3, 35, 27, 28, 1500 29, 34, 28, 37, 31, 36, 32, 27, 1501 31, 30, 29, 39, 33, 29, 33, 35, 1502 25, 25, 29, 33, 31, 31, 31, 33, 1503 32, 30, 32, 32, 41, 39, 33, 36, 1504 32, 28, 34, 36, 38, 24, 60, 31, 1505 23, 28, 32, 33, 59, 32, 40, 30, 1506 5, 34, 32, 38, 32, 30, 43, 4, 1507 32, 32, 42, 31, 31, 32, 26, 38, 1508 26, 22, 21, 37, 61, 63, 37, 31, 1509 32, 33, 2, 1, 23, 33, 41, 27, 1510 35, 30, 38, 23, 33, 3, 28, 34, 1511 34, 27, 41, 29, 39, 35, 36, 29, 1512 32, 27, 30, 32, 24, 61, 37, 26, 1513 59, 25, 35, 27, 36, 37, 30, 31, 1514 34, 40, 3, 28, 34, 39, 32, 31, 1515 32, 30, 24, 28, 35, 36, 26, 32, 1516 31, 33, 29, 33, 39, 25, 30, 24, 1517 35, 59, 29, 34, 25, 30, 21, 35, 1518 43, 40, 32, 29, 5, 28, 31, 62, 1519 33, 33, 25, 31, 21, 31, 43, 31, 1520 34, 33, 20, 40, 39, 31, 31, 57, 1521 38, 32, 42, 33, 32, 31, 32, 29, 1522 30, 44, 5, 31, 22, 34, 36, 17, 1523 38, 58, 38, 35, 32, 60, 35, 24, 1524 32, 38, 16, 45, 42, 32, 31, 29, 1525 4, 30, 17, 40, 46, 48, 63, 32, 1526 42, 19, 41, 22, 28, 36, 45, 33, 1527 33, 32, 29, 7, 41, 42, 18, 33, 1528 33, 32, 22, 37, 1, 26, 22, 23, 1529 49, 28, 26, 27, 32, 33, 27, 23, 1530 28, 36, 15, 6, 34, 27, 31, 26, 1531 23, 2, 33, 32, 34, 41, 28, 32, 1532 41, 0, 36, 38, 34, 31, 47, 32, 1533 17, 31, 39, 33, 37, 51, 30, 47, 1534 32, 50, 32, 19, 63, 30, 25, 27, 1535 33, 62, 24, 31, 27, 30, 37, 31, 1536 45, 32, 39, 20, 46, 47, 35, 19, 1537 34, 1, 49, 21, 21, 14, 51, 26, 1538 23, 31, 36, 35, 58, 29, 29, 21, 1539 20, 42, 13, 28, 12, 40, 31, 33, 1540 39, 60, 32, 44, 33, 31, 28, 37, 1541 29, 32, 30, 49, 43, 28, 39, 25, 1542 32, 48, 2, 15, 20, 25, 31, 28, 1543 21, 24, 25, 15, 31, 17, 37, 43, 1544 18, 32, 33, 24, 33, 36, 13, 33, 1545 31, 39, 11, 31, 33, 32, 39, 37, 1546 32, 32, 29, 17, 44, 46, 36, 35, 1547 26, 37, 58, 32, 34, 38, 8, 38, 1548 38, 22, 29, 25, 16, 35, 32, 35, 1549 33, 43, 18, 46, 38, 50, 33, 18, 1550 53, 60, 13, 32, 36, 33, 51, 36, 1551 43, 45, 27, 42, 29, 24, 30, 25, 1552 31, 52, 31, 35, 38, 9, 22, 34, 1553 4, 17, 28, 55, 42, 25, 17, 20, 1554 47, 34, 33, 16, 40, 25, 16, 30, 1555 53, 29, 10, 11, 14, 26, 33, 4, 1556 35, 44, 26, 16, 31, 26, 34, 38, 1557 29, 31, 30, 24, 22, 61, 32, 9, 1558 45, 34, 31, 19, 9, 31, 46, 31, 1559 35, 54, 29, 57, 30, 50, 3, 31, 1560 63, 34, 47, 41, 51, 18, 31, 14, 1561 37, 38, 31, 24, 32, 31, 50, 33, 1562 31, 54, 27, 9, 33, 23, 19, 32, 1563 29, 29, 33, 28, 47, 49, 30, 47, 1564 33, 27, 25, 54, 44, 45, 50, 58, 1565 51, 48, 33, 59, 33, 34, 57, 13, 1566 26, 33, 13, 48, 30, 11, 7, 56, 1567 34, 55, 26, 0, 26, 35, 1, 51, 1568 33, 53, 31, 45, 12, 29, 29, 51, 1569 31, 48, 2, 6, 34, 30, 28, 33, 1570 60, 40, 27, 46, 31, 9, 35, 29, 1571 31, 39, 55, 46, 19, 37, 62, 34, 1572 30, 16, 19, 49, 41, 41, 39, 37, 1573 14, 5, 13, 35, 55, 30, 40, 40, 1574 42, 8, 20, 25, 45, 35, 33, 36, 1575 54, 38, 27, 37, 62, 40, 15, 59, 1576 49, 31, 29, 34, 34, 39, 24, 29, 1577 25, 29, 21, 29, 10, 61, 33, 49, 1578 35, 34, 3, 38, 39, 29, 7, 41, 1579 1, 35, 4, 23, 15, 23, 11, 37, 1580 28, 35, 30, 30, 24, 1, 43, 56, 1581 8, 34, 42, 24, 45, 30, 20, 23, 1582 8, 38, 22, 33, 17, 52, 34, 22, 1583 53, 43, 44, 1, 27, 31, 41, 43, 1584 41, 30, 31, 36, 30, 5, 55, 31, 1585 33, 30, 40, 23, 15, 29, 34, 34, 1586 59, 34, 30, 11, 13, 38, 5, 0, 1587 30, 42, 5, 30, 29, 34, 10, 44, 1588 30, 63, 35, 12, 3, 26, 15, 17, 1589 25, 34, 43, 39, 34, 56, 29, 23, 1590 30, 12, 30, 10, 35, 9, 24, 58, 1591 10, 12, 54, 33, 37, 20, 41, 35, 1592 29, 18, 61, 30, 40, 24, 39, 53, 1593 62, 26, 29, 33, 34, 53, 49, 21, 1594 27, 11, 63, 20, 26, 23, 7, 13, 1595 6, 47, 29, 30, 9, 51, 22, 34, 1596 21, 25, 33, 56, 57, 30, 38, 51, 1597 51, 38, 63, 28, 40, 35, 33, 18, 1598 33, 33, 24, 58, 58, 34, 49, 29, 1599 43, 4, 1, 4, 42, 35, 35, 30, 1600 17, 5, 56, 61, 25, 37, 36, 55, 1601 28, 35, 29, 50, 48, 52, 2, 42, 1602 34, 40, 46, 46, 43, 35, 29, 48, 1603 20, 29, 31, 41, 7, 30, 35, 19, 1604 14, 21, 8, 39, 39, 40, 46, 55, 1605 34, 6, 30, 34, 37, 25, 37, 33, 1606 22, 44, 52, 17, 35, 29, 36, 35, 1607 40, 37, 28, 30, 50, 14, 28, 55, 1608 6, 23, 19, 14, 30, 3, 30, 28, 1609 28, 61, 61, 47, 45, 48, 40, 40, 1610 34, 34, 25, 30, 29, 35, 4, 26, 1611 53, 50, 26, 41, 27, 59, 27, 38, 1612 39, 3, 50, 43, 47, 23, 33, 55, 1613 35, 21, 23, 35, 61, 33, 46, 52, 1614 35, 34, 24, 30, 43, 16, 37, 21, 1615 2, 24, 45, 34, 30, 55, 55, 1, 1616 29, 29, 26, 28, 25, 31, 36, 22, 1617 17, 30, 52, 2, 44, 44, 57, 26, 1618 62, 41, 39, 57, 26, 46, 49, 11, 1619 16, 19, 5, 59, 38, 39, 58, 38, 1620 25, 49, 50, 22, 28, 59, 9, 59, 1621 7, 28, 55, 17, 4, 35, 50, 21, 1622 29, 44, 47, 18, 24, 19, 25, 42, 1623 35, 3, 51, 35, 16, 35, 30, 63, 1624 57, 39, 39, 25, 35, 38, 9, 16, 1625 36, 45, 31, 60, 14, 34, 42, 24, 1626 0, 37, 18, 61, 57, 37, 28, 53, 1627 20, 46, 14, 47, 38, 38, 38, 9, 1628 34, 39, 43, 17, 39, 59, 5, 27, 1629 0, 12, 27, 1630 }; 1631 1632 static const uint8_t table1_mvy[1099] = { 1633 32, 32, 31, 31, 32, 33, 31, 33, 1634 33, 32, 32, 30, 34, 31, 32, 29, 1635 33, 30, 32, 33, 31, 35, 34, 30, 1636 34, 31, 33, 29, 29, 31, 33, 35, 1637 30, 30, 35, 32, 32, 34, 34, 28, 1638 25, 32, 36, 27, 32, 32, 32, 37, 1639 39, 3, 32, 30, 31, 26, 31, 32, 1640 32, 38, 29, 29, 32, 34, 31, 31, 1641 34, 35, 33, 33, 28, 33, 1, 33, 1642 27, 29, 30, 31, 28, 29, 37, 35, 1643 31, 33, 35, 27, 36, 37, 25, 25, 1644 61, 35, 4, 5, 32, 33, 36, 30, 1645 23, 30, 28, 34, 31, 32, 32, 39, 1646 32, 34, 21, 39, 32, 59, 32, 28, 1647 32, 36, 60, 33, 24, 36, 32, 32, 1648 41, 2, 32, 38, 26, 22, 33, 30, 1649 31, 32, 32, 30, 31, 32, 29, 3, 1650 40, 38, 32, 32, 33, 26, 31, 34, 1651 28, 38, 34, 31, 3, 31, 35, 38, 1652 27, 35, 33, 28, 29, 27, 29, 27, 1653 43, 29, 37, 63, 31, 33, 34, 30, 1654 31, 30, 37, 30, 35, 35, 26, 41, 1655 37, 31, 33, 28, 26, 30, 42, 24, 1656 7, 27, 33, 29, 36, 28, 34, 57, 1657 23, 41, 36, 23, 35, 34, 25, 30, 1658 25, 33, 25, 25, 29, 24, 33, 39, 1659 33, 33, 0, 37, 31, 36, 21, 32, 1660 61, 24, 35, 61, 31, 5, 31, 59, 1661 39, 21, 32, 30, 34, 22, 40, 32, 1662 29, 16, 31, 5, 62, 2, 20, 39, 1663 39, 32, 33, 1, 31, 24, 36, 32, 1664 36, 32, 28, 26, 6, 31, 38, 34, 1665 58, 35, 32, 33, 33, 17, 43, 26, 1666 31, 40, 31, 34, 32, 32, 31, 19, 1667 30, 32, 29, 33, 38, 38, 32, 59, 1668 40, 18, 38, 32, 35, 34, 32, 17, 1669 1, 15, 30, 28, 31, 28, 34, 29, 1670 32, 27, 35, 27, 49, 22, 37, 34, 1671 37, 26, 32, 32, 22, 28, 45, 29, 1672 30, 31, 43, 46, 41, 30, 26, 13, 1673 34, 32, 27, 38, 42, 42, 33, 47, 1674 33, 60, 27, 42, 25, 32, 22, 32, 1675 48, 32, 45, 33, 33, 41, 27, 25, 1676 19, 31, 35, 19, 36, 42, 27, 17, 1677 31, 44, 28, 33, 33, 31, 23, 31, 1678 40, 33, 31, 34, 30, 32, 33, 36, 1679 35, 47, 37, 41, 31, 23, 41, 29, 1680 30, 35, 32, 25, 32, 28, 58, 2, 1681 37, 33, 14, 33, 49, 20, 39, 36, 1682 21, 9, 23, 33, 35, 24, 39, 37, 1683 11, 33, 30, 31, 31, 28, 51, 40, 1684 35, 29, 25, 33, 46, 35, 37, 30, 1685 30, 8, 63, 28, 15, 40, 33, 45, 1686 49, 25, 32, 4, 47, 51, 36, 39, 1687 53, 10, 24, 29, 30, 31, 25, 40, 1688 38, 38, 33, 56, 23, 27, 32, 37, 1689 26, 29, 43, 36, 33, 24, 55, 43, 1690 9, 29, 34, 34, 24, 33, 18, 33, 1691 33, 30, 31, 50, 24, 60, 30, 39, 1692 34, 30, 39, 28, 22, 38, 2, 26, 1693 63, 32, 57, 21, 39, 33, 28, 18, 1694 30, 34, 22, 33, 29, 41, 30, 34, 1695 35, 21, 13, 34, 35, 39, 30, 46, 1696 32, 42, 32, 31, 33, 26, 11, 33, 1697 22, 31, 25, 31, 53, 27, 43, 25, 1698 40, 50, 21, 36, 38, 30, 12, 31, 1699 34, 20, 15, 29, 32, 62, 30, 13, 1700 17, 32, 19, 31, 20, 31, 30, 7, 1701 1, 17, 34, 37, 31, 31, 44, 34, 1702 26, 40, 16, 37, 52, 48, 30, 20, 1703 18, 33, 38, 29, 7, 25, 30, 54, 1704 45, 47, 46, 41, 29, 29, 16, 30, 1705 14, 26, 38, 34, 34, 29, 34, 30, 1706 29, 30, 57, 30, 4, 46, 33, 29, 1707 39, 44, 30, 31, 50, 33, 31, 32, 1708 19, 32, 40, 31, 37, 47, 1, 35, 1709 16, 31, 0, 35, 33, 1, 17, 34, 1710 9, 34, 33, 31, 49, 43, 42, 51, 1711 34, 29, 23, 29, 14, 30, 45, 49, 1712 11, 24, 31, 28, 35, 41, 30, 44, 1713 18, 29, 34, 35, 36, 25, 26, 21, 1714 31, 30, 34, 19, 34, 44, 36, 38, 1715 25, 31, 28, 23, 37, 3, 55, 41, 1716 30, 22, 41, 24, 33, 26, 35, 35, 1717 30, 55, 51, 47, 48, 38, 24, 15, 1718 21, 50, 25, 46, 30, 29, 10, 34, 1719 42, 45, 29, 42, 22, 3, 33, 27, 1720 34, 1, 34, 28, 34, 36, 35, 23, 1721 23, 13, 58, 3, 26, 63, 25, 31, 1722 34, 61, 38, 39, 25, 61, 29, 37, 1723 30, 41, 26, 48, 28, 33, 50, 35, 1724 30, 37, 29, 29, 40, 6, 39, 28, 1725 28, 19, 8, 22, 45, 34, 35, 10, 1726 58, 17, 37, 39, 30, 18, 54, 14, 1727 29, 16, 59, 30, 35, 23, 35, 30, 1728 47, 36, 29, 55, 20, 12, 31, 35, 1729 14, 29, 18, 34, 34, 24, 29, 26, 1730 22, 2, 27, 23, 8, 30, 55, 38, 1731 60, 31, 4, 34, 49, 34, 27, 34, 1732 33, 30, 31, 54, 42, 35, 38, 46, 1733 44, 26, 27, 9, 39, 25, 21, 29, 1734 28, 42, 13, 0, 5, 34, 37, 28, 1735 24, 29, 63, 26, 22, 27, 29, 25, 1736 33, 25, 61, 0, 35, 25, 36, 15, 1737 27, 40, 53, 33, 3, 10, 16, 37, 1738 38, 18, 30, 46, 27, 9, 6, 29, 1739 62, 8, 42, 28, 29, 3, 25, 16, 1740 26, 29, 35, 28, 27, 51, 61, 48, 1741 37, 9, 34, 7, 49, 45, 20, 29, 1742 21, 5, 5, 29, 28, 34, 29, 24, 1743 10, 24, 35, 36, 38, 55, 11, 36, 1744 38, 53, 54, 26, 30, 49, 20, 27, 1745 30, 39, 33, 41, 49, 22, 38, 38, 1746 4, 30, 8, 9, 3, 24, 22, 50, 1747 37, 36, 31, 27, 2, 9, 42, 63, 1748 25, 19, 44, 1, 28, 28, 48, 30, 1749 34, 41, 41, 38, 12, 27, 15, 0, 1750 16, 34, 35, 38, 28, 29, 40, 42, 1751 51, 52, 45, 54, 59, 59, 42, 44, 1752 37, 26, 46, 24, 15, 39, 22, 46, 1753 19, 35, 38, 17, 37, 23, 52, 55, 1754 50, 37, 26, 11, 37, 12, 24, 30, 1755 16, 13, 22, 13, 36, 35, 40, 41, 1756 34, 41, 26, 53, 51, 5, 21, 30, 1757 2, 63, 41, 20, 1, 56, 21, 24, 1758 25, 5, 28, 35, 26, 28, 30, 18, 1759 29, 23, 40, 34, 20, 42, 39, 34, 1760 28, 61, 38, 27, 62, 9, 36, 17, 1761 9, 49, 24, 25, 54, 34, 39, 37, 1762 3, 1, 25, 38, 38, 44, 35, 36, 1763 12, 60, 36, 38, 40, 25, 43, 39, 1764 53, 28, 39, 57, 46, 10, 52, 27, 1765 35, 42, 45, 59, 15, 60, 38, 24, 1766 23, 39, 12, 29, 24, 0, 20, 16, 1767 28, 43, 35, 28, 1, 49, 4, 21, 1768 42, 39, 29, 3, 44, 21, 53, 55, 1769 11, 5, 3, 39, 53, 28, 25, 19, 1770 34, 28, 21, 1771 }; 1772 1773 MVTable ff_mv_tables[2] = { 1774 { table0_mv_code, 1775 table0_mv_bits, 1776 table0_mvx, 1777 table0_mvy, }, 1778 { table1_mv_code, 1779 table1_mv_bits, 1780 table1_mvx, 1781 table1_mvy, } 1782 }; 1783 1784 const uint8_t ff_v2_mb_type[8][2] = { 1785 { 1, 1 }, { 0, 2 }, { 3, 3 }, { 9, 5 }, 1786 { 5, 4 }, { 0x21, 7 }, { 0x20, 7 }, { 0x11, 6 }, 1787 }; 1788 1789 const uint8_t ff_v2_intra_cbpc[4][2] = { 1790 { 1, 1 }, { 0, 3 }, { 1, 3 }, { 1, 2 }, 1791 }; 1792 1793 const uint8_t ff_wmv1_y_dc_scale_table[32] = { 1794 0, 8, 8, 8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 1795 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21 1796 }; 1797 const uint8_t ff_wmv1_c_dc_scale_table[32] = { 1798 0, 8, 8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 1799 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22 1800 }; 1801 1802 const uint8_t ff_old_ff_y_dc_scale_table[32] = { 1803 0, 8, 8, 8, 8, 10, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 1804 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 1805 }; 1806 1807 const uint8_t ff_wmv1_scantable[WMV1_SCANTABLE_COUNT][64] = { 1808 { 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 1809 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 1810 0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05, 1811 0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A, 1812 0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 1813 0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34, 1814 0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35, 1815 0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F, }, 1816 { 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11, 1817 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28, 1818 0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D, 1819 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A, 1820 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D, 1821 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25, 1822 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35, 1823 0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F, }, 1824 { 0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18, 1825 0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20, 1826 0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07, 1827 0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 1828 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D, 1829 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E, 1830 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35, 1831 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, }, 1832 { 0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09, 1833 0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29, 1834 0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13, 1835 0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C, 1836 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24, 1837 0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E, 1838 0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35, 1839 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F, } 1840 }; 1841 1842 const uint8_t ff_table_inter_intra[4][2] = { 1843 { 0, 1 } /* Luma-Left Chroma-Left */, 1844 { 2, 2 } /* Luma-Top Chroma-Left */, 1845 { 6, 3 } /* luma-Left Chroma-Top */, 1846 { 7, 3 } /* luma-Top Chroma-Top */ 1847 }; 1848 1849 static const uint32_t table_mb_non_intra2[128][2] = { 1850 { 0x0000A7, 14 }, { 0x01B2B8, 18 }, { 0x01B28E, 18 }, { 0x036575, 19 }, 1851 { 0x006CAC, 16 }, { 0x000A69, 18 }, { 0x002934, 20 }, { 0x00526B, 21 }, 1852 { 0x006CA1, 16 }, { 0x01B2B9, 18 }, { 0x0029AD, 20 }, { 0x029353, 24 }, 1853 { 0x006CA7, 16 }, { 0x006CAB, 16 }, { 0x01B2BB, 18 }, { 0x00029B, 16 }, 1854 { 0x00D944, 17 }, { 0x000A6A, 18 }, { 0x0149A8, 23 }, { 0x03651F, 19 }, 1855 { 0x006CAF, 16 }, { 0x000A4C, 18 }, { 0x03651E, 19 }, { 0x000A48, 18 }, 1856 { 0x00299C, 20 }, { 0x00299F, 20 }, { 0x029352, 24 }, { 0x0029AC, 20 }, 1857 { 0x000296, 16 }, { 0x00D946, 17 }, { 0x000A68, 18 }, { 0x000298, 16 }, 1858 { 0x000527, 17 }, { 0x00D94D, 17 }, { 0x0014D7, 19 }, { 0x036574, 19 }, 1859 { 0x000A5C, 18 }, { 0x01B299, 18 }, { 0x00299D, 20 }, { 0x00299E, 20 }, 1860 { 0x000525, 17 }, { 0x000A66, 18 }, { 0x00A4D5, 22 }, { 0x00149B, 19 }, 1861 { 0x000295, 16 }, { 0x006CAD, 16 }, { 0x000A49, 18 }, { 0x000521, 17 }, 1862 { 0x006CAA, 16 }, { 0x00D945, 17 }, { 0x01B298, 18 }, { 0x00052F, 17 }, 1863 { 0x003654, 15 }, { 0x006CA0, 16 }, { 0x000532, 17 }, { 0x000291, 16 }, 1864 { 0x003652, 15 }, { 0x000520, 17 }, { 0x000A5D, 18 }, { 0x000294, 16 }, 1865 { 0x00009B, 11 }, { 0x0006E2, 12 }, { 0x000028, 12 }, { 0x0001B0, 10 }, 1866 { 0x000001, 3 }, { 0x000010, 8 }, { 0x00002F, 6 }, { 0x00004C, 10 }, 1867 { 0x00000D, 4 }, { 0x000000, 10 }, { 0x000006, 9 }, { 0x000134, 12 }, 1868 { 0x00000C, 4 }, { 0x000007, 10 }, { 0x000007, 9 }, { 0x0006E1, 12 }, 1869 { 0x00000E, 5 }, { 0x0000DA, 9 }, { 0x000022, 9 }, { 0x000364, 11 }, 1870 { 0x00000F, 4 }, { 0x000006, 10 }, { 0x00000F, 9 }, { 0x000135, 12 }, 1871 { 0x000014, 5 }, { 0x0000DD, 9 }, { 0x000004, 9 }, { 0x000015, 11 }, 1872 { 0x00001A, 6 }, { 0x0001B3, 10 }, { 0x000005, 10 }, { 0x0006E3, 12 }, 1873 { 0x00000C, 5 }, { 0x0000B9, 8 }, { 0x000004, 8 }, { 0x0000DB, 9 }, 1874 { 0x00000E, 4 }, { 0x00000B, 10 }, { 0x000023, 9 }, { 0x0006CB, 12 }, 1875 { 0x000005, 6 }, { 0x0001B1, 10 }, { 0x000001, 10 }, { 0x0006E0, 12 }, 1876 { 0x000011, 5 }, { 0x0000DF, 9 }, { 0x00000E, 9 }, { 0x000373, 11 }, 1877 { 0x000003, 5 }, { 0x0000B8, 8 }, { 0x000006, 8 }, { 0x000175, 9 }, 1878 { 0x000015, 5 }, { 0x000174, 9 }, { 0x000027, 9 }, { 0x000372, 11 }, 1879 { 0x000010, 5 }, { 0x0000BB, 8 }, { 0x000005, 8 }, { 0x0000DE, 9 }, 1880 { 0x00000F, 5 }, { 0x000001, 9 }, { 0x000012, 8 }, { 0x000004, 10 }, 1881 { 0x000002, 3 }, { 0x000016, 5 }, { 0x000009, 4 }, { 0x000001, 5 }, 1882 }; 1883 1884 static const uint32_t table_mb_non_intra3[128][2] = { 1885 { 0x0002A1, 10 }, { 0x005740, 15 }, { 0x01A0BF, 18 }, { 0x015D19, 17 }, 1886 { 0x001514, 13 }, { 0x00461E, 15 }, { 0x015176, 17 }, { 0x015177, 17 }, 1887 { 0x0011AD, 13 }, { 0x00682E, 16 }, { 0x0682F9, 20 }, { 0x03417D, 19 }, 1888 { 0x001A36, 14 }, { 0x002A2D, 14 }, { 0x00D05E, 17 }, { 0x006824, 16 }, 1889 { 0x001515, 13 }, { 0x00545C, 15 }, { 0x0230E9, 18 }, { 0x011AFA, 17 }, 1890 { 0x0015D7, 13 }, { 0x005747, 15 }, { 0x008D79, 16 }, { 0x006825, 16 }, 1891 { 0x002BA2, 14 }, { 0x00A8BA, 16 }, { 0x0235F6, 18 }, { 0x015D18, 17 }, 1892 { 0x0011AE, 13 }, { 0x00346F, 15 }, { 0x008C3B, 16 }, { 0x00346E, 15 }, 1893 { 0x000D1A, 13 }, { 0x00461F, 15 }, { 0x0682F8, 20 }, { 0x011875, 17 }, 1894 { 0x002BA1, 14 }, { 0x008D61, 16 }, { 0x0235F7, 18 }, { 0x0230E8, 18 }, 1895 { 0x001513, 13 }, { 0x008D7B, 16 }, { 0x011AF4, 17 }, { 0x011AF5, 17 }, 1896 { 0x001185, 13 }, { 0x0046BF, 15 }, { 0x008D60, 16 }, { 0x008D7C, 16 }, 1897 { 0x001512, 13 }, { 0x00461C, 15 }, { 0x00AE8D, 16 }, { 0x008D78, 16 }, 1898 { 0x000D0E, 13 }, { 0x003413, 15 }, { 0x0046B1, 15 }, { 0x003416, 15 }, 1899 { 0x000AEA, 12 }, { 0x002A2C, 14 }, { 0x005741, 15 }, { 0x002A2F, 14 }, 1900 { 0x000158, 9 }, { 0x0008D2, 12 }, { 0x00054C, 11 }, { 0x000686, 12 }, 1901 { 0x000000, 2 }, { 0x000069, 8 }, { 0x00006B, 8 }, { 0x00068C, 12 }, 1902 { 0x000007, 3 }, { 0x00015E, 9 }, { 0x0002A3, 10 }, { 0x000AE9, 12 }, 1903 { 0x000006, 3 }, { 0x000231, 10 }, { 0x0002B8, 10 }, { 0x001A08, 14 }, 1904 { 0x000010, 5 }, { 0x0001A9, 10 }, { 0x000342, 11 }, { 0x000A88, 12 }, 1905 { 0x000004, 4 }, { 0x0001A2, 10 }, { 0x0002A4, 10 }, { 0x001184, 13 }, 1906 { 0x000012, 5 }, { 0x000232, 10 }, { 0x0002B2, 10 }, { 0x000680, 12 }, 1907 { 0x00001B, 6 }, { 0x00046A, 11 }, { 0x00068E, 12 }, { 0x002359, 14 }, 1908 { 0x000016, 5 }, { 0x00015F, 9 }, { 0x0002A0, 10 }, { 0x00054D, 11 }, 1909 { 0x000005, 4 }, { 0x000233, 10 }, { 0x0002B9, 10 }, { 0x0015D6, 13 }, 1910 { 0x000022, 6 }, { 0x000468, 11 }, { 0x000683, 12 }, { 0x001A0A, 14 }, 1911 { 0x000013, 5 }, { 0x000236, 10 }, { 0x0002BB, 10 }, { 0x001186, 13 }, 1912 { 0x000017, 5 }, { 0x0001AB, 10 }, { 0x0002A7, 10 }, { 0x0008D3, 12 }, 1913 { 0x000014, 5 }, { 0x000237, 10 }, { 0x000460, 11 }, { 0x000D0F, 13 }, 1914 { 0x000019, 6 }, { 0x0001AA, 10 }, { 0x0002B3, 10 }, { 0x000681, 12 }, 1915 { 0x000018, 6 }, { 0x0001A8, 10 }, { 0x0002A5, 10 }, { 0x00068F, 12 }, 1916 { 0x000007, 4 }, { 0x000055, 7 }, { 0x000047, 7 }, { 0x0000AD, 8 }, 1917 }; 1918 1919 static const uint32_t table_mb_non_intra4[128][2] = { 1920 { 0x0000D4, 8 }, { 0x0021C5, 14 }, { 0x00F18A, 16 }, { 0x00D5BC, 16 }, 1921 { 0x000879, 12 }, { 0x00354D, 14 }, { 0x010E3F, 17 }, { 0x010F54, 17 }, 1922 { 0x000866, 12 }, { 0x00356E, 14 }, { 0x010F55, 17 }, { 0x010E3E, 17 }, 1923 { 0x0010CE, 13 }, { 0x003C84, 14 }, { 0x00D5BD, 16 }, { 0x00F18B, 16 }, 1924 { 0x000868, 12 }, { 0x00438C, 15 }, { 0x0087AB, 16 }, { 0x00790B, 15 }, 1925 { 0x000F10, 12 }, { 0x00433D, 15 }, { 0x006AD3, 15 }, { 0x00790A, 15 }, 1926 { 0x001AA7, 13 }, { 0x0043D4, 15 }, { 0x00871E, 16 }, { 0x006ADF, 15 }, 1927 { 0x000D7C, 12 }, { 0x003C94, 14 }, { 0x00438D, 15 }, { 0x006AD2, 15 }, 1928 { 0x0006BC, 11 }, { 0x0021E9, 14 }, { 0x006ADA, 15 }, { 0x006A99, 15 }, 1929 { 0x0010F7, 13 }, { 0x004389, 15 }, { 0x006ADB, 15 }, { 0x0078C4, 15 }, 1930 { 0x000D56, 12 }, { 0x0035F7, 14 }, { 0x00438E, 15 }, { 0x006A98, 15 }, 1931 { 0x000D52, 12 }, { 0x003C95, 14 }, { 0x004388, 15 }, { 0x00433C, 15 }, 1932 { 0x000D54, 12 }, { 0x001E4B, 13 }, { 0x003C63, 14 }, { 0x003C83, 14 }, 1933 { 0x000861, 12 }, { 0x0021EB, 14 }, { 0x00356C, 14 }, { 0x0035F6, 14 }, 1934 { 0x000863, 12 }, { 0x00219F, 14 }, { 0x003568, 14 }, { 0x003C82, 14 }, 1935 { 0x0001AE, 9 }, { 0x0010C0, 13 }, { 0x000F11, 12 }, { 0x001AFA, 13 }, 1936 { 0x000000, 1 }, { 0x0000F0, 8 }, { 0x0001AD, 9 }, { 0x0010C1, 13 }, 1937 { 0x00000A, 4 }, { 0x0003C5, 10 }, { 0x000789, 11 }, { 0x001AB5, 13 }, 1938 { 0x000009, 4 }, { 0x000435, 11 }, { 0x000793, 11 }, { 0x001E40, 13 }, 1939 { 0x00001D, 5 }, { 0x0003CB, 10 }, { 0x000878, 12 }, { 0x001AAF, 13 }, 1940 { 0x00000B, 4 }, { 0x0003C7, 10 }, { 0x000791, 11 }, { 0x001AAB, 13 }, 1941 { 0x00001F, 5 }, { 0x000436, 11 }, { 0x0006BF, 11 }, { 0x000F19, 12 }, 1942 { 0x00003D, 6 }, { 0x000D51, 12 }, { 0x0010C4, 13 }, { 0x0021E8, 14 }, 1943 { 0x000036, 6 }, { 0x000437, 11 }, { 0x0006AF, 11 }, { 0x0010C5, 13 }, 1944 { 0x00000C, 4 }, { 0x000432, 11 }, { 0x000794, 11 }, { 0x001E30, 13 }, 1945 { 0x000042, 7 }, { 0x000870, 12 }, { 0x000F24, 12 }, { 0x001E43, 13 }, 1946 { 0x000020, 6 }, { 0x00043E, 11 }, { 0x000795, 11 }, { 0x001AAA, 13 }, 1947 { 0x000037, 6 }, { 0x0006AC, 11 }, { 0x0006AE, 11 }, { 0x0010F6, 13 }, 1948 { 0x000034, 6 }, { 0x00043A, 11 }, { 0x000D50, 12 }, { 0x001AAE, 13 }, 1949 { 0x000039, 6 }, { 0x00043F, 11 }, { 0x00078D, 11 }, { 0x0010D2, 13 }, 1950 { 0x000038, 6 }, { 0x00043B, 11 }, { 0x0006BD, 11 }, { 0x0010D3, 13 }, 1951 { 0x000011, 5 }, { 0x0001AC, 9 }, { 0x0000F3, 8 }, { 0x000439, 11 }, 1952 }; 1953 1954 const uint32_t (*const ff_wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2] = { 1955 table_mb_non_intra2, 1956 table_mb_non_intra3, 1957 table_mb_non_intra4, 1958 ff_table_mb_non_intra, 1959 }; 1960