• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

libavcodec/msmpeg4data.c

Go to the documentation of this file.
00001 /*
00002  * MSMPEG4 backend for ffmpeg encoder and decoder
00003  * copyright (c) 2001 Fabrice Bellard
00004  * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
00005  *
00006  * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at>
00007  *
00008  * This file is part of FFmpeg.
00009  *
00010  * FFmpeg is free software; you can redistribute it and/or
00011  * modify it under the terms of the GNU Lesser General Public
00012  * License as published by the Free Software Foundation; either
00013  * version 2.1 of the License, or (at your option) any later version.
00014  *
00015  * FFmpeg is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018  * Lesser General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU Lesser General Public
00021  * License along with FFmpeg; if not, write to the Free Software
00022  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00023  */
00024 
00030 #include "msmpeg4data.h"
00031 
00032 VLC ff_msmp4_mb_i_vlc;
00033 VLC ff_msmp4_dc_luma_vlc[2];
00034 VLC ff_msmp4_dc_chroma_vlc[2];
00035 
00036 /* intra picture macroblock coded block pattern */
00037 const uint16_t ff_msmp4_mb_i_table[64][2] = {
00038 {  0x1, 1 },{  0x17,  6 },{   0x9,  5 },{   0x5,  5 },
00039 {  0x6, 5 },{  0x47,  9 },{  0x20,  7 },{  0x10,  7 },
00040 {  0x2, 5 },{  0x7c,  9 },{  0x3a,  7 },{  0x1d,  7 },
00041 {  0x2, 6 },{  0xec,  9 },{  0x77,  8 },{   0x0,  8 },
00042 {  0x3, 5 },{  0xb7,  9 },{  0x2c,  7 },{  0x13,  7 },
00043 {  0x1, 6 },{ 0x168, 10 },{  0x46,  8 },{  0x3f,  8 },
00044 { 0x1e, 6 },{ 0x712, 13 },{  0xb5,  9 },{  0x42,  8 },
00045 { 0x22, 7 },{ 0x1c5, 11 },{ 0x11e, 10 },{  0x87,  9 },
00046 {  0x6, 4 },{   0x3,  9 },{  0x1e,  7 },{  0x1c,  6 },
00047 { 0x12, 7 },{ 0x388, 12 },{  0x44,  9 },{  0x70,  9 },
00048 { 0x1f, 6 },{ 0x23e, 11 },{  0x39,  8 },{  0x8e,  9 },
00049 {  0x1, 7 },{ 0x1c6, 11 },{  0xb6,  9 },{  0x45,  9 },
00050 { 0x14, 6 },{ 0x23f, 11 },{  0x7d,  9 },{  0x18,  9 },
00051 {  0x7, 7 },{ 0x1c7, 11 },{  0x86,  9 },{  0x19,  9 },
00052 { 0x15, 6 },{ 0x1db, 10 },{   0x2,  9 },{  0x46,  9 },
00053 {  0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
00054 };
00055 
00056 /* non intra picture macroblock coded block pattern + mb type */
00057 const uint32_t table_mb_non_intra[128][2] = {
00058 {   0x40,  7 },{   0x13c9, 13 },{   0x9fd, 12 },{   0x1fc, 15 },
00059 {  0x9fc, 12 },{    0xa83, 18 },{ 0x12d34, 17 },{  0x83bc, 16 },
00060 {  0x83a, 12 },{    0x7f8, 17 },{   0x3fd, 16 },{   0x3ff, 16 },
00061 {   0x79, 13 },{    0xa82, 18 },{  0x969d, 16 },{   0x2a4, 16 },
00062 {  0x978, 12 },{    0x543, 17 },{  0x41df, 15 },{   0x7f9, 17 },
00063 { 0x12f3, 13 },{  0x25a6b, 18 },{ 0x25ef9, 18 },{   0x3fa, 16 },
00064 { 0x20ee, 14 },{  0x969ab, 20 },{  0x969c, 16 },{ 0x25ef8, 18 },
00065 { 0x12d2, 13 },{    0xa85, 18 },{  0x969e, 16 },{  0x4bc8, 15 },
00066 {   0x3d, 12 },{  0x12f7f, 17 },{   0x2a2, 16 },{  0x969f, 16 },
00067 { 0x25ee, 14 },{ 0x12d355, 21 },{ 0x12f7d, 17 },{ 0x12f7e, 17 },
00068 {  0x9e5, 12 },{    0xa81, 18 },{ 0x4b4d4, 19 },{  0x83bd, 16 },
00069 {   0x78, 13 },{   0x969b, 16 },{   0x3fe, 16 },{   0x2a5, 16 },
00070 {   0x7e, 13 },{    0xa80, 18 },{   0x2a3, 16 },{   0x3fb, 16 },
00071 { 0x1076, 13 },{    0xa84, 18 },{   0x153, 15 },{  0x4bc9, 15 },
00072 {   0x55, 13 },{ 0x12d354, 21 },{  0x4bde, 15 },{  0x25e5, 14 },
00073 {  0x25b, 10 },{   0x4b4c, 15 },{   0x96b, 12 },{   0x96a, 12 },
00074 {    0x1,  2 },{      0x0,  7 },{    0x26,  6 },{   0x12b,  9 },
00075 {    0x7,  3 },{    0x20f, 10 },{     0x4,  9 },{    0x28, 12 },
00076 {    0x6,  3 },{    0x20a, 10 },{   0x128,  9 },{    0x2b, 12 },
00077 {   0x11,  5 },{     0x1b, 11 },{   0x13a,  9 },{   0x4ff, 11 },
00078 {    0x3,  4 },{    0x277, 10 },{   0x106,  9 },{   0x839, 12 },
00079 {    0xb,  4 },{    0x27b, 10 },{   0x12c,  9 },{   0x4bf, 11 },
00080 {    0x9,  6 },{     0x35, 12 },{   0x27e, 10 },{  0x13c8, 13 },
00081 {    0x1,  6 },{    0x4aa, 11 },{   0x208, 10 },{    0x29, 12 },
00082 {    0x1,  4 },{    0x254, 10 },{   0x12e,  9 },{   0x838, 12 },
00083 {   0x24,  6 },{    0x4f3, 11 },{   0x276, 10 },{  0x12f6, 13 },
00084 {    0x1,  5 },{    0x27a, 10 },{   0x13e,  9 },{    0x3e, 12 },
00085 {    0x8,  6 },{    0x413, 11 },{     0xc, 10 },{   0x4be, 11 },
00086 {   0x14,  5 },{    0x412, 11 },{   0x253, 10 },{   0x97a, 12 },
00087 {   0x21,  6 },{    0x4ab, 11 },{   0x20b, 10 },{    0x34, 12 },
00088 {   0x15,  5 },{    0x278, 10 },{   0x252, 10 },{   0x968, 12 },
00089 {    0x5,  5 },{      0xb, 10 },{    0x9c,  8 },{     0xe, 10 },
00090 };
00091 
00092 /* dc table 0 */
00093 
00094 const uint32_t ff_table0_dc_lum[120][2] = {
00095 {     0x1,  1 },{      0x1, 2 },{     0x1,  4 },{     0x1,  5 },
00096 {     0x5,  5 },{      0x7, 5 },{     0x8,  6 },{     0xc,  6 },
00097 {     0x0,  7 },{      0x2, 7 },{    0x12,  7 },{    0x1a,  7 },
00098 {     0x3,  8 },{      0x7, 8 },{    0x27,  8 },{    0x37,  8 },
00099 {     0x5,  9 },{     0x4c, 9 },{    0x6c,  9 },{    0x6d,  9 },
00100 {     0x8, 10 },{    0x19, 10 },{    0x9b, 10 },{    0x1b, 10 },
00101 {    0x9a, 10 },{    0x13, 11 },{    0x34, 11 },{    0x35, 11 },
00102 {    0x61, 12 },{    0x48, 13 },{    0xc4, 13 },{    0x4a, 13 },
00103 {    0xc6, 13 },{    0xc7, 13 },{    0x92, 14 },{   0x18b, 14 },
00104 {    0x93, 14 },{   0x183, 14 },{   0x182, 14 },{    0x96, 14 },
00105 {    0x97, 14 },{   0x180, 14 },{   0x314, 15 },{   0x315, 15 },
00106 {   0x605, 16 },{   0x604, 16 },{   0x606, 16 },{   0xc0e, 17 },
00107 { 0x303cd, 23 },{ 0x303c9, 23 },{ 0x303c8, 23 },{ 0x303ca, 23 },
00108 { 0x303cb, 23 },{ 0x303cc, 23 },{ 0x303ce, 23 },{ 0x303cf, 23 },
00109 { 0x303d0, 23 },{ 0x303d1, 23 },{ 0x303d2, 23 },{ 0x303d3, 23 },
00110 { 0x303d4, 23 },{ 0x303d5, 23 },{ 0x303d6, 23 },{ 0x303d7, 23 },
00111 { 0x303d8, 23 },{ 0x303d9, 23 },{ 0x303da, 23 },{ 0x303db, 23 },
00112 { 0x303dc, 23 },{ 0x303dd, 23 },{ 0x303de, 23 },{ 0x303df, 23 },
00113 { 0x303e0, 23 },{ 0x303e1, 23 },{ 0x303e2, 23 },{ 0x303e3, 23 },
00114 { 0x303e4, 23 },{ 0x303e5, 23 },{ 0x303e6, 23 },{ 0x303e7, 23 },
00115 { 0x303e8, 23 },{ 0x303e9, 23 },{ 0x303ea, 23 },{ 0x303eb, 23 },
00116 { 0x303ec, 23 },{ 0x303ed, 23 },{ 0x303ee, 23 },{ 0x303ef, 23 },
00117 { 0x303f0, 23 },{ 0x303f1, 23 },{ 0x303f2, 23 },{ 0x303f3, 23 },
00118 { 0x303f4, 23 },{ 0x303f5, 23 },{ 0x303f6, 23 },{ 0x303f7, 23 },
00119 { 0x303f8, 23 },{ 0x303f9, 23 },{ 0x303fa, 23 },{ 0x303fb, 23 },
00120 { 0x303fc, 23 },{ 0x303fd, 23 },{ 0x303fe, 23 },{ 0x303ff, 23 },
00121 { 0x60780, 24 },{ 0x60781, 24 },{ 0x60782, 24 },{ 0x60783, 24 },
00122 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
00123 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
00124 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
00125 };
00126 
00127 const uint32_t ff_table0_dc_chroma[120][2] = {
00128 {      0x0,  2 },{      0x1,  2 },{      0x5,  3 },{      0x9,  4 },
00129 {      0xd,  4 },{     0x11,  5 },{     0x1d,  5 },{     0x1f,  5 },
00130 {     0x21,  6 },{     0x31,  6 },{     0x38,  6 },{     0x33,  6 },
00131 {     0x39,  6 },{     0x3d,  6 },{     0x61,  7 },{     0x79,  7 },
00132 {     0x80,  8 },{     0xc8,  8 },{     0xca,  8 },{     0xf0,  8 },
00133 {     0x81,  8 },{     0xc0,  8 },{     0xc9,  8 },{    0x107,  9 },
00134 {    0x106,  9 },{    0x196,  9 },{    0x183,  9 },{    0x1e3,  9 },
00135 {    0x1e2,  9 },{    0x20a, 10 },{    0x20b, 10 },{    0x609, 11 },
00136 {    0x412, 11 },{    0x413, 11 },{    0x60b, 11 },{    0x411, 11 },
00137 {    0x60a, 11 },{    0x65f, 11 },{    0x410, 11 },{    0x65d, 11 },
00138 {    0x65e, 11 },{    0xcb8, 12 },{    0xc10, 12 },{    0xcb9, 12 },
00139 {   0x1823, 13 },{   0x3045, 14 },{   0x6089, 15 },{   0xc110, 16 },
00140 { 0x304448, 22 },{ 0x304449, 22 },{ 0x30444a, 22 },{ 0x30444b, 22 },
00141 { 0x30444c, 22 },{ 0x30444d, 22 },{ 0x30444e, 22 },{ 0x30444f, 22 },
00142 { 0x304450, 22 },{ 0x304451, 22 },{ 0x304452, 22 },{ 0x304453, 22 },
00143 { 0x304454, 22 },{ 0x304455, 22 },{ 0x304456, 22 },{ 0x304457, 22 },
00144 { 0x304458, 22 },{ 0x304459, 22 },{ 0x30445a, 22 },{ 0x30445b, 22 },
00145 { 0x30445c, 22 },{ 0x30445d, 22 },{ 0x30445e, 22 },{ 0x30445f, 22 },
00146 { 0x304460, 22 },{ 0x304461, 22 },{ 0x304462, 22 },{ 0x304463, 22 },
00147 { 0x304464, 22 },{ 0x304465, 22 },{ 0x304466, 22 },{ 0x304467, 22 },
00148 { 0x304468, 22 },{ 0x304469, 22 },{ 0x30446a, 22 },{ 0x30446b, 22 },
00149 { 0x30446c, 22 },{ 0x30446d, 22 },{ 0x30446e, 22 },{ 0x30446f, 22 },
00150 { 0x304470, 22 },{ 0x304471, 22 },{ 0x304472, 22 },{ 0x304473, 22 },
00151 { 0x304474, 22 },{ 0x304475, 22 },{ 0x304476, 22 },{ 0x304477, 22 },
00152 { 0x304478, 22 },{ 0x304479, 22 },{ 0x30447a, 22 },{ 0x30447b, 22 },
00153 { 0x30447c, 22 },{ 0x30447d, 22 },{ 0x30447e, 22 },{ 0x30447f, 22 },
00154 { 0x608880, 23 },{ 0x608881, 23 },{ 0x608882, 23 },{ 0x608883, 23 },
00155 { 0x608884, 23 },{ 0x608885, 23 },{ 0x608886, 23 },{ 0x608887, 23 },
00156 { 0x608888, 23 },{ 0x608889, 23 },{ 0x60888a, 23 },{ 0x60888b, 23 },
00157 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
00158 };
00159 
00160 /* dc table 1 */
00161 
00162 const uint32_t ff_table1_dc_lum[120][2] = {
00163 {      0x2,  2 },{      0x3,  2 },{      0x3,  3 },{      0x2,  4 },
00164 {      0x5,  4 },{      0x1,  5 },{      0x3,  5 },{      0x8,  5 },
00165 {      0x0,  6 },{      0x5,  6 },{      0xd,  6 },{      0xf,  6 },
00166 {     0x13,  6 },{      0x8,  7 },{     0x18,  7 },{     0x1c,  7 },
00167 {     0x24,  7 },{      0x4,  8 },{      0x6,  8 },{     0x12,  8 },
00168 {     0x32,  8 },{     0x3b,  8 },{     0x4a,  8 },{     0x4b,  8 },
00169 {      0xb,  9 },{     0x26,  9 },{     0x27,  9 },{     0x66,  9 },
00170 {     0x74,  9 },{     0x75,  9 },{     0x14, 10 },{     0x1c, 10 },
00171 {     0x1f, 10 },{     0x1d, 10 },{     0x2b, 11 },{     0x3d, 11 },
00172 {    0x19d, 11 },{    0x19f, 11 },{     0x54, 12 },{    0x339, 12 },
00173 {    0x338, 12 },{    0x33d, 12 },{     0xab, 13 },{     0xf1, 13 },
00174 {    0x678, 13 },{     0xf2, 13 },{    0x1e0, 14 },{    0x1e1, 14 },
00175 {    0x154, 14 },{    0xcf2, 14 },{    0x3cc, 15 },{    0x2ab, 15 },
00176 {   0x19e7, 15 },{    0x3ce, 15 },{   0x19e6, 15 },{    0x554, 16 },
00177 {    0x79f, 16 },{    0x555, 16 },{    0xf3d, 17 },{    0xf37, 17 },
00178 {    0xf3c, 17 },{    0xf35, 17 },{   0x1e6d, 18 },{   0x1e68, 18 },
00179 {   0x3cd8, 19 },{   0x3cd3, 19 },{   0x3cd9, 19 },{   0x79a4, 20 },
00180 {  0xf34ba, 25 },{  0xf34b4, 25 },{  0xf34b5, 25 },{  0xf34b6, 25 },
00181 {  0xf34b7, 25 },{  0xf34b8, 25 },{  0xf34b9, 25 },{  0xf34bb, 25 },
00182 {  0xf34bc, 25 },{  0xf34bd, 25 },{  0xf34be, 25 },{  0xf34bf, 25 },
00183 { 0x1e6940, 26 },{ 0x1e6941, 26 },{ 0x1e6942, 26 },{ 0x1e6943, 26 },
00184 { 0x1e6944, 26 },{ 0x1e6945, 26 },{ 0x1e6946, 26 },{ 0x1e6947, 26 },
00185 { 0x1e6948, 26 },{ 0x1e6949, 26 },{ 0x1e694a, 26 },{ 0x1e694b, 26 },
00186 { 0x1e694c, 26 },{ 0x1e694d, 26 },{ 0x1e694e, 26 },{ 0x1e694f, 26 },
00187 { 0x1e6950, 26 },{ 0x1e6951, 26 },{ 0x1e6952, 26 },{ 0x1e6953, 26 },
00188 { 0x1e6954, 26 },{ 0x1e6955, 26 },{ 0x1e6956, 26 },{ 0x1e6957, 26 },
00189 { 0x1e6958, 26 },{ 0x1e6959, 26 },{ 0x1e695a, 26 },{ 0x1e695b, 26 },
00190 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
00191 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
00192 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
00193 };
00194 
00195 const uint32_t ff_table1_dc_chroma[120][2] = {
00196 {       0x0,  2 },{       0x1,  2 },{       0x4,  3 },{       0x7,  3 },
00197 {       0xb,  4 },{       0xd,  4 },{      0x15,  5 },{      0x28,  6 },
00198 {      0x30,  6 },{      0x32,  6 },{      0x52,  7 },{      0x62,  7 },
00199 {      0x66,  7 },{      0xa6,  8 },{      0xc6,  8 },{      0xcf,  8 },
00200 {     0x14f,  9 },{     0x18e,  9 },{     0x19c,  9 },{     0x29d, 10 },
00201 {     0x33a, 10 },{     0x538, 11 },{     0x63c, 11 },{     0x63e, 11 },
00202 {     0x63f, 11 },{     0x676, 11 },{     0xa73, 12 },{     0xc7a, 12 },
00203 {     0xcef, 12 },{    0x14e5, 13 },{    0x19dd, 13 },{    0x29c8, 14 },
00204 {    0x29c9, 14 },{    0x63dd, 15 },{    0x33b8, 14 },{    0x33b9, 14 },
00205 {    0xc7b6, 16 },{    0x63d8, 15 },{    0x63df, 15 },{    0xc7b3, 16 },
00206 {    0xc7b4, 16 },{    0xc7b5, 16 },{    0x63de, 15 },{    0xc7b7, 16 },
00207 {    0xc7b8, 16 },{    0xc7b9, 16 },{   0x18f65, 17 },{   0x31ec8, 18 },
00208 {  0xc7b248, 24 },{  0xc7b249, 24 },{  0xc7b24a, 24 },{  0xc7b24b, 24 },
00209 {  0xc7b24c, 24 },{  0xc7b24d, 24 },{  0xc7b24e, 24 },{  0xc7b24f, 24 },
00210 {  0xc7b250, 24 },{  0xc7b251, 24 },{  0xc7b252, 24 },{  0xc7b253, 24 },
00211 {  0xc7b254, 24 },{  0xc7b255, 24 },{  0xc7b256, 24 },{  0xc7b257, 24 },
00212 {  0xc7b258, 24 },{  0xc7b259, 24 },{  0xc7b25a, 24 },{  0xc7b25b, 24 },
00213 {  0xc7b25c, 24 },{  0xc7b25d, 24 },{  0xc7b25e, 24 },{  0xc7b25f, 24 },
00214 {  0xc7b260, 24 },{  0xc7b261, 24 },{  0xc7b262, 24 },{  0xc7b263, 24 },
00215 {  0xc7b264, 24 },{  0xc7b265, 24 },{  0xc7b266, 24 },{  0xc7b267, 24 },
00216 {  0xc7b268, 24 },{  0xc7b269, 24 },{  0xc7b26a, 24 },{  0xc7b26b, 24 },
00217 {  0xc7b26c, 24 },{  0xc7b26d, 24 },{  0xc7b26e, 24 },{  0xc7b26f, 24 },
00218 {  0xc7b270, 24 },{  0xc7b271, 24 },{  0xc7b272, 24 },{  0xc7b273, 24 },
00219 {  0xc7b274, 24 },{  0xc7b275, 24 },{  0xc7b276, 24 },{  0xc7b277, 24 },
00220 {  0xc7b278, 24 },{  0xc7b279, 24 },{  0xc7b27a, 24 },{  0xc7b27b, 24 },
00221 {  0xc7b27c, 24 },{  0xc7b27d, 24 },{  0xc7b27e, 24 },{  0xc7b27f, 24 },
00222 { 0x18f6480, 25 },{ 0x18f6481, 25 },{ 0x18f6482, 25 },{ 0x18f6483, 25 },
00223 { 0x18f6484, 25 },{ 0x18f6485, 25 },{ 0x18f6486, 25 },{ 0x18f6487, 25 },
00224 { 0x18f6488, 25 },{ 0x18f6489, 25 },{ 0x18f648a, 25 },{ 0x18f648b, 25 },
00225 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
00226 };
00227 
00228 /* vlc table 0, for intra luma */
00229 
00230 static const uint16_t table0_vlc[133][2] = {
00231 {   0x1,  2 },{   0x6,  3 },{   0xf,  4 },{  0x16,  5 },
00232 {  0x20,  6 },{  0x18,  7 },{   0x8,  8 },{  0x9a,  8 },
00233 {  0x56,  9 },{ 0x13e,  9 },{  0xf0, 10 },{ 0x3a5, 10 },
00234 {  0x77, 11 },{ 0x1ef, 11 },{  0x9a, 12 },{  0x5d, 13 },
00235 {   0x1,  4 },{  0x11,  5 },{   0x2,  7 },{   0xb,  8 },
00236 {  0x12,  9 },{ 0x1d6,  9 },{ 0x27e, 10 },{ 0x191, 11 },
00237 {  0xea, 12 },{ 0x3dc, 12 },{ 0x13b, 13 },{   0x4,  5 },
00238 {  0x14,  7 },{  0x9e,  8 },{   0x9, 10 },{ 0x1ac, 11 },
00239 { 0x1e2, 11 },{ 0x3ca, 12 },{  0x5f, 13 },{  0x17,  5 },
00240 {  0x4e,  7 },{  0x5e,  9 },{  0xf3, 10 },{ 0x1ad, 11 },
00241 {  0xec, 12 },{ 0x5f0, 13 },{   0xe,  6 },{  0xe1,  8 },
00242 { 0x3a4, 10 },{  0x9c, 12 },{ 0x13d, 13 },{  0x3b,  6 },
00243 {  0x1c,  9 },{  0x14, 11 },{ 0x9be, 12 },{   0x6,  7 },
00244 {  0x7a,  9 },{ 0x190, 11 },{ 0x137, 13 },{  0x1b,  7 },
00245 {   0x8, 10 },{ 0x75c, 11 },{  0x71,  7 },{  0xd7, 10 },
00246 { 0x9bf, 12 },{   0x7,  8 },{  0xaf, 10 },{ 0x4cc, 11 },
00247 {  0x34,  8 },{ 0x265, 10 },{  0x9f, 12 },{  0xe0,  8 },
00248 {  0x16, 11 },{ 0x327, 12 },{  0x15,  9 },{ 0x17d, 11 },
00249 { 0xebb, 12 },{  0x14,  9 },{  0xf6, 10 },{ 0x1e4, 11 },
00250 {  0xcb, 10 },{ 0x99d, 12 },{  0xca, 10 },{ 0x2fc, 12 },
00251 { 0x17f, 11 },{ 0x4cd, 11 },{ 0x2fd, 12 },{ 0x4fe, 11 },
00252 { 0x13a, 13 },{   0xa,  4 },{  0x42,  7 },{ 0x1d3,  9 },
00253 { 0x4dd, 11 },{  0x12,  5 },{  0xe8,  8 },{  0x4c, 11 },
00254 { 0x136, 13 },{  0x39,  6 },{ 0x264, 10 },{ 0xeba, 12 },
00255 {   0x0,  7 },{  0xae, 10 },{ 0x99c, 12 },{  0x1f,  7 },
00256 { 0x4de, 11 },{  0x43,  7 },{ 0x4dc, 11 },{   0x3,  8 },
00257 { 0x3cb, 12 },{   0x6,  8 },{ 0x99e, 12 },{  0x2a,  8 },
00258 { 0x5f1, 13 },{   0xf,  8 },{ 0x9fe, 12 },{  0x33,  8 },
00259 { 0x9ff, 12 },{  0x98,  8 },{ 0x99f, 12 },{  0xea,  8 },
00260 { 0x13c, 13 },{  0x2e,  8 },{ 0x192, 11 },{ 0x136,  9 },
00261 {  0x6a,  9 },{  0x15, 11 },{ 0x3af, 10 },{ 0x1e3, 11 },
00262 {  0x74, 11 },{  0xeb, 12 },{ 0x2f9, 12 },{  0x5c, 13 },
00263 {  0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{  0x5e, 13 },
00264 {  0x16,  7 },
00265 };
00266 
00267 static const int8_t table0_level[132] = {
00268   1,  2,  3,  4,  5,  6,  7,  8,
00269   9, 10, 11, 12, 13, 14, 15, 16,
00270   1,  2,  3,  4,  5,  6,  7,  8,
00271   9, 10, 11,  1,  2,  3,  4,  5,
00272   6,  7,  8,  1,  2,  3,  4,  5,
00273   6,  7,  1,  2,  3,  4,  5,  1,
00274   2,  3,  4,  1,  2,  3,  4,  1,
00275   2,  3,  1,  2,  3,  1,  2,  3,
00276   1,  2,  3,  1,  2,  3,  1,  2,
00277   3,  1,  2,  3,  1,  2,  1,  2,
00278   1,  1,  1,  1,  1,  1,  2,  3,
00279   4,  1,  2,  3,  4,  1,  2,  3,
00280   1,  2,  3,  1,  2,  1,  2,  1,
00281   2,  1,  2,  1,  2,  1,  2,  1,
00282   2,  1,  2,  1,  2,  1,  2,  1,
00283   1,  1,  1,  1,  1,  1,  1,  1,
00284   1,  1,  1,  1,
00285 };
00286 
00287 static const int8_t table0_run[132] = {
00288   0,  0,  0,  0,  0,  0,  0,  0,
00289   0,  0,  0,  0,  0,  0,  0,  0,
00290   1,  1,  1,  1,  1,  1,  1,  1,
00291   1,  1,  1,  2,  2,  2,  2,  2,
00292   2,  2,  2,  3,  3,  3,  3,  3,
00293   3,  3,  4,  4,  4,  4,  4,  5,
00294   5,  5,  5,  6,  6,  6,  6,  7,
00295   7,  7,  8,  8,  8,  9,  9,  9,
00296  10, 10, 10, 11, 11, 11, 12, 12,
00297  12, 13, 13, 13, 14, 14, 15, 15,
00298  16, 17, 18, 19, 20,  0,  0,  0,
00299   0,  1,  1,  1,  1,  2,  2,  2,
00300   3,  3,  3,  4,  4,  5,  5,  6,
00301   6,  7,  7,  8,  8,  9,  9, 10,
00302  10, 11, 11, 12, 12, 13, 13, 14,
00303  15, 16, 17, 18, 19, 20, 21, 22,
00304  23, 24, 25, 26,
00305 };
00306 
00307 /* vlc table 1, for intra chroma and P macroblocks */
00308 
00309 static const uint16_t table1_vlc[149][2] = {
00310 {    0x4,  3 },{   0x14,  5 },{   0x17,  7 },{   0x7f,  8 },
00311 {  0x154,  9 },{  0x1f2, 10 },{   0xbf, 11 },{   0x65, 12 },
00312 {  0xaaa, 12 },{  0x630, 13 },{ 0x1597, 13 },{  0x3b7, 14 },
00313 { 0x2b22, 14 },{  0xbe6, 15 },{    0xb,  4 },{   0x37,  7 },
00314 {   0x62,  9 },{    0x7, 11 },{  0x166, 12 },{   0xce, 13 },
00315 { 0x1590, 13 },{  0x5f6, 14 },{  0xbe7, 15 },{    0x7,  5 },
00316 {   0x6d,  8 },{    0x3, 11 },{  0x31f, 12 },{  0x5f2, 14 },
00317 {    0x2,  6 },{   0x61,  9 },{   0x55, 12 },{  0x1df, 14 },
00318 {   0x1a,  6 },{   0x1e, 10 },{  0xac9, 12 },{ 0x2b23, 14 },
00319 {   0x1e,  6 },{   0x1f, 10 },{  0xac3, 12 },{ 0x2b2b, 14 },
00320 {    0x6,  7 },{    0x4, 11 },{  0x2f8, 13 },{   0x19,  7 },
00321 {    0x6, 11 },{  0x63d, 13 },{   0x57,  7 },{  0x182, 11 },
00322 { 0x2aa2, 14 },{    0x4,  8 },{  0x180, 11 },{  0x59c, 14 },
00323 {   0x7d,  8 },{  0x164, 12 },{  0x76d, 15 },{    0x2,  9 },
00324 {  0x18d, 11 },{ 0x1581, 13 },{   0xad,  8 },{   0x60, 12 },
00325 {  0xc67, 14 },{   0x1c,  9 },{   0xee, 13 },{    0x3,  9 },
00326 {  0x2cf, 13 },{   0xd9,  9 },{ 0x1580, 13 },{    0x2, 11 },
00327 {  0x183, 11 },{   0x57, 12 },{   0x61, 12 },{   0x31, 11 },
00328 {   0x66, 12 },{  0x631, 13 },{  0x632, 13 },{   0xac, 13 },
00329 {  0x31d, 12 },{   0x76, 12 },{   0x3a, 11 },{  0x165, 12 },
00330 {  0xc66, 14 },{    0x3,  2 },{   0x54,  7 },{  0x2ab, 10 },
00331 {   0x16, 13 },{  0x5f7, 14 },{    0x5,  4 },{   0xf8,  9 },
00332 {  0xaa9, 12 },{   0x5f, 15 },{    0x4,  4 },{   0x1c, 10 },
00333 { 0x1550, 13 },{    0x4,  5 },{   0x77, 11 },{  0x76c, 15 },
00334 {    0xe,  5 },{    0xa, 12 },{    0xc,  5 },{  0x562, 11 },
00335 {    0x4,  6 },{  0x31c, 12 },{    0x6,  6 },{   0xc8, 13 },
00336 {    0xd,  6 },{  0x1da, 13 },{    0x7,  6 },{   0xc9, 13 },
00337 {    0x1,  7 },{   0x2e, 14 },{   0x14,  7 },{ 0x1596, 13 },
00338 {    0xa,  7 },{  0xac2, 12 },{   0x16,  7 },{  0x15b, 14 },
00339 {   0x15,  7 },{  0x15a, 14 },{    0xf,  8 },{   0x5e, 15 },
00340 {   0x7e,  8 },{   0xab,  8 },{   0x2d,  9 },{   0xd8,  9 },
00341 {    0xb,  9 },{   0x14, 10 },{  0x2b3, 10 },{  0x1f3, 10 },
00342 {   0x3a, 10 },{    0x0, 10 },{   0x58, 10 },{   0x2e,  9 },
00343 {   0x5e, 10 },{  0x563, 11 },{   0xec, 12 },{   0x54, 12 },
00344 {  0xac1, 12 },{ 0x1556, 13 },{  0x2fa, 13 },{  0x181, 11 },
00345 { 0x1557, 13 },{  0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
00346 {  0x1de, 14 },{  0x63c, 13 },{   0xcf, 13 },{ 0x1594, 13 },
00347 {    0xd,  9 },
00348 };
00349 
00350 static const int8_t table1_level[148] = {
00351   1,  2,  3,  4,  5,  6,  7,  8,
00352   9, 10, 11, 12, 13, 14,  1,  2,
00353   3,  4,  5,  6,  7,  8,  9,  1,
00354   2,  3,  4,  5,  1,  2,  3,  4,
00355   1,  2,  3,  4,  1,  2,  3,  4,
00356   1,  2,  3,  1,  2,  3,  1,  2,
00357   3,  1,  2,  3,  1,  2,  3,  1,
00358   2,  3,  1,  2,  3,  1,  2,  1,
00359   2,  1,  2,  1,  1,  1,  1,  1,
00360   1,  1,  1,  1,  1,  1,  1,  1,
00361   1,  1,  2,  3,  4,  5,  1,  2,
00362   3,  4,  1,  2,  3,  1,  2,  3,
00363   1,  2,  1,  2,  1,  2,  1,  2,
00364   1,  2,  1,  2,  1,  2,  1,  2,
00365   1,  2,  1,  2,  1,  2,  1,  2,
00366   1,  1,  1,  1,  1,  1,  1,  1,
00367   1,  1,  1,  1,  1,  1,  1,  1,
00368   1,  1,  1,  1,  1,  1,  1,  1,
00369   1,  1,  1,  1,
00370 };
00371 
00372 static const int8_t table1_run[148] = {
00373   0,  0,  0,  0,  0,  0,  0,  0,
00374   0,  0,  0,  0,  0,  0,  1,  1,
00375   1,  1,  1,  1,  1,  1,  1,  2,
00376   2,  2,  2,  2,  3,  3,  3,  3,
00377   4,  4,  4,  4,  5,  5,  5,  5,
00378   6,  6,  6,  7,  7,  7,  8,  8,
00379   8,  9,  9,  9, 10, 10, 10, 11,
00380  11, 11, 12, 12, 12, 13, 13, 14,
00381  14, 15, 15, 16, 17, 18, 19, 20,
00382  21, 22, 23, 24, 25, 26, 27, 28,
00383  29,  0,  0,  0,  0,  0,  1,  1,
00384   1,  1,  2,  2,  2,  3,  3,  3,
00385   4,  4,  5,  5,  6,  6,  7,  7,
00386   8,  8,  9,  9, 10, 10, 11, 11,
00387  12, 12, 13, 13, 14, 14, 15, 15,
00388  16, 17, 18, 19, 20, 21, 22, 23,
00389  24, 25, 26, 27, 28, 29, 30, 31,
00390  32, 33, 34, 35, 36, 37, 38, 39,
00391  40, 41, 42, 43,
00392 };
00393 
00394 /* third vlc table */
00395 
00396 static const uint16_t table2_vlc[186][2] = {
00397 {    0x1,  2 },{    0x5,  3 },{    0xd,  4 },{   0x12,  5 },
00398 {    0xe,  6 },{   0x15,  7 },{   0x13,  8 },{   0x3f,  8 },
00399 {   0x4b,  9 },{  0x11f,  9 },{   0xb8, 10 },{  0x3e3, 10 },
00400 {  0x172, 11 },{  0x24d, 12 },{  0x3da, 12 },{  0x2dd, 13 },
00401 { 0x1f55, 13 },{  0x5b9, 14 },{ 0x3eae, 14 },{    0x0,  4 },
00402 {   0x10,  5 },{    0x8,  7 },{   0x20,  8 },{   0x29,  9 },
00403 {  0x1f4,  9 },{  0x233, 10 },{  0x1e0, 11 },{  0x12a, 12 },
00404 {  0x3dd, 12 },{  0x50a, 13 },{ 0x1f29, 13 },{  0xa42, 14 },
00405 { 0x1272, 15 },{ 0x1737, 15 },{    0x3,  5 },{   0x11,  7 },
00406 {   0xc4,  8 },{   0x4b, 10 },{   0xb4, 11 },{  0x7d4, 11 },
00407 {  0x345, 12 },{  0x2d7, 13 },{  0x7bf, 13 },{  0x938, 14 },
00408 {  0xbbb, 14 },{  0x95e, 15 },{   0x13,  5 },{   0x78,  7 },
00409 {   0x69,  9 },{  0x232, 10 },{  0x461, 11 },{  0x3ec, 12 },
00410 {  0x520, 13 },{ 0x1f2a, 13 },{ 0x3e50, 14 },{ 0x3e51, 14 },
00411 { 0x1486, 15 },{    0xc,  6 },{   0x24,  9 },{   0x94, 11 },
00412 {  0x8c0, 12 },{  0xf09, 14 },{ 0x1ef0, 15 },{   0x3d,  6 },
00413 {   0x53,  9 },{  0x1a0, 11 },{  0x2d6, 13 },{  0xf08, 14 },
00414 {   0x13,  7 },{   0x7c,  9 },{  0x7c1, 11 },{  0x4ac, 14 },
00415 {   0x1b,  7 },{   0xa0, 10 },{  0x344, 12 },{  0xf79, 14 },
00416 {   0x79,  7 },{  0x3e1, 10 },{  0x2d4, 13 },{ 0x2306, 14 },
00417 {   0x21,  8 },{  0x23c, 10 },{  0xfae, 12 },{ 0x23de, 14 },
00418 {   0x35,  8 },{  0x175, 11 },{  0x7b3, 13 },{   0xc5,  8 },
00419 {  0x174, 11 },{  0x785, 13 },{   0x48,  9 },{  0x1a3, 11 },
00420 {  0x49e, 13 },{   0x2c,  9 },{   0xfa, 10 },{  0x7d6, 11 },
00421 {   0x92, 10 },{  0x5cc, 13 },{ 0x1ef1, 15 },{   0xa3, 10 },
00422 {  0x3ed, 12 },{  0x93e, 14 },{  0x1e2, 11 },{ 0x1273, 15 },
00423 {  0x7c4, 11 },{ 0x1487, 15 },{  0x291, 12 },{  0x293, 12 },
00424 {  0xf8a, 12 },{  0x509, 13 },{  0x508, 13 },{  0x78d, 13 },
00425 {  0x7be, 13 },{  0x78c, 13 },{  0x4ae, 14 },{  0xbba, 14 },
00426 { 0x2307, 14 },{  0xb9a, 14 },{ 0x1736, 15 },{    0xe,  4 },
00427 {   0x45,  7 },{  0x1f3,  9 },{  0x47a, 11 },{  0x5dc, 13 },
00428 { 0x23df, 14 },{   0x19,  5 },{   0x28,  9 },{  0x176, 11 },
00429 {  0x49d, 13 },{ 0x23dd, 14 },{   0x30,  6 },{   0xa2, 10 },
00430 {  0x2ef, 12 },{  0x5b8, 14 },{   0x3f,  6 },{   0xa5, 10 },
00431 {  0x3db, 12 },{  0x93f, 14 },{   0x44,  7 },{  0x7cb, 11 },
00432 {  0x95f, 15 },{   0x63,  7 },{  0x3c3, 12 },{   0x15,  8 },
00433 {  0x8f6, 12 },{   0x17,  8 },{  0x498, 13 },{   0x2c,  8 },
00434 {  0x7b2, 13 },{   0x2f,  8 },{ 0x1f54, 13 },{   0x8d,  8 },
00435 {  0x7bd, 13 },{   0x8e,  8 },{ 0x1182, 13 },{   0xfb,  8 },
00436 {  0x50b, 13 },{   0x2d,  8 },{  0x7c0, 11 },{   0x79,  9 },
00437 { 0x1f5f, 13 },{   0x7a,  9 },{ 0x1f56, 13 },{  0x231, 10 },
00438 {  0x3e4, 10 },{  0x1a1, 11 },{  0x143, 11 },{  0x1f7, 11 },
00439 {  0x16f, 12 },{  0x292, 12 },{  0x2e7, 12 },{  0x16c, 12 },
00440 {  0x16d, 12 },{  0x3dc, 12 },{  0xf8b, 12 },{  0x499, 13 },
00441 {  0x3d8, 12 },{  0x78e, 13 },{  0x2d5, 13 },{ 0x1f5e, 13 },
00442 { 0x1f2b, 13 },{  0x78f, 13 },{  0x4ad, 14 },{ 0x3eaf, 14 },
00443 { 0x23dc, 14 },{   0x4a,  9 },
00444 };
00445 
00446 static const int8_t table2_level[185] = {
00447   1,  2,  3,  4,  5,  6,  7,  8,
00448   9, 10, 11, 12, 13, 14, 15, 16,
00449  17, 18, 19,  1,  2,  3,  4,  5,
00450   6,  7,  8,  9, 10, 11, 12, 13,
00451  14, 15,  1,  2,  3,  4,  5,  6,
00452   7,  8,  9, 10, 11, 12,  1,  2,
00453   3,  4,  5,  6,  7,  8,  9, 10,
00454  11,  1,  2,  3,  4,  5,  6,  1,
00455   2,  3,  4,  5,  1,  2,  3,  4,
00456   1,  2,  3,  4,  1,  2,  3,  4,
00457   1,  2,  3,  4,  1,  2,  3,  1,
00458   2,  3,  1,  2,  3,  1,  2,  3,
00459   1,  2,  3,  1,  2,  3,  1,  2,
00460   1,  2,  1,  1,  1,  1,  1,  1,
00461   1,  1,  1,  1,  1,  1,  1,  1,
00462   2,  3,  4,  5,  6,  1,  2,  3,
00463   4,  5,  1,  2,  3,  4,  1,  2,
00464   3,  4,  1,  2,  3,  1,  2,  1,
00465   2,  1,  2,  1,  2,  1,  2,  1,
00466   2,  1,  2,  1,  2,  1,  2,  1,
00467   2,  1,  2,  1,  1,  1,  1,  1,
00468   1,  1,  1,  1,  1,  1,  1,  1,
00469   1,  1,  1,  1,  1,  1,  1,  1,
00470   1,
00471 };
00472 
00473 static const int8_t table2_run[185] = {
00474   0,  0,  0,  0,  0,  0,  0,  0,
00475   0,  0,  0,  0,  0,  0,  0,  0,
00476   0,  0,  0,  1,  1,  1,  1,  1,
00477   1,  1,  1,  1,  1,  1,  1,  1,
00478   1,  1,  2,  2,  2,  2,  2,  2,
00479   2,  2,  2,  2,  2,  2,  3,  3,
00480   3,  3,  3,  3,  3,  3,  3,  3,
00481   3,  4,  4,  4,  4,  4,  4,  5,
00482   5,  5,  5,  5,  6,  6,  6,  6,
00483   7,  7,  7,  7,  8,  8,  8,  8,
00484   9,  9,  9,  9, 10, 10, 10, 11,
00485  11, 11, 12, 12, 12, 13, 13, 13,
00486  14, 14, 14, 15, 15, 15, 16, 16,
00487  17, 17, 18, 19, 20, 21, 22, 23,
00488  24, 25, 26, 27, 28, 29, 30,  0,
00489   0,  0,  0,  0,  0,  1,  1,  1,
00490   1,  1,  2,  2,  2,  2,  3,  3,
00491   3,  3,  4,  4,  4,  5,  5,  6,
00492   6,  7,  7,  8,  8,  9,  9, 10,
00493  10, 11, 11, 12, 12, 13, 13, 14,
00494  14, 15, 15, 16, 17, 18, 19, 20,
00495  21, 22, 23, 24, 25, 26, 27, 28,
00496  29, 30, 31, 32, 33, 34, 35, 36,
00497  37,
00498 };
00499 
00500 /* second non intra vlc table */
00501 static const uint16_t table4_vlc[169][2] = {
00502 {    0x0,  3 },{    0x3,  4 },{    0xb,  5 },{   0x14,  6 },
00503 {   0x3f,  6 },{   0x5d,  7 },{   0xa2,  8 },{   0xac,  9 },
00504 {  0x16e,  9 },{  0x20a, 10 },{  0x2e2, 10 },{  0x432, 11 },
00505 {  0x5c9, 11 },{  0x827, 12 },{  0xb54, 12 },{  0x4e6, 13 },
00506 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
00507 { 0x39f0, 14 },{ 0x4175, 15 },{ 0x5a9e, 15 },{    0x4,  4 },
00508 {   0x1e,  5 },{   0x42,  7 },{   0xb6,  8 },{  0x173,  9 },
00509 {  0x395, 10 },{  0x72e, 11 },{  0xb94, 12 },{ 0x16a4, 13 },
00510 { 0x20b3, 14 },{ 0x2e45, 14 },{    0x5,  5 },{   0x40,  7 },
00511 {   0x49,  9 },{  0x28f, 10 },{  0x5cb, 11 },{  0x48a, 13 },
00512 {  0x9dd, 14 },{ 0x73e2, 15 },{   0x18,  5 },{   0x25,  8 },
00513 {   0x8a, 10 },{  0x51b, 11 },{  0xe5f, 12 },{  0x9c9, 14 },
00514 { 0x139c, 15 },{   0x29,  6 },{   0x4f,  9 },{  0x412, 11 },
00515 {  0x48d, 13 },{ 0x2e41, 14 },{   0x38,  6 },{  0x10e,  9 },
00516 {  0x5a8, 11 },{ 0x105c, 13 },{ 0x39f2, 14 },{   0x58,  7 },
00517 {  0x21f, 10 },{  0xe7e, 12 },{ 0x39ff, 14 },{   0x23,  8 },
00518 {  0x2e3, 10 },{  0x4e5, 13 },{ 0x2e40, 14 },{   0xa1,  8 },
00519 {  0x5be, 11 },{  0x9c8, 14 },{   0x83,  8 },{  0x13a, 11 },
00520 { 0x1721, 13 },{   0x44,  9 },{  0x276, 12 },{ 0x39f6, 14 },
00521 {   0x8b, 10 },{  0x4ef, 13 },{ 0x5a9b, 15 },{  0x208, 10 },
00522 { 0x1cfe, 13 },{  0x399, 10 },{ 0x1cb4, 13 },{  0x39e, 10 },
00523 { 0x39f3, 14 },{  0x5ab, 11 },{ 0x73e3, 15 },{  0x737, 11 },
00524 { 0x5a9f, 15 },{  0x82d, 12 },{  0xe69, 12 },{  0xe68, 12 },
00525 {  0x433, 11 },{  0xb7b, 12 },{ 0x2df8, 14 },{ 0x2e56, 14 },
00526 { 0x2e57, 14 },{ 0x39f7, 14 },{ 0x51a5, 15 },{    0x3,  3 },
00527 {   0x2a,  6 },{   0xe4,  8 },{  0x28e, 10 },{  0x735, 11 },
00528 { 0x1058, 13 },{ 0x1cfa, 13 },{ 0x2df9, 14 },{ 0x4174, 15 },
00529 {    0x9,  4 },{   0x54,  8 },{  0x398, 10 },{  0x48b, 13 },
00530 { 0x139d, 15 },{    0xd,  4 },{   0xad,  9 },{  0x826, 12 },
00531 { 0x2d4c, 14 },{   0x11,  5 },{  0x16b,  9 },{  0xb7f, 12 },
00532 { 0x51a4, 15 },{   0x19,  5 },{  0x21b, 10 },{ 0x16fd, 13 },
00533 {   0x1d,  5 },{  0x394, 10 },{ 0x28d3, 14 },{   0x2b,  6 },
00534 {  0x5bc, 11 },{ 0x5a9a, 15 },{   0x2f,  6 },{  0x247, 12 },
00535 {   0x10,  7 },{  0xa35, 12 },{   0x3e,  6 },{  0xb7a, 12 },
00536 {   0x59,  7 },{ 0x105e, 13 },{   0x26,  8 },{  0x9cf, 14 },
00537 {   0x55,  8 },{ 0x1cb5, 13 },{   0x57,  8 },{  0xe5b, 12 },
00538 {   0xa0,  8 },{ 0x1468, 13 },{  0x170,  9 },{   0x90, 10 },
00539 {  0x1ce,  9 },{  0x21a, 10 },{  0x218, 10 },{  0x168,  9 },
00540 {  0x21e, 10 },{  0x244, 12 },{  0x736, 11 },{  0x138, 11 },
00541 {  0x519, 11 },{  0xe5e, 12 },{  0x72c, 11 },{  0xb55, 12 },
00542 {  0x9dc, 14 },{ 0x20bb, 14 },{  0x48c, 13 },{ 0x1723, 13 },
00543 { 0x2e44, 14 },{ 0x16a5, 13 },{  0x518, 11 },{ 0x39fe, 14 },
00544 {  0x169,  9 },
00545 };
00546 
00547 static const int8_t table4_level[168] = {
00548   1,  2,  3,  4,  5,  6,  7,  8,
00549   9, 10, 11, 12, 13, 14, 15, 16,
00550  17, 18, 19, 20, 21, 22, 23,  1,
00551   2,  3,  4,  5,  6,  7,  8,  9,
00552  10, 11,  1,  2,  3,  4,  5,  6,
00553   7,  8,  1,  2,  3,  4,  5,  6,
00554   7,  1,  2,  3,  4,  5,  1,  2,
00555   3,  4,  5,  1,  2,  3,  4,  1,
00556   2,  3,  4,  1,  2,  3,  1,  2,
00557   3,  1,  2,  3,  1,  2,  3,  1,
00558   2,  1,  2,  1,  2,  1,  2,  1,
00559   2,  1,  1,  1,  1,  1,  1,  1,
00560   1,  1,  1,  1,  2,  3,  4,  5,
00561   6,  7,  8,  9,  1,  2,  3,  4,
00562   5,  1,  2,  3,  4,  1,  2,  3,
00563   4,  1,  2,  3,  1,  2,  3,  1,
00564   2,  3,  1,  2,  1,  2,  1,  2,
00565   1,  2,  1,  2,  1,  2,  1,  2,
00566   1,  2,  1,  1,  1,  1,  1,  1,
00567   1,  1,  1,  1,  1,  1,  1,  1,
00568   1,  1,  1,  1,  1,  1,  1,  1,
00569 };
00570 
00571 static const int8_t table4_run[168] = {
00572   0,  0,  0,  0,  0,  0,  0,  0,
00573   0,  0,  0,  0,  0,  0,  0,  0,
00574   0,  0,  0,  0,  0,  0,  0,  1,
00575   1,  1,  1,  1,  1,  1,  1,  1,
00576   1,  1,  2,  2,  2,  2,  2,  2,
00577   2,  2,  3,  3,  3,  3,  3,  3,
00578   3,  4,  4,  4,  4,  4,  5,  5,
00579   5,  5,  5,  6,  6,  6,  6,  7,
00580   7,  7,  7,  8,  8,  8,  9,  9,
00581   9, 10, 10, 10, 11, 11, 11, 12,
00582  12, 13, 13, 14, 14, 15, 15, 16,
00583  16, 17, 18, 19, 20, 21, 22, 23,
00584  24, 25, 26,  0,  0,  0,  0,  0,
00585   0,  0,  0,  0,  1,  1,  1,  1,
00586   1,  2,  2,  2,  2,  3,  3,  3,
00587   3,  4,  4,  4,  5,  5,  5,  6,
00588   6,  6,  7,  7,  8,  8,  9,  9,
00589  10, 10, 11, 11, 12, 12, 13, 13,
00590  14, 14, 15, 16, 17, 18, 19, 20,
00591  21, 22, 23, 24, 25, 26, 27, 28,
00592  29, 30, 31, 32, 33, 34, 35, 36,
00593 };
00594 
00595 extern const uint16_t inter_vlc[103][2];
00596 extern const int8_t inter_level[102];
00597 extern const int8_t inter_run[102];
00598 
00599 extern const uint16_t ff_mpeg4_intra_vlc[103][2];
00600 extern const int8_t ff_mpeg4_intra_level[102];
00601 extern const int8_t ff_mpeg4_intra_run[102];
00602 
00603 RLTable rl_table[NB_RL_TABLES] = {
00604     /* intra luminance tables */
00605     /* low motion  */
00606     {
00607         132,
00608         85,
00609         table0_vlc,
00610         table0_run,
00611         table0_level,
00612     },
00613     /* high motion */
00614     {
00615         185,
00616         119,
00617         table2_vlc,
00618         table2_run,
00619         table2_level,
00620     },
00621     /* mid-rate */
00622     {
00623         102,
00624         67,
00625         ff_mpeg4_intra_vlc,
00626         ff_mpeg4_intra_run,
00627         ff_mpeg4_intra_level,
00628     },
00629     /* intra chrominance / non intra tables */
00630     /* low motion inter */
00631     {
00632         148,
00633         81,
00634         table1_vlc,
00635         table1_run,
00636         table1_level,
00637     },
00638     /* high motion inter */
00639     {
00640         168,
00641         99,
00642         table4_vlc,
00643         table4_run,
00644         table4_level,
00645     },
00646     /* mid rate inter */
00647     {
00648         102,
00649         58,
00650         inter_vlc,
00651         inter_run,
00652         inter_level,
00653     },
00654 };
00655 
00656 /* motion vector table 0 */
00657 
00658 static const uint16_t table0_mv_code[1100] = {
00659  0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
00660  0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
00661  0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
00662  0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
00663  0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
00664  0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
00665  0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
00666  0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
00667  0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
00668  0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
00669  0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
00670  0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
00671  0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
00672  0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
00673  0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
00674  0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
00675  0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
00676  0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
00677  0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
00678  0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
00679  0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
00680  0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
00681  0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
00682  0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
00683  0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
00684  0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
00685  0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
00686  0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
00687  0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
00688  0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
00689  0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
00690  0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
00691  0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
00692  0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
00693  0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
00694  0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
00695  0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
00696  0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
00697  0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
00698  0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
00699  0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
00700  0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
00701  0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
00702  0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
00703  0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
00704  0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
00705  0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
00706  0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
00707  0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
00708  0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
00709  0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
00710  0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
00711  0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
00712  0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
00713  0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
00714  0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
00715  0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
00716  0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
00717  0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
00718  0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
00719  0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
00720  0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
00721  0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
00722  0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
00723  0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
00724  0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
00725  0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
00726  0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
00727  0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
00728  0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
00729  0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
00730  0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
00731  0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
00732  0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
00733  0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
00734  0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
00735  0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
00736  0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
00737  0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
00738  0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
00739  0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
00740  0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
00741  0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
00742  0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
00743  0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
00744  0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
00745  0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
00746  0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
00747  0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
00748  0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
00749  0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
00750  0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
00751  0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
00752  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
00753  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
00754  0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
00755  0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
00756  0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
00757  0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
00758  0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
00759  0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
00760  0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
00761  0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
00762  0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
00763  0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
00764  0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
00765  0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
00766  0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
00767  0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
00768  0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
00769  0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
00770  0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
00771  0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
00772  0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
00773  0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
00774  0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
00775  0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
00776  0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
00777  0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
00778  0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
00779  0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
00780  0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
00781  0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
00782  0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
00783  0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
00784  0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
00785  0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
00786  0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
00787  0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
00788  0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
00789  0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
00790  0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
00791  0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
00792  0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
00793  0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
00794  0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
00795  0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
00796  0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
00797 };
00798 
00799 static const uint8_t table0_mv_bits[1100] = {
00800   1,  4,  4,  4,  5,  5,  5,  6,
00801   6,  6,  7,  7,  7,  8,  8,  8,
00802   8,  8,  8,  8,  8,  8,  8,  8,
00803   8,  9,  9,  9,  9,  9,  9,  9,
00804   9,  9,  9,  9,  9, 10, 10, 10,
00805  10, 10, 10, 10, 10, 10, 10, 10,
00806  10, 10, 10, 10, 10, 10, 10, 10,
00807  10, 10, 10, 10, 11, 11, 11, 11,
00808  11, 11, 11, 11, 11, 11, 11, 11,
00809  11, 11, 11, 11, 11, 11, 11, 11,
00810  11, 11, 11, 11, 11, 11, 11, 11,
00811  12, 12, 12, 12, 12, 12, 12, 12,
00812  12, 12, 12, 12, 12, 12, 12, 12,
00813  12, 12, 12, 12, 12, 12, 12, 12,
00814  12, 12, 12, 12, 12, 12, 12, 12,
00815  12, 12, 12, 12, 12, 12, 12, 12,
00816  12, 12, 12, 12, 12, 12, 12, 12,
00817  12, 12, 12, 13, 13, 13, 13, 13,
00818  13, 13, 13, 13, 13, 13, 13, 13,
00819  13, 13, 13, 13, 13, 13, 13, 13,
00820  13, 13, 13, 13, 13, 13, 13, 13,
00821  13, 13, 13, 13, 13, 13, 13, 13,
00822  13, 13, 13, 13, 13, 13, 13, 13,
00823  13, 13, 13, 13, 13, 13, 13, 13,
00824  13, 13, 13, 13, 13, 13, 13, 13,
00825  13, 13, 14, 14, 14, 14, 14, 14,
00826  14, 14, 14, 14, 14, 14, 14, 14,
00827  14, 14, 14, 14, 14, 14, 14, 14,
00828  14, 14, 14, 14, 14, 14, 14, 14,
00829  14, 14, 14, 14, 14, 14, 14, 14,
00830  14, 14, 14, 14, 14, 14, 14, 14,
00831  14, 14, 14, 14, 14, 14, 14, 14,
00832  14, 14, 14, 14, 14, 14, 14, 14,
00833  14, 14, 14, 14, 14, 14, 14, 14,
00834  14, 14, 14, 14, 14, 14, 14, 14,
00835  14, 14, 14, 14, 14, 14, 14, 14,
00836  14, 14, 14, 14, 14, 14, 14, 14,
00837  14, 14, 14, 14, 14, 14, 14, 14,
00838  14, 15, 15, 15, 15, 15, 15, 15,
00839  15, 15, 15, 15, 15, 15, 15, 15,
00840  15, 15, 15, 15, 15, 15, 15, 15,
00841  15, 15, 15, 15, 15, 15, 15, 15,
00842  15, 15, 15, 15, 15, 15, 15, 15,
00843  15, 15, 15, 15, 15, 15, 15, 15,
00844  15, 15, 15, 15, 15, 15, 15, 15,
00845  15, 15, 15, 15, 15, 15, 15, 15,
00846  15, 15, 15, 15, 15, 15, 15, 15,
00847  15, 15, 15, 15, 15, 15, 15, 15,
00848  15, 15, 15, 15, 15, 15, 15, 15,
00849  15, 15, 15, 15, 15, 15, 15, 15,
00850  15, 15, 15, 15, 15, 15, 15, 15,
00851  15, 15, 15, 15, 15, 15, 15, 15,
00852  15, 15, 15, 15, 15, 15, 15, 15,
00853  15, 15, 15, 15, 15, 15, 15, 15,
00854  15, 15, 15, 15, 15, 15, 15, 15,
00855  15, 15, 15, 15, 15, 15, 15, 15,
00856  15, 15, 15, 15, 15, 15, 15, 15,
00857  15, 15, 15, 15, 15, 15, 15, 15,
00858  15, 15, 15, 15, 16, 16, 16, 16,
00859  16, 16, 16, 16, 16, 16, 16, 16,
00860  16, 16, 16, 16, 16, 16, 16, 16,
00861  16, 16, 16, 16, 16, 16, 16, 16,
00862  16, 16, 16, 16, 16, 16, 16, 16,
00863  16, 16, 16, 16, 16, 16, 16, 16,
00864  16, 16, 16, 16, 16, 16, 16, 16,
00865  16, 16, 16, 16, 16, 16, 16, 16,
00866  16, 16, 16, 16, 16, 16, 16, 16,
00867  16, 16, 16, 16, 16, 16, 16, 16,
00868  16, 16, 16, 16, 16, 16, 16, 16,
00869  16, 16, 16, 16, 16, 16, 16, 16,
00870  16, 16, 16, 16, 16, 16, 16, 16,
00871  16, 16, 16, 16, 16, 16, 16, 16,
00872  16, 16, 16, 16, 16, 16, 16, 16,
00873  16, 16, 16, 16, 16, 16, 16, 16,
00874  16, 16, 16, 16, 16, 16, 16, 16,
00875  16, 16, 16, 16, 16, 16, 16, 16,
00876  16, 16, 16, 16, 16, 16, 16, 16,
00877  16, 16, 16, 16, 16, 16, 16, 16,
00878  16, 16, 16, 16, 16, 16, 16, 16,
00879  16, 16, 16, 16, 16, 16, 16, 16,
00880  16, 16, 16, 16, 16, 16, 16, 16,
00881  16, 16, 16, 16, 16, 16, 16, 16,
00882  16, 16, 16, 16, 16, 16, 16, 16,
00883  16, 16, 16, 16, 16, 16, 16, 16,
00884  16, 16, 16, 16, 16, 16, 16, 16,
00885  16, 16, 16, 16, 16, 16, 16, 16,
00886  16, 16, 16, 16, 16, 16, 16, 16,
00887  16, 16, 16, 16, 16, 16, 16, 16,
00888  16, 16, 16, 16, 16, 16, 16, 16,
00889  16, 17, 17, 17, 17, 17, 17, 17,
00890  17, 17, 17, 17, 17, 17, 17, 17,
00891  17, 17, 17, 17, 17, 17, 17, 17,
00892  17, 17, 17, 17, 17, 17, 17, 17,
00893  17, 17, 17, 17, 17, 17, 17, 17,
00894  17, 17, 17, 17, 17, 17, 17, 17,
00895  17, 17, 17, 17, 17, 17, 17, 17,
00896  17, 17, 17, 17, 17, 17, 17, 17,
00897  17, 17, 17, 17, 17, 17, 17, 17,
00898  17, 17, 17, 17, 17, 17, 17, 17,
00899  17, 17, 17, 17, 17, 17, 17, 17,
00900  17, 17, 17, 17, 17, 17, 17, 17,
00901  17, 17, 17, 17, 17, 17, 17, 17,
00902  17, 17, 17, 17, 17, 17, 17, 17,
00903  17, 17, 17, 17, 17, 17, 17, 17,
00904  17, 17, 17, 17, 17, 17, 17, 17,
00905  17, 17, 17, 17, 17, 17, 17, 17,
00906  17, 17, 17, 17, 17, 17, 17, 17,
00907  17, 17, 17, 17, 17, 17, 17, 17,
00908  17, 17, 17, 17, 17, 17, 17, 17,
00909  17, 17, 17, 17, 17, 17, 17, 17,
00910  17, 17, 17, 17, 17, 17, 17, 17,
00911  17, 17, 17, 17, 17, 17, 17, 17,
00912  17, 17, 17, 17, 17, 17, 17, 17,
00913  17, 17, 17, 17, 17, 17, 17, 17,
00914  17, 17, 17, 17, 17, 17, 17, 17,
00915  17, 17, 17, 17, 17, 17, 17, 17,
00916  17, 17, 17, 17, 17, 17, 17, 17,
00917  17, 17, 17, 17, 17, 17, 17, 17,
00918  17, 17, 17, 17, 17, 17, 17, 17,
00919  17, 17, 17, 17, 17, 17, 17, 17,
00920  17, 17, 17, 17, 17, 17, 17, 17,
00921  17, 17, 17, 17, 17, 17, 17, 17,
00922  17, 17, 17, 17, 17, 17, 17, 17,
00923  17, 17, 17, 17, 17, 17, 17, 17,
00924  17, 17, 17, 17, 17, 17, 17, 17,
00925  17, 17, 17, 17, 17, 17, 17, 17,
00926  17, 17, 17, 17, 17, 17, 17, 17,
00927  17, 17, 17, 17, 17, 17, 17, 17,
00928  17, 17, 17, 17, 17, 17, 17, 17,
00929  17, 17, 17, 17, 17, 17, 17, 17,
00930  17, 17, 17, 17, 17, 17, 17, 17,
00931  17, 17, 17, 17, 17, 17, 17, 17,
00932  17, 17, 17, 17, 17, 17, 17, 17,
00933  17, 17, 17, 17, 17, 17, 17, 17,
00934  17, 17, 17, 17, 17, 17, 17, 17,
00935  17, 17, 17, 17, 17, 17, 17, 17,
00936  17, 17, 17, 17, 17, 17, 17, 17,
00937  17, 17, 17,  8,
00938 };
00939 
00940 static const uint8_t table0_mvx[1099] = {
00941  32, 32, 31, 32, 33, 31, 33, 31,
00942  33, 32, 34, 32, 30, 32, 31, 34,
00943  35, 32, 34, 33, 29, 33, 30, 30,
00944  31, 31, 35, 29, 33, 35, 33, 34,
00945  31, 29, 30, 34, 30, 36, 28, 32,
00946  34, 37, 30, 27, 32, 25, 39, 32,
00947  34, 32, 35, 35, 35, 31, 35, 29,
00948  32, 29, 30, 29, 37, 27, 36, 38,
00949  37, 33, 32, 31, 29, 31, 28, 36,
00950  33, 30, 34, 33, 33, 28, 27, 25,
00951  31, 26, 39, 32, 32, 31, 33, 39,
00952  31, 38, 28, 36, 21, 23, 43, 36,
00953  34, 41, 30, 25, 28, 31, 30, 34,
00954  38, 35, 61, 34, 28, 30, 37, 37,
00955  35, 27, 36,  3, 59, 38, 37, 32,
00956  31, 29, 26, 33, 37, 33, 27, 27,
00957  35, 34, 34, 40, 42, 33, 32, 29,
00958   4,  5, 28, 24, 25, 35, 39, 38,
00959  32, 23, 27, 32, 30, 35, 26, 34,
00960  60, 36, 29, 22, 26, 41,  7, 30,
00961  38, 30, 36, 29, 30, 41, 26, 25,
00962  32, 34, 24, 39,  1, 25, 39, 32,
00963  28, 29, 32, 38, 26, 36, 28, 63,
00964  28, 39, 23, 21, 26, 35, 31, 35,
00965  57, 31, 29, 29, 28, 30, 27, 35,
00966   2, 38, 40, 34, 37, 29, 38, 43,
00967  26, 32, 33, 42, 24, 40, 28, 32,
00968  32, 32, 36, 32, 43, 25, 21, 31,
00969  30, 31, 41, 29, 33, 37, 26, 37,
00970  27, 59, 23, 33, 35, 31, 31, 37,
00971  38, 39, 32, 23, 32, 27, 37, 36,
00972  31, 40, 25, 27, 38, 31, 36, 28,
00973  31, 36, 25, 45,  3, 34, 38, 39,
00974  40, 38, 30, 32, 19, 24, 25, 26,
00975  45, 20, 24, 33, 33, 31, 41, 34,
00976  39, 47, 40, 58, 59, 41, 33,  3,
00977  17, 61, 42, 30, 26, 29, 36, 61,
00978  33, 37, 62, 28, 25, 38, 25, 38,
00979  17, 23, 34, 33, 21, 33, 49, 27,
00980  32, 23, 27, 22, 24, 22, 39, 43,
00981  27, 37,  6, 42, 47, 26, 30, 31,
00982  41, 39, 33, 22, 45, 36, 32, 45,
00983  19, 22, 30,  5,  5, 17, 29, 22,
00984  31, 31, 43, 37, 27, 32, 32, 32,
00985  33, 34, 43, 35, 29, 26, 22, 32,
00986  19, 32, 25, 31, 41, 49, 28, 34,
00987  28, 39, 34, 19, 37, 38, 29, 21,
00988  36, 42, 24, 48, 16, 28, 49, 22,
00989  34, 31, 38, 39, 44, 11, 35, 30,
00990  33, 33, 23, 28, 33, 46, 15, 13,
00991  24, 41, 24, 34, 34, 30, 26, 24,
00992  14, 60, 21, 29, 39, 23, 35, 37,
00993  63, 45, 33, 34, 47, 41, 22, 42,
00994  35, 35, 23, 32, 35, 43, 32,  7,
00995  31, 41, 20, 31, 16, 13, 63, 25,
00996  30, 32, 35, 30, 30, 31, 42, 47,
00997  39, 38, 40, 40, 51, 55, 56, 18,
00998  21, 39, 39, 33, 17, 41, 23, 24,
00999  43, 25, 31, 20, 19, 45,  1, 34,
01000  31, 22, 35, 15, 46, 46, 35, 31,
01001  28, 29, 29, 23, 41, 27, 14, 53,
01002  53, 27, 24, 32, 57, 32, 17, 42,
01003  37, 29, 33,  1, 25, 32, 32, 63,
01004  26, 40, 44, 36, 31, 39, 20, 20,
01005  44, 23, 33, 34, 35, 33, 33, 28,
01006  41, 23, 41, 41, 29, 25, 26, 49,
01007  29, 24, 37, 49, 50, 51, 51, 26,
01008  39, 25, 26, 15, 39, 18, 42, 17,
01009   4, 31, 32, 32, 60,  1, 42, 32,
01010   0, 12, 19, 35, 21, 41, 17, 26,
01011  20, 45, 46, 32, 37, 22, 47, 29,
01012  31, 27, 29, 30, 21, 33, 35, 18,
01013  25, 33, 50, 51, 42,  2, 15, 51,
01014  53, 33, 25, 29, 55, 37, 38, 33,
01015  38, 59, 38, 33, 39, 13, 32, 40,
01016  61, 61, 32,  9, 44,  3, 31, 29,
01017  25, 31, 27, 23,  9, 25,  9, 29,
01018  20, 30, 30, 42, 18, 28, 25, 28,
01019  28, 21, 29, 43, 29, 43, 26, 44,
01020  44, 21, 38, 21, 24, 45, 45, 35,
01021  39, 22, 35, 36, 34, 34, 45, 34,
01022  29, 31, 46, 25, 46, 16, 17, 31,
01023  20, 32, 47, 47, 47, 32, 49, 49,
01024  49, 31,  1, 27, 28, 39, 39, 21,
01025  36, 23, 51,  2, 40, 51, 32, 53,
01026  24, 30, 24, 30, 21, 40, 57, 57,
01027  31, 41, 58, 32, 12,  4, 32, 34,
01028  59, 31, 32, 13,  9, 35, 26, 35,
01029  37, 61, 37, 63, 26, 29, 41, 38,
01030  23, 20, 41, 26, 41, 42, 42, 42,
01031  26, 26, 26, 26,  1, 26, 37, 37,
01032  37, 23, 34, 42, 27, 43, 34, 27,
01033  31, 24, 33, 16,  3, 31, 24, 33,
01034  24,  4, 44, 44, 11, 44, 31, 13,
01035  13, 44, 45, 13, 25, 22, 38, 26,
01036  38, 38, 39, 32, 30, 39, 30, 22,
01037  32, 26, 30, 47, 47, 47, 19, 47,
01038  30, 31, 35,  8, 23, 47, 47, 27,
01039  35, 47, 31, 48, 35, 19, 36, 49,
01040  49, 33, 31, 39, 27, 39, 49, 49,
01041  50, 50, 50, 39, 31, 51, 51, 39,
01042  28, 33, 33, 21, 40, 31, 52, 53,
01043  40, 53,  9, 33, 31, 53, 54, 54,
01044  54, 55, 55, 34, 15, 56, 25, 56,
01045  21, 21, 40, 40, 25, 40, 58, 36,
01046   5, 41, 41, 12, 60, 41, 41, 37,
01047  22, 61, 18, 29, 29, 30, 61, 30,
01048  61, 62, 62, 30, 30, 63, 18, 13,
01049  30, 23, 19, 20, 20, 41, 13,  2,
01050   5,  5,  1,  5, 32,  6, 32, 35,
01051  20, 35, 27, 35, 35, 36, 36, 13,
01052  36, 41, 41, 41,  3, 30, 42, 27,
01053  20, 30, 27, 28, 30, 21, 33, 33,
01054  14, 24, 30, 42, 24, 33, 25, 42,
01055  43, 14, 43, 43, 14, 43,  7, 36,
01056  37, 37, 37, 37,  7, 14, 25, 43,
01057  43, 44, 15, 37,  7,  7,  3,  1,
01058   8, 15, 15,  8, 44, 44, 44, 45,
01059  45, 45, 45,  8,  8, 45, 21, 45,
01060  28, 28, 28, 21, 28, 28, 22, 37,
01061  46, 46, 37,  8, 29, 37, 29, 22,
01062  46, 37, 22, 29, 47, 47, 38, 38,
01063  16, 38, 38, 33, 38, 22, 47, 47,
01064  29, 25, 16,  0, 48,  1, 34, 48,
01065  48, 34, 25, 26, 26, 49, 49, 26,
01066   1, 49,  4, 26,  4, 49,  1,  9,
01067  49, 49, 49, 10, 49, 17, 38, 17,
01068  17, 50, 38, 50, 50, 22, 38, 51,
01069  38, 38, 51, 39, 39, 18, 22, 39,
01070  51, 22, 52, 52, 52, 39, 53, 53,
01071  10, 23, 18, 29, 10, 53, 29, 54,
01072  11, 54, 11, 11, 55,  1, 18, 55,
01073  55, 55, 55, 55, 55, 29, 34, 18,
01074  29, 56, 56, 34, 57, 34, 34, 29,
01075  29, 57, 57, 35, 35, 35, 35, 35,
01076  39, 35, 59, 59, 18, 59, 39, 30,
01077  18, 40, 60, 60, 61, 30, 18, 61,
01078  61, 19, 19,
01079 };
01080 
01081 static const uint8_t table0_mvy[1099] = {
01082  32, 31, 32, 33, 32, 31, 31, 33,
01083  33, 34, 32, 30, 32, 35, 34, 31,
01084  32, 29, 33, 30, 32, 34, 33, 31,
01085  30, 35, 31, 31, 29, 33, 35, 30,
01086  29, 33, 34, 34, 30, 32, 32, 36,
01087  29, 32, 35, 32, 28, 32, 32, 27,
01088  35, 37, 34, 29, 30, 36, 35, 34,
01089  25, 30, 29, 35, 33, 31, 31, 32,
01090  31, 28, 39, 28, 29, 37, 31, 33,
01091  27, 36, 28, 36, 37, 33, 33, 31,
01092  27, 32, 31, 38, 26, 25, 25, 33,
01093  39, 31, 34, 30, 32, 32, 32, 34,
01094  36, 32, 28, 33, 30, 38, 37, 27,
01095  33, 28, 32, 37, 35, 38, 29, 34,
01096  27, 29, 29, 32, 32, 34, 35,  3,
01097  26, 36, 31, 38, 30, 26, 35, 34,
01098  37, 26, 25, 32, 32, 39, 23, 37,
01099  32, 32, 29, 32, 29, 36, 29, 30,
01100  41, 31, 30, 21, 39, 25, 34, 38,
01101  32, 35, 39, 32, 33, 33, 32, 27,
01102  29, 25, 28, 27, 26, 31, 30, 35,
01103  24, 24, 31, 34, 32, 30, 35, 40,
01104  28, 38,  5, 35, 29, 36, 36, 32,
01105  38, 30, 33, 31, 35, 26, 23, 38,
01106  32, 41, 28, 25, 37, 40, 37, 39,
01107  32, 36, 33, 39, 25, 26, 28, 31,
01108  28, 42, 23, 31, 33, 31, 39,  1,
01109  59, 22, 27,  4, 33, 34, 33, 24,
01110  41,  3, 35, 41, 41, 28, 36, 36,
01111  28, 33, 35, 21, 23, 21, 22, 37,
01112  27, 27, 43, 29, 60, 39, 27, 25,
01113  59, 34, 27, 27, 26, 40, 37, 27,
01114  61, 26, 39, 33, 31, 22, 37, 25,
01115  30, 25, 24, 61, 31, 34, 25, 38,
01116  32, 32, 30,  3, 61, 43, 29, 23,
01117  28, 32, 28, 32, 31, 34,  5, 33,
01118  32, 33, 33, 42, 37, 23, 38, 31,
01119  40, 26, 32, 26, 37, 38, 36, 24,
01120  29, 30, 20, 22, 29, 24, 32, 41,
01121   2, 34, 25, 33, 29, 31, 39, 35,
01122  36, 24, 32, 30, 33, 27, 44, 60,
01123  30, 36, 19, 34, 31, 24, 16, 35,
01124  32, 38, 21, 33, 31, 31, 21, 35,
01125   5, 17, 29, 38, 38, 18, 58, 19,
01126  43, 41, 30, 41, 43, 39, 29,  7,
01127  29, 17, 28, 19, 28, 31, 25, 19,
01128  40, 26, 21, 33, 39, 23, 40, 30,
01129  39, 34, 35, 32, 32, 24, 33, 30,
01130  40, 47, 39, 37, 32, 33, 24, 23,
01131  45, 47, 27, 23, 42, 32, 32, 33,
01132  36, 37, 37, 17, 18, 22, 40, 38,
01133  32, 31, 35, 24, 17, 25, 17, 23,
01134  33, 34, 51, 42, 31, 36, 36, 29,
01135  21, 22, 37, 44, 43, 25, 47, 33,
01136  45, 27, 31, 58, 31, 32, 31, 38,
01137  43, 20, 47, 45, 54,  1, 26, 34,
01138  38, 14, 22, 24, 33, 34, 32, 32,
01139  37, 21, 23, 49, 35, 23, 28, 39,
01140  39, 23, 55, 33, 30, 30, 63, 16,
01141  42, 28, 13, 33, 33, 35, 19, 46,
01142  43, 17, 19, 36, 39, 24, 31, 32,
01143  33, 26, 28, 62, 33, 63, 33, 39,
01144  19, 49, 17, 31, 43, 13, 15, 29,
01145  25, 35, 33, 23, 49, 41, 28, 29,
01146  34, 38,  7, 61, 11, 50, 13, 41,
01147  19, 47, 25, 26, 15, 42, 41, 29,
01148  45, 27, 17, 35, 32, 29, 32, 24,
01149  13, 26, 26, 31, 24, 33, 28, 30,
01150  31, 11, 45, 46, 33, 33, 35, 57,
01151  32, 32, 35, 45, 34, 11, 37, 42,
01152  39, 37, 31, 49, 21, 27, 29, 47,
01153  53, 40, 51, 16, 26,  1, 40, 30,
01154  41, 44, 34, 25, 27, 31, 35, 35,
01155  31, 15, 49,  1, 35, 40,  5, 58,
01156  21, 29, 22, 59, 45, 31,  9, 26,
01157   9, 29, 11, 32, 30,  3, 13, 20,
01158  18, 20, 11,  3, 29, 40, 31, 53,
01159  30, 17, 20, 37, 31, 42, 47, 47,
01160  54, 38,  9, 34, 13, 37, 21, 25,
01161  27, 43, 42, 45, 40, 25, 27, 46,
01162  22, 25, 53, 20,  2, 14, 39, 15,
01163  22, 44, 34, 21, 38, 33, 27, 48,
01164  34, 52, 35, 47, 49, 54,  2, 13,
01165  23, 52, 29, 45, 22, 49, 54, 21,
01166  40, 42, 31, 30, 29, 34,  0, 25,
01167  23, 51, 24, 59, 28, 38, 29, 31,
01168   2, 13, 31,  8, 31, 33, 12, 45,
01169  41,  7, 14, 30, 25, 18, 43, 20,
01170  43, 35, 44,  1, 49, 42, 42, 18,
01171  41, 38, 41, 44, 53, 11, 20, 25,
01172  45, 46, 47, 48, 39, 52, 46, 49,
01173  63, 55, 44, 38, 13, 13, 57, 22,
01174  51, 16, 12, 28, 35, 57, 25, 20,
01175  26, 28, 28, 29, 32, 31, 62, 34,
01176  35, 35, 19, 49, 48, 39, 40, 18,
01177  43, 46, 11,  6, 48, 19, 49, 41,
01178  10, 23, 58, 17, 21, 23, 34, 30,
01179  60,  0, 44, 34, 26, 37, 46, 43,
01180  49, 59,  4, 34, 59, 37, 22, 25,
01181  28, 46,  6, 40, 59, 42, 36, 61,
01182  28, 30, 31, 43, 10, 22, 23, 47,
01183  20, 52, 55, 36, 25, 16,  1, 11,
01184  27, 29,  5, 63, 18, 41, 31, 34,
01185  38,  1,  5, 13, 28, 31, 17, 38,
01186  39, 41, 36, 37, 22, 39, 33, 43,
01187  43, 15, 17, 49, 30, 21, 22, 20,
01188  10, 17, 25, 54, 57,  3, 34,  8,
01189  36, 25, 31, 14, 15, 19, 29, 25,
01190  18, 39, 53, 22, 27, 20, 29, 33,
01191  41, 42, 35, 62, 50, 29, 53, 50,
01192  35, 55, 42, 61, 63,  4,  7, 42,
01193  21, 46, 47, 49, 27, 46, 17, 55,
01194  41, 50, 63,  4, 56, 18,  8, 10,
01195  18, 51, 63, 36, 55, 18,  5, 55,
01196   9, 29, 17, 21, 30, 27,  1, 59,
01197   7, 11, 12, 15,  5, 42, 24, 41,
01198  43,  7, 27, 22, 25, 31, 30, 37,
01199  22, 39, 53, 29, 36, 37, 48,  0,
01200   5, 13, 17, 31, 32, 26, 46, 28,
01201  44, 45, 46, 53, 49, 51,  3, 41,
01202   3, 22, 42, 33,  5, 45,  7, 22,
01203  40, 53, 24, 14, 25, 27, 10, 12,
01204  34, 16, 17, 53, 20, 26, 39, 45,
01205  18, 45, 35, 33, 31, 49,  4, 39,
01206  42, 11, 51,  5, 13, 26, 27, 17,
01207  52, 30,  0, 22, 12, 34, 62, 36,
01208  38, 41, 47, 30, 63, 38, 41, 43,
01209  59, 33, 45, 37, 38, 40, 47, 24,
01210  48, 49, 30,  1, 10, 22, 49, 15,
01211  39, 59, 31, 32, 33, 18, 13, 15,
01212  31, 21, 27, 44, 42, 39, 46, 17,
01213  26, 32, 30, 31,  0, 30, 34,  9,
01214  12, 13, 25, 31, 32, 55, 43, 35,
01215  61, 33, 35, 46, 25, 47, 48, 62,
01216  63, 38, 61,  1,  2,  5,  7,  9,
01217  46, 10, 34, 35, 36, 55, 51,  7,
01218  40, 23, 34, 37,  5, 13, 42, 18,
01219  25, 27, 28,
01220 };
01221 
01222 /* motion vector table 1 */
01223 static const uint16_t table1_mv_code[1100] = {
01224  0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
01225  0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
01226  0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
01227  0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
01228  0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
01229  0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
01230  0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
01231  0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
01232  0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
01233  0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
01234  0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
01235  0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
01236  0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
01237  0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
01238  0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
01239  0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
01240  0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
01241  0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
01242  0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
01243  0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
01244  0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
01245  0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
01246  0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
01247  0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
01248  0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
01249  0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
01250  0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
01251  0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
01252  0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
01253  0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
01254  0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
01255  0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
01256  0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
01257  0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
01258  0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
01259  0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
01260  0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
01261  0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
01262  0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
01263  0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
01264  0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
01265  0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
01266  0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
01267  0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
01268  0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
01269  0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
01270  0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
01271  0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
01272  0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
01273  0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
01274  0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
01275  0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
01276  0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
01277  0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
01278  0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
01279  0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
01280  0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
01281  0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
01282  0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
01283  0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
01284  0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
01285  0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
01286  0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
01287  0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
01288  0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
01289  0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
01290  0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
01291  0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
01292  0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
01293  0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
01294  0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
01295  0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
01296  0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
01297  0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
01298  0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
01299  0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
01300  0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
01301  0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
01302  0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
01303  0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
01304  0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
01305  0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
01306  0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
01307  0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
01308  0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
01309  0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
01310  0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
01311  0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
01312  0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
01313  0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
01314  0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
01315  0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
01316  0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
01317  0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
01318  0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
01319  0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
01320  0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
01321  0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
01322  0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
01323  0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
01324  0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
01325  0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
01326  0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
01327  0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
01328  0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
01329  0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
01330  0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
01331  0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
01332  0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
01333  0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
01334  0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
01335  0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
01336  0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
01337  0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
01338  0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
01339  0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
01340  0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
01341  0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
01342  0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
01343  0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
01344  0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
01345  0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
01346  0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
01347  0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
01348  0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
01349  0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
01350  0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
01351  0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
01352  0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
01353  0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
01354  0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
01355  0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
01356  0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
01357  0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
01358  0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
01359  0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
01360  0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
01361  0x2473, 0x26a2, 0x26a3, 0x000b,
01362 };
01363 
01364 static const uint8_t table1_mv_bits[1100] = {
01365   2,  4,  4,  4,  5,  5,  5,  5,
01366   6,  6,  7,  7,  7,  7,  7,  8,
01367   8,  8,  8,  8,  8,  8,  8,  8,
01368   8,  8,  8,  8,  8,  8,  8,  8,
01369   8,  9,  9,  9,  9,  9,  9,  9,
01370   9,  9,  9,  9,  9,  9,  9,  9,
01371   9,  9,  9,  9,  9, 10, 10, 10,
01372  10, 10, 10, 10, 10, 10, 10, 10,
01373  10, 10, 10, 10, 10, 10, 10, 10,
01374  10, 10, 10, 10, 10, 10, 10, 10,
01375  10, 10, 10, 10, 10, 10, 10, 10,
01376  10, 10, 10, 10, 10, 10, 10, 10,
01377  10, 10, 10, 10, 10, 10, 10, 10,
01378  10, 10, 10, 10, 10, 10, 10, 10,
01379  10, 10, 10, 11, 11, 11, 11, 11,
01380  11, 11, 11, 11, 11, 11, 11, 11,
01381  11, 11, 11, 11, 11, 11, 11, 11,
01382  11, 11, 11, 11, 11, 11, 11, 11,
01383  11, 11, 11, 11, 11, 11, 11, 11,
01384  11, 11, 11, 11, 11, 11, 11, 11,
01385  11, 11, 11, 11, 11, 11, 11, 11,
01386  11, 11, 11, 11, 11, 11, 11, 11,
01387  11, 11, 11, 11, 11, 11, 11, 11,
01388  11, 11, 11, 11, 11, 11, 11, 11,
01389  11, 11, 11, 12, 12, 12, 12, 12,
01390  12, 12, 12, 12, 12, 12, 12, 12,
01391  12, 12, 12, 12, 12, 12, 12, 12,
01392  12, 12, 12, 12, 12, 12, 12, 12,
01393  12, 12, 12, 12, 12, 12, 12, 12,
01394  12, 12, 12, 12, 12, 12, 12, 12,
01395  12, 12, 12, 12, 12, 12, 12, 12,
01396  12, 12, 12, 12, 12, 12, 12, 12,
01397  12, 12, 12, 12, 12, 12, 12, 12,
01398  12, 12, 12, 12, 12, 12, 12, 12,
01399  12, 12, 12, 12, 12, 12, 12, 12,
01400  12, 12, 12, 12, 12, 12, 12, 12,
01401  12, 12, 12, 12, 12, 12, 12, 12,
01402  12, 12, 12, 12, 12, 12, 12, 12,
01403  12, 12, 12, 12, 12, 12, 12, 12,
01404  12, 12, 12, 12, 12, 12, 12, 12,
01405  12, 12, 12, 12, 12, 12, 12, 12,
01406  12, 12, 13, 13, 13, 13, 13, 13,
01407  13, 13, 13, 13, 13, 13, 13, 13,
01408  13, 13, 13, 13, 13, 13, 13, 13,
01409  13, 13, 13, 13, 13, 13, 13, 13,
01410  13, 13, 13, 13, 13, 13, 13, 13,
01411  13, 13, 13, 13, 13, 13, 13, 13,
01412  13, 13, 13, 13, 13, 13, 13, 13,
01413  13, 13, 13, 13, 13, 13, 13, 13,
01414  13, 13, 13, 13, 13, 13, 13, 13,
01415  13, 13, 13, 13, 13, 13, 13, 13,
01416  13, 13, 13, 13, 13, 13, 13, 13,
01417  13, 13, 13, 13, 13, 13, 13, 13,
01418  13, 13, 13, 13, 13, 13, 13, 13,
01419  13, 13, 13, 13, 13, 13, 13, 13,
01420  13, 13, 13, 13, 13, 13, 13, 13,
01421  13, 13, 13, 13, 13, 13, 13, 13,
01422  13, 13, 13, 13, 13, 13, 13, 13,
01423  13, 13, 13, 13, 13, 13, 13, 13,
01424  13, 13, 13, 13, 13, 13, 13, 13,
01425  13, 13, 13, 13, 13, 13, 13, 13,
01426  13, 13, 13, 13, 13, 13, 13, 13,
01427  13, 13, 13, 13, 13, 13, 13, 13,
01428  13, 13, 13, 13, 13, 13, 13, 13,
01429  13, 13, 13, 13, 13, 13, 13, 13,
01430  13, 13, 13, 13, 13, 13, 13, 13,
01431  13, 13, 13, 13, 13, 13, 13, 13,
01432  13, 13, 13, 13, 13, 13, 13, 13,
01433  13, 13, 13, 13, 13, 13, 13, 13,
01434  13, 13, 13, 13, 13, 13, 13, 13,
01435  13, 13, 13, 13, 13, 13, 13, 13,
01436  13, 13, 13, 13, 13, 13, 13, 13,
01437  13, 13, 13, 13, 13, 13, 13, 13,
01438  13, 13, 13, 13, 13, 13, 13, 13,
01439  13, 13, 13, 13, 13, 13, 13, 13,
01440  13, 13, 13, 13, 13, 13, 13, 13,
01441  13, 13, 13, 13, 13, 13, 13, 14,
01442  14, 14, 14, 14, 14, 14, 14, 14,
01443  14, 14, 14, 14, 14, 14, 14, 14,
01444  14, 14, 14, 14, 14, 14, 14, 14,
01445  14, 14, 14, 14, 14, 14, 14, 14,
01446  14, 14, 14, 14, 14, 14, 14, 14,
01447  14, 14, 14, 14, 14, 14, 14, 14,
01448  14, 14, 14, 14, 14, 14, 14, 14,
01449  14, 14, 14, 14, 14, 14, 14, 14,
01450  14, 14, 14, 14, 14, 14, 14, 14,
01451  14, 14, 14, 14, 14, 14, 14, 14,
01452  14, 14, 14, 14, 14, 14, 14, 14,
01453  14, 14, 14, 14, 14, 14, 14, 14,
01454  14, 14, 14, 14, 14, 14, 14, 14,
01455  14, 14, 14, 14, 14, 14, 14, 14,
01456  14, 14, 14, 14, 14, 14, 14, 14,
01457  14, 14, 14, 14, 14, 14, 14, 14,
01458  14, 14, 14, 14, 14, 14, 14, 14,
01459  14, 14, 14, 14, 14, 14, 14, 14,
01460  14, 14, 14, 14, 14, 14, 14, 14,
01461  14, 14, 14, 14, 14, 14, 14, 14,
01462  14, 14, 14, 14, 14, 14, 14, 14,
01463  14, 14, 14, 14, 14, 14, 14, 14,
01464  14, 14, 14, 14, 14, 14, 14, 14,
01465  14, 14, 14, 14, 14, 14, 14, 14,
01466  14, 14, 14, 14, 14, 14, 14, 14,
01467  14, 14, 14, 14, 14, 14, 14, 14,
01468  14, 14, 14, 14, 14, 14, 14, 14,
01469  14, 14, 14, 14, 14, 14, 14, 14,
01470  14, 14, 14, 14, 14, 14, 14, 14,
01471  14, 14, 14, 14, 14, 14, 14, 14,
01472  14, 14, 14, 14, 14, 14, 14, 14,
01473  14, 14, 14, 14, 14, 14, 14, 14,
01474  14, 14, 14, 14, 14, 14, 14, 14,
01475  14, 14, 14, 14, 14, 14, 14, 14,
01476  14, 14, 14, 14, 14, 14, 14, 14,
01477  14, 14, 14, 14, 14, 14, 14, 14,
01478  14, 14, 14, 14, 14, 14, 14, 14,
01479  14, 14, 14, 14, 14, 14, 14, 14,
01480  14, 14, 14, 14, 14, 14, 14, 14,
01481  14, 14, 14, 14, 14, 14, 14, 14,
01482  14, 14, 14, 14, 14, 14, 14, 14,
01483  14, 14, 14, 14, 14, 14, 14, 14,
01484  14, 14, 14, 14, 14, 14, 14, 14,
01485  14, 14, 14, 14, 14, 14, 14, 14,
01486  14, 14, 14, 14, 14, 14, 14, 14,
01487  14, 14, 14, 14, 14, 14, 14, 14,
01488  14, 14, 14, 14, 14, 14, 14, 14,
01489  14, 14, 14, 14, 14, 14, 14, 14,
01490  14, 14, 14, 14, 14, 14, 14, 14,
01491  14, 14, 14, 14, 14, 14, 14, 14,
01492  14, 14, 14, 14, 14, 14, 14, 14,
01493  14, 14, 14, 14, 14, 14, 14, 14,
01494  14, 14, 14, 14, 14, 14, 14, 14,
01495  14, 14, 14, 14, 14, 14, 14, 15,
01496  15, 15, 15, 15, 15, 15, 15, 15,
01497  15, 15, 15, 15, 15, 15, 15, 15,
01498  15, 15, 15, 15, 15, 15, 15, 15,
01499  15, 15, 15, 15, 15, 15, 15, 15,
01500  15, 15, 15, 15, 15, 15, 15, 15,
01501  15, 15, 15, 15, 15, 15, 15, 15,
01502  15, 15, 15,  4,
01503 };
01504 
01505 static const uint8_t table1_mvx[1099] = {
01506  32, 31, 32, 31, 33, 32, 33, 33,
01507  31, 34, 30, 32, 32, 34, 35, 32,
01508  34, 33, 29, 30, 30, 32, 31, 31,
01509  33, 35, 35, 33, 31, 29, 29, 33,
01510  34, 30, 31, 28, 36, 30, 34, 32,
01511  32, 37, 32, 32, 25, 27, 39, 32,
01512  32, 32, 38, 35, 36, 32, 37, 61,
01513  26, 32, 34, 35,  3, 35, 27, 28,
01514  29, 34, 28, 37, 31, 36, 32, 27,
01515  31, 30, 29, 39, 33, 29, 33, 35,
01516  25, 25, 29, 33, 31, 31, 31, 33,
01517  32, 30, 32, 32, 41, 39, 33, 36,
01518  32, 28, 34, 36, 38, 24, 60, 31,
01519  23, 28, 32, 33, 59, 32, 40, 30,
01520   5, 34, 32, 38, 32, 30, 43,  4,
01521  32, 32, 42, 31, 31, 32, 26, 38,
01522  26, 22, 21, 37, 61, 63, 37, 31,
01523  32, 33,  2,  1, 23, 33, 41, 27,
01524  35, 30, 38, 23, 33,  3, 28, 34,
01525  34, 27, 41, 29, 39, 35, 36, 29,
01526  32, 27, 30, 32, 24, 61, 37, 26,
01527  59, 25, 35, 27, 36, 37, 30, 31,
01528  34, 40,  3, 28, 34, 39, 32, 31,
01529  32, 30, 24, 28, 35, 36, 26, 32,
01530  31, 33, 29, 33, 39, 25, 30, 24,
01531  35, 59, 29, 34, 25, 30, 21, 35,
01532  43, 40, 32, 29,  5, 28, 31, 62,
01533  33, 33, 25, 31, 21, 31, 43, 31,
01534  34, 33, 20, 40, 39, 31, 31, 57,
01535  38, 32, 42, 33, 32, 31, 32, 29,
01536  30, 44,  5, 31, 22, 34, 36, 17,
01537  38, 58, 38, 35, 32, 60, 35, 24,
01538  32, 38, 16, 45, 42, 32, 31, 29,
01539   4, 30, 17, 40, 46, 48, 63, 32,
01540  42, 19, 41, 22, 28, 36, 45, 33,
01541  33, 32, 29,  7, 41, 42, 18, 33,
01542  33, 32, 22, 37,  1, 26, 22, 23,
01543  49, 28, 26, 27, 32, 33, 27, 23,
01544  28, 36, 15,  6, 34, 27, 31, 26,
01545  23,  2, 33, 32, 34, 41, 28, 32,
01546  41,  0, 36, 38, 34, 31, 47, 32,
01547  17, 31, 39, 33, 37, 51, 30, 47,
01548  32, 50, 32, 19, 63, 30, 25, 27,
01549  33, 62, 24, 31, 27, 30, 37, 31,
01550  45, 32, 39, 20, 46, 47, 35, 19,
01551  34,  1, 49, 21, 21, 14, 51, 26,
01552  23, 31, 36, 35, 58, 29, 29, 21,
01553  20, 42, 13, 28, 12, 40, 31, 33,
01554  39, 60, 32, 44, 33, 31, 28, 37,
01555  29, 32, 30, 49, 43, 28, 39, 25,
01556  32, 48,  2, 15, 20, 25, 31, 28,
01557  21, 24, 25, 15, 31, 17, 37, 43,
01558  18, 32, 33, 24, 33, 36, 13, 33,
01559  31, 39, 11, 31, 33, 32, 39, 37,
01560  32, 32, 29, 17, 44, 46, 36, 35,
01561  26, 37, 58, 32, 34, 38,  8, 38,
01562  38, 22, 29, 25, 16, 35, 32, 35,
01563  33, 43, 18, 46, 38, 50, 33, 18,
01564  53, 60, 13, 32, 36, 33, 51, 36,
01565  43, 45, 27, 42, 29, 24, 30, 25,
01566  31, 52, 31, 35, 38,  9, 22, 34,
01567   4, 17, 28, 55, 42, 25, 17, 20,
01568  47, 34, 33, 16, 40, 25, 16, 30,
01569  53, 29, 10, 11, 14, 26, 33,  4,
01570  35, 44, 26, 16, 31, 26, 34, 38,
01571  29, 31, 30, 24, 22, 61, 32,  9,
01572  45, 34, 31, 19,  9, 31, 46, 31,
01573  35, 54, 29, 57, 30, 50,  3, 31,
01574  63, 34, 47, 41, 51, 18, 31, 14,
01575  37, 38, 31, 24, 32, 31, 50, 33,
01576  31, 54, 27,  9, 33, 23, 19, 32,
01577  29, 29, 33, 28, 47, 49, 30, 47,
01578  33, 27, 25, 54, 44, 45, 50, 58,
01579  51, 48, 33, 59, 33, 34, 57, 13,
01580  26, 33, 13, 48, 30, 11,  7, 56,
01581  34, 55, 26,  0, 26, 35,  1, 51,
01582  33, 53, 31, 45, 12, 29, 29, 51,
01583  31, 48,  2,  6, 34, 30, 28, 33,
01584  60, 40, 27, 46, 31,  9, 35, 29,
01585  31, 39, 55, 46, 19, 37, 62, 34,
01586  30, 16, 19, 49, 41, 41, 39, 37,
01587  14,  5, 13, 35, 55, 30, 40, 40,
01588  42,  8, 20, 25, 45, 35, 33, 36,
01589  54, 38, 27, 37, 62, 40, 15, 59,
01590  49, 31, 29, 34, 34, 39, 24, 29,
01591  25, 29, 21, 29, 10, 61, 33, 49,
01592  35, 34,  3, 38, 39, 29,  7, 41,
01593   1, 35,  4, 23, 15, 23, 11, 37,
01594  28, 35, 30, 30, 24,  1, 43, 56,
01595   8, 34, 42, 24, 45, 30, 20, 23,
01596   8, 38, 22, 33, 17, 52, 34, 22,
01597  53, 43, 44,  1, 27, 31, 41, 43,
01598  41, 30, 31, 36, 30,  5, 55, 31,
01599  33, 30, 40, 23, 15, 29, 34, 34,
01600  59, 34, 30, 11, 13, 38,  5,  0,
01601  30, 42,  5, 30, 29, 34, 10, 44,
01602  30, 63, 35, 12,  3, 26, 15, 17,
01603  25, 34, 43, 39, 34, 56, 29, 23,
01604  30, 12, 30, 10, 35,  9, 24, 58,
01605  10, 12, 54, 33, 37, 20, 41, 35,
01606  29, 18, 61, 30, 40, 24, 39, 53,
01607  62, 26, 29, 33, 34, 53, 49, 21,
01608  27, 11, 63, 20, 26, 23,  7, 13,
01609   6, 47, 29, 30,  9, 51, 22, 34,
01610  21, 25, 33, 56, 57, 30, 38, 51,
01611  51, 38, 63, 28, 40, 35, 33, 18,
01612  33, 33, 24, 58, 58, 34, 49, 29,
01613  43,  4,  1,  4, 42, 35, 35, 30,
01614  17,  5, 56, 61, 25, 37, 36, 55,
01615  28, 35, 29, 50, 48, 52,  2, 42,
01616  34, 40, 46, 46, 43, 35, 29, 48,
01617  20, 29, 31, 41,  7, 30, 35, 19,
01618  14, 21,  8, 39, 39, 40, 46, 55,
01619  34,  6, 30, 34, 37, 25, 37, 33,
01620  22, 44, 52, 17, 35, 29, 36, 35,
01621  40, 37, 28, 30, 50, 14, 28, 55,
01622   6, 23, 19, 14, 30,  3, 30, 28,
01623  28, 61, 61, 47, 45, 48, 40, 40,
01624  34, 34, 25, 30, 29, 35,  4, 26,
01625  53, 50, 26, 41, 27, 59, 27, 38,
01626  39,  3, 50, 43, 47, 23, 33, 55,
01627  35, 21, 23, 35, 61, 33, 46, 52,
01628  35, 34, 24, 30, 43, 16, 37, 21,
01629   2, 24, 45, 34, 30, 55, 55,  1,
01630  29, 29, 26, 28, 25, 31, 36, 22,
01631  17, 30, 52,  2, 44, 44, 57, 26,
01632  62, 41, 39, 57, 26, 46, 49, 11,
01633  16, 19,  5, 59, 38, 39, 58, 38,
01634  25, 49, 50, 22, 28, 59,  9, 59,
01635   7, 28, 55, 17,  4, 35, 50, 21,
01636  29, 44, 47, 18, 24, 19, 25, 42,
01637  35,  3, 51, 35, 16, 35, 30, 63,
01638  57, 39, 39, 25, 35, 38,  9, 16,
01639  36, 45, 31, 60, 14, 34, 42, 24,
01640   0, 37, 18, 61, 57, 37, 28, 53,
01641  20, 46, 14, 47, 38, 38, 38,  9,
01642  34, 39, 43, 17, 39, 59,  5, 27,
01643   0, 12, 27,
01644 };
01645 
01646 static const uint8_t table1_mvy[1099] = {
01647  32, 32, 31, 31, 32, 33, 31, 33,
01648  33, 32, 32, 30, 34, 31, 32, 29,
01649  33, 30, 32, 33, 31, 35, 34, 30,
01650  34, 31, 33, 29, 29, 31, 33, 35,
01651  30, 30, 35, 32, 32, 34, 34, 28,
01652  25, 32, 36, 27, 32, 32, 32, 37,
01653  39,  3, 32, 30, 31, 26, 31, 32,
01654  32, 38, 29, 29, 32, 34, 31, 31,
01655  34, 35, 33, 33, 28, 33,  1, 33,
01656  27, 29, 30, 31, 28, 29, 37, 35,
01657  31, 33, 35, 27, 36, 37, 25, 25,
01658  61, 35,  4,  5, 32, 33, 36, 30,
01659  23, 30, 28, 34, 31, 32, 32, 39,
01660  32, 34, 21, 39, 32, 59, 32, 28,
01661  32, 36, 60, 33, 24, 36, 32, 32,
01662  41,  2, 32, 38, 26, 22, 33, 30,
01663  31, 32, 32, 30, 31, 32, 29,  3,
01664  40, 38, 32, 32, 33, 26, 31, 34,
01665  28, 38, 34, 31,  3, 31, 35, 38,
01666  27, 35, 33, 28, 29, 27, 29, 27,
01667  43, 29, 37, 63, 31, 33, 34, 30,
01668  31, 30, 37, 30, 35, 35, 26, 41,
01669  37, 31, 33, 28, 26, 30, 42, 24,
01670   7, 27, 33, 29, 36, 28, 34, 57,
01671  23, 41, 36, 23, 35, 34, 25, 30,
01672  25, 33, 25, 25, 29, 24, 33, 39,
01673  33, 33,  0, 37, 31, 36, 21, 32,
01674  61, 24, 35, 61, 31,  5, 31, 59,
01675  39, 21, 32, 30, 34, 22, 40, 32,
01676  29, 16, 31,  5, 62,  2, 20, 39,
01677  39, 32, 33,  1, 31, 24, 36, 32,
01678  36, 32, 28, 26,  6, 31, 38, 34,
01679  58, 35, 32, 33, 33, 17, 43, 26,
01680  31, 40, 31, 34, 32, 32, 31, 19,
01681  30, 32, 29, 33, 38, 38, 32, 59,
01682  40, 18, 38, 32, 35, 34, 32, 17,
01683   1, 15, 30, 28, 31, 28, 34, 29,
01684  32, 27, 35, 27, 49, 22, 37, 34,
01685  37, 26, 32, 32, 22, 28, 45, 29,
01686  30, 31, 43, 46, 41, 30, 26, 13,
01687  34, 32, 27, 38, 42, 42, 33, 47,
01688  33, 60, 27, 42, 25, 32, 22, 32,
01689  48, 32, 45, 33, 33, 41, 27, 25,
01690  19, 31, 35, 19, 36, 42, 27, 17,
01691  31, 44, 28, 33, 33, 31, 23, 31,
01692  40, 33, 31, 34, 30, 32, 33, 36,
01693  35, 47, 37, 41, 31, 23, 41, 29,
01694  30, 35, 32, 25, 32, 28, 58,  2,
01695  37, 33, 14, 33, 49, 20, 39, 36,
01696  21,  9, 23, 33, 35, 24, 39, 37,
01697  11, 33, 30, 31, 31, 28, 51, 40,
01698  35, 29, 25, 33, 46, 35, 37, 30,
01699  30,  8, 63, 28, 15, 40, 33, 45,
01700  49, 25, 32,  4, 47, 51, 36, 39,
01701  53, 10, 24, 29, 30, 31, 25, 40,
01702  38, 38, 33, 56, 23, 27, 32, 37,
01703  26, 29, 43, 36, 33, 24, 55, 43,
01704   9, 29, 34, 34, 24, 33, 18, 33,
01705  33, 30, 31, 50, 24, 60, 30, 39,
01706  34, 30, 39, 28, 22, 38,  2, 26,
01707  63, 32, 57, 21, 39, 33, 28, 18,
01708  30, 34, 22, 33, 29, 41, 30, 34,
01709  35, 21, 13, 34, 35, 39, 30, 46,
01710  32, 42, 32, 31, 33, 26, 11, 33,
01711  22, 31, 25, 31, 53, 27, 43, 25,
01712  40, 50, 21, 36, 38, 30, 12, 31,
01713  34, 20, 15, 29, 32, 62, 30, 13,
01714  17, 32, 19, 31, 20, 31, 30,  7,
01715   1, 17, 34, 37, 31, 31, 44, 34,
01716  26, 40, 16, 37, 52, 48, 30, 20,
01717  18, 33, 38, 29,  7, 25, 30, 54,
01718  45, 47, 46, 41, 29, 29, 16, 30,
01719  14, 26, 38, 34, 34, 29, 34, 30,
01720  29, 30, 57, 30,  4, 46, 33, 29,
01721  39, 44, 30, 31, 50, 33, 31, 32,
01722  19, 32, 40, 31, 37, 47,  1, 35,
01723  16, 31,  0, 35, 33,  1, 17, 34,
01724   9, 34, 33, 31, 49, 43, 42, 51,
01725  34, 29, 23, 29, 14, 30, 45, 49,
01726  11, 24, 31, 28, 35, 41, 30, 44,
01727  18, 29, 34, 35, 36, 25, 26, 21,
01728  31, 30, 34, 19, 34, 44, 36, 38,
01729  25, 31, 28, 23, 37,  3, 55, 41,
01730  30, 22, 41, 24, 33, 26, 35, 35,
01731  30, 55, 51, 47, 48, 38, 24, 15,
01732  21, 50, 25, 46, 30, 29, 10, 34,
01733  42, 45, 29, 42, 22,  3, 33, 27,
01734  34,  1, 34, 28, 34, 36, 35, 23,
01735  23, 13, 58,  3, 26, 63, 25, 31,
01736  34, 61, 38, 39, 25, 61, 29, 37,
01737  30, 41, 26, 48, 28, 33, 50, 35,
01738  30, 37, 29, 29, 40,  6, 39, 28,
01739  28, 19,  8, 22, 45, 34, 35, 10,
01740  58, 17, 37, 39, 30, 18, 54, 14,
01741  29, 16, 59, 30, 35, 23, 35, 30,
01742  47, 36, 29, 55, 20, 12, 31, 35,
01743  14, 29, 18, 34, 34, 24, 29, 26,
01744  22,  2, 27, 23,  8, 30, 55, 38,
01745  60, 31,  4, 34, 49, 34, 27, 34,
01746  33, 30, 31, 54, 42, 35, 38, 46,
01747  44, 26, 27,  9, 39, 25, 21, 29,
01748  28, 42, 13,  0,  5, 34, 37, 28,
01749  24, 29, 63, 26, 22, 27, 29, 25,
01750  33, 25, 61,  0, 35, 25, 36, 15,
01751  27, 40, 53, 33,  3, 10, 16, 37,
01752  38, 18, 30, 46, 27,  9,  6, 29,
01753  62,  8, 42, 28, 29,  3, 25, 16,
01754  26, 29, 35, 28, 27, 51, 61, 48,
01755  37,  9, 34,  7, 49, 45, 20, 29,
01756  21,  5,  5, 29, 28, 34, 29, 24,
01757  10, 24, 35, 36, 38, 55, 11, 36,
01758  38, 53, 54, 26, 30, 49, 20, 27,
01759  30, 39, 33, 41, 49, 22, 38, 38,
01760   4, 30,  8,  9,  3, 24, 22, 50,
01761  37, 36, 31, 27,  2,  9, 42, 63,
01762  25, 19, 44,  1, 28, 28, 48, 30,
01763  34, 41, 41, 38, 12, 27, 15,  0,
01764  16, 34, 35, 38, 28, 29, 40, 42,
01765  51, 52, 45, 54, 59, 59, 42, 44,
01766  37, 26, 46, 24, 15, 39, 22, 46,
01767  19, 35, 38, 17, 37, 23, 52, 55,
01768  50, 37, 26, 11, 37, 12, 24, 30,
01769  16, 13, 22, 13, 36, 35, 40, 41,
01770  34, 41, 26, 53, 51,  5, 21, 30,
01771   2, 63, 41, 20,  1, 56, 21, 24,
01772  25,  5, 28, 35, 26, 28, 30, 18,
01773  29, 23, 40, 34, 20, 42, 39, 34,
01774  28, 61, 38, 27, 62,  9, 36, 17,
01775   9, 49, 24, 25, 54, 34, 39, 37,
01776   3,  1, 25, 38, 38, 44, 35, 36,
01777  12, 60, 36, 38, 40, 25, 43, 39,
01778  53, 28, 39, 57, 46, 10, 52, 27,
01779  35, 42, 45, 59, 15, 60, 38, 24,
01780  23, 39, 12, 29, 24,  0, 20, 16,
01781  28, 43, 35, 28,  1, 49,  4, 21,
01782  42, 39, 29,  3, 44, 21, 53, 55,
01783  11,  5,  3, 39, 53, 28, 25, 19,
01784  34, 28, 21,
01785 };
01786 
01787 MVTable mv_tables[2] = {
01788     {
01789         1099,
01790         table0_mv_code,
01791         table0_mv_bits,
01792         table0_mvx,
01793         table0_mvy,
01794     },
01795     {
01796         1099,
01797         table1_mv_code,
01798         table1_mv_bits,
01799         table1_mvx,
01800         table1_mvy,
01801     }
01802 };
01803 
01804 const uint8_t v2_mb_type[8][2] = {
01805  {1, 1}, {0   , 2}, {3   , 3}, {9   , 5},
01806  {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
01807 };
01808 
01809 const uint8_t v2_intra_cbpc[4][2] = {
01810  {1, 1}, {0, 3}, {1, 3}, {1, 2},
01811 };
01812 
01813 const uint8_t wmv1_y_dc_scale_table[32]={
01814 //  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
01815     0, 8, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
01816 };
01817 const uint8_t wmv1_c_dc_scale_table[32]={
01818 //  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
01819     0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
01820 };
01821 
01822 const uint8_t old_ff_y_dc_scale_table[32]={
01823 //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
01824     0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
01825 };
01826 
01827 const uint8_t wmv1_scantable[WMV1_SCANTABLE_COUNT][64]={
01828   {
01829     0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
01830     0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
01831     0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05,
01832     0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A,
01833     0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F,
01834     0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34,
01835     0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35,
01836     0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F,
01837   },
01838   {
01839     0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
01840     0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
01841     0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D,
01842     0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A,
01843     0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D,
01844     0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25,
01845     0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35,
01846     0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F,
01847   },
01848   {
01849     0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18,
01850     0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20,
01851     0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07,
01852     0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39,
01853     0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D,
01854     0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E,
01855     0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35,
01856     0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
01857   },
01858   {
01859     0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09,
01860     0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29,
01861     0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13,
01862     0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C,
01863     0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24,
01864     0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E,
01865     0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35,
01866     0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
01867   }
01868 };
01869 
01870 const uint8_t table_inter_intra[4][2]={
01871     {0,1} /*Luma-Left Chroma-Left*/,
01872     {2,2} /*Luma-Top  Chroma-Left*/,
01873     {6,3} /*luma-Left Chroma-Top */,
01874     {7,3} /*luma-Top  Chroma-Top */
01875 };
01876 
01877 static const uint32_t table_mb_non_intra2[128][2] = {
01878 {0x0000A7, 14}, {0x01B2B8, 18}, {0x01B28E, 18}, {0x036575, 19},
01879 {0x006CAC, 16}, {0x000A69, 18}, {0x002934, 20}, {0x00526B, 21},
01880 {0x006CA1, 16}, {0x01B2B9, 18}, {0x0029AD, 20}, {0x029353, 24},
01881 {0x006CA7, 16}, {0x006CAB, 16}, {0x01B2BB, 18}, {0x00029B, 16},
01882 {0x00D944, 17}, {0x000A6A, 18}, {0x0149A8, 23}, {0x03651F, 19},
01883 {0x006CAF, 16}, {0x000A4C, 18}, {0x03651E, 19}, {0x000A48, 18},
01884 {0x00299C, 20}, {0x00299F, 20}, {0x029352, 24}, {0x0029AC, 20},
01885 {0x000296, 16}, {0x00D946, 17}, {0x000A68, 18}, {0x000298, 16},
01886 {0x000527, 17}, {0x00D94D, 17}, {0x0014D7, 19}, {0x036574, 19},
01887 {0x000A5C, 18}, {0x01B299, 18}, {0x00299D, 20}, {0x00299E, 20},
01888 {0x000525, 17}, {0x000A66, 18}, {0x00A4D5, 22}, {0x00149B, 19},
01889 {0x000295, 16}, {0x006CAD, 16}, {0x000A49, 18}, {0x000521, 17},
01890 {0x006CAA, 16}, {0x00D945, 17}, {0x01B298, 18}, {0x00052F, 17},
01891 {0x003654, 15}, {0x006CA0, 16}, {0x000532, 17}, {0x000291, 16},
01892 {0x003652, 15}, {0x000520, 17}, {0x000A5D, 18}, {0x000294, 16},
01893 {0x00009B, 11}, {0x0006E2, 12}, {0x000028, 12}, {0x0001B0, 10},
01894 {0x000001,  3}, {0x000010,  8}, {0x00002F,  6}, {0x00004C, 10},
01895 {0x00000D,  4}, {0x000000, 10}, {0x000006,  9}, {0x000134, 12},
01896 {0x00000C,  4}, {0x000007, 10}, {0x000007,  9}, {0x0006E1, 12},
01897 {0x00000E,  5}, {0x0000DA,  9}, {0x000022,  9}, {0x000364, 11},
01898 {0x00000F,  4}, {0x000006, 10}, {0x00000F,  9}, {0x000135, 12},
01899 {0x000014,  5}, {0x0000DD,  9}, {0x000004,  9}, {0x000015, 11},
01900 {0x00001A,  6}, {0x0001B3, 10}, {0x000005, 10}, {0x0006E3, 12},
01901 {0x00000C,  5}, {0x0000B9,  8}, {0x000004,  8}, {0x0000DB,  9},
01902 {0x00000E,  4}, {0x00000B, 10}, {0x000023,  9}, {0x0006CB, 12},
01903 {0x000005,  6}, {0x0001B1, 10}, {0x000001, 10}, {0x0006E0, 12},
01904 {0x000011,  5}, {0x0000DF,  9}, {0x00000E,  9}, {0x000373, 11},
01905 {0x000003,  5}, {0x0000B8,  8}, {0x000006,  8}, {0x000175,  9},
01906 {0x000015,  5}, {0x000174,  9}, {0x000027,  9}, {0x000372, 11},
01907 {0x000010,  5}, {0x0000BB,  8}, {0x000005,  8}, {0x0000DE,  9},
01908 {0x00000F,  5}, {0x000001,  9}, {0x000012,  8}, {0x000004, 10},
01909 {0x000002,  3}, {0x000016,  5}, {0x000009,  4}, {0x000001,  5},
01910 };
01911 
01912 static const uint32_t table_mb_non_intra3[128][2] = {
01913 {0x0002A1, 10}, {0x005740, 15}, {0x01A0BF, 18}, {0x015D19, 17},
01914 {0x001514, 13}, {0x00461E, 15}, {0x015176, 17}, {0x015177, 17},
01915 {0x0011AD, 13}, {0x00682E, 16}, {0x0682F9, 20}, {0x03417D, 19},
01916 {0x001A36, 14}, {0x002A2D, 14}, {0x00D05E, 17}, {0x006824, 16},
01917 {0x001515, 13}, {0x00545C, 15}, {0x0230E9, 18}, {0x011AFA, 17},
01918 {0x0015D7, 13}, {0x005747, 15}, {0x008D79, 16}, {0x006825, 16},
01919 {0x002BA2, 14}, {0x00A8BA, 16}, {0x0235F6, 18}, {0x015D18, 17},
01920 {0x0011AE, 13}, {0x00346F, 15}, {0x008C3B, 16}, {0x00346E, 15},
01921 {0x000D1A, 13}, {0x00461F, 15}, {0x0682F8, 20}, {0x011875, 17},
01922 {0x002BA1, 14}, {0x008D61, 16}, {0x0235F7, 18}, {0x0230E8, 18},
01923 {0x001513, 13}, {0x008D7B, 16}, {0x011AF4, 17}, {0x011AF5, 17},
01924 {0x001185, 13}, {0x0046BF, 15}, {0x008D60, 16}, {0x008D7C, 16},
01925 {0x001512, 13}, {0x00461C, 15}, {0x00AE8D, 16}, {0x008D78, 16},
01926 {0x000D0E, 13}, {0x003413, 15}, {0x0046B1, 15}, {0x003416, 15},
01927 {0x000AEA, 12}, {0x002A2C, 14}, {0x005741, 15}, {0x002A2F, 14},
01928 {0x000158,  9}, {0x0008D2, 12}, {0x00054C, 11}, {0x000686, 12},
01929 {0x000000,  2}, {0x000069,  8}, {0x00006B,  8}, {0x00068C, 12},
01930 {0x000007,  3}, {0x00015E,  9}, {0x0002A3, 10}, {0x000AE9, 12},
01931 {0x000006,  3}, {0x000231, 10}, {0x0002B8, 10}, {0x001A08, 14},
01932 {0x000010,  5}, {0x0001A9, 10}, {0x000342, 11}, {0x000A88, 12},
01933 {0x000004,  4}, {0x0001A2, 10}, {0x0002A4, 10}, {0x001184, 13},
01934 {0x000012,  5}, {0x000232, 10}, {0x0002B2, 10}, {0x000680, 12},
01935 {0x00001B,  6}, {0x00046A, 11}, {0x00068E, 12}, {0x002359, 14},
01936 {0x000016,  5}, {0x00015F,  9}, {0x0002A0, 10}, {0x00054D, 11},
01937 {0x000005,  4}, {0x000233, 10}, {0x0002B9, 10}, {0x0015D6, 13},
01938 {0x000022,  6}, {0x000468, 11}, {0x000683, 12}, {0x001A0A, 14},
01939 {0x000013,  5}, {0x000236, 10}, {0x0002BB, 10}, {0x001186, 13},
01940 {0x000017,  5}, {0x0001AB, 10}, {0x0002A7, 10}, {0x0008D3, 12},
01941 {0x000014,  5}, {0x000237, 10}, {0x000460, 11}, {0x000D0F, 13},
01942 {0x000019,  6}, {0x0001AA, 10}, {0x0002B3, 10}, {0x000681, 12},
01943 {0x000018,  6}, {0x0001A8, 10}, {0x0002A5, 10}, {0x00068F, 12},
01944 {0x000007,  4}, {0x000055,  7}, {0x000047,  7}, {0x0000AD,  8},
01945 };
01946 
01947 static const uint32_t table_mb_non_intra4[128][2] = {
01948 {0x0000D4,  8}, {0x0021C5, 14}, {0x00F18A, 16}, {0x00D5BC, 16},
01949 {0x000879, 12}, {0x00354D, 14}, {0x010E3F, 17}, {0x010F54, 17},
01950 {0x000866, 12}, {0x00356E, 14}, {0x010F55, 17}, {0x010E3E, 17},
01951 {0x0010CE, 13}, {0x003C84, 14}, {0x00D5BD, 16}, {0x00F18B, 16},
01952 {0x000868, 12}, {0x00438C, 15}, {0x0087AB, 16}, {0x00790B, 15},
01953 {0x000F10, 12}, {0x00433D, 15}, {0x006AD3, 15}, {0x00790A, 15},
01954 {0x001AA7, 13}, {0x0043D4, 15}, {0x00871E, 16}, {0x006ADF, 15},
01955 {0x000D7C, 12}, {0x003C94, 14}, {0x00438D, 15}, {0x006AD2, 15},
01956 {0x0006BC, 11}, {0x0021E9, 14}, {0x006ADA, 15}, {0x006A99, 15},
01957 {0x0010F7, 13}, {0x004389, 15}, {0x006ADB, 15}, {0x0078C4, 15},
01958 {0x000D56, 12}, {0x0035F7, 14}, {0x00438E, 15}, {0x006A98, 15},
01959 {0x000D52, 12}, {0x003C95, 14}, {0x004388, 15}, {0x00433C, 15},
01960 {0x000D54, 12}, {0x001E4B, 13}, {0x003C63, 14}, {0x003C83, 14},
01961 {0x000861, 12}, {0x0021EB, 14}, {0x00356C, 14}, {0x0035F6, 14},
01962 {0x000863, 12}, {0x00219F, 14}, {0x003568, 14}, {0x003C82, 14},
01963 {0x0001AE,  9}, {0x0010C0, 13}, {0x000F11, 12}, {0x001AFA, 13},
01964 {0x000000,  1}, {0x0000F0,  8}, {0x0001AD,  9}, {0x0010C1, 13},
01965 {0x00000A,  4}, {0x0003C5, 10}, {0x000789, 11}, {0x001AB5, 13},
01966 {0x000009,  4}, {0x000435, 11}, {0x000793, 11}, {0x001E40, 13},
01967 {0x00001D,  5}, {0x0003CB, 10}, {0x000878, 12}, {0x001AAF, 13},
01968 {0x00000B,  4}, {0x0003C7, 10}, {0x000791, 11}, {0x001AAB, 13},
01969 {0x00001F,  5}, {0x000436, 11}, {0x0006BF, 11}, {0x000F19, 12},
01970 {0x00003D,  6}, {0x000D51, 12}, {0x0010C4, 13}, {0x0021E8, 14},
01971 {0x000036,  6}, {0x000437, 11}, {0x0006AF, 11}, {0x0010C5, 13},
01972 {0x00000C,  4}, {0x000432, 11}, {0x000794, 11}, {0x001E30, 13},
01973 {0x000042,  7}, {0x000870, 12}, {0x000F24, 12}, {0x001E43, 13},
01974 {0x000020,  6}, {0x00043E, 11}, {0x000795, 11}, {0x001AAA, 13},
01975 {0x000037,  6}, {0x0006AC, 11}, {0x0006AE, 11}, {0x0010F6, 13},
01976 {0x000034,  6}, {0x00043A, 11}, {0x000D50, 12}, {0x001AAE, 13},
01977 {0x000039,  6}, {0x00043F, 11}, {0x00078D, 11}, {0x0010D2, 13},
01978 {0x000038,  6}, {0x00043B, 11}, {0x0006BD, 11}, {0x0010D3, 13},
01979 {0x000011,  5}, {0x0001AC,  9}, {0x0000F3,  8}, {0x000439, 11},
01980 };
01981 
01982 const uint32_t (* const wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
01983     table_mb_non_intra2,
01984     table_mb_non_intra3,
01985     table_mb_non_intra4,
01986     table_mb_non_intra,
01987 };
01988 
01989 const uint8_t wmv2_scantableA[64]={
01990 0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
01991 0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
01992 0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
01993 0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
01994 };
01995 
01996 const uint8_t wmv2_scantableB[64]={
01997 0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
01998 0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
01999 0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
02000 0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
02001 };

Generated on Fri Sep 16 2011 17:17:41 for FFmpeg by  doxygen 1.7.1