| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 if (rv) { | 185 if (rv) { |
| 186 cpi->find_fractional_mv_step(x, &tmp_mv->as_mv, &ref_mv, | 186 cpi->find_fractional_mv_step(x, &tmp_mv->as_mv, &ref_mv, |
| 187 cpi->common.allow_high_precision_mv, | 187 cpi->common.allow_high_precision_mv, |
| 188 x->errorperbit, | 188 x->errorperbit, |
| 189 &cpi->fn_ptr[bsize], | 189 &cpi->fn_ptr[bsize], |
| 190 cpi->sf.mv.subpel_force_stop, | 190 cpi->sf.mv.subpel_force_stop, |
| 191 cpi->sf.mv.subpel_iters_per_step, | 191 cpi->sf.mv.subpel_iters_per_step, |
| 192 cond_cost_list(cpi, cost_list), | 192 cond_cost_list(cpi, cost_list), |
| 193 x->nmvjointcost, x->mvcost, | 193 x->nmvjointcost, x->mvcost, |
| 194 &dis, &x->pred_sse[ref], NULL, 0, 0); | 194 &dis, &x->pred_sse[ref], NULL, 0, 0); |
| 195 x->pred_mv[ref] = tmp_mv->as_mv; | |
| 196 } | 195 } |
| 197 | 196 |
| 198 if (scaled_ref_frame) { | 197 if (scaled_ref_frame) { |
| 199 int i; | 198 int i; |
| 200 for (i = 0; i < MAX_MB_PLANE; i++) | 199 for (i = 0; i < MAX_MB_PLANE; i++) |
| 201 xd->plane[i].pre[0] = backup_yv12[i]; | 200 xd->plane[i].pre[0] = backup_yv12[i]; |
| 202 } | 201 } |
| 203 return rv; | 202 return rv; |
| 204 } | 203 } |
| 205 | 204 |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 mbmi->tx_size = MIN(max_txsize_lookup[bsize], | 682 mbmi->tx_size = MIN(max_txsize_lookup[bsize], |
| 684 tx_mode_to_biggest_tx_size[cm->tx_mode]); | 683 tx_mode_to_biggest_tx_size[cm->tx_mode]); |
| 685 mbmi->interp_filter = cm->interp_filter == SWITCHABLE ? | 684 mbmi->interp_filter = cm->interp_filter == SWITCHABLE ? |
| 686 EIGHTTAP : cm->interp_filter; | 685 EIGHTTAP : cm->interp_filter; |
| 687 | 686 |
| 688 #if CONFIG_VP9_TEMPORAL_DENOISING | 687 #if CONFIG_VP9_TEMPORAL_DENOISING |
| 689 vp9_denoiser_reset_frame_stats(ctx); | 688 vp9_denoiser_reset_frame_stats(ctx); |
| 690 #endif | 689 #endif |
| 691 | 690 |
| 692 for (ref_frame = LAST_FRAME; ref_frame <= GOLDEN_FRAME; ++ref_frame) { | 691 for (ref_frame = LAST_FRAME; ref_frame <= GOLDEN_FRAME; ++ref_frame) { |
| 692 const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_buffer(cpi, ref_frame); |
| 693 |
| 693 x->pred_mv_sad[ref_frame] = INT_MAX; | 694 x->pred_mv_sad[ref_frame] = INT_MAX; |
| 694 frame_mv[NEWMV][ref_frame].as_int = INVALID_MV; | 695 frame_mv[NEWMV][ref_frame].as_int = INVALID_MV; |
| 695 frame_mv[ZEROMV][ref_frame].as_int = 0; | 696 frame_mv[ZEROMV][ref_frame].as_int = 0; |
| 696 | 697 |
| 697 if (cpi->ref_frame_flags & flag_list[ref_frame]) { | 698 if ((cpi->ref_frame_flags & flag_list[ref_frame]) && (yv12 != NULL)) { |
| 698 const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_buffer(cpi, ref_frame); | |
| 699 int_mv *const candidates = mbmi->ref_mvs[ref_frame]; | 699 int_mv *const candidates = mbmi->ref_mvs[ref_frame]; |
| 700 const struct scale_factors *const sf = &cm->frame_refs[ref_frame - 1].sf; | 700 const struct scale_factors *const sf = &cm->frame_refs[ref_frame - 1].sf; |
| 701 | 701 |
| 702 vp9_setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col, | 702 vp9_setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col, |
| 703 sf, sf); | 703 sf, sf); |
| 704 | 704 |
| 705 if (cm->use_prev_frame_mvs) | 705 if (cm->use_prev_frame_mvs) |
| 706 vp9_find_mv_refs(cm, xd, tile_info, xd->mi[0].src_mi, ref_frame, | 706 vp9_find_mv_refs(cm, xd, tile_info, xd->mi[0].src_mi, ref_frame, |
| 707 candidates, mi_row, mi_col, NULL, NULL); | 707 candidates, mi_row, mi_col, NULL, NULL); |
| 708 else | 708 else |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1070 b_mode_info bsi[MAX_REF_FRAMES][4]; | 1070 b_mode_info bsi[MAX_REF_FRAMES][4]; |
| 1071 int ref_frame_skip_mask = 0; | 1071 int ref_frame_skip_mask = 0; |
| 1072 const int num_4x4_blocks_wide = num_4x4_blocks_wide_lookup[bsize]; | 1072 const int num_4x4_blocks_wide = num_4x4_blocks_wide_lookup[bsize]; |
| 1073 const int num_4x4_blocks_high = num_4x4_blocks_high_lookup[bsize]; | 1073 const int num_4x4_blocks_high = num_4x4_blocks_high_lookup[bsize]; |
| 1074 int idx, idy; | 1074 int idx, idy; |
| 1075 | 1075 |
| 1076 x->skip_encode = sf->skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; | 1076 x->skip_encode = sf->skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; |
| 1077 ctx->pred_pixel_ready = 0; | 1077 ctx->pred_pixel_ready = 0; |
| 1078 | 1078 |
| 1079 for (ref_frame = LAST_FRAME; ref_frame <= GOLDEN_FRAME; ++ref_frame) { | 1079 for (ref_frame = LAST_FRAME; ref_frame <= GOLDEN_FRAME; ++ref_frame) { |
| 1080 const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_buffer(cpi, ref_frame); |
| 1080 int_mv dummy_mv[2]; | 1081 int_mv dummy_mv[2]; |
| 1081 x->pred_mv_sad[ref_frame] = INT_MAX; | 1082 x->pred_mv_sad[ref_frame] = INT_MAX; |
| 1082 | 1083 |
| 1083 if (cpi->ref_frame_flags & flag_list[ref_frame]) { | 1084 if ((cpi->ref_frame_flags & flag_list[ref_frame]) && (yv12 != NULL)) { |
| 1084 const YV12_BUFFER_CONFIG *yv12 = get_ref_frame_buffer(cpi, ref_frame); | |
| 1085 int_mv *const candidates = mbmi->ref_mvs[ref_frame]; | 1085 int_mv *const candidates = mbmi->ref_mvs[ref_frame]; |
| 1086 const struct scale_factors *const sf = | 1086 const struct scale_factors *const sf = |
| 1087 &cm->frame_refs[ref_frame - 1].sf; | 1087 &cm->frame_refs[ref_frame - 1].sf; |
| 1088 vp9_setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col, | 1088 vp9_setup_pred_block(xd, yv12_mb[ref_frame], yv12, mi_row, mi_col, |
| 1089 sf, sf); | 1089 sf, sf); |
| 1090 vp9_find_mv_refs(cm, xd, tile_info, xd->mi[0].src_mi, ref_frame, | 1090 vp9_find_mv_refs(cm, xd, tile_info, xd->mi[0].src_mi, ref_frame, |
| 1091 candidates, mi_row, mi_col, NULL, NULL); | 1091 candidates, mi_row, mi_col, NULL, NULL); |
| 1092 | 1092 |
| 1093 vp9_find_best_ref_mvs(xd, cm->allow_high_precision_mv, candidates, | 1093 vp9_find_best_ref_mvs(xd, cm->allow_high_precision_mv, candidates, |
| 1094 &dummy_mv[0], &dummy_mv[1]); | 1094 &dummy_mv[0], &dummy_mv[1]); |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1306 xd->mi[0].bmi[block + 2] = bsi[best_ref_frame][block]; | 1306 xd->mi[0].bmi[block + 2] = bsi[best_ref_frame][block]; |
| 1307 } | 1307 } |
| 1308 } | 1308 } |
| 1309 mbmi->mode = xd->mi[0].bmi[3].as_mode; | 1309 mbmi->mode = xd->mi[0].bmi[3].as_mode; |
| 1310 ctx->mic = *(xd->mi[0].src_mi); | 1310 ctx->mic = *(xd->mi[0].src_mi); |
| 1311 ctx->skip_txfm[0] = 0; | 1311 ctx->skip_txfm[0] = 0; |
| 1312 ctx->skip = 0; | 1312 ctx->skip = 0; |
| 1313 // Dummy assignment for speed -5. No effect in speed -6. | 1313 // Dummy assignment for speed -5. No effect in speed -6. |
| 1314 rd_cost->rdcost = best_rd; | 1314 rd_cost->rdcost = best_rd; |
| 1315 } | 1315 } |
| OLD | NEW |