Merge "Simplify Zero bin and zero bin run code." into experimental
This commit is contained in:
commit
5f2429259f
@ -315,27 +315,6 @@ typedef struct VP9_COMP {
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_y2[QINDEX_RANGE][16]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_uv[QINDEX_RANGE][16]);
|
||||
|
||||
DECLARE_ALIGNED(64, short, Y1zbin_8x8[QINDEX_RANGE][64]);
|
||||
DECLARE_ALIGNED(64, short, Y2zbin_8x8[QINDEX_RANGE][64]);
|
||||
DECLARE_ALIGNED(64, short, UVzbin_8x8[QINDEX_RANGE][64]);
|
||||
DECLARE_ALIGNED(64, short, zrun_zbin_boost_y1_8x8[QINDEX_RANGE][64]);
|
||||
DECLARE_ALIGNED(64, short, zrun_zbin_boost_y2_8x8[QINDEX_RANGE][64]);
|
||||
DECLARE_ALIGNED(64, short, zrun_zbin_boost_uv_8x8[QINDEX_RANGE][64]);
|
||||
|
||||
DECLARE_ALIGNED(16, short, Y1zbin_16x16[QINDEX_RANGE][256]);
|
||||
DECLARE_ALIGNED(16, short, Y2zbin_16x16[QINDEX_RANGE][256]);
|
||||
DECLARE_ALIGNED(16, short, UVzbin_16x16[QINDEX_RANGE][256]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_y1_16x16[QINDEX_RANGE][256]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_y2_16x16[QINDEX_RANGE][256]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_uv_16x16[QINDEX_RANGE][256]);
|
||||
|
||||
DECLARE_ALIGNED(16, short, Y1zbin_32x32[QINDEX_RANGE][1024]);
|
||||
DECLARE_ALIGNED(16, short, Y2zbin_32x32[QINDEX_RANGE][1024]);
|
||||
DECLARE_ALIGNED(16, short, UVzbin_32x32[QINDEX_RANGE][1024]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_y1_32x32[QINDEX_RANGE][1024]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_y2_32x32[QINDEX_RANGE][1024]);
|
||||
DECLARE_ALIGNED(16, short, zrun_zbin_boost_uv_32x32[QINDEX_RANGE][1024]);
|
||||
|
||||
MACROBLOCK mb;
|
||||
VP9_COMMON common;
|
||||
VP9_CONFIG oxcf;
|
||||
|
@ -224,9 +224,10 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
|
||||
int i, rc, eob;
|
||||
int zbin;
|
||||
int x, y, z, sz;
|
||||
int16_t *zbin_boost_ptr = b->zrun_zbin_boost_8x8;
|
||||
int zero_run = 0;
|
||||
int16_t *zbin_boost_ptr = b->zrun_zbin_boost;
|
||||
int16_t *coeff_ptr = b->coeff;
|
||||
int16_t *zbin_ptr = b->zbin_8x8;
|
||||
int16_t *zbin_ptr = b->zbin;
|
||||
int16_t *round_ptr = b->round;
|
||||
int16_t *quant_ptr = b->quant;
|
||||
uint8_t *quant_shift_ptr = b->quant_shift;
|
||||
@ -243,9 +244,8 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
|
||||
for (i = 0; i < b->eob_max_offset_8x8; i++) {
|
||||
rc = vp9_default_zig_zag1d_8x8[i];
|
||||
z = coeff_ptr[rc];
|
||||
|
||||
zbin = (zbin_ptr[rc != 0] + *zbin_boost_ptr + zbin_oq_value);
|
||||
zbin_boost_ptr++;
|
||||
zbin = (zbin_ptr[rc != 0] + zbin_boost_ptr[zero_run] + zbin_oq_value);
|
||||
zero_run += (zero_run < 15);
|
||||
|
||||
sz = (z >> 31); // sign of z
|
||||
x = (z ^ sz) - sz; // x = abs(z)
|
||||
@ -253,14 +253,14 @@ void vp9_regular_quantize_b_8x8(BLOCK *b, BLOCKD *d) {
|
||||
if (x >= zbin) {
|
||||
x += (round_ptr[rc != 0]);
|
||||
y = ((int)(((int)(x * quant_ptr[rc != 0]) >> 16) + x))
|
||||
>> quant_shift_ptr[rc != 0]; // quantize (x)
|
||||
>> quant_shift_ptr[rc != 0]; // quantize (x)
|
||||
x = (y ^ sz) - sz; // get the sign back
|
||||
qcoeff_ptr[rc] = x; // write to destination
|
||||
dqcoeff_ptr[rc] = x * dequant_ptr[rc != 0]; // dequantized value
|
||||
|
||||
if (y) {
|
||||
eob = i; // last nonzero coeffs
|
||||
zbin_boost_ptr = b->zrun_zbin_boost_8x8;
|
||||
zero_run = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -333,6 +333,7 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
|
||||
int i, rc, eob;
|
||||
int zbin;
|
||||
int x, y, z, sz;
|
||||
int zero_run = 0;
|
||||
int16_t *zbin_boost_ptr = zbin_boost_orig_ptr;
|
||||
|
||||
vpx_memset(qcoeff_ptr, 0, n_coeffs*sizeof(int16_t));
|
||||
@ -343,8 +344,8 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
|
||||
rc = scan[i];
|
||||
z = coeff_ptr[rc] * mul;
|
||||
|
||||
zbin = (zbin_ptr[rc!=0] + *zbin_boost_ptr + zbin_oq_value);
|
||||
zbin_boost_ptr ++;
|
||||
zbin = (zbin_ptr[rc != 0] + zbin_boost_ptr[zero_run] + zbin_oq_value);
|
||||
zero_run += (zero_run < 15);
|
||||
|
||||
sz = (z >> 31); // sign of z
|
||||
x = (z ^ sz) - sz; // x = abs(z)
|
||||
@ -359,7 +360,7 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
|
||||
|
||||
if (y) {
|
||||
eob = i; // last nonzero coeffs
|
||||
zbin_boost_ptr = zbin_boost_orig_ptr;
|
||||
zero_run = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -368,10 +369,10 @@ static void quantize(int16_t *zbin_boost_orig_ptr,
|
||||
}
|
||||
|
||||
void vp9_regular_quantize_b_16x16(BLOCK *b, BLOCKD *d) {
|
||||
quantize(b->zrun_zbin_boost_16x16,
|
||||
quantize(b->zrun_zbin_boost,
|
||||
b->coeff,
|
||||
256, b->eob_max_offset_16x16,
|
||||
b->zbin_16x16, b->round, b->quant, b->quant_shift,
|
||||
b->zbin, b->round, b->quant, b->quant_shift,
|
||||
d->qcoeff,
|
||||
d->dqcoeff,
|
||||
d->dequant,
|
||||
@ -381,10 +382,10 @@ void vp9_regular_quantize_b_16x16(BLOCK *b, BLOCKD *d) {
|
||||
|
||||
void vp9_quantize_sby_32x32(MACROBLOCK *x) {
|
||||
x->e_mbd.block[0].eob = 0;
|
||||
quantize(x->block[0].zrun_zbin_boost_32x32,
|
||||
quantize(x->block[0].zrun_zbin_boost,
|
||||
x->sb_coeff_data.coeff,
|
||||
1024, x->block[0].eob_max_offset_32x32,
|
||||
x->block[0].zbin_32x32,
|
||||
x->block[0].zbin,
|
||||
x->block[0].round, x->block[0].quant, x->block[0].quant_shift,
|
||||
x->e_mbd.sb_coeff_data.qcoeff,
|
||||
x->e_mbd.sb_coeff_data.dqcoeff,
|
||||
@ -400,10 +401,10 @@ void vp9_quantize_sbuv_16x16(MACROBLOCK *x) {
|
||||
x->e_mbd.block[16].eob = 0;
|
||||
x->e_mbd.block[20].eob = 0;
|
||||
for (i = 16; i < 24; i += 4)
|
||||
quantize(x->block[i].zrun_zbin_boost_16x16,
|
||||
quantize(x->block[i].zrun_zbin_boost,
|
||||
x->sb_coeff_data.coeff + 1024 + (i - 16) * 64,
|
||||
256, x->block[i].eob_max_offset_16x16,
|
||||
x->block[i].zbin_16x16,
|
||||
x->block[i].zbin,
|
||||
x->block[i].round, x->block[0].quant, x->block[i].quant_shift,
|
||||
x->e_mbd.sb_coeff_data.qcoeff + 1024 + (i - 16) * 64,
|
||||
x->e_mbd.sb_coeff_data.dqcoeff + 1024 + (i - 16) * 64,
|
||||
@ -439,106 +440,13 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
|
||||
int i;
|
||||
int quant_val;
|
||||
int Q;
|
||||
static const int zbin_boost[16] = { 0, 0, 8, 10, 12, 14, 16, 20,
|
||||
24, 28, 32, 36, 40, 44, 44, 44
|
||||
};
|
||||
|
||||
static const int zbin_boost_8x8[64] = { 0, 0, 0, 8, 8, 8, 10, 12,
|
||||
14, 16, 18, 20, 22, 24, 26, 28,
|
||||
30, 32, 34, 36, 38, 40, 42, 44,
|
||||
46, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48
|
||||
};
|
||||
static const int zbin_boost_16x16[256] = {
|
||||
0, 0, 0, 8, 8, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28,
|
||||
30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
};
|
||||
static const int zbin_boost_32x32[1024] = {
|
||||
0, 0, 0, 8, 8, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28,
|
||||
30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
};
|
||||
static const int zbin_boost[16] = { 0, 0, 0, 8, 8, 8, 10, 12,
|
||||
14, 16, 20, 24, 28, 32, 36, 40 };
|
||||
|
||||
|
||||
int qrounding_factor = 48;
|
||||
|
||||
|
||||
for (Q = 0; Q < QINDEX_RANGE; Q++) {
|
||||
int qzbin_factor = (vp9_dc_quant(Q, 0) < 148) ? 84 : 80;
|
||||
|
||||
@ -556,47 +464,24 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
|
||||
invert_quant(cpi->Y1quant[Q] + 0,
|
||||
cpi->Y1quant_shift[Q] + 0, quant_val);
|
||||
cpi->Y1zbin[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y1zbin_8x8[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y1zbin_16x16[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y1round[Q][0] = (qrounding_factor * quant_val) >> 7;
|
||||
cpi->common.Y1dequant[Q][0] = quant_val;
|
||||
cpi->zrun_zbin_boost_y1[Q][0] = (quant_val * zbin_boost[0]) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_8x8[Q][0] =
|
||||
((quant_val * zbin_boost_8x8[0]) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_16x16[Q][0] =
|
||||
((quant_val * zbin_boost_16x16[0]) + 64) >> 7;
|
||||
cpi->Y1zbin_32x32[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_32x32[Q][0] =
|
||||
((quant_val * zbin_boost_32x32[0]) + 64) >> 7;
|
||||
|
||||
|
||||
quant_val = vp9_dc2quant(Q, cpi->common.y2dc_delta_q);
|
||||
invert_quant(cpi->Y2quant[Q] + 0,
|
||||
cpi->Y2quant_shift[Q] + 0, quant_val);
|
||||
cpi->Y2zbin[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y2zbin_8x8[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y2zbin_16x16[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->Y2round[Q][0] = (qrounding_factor * quant_val) >> 7;
|
||||
cpi->common.Y2dequant[Q][0] = quant_val;
|
||||
cpi->zrun_zbin_boost_y2[Q][0] = (quant_val * zbin_boost[0]) >> 7;
|
||||
cpi->zrun_zbin_boost_y2_8x8[Q][0] =
|
||||
((quant_val * zbin_boost_8x8[0]) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y2_16x16[Q][0] =
|
||||
((quant_val * zbin_boost_16x16[0]) + 64) >> 7;
|
||||
|
||||
quant_val = vp9_dc_uv_quant(Q, cpi->common.uvdc_delta_q);
|
||||
invert_quant(cpi->UVquant[Q] + 0,
|
||||
cpi->UVquant_shift[Q] + 0, quant_val);
|
||||
cpi->UVzbin[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->UVzbin_8x8[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->UVzbin_16x16[Q][0] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->UVround[Q][0] = (qrounding_factor * quant_val) >> 7;
|
||||
cpi->common.UVdequant[Q][0] = quant_val;
|
||||
cpi->zrun_zbin_boost_uv[Q][0] = (quant_val * zbin_boost[0]) >> 7;
|
||||
cpi->zrun_zbin_boost_uv_8x8[Q][0] =
|
||||
((quant_val * zbin_boost_8x8[0]) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_uv_16x16[Q][0] =
|
||||
((quant_val * zbin_boost_16x16[0]) + 64) >> 7;
|
||||
|
||||
// all the 4x4 ac values =;
|
||||
for (i = 1; i < 16; i++) {
|
||||
@ -629,57 +514,6 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
|
||||
cpi->zrun_zbin_boost_uv[Q][i] =
|
||||
((quant_val * zbin_boost[i]) + 64) >> 7;
|
||||
}
|
||||
|
||||
// 8x8 structures... only zbin seperated out for now
|
||||
// This needs cleaning up for 8x8 especially if we are to add
|
||||
// support for non flat Q matices
|
||||
for (i = 1; i < 64; i++) {
|
||||
int rc = vp9_default_zig_zag1d_8x8[i];
|
||||
|
||||
quant_val = vp9_ac_yquant(Q);
|
||||
cpi->Y1zbin_8x8[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_8x8[Q][i] =
|
||||
((quant_val * zbin_boost_8x8[i]) + 64) >> 7;
|
||||
|
||||
quant_val = vp9_ac2quant(Q, cpi->common.y2ac_delta_q);
|
||||
cpi->Y2zbin_8x8[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y2_8x8[Q][i] =
|
||||
((quant_val * zbin_boost_8x8[i]) + 64) >> 7;
|
||||
|
||||
quant_val = vp9_ac_uv_quant(Q, cpi->common.uvac_delta_q);
|
||||
cpi->UVzbin_8x8[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_uv_8x8[Q][i] =
|
||||
((quant_val * zbin_boost_8x8[i]) + 64) >> 7;
|
||||
}
|
||||
|
||||
// 16x16 structures. Same comment above applies.
|
||||
for (i = 1; i < 256; i++) {
|
||||
int rc = vp9_default_zig_zag1d_16x16[i];
|
||||
|
||||
quant_val = vp9_ac_yquant(Q);
|
||||
cpi->Y1zbin_16x16[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_16x16[Q][i] =
|
||||
((quant_val * zbin_boost_16x16[i]) + 64) >> 7;
|
||||
|
||||
quant_val = vp9_ac2quant(Q, cpi->common.y2ac_delta_q);
|
||||
cpi->Y2zbin_16x16[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y2_16x16[Q][i] =
|
||||
((quant_val * zbin_boost_16x16[i]) + 64) >> 7;
|
||||
|
||||
quant_val = vp9_ac_uv_quant(Q, cpi->common.uvac_delta_q);
|
||||
cpi->UVzbin_16x16[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_uv_16x16[Q][i] =
|
||||
((quant_val * zbin_boost_16x16[i]) + 64) >> 7;
|
||||
}
|
||||
// 32x32 structures. Same comment above applies.
|
||||
for (i = 1; i < 1024; i++) {
|
||||
int rc = vp9_default_zig_zag1d_32x32[i];
|
||||
|
||||
quant_val = vp9_ac_yquant(Q);
|
||||
cpi->Y1zbin_32x32[Q][rc] = ((qzbin_factor * quant_val) + 64) >> 7;
|
||||
cpi->zrun_zbin_boost_y1_32x32[Q][i] =
|
||||
((quant_val * zbin_boost_32x32[i]) + 64) >> 7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -717,15 +551,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
|
||||
x->block[i].quant = cpi->Y1quant[QIndex];
|
||||
x->block[i].quant_shift = cpi->Y1quant_shift[QIndex];
|
||||
x->block[i].zbin = cpi->Y1zbin[QIndex];
|
||||
x->block[i].zbin_8x8 = cpi->Y1zbin_8x8[QIndex];
|
||||
x->block[i].zbin_16x16 = cpi->Y1zbin_16x16[QIndex];
|
||||
x->block[i].zbin_32x32 = cpi->Y1zbin_32x32[QIndex];
|
||||
x->block[i].round = cpi->Y1round[QIndex];
|
||||
x->e_mbd.block[i].dequant = cpi->common.Y1dequant[QIndex];
|
||||
x->block[i].zrun_zbin_boost = cpi->zrun_zbin_boost_y1[QIndex];
|
||||
x->block[i].zrun_zbin_boost_8x8 = cpi->zrun_zbin_boost_y1_8x8[QIndex];
|
||||
x->block[i].zrun_zbin_boost_16x16 = cpi->zrun_zbin_boost_y1_16x16[QIndex];
|
||||
x->block[i].zrun_zbin_boost_32x32 = cpi->zrun_zbin_boost_y1_32x32[QIndex];
|
||||
x->block[i].zbin_extra = (int16_t)zbin_extra;
|
||||
|
||||
// Segment max eob offset feature.
|
||||
@ -756,13 +584,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
|
||||
x->block[i].quant = cpi->UVquant[QIndex];
|
||||
x->block[i].quant_shift = cpi->UVquant_shift[QIndex];
|
||||
x->block[i].zbin = cpi->UVzbin[QIndex];
|
||||
x->block[i].zbin_8x8 = cpi->UVzbin_8x8[QIndex];
|
||||
x->block[i].zbin_16x16 = cpi->UVzbin_16x16[QIndex];
|
||||
x->block[i].round = cpi->UVround[QIndex];
|
||||
x->e_mbd.block[i].dequant = cpi->common.UVdequant[QIndex];
|
||||
x->block[i].zrun_zbin_boost = cpi->zrun_zbin_boost_uv[QIndex];
|
||||
x->block[i].zrun_zbin_boost_8x8 = cpi->zrun_zbin_boost_uv_8x8[QIndex];
|
||||
x->block[i].zrun_zbin_boost_16x16 = cpi->zrun_zbin_boost_uv_16x16[QIndex];
|
||||
|
||||
x->block[i].zbin_extra = (int16_t)zbin_extra;
|
||||
|
||||
@ -790,13 +614,9 @@ void vp9_mb_init_quantizer(VP9_COMP *cpi, MACROBLOCK *x) {
|
||||
x->block[24].quant = cpi->Y2quant[QIndex];
|
||||
x->block[24].quant_shift = cpi->Y2quant_shift[QIndex];
|
||||
x->block[24].zbin = cpi->Y2zbin[QIndex];
|
||||
x->block[24].zbin_8x8 = cpi->Y2zbin_8x8[QIndex];
|
||||
x->block[24].zbin_16x16 = cpi->Y2zbin_16x16[QIndex];
|
||||
x->block[24].round = cpi->Y2round[QIndex];
|
||||
x->e_mbd.block[24].dequant = cpi->common.Y2dequant[QIndex];
|
||||
x->block[24].zrun_zbin_boost = cpi->zrun_zbin_boost_y2[QIndex];
|
||||
x->block[24].zrun_zbin_boost_8x8 = cpi->zrun_zbin_boost_y2_8x8[QIndex];
|
||||
x->block[24].zrun_zbin_boost_16x16 = cpi->zrun_zbin_boost_y2_16x16[QIndex];
|
||||
x->block[24].zbin_extra = (int16_t)zbin_extra;
|
||||
|
||||
// TBD perhaps not use for Y2
|
||||
|
Loading…
x
Reference in New Issue
Block a user