[svn] / branches / dev-api-4 / xvidcore / src / bitstream / mbcoding.c Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/src/bitstream/mbcoding.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/xvidcore/src/bitstream/mbcoding.c revision 851, Sat Feb 15 15:22:19 2003 UTC branches/dev-api-4/xvidcore/src/bitstream/mbcoding.c revision 1003, Sat May 3 19:11:58 2003 UTC
# Line 51  Line 51 
51    
52  #include <stdio.h>  #include <stdio.h>
53  #include <stdlib.h>  #include <stdlib.h>
54    #include <string.h>
55    
56  #include "../portab.h"  #include "../portab.h"
57  #include "../global.h"  #include "../global.h"
58  #include "bitstream.h"  #include "bitstream.h"
# Line 212  Line 214 
214                                                                          = (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | ((level & 0xfff) << 1) | 1;                                                                          = (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | ((level & 0xfff) << 1) | 1;
215                                                                  coeff_VLC[intra][last][level + offset][run].len = 30;                                                                  coeff_VLC[intra][last][level + offset][run].len = 30;
216                                                                          coeff_VLC[intra][last][offset - level][run].code                                                                          coeff_VLC[intra][last][offset - level][run].code
217                                                                          = (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | ((-level & 0xfff) << 1) | 1;                                                                          = (ESCAPE3 << 21) | (last << 20) | (run << 14) | (1 << 13) | ((-(int32_t)level & 0xfff) << 1) | 1;
218                                                                  coeff_VLC[intra][last][offset - level][run].len = 30;                                                                  coeff_VLC[intra][last][offset - level][run].len = 30;
219                                                          }                                                          }
220                                                          continue;                                                          continue;
# Line 498  Line 500 
500          {          {
501                  if ((level = qcoeff[zigzag[i++]]) != 0)                  if ((level = qcoeff[zigzag[i++]]) != 0)
502                  {                  {
503                          abs_level = ABS(prev_level);                          abs_level = abs(prev_level);
504                          abs_level = abs_level < 64 ? abs_level : 0;                          abs_level = abs_level < 64 ? abs_level : 0;
505                          code      = coeff_VLC[1][0][abs_level][prev_run].code;                          code      = coeff_VLC[1][0][abs_level][prev_run].code;
506                          len               = coeff_VLC[1][0][abs_level][prev_run].len;                          len               = coeff_VLC[1][0][abs_level][prev_run].len;
# Line 518  Line 520 
520                          run++;                          run++;
521          }          }
522    
523          abs_level = ABS(prev_level);          abs_level = abs(prev_level);
524          abs_level = abs_level < 64 ? abs_level : 0;          abs_level = abs_level < 64 ? abs_level : 0;
525          code      = coeff_VLC[1][1][abs_level][prev_run].code;          code      = coeff_VLC[1][1][abs_level][prev_run].code;
526          len               = coeff_VLC[1][1][abs_level][prev_run].len;          len               = coeff_VLC[1][1][abs_level][prev_run].len;
# Line 559  Line 561 
561          {          {
562                  if ((level = qcoeff[zigzag[i++]]) != 0)                  if ((level = qcoeff[zigzag[i++]]) != 0)
563                  {                  {
564                          abs_level = ABS(prev_level);                          abs_level = abs(prev_level);
565                          abs_level = abs_level < 64 ? abs_level : 0;                          abs_level = abs_level < 64 ? abs_level : 0;
566                          len               = coeff_VLC[1][0][abs_level][prev_run].len;                          len               = coeff_VLC[1][0][abs_level][prev_run].len;
567                          bits      += len!=128 ? len : 30;                          bits      += len!=128 ? len : 30;
# Line 572  Line 574 
574                          run++;                          run++;
575          }          }
576    
577          abs_level = ABS(prev_level);          abs_level = abs(prev_level);
578          abs_level = abs_level < 64 ? abs_level : 0;          abs_level = abs_level < 64 ? abs_level : 0;
579          len               = coeff_VLC[1][1][abs_level][prev_run].len;          len               = coeff_VLC[1][1][abs_level][prev_run].len;
580          bits      += len!=128 ? len : 30;          bits      += len!=128 ? len : 30;
# Line 627  Line 629 
629    
630  #endif  #endif
631    
632    
633    static int iDQtab[5] = {
634            1, 0, -1 /* no change */, 2, 3
635    };
636    #define DQ_VALUE2INDEX(value)  iDQtab[(value)+2]
637    
638    
639  static __inline void  static __inline void
640  CodeBlockIntra(const FRAMEINFO * const frame,  CodeBlockIntra(const FRAMEINFO * const frame,
641                             const MACROBLOCK * pMB,                             const MACROBLOCK * pMB,
# Line 657  Line 666 
666                  BitstreamPutBits(bs, 0, 1);                  BitstreamPutBits(bs, 0, 1);
667    
668          // write cbpy          // write cbpy
669          BitstreamPutBits(bs, cbpy_tab[cbpy].code, cbpy_tab[cbpy].len);          BitstreamPutBits(bs, xvid_cbpy_tab[cbpy].code, xvid_cbpy_tab[cbpy].len);
670    
671          // write dquant          // write dquant
672          if (pMB->mode == MODE_INTRA_Q)          if (pMB->mode == MODE_INTRA_Q)
673                  BitstreamPutBits(bs, pMB->dquant, 2);                  BitstreamPutBits(bs, DQ_VALUE2INDEX(pMB->dquant), 2);
674    
675          // write interlacing          // write interlacing
676          if (frame->global_flags & XVID_INTERLACING) {          if (frame->vol_flags & XVID_VOL_INTERLACING) {
677                  BitstreamPutBit(bs, pMB->field_dct);                  BitstreamPutBit(bs, pMB->field_dct);
678          }          }
679          // code block coeffs          // code block coeffs
# Line 678  Line 687 
687    
688                  if (pMB->cbp & (1 << (5 - i))) {                  if (pMB->cbp & (1 << (5 - i))) {
689                          const uint16_t *scan_table =                          const uint16_t *scan_table =
690                                  frame->global_flags & XVID_ALTERNATESCAN ?                                  frame->vop_flags & XVID_VOP_ALTERNATESCAN ?
691                                  scan_tables[2] : scan_tables[pMB->acpred_directions[i]];                                  scan_tables[2] : scan_tables[pMB->acpred_directions[i]];
692    
693                          bits = BitstreamPos(bs);                          bits = BitstreamPos(bs);
# Line 719  Line 728 
728                  BitstreamPutBit(bs, pMB->mcsel);                // mcsel: '0'=local motion, '1'=GMC                  BitstreamPutBit(bs, pMB->mcsel);                // mcsel: '0'=local motion, '1'=GMC
729    
730          // write cbpy          // write cbpy
731          BitstreamPutBits(bs, cbpy_tab[cbpy].code, cbpy_tab[cbpy].len);          BitstreamPutBits(bs, xvid_cbpy_tab[cbpy].code, xvid_cbpy_tab[cbpy].len);
732    
733          // write dquant          // write dquant
734          if (pMB->mode == MODE_INTER_Q)          if (pMB->mode == MODE_INTER_Q)
735                  BitstreamPutBits(bs, pMB->dquant, 2);                  BitstreamPutBits(bs, DQ_VALUE2INDEX(pMB->dquant), 2);
736    
737          // interlacing          // interlacing
738          if (frame->global_flags & XVID_INTERLACING) {          if (frame->vol_flags & XVID_VOL_INTERLACING) {
739                  if (pMB->cbp) {                  if (pMB->cbp) {
740                          BitstreamPutBit(bs, pMB->field_dct);                          BitstreamPutBit(bs, pMB->field_dct);
741                          DPRINTF(DPRINTF_MB,"codep: field_dct: %i", pMB->field_dct);                          DPRINTF(DPRINTF_MB,"codep: field_dct: %i", pMB->field_dct);
# Line 758  Line 767 
767                  if (pMB->cbp & (1 << (5 - i)))                  if (pMB->cbp & (1 << (5 - i)))
768                  {                  {
769                          const uint16_t *scan_table =                          const uint16_t *scan_table =
770                                  frame->global_flags & XVID_ALTERNATESCAN ?                                  frame->vop_flags & XVID_VOP_ALTERNATESCAN ?
771                                  scan_tables[2] : scan_tables[0];                                  scan_tables[2] : scan_tables[0];
772    
773  #ifdef BIGLUT  #ifdef BIGLUT
# Line 1052  Line 1061 
1061                  return data;                  return data;
1062    
1063          res = BitstreamGetBits(bs, fcode - 1);          res = BitstreamGetBits(bs, fcode - 1);
1064          mv = ((ABS(data) - 1) * scale_fac) + res + 1;          mv = ((abs(data) - 1) * scale_fac) + res + 1;
1065    
1066          return data < 0 ? -mv : mv;          return data < 0 ? -mv : mv;
1067    
# Line 1259  Line 1268 
1268          } while (!last);          } while (!last);
1269    
1270  }  }
1271    
1272    
1273    
1274    
1275    
1276    
1277    
1278    /************************************************************************
1279     *               Trellis based R-D optimal quantization                 *
1280     *  not really "bitstream" or "mbcoding" related, but needs VLC tables  *
1281     *                                                                      *
1282     ************************************************************************/
1283    
1284    
1285    int __inline
1286    RunLevel_CalcBits_inter(const int16_t run, int16_t level)
1287    {
1288            const int esc_length = 30;
1289    
1290            if (!((level+32) & -64))
1291                    return coeff_VLC[0][0][level+32][run].len;
1292            else
1293                    return esc_length;
1294    }
1295    
1296    int __inline
1297    RunLevelLast_CalcBits_inter(const int16_t run, const int16_t level)
1298    {
1299            const int esc_length = 30;
1300    
1301            if (!((level+32) & -64))
1302                    return coeff_VLC[0][1][level+32][run].len;
1303            else
1304                    return esc_length;
1305    }
1306    
1307    
1308    int __inline
1309    RunLevel_CalcBits_intra(const int16_t run, int16_t level)
1310    {
1311            const int esc_length = 30;
1312            int bits;
1313    
1314            level = abs(level);
1315            if (!(level & -64)) {
1316                    bits = coeff_VLC[1][0][level][run].len;
1317                    if (bits!=128)
1318                            return bits;
1319            }
1320            return esc_length;
1321    }
1322    
1323    int __inline
1324    RunLevelLast_CalcBits_intra(const int16_t run, int16_t level)
1325    {
1326            const int esc_length = 30;
1327            int bits;
1328    
1329            level = abs(level);
1330            if (!(level & -64)) {
1331                    bits = coeff_VLC[1][1][level][run].len;
1332                    if (bits!=128)
1333                            return bits;
1334            }
1335            return esc_length;
1336    }
1337    
1338    /* based on ffmpeg's trellis quant, thanks! */
1339    /* (C) 2003 Michael Niedermayer <michaelni@gmx.at> */
1340    
1341    int
1342    dct_quantize_trellis_inter_h263_c (int16_t *qcoeff, const int16_t *data, int quant)
1343    {
1344    
1345    /* input: original quantized DCT coefficients (to calc distorion)*/
1346    /*                already quantized DCT coefficients */
1347    /*                quantizer */
1348    /* output: modified table of quantized DCT coefficients */
1349    
1350    /* maybe combining quantize&Trellis would be faster (even that it disables MMX quant) */
1351    
1352      int run_tab[65];
1353      int level_tab[65];
1354      int score_tab[65];
1355      int last_run = 0;
1356      int last_level = 0;
1357      int last_score = 0;
1358      int last_i = 0;
1359      int coeff[64];
1360      int coeff_count[64];  /* is a table useful for this 0-1 (or 1-2) table? */
1361      int last_non_zero, i;
1362    
1363      const uint16_t *const zigzag = &scan_tables[0][0];
1364            /* ordinary zigzag order, so it's not INTERLACE compatible, yet  */
1365    
1366      const int qmul = 2*quant;
1367      const int qadd = ((quant-1)|1);
1368    
1369    /* quant is not needed anymore after this */
1370    
1371      int score_limit = 0;
1372      int left_limit = 0;
1373    
1374      const int lambda = (quant * quant * 123 + 64) >> 7;   // default lagrangian
1375    
1376    /*  control lambda through a ENVIRONMENT variable (for automatic optmization) */
1377    
1378    /*
1379      const int lfact=123;  // better control of the lagrangian lambda
1380      int lambda = (quant * quant * 123 + 64) >> 7; // default lagrangian
1381    
1382      const char * const trellis_lambda = getenv("TRELLIS_LAMBDA");
1383      if(trellis_lambda)
1384                    lfact = atoi(trellis_lambda);
1385      if (lfact < 1)
1386            lfact = 123;    // why this value? Who knows? But 123 seems better than 109 = 0.85<<7
1387    
1388      lambda = (quant * quant * lfact + 64) >> 7;   // lagrangian
1389    */
1390    
1391      last_non_zero = -1;
1392      for (i = 0; i < 64; i++)
1393        {
1394          const int level = qcoeff[zigzag[i]];
1395    
1396                    if (level) {
1397                            last_non_zero = i;
1398    
1399                            if (level>0) {
1400                                    if (level==1) {
1401                                            coeff[i] = 1;
1402                                            coeff_count[i] = 0;
1403                                    } else {
1404                                            coeff[i] = level;
1405                                            coeff_count[i] = 1;
1406                                    }
1407                            } else {
1408                                    if (level==-1) {
1409                                            coeff[i] = -1;
1410                                            coeff_count[i] = 0;
1411                                    } else {
1412                                            coeff[i] = level+1;     // because we check coeff[i] and coeff[i]-1
1413                                            coeff_count[i] = 1;
1414                                    }
1415                            }
1416                } else {
1417                            coeff[i] = ((data[zigzag[i]]>>31)|1); /* +- 1 because of gap */
1418                            coeff_count[i] = 0;
1419                    }
1420        }
1421    
1422      if (last_non_zero < 0)
1423          return last_non_zero;
1424    
1425      score_tab[0] = 0;
1426    
1427      for (i = 0; i <= last_non_zero; i++) {
1428        int level, run, j;
1429        const int dct_coeff = data[zigzag[i]];
1430        const int zero_distortion = dct_coeff * dct_coeff;
1431        int best_score = 256 * 256 * 256 * 120;
1432    
1433            int distortion;
1434            int dequant_err;
1435    
1436            last_score += zero_distortion;
1437    
1438    
1439    /****************** level loop unrolled: first check coeff[i] *********/
1440        level = coeff[i];
1441    
1442            if (level > 0)  // coeff[i]==0 is not possible here
1443                    dequant_err = level * qmul + qadd - dct_coeff;
1444            else
1445                    dequant_err = level * qmul - qadd - dct_coeff;
1446    
1447            distortion = dequant_err*dequant_err;
1448    
1449            for (run = 0; run <= i - left_limit; run++) {
1450    
1451              int score = distortion + lambda*RunLevel_CalcBits_inter(run, level) + score_tab[i - run];
1452    
1453              if (score < best_score)
1454                {
1455                  best_score = score_tab[i + 1] = score;
1456                  run_tab[i + 1] = run;
1457                  level_tab[i + 1] = level;
1458                }
1459            }
1460    
1461            for (run = 0; run <= i - left_limit; run++) {
1462              int score = distortion + lambda*RunLevelLast_CalcBits_inter(run, level) + score_tab[i - run];
1463    
1464          if (score < last_score)
1465                    {
1466                      last_score = score;
1467                      last_run = run;
1468                      last_level = level;
1469                      last_i = i + 1;
1470                    }
1471        }
1472    
1473    /****************** level loop unrolled: if possible, check coeff[i]-1 *********/
1474    
1475        if (coeff_count[i]) {
1476    
1477                    level--;
1478                    dequant_err -= qmul;
1479                    distortion = dequant_err*dequant_err;
1480    
1481                    for (run = 0; run <= i - left_limit; run++) {
1482                      int score = distortion + lambda*RunLevel_CalcBits_inter(run, level) + score_tab[i-run];
1483    
1484                      if (score < best_score)
1485                        {
1486                          best_score = score_tab[i + 1] = score;
1487                          run_tab[i + 1] = run;
1488                          level_tab[i + 1] = level;
1489                        }
1490                    }
1491    
1492              for (run = 0; run <= i - left_limit; run++) {
1493                      int score = distortion + lambda*RunLevelLast_CalcBits_inter(run, level) + score_tab[i-run];
1494    
1495                  if (score < last_score)
1496                            {
1497                              last_score = score;
1498                              last_run = run;
1499                              last_level = level;
1500                              last_i = i + 1;
1501                            }
1502    
1503                }
1504            } // of check coeff[i]-1
1505    
1506    
1507    /****************** checking coeff[i]-2 doesn't isn't supported  *********/
1508    
1509    /****************** add distorsion for higher RUN (-> coeff[i]==0) *******/
1510        for (j = left_limit; j <= i; j++)
1511              score_tab[j] += zero_distortion;
1512    
1513        score_limit += zero_distortion;
1514    
1515        if (score_tab[i + 1] < score_limit)
1516              score_limit = score_tab[i + 1];
1517    
1518     // there is a vlc code in mpeg4 which is 1 bit shorter then another one with a shorter run and the same level
1519     // so we finalize only if we have no chance of getting lower than  score_limit + 1*lambda   anymore
1520    
1521            while (score_tab[left_limit] > score_limit + lambda)
1522              left_limit++;
1523    
1524    
1525      } // end of (i=0;i<=last_non_zero;i++)
1526    
1527      last_non_zero = last_i - 1;
1528      if (last_non_zero < 0)
1529        return last_non_zero;
1530    
1531      i = last_i;
1532    
1533      memset(qcoeff,0x00,64*sizeof(int16_t));
1534    
1535      qcoeff[zigzag[last_non_zero]] = last_level;
1536      i -= last_run + 1;
1537    
1538      for (; i > 0; i -= run_tab[i] + 1)
1539        {
1540          qcoeff[zigzag[i-1]] = level_tab[i];
1541        }
1542    
1543      return last_non_zero;
1544    }
1545    
1546    int
1547    dct_quantize_trellis_inter_mpeg_c (int16_t *qcoeff, const int16_t *data, int quant)
1548    { return 64; }
1549    
1550    
1551    
1552    
1553    
1554    /*****************************************************************************
1555     * VLC tables and other constant arrays
1556     ****************************************************************************/
1557    
1558    VLC_TABLE const coeff_tab[2][102] =
1559    {
1560            /* intra = 0 */
1561            {
1562                    {{ 2,  2}, {0, 0, 1}},
1563                    {{15,  4}, {0, 0, 2}},
1564                    {{21,  6}, {0, 0, 3}},
1565                    {{23,  7}, {0, 0, 4}},
1566                    {{31,  8}, {0, 0, 5}},
1567                    {{37,  9}, {0, 0, 6}},
1568                    {{36,  9}, {0, 0, 7}},
1569                    {{33, 10}, {0, 0, 8}},
1570                    {{32, 10}, {0, 0, 9}},
1571                    {{ 7, 11}, {0, 0, 10}},
1572                    {{ 6, 11}, {0, 0, 11}},
1573                    {{32, 11}, {0, 0, 12}},
1574                    {{ 6,  3}, {0, 1, 1}},
1575                    {{20,  6}, {0, 1, 2}},
1576                    {{30,  8}, {0, 1, 3}},
1577                    {{15, 10}, {0, 1, 4}},
1578                    {{33, 11}, {0, 1, 5}},
1579                    {{80, 12}, {0, 1, 6}},
1580                    {{14,  4}, {0, 2, 1}},
1581                    {{29,  8}, {0, 2, 2}},
1582                    {{14, 10}, {0, 2, 3}},
1583                    {{81, 12}, {0, 2, 4}},
1584                    {{13,  5}, {0, 3, 1}},
1585                    {{35,  9}, {0, 3, 2}},
1586                    {{13, 10}, {0, 3, 3}},
1587                    {{12,  5}, {0, 4, 1}},
1588                    {{34,  9}, {0, 4, 2}},
1589                    {{82, 12}, {0, 4, 3}},
1590                    {{11,  5}, {0, 5, 1}},
1591                    {{12, 10}, {0, 5, 2}},
1592                    {{83, 12}, {0, 5, 3}},
1593                    {{19,  6}, {0, 6, 1}},
1594                    {{11, 10}, {0, 6, 2}},
1595                    {{84, 12}, {0, 6, 3}},
1596                    {{18,  6}, {0, 7, 1}},
1597                    {{10, 10}, {0, 7, 2}},
1598                    {{17,  6}, {0, 8, 1}},
1599                    {{ 9, 10}, {0, 8, 2}},
1600                    {{16,  6}, {0, 9, 1}},
1601                    {{ 8, 10}, {0, 9, 2}},
1602                    {{22,  7}, {0, 10, 1}},
1603                    {{85, 12}, {0, 10, 2}},
1604                    {{21,  7}, {0, 11, 1}},
1605                    {{20,  7}, {0, 12, 1}},
1606                    {{28,  8}, {0, 13, 1}},
1607                    {{27,  8}, {0, 14, 1}},
1608                    {{33,  9}, {0, 15, 1}},
1609                    {{32,  9}, {0, 16, 1}},
1610                    {{31,  9}, {0, 17, 1}},
1611                    {{30,  9}, {0, 18, 1}},
1612                    {{29,  9}, {0, 19, 1}},
1613                    {{28,  9}, {0, 20, 1}},
1614                    {{27,  9}, {0, 21, 1}},
1615                    {{26,  9}, {0, 22, 1}},
1616                    {{34, 11}, {0, 23, 1}},
1617                    {{35, 11}, {0, 24, 1}},
1618                    {{86, 12}, {0, 25, 1}},
1619                    {{87, 12}, {0, 26, 1}},
1620                    {{ 7,  4}, {1, 0, 1}},
1621                    {{25,  9}, {1, 0, 2}},
1622                    {{ 5, 11}, {1, 0, 3}},
1623                    {{15,  6}, {1, 1, 1}},
1624                    {{ 4, 11}, {1, 1, 2}},
1625                    {{14,  6}, {1, 2, 1}},
1626                    {{13,  6}, {1, 3, 1}},
1627                    {{12,  6}, {1, 4, 1}},
1628                    {{19,  7}, {1, 5, 1}},
1629                    {{18,  7}, {1, 6, 1}},
1630                    {{17,  7}, {1, 7, 1}},
1631                    {{16,  7}, {1, 8, 1}},
1632                    {{26,  8}, {1, 9, 1}},
1633                    {{25,  8}, {1, 10, 1}},
1634                    {{24,  8}, {1, 11, 1}},
1635                    {{23,  8}, {1, 12, 1}},
1636                    {{22,  8}, {1, 13, 1}},
1637                    {{21,  8}, {1, 14, 1}},
1638                    {{20,  8}, {1, 15, 1}},
1639                    {{19,  8}, {1, 16, 1}},
1640                    {{24,  9}, {1, 17, 1}},
1641                    {{23,  9}, {1, 18, 1}},
1642                    {{22,  9}, {1, 19, 1}},
1643                    {{21,  9}, {1, 20, 1}},
1644                    {{20,  9}, {1, 21, 1}},
1645                    {{19,  9}, {1, 22, 1}},
1646                    {{18,  9}, {1, 23, 1}},
1647                    {{17,  9}, {1, 24, 1}},
1648                    {{ 7, 10}, {1, 25, 1}},
1649                    {{ 6, 10}, {1, 26, 1}},
1650                    {{ 5, 10}, {1, 27, 1}},
1651                    {{ 4, 10}, {1, 28, 1}},
1652                    {{36, 11}, {1, 29, 1}},
1653                    {{37, 11}, {1, 30, 1}},
1654                    {{38, 11}, {1, 31, 1}},
1655                    {{39, 11}, {1, 32, 1}},
1656                    {{88, 12}, {1, 33, 1}},
1657                    {{89, 12}, {1, 34, 1}},
1658                    {{90, 12}, {1, 35, 1}},
1659                    {{91, 12}, {1, 36, 1}},
1660                    {{92, 12}, {1, 37, 1}},
1661                    {{93, 12}, {1, 38, 1}},
1662                    {{94, 12}, {1, 39, 1}},
1663                    {{95, 12}, {1, 40, 1}}
1664            },
1665            /* intra = 1 */
1666            {
1667                    {{ 2,  2}, {0, 0, 1}},
1668                    {{15,  4}, {0, 0, 3}},
1669                    {{21,  6}, {0, 0, 6}},
1670                    {{23,  7}, {0, 0, 9}},
1671                    {{31,  8}, {0, 0, 10}},
1672                    {{37,  9}, {0, 0, 13}},
1673                    {{36,  9}, {0, 0, 14}},
1674                    {{33, 10}, {0, 0, 17}},
1675                    {{32, 10}, {0, 0, 18}},
1676                    {{ 7, 11}, {0, 0, 21}},
1677                    {{ 6, 11}, {0, 0, 22}},
1678                    {{32, 11}, {0, 0, 23}},
1679                    {{ 6,  3}, {0, 0, 2}},
1680                    {{20,  6}, {0, 1, 2}},
1681                    {{30,  8}, {0, 0, 11}},
1682                    {{15, 10}, {0, 0, 19}},
1683                    {{33, 11}, {0, 0, 24}},
1684                    {{80, 12}, {0, 0, 25}},
1685                    {{14,  4}, {0, 1, 1}},
1686                    {{29,  8}, {0, 0, 12}},
1687                    {{14, 10}, {0, 0, 20}},
1688                    {{81, 12}, {0, 0, 26}},
1689                    {{13,  5}, {0, 0, 4}},
1690                    {{35,  9}, {0, 0, 15}},
1691                    {{13, 10}, {0, 1, 7}},
1692                    {{12,  5}, {0, 0, 5}},
1693                    {{34,  9}, {0, 4, 2}},
1694                    {{82, 12}, {0, 0, 27}},
1695                    {{11,  5}, {0, 2, 1}},
1696                    {{12, 10}, {0, 2, 4}},
1697                    {{83, 12}, {0, 1, 9}},
1698                    {{19,  6}, {0, 0, 7}},
1699                    {{11, 10}, {0, 3, 4}},
1700                    {{84, 12}, {0, 6, 3}},
1701                    {{18,  6}, {0, 0, 8}},
1702                    {{10, 10}, {0, 4, 3}},
1703                    {{17,  6}, {0, 3, 1}},
1704                    {{ 9, 10}, {0, 8, 2}},
1705                    {{16,  6}, {0, 4, 1}},
1706                    {{ 8, 10}, {0, 5, 3}},
1707                    {{22,  7}, {0, 1, 3}},
1708                    {{85, 12}, {0, 1, 10}},
1709                    {{21,  7}, {0, 2, 2}},
1710                    {{20,  7}, {0, 7, 1}},
1711                    {{28,  8}, {0, 1, 4}},
1712                    {{27,  8}, {0, 3, 2}},
1713                    {{33,  9}, {0, 0, 16}},
1714                    {{32,  9}, {0, 1, 5}},
1715                    {{31,  9}, {0, 1, 6}},
1716                    {{30,  9}, {0, 2, 3}},
1717                    {{29,  9}, {0, 3, 3}},
1718                    {{28,  9}, {0, 5, 2}},
1719                    {{27,  9}, {0, 6, 2}},
1720                    {{26,  9}, {0, 7, 2}},
1721                    {{34, 11}, {0, 1, 8}},
1722                    {{35, 11}, {0, 9, 2}},
1723                    {{86, 12}, {0, 2, 5}},
1724                    {{87, 12}, {0, 7, 3}},
1725                    {{ 7,  4}, {1, 0, 1}},
1726                    {{25,  9}, {0, 11, 1}},
1727                    {{ 5, 11}, {1, 0, 6}},
1728                    {{15,  6}, {1, 1, 1}},
1729                    {{ 4, 11}, {1, 0, 7}},
1730                    {{14,  6}, {1, 2, 1}},
1731                    {{13,  6}, {0, 5, 1}},
1732                    {{12,  6}, {1, 0, 2}},
1733                    {{19,  7}, {1, 5, 1}},
1734                    {{18,  7}, {0, 6, 1}},
1735                    {{17,  7}, {1, 3, 1}},
1736                    {{16,  7}, {1, 4, 1}},
1737                    {{26,  8}, {1, 9, 1}},
1738                    {{25,  8}, {0, 8, 1}},
1739                    {{24,  8}, {0, 9, 1}},
1740                    {{23,  8}, {0, 10, 1}},
1741                    {{22,  8}, {1, 0, 3}},
1742                    {{21,  8}, {1, 6, 1}},
1743                    {{20,  8}, {1, 7, 1}},
1744                    {{19,  8}, {1, 8, 1}},
1745                    {{24,  9}, {0, 12, 1}},
1746                    {{23,  9}, {1, 0, 4}},
1747                    {{22,  9}, {1, 1, 2}},
1748                    {{21,  9}, {1, 10, 1}},
1749                    {{20,  9}, {1, 11, 1}},
1750                    {{19,  9}, {1, 12, 1}},
1751                    {{18,  9}, {1, 13, 1}},
1752                    {{17,  9}, {1, 14, 1}},
1753                    {{ 7, 10}, {0, 13, 1}},
1754                    {{ 6, 10}, {1, 0, 5}},
1755                    {{ 5, 10}, {1, 1, 3}},
1756                    {{ 4, 10}, {1, 2, 2}},
1757                    {{36, 11}, {1, 3, 2}},
1758                    {{37, 11}, {1, 4, 2}},
1759                    {{38, 11}, {1, 15, 1}},
1760                    {{39, 11}, {1, 16, 1}},
1761                    {{88, 12}, {0, 14, 1}},
1762                    {{89, 12}, {1, 0, 8}},
1763                    {{90, 12}, {1, 5, 2}},
1764                    {{91, 12}, {1, 6, 2}},
1765                    {{92, 12}, {1, 17, 1}},
1766                    {{93, 12}, {1, 18, 1}},
1767                    {{94, 12}, {1, 19, 1}},
1768                    {{95, 12}, {1, 20, 1}}
1769            }
1770    };
1771    
1772    /* constants taken from momusys/vm_common/inlcude/max_level.h */
1773    uint8_t const max_level[2][2][64] = {
1774            {
1775                    /* intra = 0, last = 0 */
1776                    {
1777                            12, 6, 4, 3, 3, 3, 3, 2,
1778                            2, 2, 2, 1, 1, 1, 1, 1,
1779                            1, 1, 1, 1, 1, 1, 1, 1,
1780                            1, 1, 1, 0, 0, 0, 0, 0,
1781                            0, 0, 0, 0, 0, 0, 0, 0,
1782                            0, 0, 0, 0, 0, 0, 0, 0,
1783                            0, 0, 0, 0, 0, 0, 0, 0,
1784                            0, 0, 0, 0, 0, 0, 0, 0
1785                    },
1786                    /* intra = 0, last = 1 */
1787                    {
1788                            3, 2, 1, 1, 1, 1, 1, 1,
1789                            1, 1, 1, 1, 1, 1, 1, 1,
1790                            1, 1, 1, 1, 1, 1, 1, 1,
1791                            1, 1, 1, 1, 1, 1, 1, 1,
1792                            1, 1, 1, 1, 1, 1, 1, 1,
1793                            1, 0, 0, 0, 0, 0, 0, 0,
1794                            0, 0, 0, 0, 0, 0, 0, 0,
1795                            0, 0, 0, 0, 0, 0, 0, 0
1796                    }
1797            },
1798            {
1799                    /* intra = 1, last = 0 */
1800                    {
1801                            27, 10, 5, 4, 3, 3, 3, 3,
1802                            2, 2, 1, 1, 1, 1, 1, 0,
1803                            0, 0, 0, 0, 0, 0, 0, 0,
1804                            0, 0, 0, 0, 0, 0, 0, 0,
1805                            0, 0, 0, 0, 0, 0, 0, 0,
1806                            0, 0, 0, 0, 0, 0, 0, 0,
1807                            0, 0, 0, 0, 0, 0, 0, 0,
1808                            0, 0, 0, 0, 0, 0, 0, 0
1809                    },
1810                    /* intra = 1, last = 1 */
1811                    {
1812                            8, 3, 2, 2, 2, 2, 2, 1,
1813                            1, 1, 1, 1, 1, 1, 1, 1,
1814                            1, 1, 1, 1, 1, 0, 0, 0,
1815                            0, 0, 0, 0, 0, 0, 0, 0,
1816                            0, 0, 0, 0, 0, 0, 0, 0,
1817                            0, 0, 0, 0, 0, 0, 0, 0,
1818                            0, 0, 0, 0, 0, 0, 0, 0,
1819                            0, 0, 0, 0, 0, 0, 0, 0
1820                    }
1821            }
1822    };
1823    
1824    uint8_t const max_run[2][2][64] = {
1825            {
1826                    /* intra = 0, last = 0 */
1827                    {
1828                            0, 26, 10, 6, 2, 1, 1, 0,
1829                            0, 0, 0, 0, 0, 0, 0, 0,
1830                            0, 0, 0, 0, 0, 0, 0, 0,
1831                            0, 0, 0, 0, 0, 0, 0, 0,
1832                            0, 0, 0, 0, 0, 0, 0, 0,
1833                            0, 0, 0, 0, 0, 0, 0, 0,
1834                            0, 0, 0, 0, 0, 0, 0, 0,
1835                            0, 0, 0, 0, 0, 0, 0, 0,
1836                    },
1837                    /* intra = 0, last = 1 */
1838                    {
1839                            0, 40, 1, 0, 0, 0, 0, 0,
1840                            0, 0, 0, 0, 0, 0, 0, 0,
1841                            0, 0, 0, 0, 0, 0, 0, 0,
1842                            0, 0, 0, 0, 0, 0, 0, 0,
1843                            0, 0, 0, 0, 0, 0, 0, 0,
1844                            0, 0, 0, 0, 0, 0, 0, 0,
1845                            0, 0, 0, 0, 0, 0, 0, 0,
1846                            0, 0, 0, 0, 0, 0, 0, 0,
1847                    }
1848            },
1849            {
1850                    /* intra = 1, last = 0 */
1851                    {
1852                            0, 14, 9, 7, 3, 2, 1, 1,
1853                            1, 1, 1, 0, 0, 0, 0, 0,
1854                            0, 0, 0, 0, 0, 0, 0, 0,
1855                            0, 0, 0, 0, 0, 0, 0, 0,
1856                            0, 0, 0, 0, 0, 0, 0, 0,
1857                            0, 0, 0, 0, 0, 0, 0, 0,
1858                            0, 0, 0, 0, 0, 0, 0, 0,
1859                            0, 0, 0, 0, 0, 0, 0, 0,
1860                    },
1861                    /* intra = 1, last = 1 */
1862                    {
1863                            0, 20, 6, 1, 0, 0, 0, 0,
1864                            0, 0, 0, 0, 0, 0, 0, 0,
1865                            0, 0, 0, 0, 0, 0, 0, 0,
1866                            0, 0, 0, 0, 0, 0, 0, 0,
1867                            0, 0, 0, 0, 0, 0, 0, 0,
1868                            0, 0, 0, 0, 0, 0, 0, 0,
1869                            0, 0, 0, 0, 0, 0, 0, 0,
1870                            0, 0, 0, 0, 0, 0, 0, 0,
1871                    }
1872            }
1873    };
1874    
1875    /******************************************************************
1876     * encoder tables                                                 *
1877     ******************************************************************/
1878    
1879    VLC sprite_trajectory_code[32768];
1880    
1881    VLC sprite_trajectory_len[15] = {
1882            { 0x00 , 2},
1883            { 0x02 , 3}, { 0x03, 3}, { 0x04, 3}, { 0x05, 3}, { 0x06, 3},
1884            { 0x0E , 4}, { 0x1E, 5}, { 0x3E, 6}, { 0x7F, 7}, { 0xFE, 8},
1885            { 0x1FE, 9}, {0x3FE,10}, {0x7FE,11}, {0xFFE,12} };
1886    
1887    
1888    /* DCT coefficients. Four tables, two for last = 0, two for last = 1.
1889       the sign bit must be added afterwards. */
1890    
1891    /* MCBPC Indexing by cbpc in first two bits, mode in last two.
1892     CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10.
1893     Example: cbpc = 01 and mode = 4 gives index = 0110 = 6. */
1894    
1895    VLC mcbpc_intra_tab[15] = {
1896            {0x01, 9}, {0x01, 1}, {0x01, 4}, {0x00, 0},
1897            {0x00, 0}, {0x01, 3}, {0x01, 6}, {0x00, 0},
1898            {0x00, 0}, {0x02, 3}, {0x02, 6}, {0x00, 0},
1899            {0x00, 0}, {0x03, 3}, {0x03, 6}
1900    };
1901    
1902    /* MCBPC inter.
1903       Addressing: 5 bit ccmmm (cc = CBPC, mmm = mode (1-4 binary)) */
1904    
1905    VLC mcbpc_inter_tab[29] = {
1906            {1, 1}, {3, 3}, {2, 3}, {3, 5}, {4, 6}, {1, 9}, {0, 0}, {0, 0},
1907            {3, 4}, {7, 7}, {5, 7}, {4, 8}, {4, 9}, {0, 0}, {0, 0}, {0, 0},
1908            {2, 4}, {6, 7}, {4, 7}, {3, 8}, {3, 9}, {0, 0}, {0, 0}, {0, 0},
1909            {5, 6}, {5, 9}, {5, 8}, {3, 7}, {2, 9}
1910    };
1911    
1912    const VLC xvid_cbpy_tab[16] = {
1913            {3, 4}, {5, 5}, {4, 5}, {9, 4}, {3, 5}, {7, 4}, {2, 6}, {11, 4},
1914            {2, 5}, {3, 6}, {5, 4}, {10, 4}, {4, 4}, {8, 4}, {6, 4}, {3, 2}
1915    };
1916    
1917    const VLC dcy_tab[511] = {
1918            {0x100, 15}, {0x101, 15}, {0x102, 15}, {0x103, 15},
1919            {0x104, 15}, {0x105, 15}, {0x106, 15}, {0x107, 15},
1920            {0x108, 15}, {0x109, 15}, {0x10a, 15}, {0x10b, 15},
1921            {0x10c, 15}, {0x10d, 15}, {0x10e, 15}, {0x10f, 15},
1922            {0x110, 15}, {0x111, 15}, {0x112, 15}, {0x113, 15},
1923            {0x114, 15}, {0x115, 15}, {0x116, 15}, {0x117, 15},
1924            {0x118, 15}, {0x119, 15}, {0x11a, 15}, {0x11b, 15},
1925            {0x11c, 15}, {0x11d, 15}, {0x11e, 15}, {0x11f, 15},
1926            {0x120, 15}, {0x121, 15}, {0x122, 15}, {0x123, 15},
1927            {0x124, 15}, {0x125, 15}, {0x126, 15}, {0x127, 15},
1928            {0x128, 15}, {0x129, 15}, {0x12a, 15}, {0x12b, 15},
1929            {0x12c, 15}, {0x12d, 15}, {0x12e, 15}, {0x12f, 15},
1930            {0x130, 15}, {0x131, 15}, {0x132, 15}, {0x133, 15},
1931            {0x134, 15}, {0x135, 15}, {0x136, 15}, {0x137, 15},
1932            {0x138, 15}, {0x139, 15}, {0x13a, 15}, {0x13b, 15},
1933            {0x13c, 15}, {0x13d, 15}, {0x13e, 15}, {0x13f, 15},
1934            {0x140, 15}, {0x141, 15}, {0x142, 15}, {0x143, 15},
1935            {0x144, 15}, {0x145, 15}, {0x146, 15}, {0x147, 15},
1936            {0x148, 15}, {0x149, 15}, {0x14a, 15}, {0x14b, 15},
1937            {0x14c, 15}, {0x14d, 15}, {0x14e, 15}, {0x14f, 15},
1938            {0x150, 15}, {0x151, 15}, {0x152, 15}, {0x153, 15},
1939            {0x154, 15}, {0x155, 15}, {0x156, 15}, {0x157, 15},
1940            {0x158, 15}, {0x159, 15}, {0x15a, 15}, {0x15b, 15},
1941            {0x15c, 15}, {0x15d, 15}, {0x15e, 15}, {0x15f, 15},
1942            {0x160, 15}, {0x161, 15}, {0x162, 15}, {0x163, 15},
1943            {0x164, 15}, {0x165, 15}, {0x166, 15}, {0x167, 15},
1944            {0x168, 15}, {0x169, 15}, {0x16a, 15}, {0x16b, 15},
1945            {0x16c, 15}, {0x16d, 15}, {0x16e, 15}, {0x16f, 15},
1946            {0x170, 15}, {0x171, 15}, {0x172, 15}, {0x173, 15},
1947            {0x174, 15}, {0x175, 15}, {0x176, 15}, {0x177, 15},
1948            {0x178, 15}, {0x179, 15}, {0x17a, 15}, {0x17b, 15},
1949            {0x17c, 15}, {0x17d, 15}, {0x17e, 15}, {0x17f, 15},
1950            {0x80, 13}, {0x81, 13}, {0x82, 13}, {0x83, 13},
1951            {0x84, 13}, {0x85, 13}, {0x86, 13}, {0x87, 13},
1952            {0x88, 13}, {0x89, 13}, {0x8a, 13}, {0x8b, 13},
1953            {0x8c, 13}, {0x8d, 13}, {0x8e, 13}, {0x8f, 13},
1954            {0x90, 13}, {0x91, 13}, {0x92, 13}, {0x93, 13},
1955            {0x94, 13}, {0x95, 13}, {0x96, 13}, {0x97, 13},
1956            {0x98, 13}, {0x99, 13}, {0x9a, 13}, {0x9b, 13},
1957            {0x9c, 13}, {0x9d, 13}, {0x9e, 13}, {0x9f, 13},
1958            {0xa0, 13}, {0xa1, 13}, {0xa2, 13}, {0xa3, 13},
1959            {0xa4, 13}, {0xa5, 13}, {0xa6, 13}, {0xa7, 13},
1960            {0xa8, 13}, {0xa9, 13}, {0xaa, 13}, {0xab, 13},
1961            {0xac, 13}, {0xad, 13}, {0xae, 13}, {0xaf, 13},
1962            {0xb0, 13}, {0xb1, 13}, {0xb2, 13}, {0xb3, 13},
1963            {0xb4, 13}, {0xb5, 13}, {0xb6, 13}, {0xb7, 13},
1964            {0xb8, 13}, {0xb9, 13}, {0xba, 13}, {0xbb, 13},
1965            {0xbc, 13}, {0xbd, 13}, {0xbe, 13}, {0xbf, 13},
1966            {0x40, 11}, {0x41, 11}, {0x42, 11}, {0x43, 11},
1967            {0x44, 11}, {0x45, 11}, {0x46, 11}, {0x47, 11},
1968            {0x48, 11}, {0x49, 11}, {0x4a, 11}, {0x4b, 11},
1969            {0x4c, 11}, {0x4d, 11}, {0x4e, 11}, {0x4f, 11},
1970            {0x50, 11}, {0x51, 11}, {0x52, 11}, {0x53, 11},
1971            {0x54, 11}, {0x55, 11}, {0x56, 11}, {0x57, 11},
1972            {0x58, 11}, {0x59, 11}, {0x5a, 11}, {0x5b, 11},
1973            {0x5c, 11}, {0x5d, 11}, {0x5e, 11}, {0x5f, 11},
1974            {0x20, 9}, {0x21, 9}, {0x22, 9}, {0x23, 9},
1975            {0x24, 9}, {0x25, 9}, {0x26, 9}, {0x27, 9},
1976            {0x28, 9}, {0x29, 9}, {0x2a, 9}, {0x2b, 9},
1977            {0x2c, 9}, {0x2d, 9}, {0x2e, 9}, {0x2f, 9},
1978            {0x10, 7}, {0x11, 7}, {0x12, 7}, {0x13, 7},
1979            {0x14, 7}, {0x15, 7}, {0x16, 7}, {0x17, 7},
1980            {0x10, 6}, {0x11, 6}, {0x12, 6}, {0x13, 6},
1981            {0x08, 4}, {0x09, 4}, {0x06, 3}, {0x03, 3},
1982            {0x07, 3}, {0x0a, 4}, {0x0b, 4}, {0x14, 6},
1983            {0x15, 6}, {0x16, 6}, {0x17, 6}, {0x18, 7},
1984            {0x19, 7}, {0x1a, 7}, {0x1b, 7}, {0x1c, 7},
1985            {0x1d, 7}, {0x1e, 7}, {0x1f, 7}, {0x30, 9},
1986            {0x31, 9}, {0x32, 9}, {0x33, 9}, {0x34, 9},
1987            {0x35, 9}, {0x36, 9}, {0x37, 9}, {0x38, 9},
1988            {0x39, 9}, {0x3a, 9}, {0x3b, 9}, {0x3c, 9},
1989            {0x3d, 9}, {0x3e, 9}, {0x3f, 9}, {0x60, 11},
1990            {0x61, 11}, {0x62, 11}, {0x63, 11}, {0x64, 11},
1991            {0x65, 11}, {0x66, 11}, {0x67, 11}, {0x68, 11},
1992            {0x69, 11}, {0x6a, 11}, {0x6b, 11}, {0x6c, 11},
1993            {0x6d, 11}, {0x6e, 11}, {0x6f, 11}, {0x70, 11},
1994            {0x71, 11}, {0x72, 11}, {0x73, 11}, {0x74, 11},
1995            {0x75, 11}, {0x76, 11}, {0x77, 11}, {0x78, 11},
1996            {0x79, 11}, {0x7a, 11}, {0x7b, 11}, {0x7c, 11},
1997            {0x7d, 11}, {0x7e, 11}, {0x7f, 11}, {0xc0, 13},
1998            {0xc1, 13}, {0xc2, 13}, {0xc3, 13}, {0xc4, 13},
1999            {0xc5, 13}, {0xc6, 13}, {0xc7, 13}, {0xc8, 13},
2000            {0xc9, 13}, {0xca, 13}, {0xcb, 13}, {0xcc, 13},
2001            {0xcd, 13}, {0xce, 13}, {0xcf, 13}, {0xd0, 13},
2002            {0xd1, 13}, {0xd2, 13}, {0xd3, 13}, {0xd4, 13},
2003            {0xd5, 13}, {0xd6, 13}, {0xd7, 13}, {0xd8, 13},
2004            {0xd9, 13}, {0xda, 13}, {0xdb, 13}, {0xdc, 13},
2005            {0xdd, 13}, {0xde, 13}, {0xdf, 13}, {0xe0, 13},
2006            {0xe1, 13}, {0xe2, 13}, {0xe3, 13}, {0xe4, 13},
2007            {0xe5, 13}, {0xe6, 13}, {0xe7, 13}, {0xe8, 13},
2008            {0xe9, 13}, {0xea, 13}, {0xeb, 13}, {0xec, 13},
2009            {0xed, 13}, {0xee, 13}, {0xef, 13}, {0xf0, 13},
2010            {0xf1, 13}, {0xf2, 13}, {0xf3, 13}, {0xf4, 13},
2011            {0xf5, 13}, {0xf6, 13}, {0xf7, 13}, {0xf8, 13},
2012            {0xf9, 13}, {0xfa, 13}, {0xfb, 13}, {0xfc, 13},
2013            {0xfd, 13}, {0xfe, 13}, {0xff, 13}, {0x180, 15},
2014            {0x181, 15}, {0x182, 15}, {0x183, 15}, {0x184, 15},
2015            {0x185, 15}, {0x186, 15}, {0x187, 15}, {0x188, 15},
2016            {0x189, 15}, {0x18a, 15}, {0x18b, 15}, {0x18c, 15},
2017            {0x18d, 15}, {0x18e, 15}, {0x18f, 15}, {0x190, 15},
2018            {0x191, 15}, {0x192, 15}, {0x193, 15}, {0x194, 15},
2019            {0x195, 15}, {0x196, 15}, {0x197, 15}, {0x198, 15},
2020            {0x199, 15}, {0x19a, 15}, {0x19b, 15}, {0x19c, 15},
2021            {0x19d, 15}, {0x19e, 15}, {0x19f, 15}, {0x1a0, 15},
2022            {0x1a1, 15}, {0x1a2, 15}, {0x1a3, 15}, {0x1a4, 15},
2023            {0x1a5, 15}, {0x1a6, 15}, {0x1a7, 15}, {0x1a8, 15},
2024            {0x1a9, 15}, {0x1aa, 15}, {0x1ab, 15}, {0x1ac, 15},
2025            {0x1ad, 15}, {0x1ae, 15}, {0x1af, 15}, {0x1b0, 15},
2026            {0x1b1, 15}, {0x1b2, 15}, {0x1b3, 15}, {0x1b4, 15},
2027            {0x1b5, 15}, {0x1b6, 15}, {0x1b7, 15}, {0x1b8, 15},
2028            {0x1b9, 15}, {0x1ba, 15}, {0x1bb, 15}, {0x1bc, 15},
2029            {0x1bd, 15}, {0x1be, 15}, {0x1bf, 15}, {0x1c0, 15},
2030            {0x1c1, 15}, {0x1c2, 15}, {0x1c3, 15}, {0x1c4, 15},
2031            {0x1c5, 15}, {0x1c6, 15}, {0x1c7, 15}, {0x1c8, 15},
2032            {0x1c9, 15}, {0x1ca, 15}, {0x1cb, 15}, {0x1cc, 15},
2033            {0x1cd, 15}, {0x1ce, 15}, {0x1cf, 15}, {0x1d0, 15},
2034            {0x1d1, 15}, {0x1d2, 15}, {0x1d3, 15}, {0x1d4, 15},
2035            {0x1d5, 15}, {0x1d6, 15}, {0x1d7, 15}, {0x1d8, 15},
2036            {0x1d9, 15}, {0x1da, 15}, {0x1db, 15}, {0x1dc, 15},
2037            {0x1dd, 15}, {0x1de, 15}, {0x1df, 15}, {0x1e0, 15},
2038            {0x1e1, 15}, {0x1e2, 15}, {0x1e3, 15}, {0x1e4, 15},
2039            {0x1e5, 15}, {0x1e6, 15}, {0x1e7, 15}, {0x1e8, 15},
2040            {0x1e9, 15}, {0x1ea, 15}, {0x1eb, 15}, {0x1ec, 15},
2041            {0x1ed, 15}, {0x1ee, 15}, {0x1ef, 15}, {0x1f0, 15},
2042            {0x1f1, 15}, {0x1f2, 15}, {0x1f3, 15}, {0x1f4, 15},
2043            {0x1f5, 15}, {0x1f6, 15}, {0x1f7, 15}, {0x1f8, 15},
2044            {0x1f9, 15}, {0x1fa, 15}, {0x1fb, 15}, {0x1fc, 15},
2045            {0x1fd, 15}, {0x1fe, 15}, {0x1ff, 15},
2046    };
2047    
2048    const VLC dcc_tab[511] = {
2049            {0x100, 16}, {0x101, 16}, {0x102, 16}, {0x103, 16},
2050            {0x104, 16}, {0x105, 16}, {0x106, 16}, {0x107, 16},
2051            {0x108, 16}, {0x109, 16}, {0x10a, 16}, {0x10b, 16},
2052            {0x10c, 16}, {0x10d, 16}, {0x10e, 16}, {0x10f, 16},
2053            {0x110, 16}, {0x111, 16}, {0x112, 16}, {0x113, 16},
2054            {0x114, 16}, {0x115, 16}, {0x116, 16}, {0x117, 16},
2055            {0x118, 16}, {0x119, 16}, {0x11a, 16}, {0x11b, 16},
2056            {0x11c, 16}, {0x11d, 16}, {0x11e, 16}, {0x11f, 16},
2057            {0x120, 16}, {0x121, 16}, {0x122, 16}, {0x123, 16},
2058            {0x124, 16}, {0x125, 16}, {0x126, 16}, {0x127, 16},
2059            {0x128, 16}, {0x129, 16}, {0x12a, 16}, {0x12b, 16},
2060            {0x12c, 16}, {0x12d, 16}, {0x12e, 16}, {0x12f, 16},
2061            {0x130, 16}, {0x131, 16}, {0x132, 16}, {0x133, 16},
2062            {0x134, 16}, {0x135, 16}, {0x136, 16}, {0x137, 16},
2063            {0x138, 16}, {0x139, 16}, {0x13a, 16}, {0x13b, 16},
2064            {0x13c, 16}, {0x13d, 16}, {0x13e, 16}, {0x13f, 16},
2065            {0x140, 16}, {0x141, 16}, {0x142, 16}, {0x143, 16},
2066            {0x144, 16}, {0x145, 16}, {0x146, 16}, {0x147, 16},
2067            {0x148, 16}, {0x149, 16}, {0x14a, 16}, {0x14b, 16},
2068            {0x14c, 16}, {0x14d, 16}, {0x14e, 16}, {0x14f, 16},
2069            {0x150, 16}, {0x151, 16}, {0x152, 16}, {0x153, 16},
2070            {0x154, 16}, {0x155, 16}, {0x156, 16}, {0x157, 16},
2071            {0x158, 16}, {0x159, 16}, {0x15a, 16}, {0x15b, 16},
2072            {0x15c, 16}, {0x15d, 16}, {0x15e, 16}, {0x15f, 16},
2073            {0x160, 16}, {0x161, 16}, {0x162, 16}, {0x163, 16},
2074            {0x164, 16}, {0x165, 16}, {0x166, 16}, {0x167, 16},
2075            {0x168, 16}, {0x169, 16}, {0x16a, 16}, {0x16b, 16},
2076            {0x16c, 16}, {0x16d, 16}, {0x16e, 16}, {0x16f, 16},
2077            {0x170, 16}, {0x171, 16}, {0x172, 16}, {0x173, 16},
2078            {0x174, 16}, {0x175, 16}, {0x176, 16}, {0x177, 16},
2079            {0x178, 16}, {0x179, 16}, {0x17a, 16}, {0x17b, 16},
2080            {0x17c, 16}, {0x17d, 16}, {0x17e, 16}, {0x17f, 16},
2081            {0x80, 14}, {0x81, 14}, {0x82, 14}, {0x83, 14},
2082            {0x84, 14}, {0x85, 14}, {0x86, 14}, {0x87, 14},
2083            {0x88, 14}, {0x89, 14}, {0x8a, 14}, {0x8b, 14},
2084            {0x8c, 14}, {0x8d, 14}, {0x8e, 14}, {0x8f, 14},
2085            {0x90, 14}, {0x91, 14}, {0x92, 14}, {0x93, 14},
2086            {0x94, 14}, {0x95, 14}, {0x96, 14}, {0x97, 14},
2087            {0x98, 14}, {0x99, 14}, {0x9a, 14}, {0x9b, 14},
2088            {0x9c, 14}, {0x9d, 14}, {0x9e, 14}, {0x9f, 14},
2089            {0xa0, 14}, {0xa1, 14}, {0xa2, 14}, {0xa3, 14},
2090            {0xa4, 14}, {0xa5, 14}, {0xa6, 14}, {0xa7, 14},
2091            {0xa8, 14}, {0xa9, 14}, {0xaa, 14}, {0xab, 14},
2092            {0xac, 14}, {0xad, 14}, {0xae, 14}, {0xaf, 14},
2093            {0xb0, 14}, {0xb1, 14}, {0xb2, 14}, {0xb3, 14},
2094            {0xb4, 14}, {0xb5, 14}, {0xb6, 14}, {0xb7, 14},
2095            {0xb8, 14}, {0xb9, 14}, {0xba, 14}, {0xbb, 14},
2096            {0xbc, 14}, {0xbd, 14}, {0xbe, 14}, {0xbf, 14},
2097            {0x40, 12}, {0x41, 12}, {0x42, 12}, {0x43, 12},
2098            {0x44, 12}, {0x45, 12}, {0x46, 12}, {0x47, 12},
2099            {0x48, 12}, {0x49, 12}, {0x4a, 12}, {0x4b, 12},
2100            {0x4c, 12}, {0x4d, 12}, {0x4e, 12}, {0x4f, 12},
2101            {0x50, 12}, {0x51, 12}, {0x52, 12}, {0x53, 12},
2102            {0x54, 12}, {0x55, 12}, {0x56, 12}, {0x57, 12},
2103            {0x58, 12}, {0x59, 12}, {0x5a, 12}, {0x5b, 12},
2104            {0x5c, 12}, {0x5d, 12}, {0x5e, 12}, {0x5f, 12},
2105            {0x20, 10}, {0x21, 10}, {0x22, 10}, {0x23, 10},
2106            {0x24, 10}, {0x25, 10}, {0x26, 10}, {0x27, 10},
2107            {0x28, 10}, {0x29, 10}, {0x2a, 10}, {0x2b, 10},
2108            {0x2c, 10}, {0x2d, 10}, {0x2e, 10}, {0x2f, 10},
2109            {0x10, 8}, {0x11, 8}, {0x12, 8}, {0x13, 8},
2110            {0x14, 8}, {0x15, 8}, {0x16, 8}, {0x17, 8},
2111            {0x08, 6}, {0x09, 6}, {0x0a, 6}, {0x0b, 6},
2112            {0x04, 4}, {0x05, 4}, {0x04, 3}, {0x03, 2},
2113            {0x05, 3}, {0x06, 4}, {0x07, 4}, {0x0c, 6},
2114            {0x0d, 6}, {0x0e, 6}, {0x0f, 6}, {0x18, 8},
2115            {0x19, 8}, {0x1a, 8}, {0x1b, 8}, {0x1c, 8},
2116            {0x1d, 8}, {0x1e, 8}, {0x1f, 8}, {0x30, 10},
2117            {0x31, 10}, {0x32, 10}, {0x33, 10}, {0x34, 10},
2118            {0x35, 10}, {0x36, 10}, {0x37, 10}, {0x38, 10},
2119            {0x39, 10}, {0x3a, 10}, {0x3b, 10}, {0x3c, 10},
2120            {0x3d, 10}, {0x3e, 10}, {0x3f, 10}, {0x60, 12},
2121            {0x61, 12}, {0x62, 12}, {0x63, 12}, {0x64, 12},
2122            {0x65, 12}, {0x66, 12}, {0x67, 12}, {0x68, 12},
2123            {0x69, 12}, {0x6a, 12}, {0x6b, 12}, {0x6c, 12},
2124            {0x6d, 12}, {0x6e, 12}, {0x6f, 12}, {0x70, 12},
2125            {0x71, 12}, {0x72, 12}, {0x73, 12}, {0x74, 12},
2126            {0x75, 12}, {0x76, 12}, {0x77, 12}, {0x78, 12},
2127            {0x79, 12}, {0x7a, 12}, {0x7b, 12}, {0x7c, 12},
2128            {0x7d, 12}, {0x7e, 12}, {0x7f, 12}, {0xc0, 14},
2129            {0xc1, 14}, {0xc2, 14}, {0xc3, 14}, {0xc4, 14},
2130            {0xc5, 14}, {0xc6, 14}, {0xc7, 14}, {0xc8, 14},
2131            {0xc9, 14}, {0xca, 14}, {0xcb, 14}, {0xcc, 14},
2132            {0xcd, 14}, {0xce, 14}, {0xcf, 14}, {0xd0, 14},
2133            {0xd1, 14}, {0xd2, 14}, {0xd3, 14}, {0xd4, 14},
2134            {0xd5, 14}, {0xd6, 14}, {0xd7, 14}, {0xd8, 14},
2135            {0xd9, 14}, {0xda, 14}, {0xdb, 14}, {0xdc, 14},
2136            {0xdd, 14}, {0xde, 14}, {0xdf, 14}, {0xe0, 14},
2137            {0xe1, 14}, {0xe2, 14}, {0xe3, 14}, {0xe4, 14},
2138            {0xe5, 14}, {0xe6, 14}, {0xe7, 14}, {0xe8, 14},
2139            {0xe9, 14}, {0xea, 14}, {0xeb, 14}, {0xec, 14},
2140            {0xed, 14}, {0xee, 14}, {0xef, 14}, {0xf0, 14},
2141            {0xf1, 14}, {0xf2, 14}, {0xf3, 14}, {0xf4, 14},
2142            {0xf5, 14}, {0xf6, 14}, {0xf7, 14}, {0xf8, 14},
2143            {0xf9, 14}, {0xfa, 14}, {0xfb, 14}, {0xfc, 14},
2144            {0xfd, 14}, {0xfe, 14}, {0xff, 14}, {0x180, 16},
2145            {0x181, 16}, {0x182, 16}, {0x183, 16}, {0x184, 16},
2146            {0x185, 16}, {0x186, 16}, {0x187, 16}, {0x188, 16},
2147            {0x189, 16}, {0x18a, 16}, {0x18b, 16}, {0x18c, 16},
2148            {0x18d, 16}, {0x18e, 16}, {0x18f, 16}, {0x190, 16},
2149            {0x191, 16}, {0x192, 16}, {0x193, 16}, {0x194, 16},
2150            {0x195, 16}, {0x196, 16}, {0x197, 16}, {0x198, 16},
2151            {0x199, 16}, {0x19a, 16}, {0x19b, 16}, {0x19c, 16},
2152            {0x19d, 16}, {0x19e, 16}, {0x19f, 16}, {0x1a0, 16},
2153            {0x1a1, 16}, {0x1a2, 16}, {0x1a3, 16}, {0x1a4, 16},
2154            {0x1a5, 16}, {0x1a6, 16}, {0x1a7, 16}, {0x1a8, 16},
2155            {0x1a9, 16}, {0x1aa, 16}, {0x1ab, 16}, {0x1ac, 16},
2156            {0x1ad, 16}, {0x1ae, 16}, {0x1af, 16}, {0x1b0, 16},
2157            {0x1b1, 16}, {0x1b2, 16}, {0x1b3, 16}, {0x1b4, 16},
2158            {0x1b5, 16}, {0x1b6, 16}, {0x1b7, 16}, {0x1b8, 16},
2159            {0x1b9, 16}, {0x1ba, 16}, {0x1bb, 16}, {0x1bc, 16},
2160            {0x1bd, 16}, {0x1be, 16}, {0x1bf, 16}, {0x1c0, 16},
2161            {0x1c1, 16}, {0x1c2, 16}, {0x1c3, 16}, {0x1c4, 16},
2162            {0x1c5, 16}, {0x1c6, 16}, {0x1c7, 16}, {0x1c8, 16},
2163            {0x1c9, 16}, {0x1ca, 16}, {0x1cb, 16}, {0x1cc, 16},
2164            {0x1cd, 16}, {0x1ce, 16}, {0x1cf, 16}, {0x1d0, 16},
2165            {0x1d1, 16}, {0x1d2, 16}, {0x1d3, 16}, {0x1d4, 16},
2166            {0x1d5, 16}, {0x1d6, 16}, {0x1d7, 16}, {0x1d8, 16},
2167            {0x1d9, 16}, {0x1da, 16}, {0x1db, 16}, {0x1dc, 16},
2168            {0x1dd, 16}, {0x1de, 16}, {0x1df, 16}, {0x1e0, 16},
2169            {0x1e1, 16}, {0x1e2, 16}, {0x1e3, 16}, {0x1e4, 16},
2170            {0x1e5, 16}, {0x1e6, 16}, {0x1e7, 16}, {0x1e8, 16},
2171            {0x1e9, 16}, {0x1ea, 16}, {0x1eb, 16}, {0x1ec, 16},
2172            {0x1ed, 16}, {0x1ee, 16}, {0x1ef, 16}, {0x1f0, 16},
2173            {0x1f1, 16}, {0x1f2, 16}, {0x1f3, 16}, {0x1f4, 16},
2174            {0x1f5, 16}, {0x1f6, 16}, {0x1f7, 16}, {0x1f8, 16},
2175            {0x1f9, 16}, {0x1fa, 16}, {0x1fb, 16}, {0x1fc, 16},
2176            {0x1fd, 16}, {0x1fe, 16}, {0x1ff, 16},
2177    };
2178    
2179    
2180    const VLC mb_motion_table[65] = {
2181            {0x05, 13}, {0x07, 13}, {0x05, 12}, {0x07, 12},
2182            {0x09, 12}, {0x0b, 12}, {0x0d, 12}, {0x0f, 12},
2183            {0x09, 11}, {0x0b, 11}, {0x0d, 11}, {0x0f, 11},
2184            {0x11, 11}, {0x13, 11}, {0x15, 11}, {0x17, 11},
2185            {0x19, 11}, {0x1b, 11}, {0x1d, 11}, {0x1f, 11},
2186            {0x21, 11}, {0x23, 11}, {0x13, 10}, {0x15, 10},
2187            {0x17, 10}, {0x07, 8}, {0x09, 8}, {0x0b, 8},
2188            {0x07, 7}, {0x03, 5}, {0x03, 4}, {0x03, 3},
2189            {0x01, 1}, {0x02, 3}, {0x02, 4}, {0x02, 5},
2190            {0x06, 7}, {0x0a, 8}, {0x08, 8}, {0x06, 8},
2191            {0x16, 10}, {0x14, 10}, {0x12, 10}, {0x22, 11},
2192            {0x20, 11}, {0x1e, 11}, {0x1c, 11}, {0x1a, 11},
2193            {0x18, 11}, {0x16, 11}, {0x14, 11}, {0x12, 11},
2194            {0x10, 11}, {0x0e, 11}, {0x0c, 11}, {0x0a, 11},
2195            {0x08, 11}, {0x0e, 12}, {0x0c, 12}, {0x0a, 12},
2196            {0x08, 12}, {0x06, 12}, {0x04, 12}, {0x06, 13},
2197            {0x04, 13}
2198    };
2199    
2200    
2201    /******************************************************************
2202     * decoder tables                                                 *
2203     ******************************************************************/
2204    
2205    VLC const mcbpc_intra_table[64] = {
2206            {-1, 0}, {20, 6}, {36, 6}, {52, 6}, {4, 4},  {4, 4},  {4, 4},  {4, 4},
2207            {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3},
2208            {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3},
2209            {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3},
2210            {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},
2211            {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},
2212            {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},
2213            {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1},  {3, 1}
2214    };
2215    
2216    VLC const mcbpc_inter_table[257] = {
2217            {VLC_ERROR, 0}, {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8},
2218            {19, 8}, {19, 8}, {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7},
2219            {34, 7}, {34, 7}, {34, 7}, {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7},
2220            {33, 7}, {33, 7}, {33, 7}, {33, 7}, {17, 7}, {17, 7}, {17, 7}, {17, 7},
2221            {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
2222            {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6},
2223            {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
2224            {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
2225            {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
2226            {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
2227            {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
2228            {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
2229            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
2230            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
2231            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
2232            {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
2233            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2234            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2235            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2236            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2237            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2238            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2239            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2240            {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
2241            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2242            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2243            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2244            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2245            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2246            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2247            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2248            {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
2249            {0, 1}
2250    };
2251    
2252    VLC const cbpy_table[64] = {
2253            {-1, 0}, {-1, 0}, {6, 6},  {9, 6},  {8, 5},  {8, 5},  {4, 5},  {4, 5},
2254            {2, 5},  {2, 5},  {1, 5},  {1, 5},  {0, 4},  {0, 4},  {0, 4},  {0, 4},
2255            {12, 4}, {12, 4}, {12, 4}, {12, 4}, {10, 4}, {10, 4}, {10, 4}, {10, 4},
2256            {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4},  {5, 4},  {5, 4},  {5, 4},
2257            {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4},  {3, 4},  {3, 4},  {3, 4},
2258            {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4},  {7, 4},  {7, 4},  {7, 4},
2259            {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2},
2260            {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}
2261    };
2262    
2263    VLC const TMNMVtab0[] = {
2264            {3, 4}, {-3, 4}, {2, 3}, {2, 3}, {-2, 3}, {-2, 3}, {1, 2},
2265            {1, 2}, {1, 2}, {1, 2}, {-1, 2}, {-1, 2}, {-1, 2}, {-1, 2}
2266    };
2267    
2268    VLC const TMNMVtab1[] = {
2269            {12, 10}, {-12, 10}, {11, 10}, {-11, 10},
2270            {10, 9}, {10, 9}, {-10, 9}, {-10, 9},
2271            {9, 9}, {9, 9}, {-9, 9}, {-9, 9},
2272            {8, 9}, {8, 9}, {-8, 9}, {-8, 9},
2273            {7, 7}, {7, 7}, {7, 7}, {7, 7},
2274            {7, 7}, {7, 7}, {7, 7}, {7, 7},
2275            {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7},
2276            {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7},
2277            {6, 7}, {6, 7}, {6, 7}, {6, 7},
2278            {6, 7}, {6, 7}, {6, 7}, {6, 7},
2279            {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7},
2280            {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7},
2281            {5, 7}, {5, 7}, {5, 7}, {5, 7},
2282            {5, 7}, {5, 7}, {5, 7}, {5, 7},
2283            {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7},
2284            {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7},
2285            {4, 6}, {4, 6}, {4, 6}, {4, 6},
2286            {4, 6}, {4, 6}, {4, 6}, {4, 6},
2287            {4, 6}, {4, 6}, {4, 6}, {4, 6},
2288            {4, 6}, {4, 6}, {4, 6}, {4, 6},
2289            {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
2290            {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
2291            {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
2292            {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}
2293    };
2294    
2295    VLC const TMNMVtab2[] = {
2296            {32, 12}, {-32, 12}, {31, 12}, {-31, 12},
2297            {30, 11}, {30, 11}, {-30, 11}, {-30, 11},
2298            {29, 11}, {29, 11}, {-29, 11}, {-29, 11},
2299            {28, 11}, {28, 11}, {-28, 11}, {-28, 11},
2300            {27, 11}, {27, 11}, {-27, 11}, {-27, 11},
2301            {26, 11}, {26, 11}, {-26, 11}, {-26, 11},
2302            {25, 11}, {25, 11}, {-25, 11}, {-25, 11},
2303            {24, 10}, {24, 10}, {24, 10}, {24, 10},
2304            {-24, 10}, {-24, 10}, {-24, 10}, {-24, 10},
2305            {23, 10}, {23, 10}, {23, 10}, {23, 10},
2306            {-23, 10}, {-23, 10}, {-23, 10}, {-23, 10},
2307            {22, 10}, {22, 10}, {22, 10}, {22, 10},
2308            {-22, 10}, {-22, 10}, {-22, 10}, {-22, 10},
2309            {21, 10}, {21, 10}, {21, 10}, {21, 10},
2310            {-21, 10}, {-21, 10}, {-21, 10}, {-21, 10},
2311            {20, 10}, {20, 10}, {20, 10}, {20, 10},
2312            {-20, 10}, {-20, 10}, {-20, 10}, {-20, 10},
2313            {19, 10}, {19, 10}, {19, 10}, {19, 10},
2314            {-19, 10}, {-19, 10}, {-19, 10}, {-19, 10},
2315            {18, 10}, {18, 10}, {18, 10}, {18, 10},
2316            {-18, 10}, {-18, 10}, {-18, 10}, {-18, 10},
2317            {17, 10}, {17, 10}, {17, 10}, {17, 10},
2318            {-17, 10}, {-17, 10}, {-17, 10}, {-17, 10},
2319            {16, 10}, {16, 10}, {16, 10}, {16, 10},
2320            {-16, 10}, {-16, 10}, {-16, 10}, {-16, 10},
2321            {15, 10}, {15, 10}, {15, 10}, {15, 10},
2322            {-15, 10}, {-15, 10}, {-15, 10}, {-15, 10},
2323            {14, 10}, {14, 10}, {14, 10}, {14, 10},
2324            {-14, 10}, {-14, 10}, {-14, 10}, {-14, 10},
2325            {13, 10}, {13, 10}, {13, 10}, {13, 10},
2326            {-13, 10}, {-13, 10}, {-13, 10}, {-13, 10}
2327    };
2328    
2329    short const dc_threshold[] = {
2330            21514, 26984,  8307, 28531, 29798, 24951, 25970, 26912,
2331             8307, 25956, 26994, 25974,  8292, 29286, 28015, 29728,
2332            25960, 18208, 21838, 18208, 19536, 22560, 26998,  8260,
2333            28515, 25956,  8291, 25640, 30309, 27749, 11817, 22794,
2334            30063,  8306, 28531, 29798, 24951, 25970, 25632, 29545,
2335            29300, 25193, 29813, 29295, 26656, 29537, 29728,  8303,
2336            26983, 25974, 24864, 25443, 29541,  8307, 28532, 26912,
2337            29556, 29472, 30063, 25458,  8293, 28515, 25956,  2606
2338    };
2339    
2340    VLC const dc_lum_tab[] = {
2341            {0, 0}, {4, 3}, {3, 3}, {0, 3},
2342            {2, 2}, {2, 2}, {1, 2}, {1, 2},
2343    };

Legend:
Removed from v.851  
changed lines
  Added in v.1003

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4