--- mbcoding.c 2003/02/21 08:32:34 1.44 +++ mbcoding.c 2003/03/16 12:04:14 1.44.2.2 @@ -627,6 +627,13 @@ #endif + +static int iDQtab[5] = { + 1, 0, -1 /* no change */, 2, 3 +}; +#define DQ_VALUE2INDEX(value) iDQtab[(value)+2] + + static __inline void CodeBlockIntra(const FRAMEINFO * const frame, const MACROBLOCK * pMB, @@ -661,10 +668,10 @@ // write dquant if (pMB->mode == MODE_INTRA_Q) - BitstreamPutBits(bs, pMB->dquant, 2); + BitstreamPutBits(bs, DQ_VALUE2INDEX(pMB->dquant), 2); // write interlacing - if (frame->global_flags & XVID_INTERLACING) { + if (frame->vol_flags & XVID_INTERLACING) { BitstreamPutBit(bs, pMB->field_dct); } // code block coeffs @@ -678,7 +685,7 @@ if (pMB->cbp & (1 << (5 - i))) { const uint16_t *scan_table = - frame->global_flags & XVID_ALTERNATESCAN ? + frame->vop_flags & XVID_ALTERNATESCAN ? scan_tables[2] : scan_tables[pMB->acpred_directions[i]]; bits = BitstreamPos(bs); @@ -723,10 +730,10 @@ // write dquant if (pMB->mode == MODE_INTER_Q) - BitstreamPutBits(bs, pMB->dquant, 2); + BitstreamPutBits(bs, DQ_VALUE2INDEX(pMB->dquant), 2); // interlacing - if (frame->global_flags & XVID_INTERLACING) { + if (frame->vol_flags & XVID_INTERLACING) { if (pMB->cbp) { BitstreamPutBit(bs, pMB->field_dct); DPRINTF(DPRINTF_MB,"codep: field_dct: %i", pMB->field_dct); @@ -758,7 +765,7 @@ if (pMB->cbp & (1 << (5 - i))) { const uint16_t *scan_table = - frame->global_flags & XVID_ALTERNATESCAN ? + frame->vop_flags & XVID_ALTERNATESCAN ? scan_tables[2] : scan_tables[0]; #ifdef BIGLUT