| @@ -1410,9 +1410,13 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, · 1409 unmodified lines |
| 1410 | x->skip_encode = cpi->sf.skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; | 1410 | x->skip_encode = cpi->sf.skip_encode_frame && x->q_index < QIDX_SKIP_THRESH; |
| 1411 | x->skip = 0; | 1411 | x->skip = 0; |
| 1412 | | 1412 | |
| 1413 | if (xd->above_mi) | 1413 | // Instead of using vp9_get_pred_context_switchable_interp(xd) to assign |
| | 1414 | // filter_ref, we use a less strict condition on assigning filter_ref. |
| | 1415 | // This is to reduce the probabily of entering the flow of not assigning |
| | 1416 | // filter_ref and then skip filter search. |
| | 1417 | if (xd->above_mi && is_inter_block(xd->above_mi)) |
| 1414 | filter_ref = xd->above_mi->interp_filter; | 1418 | filter_ref = xd->above_mi->interp_filter; |
| 1415 | else if (xd->left_mi) | 1419 | else if (xd->left_mi && is_inter_block(xd->left_mi)) |
| 1416 | filter_ref = xd->left_mi->interp_filter; | 1420 | filter_ref = xd->left_mi->interp_filter; |
| 1417 | else | 1421 | else |
| 1418 | filter_ref = cm->interp_filter; | 1422 | filter_ref = cm->interp_filter; |
| @@ -1977,6 +1981,10 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, · 558 unmodified lines |
| 1977 | mi->ref_frame[0] = best_ref_frame; | 1981 | mi->ref_frame[0] = best_ref_frame; |
| 1978 | x->skip_txfm[0] = best_mode_skip_txfm; | 1982 | x->skip_txfm[0] = best_mode_skip_txfm; |
| 1979 | | 1983 | |
| | 1984 | if (!is_inter_block(mi)) { |
| | 1985 | mi->interp_filter = SWITCHABLE_FILTERS; |
| | 1986 | } |
| | 1987 | |
| 1980 | if (reuse_inter_pred && best_pred != NULL) { | 1988 | if (reuse_inter_pred && best_pred != NULL) { |
| 1981 | if (best_pred->data != orig_dst.buf && is_inter_mode(mi->mode)) { | 1989 | if (best_pred->data != orig_dst.buf && is_inter_mode(mi->mode)) { |
| 1982 | #if CONFIG_VP9_HIGHBITDEPTH | 1990 | #if CONFIG_VP9_HIGHBITDEPTH |