]> granicus.if.org Git - libvpx/commitdiff
subpelrefmv for superblocks
authorYaowu Xu <yaowu@google.com>
Wed, 14 Nov 2012 18:32:39 +0000 (10:32 -0800)
committerYaowu Xu <yaowu@google.com>
Thu, 15 Nov 2012 21:46:52 +0000 (13:46 -0800)
duplicate code clean-up and variable name corrections

Change-Id: Ibc4703228e652ec425125de5e7bc038fa46595c5

vp9/common/findnearmv.c

index 2daa344d729a8eb5ce1bfc903a33fc1d4998c3d2..768abf23ee671b938a18954feba843c9b34fffa2 100644 (file)
@@ -57,36 +57,15 @@ unsigned int vp9_sad16x3_c(const unsigned char *src_ptr,
   return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 16, 3);
 }
 
-#if CONFIG_SUPERBLOCKS
-unsigned int vp9_sad3x32_c(const unsigned char *src_ptr,
-                           int  src_stride,
-                           const unsigned char *ref_ptr,
-                           int  ref_stride,
-                           int max_sad) {
-  return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 3, 32);
-}
-
-unsigned int vp9_sad32x3_c(const unsigned char *src_ptr,
-                           int  src_stride,
-                           const unsigned char *ref_ptr,
-                           int  ref_stride,
-                           int max_sad) {
-  return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, 32, 3);
-}
-#endif
-
 #if CONFIG_SUBPELREFMV
 unsigned int vp9_variance2x16_c(const unsigned char *src_ptr,
                                 const int  source_stride,
                                 const unsigned char *ref_ptr,
                                 const int  recon_stride,
                                 unsigned int *sse) {
-  unsigned int var;
-  int avg;
-
-  variance(src_ptr, source_stride, ref_ptr, recon_stride, 2, 16, &var, &avg);
-  *sse = var;
-  return (var - (((unsigned int)avg * avg) >> 5));
+  int sum;
+  variance(src_ptr, source_stride, ref_ptr, recon_stride, 2, 16, sse, &sum);
+  return (*sse - (((unsigned int)sum * sum) >> 5));
 }
 
 unsigned int vp9_variance16x2_c(const unsigned char *src_ptr,
@@ -94,12 +73,9 @@ unsigned int vp9_variance16x2_c(const unsigned char *src_ptr,
                                 const unsigned char *ref_ptr,
                                 const int  recon_stride,
                                 unsigned int *sse) {
-  unsigned int var;
-  int avg;
-
-  variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 2, &var, &avg);
-  *sse = var;
-  return (var - (((unsigned int)avg * avg) >> 5));
+  int sum;
+  variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 2, sse, &sum);
+  return (*sse - (((unsigned int)sum * sum) >> 5));
 }
 
 unsigned int vp9_sub_pixel_variance16x2_c(const unsigned char  *src_ptr,
@@ -110,7 +86,7 @@ unsigned int vp9_sub_pixel_variance16x2_c(const unsigned char  *src_ptr,
                                           const int dst_pixels_per_line,
                                           unsigned int *sse) {
   unsigned short FData3[16 * 3];  // Temp data buffer used in filtering
-  unsigned char  temp2[20 * 16];
+  unsigned char  temp2[2 * 16];
   const short *HFilter, *VFilter;
 
   HFilter = vp9_bilinear_filters[xoffset];
@@ -143,76 +119,6 @@ unsigned int vp9_sub_pixel_variance2x16_c(const unsigned char  *src_ptr,
 
   return vp9_variance2x16_c(temp2, 2, dst_ptr, dst_pixels_per_line, sse);
 }
-
-#if CONFIG_SUPERBLOCKS
-unsigned int vp9_variance2x32_c(const unsigned char *src_ptr,
-                                const int  source_stride,
-                                const unsigned char *ref_ptr,
-                                const int  recon_stride,
-                                unsigned int *sse) {
-  unsigned int var;
-  int avg;
-
-  variance(src_ptr, source_stride, ref_ptr, recon_stride, 2, 32, &var, &avg);
-  *sse = var;
-  return (var - (((unsigned int)avg * avg) >> 6));
-}
-
-unsigned int vp9_variance32x2_c(const unsigned char *src_ptr,
-                                const int  source_stride,
-                                const unsigned char *ref_ptr,
-                                const int  recon_stride,
-                                unsigned int *sse) {
-  unsigned int var;
-  int avg;
-
-  variance(src_ptr, source_stride, ref_ptr, recon_stride, 32, 2, &var, &avg);
-  *sse = var;
-  return (var - (((unsigned int)avg * avg) >> 6));
-}
-
-unsigned int vp9_sub_pixel_variance32x2_c(const unsigned char  *src_ptr,
-                                          const int  src_pixels_per_line,
-                                          const int  xoffset,
-                                          const int  yoffset,
-                                          const unsigned char *dst_ptr,
-                                          const int dst_pixels_per_line,
-                                          unsigned int *sse) {
-  unsigned short FData3[32 * 3];  // Temp data buffer used in filtering
-  unsigned char  temp2[20 * 32];
-  const short *HFilter, *VFilter;
-
-  HFilter = vp9_bilinear_filters[xoffset];
-  VFilter = vp9_bilinear_filters[yoffset];
-
-  var_filter_block2d_bil_first_pass(src_ptr, FData3,
-                                    src_pixels_per_line, 1, 3, 32, HFilter);
-  var_filter_block2d_bil_second_pass(FData3, temp2, 32, 32, 2, 32, VFilter);
-
-  return vp9_variance32x2_c(temp2, 32, dst_ptr, dst_pixels_per_line, sse);
-}
-
-unsigned int vp9_sub_pixel_variance2x32_c(const unsigned char  *src_ptr,
-                                          const int  src_pixels_per_line,
-                                          const int  xoffset,
-                                          const int  yoffset,
-                                          const unsigned char *dst_ptr,
-                                          const int dst_pixels_per_line,
-                                          unsigned int *sse) {
-  unsigned short FData3[2 * 33];  // Temp data buffer used in filtering
-  unsigned char  temp2[2 * 32];
-  const short *HFilter, *VFilter;
-
-  HFilter = vp9_bilinear_filters[xoffset];
-  VFilter = vp9_bilinear_filters[yoffset];
-
-  var_filter_block2d_bil_first_pass(src_ptr, FData3,
-                                    src_pixels_per_line, 1, 33, 2, HFilter);
-  var_filter_block2d_bil_second_pass(FData3, temp2, 2, 2, 32, 2, VFilter);
-
-  return vp9_variance2x32_c(temp2, 2, dst_ptr, dst_pixels_per_line, sse);
-}
-#endif
 #endif
 
 /* check a list of motion vectors by sad score using a number rows of pixels
@@ -231,9 +137,9 @@ void vp9_find_best_ref_mvs(MACROBLOCKD *xd,
   unsigned char *left_src;
   unsigned char *above_ref;
   unsigned char *left_ref;
-  int score;
-  int sse;
-  int ref_scores[MAX_MV_REFS] = {0};
+  unsigned int score;
+  unsigned int sse;
+  unsigned int ref_scores[MAX_MV_REFS] = {0};
   int_mv sorted_mvs[MAX_MV_REFS];
   int zero_seen = FALSE;
 
@@ -274,46 +180,46 @@ void vp9_find_best_ref_mvs(MACROBLOCKD *xd,
              xd->mb_to_right_edge + RIGHT_BOTTOM_MARGIN,
              xd->mb_to_top_edge - LEFT_TOP_MARGIN + 24,
              xd->mb_to_bottom_edge + RIGHT_BOTTOM_MARGIN);
+
 #if CONFIG_SUBPELREFMV
     row_offset = this_mv.as_mv.row >> 3;
     col_offset = this_mv.as_mv.col >> 3;
     offset = ref_y_stride * row_offset + col_offset;
     score = 0;
     if (xd->up_available) {
+      vp9_sub_pixel_variance16x2_c(above_ref + offset, ref_y_stride,
+                                   SP(this_mv.as_mv.col),
+                                   SP(this_mv.as_mv.row),
+                                   above_src, xd->dst.y_stride, &sse);
+      score += sse;
 #if CONFIG_SUPERBLOCKS
       if (xd->mode_info_context->mbmi.encoded_as_sb) {
-        vp9_sub_pixel_variance32x2_c(above_ref + offset, ref_y_stride,
+        vp9_sub_pixel_variance16x2_c(above_ref + offset + 16,
+                                     ref_y_stride,
                                      SP(this_mv.as_mv.col),
                                      SP(this_mv.as_mv.row),
-                                     above_src, xd->dst.y_stride, &sse);
-      } else {
-#endif
-        vp9_sub_pixel_variance16x2_c(above_ref + offset, ref_y_stride,
-                                     SP(this_mv.as_mv.col),
-                                     SP(this_mv.as_mv.row),
-                                     above_src, xd->dst.y_stride, &sse);
-#if CONFIG_SUPERBLOCKS
+                                     above_src + 16, xd->dst.y_stride, &sse);
+        score += sse;
       }
 #endif
-      score += sse;
     }
     if (xd->left_available) {
+      vp9_sub_pixel_variance2x16_c(left_ref + offset, ref_y_stride,
+                                   SP(this_mv.as_mv.col),
+                                   SP(this_mv.as_mv.row),
+                                   left_src, xd->dst.y_stride, &sse);
+      score += sse;
 #if CONFIG_SUPERBLOCKS
       if (xd->mode_info_context->mbmi.encoded_as_sb) {
-        vp9_sub_pixel_variance2x32_c(left_ref + offset, ref_y_stride,
+        vp9_sub_pixel_variance2x16_c(left_ref + offset + ref_y_stride * 16,
+                                     ref_y_stride,
                                      SP(this_mv.as_mv.col),
                                      SP(this_mv.as_mv.row),
-                                     left_src, xd->dst.y_stride, &sse);
-      } else {
-#endif
-        vp9_sub_pixel_variance2x16_c(left_ref + offset, ref_y_stride,
-                                     SP(this_mv.as_mv.col),
-                                     SP(this_mv.as_mv.row),
-                                     left_src, xd->dst.y_stride, &sse);
-#if CONFIG_SUPERBLOCKS
+                                     left_src + xd->dst.y_stride * 16,
+                                     xd->dst.y_stride, &sse);
+        score += sse;
       }
 #endif
-      score += sse;
     }
 #else
     row_offset = (this_mv.as_mv.row > 0) ?
@@ -323,28 +229,24 @@ void vp9_find_best_ref_mvs(MACROBLOCKD *xd,
     offset = ref_y_stride * row_offset + col_offset;
     score = 0;
     if (xd->up_available) {
+      score += vp9_sad16x3(above_src, xd->dst.y_stride,
+                           above_ref + offset, ref_y_stride, INT_MAX);
 #if CONFIG_SUPERBLOCKS
       if (xd->mode_info_context->mbmi.encoded_as_sb) {
-        score += vp9_sad32x3(above_src, xd->dst.y_stride,
-                             above_ref + offset, ref_y_stride, INT_MAX);
-      } else {
-#endif
-        score += vp9_sad16x3(above_src, xd->dst.y_stride,
-                             above_ref + offset, ref_y_stride, INT_MAX);
-#if CONFIG_SUPERBLOCKS
+        score += vp9_sad16x3(above_src + 16, xd->dst.y_stride,
+                             above_ref + offset + 16, ref_y_stride, INT_MAX);
       }
 #endif
     }
     if (xd->left_available) {
+      score += vp9_sad3x16(left_src, xd->dst.y_stride,
+                           left_ref + offset, ref_y_stride, INT_MAX);
 #if CONFIG_SUPERBLOCKS
       if (xd->mode_info_context->mbmi.encoded_as_sb) {
-        score += vp9_sad3x32(left_src, xd->dst.y_stride,
-                             left_ref + offset, ref_y_stride, INT_MAX);
-      } else {
-#endif
-        score += vp9_sad3x16(left_src, xd->dst.y_stride,
-                             left_ref + offset, ref_y_stride, INT_MAX);
-#if CONFIG_SUPERBLOCKS
+        score += vp9_sad3x16(left_src + xd->dst.y_stride * 16,
+                             xd->dst.y_stride,
+                             left_ref + offset + ref_y_stride * 16,
+                             ref_y_stride, INT_MAX);
       }
 #endif
     }