diff options
Diffstat (limited to 'vp9/encoder/vp9_encodeframe.c')
-rw-r--r-- | vp9/encoder/vp9_encodeframe.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index 4c948237d..89486f040 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -1410,6 +1410,11 @@ static void update_state_rt(VP9_COMP *cpi, ThreadData *td, const int pred_ctx = vp9_get_pred_context_switchable_interp(xd); ++td->counts->switchable_interp[pred_ctx][mbmi->interp_filter]; } + + if (mbmi->sb_type < BLOCK_8X8) { + mbmi->mv[0].as_int = mi->bmi[3].as_mv[0].as_int; + mbmi->mv[1].as_int = mi->bmi[3].as_mv[1].as_int; + } } if (cm->use_prev_frame_mvs) { @@ -2705,9 +2710,12 @@ static void nonrd_pick_sb_modes(VP9_COMP *cpi, hybrid_intra_mode_search(cpi, x, rd_cost, bsize, ctx); else if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) set_mode_info_seg_skip(x, cm->tx_mode, rd_cost, bsize); - else + else if (bsize >= BLOCK_8X8) vp9_pick_inter_mode(cpi, x, tile_data, mi_row, mi_col, rd_cost, bsize, ctx); + else + vp9_pick_inter_mode_sub8x8(cpi, x, tile_data, mi_row, mi_col, + rd_cost, bsize, ctx); duplicate_mode_info_in_sb(cm, xd, mi_row, mi_col, bsize); @@ -3312,9 +3320,10 @@ static void encode_nonrd_sb_row(VP9_COMP *cpi, // Set the partition type of the 64X64 block switch (sf->partition_search_type) { case VAR_BASED_PARTITION: - // TODO(jingning) Only key frame coding supports sub8x8 block at this - // point. To be continued to enable sub8x8 block mode decision for - // P frames. + // TODO(jingning, marpan): The mode decision and encoding process + // support both intra and inter sub8x8 block coding for RTC mode. + // Tune the thresholds accordingly to use sub8x8 block coding for + // coding performance improvement. choose_partitioning(cpi, tile_info, x, mi_row, mi_col); nonrd_use_partition(cpi, td, tile_data, mi, tp, mi_row, mi_col, BLOCK_64X64, 1, &dummy_rdc, td->pc_root); |