ref: 61a47da869a3f507e446caa19ac0209fcbb475fe
parent: 2cf0675a523354cbc0dbbcf76926e9cef2c391d7
author: Dmitry Kovalev <dkovalev@google.com>
date: Wed Apr 24 08:14:58 EDT 2013
Adding is_inter_mode function. Change-Id: I2d32d46002cb92c63050c2b8328865c406103621
--- a/vp9/common/vp9_blockd.h
+++ b/vp9/common/vp9_blockd.h
@@ -98,6 +98,11 @@
MB_MODE_COUNT
} MB_PREDICTION_MODE;
+static INLINE int is_inter_mode(MB_PREDICTION_MODE mode) {
+ return mode >= NEARESTMV && mode <= SPLITMV;
+}
+
+
// Segment level features.
typedef enum {
SEG_LVL_ALT_Q = 0, // Use alternate Quantizer ....
--- a/vp9/common/vp9_pred_common.c
+++ b/vp9/common/vp9_pred_common.c
@@ -59,8 +59,7 @@
case PRED_SWITCHABLE_INTERP: {
// left
const int left_in_image = xd->left_available && left_mi->mbmi.mb_in_image;
- const int left_mv_pred = left_mi->mbmi.mode >= NEARESTMV &&
- left_mi->mbmi.mode <= SPLITMV;
+ const int left_mv_pred = is_inter_mode(left_mi->mbmi.mode);
const int left_interp = left_in_image && left_mv_pred ?
vp9_switchable_interp_map[left_mi->mbmi.interp_filter] :
VP9_SWITCHABLE_FILTERS;
@@ -67,8 +66,7 @@
// above
const int above_in_image = xd->up_available && above_mi->mbmi.mb_in_image;
- const int above_mv_pred = above_mi->mbmi.mode >= NEARESTMV &&
- above_mi->mbmi.mode <= SPLITMV;
+ const int above_mv_pred = is_inter_mode(above_mi->mbmi.mode);
const int above_interp = above_in_image && above_mv_pred ?
vp9_switchable_interp_map[above_mi->mbmi.interp_filter] :
VP9_SWITCHABLE_FILTERS;
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -692,7 +692,7 @@
#endif
}
- if (mbmi->mode >= NEARESTMV && mbmi->mode <= SPLITMV) {
+ if (is_inter_mode(mbmi->mode)) {
mbmi->interp_filter = cm->mcomp_filter_type == SWITCHABLE
? read_switchable_filter_type(pbi, r)
: cm->mcomp_filter_type;
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -794,7 +794,7 @@
vp9_accum_mv_refs(&cpi->common, mode, mi->mb_mode_context[rf]);
}
- if (mode >= NEARESTMV && mode <= SPLITMV) {
+ if (is_inter_mode(mode)) {
if (cpi->common.mcomp_filter_type == SWITCHABLE) {
write_token(bc, vp9_switchable_interp_tree,
vp9_get_pred_probs(&cpi->common, xd,
--- a/vp9/encoder/vp9_encodeframe.c
+++ b/vp9/encoder/vp9_encodeframe.c
@@ -505,8 +505,7 @@
}
#endif
if (cpi->common.mcomp_filter_type == SWITCHABLE &&
- mbmi->mode >= NEARESTMV &&
- mbmi->mode <= SPLITMV) {
+ is_inter_mode(mbmi->mode)) {
++cpi->switchable_interp_count
[vp9_get_pred_context(&cpi->common, xd, PRED_SWITCHABLE_INTERP)]
[vp9_switchable_interp_map[mbmi->interp_filter]];
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -4042,7 +4042,7 @@
// Accumulate filter usage stats
// TODO(agrange): Use RD criteria to select interpolation filter mode.
- if ((best_mode >= NEARESTMV) && (best_mode <= SPLITMV))
+ if (is_inter_mode(best_mode))
++cpi->best_switchable_interp_count[vp9_switchable_interp_map[best_filter]];
// Reduce the activation RD thresholds for the best choice mode
@@ -4852,7 +4852,7 @@
// Accumulate filter usage stats
// TODO(agrange): Use RD criteria to select interpolation filter mode.
- if ((best_mode >= NEARESTMV) && (best_mode <= SPLITMV))
+ if (is_inter_mode(best_mode))
++cpi->best_switchable_interp_count[vp9_switchable_interp_map[best_filter]];
// TODO(rbultje) integrate with RD thresholding
--
⑨