--- trunk/xvidcore/src/bitstream/mbcoding.c 2002/09/10 21:29:03 465 +++ trunk/xvidcore/src/bitstream/mbcoding.c 2002/09/22 17:01:36 514 @@ -29,7 +29,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: mbcoding.c,v 1.29 2002-09-10 21:29:03 edgomez Exp $ + * $Id: mbcoding.c,v 1.32 2002-09-22 17:01:36 edgomez Exp $ * ****************************************************************************/ @@ -49,8 +49,9 @@ * Local data ****************************************************************************/ -static VLC intra_table[524032]; -static VLC inter_table[524032]; +/* msvc sp5+pp gets confused if they globals are made static */ +VLC intra_table[524032]; +VLC inter_table[524032]; static VLC DCT3Dintra[4096]; static VLC DCT3Dinter[4096]; @@ -373,13 +374,13 @@ if (frame->global_flags & XVID_INTERLACING) { if (pMB->cbp) { BitstreamPutBit(bs, pMB->field_dct); - DEBUG1("codep: field_dct: ", pMB->field_dct); + DPRINTF(DPRINTF_DEBUG, "codep: field_dct: %d", pMB->field_dct); } // if inter block, write field ME flag if (pMB->mode == MODE_INTER || pMB->mode == MODE_INTER_Q) { BitstreamPutBit(bs, pMB->field_pred); - DEBUG1("codep: field_pred: ", pMB->field_pred); + DPRINTF(DPRINTF_DEBUG, "codep: field_pred: %d", pMB->field_pred); // write field prediction references if (pMB->field_pred) { @@ -437,144 +438,6 @@ return; } -#if 0 -/*************************************************************** - * bframe encoding start - ***************************************************************/ - -/* - mbtype - 0 1b direct(h263) mvdb - 1 01b interpolate mc+q dbquant, mvdf, mvdb - 2 001b backward mc+q dbquant, mvdb - 3 0001b forward mc+q dbquant, mvdf -*/ - -void -put_bvop_mbtype(Bitstream * bs, - int value) -{ - switch (value) { - case 0: - BitstreamPutBit(bs, 1); - return; - - case 1: - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 1); - return; - - case 2: - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 1); - return; - - case 3: - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 0); - BitstreamPutBit(bs, 1); - return; - - default:; // invalid! - - } - -} - -/* - dbquant - -2 10b - 0 0b - +2 11b -*/ - -void -put_bvop_dbquant(Bitstream * bs, - int value) -{ - switch (value) { - case 0: - BitstreamPutBit(bs, 0); - return; - - case -2: - BitstreamPutBit(bs, 1); - BitstreamPutBit(bs, 0); - return; - - case 2: - BitstreamPutBit(bs, 1); - BitstreamPutBit(bs, 1); - return; - - default:; // invalid - } -} - -void -MBCodingBVOP(const MACROBLOCK * mb, - const int16_t qcoeff[6 * 64], - const int32_t fcode, - const int32_t bcode, - Bitstream * bs, - Statistics * pStat) -{ - int i; - -/* ------------------------------------------------------------------ - when a block is skipped it is decoded DIRECT(0,0) - hence is interpolated from forward & backward frames - ------------------------------------------------------------------ */ - - if (mb->mode == MODE_DIRECT_NONE_MV) { - BitstreamPutBit(bs, 1); // skipped - return; - } - - BitstreamPutBit(bs, 0); // not skipped - - if (mb->cbp == 0) { - BitstreamPutBit(bs, 1); // cbp == 0 - } else { - BitstreamPutBit(bs, 0); // cbp == xxx - } - - put_bvop_mbtype(bs, mb->mode); - - if (mb->cbp) { - BitstreamPutBits(bs, mb->cbp, 6); - } - - if (mb->mode != MODE_DIRECT && mb->cbp != 0) { - put_bvop_dbquant(bs, 0); // todo: mb->dquant = 0 - } - - if (mb->mode == MODE_INTERPOLATE || mb->mode == MODE_FORWARD) { - CodeVector(bs, mb->pmvs[0].x, fcode, pStat); - CodeVector(bs, mb->pmvs[0].y, fcode, pStat); - } - - if (mb->mode == MODE_INTERPOLATE || mb->mode == MODE_BACKWARD) { - CodeVector(bs, mb->b_pmvs[0].x, bcode, pStat); - CodeVector(bs, mb->b_pmvs[0].y, bcode, pStat); - } - - if (mb->mode == MODE_DIRECT) { - CodeVector(bs, mb->deltamv.x, 1, pStat); /* fcode is always 1 for delta vector */ - CodeVector(bs, mb->deltamv.y, 1, pStat); /* prediction is always (0,0) */ - } - - for (i = 0; i < 6; i++) { - if (mb->cbp & (1 << (5 - i))) { - CodeCoeff(bs, &qcoeff[i * 64], inter_table, scan_tables[0], 0); - } - } -} -#endif - - /***************************************************************************** * decoding stuff starts here ****************************************************************************/ @@ -808,7 +671,7 @@ level = BitstreamGetBits(bs, 8); if (level == 0 || level == 128) - DEBUG1("Illegal LEVEL for ESCAPE mode 4:", level); + DPRINTF(DPRINTF_ERROR, "Illegal LEVEL for ESCAPE mode 4: %d", level); return (level >= 128 ? -(256 - level) : level); } @@ -876,7 +739,7 @@ do { level = get_coeff(bs, &run, &last, 1, 0); if (run == -1) { - DEBUG("fatal: invalid run"); + DPRINTF(DPRINTF_DEBUG, "fatal: invalid run"); break; } coeff += run; @@ -886,7 +749,7 @@ //DPRINTF(DPRINTF_COEFF,"block[%i] %i %08x", scan[coeff], level, BitstreamShowBits(bs, 32)); if (level < -127 || level > 127) { - DEBUG1("warning: intra_overflow", level); + DPRINTF(DPRINTF_DEBUG, "warning: intra_overflow: %d", level); } coeff++; } while (!last); @@ -908,7 +771,7 @@ do { level = get_coeff(bs, &run, &last, 0, 0); if (run == -1) { - DEBUG("fatal: invalid run"); + DPRINTF(DPRINTF_ERROR, "fatal: invalid run"); break; } p += run; @@ -916,10 +779,9 @@ block[scan[p]] = level; DPRINTF(DPRINTF_COEFF,"block[%i] %i", scan[p], level); - // DPRINTF(DPRINTF_COEFF,"block[%i] %i %08x", scan[p], level, BitstreamShowBits(bs, 32)); if (level < -127 || level > 127) { - DEBUG1("warning: inter_overflow", level); + DPRINTF(DPRINTF_DEBUG, "warning: inter_overflow: %d", level); } p++; } while (!last);