Add new compound modes using single reference
The hookup with the encoder-decoder pipeline will be in the following
CLs. This is under the experiment of compound-singleref, with ext-
inter enabled.
Change-Id: I6523a1a6525539eb7c6aa6c5e11724a694e8bf6c
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 8f7761e..86a068e 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -119,7 +119,11 @@
static INLINE int is_inter_singleref_mode(PREDICTION_MODE mode) {
return mode >= NEARESTMV && mode <= NEWMV;
}
-
+#if CONFIG_COMPOUND_SINGLEREF
+static INLINE int is_inter_singleref_comp_mode(PREDICTION_MODE mode) {
+ return mode >= SR_NEAREST_NEARMV && mode <= SR_NEW_NEWMV;
+}
+#endif // CONFIG_COMPOUND_SINGLEREF
static INLINE int is_inter_compound_mode(PREDICTION_MODE mode) {
return mode >= NEAREST_NEARESTMV && mode <= NEW_NEWMV;
}
@@ -143,16 +147,23 @@
MB_MODE_COUNT, // NEARMV
MB_MODE_COUNT, // ZEROMV
MB_MODE_COUNT, // NEWMV
- NEARESTMV, // NEAREST_NEARESTMV
- NEARESTMV, // NEAREST_NEARMV
- NEARMV, // NEAR_NEARESTMV
- NEARMV, // NEAR_NEARMV
- NEARESTMV, // NEAREST_NEWMV
- NEWMV, // NEW_NEARESTMV
- NEARMV, // NEAR_NEWMV
- NEWMV, // NEW_NEARMV
- ZEROMV, // ZERO_ZEROMV
- NEWMV, // NEW_NEWMV
+#if CONFIG_COMPOUND_SINGLEREF
+ NEARESTMV, // SR_NEAREST_NEARMV
+ NEARESTMV, // SR_NEAREST_NEWMV
+ NEARMV, // SR_NEAR_NEWMV
+ ZEROMV, // SR_ZERO_NEWMV
+ NEWMV, // SR_NEW_NEWMV
+#endif // CONFIG_COMPOUND_SINGLEREF
+ NEARESTMV, // NEAREST_NEARESTMV
+ NEARESTMV, // NEAREST_NEARMV
+ NEARMV, // NEAR_NEARESTMV
+ NEARMV, // NEAR_NEARMV
+ NEARESTMV, // NEAREST_NEWMV
+ NEWMV, // NEW_NEARESTMV
+ NEARMV, // NEAR_NEWMV
+ NEWMV, // NEW_NEARMV
+ ZEROMV, // ZERO_ZEROMV
+ NEWMV, // NEW_NEWMV
};
assert(is_inter_compound_mode(mode));
return lut[mode];
@@ -177,16 +188,23 @@
MB_MODE_COUNT, // NEARMV
MB_MODE_COUNT, // ZEROMV
MB_MODE_COUNT, // NEWMV
- NEARESTMV, // NEAREST_NEARESTMV
- NEARMV, // NEAREST_NEARMV
- NEARESTMV, // NEAR_NEARESTMV
- NEARMV, // NEAR_NEARMV
- NEWMV, // NEAREST_NEWMV
- NEARESTMV, // NEW_NEARESTMV
- NEWMV, // NEAR_NEWMV
- NEARMV, // NEW_NEARMV
- ZEROMV, // ZERO_ZEROMV
- NEWMV, // NEW_NEWMV
+#if CONFIG_COMPOUND_SINGLEREF
+ NEARMV, // SR_NEAREST_NEARMV
+ NEWMV, // SR_NEAREST_NEWMV
+ NEWMV, // SR_NEAR_NEWMV
+ NEWMV, // SR_ZERO_NEWMV
+ NEWMV, // SR_NEW_NEWMV
+#endif // CONFIG_COMPOUND_SINGLEREF
+ NEARESTMV, // NEAREST_NEARESTMV
+ NEARMV, // NEAREST_NEARMV
+ NEARESTMV, // NEAR_NEARESTMV
+ NEARMV, // NEAR_NEARMV
+ NEWMV, // NEAREST_NEWMV
+ NEARESTMV, // NEW_NEARESTMV
+ NEWMV, // NEAR_NEWMV
+ NEARMV, // NEW_NEARMV
+ ZEROMV, // ZERO_ZEROMV
+ NEWMV, // NEW_NEWMV
};
assert(is_inter_compound_mode(mode));
return lut[mode];