Merge "Move vp8_strict_quantize_b inside EXACT_QUANT #define."
This commit is contained in:
Коммит
037345eb69
|
@ -118,6 +118,65 @@ void vp8_regular_quantize_b(BLOCK *b, BLOCKD *d)
|
||||||
|
|
||||||
d->eob = eob + 1;
|
d->eob = eob + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Perform regular quantization, with unbiased rounding and no zero bin. */
|
||||||
|
void vp8_strict_quantize_b(BLOCK *b, BLOCKD *d)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int rc;
|
||||||
|
int eob;
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
int z;
|
||||||
|
int sz;
|
||||||
|
short *coeff_ptr;
|
||||||
|
short *quant_ptr;
|
||||||
|
short *quant_shift_ptr;
|
||||||
|
short *qcoeff_ptr;
|
||||||
|
short *dqcoeff_ptr;
|
||||||
|
short *dequant_ptr;
|
||||||
|
|
||||||
|
coeff_ptr = &b->coeff[0];
|
||||||
|
quant_ptr = &b->quant[0][0];
|
||||||
|
quant_shift_ptr = &b->quant_shift[0][0];
|
||||||
|
qcoeff_ptr = d->qcoeff;
|
||||||
|
dqcoeff_ptr = d->dqcoeff;
|
||||||
|
dequant_ptr = &d->dequant[0][0];
|
||||||
|
eob = - 1;
|
||||||
|
vpx_memset(qcoeff_ptr, 0, 32);
|
||||||
|
vpx_memset(dqcoeff_ptr, 0, 32);
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
int dq;
|
||||||
|
int round;
|
||||||
|
|
||||||
|
/*TODO: These arrays should be stored in zig-zag order.*/
|
||||||
|
rc = vp8_default_zig_zag1d[i];
|
||||||
|
z = coeff_ptr[rc];
|
||||||
|
dq = dequant_ptr[rc];
|
||||||
|
round = dq >> 1;
|
||||||
|
/* Sign of z. */
|
||||||
|
sz = -(z < 0);
|
||||||
|
x = (z + sz) ^ sz;
|
||||||
|
x += round;
|
||||||
|
if (x >= dq)
|
||||||
|
{
|
||||||
|
/* Quantize x. */
|
||||||
|
y = (((x * quant_ptr[rc]) >> 16) + x) >> quant_shift_ptr[rc];
|
||||||
|
/* Put the sign back. */
|
||||||
|
x = (y + sz) ^ sz;
|
||||||
|
/* Save the coefficient and its dequantized value. */
|
||||||
|
qcoeff_ptr[rc] = x;
|
||||||
|
dqcoeff_ptr[rc] = x * dq;
|
||||||
|
/* Remember the last non-zero coefficient. */
|
||||||
|
if (y)
|
||||||
|
eob = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d->eob = eob + 1;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
void vp8_fast_quantize_b_c(BLOCK *b, BLOCKD *d)
|
void vp8_fast_quantize_b_c(BLOCK *b, BLOCKD *d)
|
||||||
{
|
{
|
||||||
|
@ -207,64 +266,6 @@ void vp8_regular_quantize_b(BLOCK *b, BLOCKD *d)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Perform regular quantization, with unbiased rounding and no zero bin. */
|
|
||||||
void vp8_strict_quantize_b(BLOCK *b, BLOCKD *d)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int rc;
|
|
||||||
int eob;
|
|
||||||
int x;
|
|
||||||
int y;
|
|
||||||
int z;
|
|
||||||
int sz;
|
|
||||||
short *coeff_ptr;
|
|
||||||
short *quant_ptr;
|
|
||||||
short *quant_shift_ptr;
|
|
||||||
short *qcoeff_ptr;
|
|
||||||
short *dqcoeff_ptr;
|
|
||||||
short *dequant_ptr;
|
|
||||||
|
|
||||||
coeff_ptr = &b->coeff[0];
|
|
||||||
quant_ptr = &b->quant[0][0];
|
|
||||||
quant_shift_ptr = &b->quant_shift[0][0];
|
|
||||||
qcoeff_ptr = d->qcoeff;
|
|
||||||
dqcoeff_ptr = d->dqcoeff;
|
|
||||||
dequant_ptr = &d->dequant[0][0];
|
|
||||||
eob = - 1;
|
|
||||||
vpx_memset(qcoeff_ptr, 0, 32);
|
|
||||||
vpx_memset(dqcoeff_ptr, 0, 32);
|
|
||||||
for (i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
int dq;
|
|
||||||
int round;
|
|
||||||
|
|
||||||
/*TODO: These arrays should be stored in zig-zag order.*/
|
|
||||||
rc = vp8_default_zig_zag1d[i];
|
|
||||||
z = coeff_ptr[rc];
|
|
||||||
dq = dequant_ptr[rc];
|
|
||||||
round = dq >> 1;
|
|
||||||
/* Sign of z. */
|
|
||||||
sz = -(z < 0);
|
|
||||||
x = (z + sz) ^ sz;
|
|
||||||
x += round;
|
|
||||||
if (x >= dq)
|
|
||||||
{
|
|
||||||
/* Quantize x. */
|
|
||||||
y = (((x * quant_ptr[rc]) >> 16) + x) >> quant_shift_ptr[rc];
|
|
||||||
/* Put the sign back. */
|
|
||||||
x = (y + sz) ^ sz;
|
|
||||||
/* Save the coefficient and its dequantized value. */
|
|
||||||
qcoeff_ptr[rc] = x;
|
|
||||||
dqcoeff_ptr[rc] = x * dq;
|
|
||||||
/* Remember the last non-zero coefficient. */
|
|
||||||
if (y)
|
|
||||||
eob = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
d->eob = eob + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void vp8_quantize_mby(MACROBLOCK *x)
|
void vp8_quantize_mby(MACROBLOCK *x)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче