148 |
/* dc prediction */ |
/* dc prediction */ |
149 |
qcoeff[0] = qcoeff[0] - predictors[0]; |
qcoeff[0] = qcoeff[0] - predictors[0]; |
150 |
|
|
151 |
if (block < 4) bits[1] = bits[0] = dcy_tab[qcoeff[0] + 255].len; |
if (block < 4) bits[1] = bits[0] = dcy_tab[qcoeff[0] + 255].len - 3; /* 3 bits added before (4 times) */ |
152 |
else bits[1] = bits[0] = dcc_tab[qcoeff[0] + 255].len; |
else bits[1] = bits[0] = dcc_tab[qcoeff[0] + 255].len - 2; /* 2 bits added before (2 times)*/ |
153 |
|
|
154 |
/* calc cost before ac prediction */ |
/* calc cost before ac prediction */ |
155 |
bits[0] += coded = CodeCoeffIntra_CalcBits(qcoeff, scan_tables[0]); |
bits[0] += coded = CodeCoeffIntra_CalcBits(qcoeff, scan_tables[0]); |
529 |
const int x, const int y, const int mb_width) |
const int x, const int y, const int mb_width) |
530 |
{ |
{ |
531 |
unsigned int cbp[2] = {0, 0}, bits[2], i; |
unsigned int cbp[2] = {0, 0}, bits[2], i; |
532 |
/* minimum number of bits that WILL be coded in intra - MODE 5, CBP 2 and AC/DC pred - 1 */ |
/* minimum number of bits that WILL be coded in intra - mcbpc 5, cby 2 acdc flag - 1 and DC coeffs - 4*3+2*2 */ |
533 |
int bits1 = BITS_MULT*(5+2+1), bits2 = BITS_MULT*(5+2+1); |
int bits1 = BITS_MULT*(5+2+1+4*3+2*2), bits2 = BITS_MULT*(5+2+1+4*3+2*2); |
534 |
unsigned int distortion = 0; |
unsigned int distortion = 0; |
535 |
|
|
536 |
int16_t *in = Data->dctSpace, * coeff = Data->dctSpace + 64, * dqcoeff = Data->dctSpace + 128; |
int16_t *in = Data->dctSpace, * coeff = Data->dctSpace + 64, * dqcoeff = Data->dctSpace + 128; |
684 |
} |
} |
685 |
} |
} |
686 |
|
|
687 |
|
/* there is no way for INTRA to take less than 24 bits - go to findRD_intra() for calculations */ |
688 |
|
if (min_rd > 24*BITS_MULT) { |
689 |
intra_rd = findRD_intra(Data, pMB, x, y, pParam->mb_width); |
intra_rd = findRD_intra(Data, pMB, x, y, pParam->mb_width); |
690 |
if (intra_rd < min_rd) { |
if (intra_rd < min_rd) { |
691 |
*Data->iMinSAD = min_rd = intra_rd; |
*Data->iMinSAD = min_rd = intra_rd; |
692 |
mode = MODE_INTRA; |
mode = MODE_INTRA; |
693 |
cbp = *Data->cbp; |
cbp = *Data->cbp; |
694 |
} |
} |
695 |
|
} |
696 |
|
|
697 |
pMB->sad16 = pMB->sad8[0] = pMB->sad8[1] = pMB->sad8[2] = pMB->sad8[3] = 0; |
pMB->sad16 = pMB->sad8[0] = pMB->sad8[1] = pMB->sad8[2] = pMB->sad8[3] = 0; |
698 |
pMB->cbp = cbp; |
pMB->cbp = cbp; |