Merge "Renaming txfm_size to tx_size."
This commit is contained in:
commit
e80bf802a9
@ -134,7 +134,7 @@ static INLINE int mi_height_log2(BLOCK_SIZE sb_type) {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
MB_PREDICTION_MODE mode, uv_mode;
|
MB_PREDICTION_MODE mode, uv_mode;
|
||||||
MV_REFERENCE_FRAME ref_frame[2];
|
MV_REFERENCE_FRAME ref_frame[2];
|
||||||
TX_SIZE txfm_size;
|
TX_SIZE tx_size;
|
||||||
int_mv mv[2]; // for each reference frame used
|
int_mv mv[2]; // for each reference frame used
|
||||||
int_mv ref_mvs[MAX_REF_FRAMES][MAX_MV_REF_CANDIDATES];
|
int_mv ref_mvs[MAX_REF_FRAMES][MAX_MV_REF_CANDIDATES];
|
||||||
int_mv best_mv, best_second_mv;
|
int_mv best_mv, best_second_mv;
|
||||||
@ -360,7 +360,7 @@ static void setup_block_dptrs(MACROBLOCKD *xd, int ss_x, int ss_y) {
|
|||||||
|
|
||||||
|
|
||||||
static INLINE TX_SIZE get_uv_tx_size(const MB_MODE_INFO *mbmi) {
|
static INLINE TX_SIZE get_uv_tx_size(const MB_MODE_INFO *mbmi) {
|
||||||
return MIN(mbmi->txfm_size, max_uv_txsize_lookup[mbmi->sb_type]);
|
return MIN(mbmi->tx_size, max_uv_txsize_lookup[mbmi->sb_type]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BLOCK_SIZE get_plane_block_size(BLOCK_SIZE bsize,
|
static BLOCK_SIZE get_plane_block_size(BLOCK_SIZE bsize,
|
||||||
@ -394,7 +394,7 @@ static INLINE void foreach_transformed_block_in_plane(
|
|||||||
// 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
|
// 4x4=0, 8x8=2, 16x16=4, 32x32=6, 64x64=8
|
||||||
// transform size varies per plane, look it up in a common way.
|
// transform size varies per plane, look it up in a common way.
|
||||||
const TX_SIZE tx_size = plane ? get_uv_tx_size(mbmi)
|
const TX_SIZE tx_size = plane ? get_uv_tx_size(mbmi)
|
||||||
: mbmi->txfm_size;
|
: mbmi->tx_size;
|
||||||
const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
|
const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
|
||||||
const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
|
const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
|
||||||
const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
|
const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
|
||||||
|
@ -59,7 +59,7 @@ void vp9_print_modes_and_motion_vectors(VP9_COMMON *cm, char *file) {
|
|||||||
print_mi_data(cm, mvs, "Modes:", offsetof(MB_MODE_INFO, mode));
|
print_mi_data(cm, mvs, "Modes:", offsetof(MB_MODE_INFO, mode));
|
||||||
print_mi_data(cm, mvs, "Skips:", offsetof(MB_MODE_INFO, skip_coeff));
|
print_mi_data(cm, mvs, "Skips:", offsetof(MB_MODE_INFO, skip_coeff));
|
||||||
print_mi_data(cm, mvs, "Ref frame:", offsetof(MB_MODE_INFO, ref_frame[0]));
|
print_mi_data(cm, mvs, "Ref frame:", offsetof(MB_MODE_INFO, ref_frame[0]));
|
||||||
print_mi_data(cm, mvs, "Transform:", offsetof(MB_MODE_INFO, txfm_size));
|
print_mi_data(cm, mvs, "Transform:", offsetof(MB_MODE_INFO, tx_size));
|
||||||
print_mi_data(cm, mvs, "UV Modes:", offsetof(MB_MODE_INFO, uv_mode));
|
print_mi_data(cm, mvs, "UV Modes:", offsetof(MB_MODE_INFO, uv_mode));
|
||||||
|
|
||||||
log_frame_info(cm, "Vectors ",mvs);
|
log_frame_info(cm, "Vectors ",mvs);
|
||||||
|
@ -274,7 +274,7 @@ static void filter_block_plane(VP9_COMMON *cm,
|
|||||||
const int skip_this_r = skip_this && !block_edge_above;
|
const int skip_this_r = skip_this && !block_edge_above;
|
||||||
const TX_SIZE tx_size = (plane->plane_type == PLANE_TYPE_UV)
|
const TX_SIZE tx_size = (plane->plane_type == PLANE_TYPE_UV)
|
||||||
? get_uv_tx_size(&mi[c].mbmi)
|
? get_uv_tx_size(&mi[c].mbmi)
|
||||||
: mi[c].mbmi.txfm_size;
|
: mi[c].mbmi.tx_size;
|
||||||
const int skip_border_4x4_c = ss_x && mi_col + c == cm->mi_cols - 1;
|
const int skip_border_4x4_c = ss_x && mi_col + c == cm->mi_cols - 1;
|
||||||
const int skip_border_4x4_r = ss_y && mi_row + r == cm->mi_rows - 1;
|
const int skip_border_4x4_r = ss_y && mi_row + r == cm->mi_rows - 1;
|
||||||
|
|
||||||
|
@ -369,11 +369,11 @@ unsigned char vp9_get_pred_context_tx_size(const MACROBLOCKD *xd) {
|
|||||||
|
|
||||||
if (above_in_image)
|
if (above_in_image)
|
||||||
above_context = above_mbmi->skip_coeff ? max_tx_size
|
above_context = above_mbmi->skip_coeff ? max_tx_size
|
||||||
: above_mbmi->txfm_size;
|
: above_mbmi->tx_size;
|
||||||
|
|
||||||
if (left_in_image)
|
if (left_in_image)
|
||||||
left_context = left_mbmi->skip_coeff ? max_tx_size
|
left_context = left_mbmi->skip_coeff ? max_tx_size
|
||||||
: left_mbmi->txfm_size;
|
: left_mbmi->tx_size;
|
||||||
|
|
||||||
if (!left_in_image)
|
if (!left_in_image)
|
||||||
left_context = above_context;
|
left_context = above_context;
|
||||||
|
@ -160,7 +160,7 @@ static void read_intra_frame_mode_info(VP9D_COMP *pbi, MODE_INFO *m,
|
|||||||
|
|
||||||
mbmi->segment_id = read_intra_segment_id(pbi, mi_row, mi_col, r);
|
mbmi->segment_id = read_intra_segment_id(pbi, mi_row, mi_col, r);
|
||||||
mbmi->skip_coeff = read_skip_coeff(pbi, mbmi->segment_id, r);
|
mbmi->skip_coeff = read_skip_coeff(pbi, mbmi->segment_id, r);
|
||||||
mbmi->txfm_size = read_tx_size(pbi, cm->tx_mode, bsize, 1, r);
|
mbmi->tx_size = read_tx_size(pbi, cm->tx_mode, bsize, 1, r);
|
||||||
mbmi->ref_frame[0] = INTRA_FRAME;
|
mbmi->ref_frame[0] = INTRA_FRAME;
|
||||||
mbmi->ref_frame[1] = NONE;
|
mbmi->ref_frame[1] = NONE;
|
||||||
|
|
||||||
@ -591,8 +591,8 @@ static void read_inter_frame_mode_info(VP9D_COMP *pbi, MODE_INFO *mi,
|
|||||||
mbmi->segment_id = read_inter_segment_id(pbi, mi_row, mi_col, r);
|
mbmi->segment_id = read_inter_segment_id(pbi, mi_row, mi_col, r);
|
||||||
mbmi->skip_coeff = read_skip_coeff(pbi, mbmi->segment_id, r);
|
mbmi->skip_coeff = read_skip_coeff(pbi, mbmi->segment_id, r);
|
||||||
inter_block = read_is_inter_block(pbi, mbmi->segment_id, r);
|
inter_block = read_is_inter_block(pbi, mbmi->segment_id, r);
|
||||||
mbmi->txfm_size = read_tx_size(pbi, cm->tx_mode, mbmi->sb_type,
|
mbmi->tx_size = read_tx_size(pbi, cm->tx_mode, mbmi->sb_type,
|
||||||
!mbmi->skip_coeff || !inter_block, r);
|
!mbmi->skip_coeff || !inter_block, r);
|
||||||
|
|
||||||
if (inter_block)
|
if (inter_block)
|
||||||
read_inter_block_mode_info(pbi, mi, mi_row, mi_col, r);
|
read_inter_block_mode_info(pbi, mi, mi_row, mi_col, r);
|
||||||
|
@ -437,7 +437,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m, vp9_writer *bc) {
|
|||||||
if (bsize >= BLOCK_8X8 && pc->tx_mode == TX_MODE_SELECT &&
|
if (bsize >= BLOCK_8X8 && pc->tx_mode == TX_MODE_SELECT &&
|
||||||
!(rf != INTRA_FRAME &&
|
!(rf != INTRA_FRAME &&
|
||||||
(skip_coeff || vp9_segfeature_active(seg, segment_id, SEG_LVL_SKIP)))) {
|
(skip_coeff || vp9_segfeature_active(seg, segment_id, SEG_LVL_SKIP)))) {
|
||||||
write_selected_tx_size(cpi, mi->txfm_size, bsize, bc);
|
write_selected_tx_size(cpi, mi->tx_size, bsize, bc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rf == INTRA_FRAME) {
|
if (rf == INTRA_FRAME) {
|
||||||
@ -546,7 +546,7 @@ static void write_mb_modes_kf(const VP9_COMP *cpi, MODE_INFO *m,
|
|||||||
write_skip_coeff(cpi, segment_id, m, bc);
|
write_skip_coeff(cpi, segment_id, m, bc);
|
||||||
|
|
||||||
if (m->mbmi.sb_type >= BLOCK_8X8 && c->tx_mode == TX_MODE_SELECT)
|
if (m->mbmi.sb_type >= BLOCK_8X8 && c->tx_mode == TX_MODE_SELECT)
|
||||||
write_selected_tx_size(cpi, m->mbmi.txfm_size, m->mbmi.sb_type, bc);
|
write_selected_tx_size(cpi, m->mbmi.tx_size, m->mbmi.sb_type, bc);
|
||||||
|
|
||||||
if (m->mbmi.sb_type >= BLOCK_8X8) {
|
if (m->mbmi.sb_type >= BLOCK_8X8) {
|
||||||
const MB_PREDICTION_MODE A = above_block_mode(m, 0, mis);
|
const MB_PREDICTION_MODE A = above_block_mode(m, 0, mis);
|
||||||
|
@ -2209,12 +2209,12 @@ static int get_skip_flag(MODE_INFO *mi, int mis, int ymbs, int xmbs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void set_txfm_flag(MODE_INFO *mi, int mis, int ymbs, int xmbs,
|
static void set_txfm_flag(MODE_INFO *mi, int mis, int ymbs, int xmbs,
|
||||||
TX_SIZE txfm_size) {
|
TX_SIZE tx_size) {
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
for (y = 0; y < ymbs; y++) {
|
for (y = 0; y < ymbs; y++) {
|
||||||
for (x = 0; x < xmbs; x++)
|
for (x = 0; x < xmbs; x++)
|
||||||
mi[y * mis + x].mbmi.txfm_size = txfm_size;
|
mi[y * mis + x].mbmi.tx_size = tx_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2227,7 +2227,7 @@ static void reset_skip_txfm_size_b(VP9_COMP *cpi, MODE_INFO *mi, int mis,
|
|||||||
if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols)
|
if (mi_row >= cm->mi_rows || mi_col >= cm->mi_cols)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (mbmi->txfm_size > max_tx_size) {
|
if (mbmi->tx_size > max_tx_size) {
|
||||||
MACROBLOCK * const x = &cpi->mb;
|
MACROBLOCK * const x = &cpi->mb;
|
||||||
MACROBLOCKD * const xd = &x->e_mbd;
|
MACROBLOCKD * const xd = &x->e_mbd;
|
||||||
const int ymbs = MIN(bh, cm->mi_rows - mi_row);
|
const int ymbs = MIN(bh, cm->mi_rows - mi_row);
|
||||||
@ -2648,7 +2648,7 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
|
|||||||
(mbmi->skip_coeff ||
|
(mbmi->skip_coeff ||
|
||||||
vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP)))) {
|
vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP)))) {
|
||||||
const uint8_t context = vp9_get_pred_context_tx_size(xd);
|
const uint8_t context = vp9_get_pred_context_tx_size(xd);
|
||||||
update_tx_counts(bsize, context, mbmi->txfm_size, &cm->counts.tx);
|
update_tx_counts(bsize, context, mbmi->tx_size, &cm->counts.tx);
|
||||||
} else {
|
} else {
|
||||||
int x, y;
|
int x, y;
|
||||||
TX_SIZE sz = (cm->tx_mode == TX_MODE_SELECT) ? TX_32X32 : cm->tx_mode;
|
TX_SIZE sz = (cm->tx_mode == TX_MODE_SELECT) ? TX_32X32 : cm->tx_mode;
|
||||||
@ -2661,18 +2661,15 @@ static void encode_superblock(VP9_COMP *cpi, TOKENEXTRA **t, int output_enabled,
|
|||||||
if (sz == TX_8X8 && bsize < BLOCK_8X8)
|
if (sz == TX_8X8 && bsize < BLOCK_8X8)
|
||||||
sz = TX_4X4;
|
sz = TX_4X4;
|
||||||
} else if (bsize >= BLOCK_8X8) {
|
} else if (bsize >= BLOCK_8X8) {
|
||||||
sz = mbmi->txfm_size;
|
sz = mbmi->tx_size;
|
||||||
} else {
|
} else {
|
||||||
sz = TX_4X4;
|
sz = TX_4X4;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (y = 0; y < mi_height; y++) {
|
for (y = 0; y < mi_height; y++)
|
||||||
for (x = 0; x < mi_width; x++) {
|
for (x = 0; x < mi_width; x++)
|
||||||
if (mi_col + x < cm->mi_cols && mi_row + y < cm->mi_rows) {
|
if (mi_col + x < cm->mi_cols && mi_row + y < cm->mi_rows)
|
||||||
mi[mis * y + x].mbmi.txfm_size = sz;
|
mi[mis * y + x].mbmi.tx_size = sz;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ int vp9_encode_intra(MACROBLOCK *x, int use_16x16_pred) {
|
|||||||
x->skip_encode = 0;
|
x->skip_encode = 0;
|
||||||
mbmi->mode = DC_PRED;
|
mbmi->mode = DC_PRED;
|
||||||
mbmi->ref_frame[0] = INTRA_FRAME;
|
mbmi->ref_frame[0] = INTRA_FRAME;
|
||||||
mbmi->txfm_size = use_16x16_pred ? (mbmi->sb_type >= BLOCK_16X16 ? TX_16X16
|
mbmi->tx_size = use_16x16_pred ? (mbmi->sb_type >= BLOCK_16X16 ? TX_16X16
|
||||||
: TX_8X8)
|
: TX_8X8)
|
||||||
: TX_4X4;
|
: TX_4X4;
|
||||||
vp9_encode_intra_block_y(x, mbmi->sb_type);
|
vp9_encode_intra_block_y(x, mbmi->sb_type);
|
||||||
return vp9_get_mb_ss(x->plane[0].src_diff);
|
return vp9_get_mb_ss(x->plane[0].src_diff);
|
||||||
|
@ -386,7 +386,7 @@ static void optimize_init_b(int plane, BLOCK_SIZE bsize,
|
|||||||
const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
|
const int num_4x4_w = num_4x4_blocks_wide_lookup[plane_bsize];
|
||||||
const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
|
const int num_4x4_h = num_4x4_blocks_high_lookup[plane_bsize];
|
||||||
const MB_MODE_INFO *mbmi = &xd->mode_info_context->mbmi;
|
const MB_MODE_INFO *mbmi = &xd->mode_info_context->mbmi;
|
||||||
const TX_SIZE tx_size = plane ? get_uv_tx_size(mbmi) : mbmi->txfm_size;
|
const TX_SIZE tx_size = plane ? get_uv_tx_size(mbmi) : mbmi->tx_size;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
switch (tx_size) {
|
switch (tx_size) {
|
||||||
|
@ -661,7 +661,7 @@ void vp9_first_pass(VP9_COMP *cpi) {
|
|||||||
mv.as_mv.col <<= 3;
|
mv.as_mv.col <<= 3;
|
||||||
this_error = motion_error;
|
this_error = motion_error;
|
||||||
vp9_set_mbmode_and_mvs(x, NEWMV, &mv);
|
vp9_set_mbmode_and_mvs(x, NEWMV, &mv);
|
||||||
xd->mode_info_context->mbmi.txfm_size = TX_4X4;
|
xd->mode_info_context->mbmi.tx_size = TX_4X4;
|
||||||
xd->mode_info_context->mbmi.ref_frame[0] = LAST_FRAME;
|
xd->mode_info_context->mbmi.ref_frame[0] = LAST_FRAME;
|
||||||
xd->mode_info_context->mbmi.ref_frame[1] = NONE;
|
xd->mode_info_context->mbmi.ref_frame[1] = NONE;
|
||||||
vp9_build_inter_predictors_sby(xd, mb_row << 1,
|
vp9_build_inter_predictors_sby(xd, mb_row << 1,
|
||||||
|
@ -489,7 +489,7 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
int c, cost;
|
int c, cost;
|
||||||
|
|
||||||
// Check for consistency of tx_size with mode info
|
// Check for consistency of tx_size with mode info
|
||||||
assert(type == PLANE_TYPE_Y_WITH_DC ? mbmi->txfm_size == tx_size
|
assert(type == PLANE_TYPE_Y_WITH_DC ? mbmi->tx_size == tx_size
|
||||||
: get_uv_tx_size(mbmi) == tx_size);
|
: get_uv_tx_size(mbmi) == tx_size);
|
||||||
|
|
||||||
if (eob == 0) {
|
if (eob == 0) {
|
||||||
@ -634,7 +634,7 @@ static void txfm_rd_in_plane(MACROBLOCK *x,
|
|||||||
num_4x4_blocks_wide, num_4x4_blocks_high,
|
num_4x4_blocks_wide, num_4x4_blocks_high,
|
||||||
0, 0, 0, ref_best_rd, 0 };
|
0, 0, 0, ref_best_rd, 0 };
|
||||||
if (plane == 0)
|
if (plane == 0)
|
||||||
xd->mode_info_context->mbmi.txfm_size = tx_size;
|
xd->mode_info_context->mbmi.tx_size = tx_size;
|
||||||
|
|
||||||
switch (tx_size) {
|
switch (tx_size) {
|
||||||
case TX_4X4:
|
case TX_4X4:
|
||||||
@ -692,20 +692,20 @@ static void choose_largest_txfm_size(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (max_txfm_size == TX_32X32 &&
|
if (max_txfm_size == TX_32X32 &&
|
||||||
(cm->tx_mode == ALLOW_32X32 ||
|
(cm->tx_mode == ALLOW_32X32 ||
|
||||||
cm->tx_mode == TX_MODE_SELECT)) {
|
cm->tx_mode == TX_MODE_SELECT)) {
|
||||||
mbmi->txfm_size = TX_32X32;
|
mbmi->tx_size = TX_32X32;
|
||||||
} else if (max_txfm_size >= TX_16X16 &&
|
} else if (max_txfm_size >= TX_16X16 &&
|
||||||
(cm->tx_mode == ALLOW_16X16 ||
|
(cm->tx_mode == ALLOW_16X16 ||
|
||||||
cm->tx_mode == ALLOW_32X32 ||
|
cm->tx_mode == ALLOW_32X32 ||
|
||||||
cm->tx_mode == TX_MODE_SELECT)) {
|
cm->tx_mode == TX_MODE_SELECT)) {
|
||||||
mbmi->txfm_size = TX_16X16;
|
mbmi->tx_size = TX_16X16;
|
||||||
} else if (cm->tx_mode != ONLY_4X4) {
|
} else if (cm->tx_mode != ONLY_4X4) {
|
||||||
mbmi->txfm_size = TX_8X8;
|
mbmi->tx_size = TX_8X8;
|
||||||
} else {
|
} else {
|
||||||
mbmi->txfm_size = TX_4X4;
|
mbmi->tx_size = TX_4X4;
|
||||||
}
|
}
|
||||||
txfm_rd_in_plane(x, rate, distortion, skip,
|
txfm_rd_in_plane(x, rate, distortion, skip,
|
||||||
&sse[mbmi->txfm_size], ref_best_rd, 0, bs,
|
&sse[mbmi->tx_size], ref_best_rd, 0, bs,
|
||||||
mbmi->txfm_size);
|
mbmi->tx_size);
|
||||||
cpi->txfm_stepdown_count[0]++;
|
cpi->txfm_stepdown_count[0]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -760,26 +760,26 @@ static void choose_txfm_size_from_rd(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
(cm->tx_mode == TX_MODE_SELECT &&
|
(cm->tx_mode == TX_MODE_SELECT &&
|
||||||
rd[TX_32X32][1] < rd[TX_16X16][1] && rd[TX_32X32][1] < rd[TX_8X8][1] &&
|
rd[TX_32X32][1] < rd[TX_16X16][1] && rd[TX_32X32][1] < rd[TX_8X8][1] &&
|
||||||
rd[TX_32X32][1] < rd[TX_4X4][1]))) {
|
rd[TX_32X32][1] < rd[TX_4X4][1]))) {
|
||||||
mbmi->txfm_size = TX_32X32;
|
mbmi->tx_size = TX_32X32;
|
||||||
} else if (max_tx_size >= TX_16X16 &&
|
} else if (max_tx_size >= TX_16X16 &&
|
||||||
(cm->tx_mode == ALLOW_16X16 ||
|
(cm->tx_mode == ALLOW_16X16 ||
|
||||||
cm->tx_mode == ALLOW_32X32 ||
|
cm->tx_mode == ALLOW_32X32 ||
|
||||||
(cm->tx_mode == TX_MODE_SELECT &&
|
(cm->tx_mode == TX_MODE_SELECT &&
|
||||||
rd[TX_16X16][1] < rd[TX_8X8][1] &&
|
rd[TX_16X16][1] < rd[TX_8X8][1] &&
|
||||||
rd[TX_16X16][1] < rd[TX_4X4][1]))) {
|
rd[TX_16X16][1] < rd[TX_4X4][1]))) {
|
||||||
mbmi->txfm_size = TX_16X16;
|
mbmi->tx_size = TX_16X16;
|
||||||
} else if (cm->tx_mode == ALLOW_8X8 ||
|
} else if (cm->tx_mode == ALLOW_8X8 ||
|
||||||
cm->tx_mode == ALLOW_16X16 ||
|
cm->tx_mode == ALLOW_16X16 ||
|
||||||
cm->tx_mode == ALLOW_32X32 ||
|
cm->tx_mode == ALLOW_32X32 ||
|
||||||
(cm->tx_mode == TX_MODE_SELECT && rd[TX_8X8][1] < rd[TX_4X4][1])) {
|
(cm->tx_mode == TX_MODE_SELECT && rd[TX_8X8][1] < rd[TX_4X4][1])) {
|
||||||
mbmi->txfm_size = TX_8X8;
|
mbmi->tx_size = TX_8X8;
|
||||||
} else {
|
} else {
|
||||||
mbmi->txfm_size = TX_4X4;
|
mbmi->tx_size = TX_4X4;
|
||||||
}
|
}
|
||||||
|
|
||||||
*distortion = d[mbmi->txfm_size];
|
*distortion = d[mbmi->tx_size];
|
||||||
*rate = r[mbmi->txfm_size][cm->tx_mode == TX_MODE_SELECT];
|
*rate = r[mbmi->tx_size][cm->tx_mode == TX_MODE_SELECT];
|
||||||
*skip = s[mbmi->txfm_size];
|
*skip = s[mbmi->tx_size];
|
||||||
|
|
||||||
tx_cache[ONLY_4X4] = rd[TX_4X4][0];
|
tx_cache[ONLY_4X4] = rd[TX_4X4][0];
|
||||||
tx_cache[ALLOW_8X8] = rd[TX_8X8][0];
|
tx_cache[ALLOW_8X8] = rd[TX_8X8][0];
|
||||||
@ -867,28 +867,28 @@ static void choose_txfm_size_from_modelrd(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
rd[TX_32X32][1] <= rd[TX_16X16][1] &&
|
rd[TX_32X32][1] <= rd[TX_16X16][1] &&
|
||||||
rd[TX_32X32][1] <= rd[TX_8X8][1] &&
|
rd[TX_32X32][1] <= rd[TX_8X8][1] &&
|
||||||
rd[TX_32X32][1] <= rd[TX_4X4][1]))) {
|
rd[TX_32X32][1] <= rd[TX_4X4][1]))) {
|
||||||
mbmi->txfm_size = TX_32X32;
|
mbmi->tx_size = TX_32X32;
|
||||||
} else if (max_txfm_size >= TX_16X16 &&
|
} else if (max_txfm_size >= TX_16X16 &&
|
||||||
(cm->tx_mode == ALLOW_16X16 ||
|
(cm->tx_mode == ALLOW_16X16 ||
|
||||||
cm->tx_mode == ALLOW_32X32 ||
|
cm->tx_mode == ALLOW_32X32 ||
|
||||||
(cm->tx_mode == TX_MODE_SELECT &&
|
(cm->tx_mode == TX_MODE_SELECT &&
|
||||||
rd[TX_16X16][1] <= rd[TX_8X8][1] &&
|
rd[TX_16X16][1] <= rd[TX_8X8][1] &&
|
||||||
rd[TX_16X16][1] <= rd[TX_4X4][1]))) {
|
rd[TX_16X16][1] <= rd[TX_4X4][1]))) {
|
||||||
mbmi->txfm_size = TX_16X16;
|
mbmi->tx_size = TX_16X16;
|
||||||
} else if (cm->tx_mode == ALLOW_8X8 ||
|
} else if (cm->tx_mode == ALLOW_8X8 ||
|
||||||
cm->tx_mode == ALLOW_16X16 ||
|
cm->tx_mode == ALLOW_16X16 ||
|
||||||
cm->tx_mode == ALLOW_32X32 ||
|
cm->tx_mode == ALLOW_32X32 ||
|
||||||
(cm->tx_mode == TX_MODE_SELECT &&
|
(cm->tx_mode == TX_MODE_SELECT &&
|
||||||
rd[TX_8X8][1] <= rd[TX_4X4][1])) {
|
rd[TX_8X8][1] <= rd[TX_4X4][1])) {
|
||||||
mbmi->txfm_size = TX_8X8;
|
mbmi->tx_size = TX_8X8;
|
||||||
} else {
|
} else {
|
||||||
mbmi->txfm_size = TX_4X4;
|
mbmi->tx_size = TX_4X4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actually encode using the chosen mode if a model was used, but do not
|
// Actually encode using the chosen mode if a model was used, but do not
|
||||||
// update the r, d costs
|
// update the r, d costs
|
||||||
txfm_rd_in_plane(x, rate, distortion, skip, &sse[mbmi->txfm_size],
|
txfm_rd_in_plane(x, rate, distortion, skip, &sse[mbmi->tx_size],
|
||||||
ref_best_rd, 0, bs, mbmi->txfm_size);
|
ref_best_rd, 0, bs, mbmi->tx_size);
|
||||||
|
|
||||||
if (max_txfm_size == TX_32X32 &&
|
if (max_txfm_size == TX_32X32 &&
|
||||||
rd[TX_32X32][1] <= rd[TX_16X16][1] &&
|
rd[TX_32X32][1] <= rd[TX_16X16][1] &&
|
||||||
@ -927,7 +927,7 @@ static void super_block_yrd(VP9_COMP *cpi,
|
|||||||
choose_largest_txfm_size(cpi, x, rate, distortion, skip, sse,
|
choose_largest_txfm_size(cpi, x, rate, distortion, skip, sse,
|
||||||
ref_best_rd, bs);
|
ref_best_rd, bs);
|
||||||
if (psse)
|
if (psse)
|
||||||
*psse = sse[mbmi->txfm_size];
|
*psse = sse[mbmi->tx_size];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -963,7 +963,7 @@ static void super_block_yrd(VP9_COMP *cpi,
|
|||||||
skip, txfm_cache, bs);
|
skip, txfm_cache, bs);
|
||||||
}
|
}
|
||||||
if (psse)
|
if (psse)
|
||||||
*psse = sse[mbmi->txfm_size];
|
*psse = sse[mbmi->tx_size];
|
||||||
}
|
}
|
||||||
|
|
||||||
static int conditional_skipintra(MB_PREDICTION_MODE mode,
|
static int conditional_skipintra(MB_PREDICTION_MODE mode,
|
||||||
@ -1021,7 +1021,7 @@ static int64_t rd_pick_intra4x4block(VP9_COMP *cpi, MACROBLOCK *x, int ib,
|
|||||||
|
|
||||||
vpx_memcpy(ta, a, sizeof(ta));
|
vpx_memcpy(ta, a, sizeof(ta));
|
||||||
vpx_memcpy(tl, l, sizeof(tl));
|
vpx_memcpy(tl, l, sizeof(tl));
|
||||||
xd->mode_info_context->mbmi.txfm_size = TX_4X4;
|
xd->mode_info_context->mbmi.tx_size = TX_4X4;
|
||||||
|
|
||||||
for (mode = DC_PRED; mode <= TM_PRED; ++mode) {
|
for (mode = DC_PRED; mode <= TM_PRED; ++mode) {
|
||||||
int64_t this_rd;
|
int64_t this_rd;
|
||||||
@ -1239,7 +1239,7 @@ static int64_t rd_pick_intra_sby_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (this_rd < best_rd) {
|
if (this_rd < best_rd) {
|
||||||
mode_selected = mode;
|
mode_selected = mode;
|
||||||
best_rd = this_rd;
|
best_rd = this_rd;
|
||||||
best_tx = mic->mbmi.txfm_size;
|
best_tx = mic->mbmi.tx_size;
|
||||||
*rate = this_rate;
|
*rate = this_rate;
|
||||||
*rate_tokenonly = this_rate_tokenonly;
|
*rate_tokenonly = this_rate_tokenonly;
|
||||||
*distortion = this_distortion;
|
*distortion = this_distortion;
|
||||||
@ -1258,7 +1258,7 @@ static int64_t rd_pick_intra_sby_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
}
|
}
|
||||||
|
|
||||||
mic->mbmi.mode = mode_selected;
|
mic->mbmi.mode = mode_selected;
|
||||||
mic->mbmi.txfm_size = best_tx;
|
mic->mbmi.tx_size = best_tx;
|
||||||
|
|
||||||
return best_rd;
|
return best_rd;
|
||||||
}
|
}
|
||||||
@ -3351,7 +3351,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// I4X4_PRED is only considered for block sizes less than 8x8.
|
// I4X4_PRED is only considered for block sizes less than 8x8.
|
||||||
mbmi->txfm_size = TX_4X4;
|
mbmi->tx_size = TX_4X4;
|
||||||
if (rd_pick_intra_sub_8x8_y_mode(cpi, x, &rate, &rate_y,
|
if (rd_pick_intra_sub_8x8_y_mode(cpi, x, &rate, &rate_y,
|
||||||
&distortion_y, best_rd) >= best_rd)
|
&distortion_y, best_rd) >= best_rd)
|
||||||
continue;
|
continue;
|
||||||
@ -3402,7 +3402,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (rate_y == INT_MAX)
|
if (rate_y == INT_MAX)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
uv_tx = MIN(mbmi->txfm_size, max_uv_txsize_lookup[bsize]);
|
uv_tx = MIN(mbmi->tx_size, max_uv_txsize_lookup[bsize]);
|
||||||
if (rate_uv_intra[uv_tx] == INT_MAX) {
|
if (rate_uv_intra[uv_tx] == INT_MAX) {
|
||||||
choose_intra_uv_mode(cpi, bsize, &rate_uv_intra[uv_tx],
|
choose_intra_uv_mode(cpi, bsize, &rate_uv_intra[uv_tx],
|
||||||
&rate_uv_tokenonly[uv_tx],
|
&rate_uv_tokenonly[uv_tx],
|
||||||
@ -3452,7 +3452,7 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
cpi->rd_threshes[bsize][THR_NEWA];
|
cpi->rd_threshes[bsize][THR_NEWA];
|
||||||
this_rd_thresh = (ref_frame == GOLDEN_FRAME) ?
|
this_rd_thresh = (ref_frame == GOLDEN_FRAME) ?
|
||||||
cpi->rd_threshes[bsize][THR_NEWG] : this_rd_thresh;
|
cpi->rd_threshes[bsize][THR_NEWG] : this_rd_thresh;
|
||||||
xd->mode_info_context->mbmi.txfm_size = TX_4X4;
|
xd->mode_info_context->mbmi.tx_size = TX_4X4;
|
||||||
|
|
||||||
cpi->rd_filter_cache[SWITCHABLE_FILTERS] = INT64_MAX;
|
cpi->rd_filter_cache[SWITCHABLE_FILTERS] = INT64_MAX;
|
||||||
if (cm->mcomp_filter_type != BILINEAR) {
|
if (cm->mcomp_filter_type != BILINEAR) {
|
||||||
|
@ -215,7 +215,7 @@ void vp9_tokenize_sb(VP9_COMP *cpi, TOKENEXTRA **t, int dry_run,
|
|||||||
const int mb_skip_context = vp9_get_pred_context_mbskip(xd);
|
const int mb_skip_context = vp9_get_pred_context_mbskip(xd);
|
||||||
const int skip_inc = !vp9_segfeature_active(&cm->seg, mbmi->segment_id,
|
const int skip_inc = !vp9_segfeature_active(&cm->seg, mbmi->segment_id,
|
||||||
SEG_LVL_SKIP);
|
SEG_LVL_SKIP);
|
||||||
struct tokenize_b_args arg = {cpi, xd, t, mbmi->txfm_size};
|
struct tokenize_b_args arg = {cpi, xd, t, mbmi->tx_size};
|
||||||
|
|
||||||
mbmi->skip_coeff = vp9_sb_is_skippable(xd, bsize);
|
mbmi->skip_coeff = vp9_sb_is_skippable(xd, bsize);
|
||||||
if (mbmi->skip_coeff) {
|
if (mbmi->skip_coeff) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user