Index: source/libvpx/vp9/encoder/vp9_rdopt.c |
=================================================================== |
--- source/libvpx/vp9/encoder/vp9_rdopt.c (revision 271012) |
+++ source/libvpx/vp9/encoder/vp9_rdopt.c (working copy) |
@@ -745,7 +745,8 @@ |
int use_fast_coef_casting) { |
MACROBLOCKD *const xd = &x->e_mbd; |
const struct macroblockd_plane *const pd = &xd->plane[plane]; |
- struct rdcost_block_args args = { 0 }; |
+ struct rdcost_block_args args; |
+ vp9_zero(args); |
args.x = x; |
args.best_rd = ref_best_rd; |
args.use_fast_coef_costing = use_fast_coef_casting; |
@@ -806,7 +807,7 @@ |
{INT64_MAX, INT64_MAX}, |
{INT64_MAX, INT64_MAX}, |
{INT64_MAX, INT64_MAX}}; |
- int n, m; |
+ TX_SIZE n, m; |
int s0, s1; |
const TX_SIZE max_mode_tx_size = tx_mode_to_biggest_tx_size[cm->tx_mode]; |
int64_t best_rd = INT64_MAX; |
@@ -889,7 +890,7 @@ |
{INT64_MAX, INT64_MAX}, |
{INT64_MAX, INT64_MAX}, |
{INT64_MAX, INT64_MAX}}; |
- int n, m; |
+ TX_SIZE n, m; |
int s0, s1; |
double scale_rd[TX_SIZES] = {1.73, 1.44, 1.20, 1.00}; |
const TX_SIZE max_mode_tx_size = tx_mode_to_biggest_tx_size[cm->tx_mode]; |
@@ -961,7 +962,7 @@ |
vp9_subtract_plane(x, bs, 0); |
- if (cpi->sf.tx_size_search_method == USE_LARGESTALL) { |
+ if (cpi->sf.tx_size_search_method == USE_LARGESTALL || xd->lossless) { |
vpx_memset(txfm_cache, 0, TX_MODES * sizeof(int64_t)); |
choose_largest_txfm_size(cpi, x, rate, distortion, skip, sse, |
ref_best_rd, bs); |
@@ -999,7 +1000,7 @@ |
MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi; |
assert(bs == mbmi->sb_type); |
- if (cpi->sf.tx_size_search_method != USE_FULL_RD) { |
+ if (cpi->sf.tx_size_search_method != USE_FULL_RD || xd->lossless) { |
vpx_memset(txfm_cache, 0, TX_MODES * sizeof(int64_t)); |
choose_largest_txfm_size(cpi, x, rate, distortion, skip, sse, |
ref_best_rd, bs); |
@@ -2312,7 +2313,7 @@ |
MACROBLOCKD *xd = &x->e_mbd; |
const VP9_COMMON *cm = &cpi->common; |
MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; |
- struct buf_2d backup_yv12[MAX_MB_PLANE] = {{0}}; |
+ struct buf_2d backup_yv12[MAX_MB_PLANE] = {{0, 0}}; |
int bestsme = INT_MAX; |
int step_param; |
int sadpb = x->sadperbit16; |
@@ -2514,8 +2515,7 @@ |
bestsme = vp9_refining_search_8p_c(x, &tmp_mv, sadpb, |
search_range, |
&cpi->fn_ptr[bsize], |
- &ref_mv[id].as_mv, second_pred, |
- pw, ph); |
+ &ref_mv[id].as_mv, second_pred); |
if (bestsme < INT_MAX) |
bestsme = vp9_get_mvpred_av_var(x, &tmp_mv, &ref_mv[id].as_mv, |
second_pred, &cpi->fn_ptr[bsize], 1); |
@@ -3069,7 +3069,7 @@ |
int64_t best_pred_rd[REFERENCE_MODES]; |
int64_t best_filter_rd[SWITCHABLE_FILTER_CONTEXTS]; |
int64_t best_filter_diff[SWITCHABLE_FILTER_CONTEXTS]; |
- MB_MODE_INFO best_mbmode = { 0 }; |
+ MB_MODE_INFO best_mbmode; |
int mode_index, best_mode_index = -1; |
unsigned int ref_costs_single[MAX_REF_FRAMES], ref_costs_comp[MAX_REF_FRAMES]; |
vp9_prob comp_mode_p; |
@@ -3095,7 +3095,7 @@ |
const int intra_y_mode_mask = |
cpi->sf.intra_y_mode_mask[max_txsize_lookup[bsize]]; |
int disable_inter_mode_mask = cpi->sf.disable_inter_mode_mask[bsize]; |
- |
+ vp9_zero(best_mbmode); |
x->skip_encode = cpi->sf.skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; |
estimate_ref_frame_costs(cm, xd, segment_id, ref_costs_single, ref_costs_comp, |
@@ -3678,7 +3678,7 @@ |
int64_t best_pred_rd[REFERENCE_MODES]; |
int64_t best_filter_rd[SWITCHABLE_FILTER_CONTEXTS]; |
int64_t best_filter_diff[SWITCHABLE_FILTER_CONTEXTS]; |
- MB_MODE_INFO best_mbmode = { 0 }; |
+ MB_MODE_INFO best_mbmode; |
int ref_index, best_ref_index = 0; |
unsigned int ref_costs_single[MAX_REF_FRAMES], ref_costs_comp[MAX_REF_FRAMES]; |
vp9_prob comp_mode_p; |
@@ -3698,6 +3698,7 @@ |
x->skip_encode = cpi->sf.skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; |
vpx_memset(x->zcoeff_blk[TX_4X4], 0, 4); |
+ vp9_zero(best_mbmode); |
for (i = 0; i < 4; i++) { |
int j; |