Merge "Give 4x4 scan and coef_band tables a _4x4 suffix." into experimental

This commit is contained in:
Ronald S. Bultje 2012-12-18 14:17:46 -08:00 коммит произвёл Gerrit Code Review
Родитель 58961c74ea 8986eb5c26
Коммит 5cab8b7a18
8 изменённых файлов: 48 добавлений и 46 удалений

Просмотреть файл

@ -47,7 +47,7 @@ DECLARE_ALIGNED(16, const unsigned char, vp9_norm[256]) = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
DECLARE_ALIGNED(16, const int, vp9_coef_bands[16]) = {
DECLARE_ALIGNED(16, const int, vp9_coef_bands_4x4[16]) = {
0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7
};
@ -55,20 +55,20 @@ DECLARE_ALIGNED(16, cuchar, vp9_prev_token_class[MAX_ENTROPY_TOKENS]) = {
0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 0
};
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d[16]) = {
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_4x4[16]) = {
0, 1, 4, 8,
5, 2, 3, 6,
9, 12, 13, 10,
7, 11, 14, 15,
};
DECLARE_ALIGNED(16, const int, vp9_col_scan[16]) = {
DECLARE_ALIGNED(16, const int, vp9_col_scan_4x4[16]) = {
0, 4, 8, 12,
1, 5, 9, 13,
2, 6, 10, 14,
3, 7, 11, 15
};
DECLARE_ALIGNED(16, const int, vp9_row_scan[16]) = {
DECLARE_ALIGNED(16, const int, vp9_row_scan_4x4[16]) = {
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,

Просмотреть файл

@ -74,7 +74,7 @@ extern vp9_extra_bit_struct vp9_extra_bits[12]; /* indexed by token value */
position within the 4x4 DCT. */
#define COEF_BANDS 8
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands[16]);
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands_4x4[16]);
extern DECLARE_ALIGNED(64, const int, vp9_coef_bands_8x8[64]);
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands_16x16[256]);
#if CONFIG_TX32X32 && CONFIG_SUPERBLOCKS
@ -114,10 +114,10 @@ extern DECLARE_ALIGNED(16, const unsigned char, vp9_prev_token_class[MAX_ENTROPY
struct VP9Common;
void vp9_default_coef_probs(struct VP9Common *);
extern DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d[16]);
extern DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_4x4[16]);
extern DECLARE_ALIGNED(16, const int, vp9_col_scan[16]);
extern DECLARE_ALIGNED(16, const int, vp9_row_scan[16]);
extern DECLARE_ALIGNED(16, const int, vp9_col_scan_4x4[16]);
extern DECLARE_ALIGNED(16, const int, vp9_row_scan_4x4[16]);
extern DECLARE_ALIGNED(64, const int, vp9_default_zig_zag1d_8x8[64]);
extern DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_16x16[256]);

Просмотреть файл

@ -88,7 +88,7 @@ void vp9_init_de_quantizer(VP9D_COMP *pbi) {
/* all the ac values =; */
for (i = 1; i < 16; i++) {
int rc = vp9_default_zig_zag1d[i];
int rc = vp9_default_zig_zag1d_4x4[i];
pc->Y1dequant[Q][rc] = (short)vp9_ac_yquant(Q);
pc->Y2dequant[Q][rc] = (short)vp9_ac2quant(Q, pc->y2ac_delta_q);

Просмотреть файл

@ -368,7 +368,8 @@ static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
eobs[24] = c = decode_coefs(pbi, xd, bc, a, l, PLANE_TYPE_Y2,
DCT_DCT, get_eob(xd, segment_id, 4),
xd->block[24].qcoeff,
vp9_default_zig_zag1d, TX_8X8, vp9_coef_bands);
vp9_default_zig_zag1d_4x4, TX_8X8,
vp9_coef_bands_4x4);
eobtotal += c - 4;
type = PLANE_TYPE_Y_NO_DC;
} else {
@ -412,7 +413,8 @@ static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
eobs[i] = c = decode_coefs(pbi, xd, bc, a, l, PLANE_TYPE_UV,
DCT_DCT, seg_eob, xd->block[i].qcoeff,
vp9_default_zig_zag1d, TX_4X4, vp9_coef_bands);
vp9_default_zig_zag1d_4x4, TX_4X4,
vp9_coef_bands_4x4);
eobtotal += c;
}
} else {
@ -453,7 +455,7 @@ static int decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
int c;
c = decode_coefs(dx, xd, bc, a, l, type, tx_type, seg_eob,
xd->block[i].qcoeff, scan, TX_4X4, vp9_coef_bands);
xd->block[i].qcoeff, scan, TX_4X4, vp9_coef_bands_4x4);
eobs[i] = c;
return c;
@ -468,13 +470,13 @@ static int decode_coefs_4x4_y(VP9D_COMP *dx, MACROBLOCKD *xd,
switch (tx_type) {
case ADST_DCT:
scan = vp9_row_scan;
scan = vp9_row_scan_4x4;
break;
case DCT_ADST:
scan = vp9_col_scan;
scan = vp9_col_scan_4x4;
break;
default:
scan = vp9_default_zig_zag1d;
scan = vp9_default_zig_zag1d_4x4;
break;
}
@ -499,7 +501,7 @@ static int decode_mb_tokens_4x4_uv(VP9D_COMP* const dx,
// chroma blocks
for (i = 16; i < 24; i++) {
eobtotal += decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_UV, i, seg_eob,
DCT_DCT, vp9_default_zig_zag1d);
DCT_DCT, vp9_default_zig_zag1d_4x4);
}
return eobtotal;
@ -526,7 +528,7 @@ static int vp9_decode_mb_tokens_4x4(VP9D_COMP* const dx,
// 2nd order DC block
if (has_2nd_order) {
eobtotal += decode_coefs_4x4(dx, xd, bc, PLANE_TYPE_Y2, 24, seg_eob,
DCT_DCT, vp9_default_zig_zag1d) - 16;
DCT_DCT, vp9_default_zig_zag1d_4x4) - 16;
type = PLANE_TYPE_Y_NO_DC;
} else {
xd->above_context->y2 = 0;

Просмотреть файл

@ -384,8 +384,8 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
switch (tx_size) {
default:
case TX_4X4:
scan = vp9_default_zig_zag1d;
bands = vp9_coef_bands;
scan = vp9_default_zig_zag1d_4x4;
bands = vp9_coef_bands_4x4;
default_eob = 16;
// TODO: this isn't called (for intra4x4 modes), but will be left in
// since it could be used later
@ -394,19 +394,19 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
if (tx_type != DCT_DCT) {
switch (tx_type) {
case ADST_DCT:
scan = vp9_row_scan;
scan = vp9_row_scan_4x4;
break;
case DCT_ADST:
scan = vp9_col_scan;
scan = vp9_col_scan_4x4;
break;
default:
scan = vp9_default_zig_zag1d;
scan = vp9_default_zig_zag1d_4x4;
break;
}
} else {
scan = vp9_default_zig_zag1d;
scan = vp9_default_zig_zag1d_4x4;
}
}
break;
@ -601,7 +601,7 @@ static void check_reset_2nd_coeffs(MACROBLOCKD *xd,
return;
for (i = 0; i < bd->eob; i++) {
int coef = bd->dqcoeff[vp9_default_zig_zag1d[i]];
int coef = bd->dqcoeff[vp9_default_zig_zag1d_4x4[i]];
sum += (coef >= 0) ? coef : -coef;
if (sum >= SUM_2ND_COEFF_THRESH)
return;
@ -609,7 +609,7 @@ static void check_reset_2nd_coeffs(MACROBLOCKD *xd,
if (sum < SUM_2ND_COEFF_THRESH) {
for (i = 0; i < bd->eob; i++) {
int rc = vp9_default_zig_zag1d[i];
int rc = vp9_default_zig_zag1d_4x4[i];
bd->qcoeff[rc] = 0;
bd->dqcoeff[rc] = 0;
}

Просмотреть файл

@ -40,15 +40,15 @@ void vp9_ht_quantize_b_4x4(BLOCK *b, BLOCKD *d, TX_TYPE tx_type) {
switch (tx_type) {
case ADST_DCT :
pt_scan = vp9_row_scan;
pt_scan = vp9_row_scan_4x4;
break;
case DCT_ADST :
pt_scan = vp9_col_scan;
pt_scan = vp9_col_scan_4x4;
break;
default :
pt_scan = vp9_default_zig_zag1d;
pt_scan = vp9_default_zig_zag1d_4x4;
break;
}
@ -106,7 +106,7 @@ void vp9_regular_quantize_b_4x4(BLOCK *b, BLOCKD *d) {
eob = -1;
for (i = 0; i < b->eob_max_offset; i++) {
rc = vp9_default_zig_zag1d[i];
rc = vp9_default_zig_zag1d_4x4[i];
z = coeff_ptr[rc];
zbin = zbin_ptr[rc] + *zbin_boost_ptr + zbin_oq_value;
@ -192,7 +192,7 @@ void vp9_regular_quantize_b_2x2(BLOCK *b, BLOCKD *d) {
eob = -1;
for (i = 0; i < b->eob_max_offset_8x8; i++) {
rc = vp9_default_zig_zag1d[i];
rc = vp9_default_zig_zag1d_4x4[i];
z = coeff_ptr[rc];
zbin_boost_ptr = &b->zrun_zbin_boost[zbin_zrun_index];
@ -606,7 +606,7 @@ void vp9_init_quantizer(VP9_COMP *cpi) {
// all the 4x4 ac values =;
for (i = 1; i < 16; i++) {
int rc = vp9_default_zig_zag1d[i];
int rc = vp9_default_zig_zag1d_4x4[i];
quant_val = vp9_ac_yquant(Q);
invert_quant(cpi->Y1quant[Q] + rc,

Просмотреть файл

@ -526,15 +526,15 @@ static int cost_coeffs_2x2(MACROBLOCK *mb,
assert(eob <= 4);
for (; c < eob; c++) {
int v = qcoeff_ptr[vp9_default_zig_zag1d[c]];
int v = qcoeff_ptr[vp9_default_zig_zag1d_4x4[c]];
int t = vp9_dct_value_tokens_ptr[v].Token;
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands[c]][pt][t];
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands_4x4[c]][pt][t];
cost += vp9_dct_value_cost_ptr[v];
pt = vp9_prev_token_class[t];
}
if (c < 4)
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands[c]]
cost += mb->token_costs[TX_8X8][type][vp9_coef_bands_4x4[c]]
[pt] [DCT_EOB_TOKEN];
// is eob first coefficient;
pt = (c > !type);
@ -555,8 +555,8 @@ static int cost_coeffs(MACROBLOCK *mb, BLOCKD *b, PLANE_TYPE type,
MB_MODE_INFO *mbmi = &mb->e_mbd.mode_info_context->mbmi;
TX_TYPE tx_type = DCT_DCT;
int segment_id = mbmi->segment_id;
scan = vp9_default_zig_zag1d;
band = vp9_coef_bands;
scan = vp9_default_zig_zag1d_4x4;
band = vp9_coef_bands_4x4;
default_eob = 16;
switch (tx_size) {
@ -566,15 +566,15 @@ static int cost_coeffs(MACROBLOCK *mb, BLOCKD *b, PLANE_TYPE type,
if (tx_type != DCT_DCT) {
switch (tx_type) {
case ADST_DCT:
scan = vp9_row_scan;
scan = vp9_row_scan_4x4;
break;
case DCT_ADST:
scan = vp9_col_scan;
scan = vp9_col_scan_4x4;
break;
default:
scan = vp9_default_zig_zag1d;
scan = vp9_default_zig_zag1d_4x4;
break;
}
}

Просмотреть файл

@ -134,15 +134,15 @@ static void tokenize_b(VP9_COMP *cpi,
default:
case TX_4X4:
seg_eob = 16;
bands = vp9_coef_bands;
scan = vp9_default_zig_zag1d;
bands = vp9_coef_bands_4x4;
scan = vp9_default_zig_zag1d_4x4;
if (tx_type != DCT_DCT) {
counts = cpi->hybrid_coef_counts_4x4;
probs = cpi->common.fc.hybrid_coef_probs_4x4;
if (tx_type == ADST_DCT) {
scan = vp9_row_scan;
scan = vp9_row_scan_4x4;
} else if (tx_type == DCT_ADST) {
scan = vp9_col_scan;
scan = vp9_col_scan_4x4;
}
} else {
counts = cpi->coef_counts_4x4;
@ -152,8 +152,8 @@ static void tokenize_b(VP9_COMP *cpi,
case TX_8X8:
if (type == PLANE_TYPE_Y2) {
seg_eob = 4;
bands = vp9_coef_bands;
scan = vp9_default_zig_zag1d;
bands = vp9_coef_bands_4x4;
scan = vp9_default_zig_zag1d_4x4;
} else {
#if CONFIG_CNVCONTEXT
a_ec = (a[0] + a[1]) != 0;
@ -729,7 +729,7 @@ static __inline void stuff_b(VP9_COMP *cpi,
switch (tx_size) {
default:
case TX_4X4:
bands = vp9_coef_bands;
bands = vp9_coef_bands_4x4;
if (tx_type != DCT_DCT) {
counts = cpi->hybrid_coef_counts_4x4;
probs = cpi->common.fc.hybrid_coef_probs_4x4;