| Index: source/libvpx/vp9/encoder/vp9_variance_c.c
 | 
| ===================================================================
 | 
| --- source/libvpx/vp9/encoder/vp9_variance_c.c	(revision 177019)
 | 
| +++ source/libvpx/vp9/encoder/vp9_variance_c.c	(working copy)
 | 
| @@ -14,7 +14,7 @@
 | 
|  #include "vp9/common/vp9_subpelvar.h"
 | 
|  #include "vpx/vpx_integer.h"
 | 
|  
 | 
| -unsigned int vp9_get_mb_ss_c(const short *src_ptr) {
 | 
| +unsigned int vp9_get_mb_ss_c(const int16_t *src_ptr) {
 | 
|    unsigned int i, sum = 0;
 | 
|  
 | 
|    for (i = 0; i < 256; i++) {
 | 
| @@ -24,12 +24,22 @@
 | 
|    return sum;
 | 
|  }
 | 
|  
 | 
| +unsigned int vp9_variance64x64_c(const uint8_t *src_ptr,
 | 
| +                                 int  source_stride,
 | 
| +                                 const uint8_t *ref_ptr,
 | 
| +                                 int  recon_stride,
 | 
| +                                 unsigned int *sse) {
 | 
| +  unsigned int var;
 | 
| +  int avg;
 | 
|  
 | 
| +  variance(src_ptr, source_stride, ref_ptr, recon_stride, 64, 64, &var, &avg);
 | 
| +  *sse = var;
 | 
| +  return (var - (((int64_t)avg * avg) >> 12));
 | 
| +}
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_variance32x32_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance32x32_c(const uint8_t *src_ptr,
 | 
|                                   int  source_stride,
 | 
| -                                 const unsigned char *ref_ptr,
 | 
| +                                 const uint8_t *ref_ptr,
 | 
|                                   int  recon_stride,
 | 
|                                   unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -39,11 +49,10 @@
 | 
|    *sse = var;
 | 
|    return (var - (((int64_t)avg * avg) >> 10));
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| -unsigned int vp9_variance16x16_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance16x16_c(const uint8_t *src_ptr,
 | 
|                                   int  source_stride,
 | 
| -                                 const unsigned char *ref_ptr,
 | 
| +                                 const uint8_t *ref_ptr,
 | 
|                                   int  recon_stride,
 | 
|                                   unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -54,9 +63,9 @@
 | 
|    return (var - (((unsigned int)avg * avg) >> 8));
 | 
|  }
 | 
|  
 | 
| -unsigned int vp9_variance8x16_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance8x16_c(const uint8_t *src_ptr,
 | 
|                                  int  source_stride,
 | 
| -                                const unsigned char *ref_ptr,
 | 
| +                                const uint8_t *ref_ptr,
 | 
|                                  int  recon_stride,
 | 
|                                  unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -67,9 +76,9 @@
 | 
|    return (var - (((unsigned int)avg * avg) >> 7));
 | 
|  }
 | 
|  
 | 
| -unsigned int vp9_variance16x8_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance16x8_c(const uint8_t *src_ptr,
 | 
|                                  int  source_stride,
 | 
| -                                const unsigned char *ref_ptr,
 | 
| +                                const uint8_t *ref_ptr,
 | 
|                                  int  recon_stride,
 | 
|                                  unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -81,9 +90,9 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -unsigned int vp9_variance8x8_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance8x8_c(const uint8_t *src_ptr,
 | 
|                                 int  source_stride,
 | 
| -                               const unsigned char *ref_ptr,
 | 
| +                               const uint8_t *ref_ptr,
 | 
|                                 int  recon_stride,
 | 
|                                 unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -94,9 +103,9 @@
 | 
|    return (var - (((unsigned int)avg * avg) >> 6));
 | 
|  }
 | 
|  
 | 
| -unsigned int vp9_variance4x4_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance4x4_c(const uint8_t *src_ptr,
 | 
|                                 int  source_stride,
 | 
| -                               const unsigned char *ref_ptr,
 | 
| +                               const uint8_t *ref_ptr,
 | 
|                                 int  recon_stride,
 | 
|                                 unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -108,9 +117,9 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -unsigned int vp9_mse16x16_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_mse16x16_c(const uint8_t *src_ptr,
 | 
|                              int  source_stride,
 | 
| -                            const unsigned char *ref_ptr,
 | 
| +                            const uint8_t *ref_ptr,
 | 
|                              int  recon_stride,
 | 
|                              unsigned int *sse) {
 | 
|    unsigned int var;
 | 
| @@ -122,16 +131,16 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_variance4x4_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_variance4x4_c(const uint8_t *src_ptr,
 | 
|                                           int  src_pixels_per_line,
 | 
|                                           int  xoffset,
 | 
|                                           int  yoffset,
 | 
| -                                         const unsigned char *dst_ptr,
 | 
| +                                         const uint8_t *dst_ptr,
 | 
|                                           int dst_pixels_per_line,
 | 
|                                           unsigned int *sse) {
 | 
| -  unsigned char  temp2[20 * 16];
 | 
| -  const short *HFilter, *VFilter;
 | 
| -  unsigned short FData3[5 * 4]; // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[20 * 16];
 | 
| +  const int16_t *HFilter, *VFilter;
 | 
| +  uint16_t FData3[5 * 4];  // Temp data bufffer used in filtering
 | 
|  
 | 
|    HFilter = vp9_bilinear_filters[xoffset];
 | 
|    VFilter = vp9_bilinear_filters[yoffset];
 | 
| @@ -146,16 +155,16 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_variance8x8_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_variance8x8_c(const uint8_t *src_ptr,
 | 
|                                           int  src_pixels_per_line,
 | 
|                                           int  xoffset,
 | 
|                                           int  yoffset,
 | 
| -                                         const unsigned char *dst_ptr,
 | 
| +                                         const uint8_t *dst_ptr,
 | 
|                                           int dst_pixels_per_line,
 | 
|                                           unsigned int *sse) {
 | 
| -  unsigned short FData3[9 * 8]; // Temp data bufffer used in filtering
 | 
| -  unsigned char  temp2[20 * 16];
 | 
| -  const short *HFilter, *VFilter;
 | 
| +  uint16_t FData3[9 * 8];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[20 * 16];
 | 
| +  const int16_t *HFilter, *VFilter;
 | 
|  
 | 
|    HFilter = vp9_bilinear_filters[xoffset];
 | 
|    VFilter = vp9_bilinear_filters[yoffset];
 | 
| @@ -166,16 +175,16 @@
 | 
|    return vp9_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
 | 
|  }
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_variance16x16_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_variance16x16_c(const uint8_t *src_ptr,
 | 
|                                             int  src_pixels_per_line,
 | 
|                                             int  xoffset,
 | 
|                                             int  yoffset,
 | 
| -                                           const unsigned char *dst_ptr,
 | 
| +                                           const uint8_t *dst_ptr,
 | 
|                                             int dst_pixels_per_line,
 | 
|                                             unsigned int *sse) {
 | 
| -  unsigned short FData3[17 * 16]; // Temp data bufffer used in filtering
 | 
| -  unsigned char  temp2[20 * 16];
 | 
| -  const short *HFilter, *VFilter;
 | 
| +  uint16_t FData3[17 * 16];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[20 * 16];
 | 
| +  const int16_t *HFilter, *VFilter;
 | 
|  
 | 
|    HFilter = vp9_bilinear_filters[xoffset];
 | 
|    VFilter = vp9_bilinear_filters[yoffset];
 | 
| @@ -186,94 +195,133 @@
 | 
|    return vp9_variance16x16_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
 | 
|  }
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_sub_pixel_variance32x32_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr,
 | 
|                                             int  src_pixels_per_line,
 | 
|                                             int  xoffset,
 | 
|                                             int  yoffset,
 | 
| -                                           const unsigned char *dst_ptr,
 | 
| +                                           const uint8_t *dst_ptr,
 | 
|                                             int dst_pixels_per_line,
 | 
|                                             unsigned int *sse) {
 | 
| -  unsigned short FData3[33 * 32]; // Temp data bufffer used in filtering
 | 
| -  unsigned char  temp2[36 * 32];
 | 
| -  const short *HFilter, *VFilter;
 | 
| +  uint16_t FData3[65 * 64];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[68 * 64];
 | 
| +  const int16_t *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, 65, 64, HFilter);
 | 
| +  var_filter_block2d_bil_second_pass(FData3, temp2, 64, 64, 64, 64, VFilter);
 | 
| +
 | 
| +  return vp9_variance64x64_c(temp2, 64, dst_ptr, dst_pixels_per_line, sse);
 | 
| +}
 | 
| +
 | 
| +unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr,
 | 
| +                                           int  src_pixels_per_line,
 | 
| +                                           int  xoffset,
 | 
| +                                           int  yoffset,
 | 
| +                                           const uint8_t *dst_ptr,
 | 
| +                                           int dst_pixels_per_line,
 | 
| +                                           unsigned int *sse) {
 | 
| +  uint16_t FData3[33 * 32];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[36 * 32];
 | 
| +  const int16_t *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, 32, HFilter);
 | 
|    var_filter_block2d_bil_second_pass(FData3, temp2, 32, 32, 32, 32, VFilter);
 | 
|  
 | 
|    return vp9_variance32x32_c(temp2, 32, dst_ptr, dst_pixels_per_line, sse);
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| -unsigned int vp9_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar16x16_h_c(const uint8_t *src_ptr,
 | 
|                                                int  source_stride,
 | 
| -                                              const unsigned char *ref_ptr,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
|                                                int  recon_stride,
 | 
|                                                unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_variance_halfpixvar32x32_h_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar32x32_h_c(const uint8_t *src_ptr,
 | 
|                                                int  source_stride,
 | 
| -                                              const unsigned char *ref_ptr,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
|                                                int  recon_stride,
 | 
|                                                unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 0,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| +unsigned int vp9_variance_halfpixvar64x64_h_c(const uint8_t *src_ptr,
 | 
| +                                              int  source_stride,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
| +                                              int  recon_stride,
 | 
| +                                              unsigned int *sse) {
 | 
| +  return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 8, 0,
 | 
| +                                       ref_ptr, recon_stride, sse);
 | 
| +}
 | 
|  
 | 
| -unsigned int vp9_variance_halfpixvar16x16_v_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar16x16_v_c(const uint8_t *src_ptr,
 | 
|                                                int  source_stride,
 | 
| -                                              const unsigned char *ref_ptr,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
|                                                int  recon_stride,
 | 
|                                                unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 0, 8,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_variance_halfpixvar32x32_v_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar32x32_v_c(const uint8_t *src_ptr,
 | 
|                                                int  source_stride,
 | 
| -                                              const unsigned char *ref_ptr,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
|                                                int  recon_stride,
 | 
|                                                unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 0, 8,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| -unsigned int vp9_variance_halfpixvar16x16_hv_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar64x64_v_c(const uint8_t *src_ptr,
 | 
| +                                              int  source_stride,
 | 
| +                                              const uint8_t *ref_ptr,
 | 
| +                                              int  recon_stride,
 | 
| +                                              unsigned int *sse) {
 | 
| +  return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 0, 8,
 | 
| +                                       ref_ptr, recon_stride, sse);
 | 
| +}
 | 
| +
 | 
| +unsigned int vp9_variance_halfpixvar16x16_hv_c(const uint8_t *src_ptr,
 | 
|                                                 int  source_stride,
 | 
| -                                               const unsigned char *ref_ptr,
 | 
| +                                               const uint8_t *ref_ptr,
 | 
|                                                 int  recon_stride,
 | 
|                                                 unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_variance_halfpixvar32x32_hv_c(const unsigned char *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar32x32_hv_c(const uint8_t *src_ptr,
 | 
|                                                 int  source_stride,
 | 
| -                                               const unsigned char *ref_ptr,
 | 
| +                                               const uint8_t *ref_ptr,
 | 
|                                                 int  recon_stride,
 | 
|                                                 unsigned int *sse) {
 | 
|    return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 8,
 | 
|                                         ref_ptr, recon_stride, sse);
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_mse16x16_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_variance_halfpixvar64x64_hv_c(const uint8_t *src_ptr,
 | 
| +                                               int  source_stride,
 | 
| +                                               const uint8_t *ref_ptr,
 | 
| +                                               int  recon_stride,
 | 
| +                                               unsigned int *sse) {
 | 
| +  return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 8, 8,
 | 
| +                                       ref_ptr, recon_stride, sse);
 | 
| +}
 | 
| +
 | 
| +unsigned int vp9_sub_pixel_mse16x16_c(const uint8_t *src_ptr,
 | 
|                                        int  src_pixels_per_line,
 | 
|                                        int  xoffset,
 | 
|                                        int  yoffset,
 | 
| -                                      const unsigned char *dst_ptr,
 | 
| +                                      const uint8_t *dst_ptr,
 | 
|                                        int dst_pixels_per_line,
 | 
|                                        unsigned int *sse) {
 | 
|    vp9_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line,
 | 
| @@ -282,12 +330,11 @@
 | 
|    return *sse;
 | 
|  }
 | 
|  
 | 
| -#if CONFIG_SUPERBLOCKS
 | 
| -unsigned int vp9_sub_pixel_mse32x32_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_mse32x32_c(const uint8_t *src_ptr,
 | 
|                                        int  src_pixels_per_line,
 | 
|                                        int  xoffset,
 | 
|                                        int  yoffset,
 | 
| -                                      const unsigned char *dst_ptr,
 | 
| +                                      const uint8_t *dst_ptr,
 | 
|                                        int dst_pixels_per_line,
 | 
|                                        unsigned int *sse) {
 | 
|    vp9_sub_pixel_variance32x32_c(src_ptr, src_pixels_per_line,
 | 
| @@ -295,18 +342,30 @@
 | 
|                                  dst_pixels_per_line, sse);
 | 
|    return *sse;
 | 
|  }
 | 
| -#endif
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_variance16x8_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_mse64x64_c(const uint8_t *src_ptr,
 | 
| +                                      int  src_pixels_per_line,
 | 
| +                                      int  xoffset,
 | 
| +                                      int  yoffset,
 | 
| +                                      const uint8_t *dst_ptr,
 | 
| +                                      int dst_pixels_per_line,
 | 
| +                                      unsigned int *sse) {
 | 
| +  vp9_sub_pixel_variance64x64_c(src_ptr, src_pixels_per_line,
 | 
| +                                xoffset, yoffset, dst_ptr,
 | 
| +                                dst_pixels_per_line, sse);
 | 
| +  return *sse;
 | 
| +}
 | 
| +
 | 
| +unsigned int vp9_sub_pixel_variance16x8_c(const uint8_t *src_ptr,
 | 
|                                            int  src_pixels_per_line,
 | 
|                                            int  xoffset,
 | 
|                                            int  yoffset,
 | 
| -                                          const unsigned char *dst_ptr,
 | 
| +                                          const uint8_t *dst_ptr,
 | 
|                                            int dst_pixels_per_line,
 | 
|                                            unsigned int *sse) {
 | 
| -  unsigned short FData3[16 * 9];  // Temp data bufffer used in filtering
 | 
| -  unsigned char  temp2[20 * 16];
 | 
| -  const short *HFilter, *VFilter;
 | 
| +  uint16_t FData3[16 * 9];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[20 * 16];
 | 
| +  const int16_t *HFilter, *VFilter;
 | 
|  
 | 
|    HFilter = vp9_bilinear_filters[xoffset];
 | 
|    VFilter = vp9_bilinear_filters[yoffset];
 | 
| @@ -317,16 +376,16 @@
 | 
|    return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
 | 
|  }
 | 
|  
 | 
| -unsigned int vp9_sub_pixel_variance8x16_c(const unsigned char  *src_ptr,
 | 
| +unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr,
 | 
|                                            int  src_pixels_per_line,
 | 
|                                            int  xoffset,
 | 
|                                            int  yoffset,
 | 
| -                                          const unsigned char *dst_ptr,
 | 
| +                                          const uint8_t *dst_ptr,
 | 
|                                            int dst_pixels_per_line,
 | 
|                                            unsigned int *sse) {
 | 
| -  unsigned short FData3[9 * 16];  // Temp data bufffer used in filtering
 | 
| -  unsigned char  temp2[20 * 16];
 | 
| -  const short *HFilter, *VFilter;
 | 
| +  uint16_t FData3[9 * 16];  // Temp data bufffer used in filtering
 | 
| +  uint8_t temp2[20 * 16];
 | 
| +  const int16_t *HFilter, *VFilter;
 | 
|  
 | 
|    HFilter = vp9_bilinear_filters[xoffset];
 | 
|    VFilter = vp9_bilinear_filters[yoffset];
 | 
| 
 |