| 36 |
|
|
| 37 |
#include "../utils/mbfunctions.h" |
#include "../utils/mbfunctions.h" |
| 38 |
|
|
| 39 |
|
#ifdef _DEBUG |
| 40 |
|
# include "../motion/estimation.h" |
| 41 |
|
# include "../motion/motion_inlines.h" |
| 42 |
|
# include <assert.h> |
| 43 |
|
#endif |
| 44 |
|
|
| 45 |
|
|
| 46 |
#define LEVELOFFSET 32 |
#define LEVELOFFSET 32 |
| 47 |
|
|
| 48 |
/* Initialized once during xvid_global call |
/* Initialized once during xvid_global call |
| 579 |
#endif |
#endif |
| 580 |
} |
} |
| 581 |
} |
} |
| 582 |
|
|
| 583 |
|
bits = BitstreamPos(bs); |
| 584 |
|
|
| 585 |
/* code motion vector(s) if motion is local */ |
/* code motion vector(s) if motion is local */ |
| 586 |
if (!pMB->mcsel) |
if (!pMB->mcsel) |
| 587 |
for (i = 0; i < (pMB->mode == MODE_INTER4V ? 4 : 1); i++) { |
for (i = 0; i < (pMB->mode == MODE_INTER4V ? 4 : 1); i++) { |
| 588 |
CodeVector(bs, pMB->pmvs[i].x, frame->fcode); |
CodeVector(bs, pMB->pmvs[i].x, frame->fcode); |
| 589 |
CodeVector(bs, pMB->pmvs[i].y, frame->fcode); |
CodeVector(bs, pMB->pmvs[i].y, frame->fcode); |
| 590 |
|
|
| 591 |
|
#ifdef _DEBUG |
| 592 |
|
if (i == 0) /* for simplicity */ { |
| 593 |
|
int coded_length = BitstreamPos(bs) - bits; |
| 594 |
|
int estimated_length = d_mv_bits(pMB->pmvs[i].x, pMB->pmvs[i].y, zeroMV, frame->fcode, 0); |
| 595 |
|
assert(estimated_length == coded_length); |
| 596 |
|
d_mv_bits(pMB->pmvs[i].x, pMB->pmvs[i].y, zeroMV, frame->fcode, 0); |
| 597 |
|
} |
| 598 |
|
#endif |
| 599 |
} |
} |
| 600 |
|
|
| 601 |
|
bits = BitstreamPos(bs) - bits; |
| 602 |
|
pStat->iMVBits += bits; |
| 603 |
|
|
| 604 |
bits = BitstreamPos(bs); |
bits = BitstreamPos(bs); |
| 605 |
|
|
| 606 |
/* code block coeffs */ |
/* code block coeffs */ |
| 768 |
} |
} |
| 769 |
} |
} |
| 770 |
|
|
| 771 |
|
bits = BitstreamPos(bs); |
| 772 |
|
|
| 773 |
switch (mb->mode) { |
switch (mb->mode) { |
| 774 |
case MODE_INTERPOLATE: |
case MODE_INTERPOLATE: |
| 785 |
CodeVector(bs, mb->pmvs[3].y, 1); /* prediction is always (0,0) */ |
CodeVector(bs, mb->pmvs[3].y, 1); /* prediction is always (0,0) */ |
| 786 |
default: break; |
default: break; |
| 787 |
} |
} |
| 788 |
|
pStat->iMVBits += BitstreamPos(bs) - bits; |
| 789 |
|
|
| 790 |
bits = BitstreamPos(bs); |
bits = BitstreamPos(bs); |
| 791 |
for (i = 0; i < 6; i++) { |
for (i = 0; i < 6; i++) { |
| 1087 |
{ |
{ |
| 1088 |
|
|
| 1089 |
const uint16_t *scan = scan_tables[direction]; |
const uint16_t *scan = scan_tables[direction]; |
| 1090 |
int level, run, last; |
int level, run, last = 0; |
| 1091 |
|
|
| 1092 |
do { |
do { |
| 1093 |
level = get_coeff(bs, &run, &last, 1, 0); |
level = get_coeff(bs, &run, &last, 1, 0); |
| 1127 |
int p; |
int p; |
| 1128 |
int level; |
int level; |
| 1129 |
int run; |
int run; |
| 1130 |
int last; |
int last = 0; |
| 1131 |
|
|
| 1132 |
p = 0; |
p = 0; |
| 1133 |
do { |
do { |
| 1162 |
int p; |
int p; |
| 1163 |
int level; |
int level; |
| 1164 |
int run; |
int run; |
| 1165 |
int last; |
int last = 0; |
| 1166 |
|
|
| 1167 |
p = 0; |
p = 0; |
| 1168 |
do { |
do { |