shithub: libvpx

Download patch

ref: bb518e64d0adaf7a9f795574cda4e55e388acbb8
parent: c42e8f14292ebaa8edf8d4030221f1706a1e0c9d
parent: 224d986858137412cd80e0f13e2468301671533f
author: Dmitry Kovalev <dkovalev@google.com>
date: Wed Apr 2 09:05:21 EDT 2014

Merge "Cleaning up vp9_get_mvpred_{av_,}var() functions."

--- a/vp9/encoder/vp9_mcomp.c
+++ b/vp9/encoder/vp9_mcomp.c
@@ -719,39 +719,32 @@
                        const MV *best_mv, const MV *center_mv,
                        const vp9_variance_fn_ptr_t *vfp,
                        int use_mvcost) {
-  unsigned int unused;
-
   const MACROBLOCKD *const xd = &x->e_mbd;
-  const uint8_t *what = x->plane[0].src.buf;
-  const int what_stride = x->plane[0].src.stride;
-  const int in_what_stride = xd->plane[0].pre[0].stride;
-  const uint8_t *base_offset = xd->plane[0].pre[0].buf;
-  const uint8_t *this_offset = &base_offset[best_mv->row * in_what_stride +
-                                            best_mv->col];
+  const struct buf_2d *const what = &x->plane[0].src;
+  const struct buf_2d *const in_what = &xd->plane[0].pre[0];
   const MV mv = {best_mv->row * 8, best_mv->col * 8};
-  return vfp->vf(what, what_stride, this_offset, in_what_stride, &unused) +
+  unsigned int unused;
+
+  return vfp->vf(what->buf, what->stride,
+                 get_buf_from_mv(in_what, best_mv), in_what->stride, &unused) +
       (use_mvcost ?  mv_err_cost(&mv, center_mv, x->nmvjointcost,
                                  x->mvcost, x->errorperbit) : 0);
 }
 
 int vp9_get_mvpred_av_var(const MACROBLOCK *x,
-                          MV *best_mv,
-                          const MV *center_mv,
+                          const MV *best_mv, const MV *center_mv,
                           const uint8_t *second_pred,
                           const vp9_variance_fn_ptr_t *vfp,
                           int use_mvcost) {
-  unsigned int bestsad;
   const MACROBLOCKD *const xd = &x->e_mbd;
-  const uint8_t *what = x->plane[0].src.buf;
-  const int what_stride = x->plane[0].src.stride;
-  const int in_what_stride = xd->plane[0].pre[0].stride;
-  const uint8_t *base_offset = xd->plane[0].pre[0].buf;
-  const uint8_t *this_offset = base_offset + (best_mv->row * in_what_stride) +
-      best_mv->col;
-  const MV this_mv = {best_mv->row * 8, best_mv->col * 8};
-  return vfp->svaf(this_offset, in_what_stride, 0, 0, what, what_stride,
-                   &bestsad, second_pred) +
-      (use_mvcost ?  mv_err_cost(&this_mv, center_mv, x->nmvjointcost,
+  const struct buf_2d *const what = &x->plane[0].src;
+  const struct buf_2d *const in_what = &xd->plane[0].pre[0];
+  const MV mv = {best_mv->row * 8, best_mv->col * 8};
+  unsigned int unused;
+
+  return vfp->svaf(get_buf_from_mv(in_what, best_mv), in_what->stride, 0, 0,
+                   what->buf, what->stride, &unused, second_pred) +
+      (use_mvcost ?  mv_err_cost(&mv, center_mv, x->nmvjointcost,
                                  x->mvcost, x->errorperbit) : 0);
 }
 
--- a/vp9/encoder/vp9_mcomp.h
+++ b/vp9/encoder/vp9_mcomp.h
@@ -42,8 +42,7 @@
                        const vp9_variance_fn_ptr_t *vfp,
                        int use_mvcost);
 int vp9_get_mvpred_av_var(const MACROBLOCK *x,
-                          MV *best_mv,
-                          const MV *center_mv,
+                          const MV *best_mv, const MV *center_mv,
                           const uint8_t *second_pred,
                           const vp9_variance_fn_ptr_t *vfp,
                           int use_mvcost);