Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(488)

Side by Side Diff: source/libvpx/vp9/encoder/vp9_variance_c.c

Issue 11974002: libvpx: Pull from upstream (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 11
12 #include "vp9/encoder/vp9_variance.h" 12 #include "vp9/encoder/vp9_variance.h"
13 #include "vp9/common/vp9_filter.h" 13 #include "vp9/common/vp9_filter.h"
14 #include "vp9/common/vp9_subpelvar.h" 14 #include "vp9/common/vp9_subpelvar.h"
15 #include "vpx/vpx_integer.h" 15 #include "vpx/vpx_integer.h"
16 16
17 unsigned int vp9_get_mb_ss_c(const short *src_ptr) { 17 unsigned int vp9_get_mb_ss_c(const int16_t *src_ptr) {
18 unsigned int i, sum = 0; 18 unsigned int i, sum = 0;
19 19
20 for (i = 0; i < 256; i++) { 20 for (i = 0; i < 256; i++) {
21 sum += (src_ptr[i] * src_ptr[i]); 21 sum += (src_ptr[i] * src_ptr[i]);
22 } 22 }
23 23
24 return sum; 24 return sum;
25 } 25 }
26 26
27 27 unsigned int vp9_variance64x64_c(const uint8_t *src_ptr,
28
29 #if CONFIG_SUPERBLOCKS
30 unsigned int vp9_variance32x32_c(const unsigned char *src_ptr,
31 int source_stride, 28 int source_stride,
32 const unsigned char *ref_ptr, 29 const uint8_t *ref_ptr,
33 int recon_stride, 30 int recon_stride,
34 unsigned int *sse) { 31 unsigned int *sse) {
35 unsigned int var; 32 unsigned int var;
33 int avg;
34
35 variance(src_ptr, source_stride, ref_ptr, recon_stride, 64, 64, &var, &avg);
36 *sse = var;
37 return (var - (((int64_t)avg * avg) >> 12));
38 }
39
40 unsigned int vp9_variance32x32_c(const uint8_t *src_ptr,
41 int source_stride,
42 const uint8_t *ref_ptr,
43 int recon_stride,
44 unsigned int *sse) {
45 unsigned int var;
36 int avg; 46 int avg;
37 47
38 variance(src_ptr, source_stride, ref_ptr, recon_stride, 32, 32, &var, &avg); 48 variance(src_ptr, source_stride, ref_ptr, recon_stride, 32, 32, &var, &avg);
39 *sse = var; 49 *sse = var;
40 return (var - (((int64_t)avg * avg) >> 10)); 50 return (var - (((int64_t)avg * avg) >> 10));
41 } 51 }
42 #endif
43 52
44 unsigned int vp9_variance16x16_c(const unsigned char *src_ptr, 53 unsigned int vp9_variance16x16_c(const uint8_t *src_ptr,
45 int source_stride, 54 int source_stride,
46 const unsigned char *ref_ptr, 55 const uint8_t *ref_ptr,
47 int recon_stride, 56 int recon_stride,
48 unsigned int *sse) { 57 unsigned int *sse) {
49 unsigned int var; 58 unsigned int var;
50 int avg; 59 int avg;
51 60
52 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg); 61 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg);
53 *sse = var; 62 *sse = var;
54 return (var - (((unsigned int)avg * avg) >> 8)); 63 return (var - (((unsigned int)avg * avg) >> 8));
55 } 64 }
56 65
57 unsigned int vp9_variance8x16_c(const unsigned char *src_ptr, 66 unsigned int vp9_variance8x16_c(const uint8_t *src_ptr,
58 int source_stride, 67 int source_stride,
59 const unsigned char *ref_ptr, 68 const uint8_t *ref_ptr,
60 int recon_stride, 69 int recon_stride,
61 unsigned int *sse) { 70 unsigned int *sse) {
62 unsigned int var; 71 unsigned int var;
63 int avg; 72 int avg;
64 73
65 variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 16, &var, &avg); 74 variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 16, &var, &avg);
66 *sse = var; 75 *sse = var;
67 return (var - (((unsigned int)avg * avg) >> 7)); 76 return (var - (((unsigned int)avg * avg) >> 7));
68 } 77 }
69 78
70 unsigned int vp9_variance16x8_c(const unsigned char *src_ptr, 79 unsigned int vp9_variance16x8_c(const uint8_t *src_ptr,
71 int source_stride, 80 int source_stride,
72 const unsigned char *ref_ptr, 81 const uint8_t *ref_ptr,
73 int recon_stride, 82 int recon_stride,
74 unsigned int *sse) { 83 unsigned int *sse) {
75 unsigned int var; 84 unsigned int var;
76 int avg; 85 int avg;
77 86
78 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 8, &var, &avg); 87 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 8, &var, &avg);
79 *sse = var; 88 *sse = var;
80 return (var - (((unsigned int)avg * avg) >> 7)); 89 return (var - (((unsigned int)avg * avg) >> 7));
81 } 90 }
82 91
83 92
84 unsigned int vp9_variance8x8_c(const unsigned char *src_ptr, 93 unsigned int vp9_variance8x8_c(const uint8_t *src_ptr,
85 int source_stride, 94 int source_stride,
86 const unsigned char *ref_ptr, 95 const uint8_t *ref_ptr,
87 int recon_stride, 96 int recon_stride,
88 unsigned int *sse) { 97 unsigned int *sse) {
89 unsigned int var; 98 unsigned int var;
90 int avg; 99 int avg;
91 100
92 variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 8, &var, &avg); 101 variance(src_ptr, source_stride, ref_ptr, recon_stride, 8, 8, &var, &avg);
93 *sse = var; 102 *sse = var;
94 return (var - (((unsigned int)avg * avg) >> 6)); 103 return (var - (((unsigned int)avg * avg) >> 6));
95 } 104 }
96 105
97 unsigned int vp9_variance4x4_c(const unsigned char *src_ptr, 106 unsigned int vp9_variance4x4_c(const uint8_t *src_ptr,
98 int source_stride, 107 int source_stride,
99 const unsigned char *ref_ptr, 108 const uint8_t *ref_ptr,
100 int recon_stride, 109 int recon_stride,
101 unsigned int *sse) { 110 unsigned int *sse) {
102 unsigned int var; 111 unsigned int var;
103 int avg; 112 int avg;
104 113
105 variance(src_ptr, source_stride, ref_ptr, recon_stride, 4, 4, &var, &avg); 114 variance(src_ptr, source_stride, ref_ptr, recon_stride, 4, 4, &var, &avg);
106 *sse = var; 115 *sse = var;
107 return (var - (((unsigned int)avg * avg) >> 4)); 116 return (var - (((unsigned int)avg * avg) >> 4));
108 } 117 }
109 118
110 119
111 unsigned int vp9_mse16x16_c(const unsigned char *src_ptr, 120 unsigned int vp9_mse16x16_c(const uint8_t *src_ptr,
112 int source_stride, 121 int source_stride,
113 const unsigned char *ref_ptr, 122 const uint8_t *ref_ptr,
114 int recon_stride, 123 int recon_stride,
115 unsigned int *sse) { 124 unsigned int *sse) {
116 unsigned int var; 125 unsigned int var;
117 int avg; 126 int avg;
118 127
119 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg); 128 variance(src_ptr, source_stride, ref_ptr, recon_stride, 16, 16, &var, &avg);
120 *sse = var; 129 *sse = var;
121 return var; 130 return var;
122 } 131 }
123 132
124 133
125 unsigned int vp9_sub_pixel_variance4x4_c(const unsigned char *src_ptr, 134 unsigned int vp9_sub_pixel_variance4x4_c(const uint8_t *src_ptr,
126 int src_pixels_per_line, 135 int src_pixels_per_line,
127 int xoffset, 136 int xoffset,
128 int yoffset, 137 int yoffset,
129 const unsigned char *dst_ptr, 138 const uint8_t *dst_ptr,
130 int dst_pixels_per_line, 139 int dst_pixels_per_line,
131 unsigned int *sse) { 140 unsigned int *sse) {
132 unsigned char temp2[20 * 16]; 141 uint8_t temp2[20 * 16];
133 const short *HFilter, *VFilter; 142 const int16_t *HFilter, *VFilter;
134 unsigned short FData3[5 * 4]; // Temp data bufffer used in filtering 143 uint16_t FData3[5 * 4]; // Temp data bufffer used in filtering
135 144
136 HFilter = vp9_bilinear_filters[xoffset]; 145 HFilter = vp9_bilinear_filters[xoffset];
137 VFilter = vp9_bilinear_filters[yoffset]; 146 VFilter = vp9_bilinear_filters[yoffset];
138 147
139 // First filter 1d Horizontal 148 // First filter 1d Horizontal
140 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 5, 4, HFilter); 149 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 5, 4, HFilter);
141 150
142 // Now filter Verticaly 151 // Now filter Verticaly
143 var_filter_block2d_bil_second_pass(FData3, temp2, 4, 4, 4, 4, VFilter); 152 var_filter_block2d_bil_second_pass(FData3, temp2, 4, 4, 4, 4, VFilter);
144 153
145 return vp9_variance4x4_c(temp2, 4, dst_ptr, dst_pixels_per_line, sse); 154 return vp9_variance4x4_c(temp2, 4, dst_ptr, dst_pixels_per_line, sse);
146 } 155 }
147 156
148 157
149 unsigned int vp9_sub_pixel_variance8x8_c(const unsigned char *src_ptr, 158 unsigned int vp9_sub_pixel_variance8x8_c(const uint8_t *src_ptr,
150 int src_pixels_per_line, 159 int src_pixels_per_line,
151 int xoffset, 160 int xoffset,
152 int yoffset, 161 int yoffset,
153 const unsigned char *dst_ptr, 162 const uint8_t *dst_ptr,
154 int dst_pixels_per_line, 163 int dst_pixels_per_line,
155 unsigned int *sse) { 164 unsigned int *sse) {
156 unsigned short FData3[9 * 8]; // Temp data bufffer used in filtering 165 uint16_t FData3[9 * 8]; // Temp data bufffer used in filtering
157 unsigned char temp2[20 * 16]; 166 uint8_t temp2[20 * 16];
158 const short *HFilter, *VFilter; 167 const int16_t *HFilter, *VFilter;
159 168
160 HFilter = vp9_bilinear_filters[xoffset]; 169 HFilter = vp9_bilinear_filters[xoffset];
161 VFilter = vp9_bilinear_filters[yoffset]; 170 VFilter = vp9_bilinear_filters[yoffset];
162 171
163 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 8, HFilter); 172 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 8, HFilter);
164 var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 8, 8, VFilter); 173 var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 8, 8, VFilter);
165 174
166 return vp9_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse); 175 return vp9_variance8x8_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
167 } 176 }
168 177
169 unsigned int vp9_sub_pixel_variance16x16_c(const unsigned char *src_ptr, 178 unsigned int vp9_sub_pixel_variance16x16_c(const uint8_t *src_ptr,
170 int src_pixels_per_line, 179 int src_pixels_per_line,
171 int xoffset, 180 int xoffset,
172 int yoffset, 181 int yoffset,
173 const unsigned char *dst_ptr, 182 const uint8_t *dst_ptr,
174 int dst_pixels_per_line, 183 int dst_pixels_per_line,
175 unsigned int *sse) { 184 unsigned int *sse) {
176 unsigned short FData3[17 * 16]; // Temp data bufffer used in filtering 185 uint16_t FData3[17 * 16]; // Temp data bufffer used in filtering
177 unsigned char temp2[20 * 16]; 186 uint8_t temp2[20 * 16];
178 const short *HFilter, *VFilter; 187 const int16_t *HFilter, *VFilter;
179 188
180 HFilter = vp9_bilinear_filters[xoffset]; 189 HFilter = vp9_bilinear_filters[xoffset];
181 VFilter = vp9_bilinear_filters[yoffset]; 190 VFilter = vp9_bilinear_filters[yoffset];
182 191
183 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 17, 16, HFilter); 192 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 17, 16, HFilter);
184 var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 16, 16, VFilter); 193 var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 16, 16, VFilter);
185 194
186 return vp9_variance16x16_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse); 195 return vp9_variance16x16_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
187 } 196 }
188 197
189 #if CONFIG_SUPERBLOCKS 198 unsigned int vp9_sub_pixel_variance64x64_c(const uint8_t *src_ptr,
190 unsigned int vp9_sub_pixel_variance32x32_c(const unsigned char *src_ptr,
191 int src_pixels_per_line, 199 int src_pixels_per_line,
192 int xoffset, 200 int xoffset,
193 int yoffset, 201 int yoffset,
194 const unsigned char *dst_ptr, 202 const uint8_t *dst_ptr,
195 int dst_pixels_per_line, 203 int dst_pixels_per_line,
196 unsigned int *sse) { 204 unsigned int *sse) {
197 unsigned short FData3[33 * 32]; // Temp data bufffer used in filtering 205 uint16_t FData3[65 * 64]; // Temp data bufffer used in filtering
198 unsigned char temp2[36 * 32]; 206 uint8_t temp2[68 * 64];
199 const short *HFilter, *VFilter; 207 const int16_t *HFilter, *VFilter;
208
209 HFilter = vp9_bilinear_filters[xoffset];
210 VFilter = vp9_bilinear_filters[yoffset];
211
212 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line,
213 1, 65, 64, HFilter);
214 var_filter_block2d_bil_second_pass(FData3, temp2, 64, 64, 64, 64, VFilter);
215
216 return vp9_variance64x64_c(temp2, 64, dst_ptr, dst_pixels_per_line, sse);
217 }
218
219 unsigned int vp9_sub_pixel_variance32x32_c(const uint8_t *src_ptr,
220 int src_pixels_per_line,
221 int xoffset,
222 int yoffset,
223 const uint8_t *dst_ptr,
224 int dst_pixels_per_line,
225 unsigned int *sse) {
226 uint16_t FData3[33 * 32]; // Temp data bufffer used in filtering
227 uint8_t temp2[36 * 32];
228 const int16_t *HFilter, *VFilter;
200 229
201 HFilter = vp9_bilinear_filters[xoffset]; 230 HFilter = vp9_bilinear_filters[xoffset];
202 VFilter = vp9_bilinear_filters[yoffset]; 231 VFilter = vp9_bilinear_filters[yoffset];
203 232
204 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 33, 32, HFilter); 233 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 33, 32, HFilter);
205 var_filter_block2d_bil_second_pass(FData3, temp2, 32, 32, 32, 32, VFilter); 234 var_filter_block2d_bil_second_pass(FData3, temp2, 32, 32, 32, 32, VFilter);
206 235
207 return vp9_variance32x32_c(temp2, 32, dst_ptr, dst_pixels_per_line, sse); 236 return vp9_variance32x32_c(temp2, 32, dst_ptr, dst_pixels_per_line, sse);
208 } 237 }
209 #endif
210 238
211 unsigned int vp9_variance_halfpixvar16x16_h_c(const unsigned char *src_ptr, 239 unsigned int vp9_variance_halfpixvar16x16_h_c(const uint8_t *src_ptr,
212 int source_stride, 240 int source_stride,
213 const unsigned char *ref_ptr, 241 const uint8_t *ref_ptr,
214 int recon_stride, 242 int recon_stride,
215 unsigned int *sse) { 243 unsigned int *sse) {
216 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0, 244 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 0,
217 ref_ptr, recon_stride, sse); 245 ref_ptr, recon_stride, sse);
218 } 246 }
219 247
220 #if CONFIG_SUPERBLOCKS 248 unsigned int vp9_variance_halfpixvar32x32_h_c(const uint8_t *src_ptr,
221 unsigned int vp9_variance_halfpixvar32x32_h_c(const unsigned char *src_ptr,
222 int source_stride, 249 int source_stride,
223 const unsigned char *ref_ptr, 250 const uint8_t *ref_ptr,
224 int recon_stride, 251 int recon_stride,
225 unsigned int *sse) { 252 unsigned int *sse) {
226 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 0, 253 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 0,
227 ref_ptr, recon_stride, sse); 254 ref_ptr, recon_stride, sse);
228 } 255 }
229 #endif
230 256
257 unsigned int vp9_variance_halfpixvar64x64_h_c(const uint8_t *src_ptr,
258 int source_stride,
259 const uint8_t *ref_ptr,
260 int recon_stride,
261 unsigned int *sse) {
262 return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 8, 0,
263 ref_ptr, recon_stride, sse);
264 }
231 265
232 unsigned int vp9_variance_halfpixvar16x16_v_c(const unsigned char *src_ptr, 266 unsigned int vp9_variance_halfpixvar16x16_v_c(const uint8_t *src_ptr,
233 int source_stride, 267 int source_stride,
234 const unsigned char *ref_ptr, 268 const uint8_t *ref_ptr,
235 int recon_stride, 269 int recon_stride,
236 unsigned int *sse) { 270 unsigned int *sse) {
237 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 0, 8, 271 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 0, 8,
238 ref_ptr, recon_stride, sse); 272 ref_ptr, recon_stride, sse);
239 } 273 }
240 274
241 #if CONFIG_SUPERBLOCKS 275 unsigned int vp9_variance_halfpixvar32x32_v_c(const uint8_t *src_ptr,
242 unsigned int vp9_variance_halfpixvar32x32_v_c(const unsigned char *src_ptr,
243 int source_stride, 276 int source_stride,
244 const unsigned char *ref_ptr, 277 const uint8_t *ref_ptr,
245 int recon_stride, 278 int recon_stride,
246 unsigned int *sse) { 279 unsigned int *sse) {
247 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 0, 8, 280 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 0, 8,
248 ref_ptr, recon_stride, sse); 281 ref_ptr, recon_stride, sse);
249 } 282 }
250 #endif
251 283
252 unsigned int vp9_variance_halfpixvar16x16_hv_c(const unsigned char *src_ptr, 284 unsigned int vp9_variance_halfpixvar64x64_v_c(const uint8_t *src_ptr,
285 int source_stride,
286 const uint8_t *ref_ptr,
287 int recon_stride,
288 unsigned int *sse) {
289 return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 0, 8,
290 ref_ptr, recon_stride, sse);
291 }
292
293 unsigned int vp9_variance_halfpixvar16x16_hv_c(const uint8_t *src_ptr,
253 int source_stride, 294 int source_stride,
254 const unsigned char *ref_ptr, 295 const uint8_t *ref_ptr,
255 int recon_stride, 296 int recon_stride,
256 unsigned int *sse) { 297 unsigned int *sse) {
257 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8, 298 return vp9_sub_pixel_variance16x16_c(src_ptr, source_stride, 8, 8,
258 ref_ptr, recon_stride, sse); 299 ref_ptr, recon_stride, sse);
259 } 300 }
260 301
261 #if CONFIG_SUPERBLOCKS 302 unsigned int vp9_variance_halfpixvar32x32_hv_c(const uint8_t *src_ptr,
262 unsigned int vp9_variance_halfpixvar32x32_hv_c(const unsigned char *src_ptr,
263 int source_stride, 303 int source_stride,
264 const unsigned char *ref_ptr, 304 const uint8_t *ref_ptr,
265 int recon_stride, 305 int recon_stride,
266 unsigned int *sse) { 306 unsigned int *sse) {
267 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 8, 307 return vp9_sub_pixel_variance32x32_c(src_ptr, source_stride, 8, 8,
268 ref_ptr, recon_stride, sse); 308 ref_ptr, recon_stride, sse);
269 } 309 }
270 #endif
271 310
272 unsigned int vp9_sub_pixel_mse16x16_c(const unsigned char *src_ptr, 311 unsigned int vp9_variance_halfpixvar64x64_hv_c(const uint8_t *src_ptr,
312 int source_stride,
313 const uint8_t *ref_ptr,
314 int recon_stride,
315 unsigned int *sse) {
316 return vp9_sub_pixel_variance64x64_c(src_ptr, source_stride, 8, 8,
317 ref_ptr, recon_stride, sse);
318 }
319
320 unsigned int vp9_sub_pixel_mse16x16_c(const uint8_t *src_ptr,
273 int src_pixels_per_line, 321 int src_pixels_per_line,
274 int xoffset, 322 int xoffset,
275 int yoffset, 323 int yoffset,
276 const unsigned char *dst_ptr, 324 const uint8_t *dst_ptr,
277 int dst_pixels_per_line, 325 int dst_pixels_per_line,
278 unsigned int *sse) { 326 unsigned int *sse) {
279 vp9_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line, 327 vp9_sub_pixel_variance16x16_c(src_ptr, src_pixels_per_line,
280 xoffset, yoffset, dst_ptr, 328 xoffset, yoffset, dst_ptr,
281 dst_pixels_per_line, sse); 329 dst_pixels_per_line, sse);
282 return *sse; 330 return *sse;
283 } 331 }
284 332
285 #if CONFIG_SUPERBLOCKS 333 unsigned int vp9_sub_pixel_mse32x32_c(const uint8_t *src_ptr,
286 unsigned int vp9_sub_pixel_mse32x32_c(const unsigned char *src_ptr,
287 int src_pixels_per_line, 334 int src_pixels_per_line,
288 int xoffset, 335 int xoffset,
289 int yoffset, 336 int yoffset,
290 const unsigned char *dst_ptr, 337 const uint8_t *dst_ptr,
291 int dst_pixels_per_line, 338 int dst_pixels_per_line,
292 unsigned int *sse) { 339 unsigned int *sse) {
293 vp9_sub_pixel_variance32x32_c(src_ptr, src_pixels_per_line, 340 vp9_sub_pixel_variance32x32_c(src_ptr, src_pixels_per_line,
294 xoffset, yoffset, dst_ptr, 341 xoffset, yoffset, dst_ptr,
295 dst_pixels_per_line, sse); 342 dst_pixels_per_line, sse);
296 return *sse; 343 return *sse;
297 } 344 }
298 #endif
299 345
300 unsigned int vp9_sub_pixel_variance16x8_c(const unsigned char *src_ptr, 346 unsigned int vp9_sub_pixel_mse64x64_c(const uint8_t *src_ptr,
347 int src_pixels_per_line,
348 int xoffset,
349 int yoffset,
350 const uint8_t *dst_ptr,
351 int dst_pixels_per_line,
352 unsigned int *sse) {
353 vp9_sub_pixel_variance64x64_c(src_ptr, src_pixels_per_line,
354 xoffset, yoffset, dst_ptr,
355 dst_pixels_per_line, sse);
356 return *sse;
357 }
358
359 unsigned int vp9_sub_pixel_variance16x8_c(const uint8_t *src_ptr,
301 int src_pixels_per_line, 360 int src_pixels_per_line,
302 int xoffset, 361 int xoffset,
303 int yoffset, 362 int yoffset,
304 const unsigned char *dst_ptr, 363 const uint8_t *dst_ptr,
305 int dst_pixels_per_line, 364 int dst_pixels_per_line,
306 unsigned int *sse) { 365 unsigned int *sse) {
307 unsigned short FData3[16 * 9]; // Temp data bufffer used in filtering 366 uint16_t FData3[16 * 9]; // Temp data bufffer used in filtering
308 unsigned char temp2[20 * 16]; 367 uint8_t temp2[20 * 16];
309 const short *HFilter, *VFilter; 368 const int16_t *HFilter, *VFilter;
310 369
311 HFilter = vp9_bilinear_filters[xoffset]; 370 HFilter = vp9_bilinear_filters[xoffset];
312 VFilter = vp9_bilinear_filters[yoffset]; 371 VFilter = vp9_bilinear_filters[yoffset];
313 372
314 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 16, HFilter); 373 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 1, 9, 16, HFilter);
315 var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 8, 16, VFilter); 374 var_filter_block2d_bil_second_pass(FData3, temp2, 16, 16, 8, 16, VFilter);
316 375
317 return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse); 376 return vp9_variance16x8_c(temp2, 16, dst_ptr, dst_pixels_per_line, sse);
318 } 377 }
319 378
320 unsigned int vp9_sub_pixel_variance8x16_c(const unsigned char *src_ptr, 379 unsigned int vp9_sub_pixel_variance8x16_c(const uint8_t *src_ptr,
321 int src_pixels_per_line, 380 int src_pixels_per_line,
322 int xoffset, 381 int xoffset,
323 int yoffset, 382 int yoffset,
324 const unsigned char *dst_ptr, 383 const uint8_t *dst_ptr,
325 int dst_pixels_per_line, 384 int dst_pixels_per_line,
326 unsigned int *sse) { 385 unsigned int *sse) {
327 unsigned short FData3[9 * 16]; // Temp data bufffer used in filtering 386 uint16_t FData3[9 * 16]; // Temp data bufffer used in filtering
328 unsigned char temp2[20 * 16]; 387 uint8_t temp2[20 * 16];
329 const short *HFilter, *VFilter; 388 const int16_t *HFilter, *VFilter;
330 389
331 HFilter = vp9_bilinear_filters[xoffset]; 390 HFilter = vp9_bilinear_filters[xoffset];
332 VFilter = vp9_bilinear_filters[yoffset]; 391 VFilter = vp9_bilinear_filters[yoffset];
333 392
334 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line, 393 var_filter_block2d_bil_first_pass(src_ptr, FData3, src_pixels_per_line,
335 1, 17, 8, HFilter); 394 1, 17, 8, HFilter);
336 var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 16, 8, VFilter); 395 var_filter_block2d_bil_second_pass(FData3, temp2, 8, 8, 16, 8, VFilter);
337 396
338 return vp9_variance8x16_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse); 397 return vp9_variance8x16_c(temp2, 8, dst_ptr, dst_pixels_per_line, sse);
339 } 398 }
340 399
OLDNEW
« no previous file with comments | « source/libvpx/vp9/encoder/vp9_variance.h ('k') | source/libvpx/vp9/encoder/x86/vp9_variance_impl_sse2.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698