Disable OBMC mode if the current block uses compound prediction.
Results if we only disable this combination for small
block sizes are also listed.

Loss of gain (lowres/midres/AWCYHL)
no compound :         0.230%/0.105%/0.15%
no compound <= 8x8:   0.043%/-0.016%/0%
no compound <= 16x16: 0.153%/0.029%/0.05%


Change-Id: I94c9d704172dd02e53f3b2004a8032a4f1265057
This commit is contained in:
Yue Chen 2017-04-03 01:23:44 -07:00
Родитель 1c2479747c
Коммит 8636da613b
1 изменённых файлов: 11 добавлений и 2 удалений

Просмотреть файл

@ -1082,6 +1082,14 @@ static INLINE int is_motion_variation_allowed_bsize(BLOCK_SIZE bsize) {
return (bsize >= BLOCK_8X8);
}
static INLINE int is_motion_variation_allowed_compound(
const MB_MODE_INFO *mbmi) {
if (!has_second_ref(mbmi))
return 1;
else
return 0;
}
#if CONFIG_MOTION_VAR
// input: log2 of length, 0(4), 1(8), ...
static const int max_neighbor_obmc[6] = { 0, 1, 2, 3, 4, 4 };
@ -1104,10 +1112,11 @@ static INLINE MOTION_MODE motion_mode_allowed(
#endif // CONFIG_GLOBAL_MOTION && SEPARATE_GLOBAL_MOTION
#if CONFIG_EXT_INTER
if (is_motion_variation_allowed_bsize(mbmi->sb_type) &&
is_inter_mode(mbmi->mode) && mbmi->ref_frame[1] != INTRA_FRAME) {
is_inter_mode(mbmi->mode) && mbmi->ref_frame[1] != INTRA_FRAME &&
is_motion_variation_allowed_compound(mbmi)) {
#else
if (is_motion_variation_allowed_bsize(mbmi->sb_type) &&
is_inter_mode(mbmi->mode)) {
is_inter_mode(mbmi->mode) && is_motion_variation_allowed_compound(mbmi)) {
#endif // CONFIG_EXT_INTER
#if CONFIG_MOTION_VAR
if (!check_num_overlappable_neighbors(mbmi)) return SIMPLE_TRANSLATION;