Commit a036d86f authored by Sarah Parker's avatar Sarah Parker

Disable neighbor warping for gm + obmc

Adds an option to disable warp when obmc is used with a
global motion neighbor.

Change in BDRATE on cam_lowres
gm + obmc enabled: 0.035%
gm + obmc + wm enabled: -0.005%

Change-Id: I1d6de75c7ead325cec31ed3748b5532f3658d8a7
parent c670e82f
......@@ -24,6 +24,10 @@
#define WARP_NEIGHBORS_WITH_OBMC 0
#endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
#if CONFIG_MOTION_VAR && CONFIG_GLOBAL_MOTION
#define WARP_NEIGHBORS_WITH_GM 0
#endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
#ifdef __cplusplus
extern "C" {
#endif
......@@ -281,7 +285,11 @@ static INLINE void av1_make_inter_predictor(
int xs, int ys, const MACROBLOCKD *xd) {
(void)xd;
#if CONFIG_GLOBAL_MOTION
if (is_global) {
if (is_global
#if CONFIG_MOTION_VAR
&& (WARP_NEIGHBORS_WITH_GM || (mi_col_offset == 0 && mi_row_offset == 0))
#endif // CONFIG_MOTION_VAR
) {
#if CONFIG_MOTION_VAR
const MODE_INFO *mi = xd->mi[mi_col_offset + xd->mi_stride * mi_row_offset];
#else
......
......@@ -3685,9 +3685,13 @@ static void fix_interp_filter(AV1_COMMON *cm, FRAME_COUNTS *counts) {
// Only one filter is used. So set the filter at frame level
for (i = 0; i < SWITCHABLE_FILTERS; ++i) {
if (count[i]) {
#if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
#if CONFIG_MOTION_VAR && (CONFIG_WARPED_MOTION || CONFIG_GLOBAL_MOTION)
#if CONFIG_WARPED_MOTION
if (i == EIGHTTAP_REGULAR || WARP_NEIGHBORS_WITH_OBMC)
#endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
#else
if (i == EIGHTTAP_REGULAR || WARP_NEIGHBORS_WITH_GM)
#endif // CONFIG_WARPED_MOTION
#endif // CONFIG_MOTION_VAR && (CONFIG_WARPED_MOTION || CONFIG_GLOBAL_MOTION)
cm->interp_filter = i;
break;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment