From: Yaowu Xu Date: Fri, 8 Jan 2016 13:00:05 +0000 (-0800) Subject: Merge branch 'master' into nextgenv2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c557efafeb24084495aff491650993a04c4f9aee;p=libvpx Merge branch 'master' into nextgenv2 --- c557efafeb24084495aff491650993a04c4f9aee diff --cc vp9/encoder/vp9_rdopt.c index ab647a492,b8d17205d..973d8f51e --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@@ -3818,14 -3814,20 +3818,24 @@@ void vp9_rd_pick_inter_mode_sub8x8(VP9_ int64_t total_sse = INT_MAX; int early_term = 0; struct buf_2d backup_yv12[2][MAX_MB_PLANE]; + const MV_REFERENCE_FRAME refs[2] = { + vp9_ref_order[ref_index].ref_frame[0], + vp9_ref_order[ref_index].ref_frame[1] + }; - ref_frame = vp9_ref_order[ref_index].ref_frame[0]; - second_ref_frame = vp9_ref_order[ref_index].ref_frame[1]; + ref_frame = refs[0]; + second_ref_frame = refs[1]; + #if CONFIG_BETTER_HW_COMPATIBILITY + // forbid 8X4 and 4X8 partitions if any reference frame is scaled. + if (bsize == BLOCK_8X4 || bsize == BLOCK_4X8) { + int ref_scaled = vp9_is_scaled(&cm->frame_refs[ref_frame - 1].sf); + if (second_ref_frame > INTRA_FRAME) + ref_scaled += vp9_is_scaled(&cm->frame_refs[second_ref_frame - 1].sf); + if (ref_scaled) + continue; + } + #endif // Look at the reference frame of the best mode so far and set the // skip mask to look at a subset of the remaining modes. if (ref_index > 2 && sf->mode_skip_start < MAX_MODES) {