summaryrefslogtreecommitdiff
path: root/vp9/decoder
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2012-11-12 15:09:25 +0000
committerPaul Wilkins <paulwilkins@google.com>2012-11-12 15:50:02 +0000
commit2669f42b0d50bcff236176584caf623585e487b7 (patch)
tree5a17fb6160809e0577698226d26d621674a4eb76 /vp9/decoder
parent6fb8953c190430bbc324b57efa0297f6a612d7c7 (diff)
downloadlibvpx-2669f42b0d50bcff236176584caf623585e487b7.tar
libvpx-2669f42b0d50bcff236176584caf623585e487b7.tar.gz
libvpx-2669f42b0d50bcff236176584caf623585e487b7.tar.bz2
libvpx-2669f42b0d50bcff236176584caf623585e487b7.zip
New inter mode context
This change is a fix / extension of the newbestrefmv experiment. As such it is presented without IFDEF. The change creates a new context for coding inter modes in vp9_find_mv_refs(). This replaces the context that was previously calculated in vp9_find_near_mvs(). The new context is unoptimized and not necessarily any better at this stage (results pending), but eliminates the need for a legacy call to vp9_find_near_mvs(). Based on numbers from Scott, this could help decode speed by several %. In a later patch I will add support for forward update of context (assuming this helps) and refine the context as necessary. Change-Id: I1cd991b82c8df86cc02237a34185e6d67510698a
Diffstat (limited to 'vp9/decoder')
-rw-r--r--vp9/decoder/decodemv.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/vp9/decoder/decodemv.c b/vp9/decoder/decodemv.c
index 7d4d6a7c2..52032bc9d 100644
--- a/vp9/decoder/decodemv.c
+++ b/vp9/decoder/decodemv.c
@@ -720,10 +720,6 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
int recon_y_stride, recon_yoffset;
int recon_uv_stride, recon_uvoffset;
- vp9_find_near_mvs(xd, mi,
- prev_mi,
- &nearest, &nearby, &best_mv, rct,
- mbmi->ref_frame, cm->ref_frame_sign_bias);
{
int ref_fb_idx;
MV_REFERENCE_FRAME ref_frame = mbmi->ref_frame;
@@ -755,9 +751,10 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
recon_y_stride,
mbmi->ref_mvs[ref_frame],
&best_mv, &nearest, &nearby);
- }
- vp9_mv_ref_probs(&pbi->common, mv_ref_p, rct);
+ vp9_mv_ref_probs(&pbi->common, mv_ref_p,
+ mbmi->mb_mode_context[ref_frame]);
+ }
// Is the segment level mode feature enabled for this segment
if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_MODE)) {
@@ -771,7 +768,8 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
#endif
mbmi->mode = read_mv_ref(bc, mv_ref_p);
- vp9_accum_mv_refs(&pbi->common, mbmi->mode, rct);
+ vp9_accum_mv_refs(&pbi->common, mbmi->mode,
+ mbmi->mb_mode_context[mbmi->ref_frame]);
}
#if CONFIG_PRED_FILTER
@@ -825,11 +823,6 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
cm->yv12_fb[second_ref_fb_idx].u_buffer + recon_uvoffset;
xd->second_pre.v_buffer =
cm->yv12_fb[second_ref_fb_idx].v_buffer + recon_uvoffset;
- vp9_find_near_mvs(xd, mi, prev_mi,
- &nearest_second, &nearby_second, &best_mv_second,
- rct,
- mbmi->second_ref_frame,
- cm->ref_frame_sign_bias);
vp9_find_mv_refs(xd, mi, prev_mi,
mbmi->second_ref_frame,