ref: 177e7b53e7e88a94b20cf04207803231c7116f9e
parent: 3461e8ce64739f8e70a9bcb8b062382e23a09cf9
author: Ronald S. Bultje <[email protected]>
date: Thu Oct 1 06:07:32 EDT 2015
vp10: use subexp probability updates for MV probs. See issue 1040 point 2. Change-Id: I0b37fe74be764610696620f1fe296dc74e4806d7
--- a/vp10/decoder/decodeframe.c
+++ b/vp10/decoder/decodeframe.c
@@ -170,8 +170,12 @@
static void update_mv_probs(vpx_prob *p, int n, vpx_reader *r) {
int i;
for (i = 0; i < n; ++i)
+#if CONFIG_MISC_FIXES
+ vp10_diff_update_prob(r, &p[i]);
+#else
if (vpx_read(r, MV_UPDATE_PROB))
p[i] = (vpx_read_literal(r, 7) << 1) | 1;
+#endif
}
static void read_mv_probs(nmv_context *ctx, int allow_hp, vpx_reader *r) {
--- a/vp10/encoder/encodemv.c
+++ b/vp10/encoder/encodemv.c
@@ -15,6 +15,7 @@
#include "vp10/encoder/cost.h"
#include "vp10/encoder/encodemv.h"
+#include "vp10/encoder/subexp.h"
#include "vpx_dsp/vpx_dsp_common.h"
@@ -134,8 +135,12 @@
}
}
-static int update_mv(vpx_writer *w, const unsigned int ct[2], vpx_prob *cur_p,
- vpx_prob upd_p) {
+static void update_mv(vpx_writer *w, const unsigned int ct[2], vpx_prob *cur_p,
+ vpx_prob upd_p) {
+#if CONFIG_MISC_FIXES
+ (void) upd_p;
+ vp10_cond_prob_diff_update(w, cur_p, ct);
+#else
const vpx_prob new_p = get_binary_prob(ct[0], ct[1]) | 1;
const int update = cost_branch256(ct, *cur_p) + vp10_cost_zero(upd_p) >
cost_branch256(ct, new_p) + vp10_cost_one(upd_p) + 7 * 256;
@@ -144,7 +149,7 @@
*cur_p = new_p;
vpx_write_literal(w, new_p >> 1, 7);
}
- return update;
+#endif
}
static void write_mv_update(const vpx_tree_index *tree,