738 |
if (frame->vol_flags & XVID_VOL_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(XVID_DEBUG_MB,"codep: field_dct: %i", pMB->field_dct); |
DPRINTF(XVID_DEBUG_MB,"codep: field_dct: %i\n", pMB->field_dct); |
742 |
} |
} |
743 |
|
|
744 |
// if inter block, write field ME flag |
// if inter block, write field ME flag |
745 |
if (pMB->mode == MODE_INTER || pMB->mode == MODE_INTER_Q) { |
if (pMB->mode == MODE_INTER || pMB->mode == MODE_INTER_Q) { |
746 |
BitstreamPutBit(bs, pMB->field_pred); |
BitstreamPutBit(bs, pMB->field_pred); |
747 |
DPRINTF(XVID_DEBUG_MB,"codep: field_pred: %i", pMB->field_pred); |
DPRINTF(XVID_DEBUG_MB,"codep: field_pred: %i\n", pMB->field_pred); |
748 |
|
|
749 |
// write field prediction references |
// write field prediction references |
750 |
if (pMB->field_pred) { |
if (pMB->field_pred) { |
1162 |
level = BitstreamGetBits(bs, 8); |
level = BitstreamGetBits(bs, 8); |
1163 |
|
|
1164 |
if (level == 0 || level == 128) |
if (level == 0 || level == 128) |
1165 |
DPRINTF(XVID_DEBUG_ERROR, "Illegal LEVEL for ESCAPE mode 4: %d", level); |
DPRINTF(XVID_DEBUG_ERROR, "Illegal LEVEL for ESCAPE mode 4: %d\n", level); |
1166 |
|
|
1167 |
return (level << 24) >> 24; |
return (level << 24) >> 24; |
1168 |
} |
} |
1224 |
coeff += run; |
coeff += run; |
1225 |
block[scan[coeff]] = level; |
block[scan[coeff]] = level; |
1226 |
|
|
1227 |
DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i", scan[coeff], level); |
DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i\n", scan[coeff], level); |
1228 |
//DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i %08x", scan[coeff], level, BitstreamShowBits(bs, 32)); |
//DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i %08x\n", scan[coeff], level, BitstreamShowBits(bs, 32)); |
1229 |
|
|
1230 |
if (level < -2047 || level > 2047) { |
if (level < -2047 || level > 2047) { |
1231 |
DPRINTF(XVID_DEBUG_ERROR,"warning: intra_overflow %i", level); |
DPRINTF(XVID_DEBUG_ERROR,"warning: intra_overflow %i\n", level); |
1232 |
} |
} |
1233 |
coeff++; |
coeff++; |
1234 |
} while (!last); |
} while (!last); |
1258 |
|
|
1259 |
block[scan[p]] = level; |
block[scan[p]] = level; |
1260 |
|
|
1261 |
DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i", scan[p], level); |
DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i\n", scan[p], level); |
1262 |
// DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i %08x", scan[p], level, BitstreamShowBits(bs, 32)); |
// DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i %08x\n", scan[p], level, BitstreamShowBits(bs, 32)); |
1263 |
|
|
1264 |
if (level < -2047 || level > 2047) { |
if (level < -2047 || level > 2047) { |
1265 |
DPRINTF(XVID_DEBUG_ERROR,"warning: inter overflow %i", level); |
DPRINTF(XVID_DEBUG_ERROR,"warning: inter overflow %i\n", level); |
1266 |
} |
} |
1267 |
p++; |
p++; |
1268 |
} while (!last); |
} while (!last); |