Return sse value in vp8_variance SSE2 functions
authorYunqing Wang <yunqingwang@google.com>
Wed, 25 May 2011 13:26:29 +0000 (09:26 -0400)
committerYunqing Wang <yunqingwang@google.com>
Wed, 25 May 2011 15:55:41 +0000 (11:55 -0400)
Minor modification.

Change-Id: I09511d38fd1451d5c4106a48acdb3f766ce59cb7

vp8/encoder/arm/variance_arm.h
vp8/encoder/encodeframe.c
vp8/encoder/pickinter.c
vp8/encoder/variance.h
vp8/encoder/x86/variance_mmx.c
vp8/encoder/x86/variance_sse2.c
vp8/encoder/x86/variance_ssse3.c
vp8/encoder/x86/variance_x86.h

index 86de274..ad0d371 100644 (file)
@@ -83,10 +83,10 @@ extern prototype_variance(vp8_variance_halfpixvar16x16_hv_neon);
 
 //extern prototype_getmbss(vp8_get_mb_ss_c);
 extern prototype_variance(vp8_mse16x16_neon);
-extern prototype_sad(vp8_get16x16pred_error_neon);
+extern prototype_get16x16prederror(vp8_get16x16pred_error_neon);
 //extern prototype_variance2(vp8_get8x8var_c);
 //extern prototype_variance2(vp8_get16x16var_c);
-extern prototype_sad(vp8_get4x4sse_cs_neon);
+extern prototype_get16x16prederror(vp8_get4x4sse_cs_neon);
 
 #if !CONFIG_RUNTIME_CPU_DETECT
 #undef  vp8_variance_sad4x4
index 672ceec..1bb0260 100644 (file)
@@ -1079,7 +1079,7 @@ int vp8cx_encode_intra_macro_block(VP8_COMP *cpi, MACROBLOCK *x, TOKENEXTRA **t)
             x->e_mbd.mode_info_context->mbmi.mode = mode;
             RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby)
                 (&x->e_mbd);
-            distortion2 = VARIANCE_INVOKE(&cpi->rtcd.variance, get16x16prederror)(x->src.y_buffer, x->src.y_stride, x->e_mbd.predictor, 16, 0x7fffffff);
+            distortion2 = VARIANCE_INVOKE(&cpi->rtcd.variance, get16x16prederror)(x->src.y_buffer, x->src.y_stride, x->e_mbd.predictor, 16);
             rate2  = x->mbmode_cost[x->e_mbd.frame_type][mode];
             this_rd = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
 
index 6669480..d1dc7ae 100644 (file)
@@ -101,8 +101,7 @@ unsigned int vp8_get16x16pred_error_c
     const unsigned char *src_ptr,
     int src_stride,
     const unsigned char *ref_ptr,
-    int ref_stride,
-    int max_sad
+    int ref_stride
 )
 {
     unsigned pred_error = 0;
@@ -134,8 +133,7 @@ unsigned int vp8_get4x4sse_cs_c
     const unsigned char *src_ptr,
     int  source_stride,
     const unsigned char *ref_ptr,
-    int  recon_stride,
-    int max_sad
+    int  recon_stride
 )
 {
     int distortion = 0;
@@ -163,7 +161,7 @@ static int get_prediction_error(BLOCK *be, BLOCKD *b, const vp8_variance_rtcd_vt
     sptr = (*(be->base_src) + be->src);
     dptr = b->predictor;
 
-    return VARIANCE_INVOKE(rtcd, get4x4sse_cs)(sptr, be->src_stride, dptr, 16, 0x7fffffff);
+    return VARIANCE_INVOKE(rtcd, get4x4sse_cs)(sptr, be->src_stride, dptr, 16);
 
 }
 
@@ -672,7 +670,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
                 distortion2 = VARIANCE_INVOKE
                                 (&cpi->rtcd.variance, get16x16prederror)(
                                     x->src.y_buffer, x->src.y_stride,
-                                    x->e_mbd.predictor, 16, 0x7fffffff);
+                                    x->e_mbd.predictor, 16);
                 this_rd = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
 
                 if (this_rd < best_intra_rd)
@@ -695,7 +693,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
         case TM_PRED:
             RECON_INVOKE(&cpi->common.rtcd.recon, build_intra_predictors_mby)
                 (&x->e_mbd);
-            distortion2 = VARIANCE_INVOKE(&cpi->rtcd.variance, get16x16prederror)(x->src.y_buffer, x->src.y_stride, x->e_mbd.predictor, 16, 0x7fffffff);
+            distortion2 = VARIANCE_INVOKE(&cpi->rtcd.variance, get16x16prederror)(x->src.y_buffer, x->src.y_stride, x->e_mbd.predictor, 16);
             rate2 += x->mbmode_cost[x->e_mbd.frame_type][x->e_mbd.mode_info_context->mbmi.mode];
             this_rd = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
 
index da5a536..0d7d977 100644 (file)
 
 #define prototype_getmbss(sym) unsigned int (sym)(const short *)
 
+#define prototype_get16x16prederror(sym)\
+    unsigned int (sym)\
+    (\
+     const unsigned char *src_ptr, \
+     int source_stride, \
+     const unsigned char *ref_ptr, \
+     int  ref_stride \
+    )
+
 #if ARCH_X86 || ARCH_X86_64
 #include "x86/variance_x86.h"
 #endif
@@ -302,7 +311,7 @@ extern prototype_variance(vp8_variance_mse16x16);
 #ifndef vp8_variance_get16x16prederror
 #define vp8_variance_get16x16prederror vp8_get16x16pred_error_c
 #endif
-extern prototype_sad(vp8_variance_get16x16prederror);
+extern prototype_get16x16prederror(vp8_variance_get16x16prederror);
 
 #ifndef vp8_variance_get8x8var
 #define vp8_variance_get8x8var vp8_get8x8var_c
@@ -317,7 +326,7 @@ extern prototype_variance2(vp8_variance_get16x16var);
 #ifndef vp8_variance_get4x4sse_cs
 #define vp8_variance_get4x4sse_cs vp8_get4x4sse_cs_c
 #endif
-extern prototype_sad(vp8_variance_get4x4sse_cs);
+extern prototype_get16x16prederror(vp8_variance_get4x4sse_cs);
 
 #ifndef vp8_ssimpf
 #define vp8_ssimpf ssim_parms_c
@@ -337,9 +346,8 @@ typedef prototype_variance(*vp8_variance_fn_t);
 typedef prototype_variance2(*vp8_variance2_fn_t);
 typedef prototype_subpixvariance(*vp8_subpixvariance_fn_t);
 typedef prototype_getmbss(*vp8_getmbss_fn_t);
-
-typedef prototype_ssimpf(*vp8_ssimpf_fn_t)
-
+typedef prototype_ssimpf(*vp8_ssimpf_fn_t);
+typedef prototype_get16x16prederror(*vp8_get16x16prederror_fn_t);
 
 typedef struct
 {
@@ -368,10 +376,10 @@ typedef struct
     vp8_getmbss_fn_t         getmbss;
     vp8_variance_fn_t        mse16x16;
 
-    vp8_sad_fn_t             get16x16prederror;
+    vp8_get16x16prederror_fn_t get16x16prederror;
     vp8_variance2_fn_t       get8x8var;
     vp8_variance2_fn_t       get16x16var;
-    vp8_sad_fn_t             get4x4sse_cs;
+    vp8_get16x16prederror_fn_t get4x4sse_cs;
 
     vp8_sad_multi_fn_t       sad16x16x3;
     vp8_sad_multi_fn_t       sad16x8x3;
index cc8c1d0..4a89868 100644 (file)
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-
+#include "vpx_config.h"
 #include "vp8/encoder/variance.h"
 #include "vp8/common/pragmas.h"
 #include "vpx_ports/mem.h"
@@ -34,7 +34,7 @@ extern void filter_block1d_v6_mmx
     short *vp7_filter
 );
 
-extern unsigned int vp8_get_mb_ss_mmx(short *src_ptr);
+extern unsigned int vp8_get_mb_ss_mmx(const short *src_ptr);
 extern unsigned int vp8_get8x8var_mmx
 (
     const unsigned char *src_ptr,
@@ -78,20 +78,19 @@ extern void vp8_filter_block2d_bil_var_mmx
 );
 extern unsigned int vp8_get16x16pred_error_mmx
 (
-    unsigned char *src_ptr,
+    const unsigned char *src_ptr,
     int src_stride,
-    unsigned char *ref_ptr,
+    const unsigned char *ref_ptr,
     int ref_stride
 );
 
-
 unsigned int vp8_get16x16var_mmx(
     const unsigned char *src_ptr,
     int  source_stride,
     const unsigned char *ref_ptr,
     int  recon_stride,
-    unsigned *SSE,
-    unsigned *SUM
+    unsigned int *SSE,
+    int *SUM
 )
 {
     unsigned int sse0, sse1, sse2, sse3, var;
@@ -176,7 +175,7 @@ unsigned int vp8_variance16x16_mmx(
     int  source_stride,
     const unsigned char *ref_ptr,
     int  recon_stride,
-    int *sse)
+    unsigned int *sse)
 {
     unsigned int sse0, sse1, sse2, sse3, var;
     int sum0, sum1, sum2, sum3, avg;
@@ -401,7 +400,7 @@ unsigned int vp8_sub_pixel_variance8x16_mmx
     int  yoffset,
     const unsigned char *dst_ptr,
     int dst_pixels_per_line,
-    int *sse
+    unsigned int *sse
 )
 {
     int xsum;
index 0edda30..dfc0915 100644 (file)
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-
+#include "vpx_config.h"
 #include "vp8/encoder/variance.h"
 #include "vp8/common/pragmas.h"
 #include "vpx_ports/mem.h"
@@ -148,30 +148,31 @@ unsigned int vp8_variance4x4_wmt(
     const unsigned char *src_ptr,
     int  source_stride,
     const unsigned char *ref_ptr,
-    int  recon_stride)
+    int  recon_stride,
+    unsigned int *sse)
 {
     unsigned int var;
     int avg;
 
     vp8_get4x4var_mmx(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
+    *sse = var;
     return (var - ((avg * avg) >> 4));
 
 }
 
-
-
 unsigned int vp8_variance8x8_wmt
 (
     const unsigned char *src_ptr,
     int  source_stride,
     const unsigned char *ref_ptr,
-    int  recon_stride)
+    int  recon_stride,
+    unsigned int *sse)
 {
     unsigned int var;
     int avg;
 
     vp8_get8x8var_sse2(src_ptr, source_stride, ref_ptr, recon_stride, &var, &avg) ;
-
+    *sse = var;
     return (var - ((avg * avg) >> 6));
 
 }
index eb5d486..73f2e01 100644 (file)
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-
+#include "vpx_config.h"
 #include "vp8/encoder/variance.h"
 #include "vp8/common/pragmas.h"
 #include "vpx_ports/mem.h"
index 3560f74..77e05e1 100644 (file)
@@ -41,10 +41,10 @@ extern prototype_variance(vp8_variance_halfpixvar16x16_hv_mmx);
 extern prototype_subpixvariance(vp8_sub_pixel_mse16x16_mmx);
 extern prototype_getmbss(vp8_get_mb_ss_mmx);
 extern prototype_variance(vp8_mse16x16_mmx);
-extern prototype_sad(vp8_get16x16pred_error_mmx);
+extern prototype_get16x16prederror(vp8_get16x16pred_error_mmx);
 extern prototype_variance2(vp8_get8x8var_mmx);
 extern prototype_variance2(vp8_get16x16var_mmx);
-extern prototype_sad(vp8_get4x4sse_cs_mmx);
+extern prototype_get16x16prederror(vp8_get4x4sse_cs_mmx);
 
 #if !CONFIG_RUNTIME_CPU_DETECT
 #undef  vp8_variance_sad4x4
@@ -148,7 +148,7 @@ extern prototype_variance(vp8_variance_halfpixvar16x16_hv_wmt);
 extern prototype_subpixvariance(vp8_sub_pixel_mse16x16_wmt);
 extern prototype_getmbss(vp8_get_mb_ss_sse2);
 extern prototype_variance(vp8_mse16x16_wmt);
-extern prototype_sad(vp8_get16x16pred_error_sse2);
+extern prototype_get16x16prederror(vp8_get16x16pred_error_sse2);
 extern prototype_variance2(vp8_get8x8var_sse2);
 extern prototype_variance2(vp8_get16x16var_sse2);