vp10: use subexp probability updates for MV probs.
See issue 1040 point 2. Change-Id: I0b37fe74be764610696620f1fe296dc74e4806d7
This commit is contained in:
parent
3461e8ce64
commit
177e7b53e7
@ -170,8 +170,12 @@ static void read_frame_reference_mode_probs(VP10_COMMON *cm, vpx_reader *r) {
|
||||
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) {
|
||||
|
@ -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 void build_nmv_component_cost_table(int *mvcost,
|
||||
}
|
||||
}
|
||||
|
||||
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 @@ static int update_mv(vpx_writer *w, const unsigned int ct[2], vpx_prob *cur_p,
|
||||
*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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user